From 1b8c8b5a3f33718ac955c686cb2d12e44ab26a88 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Thu, 13 Apr 2023 23:04:51 -0400 Subject: [PATCH] Battle animation improvements --- public/battle-anims/baton-pass.json | 4 +- public/battle-anims/bounce-charging.json | 3232 +++---- public/battle-anims/common-harsh-sun.json | 2 +- public/battle-anims/common-heavy-rain.json | 4 +- public/battle-anims/common-protect.json | 2 +- public/battle-anims/doom-desire-charging.json | 2 +- public/battle-anims/doom-desire.json | 14 +- public/battle-anims/fly-charging.json | 8215 ++++++----------- .../battle-anims/freeze-shock-charging.json | 2 +- public/battle-anims/fusion-bolt.json | 8 +- public/battle-anims/high-jump-kick.json | 8 +- public/battle-anims/razor-wind.json | 18 +- public/battle-anims/roar-of-time.json | 38 +- public/battle-anims/sky-attack-charging.json | 7195 +++++---------- public/battle-anims/thief.json | 2262 +++++ src/battle-anims.ts | 199 +- src/battle-phases.ts | 48 +- src/move.ts | 1153 +-- src/pokemon.ts | 6 +- src/ui/command-ui-handler.ts | 5 + 20 files changed, 9333 insertions(+), 13084 deletions(-) create mode 100644 public/battle-anims/thief.json diff --git a/public/battle-anims/baton-pass.json b/public/battle-anims/baton-pass.json index 76b8b820b..ca65028b2 100644 --- a/public/battle-anims/baton-pass.json +++ b/public/battle-anims/baton-pass.json @@ -7168,7 +7168,7 @@ "3": [ { "frameIndex": 3, - "resourceName": "PRSFX- Baton Pass.wav", + "resourceName": "PRSFX- Baton Pass1.wav", "volume": 100, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -7177,7 +7177,7 @@ "17": [ { "frameIndex": 17, - "resourceName": "PRSFX- Baton Pass1.wav", + "resourceName": "PRSFX- Baton Pass2.wav", "volume": 100, "pitch": 100, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/bounce-charging.json b/public/battle-anims/bounce-charging.json index 39d63dfa9..fdd8d307b 100644 --- a/public/battle-anims/bounce-charging.json +++ b/public/battle-anims/bounce-charging.json @@ -1,2158 +1,1078 @@ -[ - { - "id": 1001, - "graphic": "", - "frames": [ - [ - { - "x": 0, - "y": 8, - "zoomX": 100, - "zoomY": 80, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": 16, - "zoomX": 100, - "zoomY": 60, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": 24, - "zoomX": 100, - "zoomY": 40, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": 6, - "zoomX": 100, - "zoomY": 70, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -8, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -40, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -72, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -104, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -136, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -168, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -216, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -272, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -312, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -352, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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 - } - ] +{ + "id": 1001, + "graphic": "", + "frames": [ + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 8, + "zoomX": 100, + "zoomY": 80, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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 + } ], - "frameTimedEvents": { - "0": [ - { - "frameIndex": 0, - "resourceName": "PRSFX- Bounce1.wav", - "volume": 100, - "pitch": 100, - "eventType": "AnimTimedSoundEvent" - } - ], - "2": [ - { - "frameIndex": 2, - "resourceName": "PRSFX- Bounce2", - "volume": 70, - "pitch": 100, - "eventType": "AnimTimedSoundEvent" - } - ] - }, - "position": 4, - "hue": 0 + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 16, + "zoomX": 100, + "zoomY": 60, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 24, + "zoomX": 100, + "zoomY": 40, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 8, + "zoomX": 100, + "zoomY": 70, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": -11, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": -46, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": -80, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": -114, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": -149, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": -183, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": -217, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": -252, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": -286, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": -320, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ] + ], + "frameTimedEvents": { + "0": [ + { + "frameIndex": 0, + "resourceName": "PRSFX- Bounce1.wav", + "volume": 100, + "pitch": 100, + "eventType": "AnimTimedSoundEvent" + } + ], + "2": [ + { + "frameIndex": 2, + "resourceName": "PRSFX- Bounce2.wav", + "volume": 80, + "pitch": 100, + "eventType": "AnimTimedSoundEvent" + } + ] }, - { - "id": 1001, - "graphic": "", - "frames": [ - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 8, - "zoomX": 100, - "zoomY": 80, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 16, - "zoomX": 100, - "zoomY": 60, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 24, - "zoomX": 100, - "zoomY": 40, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 8, - "zoomX": 100, - "zoomY": 70, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": -11, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": -46, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": -80, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": -114, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": -149, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": -183, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": -217, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": -252, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": -286, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": -320, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - } - ] - ], - "frameTimedEvents": { - "0": [ - { - "frameIndex": 0, - "resourceName": "PRSFX- Bounce1.wav", - "volume": 100, - "pitch": 100, - "eventType": "AnimTimedSoundEvent" - } - ], - "2": [ - { - "frameIndex": 2, - "resourceName": "PRSFX- Bounce2", - "volume": 80, - "pitch": 100, - "eventType": "AnimTimedSoundEvent" - } - ] - }, - "position": 4, - "hue": 0 - } -] \ No newline at end of file + "position": 4, + "hue": 0 +} \ No newline at end of file diff --git a/public/battle-anims/common-harsh-sun.json b/public/battle-anims/common-harsh-sun.json index 766b8e0cc..670b3e4a6 100644 --- a/public/battle-anims/common-harsh-sun.json +++ b/public/battle-anims/common-harsh-sun.json @@ -2382,7 +2382,7 @@ }, { "frameIndex": 15, - "resourceName": "PRSFX- Sunny", + "resourceName": "PRSFX- Sunny.wav", "volume": 100, "pitch": 100, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/common-heavy-rain.json b/public/battle-anims/common-heavy-rain.json index 048ae81e8..d05abe2bd 100644 --- a/public/battle-anims/common-heavy-rain.json +++ b/public/battle-anims/common-heavy-rain.json @@ -13913,7 +13913,7 @@ "0": [ { "frameIndex": 0, - "resourceName": "PRSFX- Rain", + "resourceName": "PRSFX- Rain.wav", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -13922,7 +13922,7 @@ "17": [ { "frameIndex": 17, - "resourceName": "PRSFX- Rain", + "resourceName": "PRSFX- Rain.wav", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/common-protect.json b/public/battle-anims/common-protect.json index 5e86e9ebb..0f7e9ba83 100644 --- a/public/battle-anims/common-protect.json +++ b/public/battle-anims/common-protect.json @@ -1637,7 +1637,7 @@ "0": [ { "frameIndex": 0, - "resourceName": "PRSFX- Protect", + "resourceName": "PRSFX- Protect.wav", "volume": 70, "pitch": 120, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/doom-desire-charging.json b/public/battle-anims/doom-desire-charging.json index 420a149ff..5ce0be2a3 100644 --- a/public/battle-anims/doom-desire-charging.json +++ b/public/battle-anims/doom-desire-charging.json @@ -1057,7 +1057,7 @@ "2": [ { "frameIndex": 2, - "resourceName": "PRSFX- Doom Desire1", + "resourceName": "PRSFX- Doom Desire1.wav", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/doom-desire.json b/public/battle-anims/doom-desire.json index 08fd7065a..8ddbbdaaa 100644 --- a/public/battle-anims/doom-desire.json +++ b/public/battle-anims/doom-desire.json @@ -5699,7 +5699,7 @@ "5": [ { "frameIndex": 5, - "resourceName": "PRSFX- Psychic Terrain2", + "resourceName": "PRSFX- Psychic Terrain2.wav", "volume": 80, "pitch": 140, "eventType": "AnimTimedSoundEvent" @@ -5708,7 +5708,7 @@ "9": [ { "frameIndex": 9, - "resourceName": "PRSFX- Psychic Terrain2", + "resourceName": "PRSFX- Psychic Terrain2.wav", "volume": 80, "pitch": 130, "eventType": "AnimTimedSoundEvent" @@ -5717,7 +5717,7 @@ "15": [ { "frameIndex": 15, - "resourceName": "PRSFX- Psychic Terrain2", + "resourceName": "PRSFX- Psychic Terrain2.wav", "volume": 80, "pitch": 140, "eventType": "AnimTimedSoundEvent" @@ -5726,7 +5726,7 @@ "19": [ { "frameIndex": 19, - "resourceName": "PRSFX- Psychic Terrain2", + "resourceName": "PRSFX- Psychic Terrain2.wav", "volume": 80, "pitch": 130, "eventType": "AnimTimedSoundEvent" @@ -5735,7 +5735,7 @@ "25": [ { "frameIndex": 25, - "resourceName": "PRSFX- Psychic Terrain2", + "resourceName": "PRSFX- Psychic Terrain2.wav", "volume": 80, "pitch": 140, "eventType": "AnimTimedSoundEvent" @@ -5744,7 +5744,7 @@ "29": [ { "frameIndex": 29, - "resourceName": "PRSFX- Psychic Terrain2", + "resourceName": "PRSFX- Psychic Terrain2.wav", "volume": 80, "pitch": 130, "eventType": "AnimTimedSoundEvent" @@ -5753,7 +5753,7 @@ "36": [ { "frameIndex": 36, - "resourceName": "PRSFX- Psychic Terrain2", + "resourceName": "PRSFX- Psychic Terrain2.wav", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/fly-charging.json b/public/battle-anims/fly-charging.json index d47fa6cd7..3b306eea8 100644 --- a/public/battle-anims/fly-charging.json +++ b/public/battle-anims/fly-charging.json @@ -1,5480 +1,2739 @@ -[ - { - "id": 1000, - "graphic": "PRAS- Fly", - "frames": [ - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 191, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 2, - "graphicFrame": 0, - "opacity": 63, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 127, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 2, - "graphicFrame": 0, - "opacity": 127, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 63, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 2, - "graphicFrame": 0, - "opacity": 191, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "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": 2 - }, - { - "x": 40, - "y": -34, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 2, - "opacity": 100, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -40, - "y": -34.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 2, - "opacity": 100, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": -48, - "y": -29.5, - "zoomX": 100, - "zoomY": 100, - "angle": 5, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 2, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 48, - "y": -30, - "zoomX": 100, - "zoomY": 100, - "angle": 331, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 2, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -9, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 48, - "y": -23, - "zoomX": 100, - "zoomY": 100, - "angle": 359, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -48, - "y": -23, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -17.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 44, - "y": -22.5, - "zoomX": 100, - "zoomY": 100, - "angle": 340, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -44, - "y": -22.5, - "zoomX": 100, - "zoomY": 100, - "angle": 19, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -30, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 41, - "y": -22, - "zoomX": 100, - "zoomY": 100, - "angle": 321, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -40, - "y": -22, - "zoomX": 100, - "zoomY": 100, - "angle": 19, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -42.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 37, - "y": -21, - "zoomX": 100, - "zoomY": 100, - "angle": 302, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -36, - "y": -21, - "zoomX": 100, - "zoomY": 100, - "angle": 58, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -54.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 30, - "y": -20.5, - "zoomX": 100, - "zoomY": 100, - "angle": 283, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -32, - "y": -20.5, - "zoomX": 100, - "zoomY": 100, - "angle": 77, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -67, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 26, - "y": -20, - "zoomX": 100, - "zoomY": 100, - "angle": 264, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -24.5, - "y": -20, - "zoomX": 100, - "zoomY": 100, - "angle": 96, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -79.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 22, - "y": -19, - "zoomX": 100, - "zoomY": 100, - "angle": 246, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -20, - "y": -19, - "zoomX": 100, - "zoomY": 100, - "angle": 116, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -92, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 22, - "y": -19, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -20, - "y": -19, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 204, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -108.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 21, - "y": -17, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 191, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -19, - "y": -17, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 148, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -121, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 20, - "y": -14.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 127, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -18, - "y": -14.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 102, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -133, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 19, - "y": -12, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 63, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -16, - "y": -9, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 51, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ], - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": -145, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 2 - }, - { - "x": 18, - "y": -9.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": -15, - "y": -11, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - } - ] +{ + "id": 1000, + "graphic": "PRAS- Fly", + "frames": [ + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 191, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 63, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } ], - "frameTimedEvents": { - "0": [ - { - "frameIndex": 0, - "resourceName": "PRSFX- Fly2.wav", - "volume": 100, - "pitch": 110, - "eventType": "AnimTimedSoundEvent" - } - ] - }, - "position": 1, - "hue": 0 + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 127, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 127, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 63, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 191, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 175, + "y": -60, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 2, + "opacity": 100, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 81, + "y": -60, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 2, + "opacity": 100, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -70.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 175, + "y": -63, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 2, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 81, + "y": -63, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 2, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -76.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 175, + "y": -63, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 81, + "y": -63, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -82.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 172, + "y": -62, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 83.5, + "y": -62, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -89, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 169, + "y": -60.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 86.5, + "y": -60.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -95, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 166.5, + "y": -59, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 89, + "y": -59, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -101, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 163.5, + "y": -58, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 92, + "y": -58, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -107.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 160.5, + "y": -56.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 95, + "y": -56.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -113.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 158, + "y": -55, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 97.5, + "y": -55, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 3, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -119.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 155, + "y": -53.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 4, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 100.5, + "y": -53.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 4, + "opacity": 204, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -126, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 152, + "y": -52.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 4, + "opacity": 191, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 103.5, + "y": -52.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 4, + "opacity": 148, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -132, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 149.5, + "y": -51, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 4, + "opacity": 127, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 106, + "y": -51, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 4, + "opacity": 102, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -138, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 146.5, + "y": -49.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 4, + "opacity": 63, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 109, + "y": -49.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 4, + "opacity": 51, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -144, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "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": 144, + "y": -48, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 4, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + }, + { + "x": 112, + "y": -48, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 2, + "graphicFrame": 4, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ] + ], + "frameTimedEvents": { + "0": [ + { + "frameIndex": 0, + "resourceName": "PRSFX- Fly2.wav", + "volume": 100, + "pitch": 110, + "eventType": "AnimTimedSoundEvent" + } + ] }, - { - "id": 1000, - "graphic": "PRAS- Fly", - "frames": [ - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 191, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -64, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 0, - "opacity": 63, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 127, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -64, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 0, - "opacity": 127, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 63, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -64, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 0, - "opacity": 191, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -64, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 175, - "y": -60, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 2, - "opacity": 100, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 81, - "y": -60, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 2, - "opacity": 100, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -70.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 175, - "y": -63, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 2, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 81, - "y": -63, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 2, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -76.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 175, - "y": -63, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 81, - "y": -63, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -82.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 172, - "y": -62, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 83.5, - "y": -62, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -89, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 169, - "y": -60.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 86.5, - "y": -60.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -95, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 166.5, - "y": -59, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 89, - "y": -59, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -101, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 163.5, - "y": -58, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 92, - "y": -58, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -107.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 160.5, - "y": -56.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 95, - "y": -56.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -113.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 158, - "y": -55, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 97.5, - "y": -55, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 3, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -119.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 155, - "y": -53.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 100.5, - "y": -53.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 204, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -126, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 152, - "y": -52.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 191, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 103.5, - "y": -52.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 148, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -132, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 149.5, - "y": -51, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 127, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 106, - "y": -51, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 102, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -138, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 146.5, - "y": -49.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 63, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 109, - "y": -49.5, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 51, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 128, - "y": -144, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "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": 144, - "y": -48, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - }, - { - "x": 112, - "y": -48, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 2, - "graphicFrame": 4, - "opacity": 0, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 1 - } - ] - ], - "frameTimedEvents": { - "0": [ - { - "frameIndex": 0, - "resourceName": "PRSFX- Fly2.wav", - "volume": 100, - "pitch": 110, - "eventType": "AnimTimedSoundEvent" - } - ] - }, - "position": 1, - "hue": 0 - } -] \ No newline at end of file + "position": 1, + "hue": 0 +} \ No newline at end of file diff --git a/public/battle-anims/freeze-shock-charging.json b/public/battle-anims/freeze-shock-charging.json index f6ba4c086..9dc03426c 100644 --- a/public/battle-anims/freeze-shock-charging.json +++ b/public/battle-anims/freeze-shock-charging.json @@ -3397,7 +3397,7 @@ "4": [ { "frameIndex": 4, - "resourceName": "PRSFX- Freeze Shock1", + "resourceName": "PRSFX- Freeze Shock1.wav", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/fusion-bolt.json b/public/battle-anims/fusion-bolt.json index 39834f8c0..e60b72c2c 100644 --- a/public/battle-anims/fusion-bolt.json +++ b/public/battle-anims/fusion-bolt.json @@ -3005,7 +3005,7 @@ }, { "frameIndex": 0, - "resourceName": "PRSFX- Fusion Bolt1", + "resourceName": "PRSFX- Fusion Bolt1.wav", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -3014,7 +3014,7 @@ "19": [ { "frameIndex": 19, - "resourceName": "PRSFX- Fusion Bolt2", + "resourceName": "PRSFX- Fusion Bolt2.wav", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6030,7 +6030,7 @@ }, { "frameIndex": 0, - "resourceName": "PRSFX- Fusion Bolt1", + "resourceName": "PRSFX- Fusion Bolt1.wav", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6039,7 +6039,7 @@ "19": [ { "frameIndex": 19, - "resourceName": "PRSFX- Fusion Bolt2", + "resourceName": "PRSFX- Fusion Bolt2.wav", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/high-jump-kick.json b/public/battle-anims/high-jump-kick.json index e6f503a7b..7be6ae520 100644 --- a/public/battle-anims/high-jump-kick.json +++ b/public/battle-anims/high-jump-kick.json @@ -1400,7 +1400,7 @@ "0": [ { "frameIndex": 0, - "resourceName": "throw", + "resourceName": "throw.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -1409,7 +1409,7 @@ "9": [ { "frameIndex": 9, - "resourceName": "Blow4", + "resourceName": "Blow4.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -2820,7 +2820,7 @@ "0": [ { "frameIndex": 0, - "resourceName": "throw", + "resourceName": "throw.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -2829,7 +2829,7 @@ "9": [ { "frameIndex": 9, - "resourceName": "Blow3", + "resourceName": "Blow3.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/razor-wind.json b/public/battle-anims/razor-wind.json index 9ed9a368e..31b682003 100644 --- a/public/battle-anims/razor-wind.json +++ b/public/battle-anims/razor-wind.json @@ -7213,7 +7213,7 @@ "0": [ { "frameIndex": 0, - "resourceName": "Wind8", + "resourceName": "Wind8.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -7222,7 +7222,7 @@ "5": [ { "frameIndex": 5, - "resourceName": "Wind7", + "resourceName": "Wind7.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -7231,7 +7231,7 @@ "8": [ { "frameIndex": 8, - "resourceName": "Wind7", + "resourceName": "Wind7.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -7240,7 +7240,7 @@ "11": [ { "frameIndex": 11, - "resourceName": "Wind8", + "resourceName": "Wind8.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -7249,7 +7249,7 @@ "16": [ { "frameIndex": 16, - "resourceName": "Wind7", + "resourceName": "Wind7.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -7258,7 +7258,7 @@ "19": [ { "frameIndex": 19, - "resourceName": "Wind7", + "resourceName": "Wind7.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -7267,7 +7267,7 @@ "22": [ { "frameIndex": 22, - "resourceName": "Wind8", + "resourceName": "Wind8.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -7276,7 +7276,7 @@ "27": [ { "frameIndex": 27, - "resourceName": "Wind7", + "resourceName": "Wind7.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -7285,7 +7285,7 @@ "30": [ { "frameIndex": 30, - "resourceName": "Wind7", + "resourceName": "Wind7.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/roar-of-time.json b/public/battle-anims/roar-of-time.json index be33ba3bd..7e8d333ce 100644 --- a/public/battle-anims/roar-of-time.json +++ b/public/battle-anims/roar-of-time.json @@ -5944,7 +5944,7 @@ "15": [ { "frameIndex": 15, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -5953,7 +5953,7 @@ "17": [ { "frameIndex": 17, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -5962,7 +5962,7 @@ "19": [ { "frameIndex": 19, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -5971,7 +5971,7 @@ "21": [ { "frameIndex": 21, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -5980,7 +5980,7 @@ "23": [ { "frameIndex": 23, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -5989,7 +5989,7 @@ "25": [ { "frameIndex": 25, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -5998,7 +5998,7 @@ "27": [ { "frameIndex": 27, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6007,7 +6007,7 @@ "29": [ { "frameIndex": 29, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6016,7 +6016,7 @@ "31": [ { "frameIndex": 31, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6025,7 +6025,7 @@ "33": [ { "frameIndex": 33, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6034,7 +6034,7 @@ "35": [ { "frameIndex": 35, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6043,7 +6043,7 @@ "37": [ { "frameIndex": 37, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6052,7 +6052,7 @@ "39": [ { "frameIndex": 39, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6061,7 +6061,7 @@ "41": [ { "frameIndex": 41, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6070,7 +6070,7 @@ "43": [ { "frameIndex": 43, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6079,7 +6079,7 @@ "45": [ { "frameIndex": 45, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6088,7 +6088,7 @@ "47": [ { "frameIndex": 47, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6097,7 +6097,7 @@ "49": [ { "frameIndex": 49, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" @@ -6119,7 +6119,7 @@ }, { "frameIndex": 51, - "resourceName": "Blow1", + "resourceName": "Blow1.ogg", "volume": 80, "pitch": 100, "eventType": "AnimTimedSoundEvent" diff --git a/public/battle-anims/sky-attack-charging.json b/public/battle-anims/sky-attack-charging.json index 350591a20..c60e6494c 100644 --- a/public/battle-anims/sky-attack-charging.json +++ b/public/battle-anims/sky-attack-charging.json @@ -1,4800 +1,2399 @@ -[ - { - "id": 1009, - "graphic": "", - "frames": [ - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 8, - 8, - 8, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 17, - 17, - 17, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 25, - 25, - 25, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 34, - 34, - 34, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 42, - 42, - 42, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 51, - 51, - 51, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 59, - 59, - 59, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 68, - 68, - 68, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 76, - 76, - 76, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 85, - 85, - 85, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 93, - 93, - 93, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 102, - 102, - 102, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 110, - 110, - 110, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 119, - 119, - 119, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 127, - 127, - 127, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 136, - 136, - 136, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 144, - 144, - 144, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 153, - 153, - 153, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 161, - 161, - 161, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 170, - 170, - 170, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 178, - 178, - 178, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 187, - 187, - 187, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 195, - 195, - 195, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 204, - 204, - 204, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 215, - 215, - 215, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 225, - 225, - 225, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 235, - 235, - 235, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 245, - 245, - 245, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 255, - 255, - 255, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 204, - 204, - 204, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 153, - 153, - 153, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 102, - 102, - 102, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 51, - 51, - 51, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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 - } - ] +{ + "id": 1009, + "graphic": "", + "frames": [ + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 8, + 8, + 8, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } ], - "frameTimedEvents": { - "0": [ - { - "frameIndex": 0, - "resourceName": "PRSFX- Sky Attack1.wav", - "volume": 100, - "pitch": 75, - "eventType": "AnimTimedSoundEvent" - } - ] - }, - "position": 4, - "hue": 0 + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 17, + 17, + 17, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 26, + 26, + 26, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 35, + 35, + 35, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 43, + 43, + 43, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 52, + 52, + 52, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 61, + 61, + 61, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 70, + 70, + 70, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 79, + 79, + 79, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 87, + 87, + 87, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 96, + 96, + 96, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 105, + 105, + 105, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 114, + 114, + 114, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 123, + 123, + 123, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 131, + 131, + 131, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 140, + 140, + 140, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 149, + 149, + 149, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 158, + 158, + 158, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 167, + 167, + 167, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 175, + 175, + 175, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 184, + 184, + 184, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 193, + 193, + 193, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 202, + 202, + 202, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 211, + 211, + 211, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 219, + 219, + 219, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 228, + 228, + 228, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 237, + 237, + 237, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 246, + 246, + 246, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 255, + 255, + 255, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 204, + 204, + 204, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 153, + 153, + 153, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 102, + 102, + 102, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 51, + 51, + 51, + 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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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 + } + ] + ], + "frameTimedEvents": { + "0": [ + { + "frameIndex": 0, + "resourceName": "PRSFX- Sky Attack1.wav", + "volume": 100, + "pitch": 75, + "eventType": "AnimTimedSoundEvent" + } + ] }, - { - "id": 1009, - "graphic": "", - "frames": [ - [ - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 8, - 8, - 8, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 17, - 17, - 17, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 26, - 26, - 26, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 35, - 35, - 35, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 43, - 43, - 43, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 52, - 52, - 52, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 61, - 61, - 61, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 70, - 70, - 70, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 79, - 79, - 79, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 87, - 87, - 87, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 96, - 96, - 96, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 105, - 105, - 105, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 114, - 114, - 114, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 123, - 123, - 123, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 131, - 131, - 131, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 140, - 140, - 140, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 149, - 149, - 149, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 158, - 158, - 158, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 167, - 167, - 167, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 175, - 175, - 175, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 184, - 184, - 184, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 193, - 193, - 193, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 202, - 202, - 202, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 211, - 211, - 211, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 219, - 219, - 219, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 228, - 228, - 228, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 237, - 237, - 237, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 246, - 246, - 246, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 255, - 255, - 255, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 204, - 204, - 204, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 153, - 153, - 153, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 102, - 102, - 102, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 51, - 51, - 51, - 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": false, - "blendType": 0, - "target": 0, - "graphicFrame": 0, - "opacity": 255, - "color": [ - 0, - 0, - 0, - 0 - ], - "tone": [ - 0, - 0, - 0, - 0 - ], - "flash": [ - 0, - 0, - 0, - 0 - ], - "locked": false, - "priority": 1, - "focus": 2 - }, - { - "x": 0, - "y": 0, - "zoomX": 100, - "zoomY": 100, - "angle": 0, - "mirror": false, - "visible": false, - "blendType": 0, - "target": 1, - "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 - } - ] - ], - "frameTimedEvents": { - "0": [ - { - "frameIndex": 0, - "resourceName": "PRSFX- Sky Attack1.wav", - "volume": 100, - "pitch": 75, - "eventType": "AnimTimedSoundEvent" - } - ] - }, - "position": 4, - "hue": 0 - } -] \ No newline at end of file + "position": 4, + "hue": 0 +} \ No newline at end of file diff --git a/public/battle-anims/thief.json b/public/battle-anims/thief.json new file mode 100644 index 000000000..acb3c102e --- /dev/null +++ b/public/battle-anims/thief.json @@ -0,0 +1,2262 @@ +{ + "id": 168, + "graphic": "PRAS- Strike", + "frames": [ + [ + { + "x": 8, + "y": -16, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 241, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 16, + "y": -24, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 228, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 24, + "y": -16, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 214, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 16, + "y": -8, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 201, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 8, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 187, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 8, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 174, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": -8, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 161, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": -16, + "y": -8, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 147, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": -8, + "y": -16, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 134, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": -24, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 120, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 8, + "y": -16, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 107, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": -8, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 93, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": -8, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 80, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": -16, + "y": -8, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 67, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": -8, + "y": -16, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 53, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": -24, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 40, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 8, + "y": -16, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 26, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 16, + "y": -8, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 13, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 0, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 63, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 128, + "y": -64.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 2, + "target": 2, + "graphicFrame": 0, + "opacity": 80, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 127, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 128, + "y": -64.5, + "zoomX": 150, + "zoomY": 150, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 2, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 191, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 128, + "y": -64.5, + "zoomX": 200, + "zoomY": 200, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 2, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 128, + "y": -64.5, + "zoomX": 200, + "zoomY": 200, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 2, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 128, + "y": -64.5, + "zoomX": 150, + "zoomY": 150, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 2, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "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": false, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 2 + }, + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 0, + "target": 1, + "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": 128, + "y": -64.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": false, + "blendType": 2, + "target": 2, + "graphicFrame": 0, + "opacity": 80, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ] + ], + "frameTimedEvents": { + "0": [ + { + "frameIndex": 0, + "resourceName": "PRSFX- Feint Attack1.wav", + "volume": 100, + "pitch": 80, + "eventType": "AnimTimedSoundEvent" + } + ], + "24": [ + { + "frameIndex": 24, + "resourceName": "PRSFX- Feint Attack2.wav", + "volume": 100, + "pitch": 100, + "eventType": "AnimTimedSoundEvent" + } + ] + }, + "position": 1, + "hue": 0 +} \ No newline at end of file diff --git a/src/battle-anims.ts b/src/battle-anims.ts index 219216637..9142b9e48 100644 --- a/src/battle-anims.ts +++ b/src/battle-anims.ts @@ -18,6 +18,12 @@ enum AnimFocus { SCREEN } +enum AnimBlendType { + NORMAL, + ADD, + SUBTRACT +} + export enum ChargeAnim { FLY_CHARGING = 1000, BOUNCE_CHARGING, @@ -151,7 +157,7 @@ class AnimFrame { public angle: number; public mirror: boolean; public visible: boolean; - public blendType: integer; + public blendType: AnimBlendType; public target: AnimFrameTarget; public graphicFrame: integer; public opacity: integer; @@ -162,7 +168,7 @@ class AnimFrame { public priority: integer; public focus: AnimFocus; - constructor(x: number, y: number, zoomX: number, zoomY: number, angle: number, mirror: boolean, visible: boolean, blendType: integer, pattern: integer, + constructor(x: number, y: number, zoomX: number, zoomY: number, angle: number, mirror: boolean, visible: boolean, blendType: AnimBlendType, pattern: integer, opacity: integer, colorR: integer, colorG: integer, colorB: integer, colorA: integer, toneR: integer, toneG: integer, toneB: integer, toneA: integer, flashR: integer, flashG: integer, flashB: integer, flashA: integer, locked: boolean, priority: integer, focus: AnimFocus) { this.x = x; @@ -220,7 +226,7 @@ class AnimTimedSoundEvent extends AnimTimedEvent { public pitch: number; constructor(frameIndex: integer, resourceName: string, source?: any) { - super(frameIndex, resourceName); + super(frameIndex, resourceName + (resourceName && resourceName.indexOf('.') === -1 ? '.ogg' : '')); if (source) { this.volume = source.volume; @@ -232,7 +238,11 @@ class AnimTimedSoundEvent extends AnimTimedEvent { execute(scene: BattleScene, battleAnim: BattleAnim): integer { const soundConfig = { rate: (this.pitch * 0.01), volume: (this.volume * 0.01) }; if (this.resourceName) { - scene.sound.play(this.resourceName, soundConfig); + try { + scene.sound.play(this.resourceName, soundConfig); + } catch (err) { + console.error(err); + } return Math.ceil((scene.sound.get(this.resourceName).totalDuration * 1000) / 33.33); } else return Math.ceil(battleAnim.user.cry(soundConfig) / 33.33); @@ -289,7 +299,7 @@ class AnimTimedUpdateBgEvent extends AnimTimedBgEvent { execute(scene: BattleScene, moveAnim: MoveAnim): integer { const tweenProps = {}; if (this.bgX !== undefined) - tweenProps['x'] = (this.bgX * 0.5) - 256; + tweenProps['x'] = (this.bgX * 0.5); if (this.bgY !== undefined) tweenProps['y'] = (this.bgY * 0.5) - 284; if (this.opacity !== undefined) @@ -297,7 +307,7 @@ class AnimTimedUpdateBgEvent extends AnimTimedBgEvent { if (Object.keys(tweenProps).length) { scene.tweens.add(Object.assign({ targets: moveAnim.bgSprite, - duration: this.duration * 2, + duration: this.duration * 3, useFrames: true }, tweenProps)) } @@ -315,17 +325,19 @@ class AnimTimedAddBgEvent extends AnimTimedBgEvent { } execute(scene: BattleScene, moveAnim: MoveAnim): integer { - moveAnim.bgSprite = scene.add.tileSprite(this.bgX - 256, this.bgY - 284, 768, 576, this.resourceName); + if (moveAnim.bgSprite) + moveAnim.bgSprite.destroy(); + moveAnim.bgSprite = scene.add.tileSprite(this.bgX, this.bgY - 284, 768, 576, this.resourceName); moveAnim.bgSprite.setOrigin(0, 0); moveAnim.bgSprite.setScale(1.25); moveAnim.bgSprite.setAlpha(0); scene.field.add(moveAnim.bgSprite); - scene.field.moveBelow(moveAnim.bgSprite, scene.getEnemyPokemon()); + scene.field.moveAbove(moveAnim.bgSprite, scene.arenaEnemy); scene.tweens.add({ targets: moveAnim.bgSprite, alpha: 1, - duration: this.duration * 2, + duration: this.duration * 3, useFrames: true }); @@ -444,17 +456,14 @@ export function loadCommonAnimAssets(scene: BattleScene, startLoad?: boolean): P export function loadMoveAnimAssets(scene: BattleScene, moveIds: Moves[], startLoad?: boolean): Promise { return new Promise(resolve => { - const moveAnimations = moveIds.map(m => { - const anims = moveAnims.get(m); - if (anims instanceof Anim) - return anims; - return anims[0]; - }); + const moveAnimations = moveIds.map(m => moveAnims.get(m)).flat(); for (let moveId of moveIds) { const chargeAttr = allMoves[moveId - 1].getAttrs(ChargeAttr) as ChargeAttr[]; if (chargeAttr.length) { const moveChargeAnims = chargeAnims.get(chargeAttr[0].chargeAnim); moveAnimations.push(moveChargeAnims instanceof Anim ? moveChargeAnims : moveChargeAnims[0]); + if (Array.isArray(moveChargeAnims)) + moveAnimations.push(moveChargeAnims[1]); } } loadAnimAssets(scene, moveAnimations, startLoad).then(() => resolve()); @@ -488,6 +497,12 @@ function loadAnimAssets(scene: BattleScene, anims: Anim[], startLoad?: boolean): }); } +interface GraphicFrameData { + x: number, + y: number, + angle: number +} + export abstract class BattleAnim { public user: Pokemon; public target: Pokemon; @@ -506,6 +521,52 @@ export abstract class BattleAnim { abstract isReverseCoords(): boolean; + getGraphicScale(): number { + return 1; + } + + private getGraphicFrameData(scene: BattleScene, frames: AnimFrame[]): Map { + const ret = new Map(); + + const isOppAnim = this.isOppAnim(); + const user = !isOppAnim ? this.user : this.target; + const target = !isOppAnim ? this.target : this.user; + const isReverseCoords = this.isReverseCoords(); + const graphicScale = this.getGraphicScale(); + + const userInitialX = user.x; + const userInitialY = user.y; + const userHalfHeight = user.getSprite().displayHeight / 2; + const targetInitialX = target.x; + const targetInitialY = target.y; + const targetHalfHeight = target.getSprite().displayHeight / 2; + + let g = 0; + + for (let frame of frames) { + if (frame.target !== AnimFrameTarget.GRAPHIC) + continue; + + const xProgress = frame.focus !== AnimFocus.SCREEN ? Math.min(Math.max(frame.x, 0) / 128, 1) : 0; + const initialX = targetInitialX; + const initialY = targetInitialY; + let xOffset = (!isReverseCoords ? (userInitialX - targetInitialX) : (targetInitialX - userInitialX)); + let yOffset = (!isReverseCoords ? (userInitialY - targetInitialY) : (targetInitialY - userInitialY)); + const ySpriteOffset = ((userHalfHeight * (1 - xProgress)) + (targetHalfHeight * xProgress)) * -1; + if (graphicScale > 1) { + xOffset -= ((scene.game.canvas.width / 6) * (graphicScale - 1)) / 2; + yOffset -= ((scene.game.canvas.height / 6) * (graphicScale - 1)) / 2; + } + const x = initialX + xOffset * (!isReverseCoords ? 1 : -1) + (frame.x * graphicScale) * (!isReverseCoords ? 1 : -1); + const y = ((initialY + yOffset * (!isReverseCoords || frame.focus === AnimFocus.USER || frame.focus === AnimFocus.SCREEN ? 1 : -1) + + (frame.y * graphicScale) * (!isReverseCoords || (frame.focus !== AnimFocus.USER_TARGET) ? 1 : -1) + ySpriteOffset)); + const angle = -frame.angle * (!isReverseCoords ? 1 : -1); + ret.set(g++, { x: x, y: y, angle: angle }); + } + + return ret; + } + play(scene: BattleScene, callback?: Function) { const isOppAnim = this.isOppAnim(); const user = !isOppAnim ? this.user : this.target; @@ -515,52 +576,110 @@ export abstract class BattleAnim { const userInitialX = user.x; const userInitialY = user.y; - const userHalfHeight = user.getSprite().displayHeight / 2; const targetInitialX = target.x; const targetInitialY = target.y; - const targetHalfHeight = target.getSprite().displayHeight / 2; - const coordMultiplier = this.isReverseCoords() ? -1 : 1; + const isReverseCoords = this.isReverseCoords(); let r = anim.frames.length; let f = 0; const sprites: Phaser.GameObjects.Sprite[] = []; + const spritePriorities: integer[] = []; scene.tweens.addCounter({ useFrames: true, - duration: 2, + duration: 3, repeat: anim.frames.length, onRepeat: () => { const spriteFrames = anim.frames[f]; + const frameData = this.getGraphicFrameData(scene, anim.frames[f]); let g = 0; for (let frame of spriteFrames) { switch (frame.target) { case AnimFrameTarget.USER: - user.setPosition(userInitialX + frame.x * coordMultiplier, userInitialY + frame.y * coordMultiplier); + user.setPosition(userInitialX + frame.x / (!isReverseCoords ? 2 : -2), userInitialY + frame.y / (!isOppAnim ? 2 : -2)); break; case AnimFrameTarget.TARGET: - target.setPosition(targetInitialX + frame.x * coordMultiplier, targetInitialY + frame.y * coordMultiplier); + target.setPosition(targetInitialX + frame.x / (!isReverseCoords ? 2 : -2), targetInitialY + frame.y / (!isOppAnim ? 2 : -2)); break; case AnimFrameTarget.GRAPHIC: + let isNewSprite = false; + if (g === sprites.length) { const newSprite = scene.add.sprite(0, 0, anim.graphic, 1); - scene.field.add(newSprite); sprites.push(newSprite); + scene.field.add(newSprite); + spritePriorities.push(1); + isNewSprite = true; + } + + const graphicIndex = g++; + const moveSprite = sprites[graphicIndex]; + if (spritePriorities[graphicIndex] !== frame.priority) { + spritePriorities[graphicIndex] = frame.priority; + const setSpritePriority = (priority: integer) => { + switch (priority) { + case 0: + scene.field.moveBelow(moveSprite, scene.getEnemyPokemon()); + break; + case 1: + scene.field.moveTo(moveSprite, scene.field.getAll().length - 1); + break; + case 2: + switch (frame.focus) { + case AnimFocus.USER: + if (this.bgSprite) + scene.field.moveAbove(moveSprite, this.bgSprite); + else + scene.field.moveBelow(moveSprite, this.user); + break; + case AnimFocus.TARGET: + scene.field.moveBelow(moveSprite, this.target); + break; + default: + setSpritePriority(1); + break; + } + break; + case 3: + switch (frame.focus) { + case AnimFocus.USER: + scene.field.moveAbove(moveSprite, this.user); + break; + case AnimFocus.TARGET: + scene.field.moveAbove(moveSprite, this.target); + break; + default: + setSpritePriority(1); + break; + } + break; + default: + setSpritePriority(1); + } + }; + setSpritePriority(frame.priority); } - const moveSprite = sprites[g++]; moveSprite.setFrame(frame.graphicFrame); - const xProgress = Math.min(Math.max(frame.x, 0) / 128, 1); - const yOffset = ((userHalfHeight * (1 - xProgress)) + (targetHalfHeight * xProgress)) * -1; - moveSprite.setPosition((!isOppAnim ? userInitialX : targetInitialX) + frame.x * coordMultiplier, (!isOppAnim ? userInitialY : targetInitialY) + yOffset + frame.y * coordMultiplier); - moveSprite.setAlpha(frame.opacity); - moveSprite.setAngle(-frame.angle * coordMultiplier); + //console.log(AnimFocus[frame.focus]); + const graphicScale = this.getGraphicScale(); + + moveSprite.setPosition(frameData.get(graphicIndex).x, frameData.get(graphicIndex).y); + moveSprite.setAngle(frameData.get(graphicIndex).angle); + const scaleX = graphicScale * (isReverseCoords === frame.mirror ? 1 : -1); + const scaleY = graphicScale; + moveSprite.setScale(scaleX, scaleY); + + moveSprite.setAlpha(frame.opacity / 255); + moveSprite.setBlendMode(frame.blendType === AnimBlendType.NORMAL ? Phaser.BlendModes.NORMAL : frame.blendType === AnimBlendType.ADD ? Phaser.BlendModes.ADD : Phaser.BlendModes.DIFFERENCE); break; } if (frame.target !== AnimFrameTarget.GRAPHIC) { const pokemon = frame.target === AnimFrameTarget.USER ? user : target; - pokemon.setAlpha(frame.opacity); - pokemon.setAngle(-frame.angle * coordMultiplier); + pokemon.setScale(!frame.mirror ? 1 : -1) + pokemon.setAlpha(frame.opacity / 255); + pokemon.setAngle(-frame.angle * (!isReverseCoords ? 1 : -1)); const zoomScaleX = frame.zoomX / 100; const zoomScaleY = frame.zoomY / 100; const zoomSprite = pokemon.getZoomSprite(); @@ -574,6 +693,7 @@ export abstract class BattleAnim { } if (g < sprites.length) { const removedSprites = sprites.splice(g, sprites.length - g); + spritePriorities.splice(g, sprites.length - g); for (let rs of removedSprites) rs.destroy(); } @@ -583,16 +703,22 @@ export abstract class BattleAnim { onComplete: () => { const cleanUpAndComplete = () => { user.setPosition(userInitialX, userInitialY); + user.setScale(1); user.setAlpha(1); user.setAngle(0); target.setPosition(targetInitialX, targetInitialY); + target.setScale(1); target.setAlpha(1); target.setAngle(0); + if (this.bgSprite) + this.bgSprite.destroy(); if (callback) callback(); }; - for (let ms of sprites) - ms.destroy(); + for (let ms of sprites) { + if (ms) + ms.destroy(); + } if (r) { scene.tweens.addCounter({ duration: r, @@ -650,6 +776,15 @@ export class MoveAnim extends BattleAnim { isReverseCoords(): boolean { return this.user instanceof EnemyPokemon && !this.isOppAnim(); } + + getGraphicScale(): number { + switch (this.move) { + case Moves.FISSURE: + return 1.25; + } + + return 1; + } } export class MoveChargeAnim extends MoveAnim { diff --git a/src/battle-phases.ts b/src/battle-phases.ts index fbd486a62..ee9d11acd 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -437,6 +437,10 @@ export class CommandPhase extends BattlePhase { this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, cursor, true)); success = true; break; + case Command.RUN: + //this.scene.unshiftPhase(new MoveAnimTestPhase(this.scene, [ Moves.SING, Moves.FISSURE, Moves.GROWL, Moves.AROMATHERAPY, Moves.PERISH_SONG ])); + //success = true; + break; } if (success) { @@ -545,7 +549,7 @@ abstract class MovePhase extends BattlePhase { console.log(this.pokemon.moveset); if (this.pokemon.summonData.moveQueue.length && !this.pokemon.summonData.moveQueue.shift().ignorePP) this.move.ppUsed++; - this.scene.unshiftPhase(new MessagePhase(this.scene, `${this.pokemon.name} used\n${this.move.getName()}!`, 500)); + this.scene.unshiftPhase(new MessagePhase(this.scene, `${this.pokemon instanceof EnemyPokemon ? 'Foe ' : ''}${this.pokemon.name} used\n${this.move.getName()}!`, 500)); this.scene.unshiftPhase(this.getEffectPhase()); this.end(); }; @@ -632,6 +636,8 @@ abstract class MoveEffectPhase extends PokemonPhase { const overridden = new Utils.BooleanHolder(false); + console.log(this.move.getName()); + applyMoveAttrs(OverrideMoveEffectAttr, this.scene, user, target, this.move.getMove(), overridden).then(() => { if (overridden.value) { @@ -682,7 +688,7 @@ abstract class MoveEffectPhase extends PokemonPhase { end() { const user = this.getUserPokemon(); - if (--user.turnData.hitsLeft && this.getTargetPokemon().hp) + if (--user.turnData.hitsLeft >= 1 && this.getTargetPokemon().hp) this.scene.unshiftPhase(this.getNewHitPhase()); else { if (user.turnData.hitsTotal > 1) @@ -763,6 +769,42 @@ export class EnemyMoveEffectPhase extends MoveEffectPhase { } } +export class MoveAnimTestPhase extends BattlePhase { + private moveQueue: Moves[]; + + constructor(scene: BattleScene, moveQueue?: Moves[]) { + super(scene); + + this.moveQueue = moveQueue || Utils.getEnumValues(Moves); + } + + 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; + } + + initMoveAnim(moveId).then(() => { + loadMoveAnimAssets(this.scene, [ moveId ], true) + .then(() => { + new MoveAnim(moveId, player ? this.scene.getPlayerPokemon() : this.scene.getEnemyPokemon(), + player ? this.scene.getEnemyPokemon() : this.scene.getPlayerPokemon()).play(this.scene, () => { + if (player) + this.playMoveAnim(moveQueue, false); + else + this.playMoveAnim(moveQueue, true); + }); + }); + }); + } +} + export class StatChangePhase extends PokemonPhase { private stats: BattleStat[]; private levels: integer; @@ -940,7 +982,7 @@ export class FaintPhase extends PokemonPhase { } const pokemon = this.getPokemon(); - + pokemon.lapseTags(BattleTagLapseType.FAINT); pokemon.faintCry(() => { diff --git a/src/move.ts b/src/move.ts index 663e79ca1..bbd8eead3 100644 --- a/src/move.ts +++ b/src/move.ts @@ -1,8 +1,8 @@ -import { ChargeAnim, MoveChargeAnim } from "./battle-anims"; -import { MessagePhase, ObtainStatusEffectPhase, StatChangePhase } from "./battle-phases"; +import { ChargeAnim, MoveChargeAnim, initMoveAnim, loadMoveAnimAssets } from "./battle-anims"; +import { EnemyMovePhase, MessagePhase, ObtainStatusEffectPhase, PlayerMovePhase, StatChangePhase } from "./battle-phases"; import BattleScene from "./battle-scene"; import { BattleStat } from "./battle-stat"; -import Pokemon, { EnemyPokemon, MoveResult, PlayerPokemon, TurnMove } from "./pokemon"; +import Pokemon, { EnemyPokemon, MoveResult, PlayerPokemon, PokemonMove, TurnMove } from "./pokemon"; import { BattleTagLapseType, BattleTagType } from "./battle-tag"; import { StatusEffect } from "./status-effect"; import { Type } from "./type"; @@ -12,7 +12,7 @@ export enum MoveCategory { PHYSICAL, SPECIAL, STATUS -}; +} export default class Move { public id: Moves; @@ -48,6 +48,18 @@ export default class Move { } } +export class AttackMove extends Move { + constructor(id: Moves, name: string, type: Type, category: MoveCategory, power: integer, accuracy: integer, pp: integer, tm: integer, effect: string, chance: integer, generation: integer, ...attrs: MoveAttr[]) { + super(id, name, type, category, power, accuracy, pp, tm, effect, chance, generation, ...attrs); + } +} + +export class StatusMove extends Move { + constructor(id: Moves, name: string, type: Type, accuracy: integer, pp: integer, tm: integer, effect: string, chance: integer, generation: integer, ...attrs: MoveAttr[]) { + super(id, name, type, MoveCategory.STATUS, -1, accuracy, pp, tm, effect, chance, generation, ...attrs); + } +} + export enum Moves { POUND = 1, KARATE_CHOP, @@ -812,603 +824,618 @@ export function applyMoveAttrs(attrType: { new(...args: any[]): MoveAttr }, scen }); } +class RandomMoveAttr extends OverrideMoveEffectAttr { + apply(scene: BattleScene, user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { + return new Promise(resolve => { + const moveIds = Utils.getEnumValues(Moves).filter(m => m !== move.id); + const moveId = moveIds[Utils.randInt(moveIds.length)]; + user.summonData.moveQueue.push({ move: moveId, ignorePP: true }); + scene.unshiftPhase(user instanceof PlayerPokemon ? new PlayerMovePhase(scene, user, new PokemonMove(moveId)) : new EnemyMovePhase(scene, user as EnemyPokemon, new PokemonMove(moveId))); + initMoveAnim(moveId).then(() => { + loadMoveAnimAssets(scene, [ moveId ], true) + .then(() => resolve(true)); + }); + }); + } +} + export const allMoves = [ - new Move(Moves.POUND, "Pound", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, "", -1, 1), - new Move(Moves.KARATE_CHOP, "Karate Chop", Type.FIGHTING, MoveCategory.PHYSICAL, 50, 100, 25, -1, "High critical hit ratio.", -1, 1, new HighCritAttr()), - new Move(Moves.DOUBLE_SLAP, "Double Slap", Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 10, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), - new Move(Moves.COMET_PUNCH, "Comet Punch", Type.NORMAL, MoveCategory.PHYSICAL, 18, 85, 15, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), - new Move(Moves.MEGA_PUNCH, "Mega Punch", Type.NORMAL, MoveCategory.PHYSICAL, 80, 85, 20, -1, "", -1, 1), - new Move(Moves.PAY_DAY, "Pay Day", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 20, -1, "Money is earned after the battle.", -1, 1), - new Move(Moves.FIRE_PUNCH, "Fire Punch", Type.FIRE, MoveCategory.PHYSICAL, 75, 100, 15, 67, "May burn opponent.", 10, 1, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.ICE_PUNCH, "Ice Punch", Type.ICE, MoveCategory.PHYSICAL, 75, 100, 15, 69, "May freeze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.FREEZE)), - new Move(Moves.THUNDER_PUNCH, "Thunder Punch", Type.ELECTRIC, MoveCategory.PHYSICAL, 75, 100, 15, 68, "May paralyze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.SCRATCH, "Scratch", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, "", -1, 1), - new Move(Moves.VISE_GRIP, "Vise Grip", Type.NORMAL, MoveCategory.PHYSICAL, 55, 100, 30, -1, "", -1, 1), - new Move(Moves.GUILLOTINE, "Guillotine", Type.NORMAL, MoveCategory.PHYSICAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 1, new OneHitKOAttr()), - new Move(Moves.RAZOR_WIND, "Razor Wind", Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, "Charges on first turn, attacks on second. High critical hit ratio.", -1, 1, + new AttackMove(Moves.POUND, "Pound", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, "", -1, 1), + new AttackMove(Moves.KARATE_CHOP, "Karate Chop", Type.FIGHTING, MoveCategory.PHYSICAL, 50, 100, 25, -1, "High critical hit ratio.", -1, 1, new HighCritAttr()), + new AttackMove(Moves.DOUBLE_SLAP, "Double Slap", Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 10, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), + new AttackMove(Moves.COMET_PUNCH, "Comet Punch", Type.NORMAL, MoveCategory.PHYSICAL, 18, 85, 15, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), + new AttackMove(Moves.MEGA_PUNCH, "Mega Punch", Type.NORMAL, MoveCategory.PHYSICAL, 80, 85, 20, -1, "", -1, 1), + new AttackMove(Moves.PAY_DAY, "Pay Day", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 20, -1, "Money is earned after the battle.", -1, 1), + new AttackMove(Moves.FIRE_PUNCH, "Fire Punch", Type.FIRE, MoveCategory.PHYSICAL, 75, 100, 15, 67, "May burn opponent.", 10, 1, new StatusEffectAttr(StatusEffect.BURN)), + new AttackMove(Moves.ICE_PUNCH, "Ice Punch", Type.ICE, MoveCategory.PHYSICAL, 75, 100, 15, 69, "May freeze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.FREEZE)), + new AttackMove(Moves.THUNDER_PUNCH, "Thunder Punch", Type.ELECTRIC, MoveCategory.PHYSICAL, 75, 100, 15, 68, "May paralyze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.SCRATCH, "Scratch", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, "", -1, 1), + new AttackMove(Moves.VISE_GRIP, "Vise Grip", Type.NORMAL, MoveCategory.PHYSICAL, 55, 100, 30, -1, "", -1, 1), + new AttackMove(Moves.GUILLOTINE, "Guillotine", Type.NORMAL, MoveCategory.PHYSICAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 1, new OneHitKOAttr()), + new AttackMove(Moves.RAZOR_WIND, "Razor Wind", Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, "Charges on first turn, attacks on second. High critical hit ratio.", -1, 1, new ChargeAttr(ChargeAnim.RAZOR_WIND_CHARGING, 'whipped\nup a whirlwind!'), new HighCritAttr()), - new Move(Moves.SWORDS_DANCE, "Swords Dance", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, 88, "Sharply raises user's Attack.", -1, 1, new StatChangeAttr(BattleStat.ATK, 2, true)), - new Move(Moves.CUT, "Cut", Type.NORMAL, MoveCategory.PHYSICAL, 50, 95, 30, -1, "", -1, 1), - new Move(Moves.GUST, "Gust", Type.FLYING, MoveCategory.SPECIAL, 40, 100, 35, -1, "Hits Pokémon using Fly/Bounce/Sky Drop with double power.", -1, 1, + new StatusMove(Moves.SWORDS_DANCE, "Swords Dance", Type.NORMAL, -1, 20, 88, "Sharply raises user's Attack.", -1, 1, new StatChangeAttr(BattleStat.ATK, 2, true)), + new AttackMove(Moves.CUT, "Cut", Type.NORMAL, MoveCategory.PHYSICAL, 50, 95, 30, -1, "", -1, 1), + new AttackMove(Moves.GUST, "Gust", Type.FLYING, MoveCategory.SPECIAL, 40, 100, 35, -1, "Hits Pokémon using Fly/Bounce/Sky Drop with double power.", -1, 1, new HitsTagAttr(BattleTagType.FLYING, true)), - new Move(Moves.WING_ATTACK, "Wing Attack", Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 35, -1, "", -1, 1), - new Move(Moves.WHIRLWIND, "Whirlwind", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "In battles, the opponent switches. In the wild, the Pokémon runs.", -1, 1), // TODO - new Move(Moves.FLY, "Fly", Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, 97, "Flies up on first turn, attacks on second turn.", -1, 1, + new AttackMove(Moves.WING_ATTACK, "Wing Attack", Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 35, -1, "", -1, 1), + new StatusMove(Moves.WHIRLWIND, "Whirlwind", Type.NORMAL, -1, 20, -1, "In battles, the opponent switches. In the wild, the Pokémon runs.", -1, 1), // TODO + new AttackMove(Moves.FLY, "Fly", Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, 97, "Flies up on first turn, attacks on second turn.", -1, 1, new ChargeAttr(ChargeAnim.FLY_CHARGING, 'flew\nup high!', BattleTagType.FLYING)), - new Move(Moves.BIND, "Bind", Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 1), // TODO - new Move(Moves.SLAM, "Slam", Type.NORMAL, MoveCategory.PHYSICAL, 80, 75, 20, -1, "", -1, 1), - new Move(Moves.VINE_WHIP, "Vine Whip", Type.GRASS, MoveCategory.PHYSICAL, 45, 100, 25, -1, "", -1, 1), - new Move(Moves.STOMP, "Stomp", Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 20, -1, "May cause flinching.", 30, 1, new FlinchAttr()), - new Move(Moves.DOUBLE_KICK, "Double Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 30, 100, 30, -1, "Hits twice in one turn.", -1, 1, new MultiHitAttr(MultiHitType._2)), - new Move(Moves.MEGA_KICK, "Mega Kick", Type.NORMAL, MoveCategory.PHYSICAL, 120, 75, 5, -1, "", -1, 1), - new Move(Moves.JUMP_KICK, "Jump Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 100, 95, 10, -1, "If it misses, the user loses half their HP.", -1, 1), - new Move(Moves.ROLLING_KICK, "Rolling Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 60, 85, 15, -1, "May cause flinching.", 30, 1, new FlinchAttr()), - new Move(Moves.SAND_ATTACK, "Sand Attack", Type.GROUND, MoveCategory.STATUS, -1, 100, 15, -1, "Lowers opponent's Accuracy.", -1, 1, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.HEADBUTT, "Headbutt", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 15, -1, "May cause flinching.", 30, 1, new FlinchAttr()), - new Move(Moves.HORN_ATTACK, "Horn Attack", Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, "", -1, 1), - new Move(Moves.FURY_ATTACK, "Fury Attack", Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), - new Move(Moves.HORN_DRILL, "Horn Drill", Type.NORMAL, MoveCategory.PHYSICAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 1, new OneHitKOAttr()), - new Move(Moves.TACKLE, "Tackle", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, "", -1, 1), - new Move(Moves.BODY_SLAM, "Body Slam", Type.NORMAL, MoveCategory.PHYSICAL, 85, 100, 15, 66, "May paralyze opponent.", 30, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.WRAP, "Wrap", Type.NORMAL, MoveCategory.PHYSICAL, 15, 90, 20, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 1), - new Move(Moves.TAKE_DOWN, "Take Down", Type.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, 1, "User receives recoil damage.", -1, 1), - new Move(Moves.THRASH, "Thrash", Type.NORMAL, MoveCategory.PHYSICAL, 120, 100, 10, -1, "User attacks for 2-3 turns but then becomes confused.", -1, 1), - new Move(Moves.DOUBLE_EDGE, "Double-Edge", Type.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, "User receives recoil damage.", -1, 1), - new Move(Moves.TAIL_WHIP, "Tail Whip", Type.NORMAL, MoveCategory.STATUS, -1, 100, 30, -1, "Lowers opponent's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, -1)), - new Move(Moves.POISON_STING, "Poison Sting", Type.POISON, MoveCategory.PHYSICAL, 15, 100, 35, -1, "May poison the opponent.", 30, 1, new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.TWINEEDLE, "Twineedle", Type.BUG, MoveCategory.PHYSICAL, 25, 100, 20, -1, "Hits twice in one turn. May poison opponent.", 20, 1, new MultiHitAttr(MultiHitType._2), new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.PIN_MISSILE, "Pin Missile", Type.BUG, MoveCategory.PHYSICAL, 25, 95, 20, -1, "Hits 2-5 times in one turn.", -1, 1,new MultiHitAttr()), - new Move(Moves.LEER, "Leer", Type.NORMAL, MoveCategory.STATUS, -1, 100, 30, -1, "Lowers opponent's Defense.", 100, 1, new StatChangeAttr(BattleStat.DEF, -1)), - new Move(Moves.BITE, "Bite", Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, -1, "May cause flinching.", 30, 1, new FlinchAttr()), - new Move(Moves.GROWL, "Growl", Type.NORMAL, MoveCategory.STATUS, -1, 100, 40, -1, "Lowers opponent's Attack.", -1, 1, new StatChangeAttr(BattleStat.ATK, -1)), - new Move(Moves.ROAR, "Roar", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "In battles, the opponent switches. In the wild, the Pokémon runs.", -1, 1), - new Move(Moves.SING, "Sing", Type.NORMAL, MoveCategory.STATUS, -1, 55, 15, -1, "Puts opponent to sleep.", -1, 1, new StatusEffectAttr(StatusEffect.SLEEP)), - new Move(Moves.SUPERSONIC, "Supersonic", Type.NORMAL, MoveCategory.STATUS, -1, 55, 20, -1, "Confuses opponent.", -1, 1), - new Move(Moves.SONIC_BOOM, "Sonic Boom", Type.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, "Always inflicts 20 HP.", -1, 1), - new Move(Moves.DISABLE, "Disable", Type.NORMAL, MoveCategory.STATUS, -1, 100, 20, -1, "Opponent can't use its last attack for a few turns.", -1, 1), - new Move(Moves.ACID, "Acid", Type.POISON, MoveCategory.SPECIAL, 40, 100, 30, -1, "May lower opponent's Special Defense.", 10, 1, new StatChangeAttr(BattleStat.SPDEF, -1)), - new Move(Moves.EMBER, "Ember", Type.FIRE, MoveCategory.SPECIAL, 40, 100, 25, -1, "May burn opponent.", 10, 1, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.FLAMETHROWER, "Flamethrower", Type.FIRE, MoveCategory.SPECIAL, 90, 100, 15, 125, "May burn opponent.", 10, 1, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.MIST, "Mist", Type.ICE, MoveCategory.STATUS, -1, -1, 30, -1, "User's stats cannot be changed for a period of time.", -1, 1), - new Move(Moves.WATER_GUN, "Water Gun", Type.WATER, MoveCategory.SPECIAL, 40, 100, 25, -1, "", -1, 1), - new Move(Moves.HYDRO_PUMP, "Hydro Pump", Type.WATER, MoveCategory.SPECIAL, 110, 80, 5, 142, "", -1, 1), - new Move(Moves.SURF, "Surf", Type.WATER, MoveCategory.SPECIAL, 90, 100, 15, 123, "Hits all adjacent Pokémon.", -1, 1), - new Move(Moves.ICE_BEAM, "Ice Beam", Type.ICE, MoveCategory.SPECIAL, 90, 100, 10, 135, "May freeze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.FREEZE)), - new Move(Moves.BLIZZARD, "Blizzard", Type.ICE, MoveCategory.SPECIAL, 110, 70, 5, 143, "May freeze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.FREEZE)), - new Move(Moves.PSYBEAM, "Psybeam", Type.PSYCHIC, MoveCategory.SPECIAL, 65, 100, 20, 16, "May confuse opponent.", 10, 1), - new Move(Moves.BUBBLE_BEAM, "Bubble Beam", Type.WATER, MoveCategory.SPECIAL, 65, 100, 20, -1, "May lower opponent's Speed.", 10, 1, new StatChangeAttr(BattleStat.SPD, -1)), - new Move(Moves.AURORA_BEAM, "Aurora Beam", Type.ICE, MoveCategory.SPECIAL, 65, 100, 20, -1, "May lower opponent's Attack.", 10, 1, new StatChangeAttr(BattleStat.ATK, -1)), - new Move(Moves.HYPER_BEAM, "Hyper Beam", Type.NORMAL, MoveCategory.SPECIAL, 150, 90, 5, 163, "User must recharge next turn.", -1, 1), - new Move(Moves.PECK, "Peck", Type.FLYING, MoveCategory.PHYSICAL, 35, 100, 35, -1, "", -1, 1), - new Move(Moves.DRILL_PECK, "Drill Peck", Type.FLYING, MoveCategory.PHYSICAL, 80, 100, 20, -1, "", -1, 1), - new Move(Moves.SUBMISSION, "Submission", Type.FIGHTING, MoveCategory.PHYSICAL, 80, 80, 20, -1, "User receives recoil damage.", -1, 1), - new Move(Moves.LOW_KICK, "Low Kick", Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, 12, "The heavier the opponent, the stronger the attack.", -1, 1), - new Move(Moves.COUNTER, "Counter", Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, "When hit by a Physical Attack, user strikes back with 2x power.", -1, 1), - new Move(Moves.SEISMIC_TOSS, "Seismic Toss", Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, "Inflicts damage equal to user's level.", -1, 1), - new Move(Moves.STRENGTH, "Strength", Type.NORMAL, MoveCategory.PHYSICAL, 80, 100, 15, -1, "", -1, 1), - new Move(Moves.ABSORB, "Absorb", Type.GRASS, MoveCategory.SPECIAL, 20, 100, 25, -1, "User recovers half the HP inflicted on opponent.", -1, 1), - new Move(Moves.MEGA_DRAIN, "Mega Drain", Type.GRASS, MoveCategory.SPECIAL, 40, 100, 15, -1, "User recovers half the HP inflicted on opponent.", -1, 1), - new Move(Moves.LEECH_SEED, "Leech Seed", Type.GRASS, MoveCategory.STATUS, -1, 90, 10, -1, "Drains HP from opponent each turn.", -1, 1), - new Move(Moves.GROWTH, "Growth", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "Raises user's Attack and Special Attack.", -1, 1, + new AttackMove(Moves.BIND, "Bind", Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 1), // TODO + new AttackMove(Moves.SLAM, "Slam", Type.NORMAL, MoveCategory.PHYSICAL, 80, 75, 20, -1, "", -1, 1), + new AttackMove(Moves.VINE_WHIP, "Vine Whip", Type.GRASS, MoveCategory.PHYSICAL, 45, 100, 25, -1, "", -1, 1), + new AttackMove(Moves.STOMP, "Stomp", Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 20, -1, "May cause flinching.", 30, 1, new FlinchAttr()), + new AttackMove(Moves.DOUBLE_KICK, "Double Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 30, 100, 30, -1, "Hits twice in one turn.", -1, 1, new MultiHitAttr(MultiHitType._2)), + new AttackMove(Moves.MEGA_KICK, "Mega Kick", Type.NORMAL, MoveCategory.PHYSICAL, 120, 75, 5, -1, "", -1, 1), + new AttackMove(Moves.JUMP_KICK, "Jump Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 100, 95, 10, -1, "If it misses, the user loses half their HP.", -1, 1), + new AttackMove(Moves.ROLLING_KICK, "Rolling Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 60, 85, 15, -1, "May cause flinching.", 30, 1, new FlinchAttr()), + new StatusMove(Moves.SAND_ATTACK, "Sand Attack", Type.GROUND, 100, 15, -1, "Lowers opponent's Accuracy.", -1, 1, new StatChangeAttr(BattleStat.ACC, -1)), + new AttackMove(Moves.HEADBUTT, "Headbutt", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 15, -1, "May cause flinching.", 30, 1, new FlinchAttr()), + new AttackMove(Moves.HORN_ATTACK, "Horn Attack", Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, "", -1, 1), + new AttackMove(Moves.FURY_ATTACK, "Fury Attack", Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), + new AttackMove(Moves.HORN_DRILL, "Horn Drill", Type.NORMAL, MoveCategory.PHYSICAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 1, new OneHitKOAttr()), + new AttackMove(Moves.TACKLE, "Tackle", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 35, -1, "", -1, 1), + new AttackMove(Moves.BODY_SLAM, "Body Slam", Type.NORMAL, MoveCategory.PHYSICAL, 85, 100, 15, 66, "May paralyze opponent.", 30, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.WRAP, "Wrap", Type.NORMAL, MoveCategory.PHYSICAL, 15, 90, 20, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 1), + new AttackMove(Moves.TAKE_DOWN, "Take Down", Type.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, 1, "User receives recoil damage.", -1, 1), + new AttackMove(Moves.THRASH, "Thrash", Type.NORMAL, MoveCategory.PHYSICAL, 120, 100, 10, -1, "User attacks for 2-3 turns but then becomes confused.", -1, 1), + new AttackMove(Moves.DOUBLE_EDGE, "Double-Edge", Type.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, "User receives recoil damage.", -1, 1), + new StatusMove(Moves.TAIL_WHIP, "Tail Whip", Type.NORMAL, 100, 30, -1, "Lowers opponent's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, -1)), + new AttackMove(Moves.POISON_STING, "Poison Sting", Type.POISON, MoveCategory.PHYSICAL, 15, 100, 35, -1, "May poison the opponent.", 30, 1, new StatusEffectAttr(StatusEffect.POISON)), + new AttackMove(Moves.TWINEEDLE, "Twineedle", Type.BUG, MoveCategory.PHYSICAL, 25, 100, 20, -1, "Hits twice in one turn. May poison opponent.", 20, 1, new MultiHitAttr(MultiHitType._2), new StatusEffectAttr(StatusEffect.POISON)), + new AttackMove(Moves.PIN_MISSILE, "Pin Missile", Type.BUG, MoveCategory.PHYSICAL, 25, 95, 20, -1, "Hits 2-5 times in one turn.", -1, 1,new MultiHitAttr()), + new StatusMove(Moves.LEER, "Leer", Type.NORMAL, 100, 30, -1, "Lowers opponent's Defense.", 100, 1, new StatChangeAttr(BattleStat.DEF, -1)), + new AttackMove(Moves.BITE, "Bite", Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, -1, "May cause flinching.", 30, 1, new FlinchAttr()), + new StatusMove(Moves.GROWL, "Growl", Type.NORMAL, 100, 40, -1, "Lowers opponent's Attack.", -1, 1, new StatChangeAttr(BattleStat.ATK, -1)), + new StatusMove(Moves.ROAR, "Roar", Type.NORMAL, -1, 20, -1, "In battles, the opponent switches. In the wild, the Pokémon runs.", -1, 1), + new StatusMove(Moves.SING, "Sing", Type.NORMAL, 55, 15, -1, "Puts opponent to sleep.", -1, 1, new StatusEffectAttr(StatusEffect.SLEEP)), + new StatusMove(Moves.SUPERSONIC, "Supersonic", Type.NORMAL, 55, 20, -1, "Confuses opponent.", -1, 1), + new AttackMove(Moves.SONIC_BOOM, "Sonic Boom", Type.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, "Always inflicts 20 HP.", -1, 1), + new StatusMove(Moves.DISABLE, "Disable", Type.NORMAL, 100, 20, -1, "Opponent can't use its last attack for a few turns.", -1, 1), + new AttackMove(Moves.ACID, "Acid", Type.POISON, MoveCategory.SPECIAL, 40, 100, 30, -1, "May lower opponent's Special Defense.", 10, 1, new StatChangeAttr(BattleStat.SPDEF, -1)), + new AttackMove(Moves.EMBER, "Ember", Type.FIRE, MoveCategory.SPECIAL, 40, 100, 25, -1, "May burn opponent.", 10, 1, new StatusEffectAttr(StatusEffect.BURN)), + new AttackMove(Moves.FLAMETHROWER, "Flamethrower", Type.FIRE, MoveCategory.SPECIAL, 90, 100, 15, 125, "May burn opponent.", 10, 1, new StatusEffectAttr(StatusEffect.BURN)), + new StatusMove(Moves.MIST, "Mist", Type.ICE, -1, 30, -1, "User's stats cannot be changed for a period of time.", -1, 1), + new AttackMove(Moves.WATER_GUN, "Water Gun", Type.WATER, MoveCategory.SPECIAL, 40, 100, 25, -1, "", -1, 1), + new AttackMove(Moves.HYDRO_PUMP, "Hydro Pump", Type.WATER, MoveCategory.SPECIAL, 110, 80, 5, 142, "", -1, 1), + new AttackMove(Moves.SURF, "Surf", Type.WATER, MoveCategory.SPECIAL, 90, 100, 15, 123, "Hits all adjacent Pokémon.", -1, 1), + new AttackMove(Moves.ICE_BEAM, "Ice Beam", Type.ICE, MoveCategory.SPECIAL, 90, 100, 10, 135, "May freeze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.FREEZE)), + new AttackMove(Moves.BLIZZARD, "Blizzard", Type.ICE, MoveCategory.SPECIAL, 110, 70, 5, 143, "May freeze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.FREEZE)), + new AttackMove(Moves.PSYBEAM, "Psybeam", Type.PSYCHIC, MoveCategory.SPECIAL, 65, 100, 20, 16, "May confuse opponent.", 10, 1), + new AttackMove(Moves.BUBBLE_BEAM, "Bubble Beam", Type.WATER, MoveCategory.SPECIAL, 65, 100, 20, -1, "May lower opponent's Speed.", 10, 1, new StatChangeAttr(BattleStat.SPD, -1)), + new AttackMove(Moves.AURORA_BEAM, "Aurora Beam", Type.ICE, MoveCategory.SPECIAL, 65, 100, 20, -1, "May lower opponent's Attack.", 10, 1, new StatChangeAttr(BattleStat.ATK, -1)), + new AttackMove(Moves.HYPER_BEAM, "Hyper Beam", Type.NORMAL, MoveCategory.SPECIAL, 150, 90, 5, 163, "User must recharge next turn.", -1, 1), + new AttackMove(Moves.PECK, "Peck", Type.FLYING, MoveCategory.PHYSICAL, 35, 100, 35, -1, "", -1, 1), + new AttackMove(Moves.DRILL_PECK, "Drill Peck", Type.FLYING, MoveCategory.PHYSICAL, 80, 100, 20, -1, "", -1, 1), + new AttackMove(Moves.SUBMISSION, "Submission", Type.FIGHTING, MoveCategory.PHYSICAL, 80, 80, 20, -1, "User receives recoil damage.", -1, 1), + new AttackMove(Moves.LOW_KICK, "Low Kick", Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, 12, "The heavier the opponent, the stronger the attack.", -1, 1), + new AttackMove(Moves.COUNTER, "Counter", Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, "When hit by a Physical Attack, user strikes back with 2x power.", -1, 1), + new AttackMove(Moves.SEISMIC_TOSS, "Seismic Toss", Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 20, -1, "Inflicts damage equal to user's level.", -1, 1), + new AttackMove(Moves.STRENGTH, "Strength", Type.NORMAL, MoveCategory.PHYSICAL, 80, 100, 15, -1, "", -1, 1), + new AttackMove(Moves.ABSORB, "Absorb", Type.GRASS, MoveCategory.SPECIAL, 20, 100, 25, -1, "User recovers half the HP inflicted on opponent.", -1, 1), + new AttackMove(Moves.MEGA_DRAIN, "Mega Drain", Type.GRASS, MoveCategory.SPECIAL, 40, 100, 15, -1, "User recovers half the HP inflicted on opponent.", -1, 1), + new StatusMove(Moves.LEECH_SEED, "Leech Seed", Type.GRASS, 90, 10, -1, "Drains HP from opponent each turn.", -1, 1), + new StatusMove(Moves.GROWTH, "Growth", Type.NORMAL, -1, 20, -1, "Raises user's Attack and Special Attack.", -1, 1, new StatChangeAttr([ BattleStat.ATK, BattleStat.SPATK ], 1, true)), - new Move(Moves.RAZOR_LEAF, "Razor Leaf", Type.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, "High critical hit ratio.", -1, 1), - new Move(Moves.SOLAR_BEAM, "Solar Beam", Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, 168, "Charges on first turn, attacks on second.", -1, 1, + new AttackMove(Moves.RAZOR_LEAF, "Razor Leaf", Type.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, "High critical hit ratio.", -1, 1), + new AttackMove(Moves.SOLAR_BEAM, "Solar Beam", Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, 168, "Charges on first turn, attacks on second.", -1, 1, new ChargeAttr(ChargeAnim.SOLAR_BEAM_CHARGING, 'took\nin sunlight!')), - new Move(Moves.POISON_POWDER, "Poison Powder", Type.POISON, MoveCategory.STATUS, -1, 75, 35, -1, "Poisons opponent.", -1, 1, new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.STUN_SPORE, "Stun Spore", Type.GRASS, MoveCategory.STATUS, -1, 75, 30, -1, "Paralyzes opponent.", -1, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.SLEEP_POWDER, "Sleep Powder", Type.GRASS, MoveCategory.STATUS, -1, 75, 15, -1, "Puts opponent to sleep.", -1, 1, new StatusEffectAttr(StatusEffect.SLEEP)), - new Move(Moves.PETAL_DANCE, "Petal Dance", Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, "User attacks for 2-3 turns but then becomes confused.", -1, 1), - new Move(Moves.STRING_SHOT, "String Shot", Type.BUG, MoveCategory.STATUS, -1, 95, 40, -1, "Sharply lowers opponent's Speed.", -1, 1, new StatChangeAttr(BattleStat.SPD, -2)), - new Move(Moves.DRAGON_RAGE, "Dragon Rage", Type.DRAGON, MoveCategory.SPECIAL, -1, 100, 10, -1, "Always inflicts 40 HP.", -1, 1), - new Move(Moves.FIRE_SPIN, "Fire Spin", Type.FIRE, MoveCategory.SPECIAL, 35, 85, 15, 24, "Traps opponent, damaging them for 4-5 turns.", 100, 1), - new Move(Moves.THUNDER_SHOCK, "Thunder Shock", Type.ELECTRIC, MoveCategory.SPECIAL, 40, 100, 30, -1, "May paralyze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.THUNDERBOLT, "Thunderbolt", Type.ELECTRIC, MoveCategory.SPECIAL, 90, 100, 15, 126, "May paralyze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.THUNDER_WAVE, "Thunder Wave", Type.ELECTRIC, MoveCategory.STATUS, -1, 90, 20, 82, "Paralyzes opponent.", -1, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.THUNDER, "Thunder", Type.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 166, "May paralyze opponent.", 30, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.ROCK_THROW, "Rock Throw", Type.ROCK, MoveCategory.PHYSICAL, 50, 90, 15, -1, "", -1, 1), - new Move(Moves.EARTHQUAKE, "Earthquake", Type.GROUND, MoveCategory.PHYSICAL, 100, 100, 10, 149, "Power is doubled if opponent is underground from using Dig.", -1, 1, + new StatusMove(Moves.POISON_POWDER, "Poison Powder", Type.POISON, 75, 35, -1, "Poisons opponent.", -1, 1, new StatusEffectAttr(StatusEffect.POISON)), + new StatusMove(Moves.STUN_SPORE, "Stun Spore", Type.GRASS, 75, 30, -1, "Paralyzes opponent.", -1, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new StatusMove(Moves.SLEEP_POWDER, "Sleep Powder", Type.GRASS, 75, 15, -1, "Puts opponent to sleep.", -1, 1, new StatusEffectAttr(StatusEffect.SLEEP)), + new AttackMove(Moves.PETAL_DANCE, "Petal Dance", Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, "User attacks for 2-3 turns but then becomes confused.", -1, 1), + new StatusMove(Moves.STRING_SHOT, "String Shot", Type.BUG, 95, 40, -1, "Sharply lowers opponent's Speed.", -1, 1, new StatChangeAttr(BattleStat.SPD, -2)), + new AttackMove(Moves.DRAGON_RAGE, "Dragon Rage", Type.DRAGON, MoveCategory.SPECIAL, -1, 100, 10, -1, "Always inflicts 40 HP.", -1, 1), + new AttackMove(Moves.FIRE_SPIN, "Fire Spin", Type.FIRE, MoveCategory.SPECIAL, 35, 85, 15, 24, "Traps opponent, damaging them for 4-5 turns.", 100, 1), + new AttackMove(Moves.THUNDER_SHOCK, "Thunder Shock", Type.ELECTRIC, MoveCategory.SPECIAL, 40, 100, 30, -1, "May paralyze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.THUNDERBOLT, "Thunderbolt", Type.ELECTRIC, MoveCategory.SPECIAL, 90, 100, 15, 126, "May paralyze opponent.", 10, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new StatusMove(Moves.THUNDER_WAVE, "Thunder Wave", Type.ELECTRIC, 90, 20, 82, "Paralyzes opponent.", -1, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.THUNDER, "Thunder", Type.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 166, "May paralyze opponent.", 30, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.ROCK_THROW, "Rock Throw", Type.ROCK, MoveCategory.PHYSICAL, 50, 90, 15, -1, "", -1, 1), + new AttackMove(Moves.EARTHQUAKE, "Earthquake", Type.GROUND, MoveCategory.PHYSICAL, 100, 100, 10, 149, "Power is doubled if opponent is underground from using Dig.", -1, 1, new HitsTagAttr(BattleTagType.UNDERGROUND, true)), - new Move(Moves.FISSURE, "Fissure", Type.GROUND, MoveCategory.PHYSICAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 1, new OneHitKOAttr()), - new Move(Moves.DIG, "Dig", Type.GROUND, MoveCategory.PHYSICAL, 80, 100, 10, 55, "Digs underground on first turn, attacks on second. Can also escape from caves.", -1, 1, + new AttackMove(Moves.FISSURE, "Fissure", Type.GROUND, MoveCategory.PHYSICAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 1, new OneHitKOAttr()), + new AttackMove(Moves.DIG, "Dig", Type.GROUND, MoveCategory.PHYSICAL, 80, 100, 10, 55, "Digs underground on first turn, attacks on second. Can also escape from caves.", -1, 1, new ChargeAttr(ChargeAnim.DIG_CHARGING, 'dug a hole!', BattleTagType.UNDERGROUND)), - new Move(Moves.TOXIC, "Toxic", Type.POISON, MoveCategory.STATUS, -1, 90, 10, -1, "Badly poisons opponent.", -1, 1, new StatusEffectAttr(StatusEffect.TOXIC)), - new Move(Moves.CONFUSION, "Confusion", Type.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, -1, "May confuse opponent.", 10, 1), // TODO - new Move(Moves.PSYCHIC, "Psychic", Type.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 120, "May lower opponent's Special Defense.", 10, 1, new StatChangeAttr(BattleStat.SPDEF, -1)), - new Move(Moves.HYPNOSIS, "Hypnosis", Type.PSYCHIC, MoveCategory.STATUS, -1, 60, 20, -1, "Puts opponent to sleep.", -1, 1, new StatusEffectAttr(StatusEffect.SLEEP)), - new Move(Moves.MEDITATE, "Meditate", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 40, -1, "Raises user's Attack.", -1, 1, new StatChangeAttr(BattleStat.ATK, 1, true)), - new Move(Moves.AGILITY, "Agility", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 30, 4, "Sharply raises user's Speed.", -1, 1, new StatChangeAttr(BattleStat.SPD, 2, true)), - new Move(Moves.QUICK_ATTACK, "Quick Attack", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 30, -1, "User attacks first.", -1, 1), - new Move(Moves.RAGE, "Rage", Type.NORMAL, MoveCategory.PHYSICAL, 20, 100, 20, -1, "Raises user's Attack when hit.", -1, 1), // TODO - new Move(Moves.TELEPORT, "Teleport", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 20, -1, "Allows user to flee wild battles; also warps player to last PokéCenter.", -1, 1), - new Move(Moves.NIGHT_SHADE, "Night Shade", Type.GHOST, MoveCategory.SPECIAL, -1, 100, 15, 42, "Inflicts damage equal to user's level.", -1, 1), - new Move(Moves.MIMIC, "Mimic", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, -1, "Copies the opponent's last move.", -1, 1), - new Move(Moves.SCREECH, "Screech", Type.NORMAL, MoveCategory.STATUS, -1, 85, 40, -1, "Sharply lowers opponent's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, -2)), - new Move(Moves.DOUBLE_TEAM, "Double Team", Type.NORMAL, MoveCategory.STATUS, -1, -1, 15, -1, "Raises user's Evasiveness.", -1, 1, new StatChangeAttr(BattleStat.EVA, 1, true)), - new Move(Moves.RECOVER, "Recover", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "User recovers half its max HP.", -1, 1), - new Move(Moves.HARDEN, "Harden", Type.NORMAL, MoveCategory.STATUS, -1, -1, 30, -1, "Raises user's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, 1, true)), - new Move(Moves.MINIMIZE, "Minimize", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, -1, "Sharply raises user's Evasiveness.", -1, 1, new StatChangeAttr(BattleStat.EVA, 1, true)), - new Move(Moves.SMOKESCREEN, "Smokescreen", Type.NORMAL, MoveCategory.STATUS, -1, 100, 20, -1, "Lowers opponent's Accuracy.", -1, 1, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.CONFUSE_RAY, "Confuse Ray", Type.GHOST, MoveCategory.STATUS, -1, 100, 10, 17, "Confuses opponent.", -1, 1), // TODO - new Move(Moves.WITHDRAW, "Withdraw", Type.WATER, MoveCategory.STATUS, -1, -1, 40, -1, "Raises user's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, 1, true)), - new Move(Moves.DEFENSE_CURL, "Defense Curl", Type.NORMAL, MoveCategory.STATUS, -1, -1, 40, -1, "Raises user's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, 1, true)), - new Move(Moves.BARRIER, "Barrier", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 20, -1, "Sharply raises user's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, 2, true)), - new Move(Moves.LIGHT_SCREEN, "Light Screen", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 30, 75, "Halves damage from Special attacks for 5 turns.", -1, 1), - new Move(Moves.HAZE, "Haze", Type.ICE, MoveCategory.STATUS, -1, -1, 30, -1, "Resets all stat changes.", -1, 1), - new Move(Moves.REFLECT, "Reflect", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 20, 74, "Halves damage from Physical attacks for 5 turns.", -1, 1), - new Move(Moves.FOCUS_ENERGY, "Focus Energy", Type.NORMAL, MoveCategory.STATUS, -1, -1, 30, -1, "Increases critical hit ratio.", -1, 1), - new Move(Moves.BIDE, "Bide", Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 10, -1, "User takes damage for two turns then strikes back double.", -1, 1), - new Move(Moves.METRONOME, "Metronome", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, 80, "User performs almost any move in the game at random.", -1, 1), - new Move(Moves.MIRROR_MOVE, "Mirror Move", Type.FLYING, MoveCategory.STATUS, -1, -1, 20, -1, "User performs the opponent's last move.", -1, 1), - new Move(Moves.SELF_DESTRUCT, "Self-Destruct", Type.NORMAL, MoveCategory.PHYSICAL, 200, 100, 5, -1, "User faints.", -1, 1), - new Move(Moves.EGG_BOMB, "Egg Bomb", Type.NORMAL, MoveCategory.PHYSICAL, 100, 75, 10, -1, "", -1, 1), - new Move(Moves.LICK, "Lick", Type.GHOST, MoveCategory.PHYSICAL, 30, 100, 30, -1, "May paralyze opponent.", 30, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.SMOG, "Smog", Type.POISON, MoveCategory.SPECIAL, 30, 70, 20, -1, "May poison opponent.", 40, 1, new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.SLUDGE, "Sludge", Type.POISON, MoveCategory.SPECIAL, 65, 100, 20, -1, "May poison opponent.", 30, 1, new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.BONE_CLUB, "Bone Club", Type.GROUND, MoveCategory.PHYSICAL, 65, 85, 20, -1, "May cause flinching.", 10, 1, new FlinchAttr()), - new Move(Moves.FIRE_BLAST, "Fire Blast", Type.FIRE, MoveCategory.SPECIAL, 110, 85, 5, 141, "May burn opponent.", 10, 1, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.WATERFALL, "Waterfall", Type.WATER, MoveCategory.PHYSICAL, 80, 100, 15, 77, "May cause flinching.", 20, 1, new FlinchAttr()), - new Move(Moves.CLAMP, "Clamp", Type.WATER, MoveCategory.PHYSICAL, 35, 85, 15, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 1), - new Move(Moves.SWIFT, "Swift", Type.NORMAL, MoveCategory.SPECIAL, 60, 999, 20, 32, "Ignores Accuracy and Evasiveness.", -1, 1), - new Move(Moves.SKULL_BASH, "Skull Bash", Type.NORMAL, MoveCategory.PHYSICAL, 130, 100, 10, -1, "Raises Defense on first turn, attacks on second.", 100, 1, + new StatusMove(Moves.TOXIC, "Toxic", Type.POISON, 90, 10, -1, "Badly poisons opponent.", -1, 1, new StatusEffectAttr(StatusEffect.TOXIC)), + new AttackMove(Moves.CONFUSION, "Confusion", Type.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, -1, "May confuse opponent.", 10, 1), // TODO + new AttackMove(Moves.PSYCHIC, "Psychic", Type.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 120, "May lower opponent's Special Defense.", 10, 1, new StatChangeAttr(BattleStat.SPDEF, -1)), + new StatusMove(Moves.HYPNOSIS, "Hypnosis", Type.PSYCHIC, 60, 20, -1, "Puts opponent to sleep.", -1, 1, new StatusEffectAttr(StatusEffect.SLEEP)), + new StatusMove(Moves.MEDITATE, "Meditate", Type.PSYCHIC, -1, 40, -1, "Raises user's Attack.", -1, 1, new StatChangeAttr(BattleStat.ATK, 1, true)), + new StatusMove(Moves.AGILITY, "Agility", Type.PSYCHIC, -1, 30, 4, "Sharply raises user's Speed.", -1, 1, new StatChangeAttr(BattleStat.SPD, 2, true)), + new AttackMove(Moves.QUICK_ATTACK, "Quick Attack", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 30, -1, "User attacks first.", -1, 1), + new AttackMove(Moves.RAGE, "Rage", Type.NORMAL, MoveCategory.PHYSICAL, 20, 100, 20, -1, "Raises user's Attack when hit.", -1, 1), // TODO + new StatusMove(Moves.TELEPORT, "Teleport", Type.PSYCHIC, -1, 20, -1, "Allows user to flee wild battles; also warps player to last PokéCenter.", -1, 1), + new AttackMove(Moves.NIGHT_SHADE, "Night Shade", Type.GHOST, MoveCategory.SPECIAL, -1, 100, 15, 42, "Inflicts damage equal to user's level.", -1, 1), + new StatusMove(Moves.MIMIC, "Mimic", Type.NORMAL, -1, 10, -1, "Copies the opponent's last move.", -1, 1), + new StatusMove(Moves.SCREECH, "Screech", Type.NORMAL, 85, 40, -1, "Sharply lowers opponent's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, -2)), + new StatusMove(Moves.DOUBLE_TEAM, "Double Team", Type.NORMAL, -1, 15, -1, "Raises user's Evasiveness.", -1, 1, new StatChangeAttr(BattleStat.EVA, 1, true)), + new StatusMove(Moves.RECOVER, "Recover", Type.NORMAL, -1, 5, -1, "User recovers half its max HP.", -1, 1), + new StatusMove(Moves.HARDEN, "Harden", Type.NORMAL, -1, 30, -1, "Raises user's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, 1, true)), + new StatusMove(Moves.MINIMIZE, "Minimize", Type.NORMAL, -1, 10, -1, "Sharply raises user's Evasiveness.", -1, 1, new StatChangeAttr(BattleStat.EVA, 1, true)), + new StatusMove(Moves.SMOKESCREEN, "Smokescreen", Type.NORMAL, 100, 20, -1, "Lowers opponent's Accuracy.", -1, 1, new StatChangeAttr(BattleStat.ACC, -1)), + new StatusMove(Moves.CONFUSE_RAY, "Confuse Ray", Type.GHOST, 100, 10, 17, "Confuses opponent.", -1, 1), // TODO + new StatusMove(Moves.WITHDRAW, "Withdraw", Type.WATER, -1, 40, -1, "Raises user's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, 1, true)), + new StatusMove(Moves.DEFENSE_CURL, "Defense Curl", Type.NORMAL, -1, 40, -1, "Raises user's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, 1, true)), + new StatusMove(Moves.BARRIER, "Barrier", Type.PSYCHIC, -1, 20, -1, "Sharply raises user's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, 2, true)), + new StatusMove(Moves.LIGHT_SCREEN, "Light Screen", Type.PSYCHIC, -1, 30, 75, "Halves damage from Special attacks for 5 turns.", -1, 1), + new StatusMove(Moves.HAZE, "Haze", Type.ICE, -1, 30, -1, "Resets all stat changes.", -1, 1), + new StatusMove(Moves.REFLECT, "Reflect", Type.PSYCHIC, -1, 20, 74, "Halves damage from Physical attacks for 5 turns.", -1, 1), + new StatusMove(Moves.FOCUS_ENERGY, "Focus Energy", Type.NORMAL, -1, 30, -1, "Increases critical hit ratio.", -1, 1), + new AttackMove(Moves.BIDE, "Bide", Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 10, -1, "User takes damage for two turns then strikes back double.", -1, 1), + new StatusMove(Moves.METRONOME, "Metronome", Type.NORMAL, -1, 10, 80, "User performs almost any move in the game at random.", -1, 1, new RandomMoveAttr()), + new StatusMove(Moves.MIRROR_MOVE, "Mirror Move", Type.FLYING, -1, 20, -1, "User performs the opponent's last move.", -1, 1), + new AttackMove(Moves.SELF_DESTRUCT, "Self-Destruct", Type.NORMAL, MoveCategory.PHYSICAL, 200, 100, 5, -1, "User faints.", -1, 1), + new AttackMove(Moves.EGG_BOMB, "Egg Bomb", Type.NORMAL, MoveCategory.PHYSICAL, 100, 75, 10, -1, "", -1, 1), + new AttackMove(Moves.LICK, "Lick", Type.GHOST, MoveCategory.PHYSICAL, 30, 100, 30, -1, "May paralyze opponent.", 30, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.SMOG, "Smog", Type.POISON, MoveCategory.SPECIAL, 30, 70, 20, -1, "May poison opponent.", 40, 1, new StatusEffectAttr(StatusEffect.POISON)), + new AttackMove(Moves.SLUDGE, "Sludge", Type.POISON, MoveCategory.SPECIAL, 65, 100, 20, -1, "May poison opponent.", 30, 1, new StatusEffectAttr(StatusEffect.POISON)), + new AttackMove(Moves.BONE_CLUB, "Bone Club", Type.GROUND, MoveCategory.PHYSICAL, 65, 85, 20, -1, "May cause flinching.", 10, 1, new FlinchAttr()), + new AttackMove(Moves.FIRE_BLAST, "Fire Blast", Type.FIRE, MoveCategory.SPECIAL, 110, 85, 5, 141, "May burn opponent.", 10, 1, new StatusEffectAttr(StatusEffect.BURN)), + new AttackMove(Moves.WATERFALL, "Waterfall", Type.WATER, MoveCategory.PHYSICAL, 80, 100, 15, 77, "May cause flinching.", 20, 1, new FlinchAttr()), + new AttackMove(Moves.CLAMP, "Clamp", Type.WATER, MoveCategory.PHYSICAL, 35, 85, 15, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 1), + new AttackMove(Moves.SWIFT, "Swift", Type.NORMAL, MoveCategory.SPECIAL, 60, 999, 20, 32, "Ignores Accuracy and Evasiveness.", -1, 1), + new AttackMove(Moves.SKULL_BASH, "Skull Bash", Type.NORMAL, MoveCategory.PHYSICAL, 130, 100, 10, -1, "Raises Defense on first turn, attacks on second.", 100, 1, new ChargeAttr(ChargeAnim.SKULL_BASH_CHARGING, 'lowered\nits head!', null, true), new StatChangeAttr(BattleStat.DEF, 1, true)), - new Move(Moves.SPIKE_CANNON, "Spike Cannon", Type.NORMAL, MoveCategory.PHYSICAL, 20, 100, 15, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), - new Move(Moves.CONSTRICT, "Constrict", Type.NORMAL, MoveCategory.PHYSICAL, 10, 100, 35, -1, "May lower opponent's Speed by one stage.", 10, 1, new StatChangeAttr(BattleStat.SPD, -1)), - new Move(Moves.AMNESIA, "Amnesia", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 20, 128, "Sharply raises user's Special Defense.", -1, 1, new StatChangeAttr(BattleStat.SPDEF, 2, true)), - new Move(Moves.KINESIS, "Kinesis", Type.PSYCHIC, MoveCategory.STATUS, -1, 80, 15, -1, "Lowers opponent's Accuracy.", -1, 1, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.SOFT_BOILED, "Soft-Boiled", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "User recovers half its max HP.", -1, 1), - new Move(Moves.HIGH_JUMP_KICK, "High Jump Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 130, 90, 10, -1, "If it misses, the user loses half their HP.", -1, 1, + new AttackMove(Moves.SPIKE_CANNON, "Spike Cannon", Type.NORMAL, MoveCategory.PHYSICAL, 20, 100, 15, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), + new AttackMove(Moves.CONSTRICT, "Constrict", Type.NORMAL, MoveCategory.PHYSICAL, 10, 100, 35, -1, "May lower opponent's Speed by one stage.", 10, 1, new StatChangeAttr(BattleStat.SPD, -1)), + new StatusMove(Moves.AMNESIA, "Amnesia", Type.PSYCHIC, -1, 20, 128, "Sharply raises user's Special Defense.", -1, 1, new StatChangeAttr(BattleStat.SPDEF, 2, true)), + new StatusMove(Moves.KINESIS, "Kinesis", Type.PSYCHIC, 80, 15, -1, "Lowers opponent's Accuracy.", -1, 1, new StatChangeAttr(BattleStat.ACC, -1)), + new StatusMove(Moves.SOFT_BOILED, "Soft-Boiled", Type.NORMAL, -1, 5, -1, "User recovers half its max HP.", -1, 1), + new AttackMove(Moves.HIGH_JUMP_KICK, "High Jump Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 130, 90, 10, -1, "If it misses, the user loses half their HP.", -1, 1, new MissEffectAttr((scene: BattleScene, user: Pokemon, target: Pokemon, move: Move) => user.hp = Math.floor(user.hp / 2))), - new Move(Moves.GLARE, "Glare", Type.NORMAL, MoveCategory.STATUS, -1, 100, 30, -1, "Paralyzes opponent.", -1, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.DREAM_EATER, "Dream Eater", Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, "User recovers half the HP inflicted on a sleeping opponent.", -1, 1), - new Move(Moves.POISON_GAS, "Poison Gas", Type.POISON, MoveCategory.STATUS, -1, 90, 40, -1, "Poisons opponent.", -1, 1, new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.BARRAGE, "Barrage", Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), - new Move(Moves.LEECH_LIFE, "Leech Life", Type.BUG, MoveCategory.PHYSICAL, 80, 100, 10, 95, "User recovers half the HP inflicted on opponent.", -1, 1), - new Move(Moves.LOVELY_KISS, "Lovely Kiss", Type.NORMAL, MoveCategory.STATUS, -1, 75, 10, -1, "Puts opponent to sleep.", -1, 1, new StatusEffectAttr(StatusEffect.SLEEP)), - new Move(Moves.SKY_ATTACK, "Sky Attack", Type.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, -1, "Charges on first turn, attacks on second. May cause flinching. High critical hit ratio.", 30, 1, + new StatusMove(Moves.GLARE, "Glare", Type.NORMAL, 100, 30, -1, "Paralyzes opponent.", -1, 1, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.DREAM_EATER, "Dream Eater", Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, "User recovers half the HP inflicted on a sleeping opponent.", -1, 1), + new StatusMove(Moves.POISON_GAS, "Poison Gas", Type.POISON, 90, 40, -1, "Poisons opponent.", -1, 1, new StatusEffectAttr(StatusEffect.POISON)), + new AttackMove(Moves.BARRAGE, "Barrage", Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), + new AttackMove(Moves.LEECH_LIFE, "Leech Life", Type.BUG, MoveCategory.PHYSICAL, 80, 100, 10, 95, "User recovers half the HP inflicted on opponent.", -1, 1), + new StatusMove(Moves.LOVELY_KISS, "Lovely Kiss", Type.NORMAL, 75, 10, -1, "Puts opponent to sleep.", -1, 1, new StatusEffectAttr(StatusEffect.SLEEP)), + new AttackMove(Moves.SKY_ATTACK, "Sky Attack", Type.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, -1, "Charges on first turn, attacks on second. May cause flinching. High critical hit ratio.", 30, 1, new ChargeAttr(ChargeAnim.SKY_ATTACK_CHARGING, 'is glowing!'), new HighCritAttr(), new FlinchAttr()), - new Move(Moves.TRANSFORM, "Transform", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, -1, "User takes on the form and attacks of the opponent.", -1, 1), - new Move(Moves.BUBBLE, "Bubble", Type.WATER, MoveCategory.SPECIAL, 40, 100, 30, -1, "May lower opponent's Speed.", 10, 1, new StatChangeAttr(BattleStat.SPD, -1)), - new Move(Moves.DIZZY_PUNCH, "Dizzy Punch", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, -1, "May confuse opponent.", 20, 1), // TODO - new Move(Moves.SPORE, "Spore", Type.GRASS, MoveCategory.STATUS, -1, 100, 15, -1, "Puts opponent to sleep.", -1, 1, new StatusEffectAttr(StatusEffect.SLEEP)), - new Move(Moves.FLASH, "Flash", Type.NORMAL, MoveCategory.STATUS, -1, 100, 20, -1, "Lowers opponent's Accuracy.", -1, 1, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.PSYWAVE, "Psywave", Type.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 15, -1, "Inflicts damage 50-150% of user's level.", -1, 1), - new Move(Moves.SPLASH, "Splash", Type.NORMAL, MoveCategory.STATUS, -1, -1, 40, -1, "Doesn't do ANYTHING.", -1, 1), - new Move(Moves.ACID_ARMOR, "Acid Armor", Type.POISON, MoveCategory.STATUS, -1, -1, 20, -1, "Sharply raises user's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, 2, true)), - new Move(Moves.CRABHAMMER, "Crabhammer", Type.WATER, MoveCategory.PHYSICAL, 100, 90, 10, -1, "High critical hit ratio.", -1, 1, new HighCritAttr()), - new Move(Moves.EXPLOSION, "Explosion", Type.NORMAL, MoveCategory.PHYSICAL, 250, 100, 5, -1, "User faints.", -1, 1), - new Move(Moves.FURY_SWIPES, "Fury Swipes", Type.NORMAL, MoveCategory.PHYSICAL, 18, 80, 15, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), - new Move(Moves.BONEMERANG, "Bonemerang", Type.GROUND, MoveCategory.PHYSICAL, 50, 90, 10, -1, "Hits twice in one turn.", -1, 1, new MultiHitAttr(MultiHitType._2)), - new Move(Moves.REST, "Rest", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 5, 85, "User sleeps for 2 turns, but user is fully healed.", -1, 1), - new Move(Moves.ROCK_SLIDE, "Rock Slide", Type.ROCK, MoveCategory.PHYSICAL, 75, 90, 10, 86, "May cause flinching.", 30, 1, new FlinchAttr()), - new Move(Moves.HYPER_FANG, "Hyper Fang", Type.NORMAL, MoveCategory.PHYSICAL, 80, 90, 15, -1, "May cause flinching.", 10, 1, new FlinchAttr()), - new Move(Moves.SHARPEN, "Sharpen", Type.NORMAL, MoveCategory.STATUS, -1, -1, 30, -1, "Raises user's Attack.", -1, 1, new StatChangeAttr(BattleStat.ATK, 1, true)), - new Move(Moves.CONVERSION, "Conversion", Type.NORMAL, MoveCategory.STATUS, -1, -1, 30, -1, "Changes user's type to that of its first move.", -1, 1), - new Move(Moves.TRI_ATTACK, "Tri Attack", Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, "May paralyze, burn or freeze opponent.", 20, 1, new StatusEffectAttr(StatusEffect.PARALYSIS), new StatusEffectAttr(StatusEffect.BURN), new StatusEffectAttr(StatusEffect.FREEZE)), // TODO: Check if independent - new Move(Moves.SUPER_FANG, "Super Fang", Type.NORMAL, MoveCategory.PHYSICAL, -1, 90, 10, -1, "Always takes off half of the opponent's HP.", -1, 1), - new Move(Moves.SLASH, "Slash", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, "High critical hit ratio.", -1, 1, new HighCritAttr()), - new Move(Moves.SUBSTITUTE, "Substitute", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, 103, "Uses HP to creates a decoy that takes hits.", -1, 1), - new Move(Moves.STRUGGLE, "Struggle", Type.NORMAL, MoveCategory.PHYSICAL, 50, -1, -1, -1, "Only usable when all PP are gone. Hurts the user.", -1, 1), - new Move(Moves.SKETCH, "Sketch", Type.NORMAL, MoveCategory.STATUS, -1, -1, 1, -1, "Permanently copies the opponent's last move.", -1, 2), - new Move(Moves.TRIPLE_KICK, "Triple Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 10, 90, 10, -1, "Hits thrice in one turn at increasing power.", -1, 2, + new StatusMove(Moves.TRANSFORM, "Transform", Type.NORMAL, -1, 10, -1, "User takes on the form and attacks of the opponent.", -1, 1), + new AttackMove(Moves.BUBBLE, "Bubble", Type.WATER, MoveCategory.SPECIAL, 40, 100, 30, -1, "May lower opponent's Speed.", 10, 1, new StatChangeAttr(BattleStat.SPD, -1)), + new AttackMove(Moves.DIZZY_PUNCH, "Dizzy Punch", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, -1, "May confuse opponent.", 20, 1), // TODO + new StatusMove(Moves.SPORE, "Spore", Type.GRASS, 100, 15, -1, "Puts opponent to sleep.", -1, 1, new StatusEffectAttr(StatusEffect.SLEEP)), + new StatusMove(Moves.FLASH, "Flash", Type.NORMAL, 100, 20, -1, "Lowers opponent's Accuracy.", -1, 1, new StatChangeAttr(BattleStat.ACC, -1)), + new AttackMove(Moves.PSYWAVE, "Psywave", Type.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 15, -1, "Inflicts damage 50-150% of user's level.", -1, 1), + new StatusMove(Moves.SPLASH, "Splash", Type.NORMAL, -1, 40, -1, "Doesn't do ANYTHING.", -1, 1), + new StatusMove(Moves.ACID_ARMOR, "Acid Armor", Type.POISON, -1, 20, -1, "Sharply raises user's Defense.", -1, 1, new StatChangeAttr(BattleStat.DEF, 2, true)), + new AttackMove(Moves.CRABHAMMER, "Crabhammer", Type.WATER, MoveCategory.PHYSICAL, 100, 90, 10, -1, "High critical hit ratio.", -1, 1, new HighCritAttr()), + new AttackMove(Moves.EXPLOSION, "Explosion", Type.NORMAL, MoveCategory.PHYSICAL, 250, 100, 5, -1, "User faints.", -1, 1), + new AttackMove(Moves.FURY_SWIPES, "Fury Swipes", Type.NORMAL, MoveCategory.PHYSICAL, 18, 80, 15, -1, "Hits 2-5 times in one turn.", -1, 1, new MultiHitAttr()), + new AttackMove(Moves.BONEMERANG, "Bonemerang", Type.GROUND, MoveCategory.PHYSICAL, 50, 90, 10, -1, "Hits twice in one turn.", -1, 1, new MultiHitAttr(MultiHitType._2)), + new StatusMove(Moves.REST, "Rest", Type.PSYCHIC, -1, 5, 85, "User sleeps for 2 turns, but user is fully healed.", -1, 1), + new AttackMove(Moves.ROCK_SLIDE, "Rock Slide", Type.ROCK, MoveCategory.PHYSICAL, 75, 90, 10, 86, "May cause flinching.", 30, 1, new FlinchAttr()), + new AttackMove(Moves.HYPER_FANG, "Hyper Fang", Type.NORMAL, MoveCategory.PHYSICAL, 80, 90, 15, -1, "May cause flinching.", 10, 1, new FlinchAttr()), + new StatusMove(Moves.SHARPEN, "Sharpen", Type.NORMAL, -1, 30, -1, "Raises user's Attack.", -1, 1, new StatChangeAttr(BattleStat.ATK, 1, true)), + new StatusMove(Moves.CONVERSION, "Conversion", Type.NORMAL, -1, 30, -1, "Changes user's type to that of its first move.", -1, 1), + new AttackMove(Moves.TRI_ATTACK, "Tri Attack", Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, -1, "May paralyze, burn or freeze opponent.", 20, 1, new StatusEffectAttr(StatusEffect.PARALYSIS), new StatusEffectAttr(StatusEffect.BURN), new StatusEffectAttr(StatusEffect.FREEZE)), // TODO: Check if independent + new AttackMove(Moves.SUPER_FANG, "Super Fang", Type.NORMAL, MoveCategory.PHYSICAL, -1, 90, 10, -1, "Always takes off half of the opponent's HP.", -1, 1), + new AttackMove(Moves.SLASH, "Slash", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, "High critical hit ratio.", -1, 1, new HighCritAttr()), + new StatusMove(Moves.SUBSTITUTE, "Substitute", Type.NORMAL, -1, 10, 103, "Uses HP to creates a decoy that takes hits.", -1, 1), + new AttackMove(Moves.STRUGGLE, "Struggle", Type.NORMAL, MoveCategory.PHYSICAL, 50, -1, -1, -1, "Only usable when all PP are gone. Hurts the user.", -1, 1), + new StatusMove(Moves.SKETCH, "Sketch", Type.NORMAL, -1, 1, -1, "Permanently copies the opponent's last move.", -1, 2), + new AttackMove(Moves.TRIPLE_KICK, "Triple Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 10, 90, 10, -1, "Hits thrice in one turn at increasing power.", -1, 2, new MultiHitAttr(MultiHitType._3_INCR), new MissEffectAttr((scene: BattleScene, user: Pokemon, target: Pokemon, move: Move) => user.turnData.hitsLeft = 0)), - new Move(Moves.THIEF, "Thief", Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, 18, "Also steals opponent's held item.", -1, 2), - new Move(Moves.SPIDER_WEB, "Spider Web", Type.BUG, MoveCategory.STATUS, -1, -1, 10, -1, "Opponent cannot escape/switch.", -1, 2), - new Move(Moves.MIND_READER, "Mind Reader", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "User's next attack is guaranteed to hit.", -1, 2), - new Move(Moves.NIGHTMARE, "Nightmare", Type.GHOST, MoveCategory.STATUS, -1, 100, 15, -1, "The sleeping opponent loses 25% of its max HP each turn.", -1, 2), - new Move(Moves.FLAME_WHEEL, "Flame Wheel", Type.FIRE, MoveCategory.PHYSICAL, 60, 100, 25, -1, "May burn opponent.", 10, 2, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.SNORE, "Snore", Type.NORMAL, MoveCategory.SPECIAL, 50, 100, 15, -1, "Can only be used if asleep. May cause flinching.", 30, 2, new FlinchAttr()), // TODO - new Move(Moves.CURSE, "Curse", Type.GHOST, MoveCategory.STATUS, -1, -1, 10, -1, "Ghosts lose 50% of max HP and curse the opponent; Non-Ghosts raise Attack, Defense and lower Speed.", -1, 2), - new Move(Moves.FLAIL, "Flail", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, "The lower the user's HP, the higher the power.", -1, 2), - new Move(Moves.CONVERSION_2, "Conversion 2", Type.NORMAL, MoveCategory.STATUS, -1, -1, 30, -1, "User changes type to become resistant to opponent's last move.", -1, 2), - new Move(Moves.AEROBLAST, "Aeroblast", Type.FLYING, MoveCategory.SPECIAL, 100, 95, 5, -1, "High critical hit ratio.", -1, 2, new HighCritAttr()), - new Move(Moves.COTTON_SPORE, "Cotton Spore", Type.GRASS, MoveCategory.STATUS, -1, 100, 40, -1, "Sharply lowers opponent's Speed.", -1, 2, new StatChangeAttr(BattleStat.SPD, -2)), - new Move(Moves.REVERSAL, "Reversal", Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 15, 134, "The lower the user's HP, the higher the power.", -1, 2), - new Move(Moves.SPITE, "Spite", Type.GHOST, MoveCategory.STATUS, -1, 100, 10, -1, "The opponent's last move loses 2-5 PP.", -1, 2), - new Move(Moves.POWDER_SNOW, "Powder Snow", Type.ICE, MoveCategory.SPECIAL, 40, 100, 25, -1, "May freeze opponent.", 10, 2, new StatusEffectAttr(StatusEffect.FREEZE)), - new Move(Moves.PROTECT, "Protect", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, 7, "Protects the user, but may fail if used consecutively.", -1, 2), - new Move(Moves.MACH_PUNCH, "Mach Punch", Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 30, -1, "User attacks first.", -1, 2), - new Move(Moves.SCARY_FACE, "Scary Face", Type.NORMAL, MoveCategory.STATUS, -1, 100, 10, 6, "Sharply lowers opponent's Speed.", -1, 2, new StatChangeAttr(BattleStat.SPD, -2)), - new Move(Moves.FEINT_ATTACK, "Feint Attack", Type.DARK, MoveCategory.PHYSICAL, 60, 999, 20, -1, "Ignores Accuracy and Evasiveness.", -1, 2), - new Move(Moves.SWEET_KISS, "Sweet Kiss", Type.FAIRY, MoveCategory.STATUS, -1, 75, 10, -1, "Confuses opponent.", -1, 2), // TODO - new Move(Moves.BELLY_DRUM, "Belly Drum", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, -1, "User loses 50% of its max HP, but Attack raises to maximum.", -1, 2), - new Move(Moves.SLUDGE_BOMB, "Sludge Bomb", Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 148, "May poison opponent.", 30, 2, new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.MUD_SLAP, "Mud-Slap", Type.GROUND, MoveCategory.SPECIAL, 20, 100, 10, 5, "Lowers opponent's Accuracy.", 100, 2, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.OCTAZOOKA, "Octazooka", Type.WATER, MoveCategory.SPECIAL, 65, 85, 10, -1, "May lower opponent's Accuracy.", 50, 2, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.SPIKES, "Spikes", Type.GROUND, MoveCategory.STATUS, -1, -1, 20, 90, "Hurts opponents when they switch into battle.", -1, 2), - new Move(Moves.ZAP_CANNON, "Zap Cannon", Type.ELECTRIC, MoveCategory.SPECIAL, 120, 50, 5, -1, "Paralyzes opponent.", 100, 2, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.FORESIGHT, "Foresight", Type.NORMAL, MoveCategory.STATUS, -1, -1, 40, -1, "Resets opponent's Evasiveness, and allows Normal- and Fighting-type attacks to hit Ghosts.", -1, 2), // TODO - new Move(Moves.DESTINY_BOND, "Destiny Bond", Type.GHOST, MoveCategory.STATUS, -1, -1, 5, -1, "If the user faints, the opponent also faints.", -1, 2), - new Move(Moves.PERISH_SONG, "Perish Song", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "Any Pokémon in play when this attack is used faints in 3 turns.", -1, 2), - new Move(Moves.ICY_WIND, "Icy Wind", Type.ICE, MoveCategory.SPECIAL, 55, 95, 15, 34, "Lowers opponent's Speed.", 100, 2, new StatChangeAttr(BattleStat.SPD, -1)), - new Move(Moves.DETECT, "Detect", Type.FIGHTING, MoveCategory.STATUS, -1, -1, 5, -1, "Protects the user, but may fail if used consecutively.", -1, 2), - new Move(Moves.BONE_RUSH, "Bone Rush", Type.GROUND, MoveCategory.PHYSICAL, 25, 90, 10, -1, "Hits 2-5 times in one turn.", -1, 2, new MultiHitAttr()), - new Move(Moves.LOCK_ON, "Lock-On", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "User's next attack is guaranteed to hit.", -1, 2), - new Move(Moves.OUTRAGE, "Outrage", Type.DRAGON, MoveCategory.PHYSICAL, 120, 100, 10, 156, "User attacks for 2-3 turns but then becomes confused.", -1, 2), - new Move(Moves.SANDSTORM, "Sandstorm", Type.ROCK, MoveCategory.STATUS, -1, -1, 10, 51, "Creates a sandstorm for 5 turns.", -1, 2), - new Move(Moves.GIGA_DRAIN, "Giga Drain", Type.GRASS, MoveCategory.SPECIAL, 75, 100, 10, 111, "User recovers half the HP inflicted on opponent.", -1, 2), - new Move(Moves.ENDURE, "Endure", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, 47, "Always left with at least 1 HP, but may fail if used consecutively.", -1, 2), - new Move(Moves.CHARM, "Charm", Type.FAIRY, MoveCategory.STATUS, -1, 100, 20, 2, "Sharply lowers opponent's Attack.", -1, 2, new StatChangeAttr(BattleStat.ATK, -2)), - new Move(Moves.ROLLOUT, "Rollout", Type.ROCK, MoveCategory.PHYSICAL, 30, 90, 20, -1, "Doubles in power each turn for 5 turns.", -1, 2), - new Move(Moves.FALSE_SWIPE, "False Swipe", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, 57, "Always leaves opponent with at least 1 HP.", -1, 2), - new Move(Moves.SWAGGER, "Swagger", Type.NORMAL, MoveCategory.STATUS, -1, 85, 15, -1, "Confuses opponent, but sharply raises its Attack.", -1, 2, new StatChangeAttr(BattleStat.ATK, 2)), // todo - new Move(Moves.MILK_DRINK, "Milk Drink", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "User recovers half its max HP.", -1, 2), - new Move(Moves.SPARK, "Spark", Type.ELECTRIC, MoveCategory.PHYSICAL, 65, 100, 20, -1, "May paralyze opponent.", 30, 2, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.FURY_CUTTER, "Fury Cutter", Type.BUG, MoveCategory.PHYSICAL, 40, 95, 20, -1, "Power increases each turn.", -1, 2), - new Move(Moves.STEEL_WING, "Steel Wing", Type.STEEL, MoveCategory.PHYSICAL, 70, 90, 25, -1, "May raise user's Defense.", 10, 2, new StatChangeAttr(BattleStat.DEF, 1, true)), - new Move(Moves.MEAN_LOOK, "Mean Look", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "Opponent cannot flee or switch.", -1, 2), - new Move(Moves.ATTRACT, "Attract", Type.NORMAL, MoveCategory.STATUS, -1, 100, 15, -1, "If opponent is the opposite gender, it's less likely to attack.", -1, 2), - new Move(Moves.SLEEP_TALK, "Sleep Talk", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, 70, "User performs one of its own moves while sleeping.", -1, 2), - new Move(Moves.HEAL_BELL, "Heal Bell", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "Heals the user's party's status conditions.", -1, 2), - new Move(Moves.RETURN, "Return", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, "Power increases with higher Friendship.", -1, 2), - new Move(Moves.PRESENT, "Present", Type.NORMAL, MoveCategory.PHYSICAL, -1, 90, 15, -1, "Either deals damage or heals.", -1, 2), - new Move(Moves.FRUSTRATION, "Frustration", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, "Power decreases with higher Friendship.", -1, 2), - new Move(Moves.SAFEGUARD, "Safeguard", Type.NORMAL, MoveCategory.STATUS, -1, -1, 25, -1, "The user's party is protected from status conditions.", -1, 2), - new Move(Moves.PAIN_SPLIT, "Pain Split", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "The user's and opponent's HP becomes the average of both.", -1, 2), - new Move(Moves.SACRED_FIRE, "Sacred Fire", Type.FIRE, MoveCategory.PHYSICAL, 100, 95, 5, -1, "May burn opponent.", 50, 2, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.MAGNITUDE, "Magnitude", Type.GROUND, MoveCategory.PHYSICAL, -1, 100, 30, -1, "Hits with random power.", -1, 2), - new Move(Moves.DYNAMIC_PUNCH, "Dynamic Punch", Type.FIGHTING, MoveCategory.PHYSICAL, 100, 50, 5, -1, "Confuses opponent.", 100, 2), // TODO - new Move(Moves.MEGAHORN, "Megahorn", Type.BUG, MoveCategory.PHYSICAL, 120, 85, 10, -1, "", -1, 2), - new Move(Moves.DRAGON_BREATH, "Dragon Breath", Type.DRAGON, MoveCategory.SPECIAL, 60, 100, 20, -1, "May paralyze opponent.", 30, 2, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.BATON_PASS, "Baton Pass", Type.NORMAL, MoveCategory.STATUS, -1, -1, 40, 132, "User switches out and gives stat changes to the incoming Pokémon.", -1, 2), - new Move(Moves.ENCORE, "Encore", Type.NORMAL, MoveCategory.STATUS, -1, 100, 5, 122, "Forces opponent to keep using its last move for 3 turns.", -1, 2), - new Move(Moves.PURSUIT, "Pursuit", Type.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, "Double power if the opponent is switching out.", -1, 2), - new Move(Moves.RAPID_SPIN, "Rapid Spin", Type.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, -1, "Raises user's Speed and removes entry hazards and trap move effects.", 100, 2, new StatChangeAttr(BattleStat.SPD, 1, true)), // TODO - new Move(Moves.SWEET_SCENT, "Sweet Scent", Type.NORMAL, MoveCategory.STATUS, -1, 100, 20, -1, "Lowers opponent's Evasiveness.", -1, 2, new StatChangeAttr(BattleStat.EVA, -1)), - new Move(Moves.IRON_TAIL, "Iron Tail", Type.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, -1, "May lower opponent's Defense.", 30, 2, new StatChangeAttr(BattleStat.DEF, -1)), - new Move(Moves.METAL_CLAW, "Metal Claw", Type.STEEL, MoveCategory.PHYSICAL, 50, 95, 35, 31, "May raise user's Attack.", 10, 2, new StatChangeAttr(BattleStat.ATK, 1, true)), - new Move(Moves.VITAL_THROW, "Vital Throw", Type.FIGHTING, MoveCategory.PHYSICAL, 70, 999, 10, -1, "User attacks last, but ignores Accuracy and Evasiveness.", -1, 2), - new Move(Moves.MORNING_SUN, "Morning Sun", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "User recovers HP. Amount varies with the weather.", -1, 2), - new Move(Moves.SYNTHESIS, "Synthesis", Type.GRASS, MoveCategory.STATUS, -1, -1, 5, -1, "User recovers HP. Amount varies with the weather.", -1, 2), - new Move(Moves.MOONLIGHT, "Moonlight", Type.FAIRY, MoveCategory.STATUS, -1, -1, 5, -1, "User recovers HP. Amount varies with the weather.", -1, 2), - new Move(Moves.HIDDEN_POWER, "Hidden Power", Type.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, "Type and power depends on user's IVs.", -1, 2), - new Move(Moves.CROSS_CHOP, "Cross Chop", Type.FIGHTING, MoveCategory.PHYSICAL, 100, 80, 5, -1, "High critical hit ratio.", -1, 2, new HighCritAttr()), - new Move(Moves.TWISTER, "Twister", Type.DRAGON, MoveCategory.SPECIAL, 40, 100, 20, -1, "May cause flinching. Hits Pokémon using Fly/Bounce with double power.", 20, 2, + new AttackMove(Moves.THIEF, "Thief", Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, 18, "Also steals opponent's held item.", -1, 2), + new StatusMove(Moves.SPIDER_WEB, "Spider Web", Type.BUG, -1, 10, -1, "Opponent cannot escape/switch.", -1, 2), + new StatusMove(Moves.MIND_READER, "Mind Reader", Type.NORMAL, -1, 5, -1, "User's next attack is guaranteed to hit.", -1, 2), + new StatusMove(Moves.NIGHTMARE, "Nightmare", Type.GHOST, 100, 15, -1, "The sleeping opponent loses 25% of its max HP each turn.", -1, 2), + new AttackMove(Moves.FLAME_WHEEL, "Flame Wheel", Type.FIRE, MoveCategory.PHYSICAL, 60, 100, 25, -1, "May burn opponent.", 10, 2, new StatusEffectAttr(StatusEffect.BURN)), + new AttackMove(Moves.SNORE, "Snore", Type.NORMAL, MoveCategory.SPECIAL, 50, 100, 15, -1, "Can only be used if asleep. May cause flinching.", 30, 2, new FlinchAttr()), // TODO + new StatusMove(Moves.CURSE, "Curse", Type.GHOST, -1, 10, -1, "Ghosts lose 50% of max HP and curse the opponent; Non-Ghosts raise Attack, Defense and lower Speed.", -1, 2), + new AttackMove(Moves.FLAIL, "Flail", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, "The lower the user's HP, the higher the power.", -1, 2), + new StatusMove(Moves.CONVERSION_2, "Conversion 2", Type.NORMAL, -1, 30, -1, "User changes type to become resistant to opponent's last move.", -1, 2), + new AttackMove(Moves.AEROBLAST, "Aeroblast", Type.FLYING, MoveCategory.SPECIAL, 100, 95, 5, -1, "High critical hit ratio.", -1, 2, new HighCritAttr()), + new StatusMove(Moves.COTTON_SPORE, "Cotton Spore", Type.GRASS, 100, 40, -1, "Sharply lowers opponent's Speed.", -1, 2, new StatChangeAttr(BattleStat.SPD, -2)), + new AttackMove(Moves.REVERSAL, "Reversal", Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 15, 134, "The lower the user's HP, the higher the power.", -1, 2), + new StatusMove(Moves.SPITE, "Spite", Type.GHOST, 100, 10, -1, "The opponent's last move loses 2-5 PP.", -1, 2), + new AttackMove(Moves.POWDER_SNOW, "Powder Snow", Type.ICE, MoveCategory.SPECIAL, 40, 100, 25, -1, "May freeze opponent.", 10, 2, new StatusEffectAttr(StatusEffect.FREEZE)), + new StatusMove(Moves.PROTECT, "Protect", Type.NORMAL, -1, 10, 7, "Protects the user, but may fail if used consecutively.", -1, 2), + new AttackMove(Moves.MACH_PUNCH, "Mach Punch", Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 30, -1, "User attacks first.", -1, 2), + new StatusMove(Moves.SCARY_FACE, "Scary Face", Type.NORMAL, 100, 10, 6, "Sharply lowers opponent's Speed.", -1, 2, new StatChangeAttr(BattleStat.SPD, -2)), + new AttackMove(Moves.FEINT_ATTACK, "Feint Attack", Type.DARK, MoveCategory.PHYSICAL, 60, 999, 20, -1, "Ignores Accuracy and Evasiveness.", -1, 2), + new StatusMove(Moves.SWEET_KISS, "Sweet Kiss", Type.FAIRY, 75, 10, -1, "Confuses opponent.", -1, 2), // TODO + new StatusMove(Moves.BELLY_DRUM, "Belly Drum", Type.NORMAL, -1, 10, -1, "User loses 50% of its max HP, but Attack raises to maximum.", -1, 2), + new AttackMove(Moves.SLUDGE_BOMB, "Sludge Bomb", Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 148, "May poison opponent.", 30, 2, new StatusEffectAttr(StatusEffect.POISON)), + new AttackMove(Moves.MUD_SLAP, "Mud-Slap", Type.GROUND, MoveCategory.SPECIAL, 20, 100, 10, 5, "Lowers opponent's Accuracy.", 100, 2, new StatChangeAttr(BattleStat.ACC, -1)), + new AttackMove(Moves.OCTAZOOKA, "Octazooka", Type.WATER, MoveCategory.SPECIAL, 65, 85, 10, -1, "May lower opponent's Accuracy.", 50, 2, new StatChangeAttr(BattleStat.ACC, -1)), + new StatusMove(Moves.SPIKES, "Spikes", Type.GROUND, -1, 20, 90, "Hurts opponents when they switch into battle.", -1, 2), + new AttackMove(Moves.ZAP_CANNON, "Zap Cannon", Type.ELECTRIC, MoveCategory.SPECIAL, 120, 50, 5, -1, "Paralyzes opponent.", 100, 2, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new StatusMove(Moves.FORESIGHT, "Foresight", Type.NORMAL, -1, 40, -1, "Resets opponent's Evasiveness, and allows Normal- and Fighting-type attacks to hit Ghosts.", -1, 2), // TODO + new StatusMove(Moves.DESTINY_BOND, "Destiny Bond", Type.GHOST, -1, 5, -1, "If the user faints, the opponent also faints.", -1, 2), + new StatusMove(Moves.PERISH_SONG, "Perish Song", Type.NORMAL, -1, 5, -1, "Any Pokémon in play when this attack is used faints in 3 turns.", -1, 2), + new AttackMove(Moves.ICY_WIND, "Icy Wind", Type.ICE, MoveCategory.SPECIAL, 55, 95, 15, 34, "Lowers opponent's Speed.", 100, 2, new StatChangeAttr(BattleStat.SPD, -1)), + new StatusMove(Moves.DETECT, "Detect", Type.FIGHTING, -1, 5, -1, "Protects the user, but may fail if used consecutively.", -1, 2), + new AttackMove(Moves.BONE_RUSH, "Bone Rush", Type.GROUND, MoveCategory.PHYSICAL, 25, 90, 10, -1, "Hits 2-5 times in one turn.", -1, 2, new MultiHitAttr()), + new StatusMove(Moves.LOCK_ON, "Lock-On", Type.NORMAL, -1, 5, -1, "User's next attack is guaranteed to hit.", -1, 2), + new AttackMove(Moves.OUTRAGE, "Outrage", Type.DRAGON, MoveCategory.PHYSICAL, 120, 100, 10, 156, "User attacks for 2-3 turns but then becomes confused.", -1, 2), + new StatusMove(Moves.SANDSTORM, "Sandstorm", Type.ROCK, -1, 10, 51, "Creates a sandstorm for 5 turns.", -1, 2), + new AttackMove(Moves.GIGA_DRAIN, "Giga Drain", Type.GRASS, MoveCategory.SPECIAL, 75, 100, 10, 111, "User recovers half the HP inflicted on opponent.", -1, 2), + new StatusMove(Moves.ENDURE, "Endure", Type.NORMAL, -1, 10, 47, "Always left with at least 1 HP, but may fail if used consecutively.", -1, 2), + new StatusMove(Moves.CHARM, "Charm", Type.FAIRY, 100, 20, 2, "Sharply lowers opponent's Attack.", -1, 2, new StatChangeAttr(BattleStat.ATK, -2)), + new AttackMove(Moves.ROLLOUT, "Rollout", Type.ROCK, MoveCategory.PHYSICAL, 30, 90, 20, -1, "Doubles in power each turn for 5 turns.", -1, 2), + new AttackMove(Moves.FALSE_SWIPE, "False Swipe", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, 57, "Always leaves opponent with at least 1 HP.", -1, 2), + new StatusMove(Moves.SWAGGER, "Swagger", Type.NORMAL, 85, 15, -1, "Confuses opponent, but sharply raises its Attack.", -1, 2, new StatChangeAttr(BattleStat.ATK, 2)), // todo + new StatusMove(Moves.MILK_DRINK, "Milk Drink", Type.NORMAL, -1, 5, -1, "User recovers half its max HP.", -1, 2), + new AttackMove(Moves.SPARK, "Spark", Type.ELECTRIC, MoveCategory.PHYSICAL, 65, 100, 20, -1, "May paralyze opponent.", 30, 2, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.FURY_CUTTER, "Fury Cutter", Type.BUG, MoveCategory.PHYSICAL, 40, 95, 20, -1, "Power increases each turn.", -1, 2), + new AttackMove(Moves.STEEL_WING, "Steel Wing", Type.STEEL, MoveCategory.PHYSICAL, 70, 90, 25, -1, "May raise user's Defense.", 10, 2, new StatChangeAttr(BattleStat.DEF, 1, true)), + new StatusMove(Moves.MEAN_LOOK, "Mean Look", Type.NORMAL, -1, 5, -1, "Opponent cannot flee or switch.", -1, 2), + new StatusMove(Moves.ATTRACT, "Attract", Type.NORMAL, 100, 15, -1, "If opponent is the opposite gender, it's less likely to attack.", -1, 2), + new StatusMove(Moves.SLEEP_TALK, "Sleep Talk", Type.NORMAL, -1, 10, 70, "User performs one of its own moves while sleeping.", -1, 2), + new StatusMove(Moves.HEAL_BELL, "Heal Bell", Type.NORMAL, -1, 5, -1, "Heals the user's party's status conditions.", -1, 2), + new AttackMove(Moves.RETURN, "Return", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, "Power increases with higher Friendship.", -1, 2), + new AttackMove(Moves.PRESENT, "Present", Type.NORMAL, MoveCategory.PHYSICAL, -1, 90, 15, -1, "Either deals damage or heals.", -1, 2), + new AttackMove(Moves.FRUSTRATION, "Frustration", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, "Power decreases with higher Friendship.", -1, 2), + new StatusMove(Moves.SAFEGUARD, "Safeguard", Type.NORMAL, -1, 25, -1, "The user's party is protected from status conditions.", -1, 2), + new StatusMove(Moves.PAIN_SPLIT, "Pain Split", Type.NORMAL, -1, 20, -1, "The user's and opponent's HP becomes the average of both.", -1, 2), + new AttackMove(Moves.SACRED_FIRE, "Sacred Fire", Type.FIRE, MoveCategory.PHYSICAL, 100, 95, 5, -1, "May burn opponent.", 50, 2, new StatusEffectAttr(StatusEffect.BURN)), + new AttackMove(Moves.MAGNITUDE, "Magnitude", Type.GROUND, MoveCategory.PHYSICAL, -1, 100, 30, -1, "Hits with random power.", -1, 2), + new AttackMove(Moves.DYNAMIC_PUNCH, "Dynamic Punch", Type.FIGHTING, MoveCategory.PHYSICAL, 100, 50, 5, -1, "Confuses opponent.", 100, 2), // TODO + new AttackMove(Moves.MEGAHORN, "Megahorn", Type.BUG, MoveCategory.PHYSICAL, 120, 85, 10, -1, "", -1, 2), + new AttackMove(Moves.DRAGON_BREATH, "Dragon Breath", Type.DRAGON, MoveCategory.SPECIAL, 60, 100, 20, -1, "May paralyze opponent.", 30, 2, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new StatusMove(Moves.BATON_PASS, "Baton Pass", Type.NORMAL, -1, 40, 132, "User switches out and gives stat changes to the incoming Pokémon.", -1, 2), + new StatusMove(Moves.ENCORE, "Encore", Type.NORMAL, 100, 5, 122, "Forces opponent to keep using its last move for 3 turns.", -1, 2), + new AttackMove(Moves.PURSUIT, "Pursuit", Type.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, "Double power if the opponent is switching out.", -1, 2), + new AttackMove(Moves.RAPID_SPIN, "Rapid Spin", Type.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, -1, "Raises user's Speed and removes entry hazards and trap move effects.", 100, 2, new StatChangeAttr(BattleStat.SPD, 1, true)), // TODO + new StatusMove(Moves.SWEET_SCENT, "Sweet Scent", Type.NORMAL, 100, 20, -1, "Lowers opponent's Evasiveness.", -1, 2, new StatChangeAttr(BattleStat.EVA, -1)), + new AttackMove(Moves.IRON_TAIL, "Iron Tail", Type.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, -1, "May lower opponent's Defense.", 30, 2, new StatChangeAttr(BattleStat.DEF, -1)), + new AttackMove(Moves.METAL_CLAW, "Metal Claw", Type.STEEL, MoveCategory.PHYSICAL, 50, 95, 35, 31, "May raise user's Attack.", 10, 2, new StatChangeAttr(BattleStat.ATK, 1, true)), + new AttackMove(Moves.VITAL_THROW, "Vital Throw", Type.FIGHTING, MoveCategory.PHYSICAL, 70, 999, 10, -1, "User attacks last, but ignores Accuracy and Evasiveness.", -1, 2), + new StatusMove(Moves.MORNING_SUN, "Morning Sun", Type.NORMAL, -1, 5, -1, "User recovers HP. Amount varies with the weather.", -1, 2), + new StatusMove(Moves.SYNTHESIS, "Synthesis", Type.GRASS, -1, 5, -1, "User recovers HP. Amount varies with the weather.", -1, 2), + new StatusMove(Moves.MOONLIGHT, "Moonlight", Type.FAIRY, -1, 5, -1, "User recovers HP. Amount varies with the weather.", -1, 2), + new AttackMove(Moves.HIDDEN_POWER, "Hidden Power", Type.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, "Type and power depends on user's IVs.", -1, 2), + new AttackMove(Moves.CROSS_CHOP, "Cross Chop", Type.FIGHTING, MoveCategory.PHYSICAL, 100, 80, 5, -1, "High critical hit ratio.", -1, 2, new HighCritAttr()), + new AttackMove(Moves.TWISTER, "Twister", Type.DRAGON, MoveCategory.SPECIAL, 40, 100, 20, -1, "May cause flinching. Hits Pokémon using Fly/Bounce with double power.", 20, 2, new HitsTagAttr(BattleTagType.FLYING, true), new FlinchAttr()), // TODO - new Move(Moves.RAIN_DANCE, "Rain Dance", Type.WATER, MoveCategory.STATUS, -1, -1, 5, 50, "Makes it rain for 5 turns.", -1, 2), - new Move(Moves.SUNNY_DAY, "Sunny Day", Type.FIRE, MoveCategory.STATUS, -1, -1, 5, 49, "Makes it sunny for 5 turns.", -1, 2), - new Move(Moves.CRUNCH, "Crunch", Type.DARK, MoveCategory.PHYSICAL, 80, 100, 15, 108, "May lower opponent's Defense.", 20, 2, new StatChangeAttr(BattleStat.DEF, -1)), - new Move(Moves.MIRROR_COAT, "Mirror Coat", Type.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 20, -1, "When hit by a Special Attack, user strikes back with 2x power.", -1, 2), - new Move(Moves.PSYCH_UP, "Psych Up", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, -1, "Copies the opponent's stat changes.", -1, 2), - new Move(Moves.EXTREME_SPEED, "Extreme Speed", Type.NORMAL, MoveCategory.PHYSICAL, 80, 100, 5, -1, "User attacks first.", -1, 2), - new Move(Moves.ANCIENT_POWER, "Ancient Power", Type.ROCK, MoveCategory.SPECIAL, 60, 100, 5, -1, "May raise all user's stats at once.", 10, 2, + new StatusMove(Moves.RAIN_DANCE, "Rain Dance", Type.WATER, -1, 5, 50, "Makes it rain for 5 turns.", -1, 2), + new StatusMove(Moves.SUNNY_DAY, "Sunny Day", Type.FIRE, -1, 5, 49, "Makes it sunny for 5 turns.", -1, 2), + new AttackMove(Moves.CRUNCH, "Crunch", Type.DARK, MoveCategory.PHYSICAL, 80, 100, 15, 108, "May lower opponent's Defense.", 20, 2, new StatChangeAttr(BattleStat.DEF, -1)), + new AttackMove(Moves.MIRROR_COAT, "Mirror Coat", Type.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 20, -1, "When hit by a Special Attack, user strikes back with 2x power.", -1, 2), + new StatusMove(Moves.PSYCH_UP, "Psych Up", Type.NORMAL, -1, 10, -1, "Copies the opponent's stat changes.", -1, 2), + new AttackMove(Moves.EXTREME_SPEED, "Extreme Speed", Type.NORMAL, MoveCategory.PHYSICAL, 80, 100, 5, -1, "User attacks first.", -1, 2), + new AttackMove(Moves.ANCIENT_POWER, "Ancient Power", Type.ROCK, MoveCategory.SPECIAL, 60, 100, 5, -1, "May raise all user's stats at once.", 10, 2, new StatChangeAttr([ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 1, true)), - new Move(Moves.SHADOW_BALL, "Shadow Ball", Type.GHOST, MoveCategory.SPECIAL, 80, 100, 15, 114, "May lower opponent's Special Defense.", 20, 2, new StatChangeAttr(BattleStat.SPDEF, -1)), - new Move(Moves.FUTURE_SIGHT, "Future Sight", Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, "Damage occurs 2 turns later.", -1, 2), - new Move(Moves.ROCK_SMASH, "Rock Smash", Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 15, -1, "May lower opponent's Defense.", 50, 2, new StatChangeAttr(BattleStat.DEF, -1)), - new Move(Moves.WHIRLPOOL, "Whirlpool", Type.WATER, MoveCategory.SPECIAL, 35, 85, 15, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 2), - new Move(Moves.BEAT_UP, "Beat Up", Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, "Each Pokémon in user's party attacks.", -1, 2), - new Move(Moves.FAKE_OUT, "Fake Out", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 10, -1, "User attacks first, foe flinches. Only usable on first turn.", 100, 3, new FlinchAttr()), // TODO - new Move(Moves.UPROAR, "Uproar", Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, "User attacks for 3 turns and prevents sleep.", -1, 3), - new Move(Moves.STOCKPILE, "Stockpile", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "Stores energy for use with Spit Up and Swallow.", -1, 3), - new Move(Moves.SPIT_UP, "Spit Up", Type.NORMAL, MoveCategory.SPECIAL, -1, 100, 10, -1, "Power depends on how many times the user performed Stockpile.", -1, 3), - new Move(Moves.SWALLOW, "Swallow", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, -1, "The more times the user has performed Stockpile, the more HP is recovered.", -1, 3), - new Move(Moves.HEAT_WAVE, "Heat Wave", Type.FIRE, MoveCategory.SPECIAL, 95, 90, 10, 118, "May burn opponent.", 10, 3, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.HAIL, "Hail", Type.ICE, MoveCategory.STATUS, -1, -1, 10, -1, "Non-Ice types are damaged for 5 turns.", -1, 3), - new Move(Moves.TORMENT, "Torment", Type.DARK, MoveCategory.STATUS, -1, 100, 15, -1, "Opponent cannot use the same move in a row.", -1, 3), - new Move(Moves.FLATTER, "Flatter", Type.DARK, MoveCategory.STATUS, -1, 100, 15, -1, "Confuses opponent, but raises its Special Attack.", -1, 3, new StatChangeAttr(BattleStat.SPATK, 1)), // TODO - new Move(Moves.WILL_O_WISP, "Will-O-Wisp", Type.FIRE, MoveCategory.STATUS, -1, 85, 15, 107, "Burns opponent.", -1, 3, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.MEMENTO, "Memento", Type.DARK, MoveCategory.STATUS, -1, 100, 10, -1, "User faints, sharply lowers opponent's Attack and Special Attack.", -1, 3, + new AttackMove(Moves.SHADOW_BALL, "Shadow Ball", Type.GHOST, MoveCategory.SPECIAL, 80, 100, 15, 114, "May lower opponent's Special Defense.", 20, 2, new StatChangeAttr(BattleStat.SPDEF, -1)), + new AttackMove(Moves.FUTURE_SIGHT, "Future Sight", Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, "Damage occurs 2 turns later.", -1, 2), + new AttackMove(Moves.ROCK_SMASH, "Rock Smash", Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 15, -1, "May lower opponent's Defense.", 50, 2, new StatChangeAttr(BattleStat.DEF, -1)), + new AttackMove(Moves.WHIRLPOOL, "Whirlpool", Type.WATER, MoveCategory.SPECIAL, 35, 85, 15, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 2), + new AttackMove(Moves.BEAT_UP, "Beat Up", Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, "Each Pokémon in user's party attacks.", -1, 2), + new AttackMove(Moves.FAKE_OUT, "Fake Out", Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 10, -1, "User attacks first, foe flinches. Only usable on first turn.", 100, 3, new FlinchAttr()), // TODO + new AttackMove(Moves.UPROAR, "Uproar", Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, "User attacks for 3 turns and prevents sleep.", -1, 3), + new StatusMove(Moves.STOCKPILE, "Stockpile", Type.NORMAL, -1, 20, -1, "Stores energy for use with Spit Up and Swallow.", -1, 3), + new AttackMove(Moves.SPIT_UP, "Spit Up", Type.NORMAL, MoveCategory.SPECIAL, -1, 100, 10, -1, "Power depends on how many times the user performed Stockpile.", -1, 3), + new StatusMove(Moves.SWALLOW, "Swallow", Type.NORMAL, -1, 10, -1, "The more times the user has performed Stockpile, the more HP is recovered.", -1, 3), + new AttackMove(Moves.HEAT_WAVE, "Heat Wave", Type.FIRE, MoveCategory.SPECIAL, 95, 90, 10, 118, "May burn opponent.", 10, 3, new StatusEffectAttr(StatusEffect.BURN)), + new StatusMove(Moves.HAIL, "Hail", Type.ICE, -1, 10, -1, "Non-Ice types are damaged for 5 turns.", -1, 3), + new StatusMove(Moves.TORMENT, "Torment", Type.DARK, 100, 15, -1, "Opponent cannot use the same move in a row.", -1, 3), + new StatusMove(Moves.FLATTER, "Flatter", Type.DARK, 100, 15, -1, "Confuses opponent, but raises its Special Attack.", -1, 3, new StatChangeAttr(BattleStat.SPATK, 1)), // TODO + new StatusMove(Moves.WILL_O_WISP, "Will-O-Wisp", Type.FIRE, 85, 15, 107, "Burns opponent.", -1, 3, new StatusEffectAttr(StatusEffect.BURN)), + new StatusMove(Moves.MEMENTO, "Memento", Type.DARK, 100, 10, -1, "User faints, sharply lowers opponent's Attack and Special Attack.", -1, 3, new StatChangeAttr([ BattleStat.ATK, BattleStat.SPATK ], -2)), // TODO - new Move(Moves.FACADE, "Facade", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, 25, "Power doubles if user is burned, poisoned, or paralyzed.", -1, 3), - new Move(Moves.FOCUS_PUNCH, "Focus Punch", Type.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 20, -1, "If the user is hit before attacking, it flinches instead.", -1, 3), - new Move(Moves.SMELLING_SALTS, "Smelling Salts", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, -1, "Power doubles if opponent is paralyzed, but cures it.", -1, 3), - new Move(Moves.FOLLOW_ME, "Follow Me", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "In Double Battle, the user takes all the attacks.", -1, 3), - new Move(Moves.NATURE_POWER, "Nature Power", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "Uses a certain move based on the current terrain.", -1, 3), - new Move(Moves.CHARGE, "Charge", Type.ELECTRIC, MoveCategory.STATUS, -1, -1, 20, -1, "Raises user's Special Defense and next Electric move's power increases.", -1, 3, new StatChangeAttr(BattleStat.SPDEF, 1, true)), // TODO - new Move(Moves.TAUNT, "Taunt", Type.DARK, MoveCategory.STATUS, -1, 100, 20, 87, "Opponent can only use moves that attack.", -1, 3), - new Move(Moves.HELPING_HAND, "Helping Hand", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, 130, "In Double Battles, boosts the power of the partner's move.", -1, 3), - new Move(Moves.TRICK, "Trick", Type.PSYCHIC, MoveCategory.STATUS, -1, 100, 10, 109, "Swaps held items with the opponent.", -1, 3), - new Move(Moves.ROLE_PLAY, "Role Play", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "User copies the opponent's Ability.", -1, 3), - new Move(Moves.WISH, "Wish", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, -1, "The user recovers HP in the following turn.", -1, 3), - new Move(Moves.ASSIST, "Assist", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "User performs a move known by its allies at random.", -1, 3), - new Move(Moves.INGRAIN, "Ingrain", Type.GRASS, MoveCategory.STATUS, -1, -1, 20, -1, "User restores HP each turn. User cannot escape/switch.", -1, 3), - new Move(Moves.SUPERPOWER, "Superpower", Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, "Lowers user's Attack and Defense.", 100, 3, + new AttackMove(Moves.FACADE, "Facade", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, 25, "Power doubles if user is burned, poisoned, or paralyzed.", -1, 3), + new AttackMove(Moves.FOCUS_PUNCH, "Focus Punch", Type.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 20, -1, "If the user is hit before attacking, it flinches instead.", -1, 3), + new AttackMove(Moves.SMELLING_SALTS, "Smelling Salts", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, -1, "Power doubles if opponent is paralyzed, but cures it.", -1, 3), + new StatusMove(Moves.FOLLOW_ME, "Follow Me", Type.NORMAL, -1, 20, -1, "In Double Battle, the user takes all the attacks.", -1, 3), + new StatusMove(Moves.NATURE_POWER, "Nature Power", Type.NORMAL, -1, 20, -1, "Uses a certain move based on the current terrain.", -1, 3), + new StatusMove(Moves.CHARGE, "Charge", Type.ELECTRIC, -1, 20, -1, "Raises user's Special Defense and next Electric move's power increases.", -1, 3, new StatChangeAttr(BattleStat.SPDEF, 1, true)), // TODO + new StatusMove(Moves.TAUNT, "Taunt", Type.DARK, 100, 20, 87, "Opponent can only use moves that attack.", -1, 3), + new StatusMove(Moves.HELPING_HAND, "Helping Hand", Type.NORMAL, -1, 20, 130, "In Double Battles, boosts the power of the partner's move.", -1, 3), + new StatusMove(Moves.TRICK, "Trick", Type.PSYCHIC, 100, 10, 109, "Swaps held items with the opponent.", -1, 3), + new StatusMove(Moves.ROLE_PLAY, "Role Play", Type.PSYCHIC, -1, 10, -1, "User copies the opponent's Ability.", -1, 3), + new StatusMove(Moves.WISH, "Wish", Type.NORMAL, -1, 10, -1, "The user recovers HP in the following turn.", -1, 3), + new StatusMove(Moves.ASSIST, "Assist", Type.NORMAL, -1, 20, -1, "User performs a move known by its allies at random.", -1, 3), + new StatusMove(Moves.INGRAIN, "Ingrain", Type.GRASS, -1, 20, -1, "User restores HP each turn. User cannot escape/switch.", -1, 3), + new AttackMove(Moves.SUPERPOWER, "Superpower", Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, "Lowers user's Attack and Defense.", 100, 3, new StatChangeAttr([ BattleStat.ATK, BattleStat.DEF ], -1, true)), - new Move(Moves.MAGIC_COAT, "Magic Coat", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 15, -1, "Reflects moves that cause status conditions back to the attacker.", -1, 3), - new Move(Moves.RECYCLE, "Recycle", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, -1, "User's used hold item is restored.", -1, 3), - new Move(Moves.REVENGE, "Revenge", Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, "Power increases if user was hit first.", -1, 3), - new Move(Moves.BRICK_BREAK, "Brick Break", Type.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 15, 58, "Breaks through Reflect and Light Screen barriers.", -1, 3), - new Move(Moves.YAWN, "Yawn", Type.NORMAL, MoveCategory.STATUS, -1, -1, 10, -1, "Puts opponent to sleep in the next turn.", -1, 3), // TODO - new Move(Moves.KNOCK_OFF, "Knock Off", Type.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, "Removes opponent's held item for the rest of the battle.", -1, 3), - new Move(Moves.ENDEAVOR, "Endeavor", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, "Reduces opponent's HP to same as user's.", -1, 3), - new Move(Moves.ERUPTION, "Eruption", Type.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, "Stronger when the user's HP is higher.", -1, 3), - new Move(Moves.SKILL_SWAP, "Skill Swap", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, 98, "The user swaps Abilities with the opponent.", -1, 3), - new Move(Moves.IMPRISON, "Imprison", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, 92, "Opponent is unable to use moves that the user also knows.", -1, 3), - new Move(Moves.REFRESH, "Refresh", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "Cures paralysis, poison, and burns.", -1, 3), - new Move(Moves.GRUDGE, "Grudge", Type.GHOST, MoveCategory.STATUS, -1, -1, 5, -1, "If the users faints after using this move, the PP for the opponent's last move is depleted.", -1, 3), - new Move(Moves.SNATCH, "Snatch", Type.DARK, MoveCategory.STATUS, -1, -1, 10, -1, "Steals the effects of the opponent's next move.", -1, 3), - new Move(Moves.SECRET_POWER, "Secret Power", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, "Effects of the attack vary with the location.", 30, 3), - new Move(Moves.DIVE, "Dive", Type.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, "Dives underwater on first turn, attacks on second turn.", -1, 3, + new StatusMove(Moves.MAGIC_COAT, "Magic Coat", Type.PSYCHIC, -1, 15, -1, "Reflects moves that cause status conditions back to the attacker.", -1, 3), + new StatusMove(Moves.RECYCLE, "Recycle", Type.NORMAL, -1, 10, -1, "User's used hold item is restored.", -1, 3), + new AttackMove(Moves.REVENGE, "Revenge", Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, "Power increases if user was hit first.", -1, 3), + new AttackMove(Moves.BRICK_BREAK, "Brick Break", Type.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 15, 58, "Breaks through Reflect and Light Screen barriers.", -1, 3), + new StatusMove(Moves.YAWN, "Yawn", Type.NORMAL, -1, 10, -1, "Puts opponent to sleep in the next turn.", -1, 3), // TODO + new AttackMove(Moves.KNOCK_OFF, "Knock Off", Type.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, "Removes opponent's held item for the rest of the battle.", -1, 3), + new AttackMove(Moves.ENDEAVOR, "Endeavor", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, "Reduces opponent's HP to same as user's.", -1, 3), + new AttackMove(Moves.ERUPTION, "Eruption", Type.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, "Stronger when the user's HP is higher.", -1, 3), + new StatusMove(Moves.SKILL_SWAP, "Skill Swap", Type.PSYCHIC, -1, 10, 98, "The user swaps Abilities with the opponent.", -1, 3), + new StatusMove(Moves.IMPRISON, "Imprison", Type.PSYCHIC, -1, 10, 92, "Opponent is unable to use moves that the user also knows.", -1, 3), + new StatusMove(Moves.REFRESH, "Refresh", Type.NORMAL, -1, 20, -1, "Cures paralysis, poison, and burns.", -1, 3), + new StatusMove(Moves.GRUDGE, "Grudge", Type.GHOST, -1, 5, -1, "If the users faints after using this move, the PP for the opponent's last move is depleted.", -1, 3), + new StatusMove(Moves.SNATCH, "Snatch", Type.DARK, -1, 10, -1, "Steals the effects of the opponent's next move.", -1, 3), + new AttackMove(Moves.SECRET_POWER, "Secret Power", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, "Effects of the attack vary with the location.", 30, 3), + new AttackMove(Moves.DIVE, "Dive", Type.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, "Dives underwater on first turn, attacks on second turn.", -1, 3, new ChargeAttr(ChargeAnim.DIVE_CHARGING, 'hid\nunderwater!')), - new Move(Moves.ARM_THRUST, "Arm Thrust", Type.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, "Hits 2-5 times in one turn.", -1, 3, new MultiHitAttr()), - new Move(Moves.CAMOUFLAGE, "Camouflage", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "Changes user's type according to the location.", -1, 3), - new Move(Moves.TAIL_GLOW, "Tail Glow", Type.BUG, MoveCategory.STATUS, -1, -1, 20, -1, "Drastically raises user's Special Attack.", -1, 3, new StatChangeAttr(BattleStat.SPATK, 3, true)), - new Move(Moves.LUSTER_PURGE, "Luster Purge", Type.PSYCHIC, MoveCategory.SPECIAL, 70, 100, 5, -1, "May lower opponent's Special Defense.", 50, 3, new StatChangeAttr(BattleStat.SPDEF, -1)), - new Move(Moves.MIST_BALL, "Mist Ball", Type.PSYCHIC, MoveCategory.SPECIAL, 70, 100, 5, -1, "May lower opponent's Special Attack.", 50, 3, new StatChangeAttr(BattleStat.SPATK, -1)), - new Move(Moves.FEATHER_DANCE, "Feather Dance", Type.FLYING, MoveCategory.STATUS, -1, 100, 15, -1, "Sharply lowers opponent's Attack.", -1, 3, new StatChangeAttr(BattleStat.ATK, -2)), - new Move(Moves.TEETER_DANCE, "Teeter Dance", Type.NORMAL, MoveCategory.STATUS, -1, 100, 20, -1, "Confuses all Pokémon.", -1, 3), // TODO - new Move(Moves.BLAZE_KICK, "Blaze Kick", Type.FIRE, MoveCategory.PHYSICAL, 85, 90, 10, -1, "High critical hit ratio. May burn opponent.", 10, 3, new HighCritAttr(), new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.MUD_SPORT, "Mud Sport", Type.GROUND, MoveCategory.STATUS, -1, -1, 15, -1, "Weakens the power of Electric-type moves.", -1, 3), - new Move(Moves.ICE_BALL, "Ice Ball", Type.ICE, MoveCategory.PHYSICAL, 30, 90, 20, -1, "Doubles in power each turn for 5 turns.", -1, 3), - new Move(Moves.NEEDLE_ARM, "Needle Arm", Type.GRASS, MoveCategory.PHYSICAL, 60, 100, 15, -1, "May cause flinching.", 30, 3, new FlinchAttr()), - new Move(Moves.SLACK_OFF, "Slack Off", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "User recovers half its max HP.", -1, 3), - new Move(Moves.HYPER_VOICE, "Hyper Voice", Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, 117, "", -1, 3), - new Move(Moves.POISON_FANG, "Poison Fang", Type.POISON, MoveCategory.PHYSICAL, 50, 100, 15, -1, "May badly poison opponent.", 50, 3, new StatusEffectAttr(StatusEffect.TOXIC)), - new Move(Moves.CRUSH_CLAW, "Crush Claw", Type.NORMAL, MoveCategory.PHYSICAL, 75, 95, 10, -1, "May lower opponent's Defense.", 50, 3, new StatChangeAttr(BattleStat.DEF, -1)), - new Move(Moves.BLAST_BURN, "Blast Burn", Type.FIRE, MoveCategory.SPECIAL, 150, 90, 5, 153, "User must recharge next turn.", -1, 3), - new Move(Moves.HYDRO_CANNON, "Hydro Cannon", Type.WATER, MoveCategory.SPECIAL, 150, 90, 5, 154, "User must recharge next turn.", -1, 3), - new Move(Moves.METEOR_MASH, "Meteor Mash", Type.STEEL, MoveCategory.PHYSICAL, 90, 90, 10, -1, "May raise user's Attack.", 20, 3, new StatChangeAttr(BattleStat.ATK, 1, true)), - new Move(Moves.ASTONISH, "Astonish", Type.GHOST, MoveCategory.PHYSICAL, 30, 100, 15, -1, "May cause flinching.", 30, 3, new FlinchAttr()), - new Move(Moves.WEATHER_BALL, "Weather Ball", Type.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, "Move's power and type changes with the weather.", -1, 3), - new Move(Moves.AROMATHERAPY, "Aromatherapy", Type.GRASS, MoveCategory.STATUS, -1, -1, 5, -1, "Cures all status problems in your party.", -1, 3), - new Move(Moves.FAKE_TEARS, "Fake Tears", Type.DARK, MoveCategory.STATUS, -1, 100, 20, 3, "Sharply lowers opponent's Special Defense.", -1, 3, new StatChangeAttr(BattleStat.SPDEF, -2)), - new Move(Moves.AIR_CUTTER, "Air Cutter", Type.FLYING, MoveCategory.SPECIAL, 60, 95, 25, 40, "High critical hit ratio.", -1, 3, new HighCritAttr()), - new Move(Moves.OVERHEAT, "Overheat", Type.FIRE, MoveCategory.SPECIAL, 130, 90, 5, 157, "Sharply lowers user's Special Attack.", 100, 3, new StatChangeAttr(BattleStat.SPATK, -2, true)), - new Move(Moves.ODOR_SLEUTH, "Odor Sleuth", Type.NORMAL, MoveCategory.STATUS, -1, -1, 40, -1, "Resets opponent's Evasiveness, and allows Normal- and Fighting-type attacks to hit Ghosts.", -1, 3), - new Move(Moves.ROCK_TOMB, "Rock Tomb", Type.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 36, "Lowers opponent's Speed.", 100, 3, new StatChangeAttr(BattleStat.SPD, -1)), - new Move(Moves.SILVER_WIND, "Silver Wind", Type.BUG, MoveCategory.SPECIAL, 60, 100, 5, -1, "May raise all stats of user at once.", 10, 3, + new AttackMove(Moves.ARM_THRUST, "Arm Thrust", Type.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, "Hits 2-5 times in one turn.", -1, 3, new MultiHitAttr()), + new StatusMove(Moves.CAMOUFLAGE, "Camouflage", Type.NORMAL, -1, 20, -1, "Changes user's type according to the location.", -1, 3), + new StatusMove(Moves.TAIL_GLOW, "Tail Glow", Type.BUG, -1, 20, -1, "Drastically raises user's Special Attack.", -1, 3, new StatChangeAttr(BattleStat.SPATK, 3, true)), + new AttackMove(Moves.LUSTER_PURGE, "Luster Purge", Type.PSYCHIC, MoveCategory.SPECIAL, 70, 100, 5, -1, "May lower opponent's Special Defense.", 50, 3, new StatChangeAttr(BattleStat.SPDEF, -1)), + new AttackMove(Moves.MIST_BALL, "Mist Ball", Type.PSYCHIC, MoveCategory.SPECIAL, 70, 100, 5, -1, "May lower opponent's Special Attack.", 50, 3, new StatChangeAttr(BattleStat.SPATK, -1)), + new StatusMove(Moves.FEATHER_DANCE, "Feather Dance", Type.FLYING, 100, 15, -1, "Sharply lowers opponent's Attack.", -1, 3, new StatChangeAttr(BattleStat.ATK, -2)), + new StatusMove(Moves.TEETER_DANCE, "Teeter Dance", Type.NORMAL, 100, 20, -1, "Confuses all Pokémon.", -1, 3), // TODO + new AttackMove(Moves.BLAZE_KICK, "Blaze Kick", Type.FIRE, MoveCategory.PHYSICAL, 85, 90, 10, -1, "High critical hit ratio. May burn opponent.", 10, 3, new HighCritAttr(), new StatusEffectAttr(StatusEffect.BURN)), + new StatusMove(Moves.MUD_SPORT, "Mud Sport", Type.GROUND, -1, 15, -1, "Weakens the power of Electric-type moves.", -1, 3), + new AttackMove(Moves.ICE_BALL, "Ice Ball", Type.ICE, MoveCategory.PHYSICAL, 30, 90, 20, -1, "Doubles in power each turn for 5 turns.", -1, 3), + new AttackMove(Moves.NEEDLE_ARM, "Needle Arm", Type.GRASS, MoveCategory.PHYSICAL, 60, 100, 15, -1, "May cause flinching.", 30, 3, new FlinchAttr()), + new StatusMove(Moves.SLACK_OFF, "Slack Off", Type.NORMAL, -1, 5, -1, "User recovers half its max HP.", -1, 3), + new AttackMove(Moves.HYPER_VOICE, "Hyper Voice", Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, 117, "", -1, 3), + new AttackMove(Moves.POISON_FANG, "Poison Fang", Type.POISON, MoveCategory.PHYSICAL, 50, 100, 15, -1, "May badly poison opponent.", 50, 3, new StatusEffectAttr(StatusEffect.TOXIC)), + new AttackMove(Moves.CRUSH_CLAW, "Crush Claw", Type.NORMAL, MoveCategory.PHYSICAL, 75, 95, 10, -1, "May lower opponent's Defense.", 50, 3, new StatChangeAttr(BattleStat.DEF, -1)), + new AttackMove(Moves.BLAST_BURN, "Blast Burn", Type.FIRE, MoveCategory.SPECIAL, 150, 90, 5, 153, "User must recharge next turn.", -1, 3), + new AttackMove(Moves.HYDRO_CANNON, "Hydro Cannon", Type.WATER, MoveCategory.SPECIAL, 150, 90, 5, 154, "User must recharge next turn.", -1, 3), + new AttackMove(Moves.METEOR_MASH, "Meteor Mash", Type.STEEL, MoveCategory.PHYSICAL, 90, 90, 10, -1, "May raise user's Attack.", 20, 3, new StatChangeAttr(BattleStat.ATK, 1, true)), + new AttackMove(Moves.ASTONISH, "Astonish", Type.GHOST, MoveCategory.PHYSICAL, 30, 100, 15, -1, "May cause flinching.", 30, 3, new FlinchAttr()), + new AttackMove(Moves.WEATHER_BALL, "Weather Ball", Type.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, "Move's power and type changes with the weather.", -1, 3), + new StatusMove(Moves.AROMATHERAPY, "Aromatherapy", Type.GRASS, -1, 5, -1, "Cures all status problems in your party.", -1, 3), + new StatusMove(Moves.FAKE_TEARS, "Fake Tears", Type.DARK, 100, 20, 3, "Sharply lowers opponent's Special Defense.", -1, 3, new StatChangeAttr(BattleStat.SPDEF, -2)), + new AttackMove(Moves.AIR_CUTTER, "Air Cutter", Type.FLYING, MoveCategory.SPECIAL, 60, 95, 25, 40, "High critical hit ratio.", -1, 3, new HighCritAttr()), + new AttackMove(Moves.OVERHEAT, "Overheat", Type.FIRE, MoveCategory.SPECIAL, 130, 90, 5, 157, "Sharply lowers user's Special Attack.", 100, 3, new StatChangeAttr(BattleStat.SPATK, -2, true)), + new StatusMove(Moves.ODOR_SLEUTH, "Odor Sleuth", Type.NORMAL, -1, 40, -1, "Resets opponent's Evasiveness, and allows Normal- and Fighting-type attacks to hit Ghosts.", -1, 3), + new AttackMove(Moves.ROCK_TOMB, "Rock Tomb", Type.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 36, "Lowers opponent's Speed.", 100, 3, new StatChangeAttr(BattleStat.SPD, -1)), + new AttackMove(Moves.SILVER_WIND, "Silver Wind", Type.BUG, MoveCategory.SPECIAL, 60, 100, 5, -1, "May raise all stats of user at once.", 10, 3, new StatChangeAttr([ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 1, true)), - new Move(Moves.METAL_SOUND, "Metal Sound", Type.STEEL, MoveCategory.STATUS, -1, 85, 40, -1, "Sharply lowers opponent's Special Defense.", -1, 3, new StatChangeAttr(BattleStat.SPDEF, -2)), - new Move(Moves.GRASS_WHISTLE, "Grass Whistle", Type.GRASS, MoveCategory.STATUS, -1, 55, 15, -1, "Puts opponent to sleep.", -1, 3, new StatusEffectAttr(StatusEffect.SLEEP)), - new Move(Moves.TICKLE, "Tickle", Type.NORMAL, MoveCategory.STATUS, -1, 100, 20, -1, "Lowers opponent's Attack and Defense.", -1, 3, + new StatusMove(Moves.METAL_SOUND, "Metal Sound", Type.STEEL, 85, 40, -1, "Sharply lowers opponent's Special Defense.", -1, 3, new StatChangeAttr(BattleStat.SPDEF, -2)), + new StatusMove(Moves.GRASS_WHISTLE, "Grass Whistle", Type.GRASS, 55, 15, -1, "Puts opponent to sleep.", -1, 3, new StatusEffectAttr(StatusEffect.SLEEP)), + new StatusMove(Moves.TICKLE, "Tickle", Type.NORMAL, 100, 20, -1, "Lowers opponent's Attack and Defense.", -1, 3, new StatChangeAttr(BattleStat.ATK, -1), new StatChangeAttr(BattleStat.DEF, -1)), - new Move(Moves.COSMIC_POWER, "Cosmic Power", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 20, -1, "Raises user's Defense and Special Defense.", -1, 3, + new StatusMove(Moves.COSMIC_POWER, "Cosmic Power", Type.PSYCHIC, -1, 20, -1, "Raises user's Defense and Special Defense.", -1, 3, new StatChangeAttr([ BattleStat.DEF, BattleStat.SPDEF ], 1, true)), - new Move(Moves.WATER_SPOUT, "Water Spout", Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, "The higher the user's HP, the higher the damage caused.", -1, 3), - new Move(Moves.SIGNAL_BEAM, "Signal Beam", Type.BUG, MoveCategory.SPECIAL, 75, 100, 15, -1, "May confuse opponent.", 10, 3), // TODO - new Move(Moves.SHADOW_PUNCH, "Shadow Punch", Type.GHOST, MoveCategory.PHYSICAL, 60, 999, 20, -1, "Ignores Accuracy and Evasiveness.", -1, 3), - new Move(Moves.EXTRASENSORY, "Extrasensory", Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 20, -1, "May cause flinching.", 10, 3, new FlinchAttr()), - new Move(Moves.SKY_UPPERCUT, "Sky Uppercut", Type.FIGHTING, MoveCategory.PHYSICAL, 85, 90, 15, -1, "Hits the opponent, even during Fly.", -1, 3, new HitsTagAttr(BattleTagType.FLYING)), - new Move(Moves.SAND_TOMB, "Sand Tomb", Type.GROUND, MoveCategory.PHYSICAL, 35, 85, 15, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 3), - new Move(Moves.SHEER_COLD, "Sheer Cold", Type.ICE, MoveCategory.SPECIAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 3), - new Move(Moves.MUDDY_WATER, "Muddy Water", Type.WATER, MoveCategory.SPECIAL, 90, 85, 10, -1, "May lower opponent's Accuracy.", 30, 3, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.BULLET_SEED, "Bullet Seed", Type.GRASS, MoveCategory.PHYSICAL, 25, 100, 30, 56, "Hits 2-5 times in one turn.", -1, 3, new MultiHitAttr()), - new Move(Moves.AERIAL_ACE, "Aerial Ace", Type.FLYING, MoveCategory.PHYSICAL, 60, 999, 20, 27, "Ignores Accuracy and Evasiveness.", -1, 3), - new Move(Moves.ICICLE_SPEAR, "Icicle Spear", Type.ICE, MoveCategory.PHYSICAL, 25, 100, 30, -1, "Hits 2-5 times in one turn.", -1, 3, new MultiHitAttr()), - new Move(Moves.IRON_DEFENSE, "Iron Defense", Type.STEEL, MoveCategory.STATUS, -1, -1, 15, 104, "Sharply raises user's Defense.", -1, 3, new StatChangeAttr(BattleStat.DEF, 2, true)), - new Move(Moves.BLOCK, "Block", Type.NORMAL, MoveCategory.STATUS, -1, -1, 5, -1, "Opponent cannot flee or switch.", -1, 3), - new Move(Moves.HOWL, "Howl", Type.NORMAL, MoveCategory.STATUS, -1, -1, 40, -1, "Raises Attack of allies.", -1, 3, new StatChangeAttr(BattleStat.ATK, 1, true)), // TODO - new Move(Moves.DRAGON_CLAW, "Dragon Claw", Type.DRAGON, MoveCategory.PHYSICAL, 80, 100, 15, 78, "", -1, 3), - new Move(Moves.FRENZY_PLANT, "Frenzy Plant", Type.GRASS, MoveCategory.SPECIAL, 150, 90, 5, 155, "User must recharge next turn.", -1, 3), - new Move(Moves.BULK_UP, "Bulk Up", Type.FIGHTING, MoveCategory.STATUS, -1, -1, 20, 64, "Raises user's Attack and Defense.", -1, 3, + new AttackMove(Moves.WATER_SPOUT, "Water Spout", Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, "The higher the user's HP, the higher the damage caused.", -1, 3), + new AttackMove(Moves.SIGNAL_BEAM, "Signal Beam", Type.BUG, MoveCategory.SPECIAL, 75, 100, 15, -1, "May confuse opponent.", 10, 3), // TODO + new AttackMove(Moves.SHADOW_PUNCH, "Shadow Punch", Type.GHOST, MoveCategory.PHYSICAL, 60, 999, 20, -1, "Ignores Accuracy and Evasiveness.", -1, 3), + new AttackMove(Moves.EXTRASENSORY, "Extrasensory", Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 20, -1, "May cause flinching.", 10, 3, new FlinchAttr()), + new AttackMove(Moves.SKY_UPPERCUT, "Sky Uppercut", Type.FIGHTING, MoveCategory.PHYSICAL, 85, 90, 15, -1, "Hits the opponent, even during Fly.", -1, 3, new HitsTagAttr(BattleTagType.FLYING)), + new AttackMove(Moves.SAND_TOMB, "Sand Tomb", Type.GROUND, MoveCategory.PHYSICAL, 35, 85, 15, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 3), + new AttackMove(Moves.SHEER_COLD, "Sheer Cold", Type.ICE, MoveCategory.SPECIAL, -1, 30, 5, -1, "One-Hit-KO, if it hits.", -1, 3), + new AttackMove(Moves.MUDDY_WATER, "Muddy Water", Type.WATER, MoveCategory.SPECIAL, 90, 85, 10, -1, "May lower opponent's Accuracy.", 30, 3, new StatChangeAttr(BattleStat.ACC, -1)), + new AttackMove(Moves.BULLET_SEED, "Bullet Seed", Type.GRASS, MoveCategory.PHYSICAL, 25, 100, 30, 56, "Hits 2-5 times in one turn.", -1, 3, new MultiHitAttr()), + new AttackMove(Moves.AERIAL_ACE, "Aerial Ace", Type.FLYING, MoveCategory.PHYSICAL, 60, 999, 20, 27, "Ignores Accuracy and Evasiveness.", -1, 3), + new AttackMove(Moves.ICICLE_SPEAR, "Icicle Spear", Type.ICE, MoveCategory.PHYSICAL, 25, 100, 30, -1, "Hits 2-5 times in one turn.", -1, 3, new MultiHitAttr()), + new StatusMove(Moves.IRON_DEFENSE, "Iron Defense", Type.STEEL, -1, 15, 104, "Sharply raises user's Defense.", -1, 3, new StatChangeAttr(BattleStat.DEF, 2, true)), + new StatusMove(Moves.BLOCK, "Block", Type.NORMAL, -1, 5, -1, "Opponent cannot flee or switch.", -1, 3), + new StatusMove(Moves.HOWL, "Howl", Type.NORMAL, -1, 40, -1, "Raises Attack of allies.", -1, 3, new StatChangeAttr(BattleStat.ATK, 1, true)), // TODO + new AttackMove(Moves.DRAGON_CLAW, "Dragon Claw", Type.DRAGON, MoveCategory.PHYSICAL, 80, 100, 15, 78, "", -1, 3), + new AttackMove(Moves.FRENZY_PLANT, "Frenzy Plant", Type.GRASS, MoveCategory.SPECIAL, 150, 90, 5, 155, "User must recharge next turn.", -1, 3), + new StatusMove(Moves.BULK_UP, "Bulk Up", Type.FIGHTING, -1, 20, 64, "Raises user's Attack and Defense.", -1, 3, new StatChangeAttr([ BattleStat.ATK, BattleStat.DEF ], 1, true)), - new Move(Moves.BOUNCE, "Bounce", Type.FLYING, MoveCategory.PHYSICAL, 85, 85, 5, -1, "Springs up on first turn, attacks on second. May paralyze opponent.", 30, 3, + new AttackMove(Moves.BOUNCE, "Bounce", Type.FLYING, MoveCategory.PHYSICAL, 85, 85, 5, -1, "Springs up on first turn, attacks on second. May paralyze opponent.", 30, 3, new ChargeAttr(ChargeAnim.BOUNCE_CHARGING, 'sprang up!', BattleTagType.FLYING), new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.MUD_SHOT, "Mud Shot", Type.GROUND, MoveCategory.SPECIAL, 55, 95, 15, 35, "Lowers opponent's Speed.", 100, 3, new StatChangeAttr(BattleStat.SPD, -1)), - new Move(Moves.POISON_TAIL, "Poison Tail", Type.POISON, MoveCategory.PHYSICAL, 50, 100, 25, 26, "High critical hit ratio. May poison opponent.", 10, 3, new HighCritAttr(), new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.COVET, "Covet", Type.NORMAL, MoveCategory.PHYSICAL, 60, 100, 25, -1, "Opponent's item is stolen by the user.", -1, 3), - new Move(Moves.VOLT_TACKLE, "Volt Tackle", Type.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 15, -1, "User receives recoil damage. May paralyze opponent.", 10, 3, + new AttackMove(Moves.MUD_SHOT, "Mud Shot", Type.GROUND, MoveCategory.SPECIAL, 55, 95, 15, 35, "Lowers opponent's Speed.", 100, 3, new StatChangeAttr(BattleStat.SPD, -1)), + new AttackMove(Moves.POISON_TAIL, "Poison Tail", Type.POISON, MoveCategory.PHYSICAL, 50, 100, 25, 26, "High critical hit ratio. May poison opponent.", 10, 3, new HighCritAttr(), new StatusEffectAttr(StatusEffect.POISON)), + new AttackMove(Moves.COVET, "Covet", Type.NORMAL, MoveCategory.PHYSICAL, 60, 100, 25, -1, "Opponent's item is stolen by the user.", -1, 3), + new AttackMove(Moves.VOLT_TACKLE, "Volt Tackle", Type.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 15, -1, "User receives recoil damage. May paralyze opponent.", 10, 3, new StatusEffectAttr(StatusEffect.PARALYSIS)), // TODO - new Move(Moves.MAGICAL_LEAF, "Magical Leaf", Type.GRASS, MoveCategory.SPECIAL, 60, 999, 20, 33, "Ignores Accuracy and Evasiveness.", -1, 3), - new Move(Moves.WATER_SPORT, "Water Sport", Type.WATER, MoveCategory.STATUS, -1, -1, 15, -1, "Weakens the power of Fire-type moves.", -1, 3), - new Move(Moves.CALM_MIND, "Calm Mind", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 20, 129, "Raises user's Special Attack and Special Defense.", -1, 3, + new AttackMove(Moves.MAGICAL_LEAF, "Magical Leaf", Type.GRASS, MoveCategory.SPECIAL, 60, 999, 20, 33, "Ignores Accuracy and Evasiveness.", -1, 3), + new StatusMove(Moves.WATER_SPORT, "Water Sport", Type.WATER, -1, 15, -1, "Weakens the power of Fire-type moves.", -1, 3), + new StatusMove(Moves.CALM_MIND, "Calm Mind", Type.PSYCHIC, -1, 20, 129, "Raises user's Special Attack and Special Defense.", -1, 3, new StatChangeAttr([ BattleStat.SPATK, BattleStat.SPDEF ], 1, true)), - new Move(Moves.LEAF_BLADE, "Leaf Blade", Type.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, "High critical hit ratio.", -1, 3, new HighCritAttr()), - new Move(Moves.DRAGON_DANCE, "Dragon Dance", Type.DRAGON, MoveCategory.STATUS, -1, -1, 20, 100, "Raises user's Attack and Speed.", -1, 3, + new AttackMove(Moves.LEAF_BLADE, "Leaf Blade", Type.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, "High critical hit ratio.", -1, 3, new HighCritAttr()), + new StatusMove(Moves.DRAGON_DANCE, "Dragon Dance", Type.DRAGON, -1, 20, 100, "Raises user's Attack and Speed.", -1, 3, new StatChangeAttr([ BattleStat.ATK, BattleStat.SPD ], 1, true)), - new Move(Moves.ROCK_BLAST, "Rock Blast", Type.ROCK, MoveCategory.PHYSICAL, 25, 90, 10, 76, "Hits 2-5 times in one turn.", -1, 3, new MultiHitAttr()), - new Move(Moves.SHOCK_WAVE, "Shock Wave", Type.ELECTRIC, MoveCategory.SPECIAL, 60, 999, 20, -1, "Ignores Accuracy and Evasiveness.", -1, 3), - new Move(Moves.WATER_PULSE, "Water Pulse", Type.WATER, MoveCategory.SPECIAL, 60, 100, 20, 11, "May confuse opponent.", 20, 3), - new Move(Moves.DOOM_DESIRE, "Doom Desire", Type.STEEL, MoveCategory.SPECIAL, 140, 100, 5, -1, "Damage occurs 2 turns later.", -1, 3, + new AttackMove(Moves.ROCK_BLAST, "Rock Blast", Type.ROCK, MoveCategory.PHYSICAL, 25, 90, 10, 76, "Hits 2-5 times in one turn.", -1, 3, new MultiHitAttr()), + new AttackMove(Moves.SHOCK_WAVE, "Shock Wave", Type.ELECTRIC, MoveCategory.SPECIAL, 60, 999, 20, -1, "Ignores Accuracy and Evasiveness.", -1, 3), + new AttackMove(Moves.WATER_PULSE, "Water Pulse", Type.WATER, MoveCategory.SPECIAL, 60, 100, 20, 11, "May confuse opponent.", 20, 3), + new AttackMove(Moves.DOOM_DESIRE, "Doom Desire", Type.STEEL, MoveCategory.SPECIAL, 140, 100, 5, -1, "Damage occurs 2 turns later.", -1, 3, new ChargeAttr(ChargeAnim.DOOM_DESIRE_CHARGING, 'chose\nDOOM DESIRE as its destiny!')), - new Move(Moves.PSYCHO_BOOST, "Psycho Boost", Type.PSYCHIC, MoveCategory.SPECIAL, 140, 90, 5, -1, "Sharply lowers user's Special Attack.", 100, 3, new StatChangeAttr(BattleStat.SPATK, -2, true)), - new Move(Moves.ROOST, "Roost", Type.FLYING, MoveCategory.STATUS, -1, -1, 5, -1, "User recovers half of its max HP and loses the Flying type temporarily.", -1, 4), - new Move(Moves.GRAVITY, "Gravity", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 5, -1, "Prevents moves like Fly and Bounce and the Ability Levitate for 5 turns.", -1, 4), - new Move(Moves.MIRACLE_EYE, "Miracle Eye", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 40, -1, "Resets opponent's Evasiveness, removes Dark's Psychic immunity.", -1, 4), - new Move(Moves.WAKE_UP_SLAP, "Wake-Up Slap", Type.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, "Power doubles if opponent is asleep, but wakes it up.", -1, 4), - new Move(Moves.HAMMER_ARM, "Hammer Arm", Type.FIGHTING, MoveCategory.PHYSICAL, 100, 90, 10, -1, "Lowers user's Speed.", 100, 4, new StatChangeAttr(BattleStat.SPD, -1, true)), - new Move(Moves.GYRO_BALL, "Gyro Ball", Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 5, -1, "The slower the user, the stronger the attack.", -1, 4), - new Move(Moves.HEALING_WISH, "Healing Wish", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "The user faints and the next Pokémon released is fully healed.", -1, 4), - new Move(Moves.BRINE, "Brine", Type.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, "Power doubles if opponent's HP is less than 50%.", -1, 4), - new Move(Moves.NATURAL_GIFT, "Natural Gift", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, "Power and type depend on the user's held berry.", -1, 4), - new Move(Moves.FEINT, "Feint", Type.NORMAL, MoveCategory.PHYSICAL, 30, 100, 10, -1, "Only hits if opponent uses Protect or Detect in the same turn.", -1, 4), - new Move(Moves.PLUCK, "Pluck", Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 20, -1, "If the opponent is holding a berry, its effect is stolen by user.", -1, 4), - new Move(Moves.TAILWIND, "Tailwind", Type.FLYING, MoveCategory.STATUS, -1, -1, 15, 113, "Doubles Speed for 4 turns.", -1, 4), - new Move(Moves.ACUPRESSURE, "Acupressure", Type.NORMAL, MoveCategory.STATUS, -1, -1, 30, -1, "Sharply raises a random stat.", -1, 4, new StatChangeAttr(BattleStat.RAND, 2, true)), // TODO - new Move(Moves.METAL_BURST, "Metal Burst", Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, "Deals damage equal to 1.5x opponent's attack.", -1, 4), - new Move(Moves.U_TURN, "U-turn", Type.BUG, MoveCategory.PHYSICAL, 70, 100, 20, 60, "User switches out immediately after attacking.", -1, 4), - new Move(Moves.CLOSE_COMBAT, "Close Combat", Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, 167, "Lowers user's Defense and Special Defense.", 100, 4, + new AttackMove(Moves.PSYCHO_BOOST, "Psycho Boost", Type.PSYCHIC, MoveCategory.SPECIAL, 140, 90, 5, -1, "Sharply lowers user's Special Attack.", 100, 3, new StatChangeAttr(BattleStat.SPATK, -2, true)), + new StatusMove(Moves.ROOST, "Roost", Type.FLYING, -1, 5, -1, "User recovers half of its max HP and loses the Flying type temporarily.", -1, 4), + new StatusMove(Moves.GRAVITY, "Gravity", Type.PSYCHIC, -1, 5, -1, "Prevents moves like Fly and Bounce and the Ability Levitate for 5 turns.", -1, 4), + new StatusMove(Moves.MIRACLE_EYE, "Miracle Eye", Type.PSYCHIC, -1, 40, -1, "Resets opponent's Evasiveness, removes Dark's Psychic immunity.", -1, 4), + new AttackMove(Moves.WAKE_UP_SLAP, "Wake-Up Slap", Type.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, "Power doubles if opponent is asleep, but wakes it up.", -1, 4), + new AttackMove(Moves.HAMMER_ARM, "Hammer Arm", Type.FIGHTING, MoveCategory.PHYSICAL, 100, 90, 10, -1, "Lowers user's Speed.", 100, 4, new StatChangeAttr(BattleStat.SPD, -1, true)), + new AttackMove(Moves.GYRO_BALL, "Gyro Ball", Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 5, -1, "The slower the user, the stronger the attack.", -1, 4), + new StatusMove(Moves.HEALING_WISH, "Healing Wish", Type.PSYCHIC, -1, 10, -1, "The user faints and the next Pokémon released is fully healed.", -1, 4), + new AttackMove(Moves.BRINE, "Brine", Type.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, "Power doubles if opponent's HP is less than 50%.", -1, 4), + new AttackMove(Moves.NATURAL_GIFT, "Natural Gift", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, "Power and type depend on the user's held berry.", -1, 4), + new AttackMove(Moves.FEINT, "Feint", Type.NORMAL, MoveCategory.PHYSICAL, 30, 100, 10, -1, "Only hits if opponent uses Protect or Detect in the same turn.", -1, 4), + new AttackMove(Moves.PLUCK, "Pluck", Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 20, -1, "If the opponent is holding a berry, its effect is stolen by user.", -1, 4), + new StatusMove(Moves.TAILWIND, "Tailwind", Type.FLYING, -1, 15, 113, "Doubles Speed for 4 turns.", -1, 4), + new StatusMove(Moves.ACUPRESSURE, "Acupressure", Type.NORMAL, -1, 30, -1, "Sharply raises a random stat.", -1, 4, new StatChangeAttr(BattleStat.RAND, 2, true)), // TODO + new AttackMove(Moves.METAL_BURST, "Metal Burst", Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, "Deals damage equal to 1.5x opponent's attack.", -1, 4), + new AttackMove(Moves.U_TURN, "U-turn", Type.BUG, MoveCategory.PHYSICAL, 70, 100, 20, 60, "User switches out immediately after attacking.", -1, 4), + new AttackMove(Moves.CLOSE_COMBAT, "Close Combat", Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, 167, "Lowers user's Defense and Special Defense.", 100, 4, new StatChangeAttr([ BattleStat.DEF, BattleStat.SPDEF ], -1, true)), - new Move(Moves.PAYBACK, "Payback", Type.DARK, MoveCategory.PHYSICAL, 50, 100, 10, -1, "Power doubles if the user was attacked first.", -1, 4), - new Move(Moves.ASSURANCE, "Assurance", Type.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, "Power doubles if opponent already took damage in the same turn.", -1, 4), - new Move(Moves.EMBARGO, "Embargo", Type.DARK, MoveCategory.STATUS, -1, 100, 15, -1, "Opponent cannot use items.", -1, 4), - new Move(Moves.FLING, "Fling", Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, 43, "Power depends on held item.", -1, 4), - new Move(Moves.PSYCHO_SHIFT, "Psycho Shift", Type.PSYCHIC, MoveCategory.STATUS, -1, 100, 10, -1, "Transfers user's status condition to the opponent.", -1, 4), - new Move(Moves.TRUMP_CARD, "Trump Card", Type.NORMAL, MoveCategory.SPECIAL, -1, 999, 5, -1, "The lower the PP, the higher the power.", -1, 4), - new Move(Moves.HEAL_BLOCK, "Heal Block", Type.PSYCHIC, MoveCategory.STATUS, -1, 100, 15, -1, "Prevents the opponent from restoring HP for 5 turns.", -1, 4), - new Move(Moves.WRING_OUT, "Wring Out", Type.NORMAL, MoveCategory.SPECIAL, -1, 100, 5, -1, "The higher the opponent's HP, the higher the damage.", -1, 4), - new Move(Moves.POWER_TRICK, "Power Trick", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "User's own Attack and Defense switch.", -1, 4), - new Move(Moves.GASTRO_ACID, "Gastro Acid", Type.POISON, MoveCategory.STATUS, -1, 100, 10, -1, "Cancels out the effect of the opponent's Ability.", -1, 4), - new Move(Moves.LUCKY_CHANT, "Lucky Chant", Type.NORMAL, MoveCategory.STATUS, -1, -1, 30, -1, "Opponent cannot land critical hits for 5 turns.", -1, 4), - new Move(Moves.ME_FIRST, "Me First", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "User copies the opponent's attack with 1.5× power.", -1, 4), - new Move(Moves.COPYCAT, "Copycat", Type.NORMAL, MoveCategory.STATUS, -1, -1, 20, -1, "Copies opponent's last move.", -1, 4), - new Move(Moves.POWER_SWAP, "Power Swap", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "User and opponent swap Attack and Special Attack.", -1, 4), - new Move(Moves.GUARD_SWAP, "Guard Swap", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "User and opponent swap Defense and Special Defense.", -1, 4), - new Move(Moves.PUNISHMENT, "Punishment", Type.DARK, MoveCategory.PHYSICAL, -1, 100, 5, -1, "Power increases when opponent's stats have been raised.", -1, 4), - new Move(Moves.LAST_RESORT, "Last Resort", Type.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, "Can only be used after all other moves are used.", -1, 4), - new Move(Moves.WORRY_SEED, "Worry Seed", Type.GRASS, MoveCategory.STATUS, -1, 100, 10, -1, "Changes the opponent's Ability to Insomnia.", -1, 4), - new Move(Moves.SUCKER_PUNCH, "Sucker Punch", Type.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, "User attacks first, but only works if opponent is readying an attack.", -1, 4), - new Move(Moves.TOXIC_SPIKES, "Toxic Spikes", Type.POISON, MoveCategory.STATUS, -1, -1, 20, 91, "Poisons opponents when they switch into battle.", -1, 4), - new Move(Moves.HEART_SWAP, "Heart Swap", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "Stat changes are swapped with the opponent.", -1, 4), - new Move(Moves.AQUA_RING, "Aqua Ring", Type.WATER, MoveCategory.STATUS, -1, -1, 20, -1, "Restores a little HP each turn.", -1, 4), - new Move(Moves.MAGNET_RISE, "Magnet Rise", Type.ELECTRIC, MoveCategory.STATUS, -1, -1, 10, -1, "User becomes immune to Ground-type moves for 5 turns.", -1, 4), - new Move(Moves.FLARE_BLITZ, "Flare Blitz", Type.FIRE, MoveCategory.PHYSICAL, 120, 100, 15, 165, "User receives recoil damage. May burn opponent.", 10, 4, new StatusEffectAttr(StatusEffect.BURN)), // TODO - new Move(Moves.FORCE_PALM, "Force Palm", Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, "May paralyze opponent.", 30, 4, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.AURA_SPHERE, "Aura Sphere", Type.FIGHTING, MoveCategory.SPECIAL, 80, 999, 20, 112, "Ignores Accuracy and Evasiveness.", -1, 4), - new Move(Moves.ROCK_POLISH, "Rock Polish", Type.ROCK, MoveCategory.STATUS, -1, -1, 20, -1, "Sharply raises user's Speed.", -1, 4, new StatChangeAttr(BattleStat.SPD, 2, true)), - new Move(Moves.POISON_JAB, "Poison Jab", Type.POISON, MoveCategory.PHYSICAL, 80, 100, 20, 83, "May poison the opponent.", 30, 4, new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.DARK_PULSE, "Dark Pulse", Type.DARK, MoveCategory.SPECIAL, 80, 100, 15, 94, "May cause flinching.", 20, 4, new FlinchAttr()), - new Move(Moves.NIGHT_SLASH, "Night Slash", Type.DARK, MoveCategory.PHYSICAL, 70, 100, 15, -1, "High critical hit ratio.", -1, 4), - new Move(Moves.AQUA_TAIL, "Aqua Tail", Type.WATER, MoveCategory.PHYSICAL, 90, 90, 10, -1, "", -1, 4), - new Move(Moves.SEED_BOMB, "Seed Bomb", Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 15, 71, "", -1, 4), - new Move(Moves.AIR_SLASH, "Air Slash", Type.FLYING, MoveCategory.SPECIAL, 75, 95, 15, 65, "May cause flinching.", 30, 4, new FlinchAttr()), - new Move(Moves.X_SCISSOR, "X-Scissor", Type.BUG, MoveCategory.PHYSICAL, 80, 100, 15, 105, "", -1, 4), - new Move(Moves.BUG_BUZZ, "Bug Buzz", Type.BUG, MoveCategory.SPECIAL, 90, 100, 10, 162, "May lower opponent's Special Defense.", 10, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), - new Move(Moves.DRAGON_PULSE, "Dragon Pulse", Type.DRAGON, MoveCategory.SPECIAL, 85, 100, 10, 115, "", -1, 4), - new Move(Moves.DRAGON_RUSH, "Dragon Rush", Type.DRAGON, MoveCategory.PHYSICAL, 100, 75, 10, -1, "May cause flinching.", 20, 4, new FlinchAttr()), - new Move(Moves.POWER_GEM, "Power Gem", Type.ROCK, MoveCategory.SPECIAL, 80, 100, 20, 101, "", -1, 4), - new Move(Moves.DRAIN_PUNCH, "Drain Punch", Type.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 10, 73, "User recovers half the HP inflicted on opponent.", -1, 4), - new Move(Moves.VACUUM_WAVE, "Vacuum Wave", Type.FIGHTING, MoveCategory.SPECIAL, 40, 100, 30, -1, "User attacks first.", -1, 4), - new Move(Moves.FOCUS_BLAST, "Focus Blast", Type.FIGHTING, MoveCategory.SPECIAL, 120, 70, 5, 158, "May lower opponent's Special Defense.", 10, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), - new Move(Moves.ENERGY_BALL, "Energy Ball", Type.GRASS, MoveCategory.SPECIAL, 90, 100, 10, 119, "May lower opponent's Special Defense.", 10, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), - new Move(Moves.BRAVE_BIRD, "Brave Bird", Type.FLYING, MoveCategory.PHYSICAL, 120, 100, 15, 164, "User receives recoil damage.", -1, 4), - new Move(Moves.EARTH_POWER, "Earth Power", Type.GROUND, MoveCategory.SPECIAL, 90, 100, 10, 133, "May lower opponent's Special Defense.", 10, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), - new Move(Moves.SWITCHEROO, "Switcheroo", Type.DARK, MoveCategory.STATUS, -1, 100, 10, -1, "Swaps held items with the opponent.", -1, 4), - new Move(Moves.GIGA_IMPACT, "Giga Impact", Type.NORMAL, MoveCategory.PHYSICAL, 150, 90, 5, 152, "User must recharge next turn.", -1, 4), - new Move(Moves.NASTY_PLOT, "Nasty Plot", Type.DARK, MoveCategory.STATUS, -1, -1, 20, 140, "Sharply raises user's Special Attack.", -1, 4, new StatChangeAttr(BattleStat.SPATK, 2, true)), - new Move(Moves.BULLET_PUNCH, "Bullet Punch", Type.STEEL, MoveCategory.PHYSICAL, 40, 100, 30, -1, "User attacks first.", -1, 4), - new Move(Moves.AVALANCHE, "Avalanche", Type.ICE, MoveCategory.PHYSICAL, 60, 100, 10, 46, "Power doubles if user took damage first.", -1, 4), - new Move(Moves.ICE_SHARD, "Ice Shard", Type.ICE, MoveCategory.PHYSICAL, 40, 100, 30, -1, "User attacks first.", -1, 4), - new Move(Moves.SHADOW_CLAW, "Shadow Claw", Type.GHOST, MoveCategory.PHYSICAL, 70, 100, 15, 61, "High critical hit ratio.", -1, 4), - new Move(Moves.THUNDER_FANG, "Thunder Fang", Type.ELECTRIC, MoveCategory.PHYSICAL, 65, 95, 15, 9, "May cause flinching and/or paralyze opponent.", 10, 4, new FlinchAttr(), new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.ICE_FANG, "Ice Fang", Type.ICE, MoveCategory.PHYSICAL, 65, 95, 15, 10, "May cause flinching and/or freeze opponent.", 10, 4, new FlinchAttr(), new StatusEffectAttr(StatusEffect.FREEZE)), - new Move(Moves.FIRE_FANG, "Fire Fang", Type.FIRE, MoveCategory.PHYSICAL, 65, 95, 15, 8, "May cause flinching and/or burn opponent.", 10, 4, new FlinchAttr(), new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.SHADOW_SNEAK, "Shadow Sneak", Type.GHOST, MoveCategory.PHYSICAL, 40, 100, 30, -1, "User attacks first.", -1, 4), - new Move(Moves.MUD_BOMB, "Mud Bomb", Type.GROUND, MoveCategory.SPECIAL, 65, 85, 10, -1, "May lower opponent's Accuracy.", 30, 4, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.PSYCHO_CUT, "Psycho Cut", Type.PSYCHIC, MoveCategory.PHYSICAL, 70, 100, 20, -1, "High critical hit ratio.", -1, 4), - new Move(Moves.ZEN_HEADBUTT, "Zen Headbutt", Type.PSYCHIC, MoveCategory.PHYSICAL, 80, 90, 15, 59, "May cause flinching.", 20, 4, new FlinchAttr()), - new Move(Moves.MIRROR_SHOT, "Mirror Shot", Type.STEEL, MoveCategory.SPECIAL, 65, 85, 10, -1, "May lower opponent's Accuracy.", 30, 4, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.FLASH_CANNON, "Flash Cannon", Type.STEEL, MoveCategory.SPECIAL, 80, 100, 10, 93, "May lower opponent's Special Defense.", 10, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), - new Move(Moves.ROCK_CLIMB, "Rock Climb", Type.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, -1, "May confuse opponent.", 20, 4), // TODO - new Move(Moves.DEFOG, "Defog", Type.FLYING, MoveCategory.STATUS, -1, -1, 15, -1, "Lowers opponent's Evasiveness and clears fog.", -1, 4, new StatChangeAttr(BattleStat.EVA, -1)), // TODO - new Move(Moves.TRICK_ROOM, "Trick Room", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 5, 161, "Slower Pokémon move first in the turn for 5 turns.", -1, 4), - new Move(Moves.DRACO_METEOR, "Draco Meteor", Type.DRAGON, MoveCategory.SPECIAL, 130, 90, 5, 169, "Sharply lowers user's Special Attack.", 100, 4, new StatChangeAttr(BattleStat.SPATK, -2, true)), - new Move(Moves.DISCHARGE, "Discharge", Type.ELECTRIC, MoveCategory.SPECIAL, 80, 100, 15, -1, "May paralyze opponent.", 30, 4, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.LAVA_PLUME, "Lava Plume", Type.FIRE, MoveCategory.SPECIAL, 80, 100, 15, -1, "May burn opponent.", 30, 4, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.LEAF_STORM, "Leaf Storm", Type.GRASS, MoveCategory.SPECIAL, 130, 90, 5, 159, "Sharply lowers user's Special Attack.", 100, 4, new StatChangeAttr(BattleStat.SPATK, -2, true)), - new Move(Moves.POWER_WHIP, "Power Whip", Type.GRASS, MoveCategory.PHYSICAL, 120, 85, 10, -1, "", -1, 4), - new Move(Moves.ROCK_WRECKER, "Rock Wrecker", Type.ROCK, MoveCategory.PHYSICAL, 150, 90, 5, -1, "User must recharge next turn.", -1, 4), - new Move(Moves.CROSS_POISON, "Cross Poison", Type.POISON, MoveCategory.PHYSICAL, 70, 100, 20, -1, "High critical hit ratio. May poison opponent.", 10, 4, + new AttackMove(Moves.PAYBACK, "Payback", Type.DARK, MoveCategory.PHYSICAL, 50, 100, 10, -1, "Power doubles if the user was attacked first.", -1, 4), + new AttackMove(Moves.ASSURANCE, "Assurance", Type.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, "Power doubles if opponent already took damage in the same turn.", -1, 4), + new StatusMove(Moves.EMBARGO, "Embargo", Type.DARK, 100, 15, -1, "Opponent cannot use items.", -1, 4), + new AttackMove(Moves.FLING, "Fling", Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, 43, "Power depends on held item.", -1, 4), + new StatusMove(Moves.PSYCHO_SHIFT, "Psycho Shift", Type.PSYCHIC, 100, 10, -1, "Transfers user's status condition to the opponent.", -1, 4), + new AttackMove(Moves.TRUMP_CARD, "Trump Card", Type.NORMAL, MoveCategory.SPECIAL, -1, 999, 5, -1, "The lower the PP, the higher the power.", -1, 4), + new StatusMove(Moves.HEAL_BLOCK, "Heal Block", Type.PSYCHIC, 100, 15, -1, "Prevents the opponent from restoring HP for 5 turns.", -1, 4), + new AttackMove(Moves.WRING_OUT, "Wring Out", Type.NORMAL, MoveCategory.SPECIAL, -1, 100, 5, -1, "The higher the opponent's HP, the higher the damage.", -1, 4), + new StatusMove(Moves.POWER_TRICK, "Power Trick", Type.PSYCHIC, -1, 10, -1, "User's own Attack and Defense switch.", -1, 4), + new StatusMove(Moves.GASTRO_ACID, "Gastro Acid", Type.POISON, 100, 10, -1, "Cancels out the effect of the opponent's Ability.", -1, 4), + new StatusMove(Moves.LUCKY_CHANT, "Lucky Chant", Type.NORMAL, -1, 30, -1, "Opponent cannot land critical hits for 5 turns.", -1, 4), + new StatusMove(Moves.ME_FIRST, "Me First", Type.NORMAL, -1, 20, -1, "User copies the opponent's attack with 1.5× power.", -1, 4), + new StatusMove(Moves.COPYCAT, "Copycat", Type.NORMAL, -1, 20, -1, "Copies opponent's last move.", -1, 4), + new StatusMove(Moves.POWER_SWAP, "Power Swap", Type.PSYCHIC, -1, 10, -1, "User and opponent swap Attack and Special Attack.", -1, 4), + new StatusMove(Moves.GUARD_SWAP, "Guard Swap", Type.PSYCHIC, -1, 10, -1, "User and opponent swap Defense and Special Defense.", -1, 4), + new AttackMove(Moves.PUNISHMENT, "Punishment", Type.DARK, MoveCategory.PHYSICAL, -1, 100, 5, -1, "Power increases when opponent's stats have been raised.", -1, 4), + new AttackMove(Moves.LAST_RESORT, "Last Resort", Type.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, "Can only be used after all other moves are used.", -1, 4), + new StatusMove(Moves.WORRY_SEED, "Worry Seed", Type.GRASS, 100, 10, -1, "Changes the opponent's Ability to Insomnia.", -1, 4), + new AttackMove(Moves.SUCKER_PUNCH, "Sucker Punch", Type.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, "User attacks first, but only works if opponent is readying an attack.", -1, 4), + new StatusMove(Moves.TOXIC_SPIKES, "Toxic Spikes", Type.POISON, -1, 20, 91, "Poisons opponents when they switch into battle.", -1, 4), + new StatusMove(Moves.HEART_SWAP, "Heart Swap", Type.PSYCHIC, -1, 10, -1, "Stat changes are swapped with the opponent.", -1, 4), + new StatusMove(Moves.AQUA_RING, "Aqua Ring", Type.WATER, -1, 20, -1, "Restores a little HP each turn.", -1, 4), + new StatusMove(Moves.MAGNET_RISE, "Magnet Rise", Type.ELECTRIC, -1, 10, -1, "User becomes immune to Ground-type moves for 5 turns.", -1, 4), + new AttackMove(Moves.FLARE_BLITZ, "Flare Blitz", Type.FIRE, MoveCategory.PHYSICAL, 120, 100, 15, 165, "User receives recoil damage. May burn opponent.", 10, 4, new StatusEffectAttr(StatusEffect.BURN)), // TODO + new AttackMove(Moves.FORCE_PALM, "Force Palm", Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, "May paralyze opponent.", 30, 4, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.AURA_SPHERE, "Aura Sphere", Type.FIGHTING, MoveCategory.SPECIAL, 80, 999, 20, 112, "Ignores Accuracy and Evasiveness.", -1, 4), + new StatusMove(Moves.ROCK_POLISH, "Rock Polish", Type.ROCK, -1, 20, -1, "Sharply raises user's Speed.", -1, 4, new StatChangeAttr(BattleStat.SPD, 2, true)), + new AttackMove(Moves.POISON_JAB, "Poison Jab", Type.POISON, MoveCategory.PHYSICAL, 80, 100, 20, 83, "May poison the opponent.", 30, 4, new StatusEffectAttr(StatusEffect.POISON)), + new AttackMove(Moves.DARK_PULSE, "Dark Pulse", Type.DARK, MoveCategory.SPECIAL, 80, 100, 15, 94, "May cause flinching.", 20, 4, new FlinchAttr()), + new AttackMove(Moves.NIGHT_SLASH, "Night Slash", Type.DARK, MoveCategory.PHYSICAL, 70, 100, 15, -1, "High critical hit ratio.", -1, 4), + new AttackMove(Moves.AQUA_TAIL, "Aqua Tail", Type.WATER, MoveCategory.PHYSICAL, 90, 90, 10, -1, "", -1, 4), + new AttackMove(Moves.SEED_BOMB, "Seed Bomb", Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 15, 71, "", -1, 4), + new AttackMove(Moves.AIR_SLASH, "Air Slash", Type.FLYING, MoveCategory.SPECIAL, 75, 95, 15, 65, "May cause flinching.", 30, 4, new FlinchAttr()), + new AttackMove(Moves.X_SCISSOR, "X-Scissor", Type.BUG, MoveCategory.PHYSICAL, 80, 100, 15, 105, "", -1, 4), + new AttackMove(Moves.BUG_BUZZ, "Bug Buzz", Type.BUG, MoveCategory.SPECIAL, 90, 100, 10, 162, "May lower opponent's Special Defense.", 10, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), + new AttackMove(Moves.DRAGON_PULSE, "Dragon Pulse", Type.DRAGON, MoveCategory.SPECIAL, 85, 100, 10, 115, "", -1, 4), + new AttackMove(Moves.DRAGON_RUSH, "Dragon Rush", Type.DRAGON, MoveCategory.PHYSICAL, 100, 75, 10, -1, "May cause flinching.", 20, 4, new FlinchAttr()), + new AttackMove(Moves.POWER_GEM, "Power Gem", Type.ROCK, MoveCategory.SPECIAL, 80, 100, 20, 101, "", -1, 4), + new AttackMove(Moves.DRAIN_PUNCH, "Drain Punch", Type.FIGHTING, MoveCategory.PHYSICAL, 75, 100, 10, 73, "User recovers half the HP inflicted on opponent.", -1, 4), + new AttackMove(Moves.VACUUM_WAVE, "Vacuum Wave", Type.FIGHTING, MoveCategory.SPECIAL, 40, 100, 30, -1, "User attacks first.", -1, 4), + new AttackMove(Moves.FOCUS_BLAST, "Focus Blast", Type.FIGHTING, MoveCategory.SPECIAL, 120, 70, 5, 158, "May lower opponent's Special Defense.", 10, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), + new AttackMove(Moves.ENERGY_BALL, "Energy Ball", Type.GRASS, MoveCategory.SPECIAL, 90, 100, 10, 119, "May lower opponent's Special Defense.", 10, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), + new AttackMove(Moves.BRAVE_BIRD, "Brave Bird", Type.FLYING, MoveCategory.PHYSICAL, 120, 100, 15, 164, "User receives recoil damage.", -1, 4), + new AttackMove(Moves.EARTH_POWER, "Earth Power", Type.GROUND, MoveCategory.SPECIAL, 90, 100, 10, 133, "May lower opponent's Special Defense.", 10, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), + new StatusMove(Moves.SWITCHEROO, "Switcheroo", Type.DARK, 100, 10, -1, "Swaps held items with the opponent.", -1, 4), + new AttackMove(Moves.GIGA_IMPACT, "Giga Impact", Type.NORMAL, MoveCategory.PHYSICAL, 150, 90, 5, 152, "User must recharge next turn.", -1, 4), + new StatusMove(Moves.NASTY_PLOT, "Nasty Plot", Type.DARK, -1, 20, 140, "Sharply raises user's Special Attack.", -1, 4, new StatChangeAttr(BattleStat.SPATK, 2, true)), + new AttackMove(Moves.BULLET_PUNCH, "Bullet Punch", Type.STEEL, MoveCategory.PHYSICAL, 40, 100, 30, -1, "User attacks first.", -1, 4), + new AttackMove(Moves.AVALANCHE, "Avalanche", Type.ICE, MoveCategory.PHYSICAL, 60, 100, 10, 46, "Power doubles if user took damage first.", -1, 4), + new AttackMove(Moves.ICE_SHARD, "Ice Shard", Type.ICE, MoveCategory.PHYSICAL, 40, 100, 30, -1, "User attacks first.", -1, 4), + new AttackMove(Moves.SHADOW_CLAW, "Shadow Claw", Type.GHOST, MoveCategory.PHYSICAL, 70, 100, 15, 61, "High critical hit ratio.", -1, 4), + new AttackMove(Moves.THUNDER_FANG, "Thunder Fang", Type.ELECTRIC, MoveCategory.PHYSICAL, 65, 95, 15, 9, "May cause flinching and/or paralyze opponent.", 10, 4, new FlinchAttr(), new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.ICE_FANG, "Ice Fang", Type.ICE, MoveCategory.PHYSICAL, 65, 95, 15, 10, "May cause flinching and/or freeze opponent.", 10, 4, new FlinchAttr(), new StatusEffectAttr(StatusEffect.FREEZE)), + new AttackMove(Moves.FIRE_FANG, "Fire Fang", Type.FIRE, MoveCategory.PHYSICAL, 65, 95, 15, 8, "May cause flinching and/or burn opponent.", 10, 4, new FlinchAttr(), new StatusEffectAttr(StatusEffect.BURN)), + new AttackMove(Moves.SHADOW_SNEAK, "Shadow Sneak", Type.GHOST, MoveCategory.PHYSICAL, 40, 100, 30, -1, "User attacks first.", -1, 4), + new AttackMove(Moves.MUD_BOMB, "Mud Bomb", Type.GROUND, MoveCategory.SPECIAL, 65, 85, 10, -1, "May lower opponent's Accuracy.", 30, 4, new StatChangeAttr(BattleStat.ACC, -1)), + new AttackMove(Moves.PSYCHO_CUT, "Psycho Cut", Type.PSYCHIC, MoveCategory.PHYSICAL, 70, 100, 20, -1, "High critical hit ratio.", -1, 4), + new AttackMove(Moves.ZEN_HEADBUTT, "Zen Headbutt", Type.PSYCHIC, MoveCategory.PHYSICAL, 80, 90, 15, 59, "May cause flinching.", 20, 4, new FlinchAttr()), + new AttackMove(Moves.MIRROR_SHOT, "Mirror Shot", Type.STEEL, MoveCategory.SPECIAL, 65, 85, 10, -1, "May lower opponent's Accuracy.", 30, 4, new StatChangeAttr(BattleStat.ACC, -1)), + new AttackMove(Moves.FLASH_CANNON, "Flash Cannon", Type.STEEL, MoveCategory.SPECIAL, 80, 100, 10, 93, "May lower opponent's Special Defense.", 10, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), + new AttackMove(Moves.ROCK_CLIMB, "Rock Climb", Type.NORMAL, MoveCategory.PHYSICAL, 90, 85, 20, -1, "May confuse opponent.", 20, 4), // TODO + new StatusMove(Moves.DEFOG, "Defog", Type.FLYING, -1, 15, -1, "Lowers opponent's Evasiveness and clears fog.", -1, 4, new StatChangeAttr(BattleStat.EVA, -1)), // TODO + new StatusMove(Moves.TRICK_ROOM, "Trick Room", Type.PSYCHIC, -1, 5, 161, "Slower Pokémon move first in the turn for 5 turns.", -1, 4), + new AttackMove(Moves.DRACO_METEOR, "Draco Meteor", Type.DRAGON, MoveCategory.SPECIAL, 130, 90, 5, 169, "Sharply lowers user's Special Attack.", 100, 4, new StatChangeAttr(BattleStat.SPATK, -2, true)), + new AttackMove(Moves.DISCHARGE, "Discharge", Type.ELECTRIC, MoveCategory.SPECIAL, 80, 100, 15, -1, "May paralyze opponent.", 30, 4, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.LAVA_PLUME, "Lava Plume", Type.FIRE, MoveCategory.SPECIAL, 80, 100, 15, -1, "May burn opponent.", 30, 4, new StatusEffectAttr(StatusEffect.BURN)), + new AttackMove(Moves.LEAF_STORM, "Leaf Storm", Type.GRASS, MoveCategory.SPECIAL, 130, 90, 5, 159, "Sharply lowers user's Special Attack.", 100, 4, new StatChangeAttr(BattleStat.SPATK, -2, true)), + new AttackMove(Moves.POWER_WHIP, "Power Whip", Type.GRASS, MoveCategory.PHYSICAL, 120, 85, 10, -1, "", -1, 4), + new AttackMove(Moves.ROCK_WRECKER, "Rock Wrecker", Type.ROCK, MoveCategory.PHYSICAL, 150, 90, 5, -1, "User must recharge next turn.", -1, 4), + new AttackMove(Moves.CROSS_POISON, "Cross Poison", Type.POISON, MoveCategory.PHYSICAL, 70, 100, 20, -1, "High critical hit ratio. May poison opponent.", 10, 4, new HighCritAttr(), new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.GUNK_SHOT, "Gunk Shot", Type.POISON, MoveCategory.PHYSICAL, 120, 80, 5, 102, "May poison opponent.", 30, 4, new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.IRON_HEAD, "Iron Head", Type.STEEL, MoveCategory.PHYSICAL, 80, 100, 15, 99, "May cause flinching.", 30, 4, new FlinchAttr()), - new Move(Moves.MAGNET_BOMB, "Magnet Bomb", Type.STEEL, MoveCategory.PHYSICAL, 60, 999, 20, -1, "Ignores Accuracy and Evasiveness.", -1, 4), - new Move(Moves.STONE_EDGE, "Stone Edge", Type.ROCK, MoveCategory.PHYSICAL, 100, 80, 5, 150, "High critical hit ratio.", -1, 4, new HighCritAttr()), - new Move(Moves.CAPTIVATE, "Captivate", Type.NORMAL, MoveCategory.STATUS, -1, 100, 20, -1, "Sharply lowers opponent's Special Attack if opposite gender.", -1, 4), // TODO XX - new Move(Moves.STEALTH_ROCK, "Stealth Rock", Type.ROCK, MoveCategory.STATUS, -1, -1, 20, 116, "Damages opponent switching into battle.", -1, 4), - new Move(Moves.GRASS_KNOT, "Grass Knot", Type.GRASS, MoveCategory.SPECIAL, -1, 100, 20, 81, "The heavier the opponent, the stronger the attack.", -1, 4), - new Move(Moves.CHATTER, "Chatter", Type.FLYING, MoveCategory.SPECIAL, 65, 100, 20, -1, "Confuses opponent.", 100, 4), - new Move(Moves.JUDGMENT, "Judgment", Type.NORMAL, MoveCategory.SPECIAL, 100, 100, 10, -1, "Type depends on the Arceus Plate being held.", -1, 4), - new Move(Moves.BUG_BITE, "Bug Bite", Type.BUG, MoveCategory.PHYSICAL, 60, 100, 20, -1, "Receives the effect from the opponent's held berry.", -1, 4), - new Move(Moves.CHARGE_BEAM, "Charge Beam", Type.ELECTRIC, MoveCategory.SPECIAL, 50, 90, 10, 23, "May raise user's Special Attack.", 70, 4, new StatChangeAttr(BattleStat.SPATK, 1, true)), - new Move(Moves.WOOD_HAMMER, "Wood Hammer", Type.GRASS, MoveCategory.PHYSICAL, 120, 100, 15, -1, "User receives recoil damage.", -1, 4), - new Move(Moves.AQUA_JET, "Aqua Jet", Type.WATER, MoveCategory.PHYSICAL, 40, 100, 20, -1, "User attacks first.", -1, 4), - new Move(Moves.ATTACK_ORDER, "Attack Order", Type.BUG, MoveCategory.PHYSICAL, 90, 100, 15, -1, "High critical hit ratio.", -1, 4), - new Move(Moves.DEFEND_ORDER, "Defend Order", Type.BUG, MoveCategory.STATUS, -1, -1, 10, -1, "Raises user's Defense and Special Defense.", -1, 4, + new AttackMove(Moves.GUNK_SHOT, "Gunk Shot", Type.POISON, MoveCategory.PHYSICAL, 120, 80, 5, 102, "May poison opponent.", 30, 4, new StatusEffectAttr(StatusEffect.POISON)), + new AttackMove(Moves.IRON_HEAD, "Iron Head", Type.STEEL, MoveCategory.PHYSICAL, 80, 100, 15, 99, "May cause flinching.", 30, 4, new FlinchAttr()), + new AttackMove(Moves.MAGNET_BOMB, "Magnet Bomb", Type.STEEL, MoveCategory.PHYSICAL, 60, 999, 20, -1, "Ignores Accuracy and Evasiveness.", -1, 4), + new AttackMove(Moves.STONE_EDGE, "Stone Edge", Type.ROCK, MoveCategory.PHYSICAL, 100, 80, 5, 150, "High critical hit ratio.", -1, 4, new HighCritAttr()), + new StatusMove(Moves.CAPTIVATE, "Captivate", Type.NORMAL, 100, 20, -1, "Sharply lowers opponent's Special Attack if opposite gender.", -1, 4), // TODO XX + new StatusMove(Moves.STEALTH_ROCK, "Stealth Rock", Type.ROCK, -1, 20, 116, "Damages opponent switching into battle.", -1, 4), + new AttackMove(Moves.GRASS_KNOT, "Grass Knot", Type.GRASS, MoveCategory.SPECIAL, -1, 100, 20, 81, "The heavier the opponent, the stronger the attack.", -1, 4), + new AttackMove(Moves.CHATTER, "Chatter", Type.FLYING, MoveCategory.SPECIAL, 65, 100, 20, -1, "Confuses opponent.", 100, 4), + new AttackMove(Moves.JUDGMENT, "Judgment", Type.NORMAL, MoveCategory.SPECIAL, 100, 100, 10, -1, "Type depends on the Arceus Plate being held.", -1, 4), + new AttackMove(Moves.BUG_BITE, "Bug Bite", Type.BUG, MoveCategory.PHYSICAL, 60, 100, 20, -1, "Receives the effect from the opponent's held berry.", -1, 4), + new AttackMove(Moves.CHARGE_BEAM, "Charge Beam", Type.ELECTRIC, MoveCategory.SPECIAL, 50, 90, 10, 23, "May raise user's Special Attack.", 70, 4, new StatChangeAttr(BattleStat.SPATK, 1, true)), + new AttackMove(Moves.WOOD_HAMMER, "Wood Hammer", Type.GRASS, MoveCategory.PHYSICAL, 120, 100, 15, -1, "User receives recoil damage.", -1, 4), + new AttackMove(Moves.AQUA_JET, "Aqua Jet", Type.WATER, MoveCategory.PHYSICAL, 40, 100, 20, -1, "User attacks first.", -1, 4), + new AttackMove(Moves.ATTACK_ORDER, "Attack Order", Type.BUG, MoveCategory.PHYSICAL, 90, 100, 15, -1, "High critical hit ratio.", -1, 4), + new StatusMove(Moves.DEFEND_ORDER, "Defend Order", Type.BUG, -1, 10, -1, "Raises user's Defense and Special Defense.", -1, 4, new StatChangeAttr([ BattleStat.DEF, BattleStat.SPDEF ], 1, true)), - new Move(Moves.HEAL_ORDER, "Heal Order", Type.BUG, MoveCategory.STATUS, -1, -1, 10, -1, "User recovers half its max HP.", -1, 4), - new Move(Moves.HEAD_SMASH, "Head Smash", Type.ROCK, MoveCategory.PHYSICAL, 150, 80, 5, -1, "User receives recoil damage.", -1, 4), - new Move(Moves.DOUBLE_HIT, "Double Hit", Type.NORMAL, MoveCategory.PHYSICAL, 35, 90, 10, -1, "Hits twice in one turn.", -1, 4, new MultiHitAttr(MultiHitType._2)), - new Move(Moves.ROAR_OF_TIME, "Roar of Time", Type.DRAGON, MoveCategory.SPECIAL, 150, 90, 5, -1, "User must recharge next turn.", -1, 4), - new Move(Moves.SPACIAL_REND, "Spacial Rend", Type.DRAGON, MoveCategory.SPECIAL, 100, 95, 5, -1, "High critical hit ratio.", -1, 4, new HighCritAttr()), - new Move(Moves.LUNAR_DANCE, "Lunar Dance", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "The user faints but the next Pokémon released is fully healed.", -1, 4), - new Move(Moves.CRUSH_GRIP, "Crush Grip", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, "More powerful when opponent has higher HP.", -1, 4), - new Move(Moves.MAGMA_STORM, "Magma Storm", Type.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 4), - new Move(Moves.DARK_VOID, "Dark Void", Type.DARK, MoveCategory.STATUS, -1, 50, 10, -1, "Puts all adjacent opponents to sleep.", -1, 4, new StatusEffectAttr(StatusEffect.SLEEP)), - new Move(Moves.SEED_FLARE, "Seed Flare", Type.GRASS, MoveCategory.SPECIAL, 120, 85, 5, -1, "May lower opponent's Special Defense.", 40, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), - new Move(Moves.OMINOUS_WIND, "Ominous Wind", Type.GHOST, MoveCategory.SPECIAL, 60, 100, 5, -1, "May raise all user's stats at once.", 10, 4, + new StatusMove(Moves.HEAL_ORDER, "Heal Order", Type.BUG, -1, 10, -1, "User recovers half its max HP.", -1, 4), + new AttackMove(Moves.HEAD_SMASH, "Head Smash", Type.ROCK, MoveCategory.PHYSICAL, 150, 80, 5, -1, "User receives recoil damage.", -1, 4), + new AttackMove(Moves.DOUBLE_HIT, "Double Hit", Type.NORMAL, MoveCategory.PHYSICAL, 35, 90, 10, -1, "Hits twice in one turn.", -1, 4, new MultiHitAttr(MultiHitType._2)), + new AttackMove(Moves.ROAR_OF_TIME, "Roar of Time", Type.DRAGON, MoveCategory.SPECIAL, 150, 90, 5, -1, "User must recharge next turn.", -1, 4), + new AttackMove(Moves.SPACIAL_REND, "Spacial Rend", Type.DRAGON, MoveCategory.SPECIAL, 100, 95, 5, -1, "High critical hit ratio.", -1, 4, new HighCritAttr()), + new StatusMove(Moves.LUNAR_DANCE, "Lunar Dance", Type.PSYCHIC, -1, 10, -1, "The user faints but the next Pokémon released is fully healed.", -1, 4), + new AttackMove(Moves.CRUSH_GRIP, "Crush Grip", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, "More powerful when opponent has higher HP.", -1, 4), + new AttackMove(Moves.MAGMA_STORM, "Magma Storm", Type.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, "Traps opponent, damaging them for 4-5 turns.", 100, 4), + new StatusMove(Moves.DARK_VOID, "Dark Void", Type.DARK, 50, 10, -1, "Puts all adjacent opponents to sleep.", -1, 4, new StatusEffectAttr(StatusEffect.SLEEP)), + new AttackMove(Moves.SEED_FLARE, "Seed Flare", Type.GRASS, MoveCategory.SPECIAL, 120, 85, 5, -1, "May lower opponent's Special Defense.", 40, 4, new StatChangeAttr(BattleStat.SPDEF, -1)), + new AttackMove(Moves.OMINOUS_WIND, "Ominous Wind", Type.GHOST, MoveCategory.SPECIAL, 60, 100, 5, -1, "May raise all user's stats at once.", 10, 4, new StatChangeAttr([ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 1, true)), - new Move(Moves.SHADOW_FORCE, "Shadow Force", Type.GHOST, MoveCategory.PHYSICAL, 120, 100, 5, -1, "Disappears on first turn, attacks on second. Can strike through Protect/Detect.", -1, 4, + new AttackMove(Moves.SHADOW_FORCE, "Shadow Force", Type.GHOST, MoveCategory.PHYSICAL, 120, 100, 5, -1, "Disappears on first turn, attacks on second. Can strike through Protect/Detect.", -1, 4, new ChargeAttr(ChargeAnim.SHADOW_FORCE_CHARGING, 'vanished\ninstantly!')), - new Move(Moves.HONE_CLAWS, "Hone Claws", Type.DARK, MoveCategory.STATUS, -1, -1, 15, -1, "Raises user's Attack and Accuracy.", -1, 5, + new StatusMove(Moves.HONE_CLAWS, "Hone Claws", Type.DARK, -1, 15, -1, "Raises user's Attack and Accuracy.", -1, 5, new StatChangeAttr([ BattleStat.ATK, BattleStat.ACC ], 1, true)), - new Move(Moves.WIDE_GUARD, "Wide Guard", Type.ROCK, MoveCategory.STATUS, -1, -1, 10, -1, "Protects the user's team from multi-target attacks.", -1, 5), - new Move(Moves.GUARD_SPLIT, "Guard Split", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "Averages Defense and Special Defense with the target.", -1, 5), - new Move(Moves.POWER_SPLIT, "Power Split", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "Averages Attack and Special Attack with the target.", -1, 5), - new Move(Moves.WONDER_ROOM, "Wonder Room", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "Swaps every Pokémon's Defense and Special Defense for 5 turns.", -1, 5), - new Move(Moves.PSYSHOCK, "Psyshock", Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 54, "Inflicts damage based on the target's Defense, not Special Defense.", -1, 5), - new Move(Moves.VENOSHOCK, "Venoshock", Type.POISON, MoveCategory.SPECIAL, 65, 100, 10, 45, "Inflicts double damage if the target is poisoned.", -1, 5), - new Move(Moves.AUTOTOMIZE, "Autotomize", Type.STEEL, MoveCategory.STATUS, -1, -1, 15, -1, "Reduces weight and sharply raises Speed.", -1, 5, new StatChangeAttr(BattleStat.SPD, 2, true)), // TODO - new Move(Moves.RAGE_POWDER, "Rage Powder", Type.BUG, MoveCategory.STATUS, -1, -1, 20, -1, "Forces attacks to hit user, not team-mates.", -1, 5), - new Move(Moves.TELEKINESIS, "Telekinesis", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 15, -1, "Ignores opponent's Evasiveness for three turns, add Ground immunity.", -1, 5), - new Move(Moves.MAGIC_ROOM, "Magic Room", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "Suppresses the effects of held items for five turns.", -1, 5), - new Move(Moves.SMACK_DOWN, "Smack Down", Type.ROCK, MoveCategory.PHYSICAL, 50, 100, 15, -1, "Makes Flying-type Pokémon vulnerable to Ground moves.", 100, 5), // TODO, logic with fly - new Move(Moves.STORM_THROW, "Storm Throw", Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, "Always results in a critical hit.", 100, 5), // TODO - new Move(Moves.FLAME_BURST, "Flame Burst", Type.FIRE, MoveCategory.SPECIAL, 70, 100, 15, -1, "May also injure nearby Pokémon.", -1, 5), - new Move(Moves.SLUDGE_WAVE, "Sludge Wave", Type.POISON, MoveCategory.SPECIAL, 95, 100, 10, -1, "May poison opponent.", 10, 5, new StatusEffectAttr(StatusEffect.POISON)), - new Move(Moves.QUIVER_DANCE, "Quiver Dance", Type.BUG, MoveCategory.STATUS, -1, -1, 20, -1, "Raises user's Special Attack, Special Defense and Speed.", -1, 5, + new StatusMove(Moves.WIDE_GUARD, "Wide Guard", Type.ROCK, -1, 10, -1, "Protects the user's team from multi-target attacks.", -1, 5), + new StatusMove(Moves.GUARD_SPLIT, "Guard Split", Type.PSYCHIC, -1, 10, -1, "Averages Defense and Special Defense with the target.", -1, 5), + new StatusMove(Moves.POWER_SPLIT, "Power Split", Type.PSYCHIC, -1, 10, -1, "Averages Attack and Special Attack with the target.", -1, 5), + new StatusMove(Moves.WONDER_ROOM, "Wonder Room", Type.PSYCHIC, -1, 10, -1, "Swaps every Pokémon's Defense and Special Defense for 5 turns.", -1, 5), + new AttackMove(Moves.PSYSHOCK, "Psyshock", Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 54, "Inflicts damage based on the target's Defense, not Special Defense.", -1, 5), + new AttackMove(Moves.VENOSHOCK, "Venoshock", Type.POISON, MoveCategory.SPECIAL, 65, 100, 10, 45, "Inflicts double damage if the target is poisoned.", -1, 5), + new StatusMove(Moves.AUTOTOMIZE, "Autotomize", Type.STEEL, -1, 15, -1, "Reduces weight and sharply raises Speed.", -1, 5, new StatChangeAttr(BattleStat.SPD, 2, true)), // TODO + new StatusMove(Moves.RAGE_POWDER, "Rage Powder", Type.BUG, -1, 20, -1, "Forces attacks to hit user, not team-mates.", -1, 5), + new StatusMove(Moves.TELEKINESIS, "Telekinesis", Type.PSYCHIC, -1, 15, -1, "Ignores opponent's Evasiveness for three turns, add Ground immunity.", -1, 5), + new StatusMove(Moves.MAGIC_ROOM, "Magic Room", Type.PSYCHIC, -1, 10, -1, "Suppresses the effects of held items for five turns.", -1, 5), + new AttackMove(Moves.SMACK_DOWN, "Smack Down", Type.ROCK, MoveCategory.PHYSICAL, 50, 100, 15, -1, "Makes Flying-type Pokémon vulnerable to Ground moves.", 100, 5), // TODO, logic with fly + new AttackMove(Moves.STORM_THROW, "Storm Throw", Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, "Always results in a critical hit.", 100, 5), // TODO + new AttackMove(Moves.FLAME_BURST, "Flame Burst", Type.FIRE, MoveCategory.SPECIAL, 70, 100, 15, -1, "May also injure nearby Pokémon.", -1, 5), + new AttackMove(Moves.SLUDGE_WAVE, "Sludge Wave", Type.POISON, MoveCategory.SPECIAL, 95, 100, 10, -1, "May poison opponent.", 10, 5, new StatusEffectAttr(StatusEffect.POISON)), + new StatusMove(Moves.QUIVER_DANCE, "Quiver Dance", Type.BUG, -1, 20, -1, "Raises user's Special Attack, Special Defense and Speed.", -1, 5, new StatChangeAttr([ BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 1, true)), - new Move(Moves.HEAVY_SLAM, "Heavy Slam", Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, 121, "The heavier the user, the stronger the attack.", -1, 5), - new Move(Moves.SYNCHRONOISE, "Synchronoise", Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, "Hits any Pokémon that shares a type with the user.", -1, 5), - new Move(Moves.ELECTRO_BALL, "Electro Ball", Type.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, 72, "The faster the user, the stronger the attack.", -1, 5), - new Move(Moves.SOAK, "Soak", Type.WATER, MoveCategory.STATUS, -1, 100, 20, -1, "Changes the target's type to water.", -1, 5), - new Move(Moves.FLAME_CHARGE, "Flame Charge", Type.FIRE, MoveCategory.PHYSICAL, 50, 100, 20, 38, "Raises user's Speed.", 100, 5, new StatChangeAttr(BattleStat.SPD, 1, true)), - new Move(Moves.COIL, "Coil", Type.POISON, MoveCategory.STATUS, -1, -1, 20, -1, "Raises user's Attack, Defense and Accuracy.", -1, 5, + new AttackMove(Moves.HEAVY_SLAM, "Heavy Slam", Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, 121, "The heavier the user, the stronger the attack.", -1, 5), + new AttackMove(Moves.SYNCHRONOISE, "Synchronoise", Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, "Hits any Pokémon that shares a type with the user.", -1, 5), + new AttackMove(Moves.ELECTRO_BALL, "Electro Ball", Type.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, 72, "The faster the user, the stronger the attack.", -1, 5), + new StatusMove(Moves.SOAK, "Soak", Type.WATER, 100, 20, -1, "Changes the target's type to water.", -1, 5), + new AttackMove(Moves.FLAME_CHARGE, "Flame Charge", Type.FIRE, MoveCategory.PHYSICAL, 50, 100, 20, 38, "Raises user's Speed.", 100, 5, new StatChangeAttr(BattleStat.SPD, 1, true)), + new StatusMove(Moves.COIL, "Coil", Type.POISON, -1, 20, -1, "Raises user's Attack, Defense and Accuracy.", -1, 5, new StatChangeAttr([ BattleStat.ATK, BattleStat.DEF, BattleStat.ACC ], 1, true)), - new Move(Moves.LOW_SWEEP, "Low Sweep", Type.FIGHTING, MoveCategory.PHYSICAL, 65, 100, 20, 39, "Lowers opponent's Speed.", 100, 5, new StatChangeAttr(BattleStat.SPD, -1)), - new Move(Moves.ACID_SPRAY, "Acid Spray", Type.POISON, MoveCategory.SPECIAL, 40, 100, 20, 13, "Sharply lowers opponent's Special Defense.", 100, 5, new StatChangeAttr(BattleStat.SPDEF, -2)), - new Move(Moves.FOUL_PLAY, "Foul Play", Type.DARK, MoveCategory.PHYSICAL, 95, 100, 15, 62, "Uses the opponent's Attack stat.", -1, 5), - new Move(Moves.SIMPLE_BEAM, "Simple Beam", Type.NORMAL, MoveCategory.STATUS, -1, 100, 15, -1, "Changes target's ability to Simple.", -1, 5), - new Move(Moves.ENTRAINMENT, "Entrainment", Type.NORMAL, MoveCategory.STATUS, -1, 100, 15, -1, "Makes target's ability same as user's.", -1, 5), - new Move(Moves.AFTER_YOU, "After You", Type.NORMAL, MoveCategory.STATUS, -1, -1, 15, -1, "Gives target priority in the next turn.", -1, 5), - new Move(Moves.ROUND, "Round", Type.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, "Power increases if teammates use it in the same turn.", -1, 5), - new Move(Moves.ECHOED_VOICE, "Echoed Voice", Type.NORMAL, MoveCategory.SPECIAL, 40, 100, 15, -1, "Power increases each turn.", -1, 5), - new Move(Moves.CHIP_AWAY, "Chip Away", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, "Ignores opponent's stat changes.", -1, 5), - new Move(Moves.CLEAR_SMOG, "Clear Smog", Type.POISON, MoveCategory.SPECIAL, 50, -1, 15, -1, "Removes all of the target's stat changes.", -1, 5), - new Move(Moves.STORED_POWER, "Stored Power", Type.PSYCHIC, MoveCategory.SPECIAL, 20, 100, 10, 41, "Power increases when user's stats have been raised.", -1, 5), - new Move(Moves.QUICK_GUARD, "Quick Guard", Type.FIGHTING, MoveCategory.STATUS, -1, -1, 15, -1, "Protects the user's team from high-priority moves.", -1, 5), - new Move(Moves.ALLY_SWITCH, "Ally Switch", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 15, -1, "User switches with opposite teammate.", -1, 5), - new Move(Moves.SCALD, "Scald", Type.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, "May burn opponent.", 30, 5, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.SHELL_SMASH, "Shell Smash", Type.NORMAL, MoveCategory.STATUS, -1, -1, 15, -1, "Sharply raises user's Attack, Special Attack and Speed but lowers Defense and Special Defense.", -1, 5, + new AttackMove(Moves.LOW_SWEEP, "Low Sweep", Type.FIGHTING, MoveCategory.PHYSICAL, 65, 100, 20, 39, "Lowers opponent's Speed.", 100, 5, new StatChangeAttr(BattleStat.SPD, -1)), + new AttackMove(Moves.ACID_SPRAY, "Acid Spray", Type.POISON, MoveCategory.SPECIAL, 40, 100, 20, 13, "Sharply lowers opponent's Special Defense.", 100, 5, new StatChangeAttr(BattleStat.SPDEF, -2)), + new AttackMove(Moves.FOUL_PLAY, "Foul Play", Type.DARK, MoveCategory.PHYSICAL, 95, 100, 15, 62, "Uses the opponent's Attack stat.", -1, 5), + new StatusMove(Moves.SIMPLE_BEAM, "Simple Beam", Type.NORMAL, 100, 15, -1, "Changes target's ability to Simple.", -1, 5), + new StatusMove(Moves.ENTRAINMENT, "Entrainment", Type.NORMAL, 100, 15, -1, "Makes target's ability same as user's.", -1, 5), + new StatusMove(Moves.AFTER_YOU, "After You", Type.NORMAL, -1, 15, -1, "Gives target priority in the next turn.", -1, 5), + new AttackMove(Moves.ROUND, "Round", Type.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, -1, "Power increases if teammates use it in the same turn.", -1, 5), + new AttackMove(Moves.ECHOED_VOICE, "Echoed Voice", Type.NORMAL, MoveCategory.SPECIAL, 40, 100, 15, -1, "Power increases each turn.", -1, 5), + new AttackMove(Moves.CHIP_AWAY, "Chip Away", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, "Ignores opponent's stat changes.", -1, 5), + new AttackMove(Moves.CLEAR_SMOG, "Clear Smog", Type.POISON, MoveCategory.SPECIAL, 50, -1, 15, -1, "Removes all of the target's stat changes.", -1, 5), + new AttackMove(Moves.STORED_POWER, "Stored Power", Type.PSYCHIC, MoveCategory.SPECIAL, 20, 100, 10, 41, "Power increases when user's stats have been raised.", -1, 5), + new StatusMove(Moves.QUICK_GUARD, "Quick Guard", Type.FIGHTING, -1, 15, -1, "Protects the user's team from high-priority moves.", -1, 5), + new StatusMove(Moves.ALLY_SWITCH, "Ally Switch", Type.PSYCHIC, -1, 15, -1, "User switches with opposite teammate.", -1, 5), + new AttackMove(Moves.SCALD, "Scald", Type.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, "May burn opponent.", 30, 5, new StatusEffectAttr(StatusEffect.BURN)), + new StatusMove(Moves.SHELL_SMASH, "Shell Smash", Type.NORMAL, -1, 15, -1, "Sharply raises user's Attack, Special Attack and Speed but lowers Defense and Special Defense.", -1, 5, new StatChangeAttr([ BattleStat.ATK, BattleStat.SPATK ], 2, true), new StatChangeAttr([ BattleStat.DEF, BattleStat.SPDEF ], -1, true)), - new Move(Moves.HEAL_PULSE, "Heal Pulse", Type.PSYCHIC, MoveCategory.STATUS, -1, -1, 10, -1, "Restores half the target's max HP.", -1, 5), - new Move(Moves.HEX, "Hex", Type.GHOST, MoveCategory.SPECIAL, 65, 100, 10, 29, "Inflicts more damage if the target has a status condition.", -1, 5), - new Move(Moves.SKY_DROP, "Sky Drop", Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 10, -1, "Takes opponent into the air on first turn, drops them on second turn.", -1, 5, + new StatusMove(Moves.HEAL_PULSE, "Heal Pulse", Type.PSYCHIC, -1, 10, -1, "Restores half the target's max HP.", -1, 5), + new AttackMove(Moves.HEX, "Hex", Type.GHOST, MoveCategory.SPECIAL, 65, 100, 10, 29, "Inflicts more damage if the target has a status condition.", -1, 5), + new AttackMove(Moves.SKY_DROP, "Sky Drop", Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 10, -1, "Takes opponent into the air on first turn, drops them on second turn.", -1, 5, new ChargeAttr(ChargeAnim.SKY_DROP_CHARGING, 'took {TARGET}\ninto the sky!', BattleTagType.FLYING)), // TODO: Add 2nd turn message - new Move(Moves.SHIFT_GEAR, "Shift Gear", Type.STEEL, MoveCategory.STATUS, -1, -1, 10, -1, "Raises user's Attack and sharply raises Speed.", -1, 5, + new StatusMove(Moves.SHIFT_GEAR, "Shift Gear", Type.STEEL, -1, 10, -1, "Raises user's Attack and sharply raises Speed.", -1, 5, new StatChangeAttr(BattleStat.ATK, 1, true), new StatChangeAttr(BattleStat.SPD, 2, true)), - new Move(Moves.CIRCLE_THROW, "Circle Throw", Type.FIGHTING, MoveCategory.PHYSICAL, 60, 90, 10, -1, "In battles, the opponent switches. In the wild, the Pokémon runs.", -1, 5), - new Move(Moves.INCINERATE, "Incinerate", Type.FIRE, MoveCategory.SPECIAL, 60, 100, 15, -1, "Destroys the target's held berry.", -1, 5), - new Move(Moves.QUASH, "Quash", Type.DARK, MoveCategory.STATUS, -1, 100, 15, -1, "Makes the target act last this turn.", -1, 5), - new Move(Moves.ACROBATICS, "Acrobatics", Type.FLYING, MoveCategory.PHYSICAL, 55, 100, 15, 14, "Stronger when the user does not have a held item.", -1, 5), - new Move(Moves.REFLECT_TYPE, "Reflect Type", Type.NORMAL, MoveCategory.STATUS, -1, -1, 15, -1, "User becomes the target's type.", -1, 5), - new Move(Moves.RETALIATE, "Retaliate", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 5, -1, "Inflicts double damage if a teammate fainted on the last turn.", -1, 5), - new Move(Moves.FINAL_GAMBIT, "Final Gambit", Type.FIGHTING, MoveCategory.SPECIAL, -1, 100, 5, -1, "Inflicts damage equal to the user's remaining HP. User faints.", -1, 5), - new Move(Moves.BESTOW, "Bestow", Type.NORMAL, MoveCategory.STATUS, -1, -1, 15, -1, "Gives the user's held item to the target.", -1, 5), - new Move(Moves.INFERNO, "Inferno", Type.FIRE, MoveCategory.SPECIAL, 100, 50, 5, -1, "Burns opponent.", 100, 5, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.WATER_PLEDGE, "Water Pledge", Type.WATER, MoveCategory.SPECIAL, 80, 100, 10, 145, "Added effects appear if preceded by Fire Pledge or succeeded by Grass Pledge.", -1, 5), - new Move(Moves.FIRE_PLEDGE, "Fire Pledge", Type.FIRE, MoveCategory.SPECIAL, 80, 100, 10, 144, "Added effects appear if combined with Grass Pledge or Water Pledge.", -1, 5), - new Move(Moves.GRASS_PLEDGE, "Grass Pledge", Type.GRASS, MoveCategory.SPECIAL, 80, 100, 10, 146, "Added effects appear if preceded by Water Pledge or succeeded by Fire Pledge.", -1, 5), - new Move(Moves.VOLT_SWITCH, "Volt Switch", Type.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, 48, "User must switch out after attacking.", -1, 5), - new Move(Moves.STRUGGLE_BUG, "Struggle Bug", Type.BUG, MoveCategory.SPECIAL, 50, 100, 20, 15, "Lowers opponent's Special Attack.", 100, 5, new StatChangeAttr(BattleStat.SPATK, -1)), - new Move(Moves.BULLDOZE, "Bulldoze", Type.GROUND, MoveCategory.PHYSICAL, 60, 100, 20, 28, "Lowers opponent's Speed.", 100, 5, new StatChangeAttr(BattleStat.SPD, -1)), - new Move(Moves.FROST_BREATH, "Frost Breath", Type.ICE, MoveCategory.SPECIAL, 60, 90, 10, -1, "Always results in a critical hit.", 100, 5), // TODO - new Move(Moves.DRAGON_TAIL, "Dragon Tail", Type.DRAGON, MoveCategory.PHYSICAL, 60, 90, 10, 44, "In battles, the opponent switches. In the wild, the Pokémon runs.", -1, 5), - new Move(Moves.WORK_UP, "Work Up", Type.NORMAL, MoveCategory.STATUS, -1, -1, 30, -1, "Raises user's Attack and Special Attack.", -1, 5, + new AttackMove(Moves.CIRCLE_THROW, "Circle Throw", Type.FIGHTING, MoveCategory.PHYSICAL, 60, 90, 10, -1, "In battles, the opponent switches. In the wild, the Pokémon runs.", -1, 5), + new AttackMove(Moves.INCINERATE, "Incinerate", Type.FIRE, MoveCategory.SPECIAL, 60, 100, 15, -1, "Destroys the target's held berry.", -1, 5), + new StatusMove(Moves.QUASH, "Quash", Type.DARK, 100, 15, -1, "Makes the target act last this turn.", -1, 5), + new AttackMove(Moves.ACROBATICS, "Acrobatics", Type.FLYING, MoveCategory.PHYSICAL, 55, 100, 15, 14, "Stronger when the user does not have a held item.", -1, 5), + new StatusMove(Moves.REFLECT_TYPE, "Reflect Type", Type.NORMAL, -1, 15, -1, "User becomes the target's type.", -1, 5), + new AttackMove(Moves.RETALIATE, "Retaliate", Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 5, -1, "Inflicts double damage if a teammate fainted on the last turn.", -1, 5), + new AttackMove(Moves.FINAL_GAMBIT, "Final Gambit", Type.FIGHTING, MoveCategory.SPECIAL, -1, 100, 5, -1, "Inflicts damage equal to the user's remaining HP. User faints.", -1, 5), + new StatusMove(Moves.BESTOW, "Bestow", Type.NORMAL, -1, 15, -1, "Gives the user's held item to the target.", -1, 5), + new AttackMove(Moves.INFERNO, "Inferno", Type.FIRE, MoveCategory.SPECIAL, 100, 50, 5, -1, "Burns opponent.", 100, 5, new StatusEffectAttr(StatusEffect.BURN)), + new AttackMove(Moves.WATER_PLEDGE, "Water Pledge", Type.WATER, MoveCategory.SPECIAL, 80, 100, 10, 145, "Added effects appear if preceded by Fire Pledge or succeeded by Grass Pledge.", -1, 5), + new AttackMove(Moves.FIRE_PLEDGE, "Fire Pledge", Type.FIRE, MoveCategory.SPECIAL, 80, 100, 10, 144, "Added effects appear if combined with Grass Pledge or Water Pledge.", -1, 5), + new AttackMove(Moves.GRASS_PLEDGE, "Grass Pledge", Type.GRASS, MoveCategory.SPECIAL, 80, 100, 10, 146, "Added effects appear if preceded by Water Pledge or succeeded by Fire Pledge.", -1, 5), + new AttackMove(Moves.VOLT_SWITCH, "Volt Switch", Type.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, 48, "User must switch out after attacking.", -1, 5), + new AttackMove(Moves.STRUGGLE_BUG, "Struggle Bug", Type.BUG, MoveCategory.SPECIAL, 50, 100, 20, 15, "Lowers opponent's Special Attack.", 100, 5, new StatChangeAttr(BattleStat.SPATK, -1)), + new AttackMove(Moves.BULLDOZE, "Bulldoze", Type.GROUND, MoveCategory.PHYSICAL, 60, 100, 20, 28, "Lowers opponent's Speed.", 100, 5, new StatChangeAttr(BattleStat.SPD, -1)), + new AttackMove(Moves.FROST_BREATH, "Frost Breath", Type.ICE, MoveCategory.SPECIAL, 60, 90, 10, -1, "Always results in a critical hit.", 100, 5), // TODO + new AttackMove(Moves.DRAGON_TAIL, "Dragon Tail", Type.DRAGON, MoveCategory.PHYSICAL, 60, 90, 10, 44, "In battles, the opponent switches. In the wild, the Pokémon runs.", -1, 5), + new StatusMove(Moves.WORK_UP, "Work Up", Type.NORMAL, -1, 30, -1, "Raises user's Attack and Special Attack.", -1, 5, new StatChangeAttr([ BattleStat.ATK, BattleStat.SPATK ], 1, true)), - new Move(Moves.ELECTROWEB, "Electroweb", Type.ELECTRIC, MoveCategory.SPECIAL, 55, 95, 15, -1, "Lowers opponent's Speed.", 100, 5, new StatChangeAttr(BattleStat.SPD, -1)), - new Move(Moves.WILD_CHARGE, "Wild Charge", Type.ELECTRIC, MoveCategory.PHYSICAL, 90, 100, 15, 147, "User receives recoil damage.", -1, 5), - new Move(Moves.DRILL_RUN, "Drill Run", Type.GROUND, MoveCategory.PHYSICAL, 80, 95, 10, 106, "High critical hit ratio.", -1, 5), - new Move(Moves.DUAL_CHOP, "Dual Chop", Type.DRAGON, MoveCategory.PHYSICAL, 40, 90, 15, -1, "Hits twice in one turn.", -1, 5, new MultiHitAttr(MultiHitType._2)), - new Move(Moves.HEART_STAMP, "Heart Stamp", Type.PSYCHIC, MoveCategory.PHYSICAL, 60, 100, 25, -1, "May cause flinching.", 30, 5, new FlinchAttr()), - new Move(Moves.HORN_LEECH, "Horn Leech", Type.GRASS, MoveCategory.PHYSICAL, 75, 100, 10, -1, "User recovers half the HP inflicted on opponent.", -1, 5), - new Move(Moves.SACRED_SWORD, "Sacred Sword", Type.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 15, -1, "Ignores opponent's stat changes.", -1, 5), - new Move(Moves.RAZOR_SHELL, "Razor Shell", Type.WATER, MoveCategory.PHYSICAL, 75, 95, 10, -1, "May lower opponent's Defense.", 50, 5, new StatChangeAttr(BattleStat.DEF, -1)), - new Move(Moves.HEAT_CRASH, "Heat Crash", Type.FIRE, MoveCategory.PHYSICAL, -1, 100, 10, -1, "The heavier the user, the stronger the attack.", -1, 5), - new Move(Moves.LEAF_TORNADO, "Leaf Tornado", Type.GRASS, MoveCategory.SPECIAL, 65, 90, 10, -1, "May lower opponent's Accuracy.", 50, 5, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.STEAMROLLER, "Steamroller", Type.BUG, MoveCategory.PHYSICAL, 65, 100, 20, -1, "May cause flinching.", 30, 5, new FlinchAttr()), - new Move(Moves.COTTON_GUARD, "Cotton Guard", Type.GRASS, MoveCategory.STATUS, -1, -1, 10, -1, "Drastically raises user's Defense.", -1, 5, new StatChangeAttr(BattleStat.DEF, 3, true)), - new Move(Moves.NIGHT_DAZE, "Night Daze", Type.DARK, MoveCategory.SPECIAL, 85, 95, 10, -1, "May lower opponent's Accuracy.", 40, 5, new StatChangeAttr(BattleStat.ACC, -1)), - new Move(Moves.PSYSTRIKE, "Psystrike", Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 10, -1, "Inflicts damage based on the target's Defense, not Special Defense.", -1, 5), - new Move(Moves.TAIL_SLAP, "Tail Slap", Type.NORMAL, MoveCategory.PHYSICAL, 25, 85, 10, -1, "Hits 2-5 times in one turn.", -1, 5, new MultiHitAttr()), - new Move(Moves.HURRICANE, "Hurricane", Type.FLYING, MoveCategory.SPECIAL, 110, 70, 10, 160, "May confuse opponent.", 30, 5), - new Move(Moves.HEAD_CHARGE, "Head Charge", Type.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, "User receives recoil damage.", -1, 5), - new Move(Moves.GEAR_GRIND, "Gear Grind", Type.STEEL, MoveCategory.PHYSICAL, 50, 85, 15, -1, "Hits twice in one turn.", -1, 5, new MultiHitAttr(MultiHitType._2)), - new Move(Moves.SEARING_SHOT, "Searing Shot", Type.FIRE, MoveCategory.SPECIAL, 100, 100, 5, -1, "May burn opponent.", 30, 5, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.TECHNO_BLAST, "Techno Blast", Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, "Type depends on the Drive being held.", -1, 5), - new Move(Moves.RELIC_SONG, "Relic Song", Type.NORMAL, MoveCategory.SPECIAL, 75, 100, 10, -1, "May put the target to sleep.", 10, 5, new StatusEffectAttr(StatusEffect.SLEEP)), - new Move(Moves.SECRET_SWORD, "Secret Sword", Type.FIGHTING, MoveCategory.SPECIAL, 85, 100, 10, -1, "Inflicts damage based on the target's Defense, not Special Defense.", -1, 5), - new Move(Moves.GLACIATE, "Glaciate", Type.ICE, MoveCategory.SPECIAL, 65, 95, 10, -1, "Lowers opponent's Speed.", 100, 5, new StatChangeAttr(BattleStat.SPD, -1)), - new Move(Moves.BOLT_STRIKE, "Bolt Strike", Type.ELECTRIC, MoveCategory.PHYSICAL, 130, 85, 5, -1, "May paralyze opponent.", 20, 5, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.BLUE_FLARE, "Blue Flare", Type.FIRE, MoveCategory.SPECIAL, 130, 85, 5, -1, "May burn opponent.", 20, 5, new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.FIERY_DANCE, "Fiery Dance", Type.FIRE, MoveCategory.SPECIAL, 80, 100, 10, -1, "May raise user's Special Attack.", 50, 5, new StatChangeAttr(BattleStat.SPATK, 1, true)), - new Move(Moves.FREEZE_SHOCK, "Freeze Shock", Type.ICE, MoveCategory.PHYSICAL, 140, 90, 5, -1, "Charges on first turn, attacks on second. May paralyze opponent.", 30, 5, new StatusEffectAttr(StatusEffect.PARALYSIS)), - new Move(Moves.ICE_BURN, "Ice Burn", Type.ICE, MoveCategory.SPECIAL, 140, 90, 5, -1, "Charges on first turn, attacks on second. May burn opponent.", 30, 5, + new AttackMove(Moves.ELECTROWEB, "Electroweb", Type.ELECTRIC, MoveCategory.SPECIAL, 55, 95, 15, -1, "Lowers opponent's Speed.", 100, 5, new StatChangeAttr(BattleStat.SPD, -1)), + new AttackMove(Moves.WILD_CHARGE, "Wild Charge", Type.ELECTRIC, MoveCategory.PHYSICAL, 90, 100, 15, 147, "User receives recoil damage.", -1, 5), + new AttackMove(Moves.DRILL_RUN, "Drill Run", Type.GROUND, MoveCategory.PHYSICAL, 80, 95, 10, 106, "High critical hit ratio.", -1, 5), + new AttackMove(Moves.DUAL_CHOP, "Dual Chop", Type.DRAGON, MoveCategory.PHYSICAL, 40, 90, 15, -1, "Hits twice in one turn.", -1, 5, new MultiHitAttr(MultiHitType._2)), + new AttackMove(Moves.HEART_STAMP, "Heart Stamp", Type.PSYCHIC, MoveCategory.PHYSICAL, 60, 100, 25, -1, "May cause flinching.", 30, 5, new FlinchAttr()), + new AttackMove(Moves.HORN_LEECH, "Horn Leech", Type.GRASS, MoveCategory.PHYSICAL, 75, 100, 10, -1, "User recovers half the HP inflicted on opponent.", -1, 5), + new AttackMove(Moves.SACRED_SWORD, "Sacred Sword", Type.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 15, -1, "Ignores opponent's stat changes.", -1, 5), + new AttackMove(Moves.RAZOR_SHELL, "Razor Shell", Type.WATER, MoveCategory.PHYSICAL, 75, 95, 10, -1, "May lower opponent's Defense.", 50, 5, new StatChangeAttr(BattleStat.DEF, -1)), + new AttackMove(Moves.HEAT_CRASH, "Heat Crash", Type.FIRE, MoveCategory.PHYSICAL, -1, 100, 10, -1, "The heavier the user, the stronger the attack.", -1, 5), + new AttackMove(Moves.LEAF_TORNADO, "Leaf Tornado", Type.GRASS, MoveCategory.SPECIAL, 65, 90, 10, -1, "May lower opponent's Accuracy.", 50, 5, new StatChangeAttr(BattleStat.ACC, -1)), + new AttackMove(Moves.STEAMROLLER, "Steamroller", Type.BUG, MoveCategory.PHYSICAL, 65, 100, 20, -1, "May cause flinching.", 30, 5, new FlinchAttr()), + new StatusMove(Moves.COTTON_GUARD, "Cotton Guard", Type.GRASS, -1, 10, -1, "Drastically raises user's Defense.", -1, 5, new StatChangeAttr(BattleStat.DEF, 3, true)), + new AttackMove(Moves.NIGHT_DAZE, "Night Daze", Type.DARK, MoveCategory.SPECIAL, 85, 95, 10, -1, "May lower opponent's Accuracy.", 40, 5, new StatChangeAttr(BattleStat.ACC, -1)), + new AttackMove(Moves.PSYSTRIKE, "Psystrike", Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 10, -1, "Inflicts damage based on the target's Defense, not Special Defense.", -1, 5), + new AttackMove(Moves.TAIL_SLAP, "Tail Slap", Type.NORMAL, MoveCategory.PHYSICAL, 25, 85, 10, -1, "Hits 2-5 times in one turn.", -1, 5, new MultiHitAttr()), + new AttackMove(Moves.HURRICANE, "Hurricane", Type.FLYING, MoveCategory.SPECIAL, 110, 70, 10, 160, "May confuse opponent.", 30, 5), + new AttackMove(Moves.HEAD_CHARGE, "Head Charge", Type.NORMAL, MoveCategory.PHYSICAL, 120, 100, 15, -1, "User receives recoil damage.", -1, 5), + new AttackMove(Moves.GEAR_GRIND, "Gear Grind", Type.STEEL, MoveCategory.PHYSICAL, 50, 85, 15, -1, "Hits twice in one turn.", -1, 5, new MultiHitAttr(MultiHitType._2)), + new AttackMove(Moves.SEARING_SHOT, "Searing Shot", Type.FIRE, MoveCategory.SPECIAL, 100, 100, 5, -1, "May burn opponent.", 30, 5, new StatusEffectAttr(StatusEffect.BURN)), + new AttackMove(Moves.TECHNO_BLAST, "Techno Blast", Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, "Type depends on the Drive being held.", -1, 5), + new AttackMove(Moves.RELIC_SONG, "Relic Song", Type.NORMAL, MoveCategory.SPECIAL, 75, 100, 10, -1, "May put the target to sleep.", 10, 5, new StatusEffectAttr(StatusEffect.SLEEP)), + new AttackMove(Moves.SECRET_SWORD, "Secret Sword", Type.FIGHTING, MoveCategory.SPECIAL, 85, 100, 10, -1, "Inflicts damage based on the target's Defense, not Special Defense.", -1, 5), + new AttackMove(Moves.GLACIATE, "Glaciate", Type.ICE, MoveCategory.SPECIAL, 65, 95, 10, -1, "Lowers opponent's Speed.", 100, 5, new StatChangeAttr(BattleStat.SPD, -1)), + new AttackMove(Moves.BOLT_STRIKE, "Bolt Strike", Type.ELECTRIC, MoveCategory.PHYSICAL, 130, 85, 5, -1, "May paralyze opponent.", 20, 5, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.BLUE_FLARE, "Blue Flare", Type.FIRE, MoveCategory.SPECIAL, 130, 85, 5, -1, "May burn opponent.", 20, 5, new StatusEffectAttr(StatusEffect.BURN)), + new AttackMove(Moves.FIERY_DANCE, "Fiery Dance", Type.FIRE, MoveCategory.SPECIAL, 80, 100, 10, -1, "May raise user's Special Attack.", 50, 5, new StatChangeAttr(BattleStat.SPATK, 1, true)), + new AttackMove(Moves.FREEZE_SHOCK, "Freeze Shock", Type.ICE, MoveCategory.PHYSICAL, 140, 90, 5, -1, "Charges on first turn, attacks on second. May paralyze opponent.", 30, 5, new StatusEffectAttr(StatusEffect.PARALYSIS)), + new AttackMove(Moves.ICE_BURN, "Ice Burn", Type.ICE, MoveCategory.SPECIAL, 140, 90, 5, -1, "Charges on first turn, attacks on second. May burn opponent.", 30, 5, new ChargeAttr(ChargeAnim.ICE_BURN_CHARGING, 'became cloaked\nin freezing air!'), new StatusEffectAttr(StatusEffect.BURN)), - new Move(Moves.SNARL, "Snarl", Type.DARK, MoveCategory.SPECIAL, 55, 95, 15, 30, "Lowers opponent's Special Attack.", 100, 5, new StatChangeAttr(BattleStat.SPATK, -1)), - new Move(Moves.ICICLE_CRASH, "Icicle Crash", Type.ICE, MoveCategory.PHYSICAL, 85, 90, 10, -1, "May cause flinching.", 30, 5, new FlinchAttr()), - new Move(Moves.V_CREATE, "V-create", Type.FIRE, MoveCategory.PHYSICAL, 180, 95, 5, -1, "Lowers user's Defense, Special Defense and Speed.", 100, 5, + new AttackMove(Moves.SNARL, "Snarl", Type.DARK, MoveCategory.SPECIAL, 55, 95, 15, 30, "Lowers opponent's Special Attack.", 100, 5, new StatChangeAttr(BattleStat.SPATK, -1)), + new AttackMove(Moves.ICICLE_CRASH, "Icicle Crash", Type.ICE, MoveCategory.PHYSICAL, 85, 90, 10, -1, "May cause flinching.", 30, 5, new FlinchAttr()), + new AttackMove(Moves.V_CREATE, "V-create", Type.FIRE, MoveCategory.PHYSICAL, 180, 95, 5, -1, "Lowers user's Defense, Special Defense and Speed.", 100, 5, new StatChangeAttr([ BattleStat.DEF, BattleStat.SPDEF, BattleStat.SPD ], 1, true)), - new Move(Moves.FUSION_FLARE, "Fusion Flare", Type.FIRE, MoveCategory.SPECIAL, 100, 100, 5, -1, "Power increases if Fusion Bolt is used in the same turn.", -1, 5), - new Move(Moves.FUSION_BOLT, "Fusion Bolt", Type.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 5, -1, "Power increases if Fusion Flare is used in the same turn.", -1, 5) + new AttackMove(Moves.FUSION_FLARE, "Fusion Flare", Type.FIRE, MoveCategory.SPECIAL, 100, 100, 5, -1, "Power increases if Fusion Bolt is used in the same turn.", -1, 5), + new AttackMove(Moves.FUSION_BOLT, "Fusion Bolt", Type.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 5, -1, "Power increases if Fusion Flare is used in the same turn.", -1, 5) ]; \ No newline at end of file diff --git a/src/pokemon.ts b/src/pokemon.ts index 3b5b3f4ee..1e33bc184 100644 --- a/src/pokemon.ts +++ b/src/pokemon.ts @@ -928,10 +928,10 @@ export class PokemonMove { public ppUp: integer; public disableTurns: integer; - constructor(moveId: Moves, ppUsed: integer, ppUp: integer) { + constructor(moveId: Moves, ppUsed?: integer, ppUp?: integer) { this.moveId = moveId; - this.ppUsed = ppUsed; - this.ppUp = ppUp; + this.ppUsed = ppUsed || 0; + this.ppUp = ppUp || 0; this.disableTurns = 0; } diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index 1270fbc30..f9ada8aec 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -1,3 +1,4 @@ +import { CommandPhase } from "../battle-phases"; import BattleScene, { Button } from "../battle-scene"; import { addTextObject, TextStyle } from "../text"; import { toPokemonUpperCase } from "../utils"; @@ -67,6 +68,10 @@ export default class CommandUiHandler extends UiHandler { ui.setMode(Mode.PARTY, PartyUiMode.SWITCH); success = true; break; + case 3: + (this.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.RUN, 0); + success = true; + break; } } } else {