diff --git a/public/audio/cry/25-gigantamax.m4a b/public/audio/cry/25-gigantamax.m4a index 103504a5657..ea4becab5b8 100644 Binary files a/public/audio/cry/25-gigantamax.m4a and b/public/audio/cry/25-gigantamax.m4a differ diff --git a/public/audio/cry/25.m4a b/public/audio/cry/25.m4a index 103504a5657..ea4becab5b8 100644 Binary files a/public/audio/cry/25.m4a and b/public/audio/cry/25.m4a differ diff --git a/public/battle-anims/common-infestation.json b/public/battle-anims/common-infestation.json new file mode 100644 index 00000000000..35e60fd2c99 --- /dev/null +++ b/public/battle-anims/common-infestation.json @@ -0,0 +1,1966 @@ +{ + "graphic": "PRAS- Struggle Bug", + "frames": [ + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -67.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -71, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 116, + "y": -75, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -67.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -71, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -75, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 125.5, + "y": -52.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 116, + "y": -75, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -71, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -71, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -75, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 152, + "y": -79, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 116, + "y": -75, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -71, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 104, + "y": -63.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 125.5, + "y": -52.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 120, + "y": -44.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -75, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 152, + "y": -79, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 156, + "y": -87, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -71, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 104, + "y": -63.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -55, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 120, + "y": -44.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -40.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 125.5, + "y": -52.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 152, + "y": -79, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 156, + "y": -87, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -95, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 104, + "y": -63.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -55, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 104, + "y": -47, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -40.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 132, + "y": -48.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 120, + "y": -44.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 156, + "y": -87, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -95, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -99, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -55, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 104, + "y": -47, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -39, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 132, + "y": -48.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -56.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -40.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -95, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -99, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 132, + "y": -95, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 104, + "y": -47, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -39, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 116, + "y": -43, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 132, + "y": -48.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -60.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -56.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -99, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 132, + "y": -95, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 120, + "y": -91, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -39, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 116, + "y": -43, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 124, + "y": -47.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -60.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -64.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 132, + "y": -48.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 132, + "y": -95, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 120, + "y": -91, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -87, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 116, + "y": -43, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 124, + "y": -47.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -55.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -64.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -72.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -60.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 120, + "y": -91, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -87, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 96, + "y": -79, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 124, + "y": -47.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -55.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -51.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -72.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -80.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -64.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -87, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 96, + "y": -79, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 100, + "y": -71, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -55.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -51.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -48, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -80.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -88.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -72.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 96, + "y": -79, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 100, + "y": -71, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -63, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -48, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -51.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -44, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -88.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -84.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -80.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 100, + "y": -71, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -63, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 116, + "y": -59, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -48, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -44, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -36, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -84.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 152, + "y": -76.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -80.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 108, + "y": -63, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 116, + "y": -59, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 124, + "y": -67, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -44, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -36, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -44, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 152, + "y": -76.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 160, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -68.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -84.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 116, + "y": -59, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -44, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 124, + "y": -67, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 140, + "y": -36, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -68.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "priority": 1, + "focus": 1 + }, + { + "x": 152, + "y": -76.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 100, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 136, + "y": -44, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 140, + "priority": 1, + "focus": 1 + }, + { + "x": 148, + "y": -68.5, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 140, + "priority": 1, + "focus": 1 + }, + { + "x": 124, + "y": -67, + "zoomX": 100, + "zoomY": 100, + "visible": true, + "target": 2, + "graphicFrame": 0, + "opacity": 140, + "priority": 1, + "focus": 1 + } + ] + ], + "frameTimedEvents": { + "0": [ + { + "frameIndex": 0, + "resourceName": "PRSFX- Infestation.wav", + "volume": 100, + "pitch": 100, + "eventType": "AnimTimedSoundEvent" + } + ] + }, + "position": 1, + "hue": 0 +} \ No newline at end of file diff --git a/public/images/pokemon/icons/778-busted.png b/public/images/pokemon/icons/778-busted.png new file mode 100644 index 00000000000..20bcc0176cd Binary files /dev/null and b/public/images/pokemon/icons/778-busted.png differ diff --git a/public/images/pokemon/icons/778s-busted.png b/public/images/pokemon/icons/778s-busted.png new file mode 100644 index 00000000000..97048167703 Binary files /dev/null and b/public/images/pokemon/icons/778s-busted.png differ diff --git a/public/images/pokemon_icons_7.json b/public/images/pokemon_icons_7.json index 0bfbc817343..a57910d9391 100644 --- a/public/images/pokemon_icons_7.json +++ b/public/images/pokemon_icons_7.json @@ -3055,7 +3055,7 @@ } }, { - "filename": "2074", + "filename": "778-busted", "rotated": false, "trimmed": true, "sourceSize": { @@ -3063,16 +3063,37 @@ "h": 30 }, "spriteSourceSize": { - "x": 8, - "y": 13, - "w": 24, - "h": 15 + "x": 9, + "y": 12, + "w": 21, + "h": 16 }, "frame": { "x": 77, "y": 604, - "w": 24, - "h": 15 + "w": 21, + "h": 16 + } + }, + { + "filename": "789s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 23, + "h": 20 + }, + "frame": { + "x": 79, + "y": 620, + "w": 23, + "h": 20 } }, { @@ -3090,14 +3111,14 @@ "h": 21 }, "frame": { - "x": 79, - "y": 619, + "x": 106, + "y": 566, "w": 23, "h": 21 } }, { - "filename": "758s", + "filename": "2020", "rotated": false, "trimmed": true, "sourceSize": { @@ -3105,18 +3126,39 @@ "h": 30 }, "spriteSourceSize": { - "x": 11, + "x": 8, "y": 6, - "w": 24, + "w": 25, "h": 22 }, "frame": { - "x": 106, - "y": 566, - "w": 24, + "x": 99, + "y": 587, + "w": 25, "h": 22 } }, + { + "filename": "806s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 25 + }, + "frame": { + "x": 102, + "y": 609, + "w": 22, + "h": 25 + } + }, { "filename": "724s", "rotated": false, @@ -3160,7 +3202,7 @@ } }, { - "filename": "2074s", + "filename": "781", "rotated": false, "trimmed": true, "sourceSize": { @@ -3168,20 +3210,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 8, - "y": 13, - "w": 24, - "h": 15 + "x": 11, + "y": 3, + "w": 19, + "h": 25 }, "frame": { - "x": 99, - "y": 588, - "w": 24, - "h": 15 + "x": 124, + "y": 587, + "w": 19, + "h": 25 } }, { - "filename": "767", + "filename": "732s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3190,40 +3232,19 @@ }, "spriteSourceSize": { "x": 10, - "y": 11, - "w": 24, - "h": 14 + "y": 6, + "w": 19, + "h": 22 }, "frame": { - "x": 101, - "y": 603, - "w": 24, - "h": 14 + "x": 124, + "y": 612, + "w": 19, + "h": 22 } }, { - "filename": "2105s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 102, - "y": 617, - "w": 24, - "h": 23 - } - }, - { - "filename": "781", + "filename": "781s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3244,49 +3265,7 @@ } }, { - "filename": "806s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 25 - }, - "frame": { - "x": 186, - "y": 27, - "w": 22, - "h": 25 - } - }, - { - "filename": "745s-midnight", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 208, - "y": 27, - "w": 21, - "h": 24 - } - }, - { - "filename": "2020", + "filename": "2020s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3300,14 +3279,35 @@ "h": 22 }, "frame": { - "x": 229, - "y": 30, + "x": 186, + "y": 27, "w": 25, "h": 22 } }, { - "filename": "781s", + "filename": "741-pau", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 14, + "y": 6, + "w": 18, + "h": 22 + }, + "frame": { + "x": 211, + "y": 27, + "w": 18, + "h": 22 + } + }, + { + "filename": "758s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3316,15 +3316,15 @@ }, "spriteSourceSize": { "x": 11, - "y": 3, - "w": 19, - "h": 25 + "y": 6, + "w": 24, + "h": 22 }, "frame": { - "x": 171, - "y": 53, - "w": 19, - "h": 25 + "x": 229, + "y": 30, + "w": 24, + "h": 22 } }, { @@ -3343,7 +3343,7 @@ }, "frame": { "x": 171, - "y": 78, + "y": 53, "w": 20, "h": 25 } @@ -3364,7 +3364,7 @@ }, "frame": { "x": 171, - "y": 103, + "y": 78, "w": 20, "h": 25 } @@ -3384,14 +3384,14 @@ "h": 24 }, "frame": { - "x": 190, - "y": 52, + "x": 171, + "y": 103, "w": 20, "h": 24 } }, { - "filename": "732s", + "filename": "2051", "rotated": false, "trimmed": true, "sourceSize": { @@ -3399,57 +3399,36 @@ "h": 30 }, "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 210, - "y": 51, - "w": 19, - "h": 22 - } - }, - { - "filename": "2020s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 229, - "y": 52, - "w": 25, - "h": 22 - } - }, - { - "filename": "735s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, + "x": 9, "y": 4, - "w": 20, + "w": 23, "h": 24 }, "frame": { "x": 191, - "y": 76, - "w": 20, + "y": 49, + "w": 23, + "h": 24 + } + }, + { + "filename": "2051s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 23, + "h": 24 + }, + "frame": { + "x": 191, + "y": 73, + "w": 23, "h": 24 } }, @@ -3469,13 +3448,13 @@ }, "frame": { "x": 191, - "y": 100, + "y": 97, "w": 22, "h": 24 } }, { - "filename": "762", + "filename": "746", "rotated": false, "trimmed": true, "sourceSize": { @@ -3484,15 +3463,36 @@ }, "spriteSourceSize": { "x": 12, - "y": 4, + "y": 11, "w": 18, - "h": 23 + "h": 13 }, "frame": { - "x": 211, - "y": 73, + "x": 171, + "y": 127, "w": 18, - "h": 23 + "h": 13 + } + }, + { + "filename": "755", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 14, + "y": 4, + "w": 13, + "h": 24 + }, + "frame": { + "x": 214, + "y": 49, + "w": 13, + "h": 24 } }, { @@ -3510,56 +3510,14 @@ "h": 22 }, "frame": { - "x": 229, - "y": 74, + "x": 227, + "y": 52, "w": 24, "h": 22 } }, { - "filename": "2051", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 213, - "y": 96, - "w": 23, - "h": 24 - } - }, - { - "filename": "762s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 4, - "w": 18, - "h": 23 - }, - "frame": { - "x": 236, - "y": 96, - "w": 18, - "h": 23 - } - }, - { - "filename": "741-pau", + "filename": "755s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3568,19 +3526,19 @@ }, "spriteSourceSize": { "x": 14, - "y": 6, - "w": 18, - "h": 22 + "y": 4, + "w": 13, + "h": 24 }, "frame": { - "x": 236, - "y": 119, - "w": 18, - "h": 22 + "x": 214, + "y": 73, + "w": 13, + "h": 24 } }, { - "filename": "769", + "filename": "2105s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3589,120 +3547,15 @@ }, "spriteSourceSize": { "x": 8, - "y": 6, - "w": 23, - "h": 22 + "y": 5, + "w": 24, + "h": 23 }, "frame": { - "x": 213, - "y": 120, - "w": 23, - "h": 22 - } - }, - { - "filename": "738", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 191, - "y": 124, - "w": 22, - "h": 21 - } - }, - { - "filename": "741s-pau", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 236, - "y": 141, - "w": 18, - "h": 22 - } - }, - { - "filename": "769s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 213, - "y": 142, - "w": 23, - "h": 22 - } - }, - { - "filename": "737", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 18, - "h": 19 - }, - "frame": { - "x": 236, - "y": 163, - "w": 18, - "h": 19 - } - }, - { - "filename": "789s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 23, - "h": 20 - }, - "frame": { - "x": 180, - "y": 145, - "w": 23, - "h": 20 + "x": 227, + "y": 74, + "w": 24, + "h": 23 } }, { @@ -3720,14 +3573,14 @@ "h": 24 }, "frame": { - "x": 185, - "y": 165, + "x": 213, + "y": 97, "w": 22, "h": 24 } }, { - "filename": "802", + "filename": "744", "rotated": false, "trimmed": true, "sourceSize": { @@ -3735,20 +3588,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 13, - "y": 4, - "w": 22, - "h": 24 + "x": 11, + "y": 6, + "w": 19, + "h": 22 }, "frame": { - "x": 185, - "y": 189, - "w": 22, - "h": 24 + "x": 235, + "y": 97, + "w": 19, + "h": 22 } }, { - "filename": "802s", + "filename": "744s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3756,20 +3609,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 13, - "y": 4, - "w": 22, - "h": 24 + "x": 11, + "y": 6, + "w": 19, + "h": 22 }, "frame": { - "x": 185, - "y": 213, - "w": 22, - "h": 24 + "x": 235, + "y": 119, + "w": 19, + "h": 22 } }, { - "filename": "807", + "filename": "735s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3779,39 +3632,18 @@ "spriteSourceSize": { "x": 11, "y": 4, - "w": 22, + "w": 20, "h": 24 }, "frame": { - "x": 185, - "y": 237, - "w": 22, + "x": 180, + "y": 140, + "w": 20, "h": 24 } }, { - "filename": "807s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 22, - "h": 24 - }, - "frame": { - "x": 185, - "y": 261, - "w": 22, - "h": 24 - } - }, - { - "filename": "767s", + "filename": "745s-midnight", "rotated": false, "trimmed": true, "sourceSize": { @@ -3820,80 +3652,17 @@ }, "spriteSourceSize": { "x": 10, - "y": 11, - "w": 24, - "h": 14 + "y": 4, + "w": 21, + "h": 24 }, "frame": { "x": 185, - "y": 285, - "w": 24, - "h": 14 - } - }, - { - "filename": "2051s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 207, "y": 164, - "w": 23, + "w": 21, "h": 24 } }, - { - "filename": "2053s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 24, - "h": 22 - }, - "frame": { - "x": 230, - "y": 182, - "w": 24, - "h": 22 - } - }, - { - "filename": "2670", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 207, - "y": 188, - "w": 23, - "h": 21 - } - }, { "filename": "763", "rotated": false, @@ -3909,8 +3678,8 @@ "h": 24 }, "frame": { - "x": 207, - "y": 209, + "x": 185, + "y": 188, "w": 21, "h": 24 } @@ -3930,8 +3699,8 @@ "h": 24 }, "frame": { - "x": 207, - "y": 233, + "x": 185, + "y": 212, "w": 21, "h": 24 } @@ -3951,14 +3720,14 @@ "h": 24 }, "frame": { - "x": 207, - "y": 257, + "x": 185, + "y": 236, "w": 21, "h": 24 } }, { - "filename": "755", + "filename": "793s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3966,18 +3735,102 @@ "h": 30 }, "spriteSourceSize": { - "x": 14, + "x": 10, "y": 4, - "w": 13, + "w": 21, + "h": 24 + }, + "frame": { + "x": 185, + "y": 260, + "w": 21, + "h": 24 + } + }, + { + "filename": "2074", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 13, + "w": 24, + "h": 15 + }, + "frame": { + "x": 185, + "y": 284, + "w": 24, + "h": 15 + } + }, + { + "filename": "760", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 4, + "w": 17, "h": 24 }, "frame": { "x": 197, "y": 299, - "w": 13, + "w": 17, "h": 24 } }, + { + "filename": "749", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 214, + "y": 121, + "w": 21, + "h": 23 + } + }, + { + "filename": "742", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 5, + "w": 19, + "h": 20 + }, + "frame": { + "x": 235, + "y": 141, + "w": 19, + "h": 20 + } + }, { "filename": "741-sensu", "rotated": false, @@ -4000,28 +3853,7 @@ } }, { - "filename": "757", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 19, - "h": 18 - }, - "frame": { - "x": 209, - "y": 281, - "w": 19, - "h": 18 - } - }, - { - "filename": "793s", + "filename": "749s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4030,19 +3862,124 @@ }, "spriteSourceSize": { "x": 10, - "y": 4, + "y": 5, "w": 21, + "h": 23 + }, + "frame": { + "x": 214, + "y": 144, + "w": 21, + "h": 23 + } + }, + { + "filename": "742s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 5, + "w": 19, + "h": 20 + }, + "frame": { + "x": 235, + "y": 161, + "w": 19, + "h": 20 + } + }, + { + "filename": "802", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 4, + "w": 22, "h": 24 }, "frame": { - "x": 210, - "y": 299, - "w": 21, + "x": 206, + "y": 167, + "w": 22, "h": 24 } }, { - "filename": "2670s", + "filename": "802s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 4, + "w": 22, + "h": 24 + }, + "frame": { + "x": 206, + "y": 191, + "w": 22, + "h": 24 + } + }, + { + "filename": "807", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 22, + "h": 24 + }, + "frame": { + "x": 206, + "y": 215, + "w": 22, + "h": 24 + } + }, + { + "filename": "807s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 22, + "h": 24 + }, + "frame": { + "x": 206, + "y": 239, + "w": 22, + "h": 24 + } + }, + { + "filename": "738", "rotated": false, "trimmed": true, "sourceSize": { @@ -4051,17 +3988,80 @@ }, "spriteSourceSize": { "x": 9, - "y": 7, - "w": 23, + "y": 6, + "w": 22, "h": 21 }, "frame": { - "x": 231, - "y": 204, - "w": 23, + "x": 206, + "y": 263, + "w": 22, "h": 21 } }, + { + "filename": "2053s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 24, + "h": 22 + }, + "frame": { + "x": 228, + "y": 181, + "w": 24, + "h": 22 + } + }, + { + "filename": "769", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 6, + "w": 23, + "h": 22 + }, + "frame": { + "x": 228, + "y": 203, + "w": 23, + "h": 22 + } + }, + { + "filename": "769s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 6, + "w": 23, + "h": 22 + }, + "frame": { + "x": 228, + "y": 225, + "w": 23, + "h": 22 + } + }, { "filename": "782", "rotated": false, @@ -4078,13 +4078,13 @@ }, "frame": { "x": 228, - "y": 225, + "y": 247, "w": 22, "h": 23 } }, { - "filename": "782s", + "filename": "2074s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4092,79 +4092,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 23 + "x": 8, + "y": 13, + "w": 24, + "h": 15 }, "frame": { - "x": 228, - "y": 248, - "w": 22, - "h": 23 - } - }, - { - "filename": "749", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 228, - "y": 271, - "w": 21, - "h": 23 - } - }, - { - "filename": "741s-sensu", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 214, - "y": 323, - "w": 17, - "h": 23 - } - }, - { - "filename": "749s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 231, - "y": 294, - "w": 21, - "h": 23 + "x": 209, + "y": 284, + "w": 24, + "h": 15 } }, { @@ -4182,33 +4119,12 @@ "h": 23 }, "frame": { - "x": 231, - "y": 317, + "x": 233, + "y": 270, "w": 21, "h": 23 } }, - { - "filename": "738s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 131, - "y": 514, - "w": 22, - "h": 21 - } - }, { "filename": "2076s", "rotated": false, @@ -4224,35 +4140,14 @@ "h": 23 }, "frame": { - "x": 129, - "y": 535, + "x": 233, + "y": 293, "w": 21, "h": 23 } }, { - "filename": "743", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 130, - "y": 558, - "w": 20, - "h": 22 - } - }, - { - "filename": "739", + "filename": "757", "rotated": false, "trimmed": true, "sourceSize": { @@ -4261,19 +4156,61 @@ }, "spriteSourceSize": { "x": 11, - "y": 6, - "w": 20, + "y": 9, + "w": 19, + "h": 18 + }, + "frame": { + "x": 214, + "y": 299, + "w": 19, + "h": 18 + } + }, + { + "filename": "2019", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 21, "h": 21 }, "frame": { - "x": 130, - "y": 580, - "w": 20, + "x": 233, + "y": 316, + "w": 21, "h": 21 } }, { - "filename": "747", + "filename": "757s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 9, + "w": 19, + "h": 18 + }, + "frame": { + "x": 214, + "y": 317, + "w": 19, + "h": 18 + } + }, + { + "filename": "790", "rotated": false, "trimmed": true, "sourceSize": { @@ -4283,39 +4220,18 @@ "spriteSourceSize": { "x": 10, "y": 7, - "w": 22, - "h": 20 + "w": 21, + "h": 19 }, "frame": { - "x": 231, - "y": 340, - "w": 22, - "h": 20 + "x": 191, + "y": 121, + "w": 21, + "h": 19 } }, { - "filename": "755s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 4, - "w": 13, - "h": 24 - }, - "frame": { - "x": 150, - "y": 535, - "w": 13, - "h": 24 - } - }, - { - "filename": "760", + "filename": "751", "rotated": false, "trimmed": true, "sourceSize": { @@ -4324,19 +4240,19 @@ }, "spriteSourceSize": { "x": 13, - "y": 4, - "w": 17, - "h": 24 + "y": 8, + "w": 14, + "h": 20 }, "frame": { - "x": 150, - "y": 559, - "w": 17, - "h": 24 + "x": 200, + "y": 140, + "w": 14, + "h": 20 } }, { - "filename": "722", + "filename": "737", "rotated": false, "trimmed": true, "sourceSize": { @@ -4346,18 +4262,18 @@ "spriteSourceSize": { "x": 12, "y": 8, - "w": 17, - "h": 18 + "w": 18, + "h": 19 }, "frame": { - "x": 150, - "y": 583, - "w": 17, - "h": 18 + "x": 214, + "y": 335, + "w": 18, + "h": 19 } }, { - "filename": "739s", + "filename": "782s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4365,15 +4281,78 @@ "h": 30 }, "spriteSourceSize": { - "x": 11, + "x": 9, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 232, + "y": 337, + "w": 22, + "h": 23 + } + }, + { + "filename": "767", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 11, + "w": 24, + "h": 14 + }, + "frame": { + "x": 131, + "y": 514, + "w": 24, + "h": 14 + } + }, + { + "filename": "767s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 11, + "w": 24, + "h": 14 + }, + "frame": { + "x": 128, + "y": 528, + "w": 24, + "h": 14 + } + }, + { + "filename": "738s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, "y": 6, - "w": 20, + "w": 22, "h": 21 }, "frame": { - "x": 153, - "y": 514, - "w": 20, + "x": 129, + "y": 542, + "w": 22, "h": 21 } }, @@ -4392,12 +4371,159 @@ "h": 24 }, "frame": { - "x": 163, - "y": 535, + "x": 129, + "y": 563, "w": 17, "h": 24 } }, + { + "filename": "741s-sensu", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 146, + "y": 563, + "w": 17, + "h": 23 + } + }, + { + "filename": "739", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 6, + "w": 20, + "h": 21 + }, + "frame": { + "x": 151, + "y": 542, + "w": 20, + "h": 21 + } + }, + { + "filename": "762", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 4, + "w": 18, + "h": 23 + }, + "frame": { + "x": 163, + "y": 563, + "w": 18, + "h": 23 + } + }, + { + "filename": "762s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 4, + "w": 18, + "h": 23 + }, + "frame": { + "x": 143, + "y": 587, + "w": 18, + "h": 23 + } + }, + { + "filename": "743", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 161, + "y": 586, + "w": 20, + "h": 22 + } + }, + { + "filename": "741s-pau", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 14, + "y": 6, + "w": 18, + "h": 22 + }, + "frame": { + "x": 143, + "y": 610, + "w": 18, + "h": 22 + } + }, + { + "filename": "743s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 161, + "y": 608, + "w": 20, + "h": 22 + } + }, { "filename": "723", "rotated": false, @@ -4413,8 +4539,8 @@ "h": 22 }, "frame": { - "x": 167, - "y": 559, + "x": 154, + "y": 467, "w": 17, "h": 22 } @@ -4433,48 +4559,6 @@ "w": 17, "h": 22 }, - "frame": { - "x": 167, - "y": 581, - "w": 17, - "h": 22 - } - }, - { - "filename": "731", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 17, - "h": 22 - }, - "frame": { - "x": 154, - "y": 467, - "w": 17, - "h": 22 - } - }, - { - "filename": "731s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 17, - "h": 22 - }, "frame": { "x": 154, "y": 489, @@ -4483,7 +4567,7 @@ } }, { - "filename": "746", + "filename": "722", "rotated": false, "trimmed": true, "sourceSize": { @@ -4492,36 +4576,15 @@ }, "spriteSourceSize": { "x": 12, - "y": 11, - "w": 18, - "h": 13 + "y": 8, + "w": 17, + "h": 18 }, "frame": { - "x": 125, - "y": 601, - "w": 18, - "h": 13 - } - }, - { - "filename": "743s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 126, - "y": 614, - "w": 20, - "h": 22 + "x": 155, + "y": 511, + "w": 17, + "h": 18 } }, { @@ -4539,77 +4602,14 @@ "h": 13 }, "frame": { - "x": 143, - "y": 601, + "x": 152, + "y": 529, "w": 18, "h": 13 } }, { - "filename": "744", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 146, - "y": 614, - "w": 19, - "h": 22 - } - }, - { - "filename": "744s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 165, - "y": 603, - "w": 19, - "h": 22 - } - }, - { - "filename": "771", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 11, - "w": 18, - "h": 13 - }, - "frame": { - "x": 165, - "y": 625, - "w": 18, - "h": 13 - } - }, - { - "filename": "747s", + "filename": "747", "rotated": false, "trimmed": true, "sourceSize": { @@ -4629,6 +4629,48 @@ "h": 20 } }, + { + "filename": "747s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 22, + "h": 20 + }, + "frame": { + "x": 177, + "y": 346, + "w": 22, + "h": 20 + } + }, + { + "filename": "2050", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 10, + "w": 15, + "h": 18 + }, + "frame": { + "x": 199, + "y": 346, + "w": 15, + "h": 18 + } + }, { "filename": "2037", "rotated": false, @@ -4644,8 +4686,8 @@ "h": 21 }, "frame": { - "x": 177, - "y": 346, + "x": 155, + "y": 366, "w": 22, "h": 21 } @@ -4665,14 +4707,14 @@ "h": 21 }, "frame": { - "x": 199, - "y": 346, + "x": 177, + "y": 366, "w": 22, "h": 21 } }, { - "filename": "754", + "filename": "731", "rotated": false, "trimmed": true, "sourceSize": { @@ -4680,60 +4722,18 @@ "h": 30 }, "spriteSourceSize": { - "x": 10, + "x": 12, "y": 6, - "w": 20, + "w": 17, "h": 22 }, "frame": { - "x": 155, - "y": 366, - "w": 20, + "x": 199, + "y": 364, + "w": 17, "h": 22 } }, - { - "filename": "2019", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 21, - "h": 21 - }, - "frame": { - "x": 175, - "y": 367, - "w": 21, - "h": 21 - } - }, - { - "filename": "2019s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 21, - "h": 21 - }, - "frame": { - "x": 196, - "y": 367, - "w": 21, - "h": 21 - } - }, { "filename": "775", "rotated": false, @@ -4750,13 +4750,13 @@ }, "frame": { "x": 155, - "y": 388, + "y": 387, "w": 21, "h": 20 } }, { - "filename": "754s", + "filename": "754", "rotated": false, "trimmed": true, "sourceSize": { @@ -4771,7 +4771,7 @@ }, "frame": { "x": 154, - "y": 408, + "y": 407, "w": 20, "h": 22 } @@ -4792,13 +4792,76 @@ }, "frame": { "x": 176, - "y": 388, + "y": 387, "w": 21, "h": 20 } }, { - "filename": "2052", + "filename": "754s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 20, + "h": 22 + }, + "frame": { + "x": 174, + "y": 407, + "w": 20, + "h": 22 + } + }, + { + "filename": "778s-busted", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 12, + "w": 21, + "h": 16 + }, + "frame": { + "x": 154, + "y": 429, + "w": 21, + "h": 16 + } + }, + { + "filename": "731s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 17, + "h": 22 + }, + "frame": { + "x": 156, + "y": 445, + "w": 17, + "h": 22 + } + }, + { + "filename": "739s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4807,17 +4870,80 @@ }, "spriteSourceSize": { "x": 11, + "y": 6, + "w": 20, + "h": 21 + }, + "frame": { + "x": 175, + "y": 429, + "w": 20, + "h": 21 + } + }, + { + "filename": "779", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, "y": 7, "w": 21, + "h": 20 + }, + "frame": { + "x": 173, + "y": 450, + "w": 21, + "h": 20 + } + }, + { + "filename": "2019s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 21, "h": 21 }, "frame": { - "x": 174, - "y": 408, + "x": 171, + "y": 470, "w": 21, "h": 21 } }, + { + "filename": "779s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 21, + "h": 20 + }, + "frame": { + "x": 171, + "y": 491, + "w": 21, + "h": 20 + } + }, { "filename": "741-pompom", "rotated": false, @@ -4833,14 +4959,98 @@ "h": 20 }, "frame": { - "x": 197, - "y": 388, + "x": 172, + "y": 511, "w": 20, "h": 20 } }, { - "filename": "2052s", + "filename": "761", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 8, + "w": 16, + "h": 19 + }, + "frame": { + "x": 216, + "y": 354, + "w": 16, + "h": 19 + } + }, + { + "filename": "790s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 21, + "h": 19 + }, + "frame": { + "x": 232, + "y": 360, + "w": 21, + "h": 19 + } + }, + { + "filename": "761s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 8, + "w": 16, + "h": 19 + }, + "frame": { + "x": 216, + "y": 373, + "w": 16, + "h": 19 + } + }, + { + "filename": "2027", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 10, + "w": 21, + "h": 18 + }, + "frame": { + "x": 232, + "y": 379, + "w": 21, + "h": 18 + } + }, + { + "filename": "2052", "rotated": false, "trimmed": true, "sourceSize": { @@ -4854,33 +5064,12 @@ "h": 21 }, "frame": { - "x": 195, - "y": 408, + "x": 171, + "y": 531, "w": 21, "h": 21 } }, - { - "filename": "771s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 11, - "w": 18, - "h": 13 - }, - "frame": { - "x": 154, - "y": 430, - "w": 18, - "h": 13 - } - }, { "filename": "778", "rotated": false, @@ -4896,8 +5085,8 @@ "h": 22 }, "frame": { - "x": 156, - "y": 443, + "x": 194, + "y": 407, "w": 17, "h": 22 } @@ -4917,33 +5106,12 @@ "h": 22 }, "frame": { - "x": 217, - "y": 367, + "x": 195, + "y": 429, "w": 17, "h": 22 } }, - { - "filename": "741s-pompom", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 20 - }, - "frame": { - "x": 234, - "y": 360, - "w": 20, - "h": 20 - } - }, { "filename": "728", "rotated": false, @@ -4959,75 +5127,12 @@ "h": 20 }, "frame": { - "x": 217, - "y": 389, + "x": 197, + "y": 387, "w": 17, "h": 20 } }, - { - "filename": "742", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 19, - "h": 20 - }, - "frame": { - "x": 234, - "y": 380, - "w": 19, - "h": 20 - } - }, - { - "filename": "742s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 19, - "h": 20 - }, - "frame": { - "x": 216, - "y": 409, - "w": 19, - "h": 20 - } - }, - { - "filename": "757s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 19, - "h": 18 - }, - "frame": { - "x": 235, - "y": 400, - "w": 19, - "h": 18 - } - }, { "filename": "737s", "rotated": false, @@ -5043,14 +5148,35 @@ "h": 19 }, "frame": { - "x": 235, - "y": 418, + "x": 194, + "y": 451, "w": 18, "h": 19 } }, { - "filename": "779", + "filename": "2052s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 21, + "h": 21 + }, + "frame": { + "x": 192, + "y": 470, + "w": 21, + "h": 21 + } + }, + { + "filename": "741s-pompom", "rotated": false, "trimmed": true, "sourceSize": { @@ -5060,121 +5186,16 @@ "spriteSourceSize": { "x": 10, "y": 7, - "w": 21, + "w": 20, "h": 20 }, "frame": { - "x": 174, - "y": 429, - "w": 21, + "x": 192, + "y": 491, + "w": 20, "h": 20 } }, - { - "filename": "779s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 21, - "h": 20 - }, - "frame": { - "x": 195, - "y": 429, - "w": 21, - "h": 20 - } - }, - { - "filename": "728s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 216, - "y": 429, - "w": 17, - "h": 20 - } - }, - { - "filename": "790", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 21, - "h": 19 - }, - "frame": { - "x": 233, - "y": 437, - "w": 21, - "h": 19 - } - }, - { - "filename": "790s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 21, - "h": 19 - }, - "frame": { - "x": 173, - "y": 449, - "w": 21, - "h": 19 - } - }, - { - "filename": "2027", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 10, - "w": 21, - "h": 18 - }, - "frame": { - "x": 194, - "y": 449, - "w": 21, - "h": 18 - } - }, { "filename": "2027s", "rotated": false, @@ -5190,8 +5211,8 @@ "h": 18 }, "frame": { - "x": 171, - "y": 468, + "x": 192, + "y": 511, "w": 21, "h": 18 } @@ -5211,14 +5232,14 @@ "h": 18 }, "frame": { - "x": 171, - "y": 486, + "x": 192, + "y": 529, "w": 21, "h": 18 } }, { - "filename": "722s", + "filename": "771", "rotated": false, "trimmed": true, "sourceSize": { @@ -5226,16 +5247,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 17, - "h": 18 + "x": 13, + "y": 11, + "w": 18, + "h": 13 }, "frame": { - "x": 215, - "y": 449, - "w": 17, - "h": 18 + "x": 214, + "y": 392, + "w": 18, + "h": 13 } }, { @@ -5254,11 +5275,53 @@ }, "frame": { "x": 232, - "y": 456, + "y": 397, "w": 21, "h": 18 } }, + { + "filename": "771s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 11, + "w": 18, + "h": 13 + }, + "frame": { + "x": 214, + "y": 405, + "w": 18, + "h": 13 + } + }, + { + "filename": "728s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 8, + "w": 17, + "h": 20 + }, + "frame": { + "x": 212, + "y": 418, + "w": 17, + "h": 20 + } + }, { "filename": "741", "rotated": false, @@ -5274,14 +5337,14 @@ "h": 19 }, "frame": { - "x": 173, - "y": 504, + "x": 212, + "y": 438, "w": 17, "h": 19 } }, { - "filename": "751", + "filename": "736", "rotated": false, "trimmed": true, "sourceSize": { @@ -5289,16 +5352,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 14, - "h": 20 + "x": 12, + "y": 12, + "w": 17, + "h": 13 }, "frame": { - "x": 192, - "y": 468, - "w": 14, - "h": 20 + "x": 212, + "y": 457, + "w": 17, + "h": 13 } }, { @@ -5316,8 +5379,8 @@ "h": 19 }, "frame": { - "x": 206, - "y": 467, + "x": 213, + "y": 470, "w": 17, "h": 19 } @@ -5337,12 +5400,54 @@ "h": 20 }, "frame": { - "x": 192, - "y": 488, + "x": 229, + "y": 418, "w": 14, "h": 20 } }, + { + "filename": "753", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 14, + "y": 8, + "w": 14, + "h": 19 + }, + "frame": { + "x": 229, + "y": 438, + "w": 14, + "h": 19 + } + }, + { + "filename": "736s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 12, + "w": 17, + "h": 13 + }, + "frame": { + "x": 229, + "y": 457, + "w": 17, + "h": 13 + } + }, { "filename": "759", "rotated": false, @@ -5358,12 +5463,33 @@ "h": 19 }, "frame": { - "x": 206, - "y": 486, + "x": 230, + "y": 470, "w": 17, "h": 19 } }, + { + "filename": "722s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 8, + "w": 17, + "h": 18 + }, + "frame": { + "x": 192, + "y": 547, + "w": 17, + "h": 18 + } + }, { "filename": "759s", "rotated": false, @@ -5379,33 +5505,12 @@ "h": 19 }, "frame": { - "x": 190, - "y": 508, + "x": 181, + "y": 565, "w": 17, "h": 19 } }, - { - "filename": "761", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 16, - "h": 19 - }, - "frame": { - "x": 207, - "y": 505, - "w": 16, - "h": 19 - } - }, { "filename": "777", "rotated": false, @@ -5421,33 +5526,12 @@ "h": 19 }, "frame": { - "x": 223, - "y": 474, + "x": 181, + "y": 584, "w": 17, "h": 19 } }, - { - "filename": "753", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 8, - "w": 14, - "h": 19 - }, - "frame": { - "x": 240, - "y": 474, - "w": 14, - "h": 19 - } - }, { "filename": "777s", "rotated": false, @@ -5463,75 +5547,12 @@ "h": 19 }, "frame": { - "x": 223, - "y": 493, + "x": 181, + "y": 603, "w": 17, "h": 19 } }, - { - "filename": "753s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 8, - "w": 14, - "h": 19 - }, - "frame": { - "x": 240, - "y": 493, - "w": 14, - "h": 19 - } - }, - { - "filename": "736", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 17, - "h": 13 - }, - "frame": { - "x": 223, - "y": 512, - "w": 17, - "h": 13 - } - }, - { - "filename": "761s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 16, - "h": 19 - }, - "frame": { - "x": 207, - "y": 524, - "w": 16, - "h": 19 - } - }, { "filename": "774-blue", "rotated": false, @@ -5547,12 +5568,33 @@ "h": 18 }, "frame": { - "x": 223, - "y": 525, + "x": 181, + "y": 622, "w": 17, "h": 18 } }, + { + "filename": "753s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 14, + "y": 8, + "w": 14, + "h": 19 + }, + "frame": { + "x": 198, + "y": 565, + "w": 14, + "h": 19 + } + }, { "filename": "774-green", "rotated": false, @@ -5568,33 +5610,12 @@ "h": 18 }, "frame": { - "x": 180, - "y": 527, + "x": 198, + "y": 584, "w": 17, "h": 18 } }, - { - "filename": "736s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 17, - "h": 13 - }, - "frame": { - "x": 180, - "y": 545, - "w": 17, - "h": 13 - } - }, { "filename": "774-indigo", "rotated": false, @@ -5610,8 +5631,8 @@ "h": 18 }, "frame": { - "x": 184, - "y": 558, + "x": 198, + "y": 602, "w": 17, "h": 18 } @@ -5631,8 +5652,8 @@ "h": 18 }, "frame": { - "x": 184, - "y": 576, + "x": 198, + "y": 620, "w": 17, "h": 18 } @@ -5652,8 +5673,8 @@ "h": 18 }, "frame": { - "x": 184, - "y": 594, + "x": 209, + "y": 547, "w": 17, "h": 18 } @@ -5673,8 +5694,8 @@ "h": 18 }, "frame": { - "x": 184, - "y": 612, + "x": 212, + "y": 565, "w": 17, "h": 18 } @@ -5694,8 +5715,8 @@ "h": 18 }, "frame": { - "x": 201, - "y": 543, + "x": 215, + "y": 583, "w": 17, "h": 18 } @@ -5715,29 +5736,8 @@ "h": 18 }, "frame": { - "x": 201, - "y": 561, - "w": 17, - "h": 18 - } - }, - { - "filename": "774s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 18 - }, - "frame": { - "x": 201, - "y": 561, + "x": 215, + "y": 601, "w": 17, "h": 18 } @@ -5757,8 +5757,8 @@ "h": 18 }, "frame": { - "x": 218, - "y": 543, + "x": 215, + "y": 619, "w": 17, "h": 18 } @@ -5778,8 +5778,8 @@ "h": 18 }, "frame": { - "x": 201, - "y": 579, + "x": 212, + "y": 491, "w": 17, "h": 18 } @@ -5799,8 +5799,8 @@ "h": 18 }, "frame": { - "x": 218, - "y": 561, + "x": 229, + "y": 489, "w": 17, "h": 18 } @@ -5820,8 +5820,8 @@ "h": 18 }, "frame": { - "x": 201, - "y": 597, + "x": 213, + "y": 509, "w": 17, "h": 18 } @@ -5841,8 +5841,8 @@ "h": 18 }, "frame": { - "x": 218, - "y": 579, + "x": 213, + "y": 527, "w": 17, "h": 18 } @@ -5862,8 +5862,8 @@ "h": 18 }, "frame": { - "x": 218, - "y": 597, + "x": 230, + "y": 507, "w": 17, "h": 18 } @@ -5883,14 +5883,14 @@ "h": 18 }, "frame": { - "x": 201, - "y": 615, + "x": 230, + "y": 525, "w": 17, "h": 18 } }, { - "filename": "808", + "filename": "774s", "rotated": false, "trimmed": true, "sourceSize": { @@ -5898,36 +5898,15 @@ "h": 30 }, "spriteSourceSize": { - "x": 12, - "y": 11, + "x": 11, + "y": 8, "w": 17, - "h": 17 - }, - "frame": { - "x": 218, - "y": 615, - "w": 17, - "h": 17 - } - }, - { - "filename": "2050", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 10, - "w": 15, "h": 18 }, "frame": { - "x": 235, - "y": 543, - "w": 15, + "x": 226, + "y": 545, + "w": 17, "h": 18 } }, @@ -5946,12 +5925,33 @@ "h": 18 }, "frame": { - "x": 235, - "y": 561, + "x": 229, + "y": 563, "w": 15, "h": 18 } }, + { + "filename": "808", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 11, + "w": 17, + "h": 17 + }, + "frame": { + "x": 232, + "y": 581, + "w": 17, + "h": 17 + } + }, { "filename": "808s", "rotated": false, @@ -5967,8 +5967,8 @@ "h": 17 }, "frame": { - "x": 235, - "y": 579, + "x": 232, + "y": 598, "w": 17, "h": 17 } @@ -5979,6 +5979,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f72305285a06fed16a59cb484bbe84cc:f4fccdeb31a6780c95ee311ebbae5eb0:2e7c5873ead8fd8fce82a0b3fcc86b42$" + "smartupdate": "$TexturePacker:SmartUpdate:c38095b3202450975a37d1aed2dcc8d4:c27a941914c4e4cca37e27cc54ccb54f:2e7c5873ead8fd8fce82a0b3fcc86b42$" } } diff --git a/public/images/pokemon_icons_7.png b/public/images/pokemon_icons_7.png index 5943b9a89f5..88320044867 100644 Binary files a/public/images/pokemon_icons_7.png and b/public/images/pokemon_icons_7.png differ diff --git a/src/battle-scene.ts b/src/battle-scene.ts index c75e44bf694..5f27b8e0ceb 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -126,12 +126,15 @@ export default class BattleScene extends SceneBase { public windowType: integer = 0; public experimentalSprites: boolean = false; public moveAnimations: boolean = true; + public expGainsSpeed: integer = 0; public hpBarSpeed: integer = 0; public fusionPaletteSwaps: boolean = true; public gamepadSupport: boolean = true; public enableTouchControls: boolean = false; public enableVibration: boolean = false; + public disableMenu: boolean = false; + public gameData: GameData; public sessionSlotId: integer; @@ -733,6 +736,8 @@ export default class BattleScene extends SceneBase { this.setSeed(SEED_OVERRIDE || Utils.randomString(24)); console.log('Seed:', this.seed); + this.disableMenu = false; + this.score = 0; this.money = 0; @@ -1234,6 +1239,8 @@ export default class BattleScene extends SceneBase { inputSuccess = this.ui.processInput(Button.CANCEL); this.setLastProcessedMovementTime(Button.CANCEL); } else if (this.buttonJustPressed(Button.MENU)) { + if (this.disableMenu) + return; switch (this.ui?.getMode()) { case Mode.MESSAGE: if (!(this.ui.getHandler() as MessageUiHandler).pendingPrompt) diff --git a/src/data/ability.ts b/src/data/ability.ts index 5e384d46fef..6a73eae4af4 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -202,6 +202,25 @@ export class PreDefendAbAttr extends AbAttr { } } +export class PreDefendFormChangeAbAttr extends PreDefendAbAttr { + private formFunc: (p: Pokemon) => integer; + + constructor(formFunc: ((p: Pokemon) => integer)) { + super(true); + + this.formFunc = formFunc; + } + + applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean { + const formIndex = this.formFunc(pokemon); + if (formIndex !== pokemon.formIndex) { + pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + return true; + } + + return false; + } +} export class PreDefendFullHpEndureAbAttr extends PreDefendAbAttr { applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean { if (pokemon.getHpRatio() < 1 || (args[0] as Utils.NumberHolder).value < pokemon.hp) @@ -235,7 +254,7 @@ export class StabBoostAbAttr extends AbAttr { } export class ReceivedMoveDamageMultiplierAbAttr extends PreDefendAbAttr { - private condition: PokemonDefendCondition; + protected condition: PokemonDefendCondition; private powerMultiplier: number; constructor(condition: PokemonDefendCondition, powerMultiplier: number) { @@ -261,6 +280,21 @@ export class ReceivedTypeDamageMultiplierAbAttr extends ReceivedMoveDamageMultip } } +export class PreDefendMovePowerToOneAbAttr extends ReceivedMoveDamageMultiplierAbAttr { + constructor(condition: PokemonDefendCondition) { + super(condition, 1); + } + + applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean { + if (this.condition(pokemon, attacker, move.getMove())) { + (args[0] as Utils.NumberHolder).value = 1; + return true; + } + + return false; + } +} + export class TypeImmunityAbAttr extends PreDefendAbAttr { private immuneType: Type; private condition: AbAttrCondition; @@ -386,6 +420,43 @@ export class PostDefendAbAttr extends AbAttr { } } +export class PostDefendDisguiseAbAttr extends PostDefendAbAttr { + + applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { + if (pokemon.formIndex == 0 && pokemon.battleData.hitCount != 0 && (move.getMove().category == MoveCategory.SPECIAL || move.getMove().category == MoveCategory.PHYSICAL)) { + + const recoilDamage = Math.ceil((pokemon.getMaxHp() / 8) - attacker.turnData.damageDealt); + if (!recoilDamage) + return false; + pokemon.damageAndUpdate(recoilDamage, HitResult.OTHER); + pokemon.scene.queueMessage(getPokemonMessage(pokemon, '\'s disguise was busted!')); + return true; + } + + return false; + } +} + +export class PostDefendFormChangeAbAttr extends PostDefendAbAttr { + private formFunc: (p: Pokemon) => integer; + + constructor(formFunc: ((p: Pokemon) => integer)) { + super(true); + + this.formFunc = formFunc; + } + + applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { + const formIndex = this.formFunc(pokemon); + if (formIndex !== pokemon.formIndex) { + pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + return true; + } + + return false; + } +} + export class FieldPriorityMoveImmunityAbAttr extends PreDefendAbAttr { applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean { const attackPriority = new Utils.IntegerHolder(move.getMove().priority); @@ -429,6 +500,26 @@ export class MoveImmunityAbAttr extends PreDefendAbAttr { } } +export class MoveImmunityStatChangeAbAttr extends MoveImmunityAbAttr { + private stat: BattleStat; + private levels: integer; + + constructor(immuneCondition: PreDefendAbAttrCondition, stat: BattleStat, levels: integer) { + super(immuneCondition); + this.stat = stat; + this.levels = levels; + } + + applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean { + const ret = super.applyPreDefend(pokemon, passive, attacker, move, cancelled, args) + if (ret) { + pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ this.stat ], this.levels)); + } + + return ret; + } +} + export class PostDefendStatChangeAbAttr extends PostDefendAbAttr { private condition: PokemonDefendCondition; private stat: BattleStat; @@ -454,6 +545,25 @@ export class PostDefendStatChangeAbAttr extends PostDefendAbAttr { } } +export class PostDefendApplyBattlerTagAbAttr extends PostDefendAbAttr { + private condition: PokemonDefendCondition; + private tagType: BattlerTagType; + constructor(condition: PokemonDefendCondition, tagType: BattlerTagType) { + super(true); + + this.condition = condition; + this.tagType = tagType; + } + + applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { + if (this.condition(pokemon, attacker, move.getMove())) { + pokemon.addTag(this.tagType, undefined, undefined, pokemon.id); + return true; + } + return false; + } +} + export class PostDefendTypeChangeAbAttr extends PostDefendAbAttr { applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { if (hitResult < HitResult.NO_EFFECT) { @@ -1979,13 +2089,35 @@ export class SyncEncounterNatureAbAttr extends AbAttr { } export class MoveAbilityBypassAbAttr extends AbAttr { + private moveIgnoreFunc: (pokemon: Pokemon, move: Move) => boolean; + + constructor(moveIgnoreFunc?: (pokemon: Pokemon, move: Move) => boolean) { + super(false); + + this.moveIgnoreFunc = moveIgnoreFunc || ((pokemon, move) => true); + } + + apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { + if (this.moveIgnoreFunc(pokemon, (args[0] as Move))) { + cancelled.value = true; + return true; + } + return false; + } +} + +export class SuppressFieldAbilitiesAbAttr extends AbAttr { constructor() { super(false); } apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { - cancelled.value = true; - return true; + const ability = (args[0] as Ability); + if (!ability.hasAttr(UnsuppressableAbilityAbAttr) && !ability.hasAttr(SuppressFieldAbilitiesAbAttr)) { + cancelled.value = true; + return true; + } + return false; } } @@ -2013,6 +2145,12 @@ export class NoTransformAbilityAbAttr extends AbAttr { } } +export class NoFusionAbilityAbAttr extends AbAttr { + constructor() { + super(false); + } +} + function applyAbAttrsInternal(attrType: { new(...args: any[]): TAttr }, pokemon: Pokemon, applyFunc: AbAttrApplyFunc, args: any[], isAsync: boolean = false, showAbilityInstant: boolean = false, quiet: boolean = false, passive: boolean = false): Promise { return new Promise(resolve => { @@ -2361,7 +2499,8 @@ export function initAbilities() { new Ability(Abilities.PLUS, "Plus (N)", "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.", 3), new Ability(Abilities.MINUS, "Minus (N)", "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.", 3), new Ability(Abilities.FORECAST, "Forecast (N)", "The Pokémon transforms with the weather to change its type to Water, Fire, or Ice.", 3) - .attr(UncopiableAbilityAbAttr), + .attr(UncopiableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.STICKY_HOLD, "Sticky Hold", "Items held by the Pokémon are stuck fast and cannot be removed by other Pokémon.", 3) .attr(BlockItemTheftAbAttr) .bypassFaint() @@ -2454,7 +2593,7 @@ export function initAbilities() { .attr(BattleStatMultiplierAbAttr, BattleStat.SPATK, 1.5) .condition(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN)), new Ability(Abilities.QUICK_FEET, "Quick Feet", "Boosts the Speed stat if the Pokémon has a status condition.", 4) - .conditionalAttr(pokemon => pokemon.status.effect === StatusEffect.PARALYSIS, BattleStatMultiplierAbAttr, BattleStat.SPD, 2) + .conditionalAttr(pokemon => pokemon.status ? pokemon.status.effect === StatusEffect.PARALYSIS : false, BattleStatMultiplierAbAttr, BattleStat.SPD, 2) .conditionalAttr(pokemon => !!pokemon.status, BattleStatMultiplierAbAttr, BattleStat.SPD, 1.5), new Ability(Abilities.NORMALIZE, "Normalize", "All the Pokémon's moves become Normal type. The power of those moves is boosted a little.", 4) .attr(MoveTypeChangeAttr, Type.NORMAL, 1.2, (user, target, move) => move.id !== Moves.HIDDEN_POWER && move.id !== Moves.WEATHER_BALL && @@ -2512,11 +2651,13 @@ export function initAbilities() { new Ability(Abilities.MULTITYPE, "Multitype (N)", "Changes the Pokémon's type to match the Plate or Z-Crystal it holds.", 4) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(UnsuppressableAbilityAbAttr), + .attr(UnsuppressableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.FLOWER_GIFT, "Flower Gift (P)", "Boosts the Attack and Sp. Def stats of itself and allies in harsh sunlight.", 4) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.SPDEF, 1.5) .attr(UncopiableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr) .ignorable(), new Ability(Abilities.BAD_DREAMS, "Bad Dreams (N)", "Reduces the HP of sleeping opposing Pokémon.", 4), new Ability(Abilities.PICKPOCKET, "Pickpocket", "Steals an item from an attacker that made direct contact.", 5) @@ -2591,7 +2732,9 @@ export function initAbilities() { .attr(PostVictoryStatChangeAbAttr, BattleStat.ATK, 1), new Ability(Abilities.JUSTIFIED, "Justified", "Being hit by a Dark-type move boosts the Attack stat of the Pokémon, for justice.", 5) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.type === Type.DARK && move.category !== MoveCategory.STATUS, BattleStat.ATK, 1), - new Ability(Abilities.RATTLED, "Rattled (N)", "Dark-, Ghost-, and Bug-type moves scare the Pokémon and boost its Speed stat.", 5), + new Ability(Abilities.RATTLED, "Rattled (P)", "Intimidate or being hit by a Dark-, Ghost-, or Bug-type move will scare the Pokémon and boost its Speed stat.", 5) + .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS && (move.type === Type.DARK || move.type === Type.BUG || + move.type === Type.GHOST), BattleStat.SPD, 1), new Ability(Abilities.MAGIC_BOUNCE, "Magic Bounce (N)", "Reflects status moves instead of getting hit by them.", 5) .ignorable(), new Ability(Abilities.SAP_SIPPER, "Sap Sipper", "Boosts the Attack stat if hit by a Grass-type move instead of taking damage.", 5) @@ -2614,8 +2757,10 @@ export function initAbilities() { .attr(PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 1 : 0) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(UnsuppressableAbilityAbAttr), - new Ability(Abilities.VICTORY_STAR, "Victory Star (N)", "Boosts the accuracy of its allies and itself.", 5), + .attr(UnsuppressableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), + new Ability(Abilities.VICTORY_STAR, "Victory Star (P)", "Boosts the accuracy of its allies and itself.", 5) + .attr(BattleStatMultiplierAbAttr, BattleStat.ACC, 1.1), new Ability(Abilities.TURBOBLAZE, "Turboblaze", "Moves can be used on the target regardless of its Abilities.", 5) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' is radiating a blazing aura!')) .attr(MoveAbilityBypassAbAttr), @@ -2642,12 +2787,15 @@ export function initAbilities() { .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.BITING_MOVE), 1.5), new Ability(Abilities.REFRIGERATE, "Refrigerate", "Normal-type moves become Ice-type moves. The power of those moves is boosted a little.", 6) .attr(MoveTypeChangePowerMultiplierAbAttr, Type.NORMAL, Type.ICE, 1.2), - new Ability(Abilities.SWEET_VEIL, "Sweet Veil (N)", "Prevents itself and ally Pokémon from falling asleep.", 6) + new Ability(Abilities.SWEET_VEIL, "Sweet Veil (P)", "Prevents itself and ally Pokémon from falling asleep.", 6) + .attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP) + .attr(BattlerTagImmunityAbAttr, BattlerTagType.DROWSY) .ignorable(), new Ability(Abilities.STANCE_CHANGE, "Stance Change", "The Pokémon changes its form to Blade Forme when it uses an attack move and changes to Shield Forme when it uses King's Shield.", 6) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(UnsuppressableAbilityAbAttr), + .attr(UnsuppressableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.GALE_WINGS, "Gale Wings", "Gives priority to Flying-type moves when the Pokémon's HP is full.", 6) .attr(IncrementMovePriorityAbAttr, (pokemon, move) => pokemon.getHpRatio() === 1 && move.type === Type.FLYING), new Ability(Abilities.MEGA_LAUNCHER, "Mega Launcher", "Powers up aura and pulse moves.", 6) @@ -2695,7 +2843,8 @@ export function initAbilities() { .attr(PostTurnFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0)) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(UnsuppressableAbilityAbAttr), + .attr(UnsuppressableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.STAKEOUT, "Stakeout (N)", "Doubles the damage dealt to the target's replacement if the target switches out.", 7), new Ability(Abilities.WATER_BUBBLE, "Water Bubble", "Lowers the power of Fire-type moves done to the Pokémon and prevents the Pokémon from getting a burn.", 7) .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 0.5) @@ -2724,21 +2873,31 @@ export function initAbilities() { .attr(PostTurnFormChangeAbAttr, p => p.level < 20 || p.getHpRatio() <= 0.25 ? 0 : 1) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(UnsuppressableAbilityAbAttr), - new Ability(Abilities.DISGUISE, "Disguise (N)", "Once per battle, the shroud that covers the Pokémon can protect it from an attack.", 7) + .attr(UnsuppressableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), + new Ability(Abilities.DISGUISE, "Disguise (P)", "Once per battle, the shroud that covers the Pokémon can protect it from an attack.", 7) + .attr(PreDefendMovePowerToOneAbAttr, (target, user, move) => target.formIndex == 0 && target.getAttackTypeEffectiveness(move.type) > 0) + .attr(PostSummonFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1) + .attr(PostBattleInitFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1) + .attr(PostDefendFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1) + .attr(PreDefendFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1) + .attr(PostDefendDisguiseAbAttr) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) .attr(NoTransformAbilityAbAttr) + .attr(NoFusionAbilityAbAttr) .ignorable(), new Ability(Abilities.BATTLE_BOND, "Battle Bond (N)", "Defeating an opposing Pokémon strengthens the Pokémon's bond with its Trainer, and it becomes Ash-Greninja. Water Shuriken gets more powerful.", 7) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(UnsuppressableAbilityAbAttr), + .attr(UnsuppressableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.POWER_CONSTRUCT, "Power Construct (N)", "Other Cells gather to aid when its HP becomes half or less. Then the Pokémon changes its form to Complete Forme.", 7) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(UnsuppressableAbilityAbAttr), + .attr(UnsuppressableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.CORROSION, "Corrosion (N)", "The Pokémon can poison the target even if it's a Steel or Poison type.", 7), new Ability(Abilities.COMATOSE, "Comatose (N)", "It's always drowsing and will never wake up. It can attack without waking up.", 7) .attr(UncopiableAbilityAbAttr) @@ -2784,7 +2943,8 @@ export function initAbilities() { new Ability(Abilities.RKS_SYSTEM, "RKS System (N)", "Changes the Pokémon's type to match the memory disc it holds.", 7) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(UnsuppressableAbilityAbAttr), + .attr(UnsuppressableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.ELECTRIC_SURGE, "Electric Surge", "Turns the ground into Electric Terrain when the Pokémon enters a battle.", 7) .attr(PostSummonTerrainChangeAbAttr, TerrainType.ELECTRIC) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC), @@ -2817,7 +2977,8 @@ export function initAbilities() { .ignorable(), new Ability(Abilities.GULP_MISSILE, "Gulp Missile (N)", "When the Pokémon uses Surf or Dive, it will come back with prey. When it takes damage, it will spit out the prey to attack.", 8) .attr(UnsuppressableAbilityAbAttr) - .attr(NoTransformAbilityAbAttr), + .attr(NoTransformAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.STALWART, "Stalwart (N)", "Ignores the effects of opposing Pokémon's Abilities and moves that draw in moves.", 8), new Ability(Abilities.STEAM_ENGINE, "Steam Engine", "Boosts the Pokémon's Speed stat drastically if hit by a Fire- or Water-type move.", 8) .attr(PostDefendStatChangeAbAttr, (target, user, move) => (move.type === Type.FIRE || move.type === Type.WATER) && move.category !== MoveCategory.STATUS, BattleStat.SPD, 6), @@ -2837,6 +2998,7 @@ export function initAbilities() { .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) .attr(NoTransformAbilityAbAttr) + .attr(NoFusionAbilityAbAttr) .ignorable(), new Ability(Abilities.POWER_SPOT, "Power Spot (N)", "Just being next to the Pokémon powers up moves.", 8), new Ability(Abilities.MIMICRY, "Mimicry (N)", "Changes the Pokémon's type depending on the terrain.", 8), @@ -2847,7 +3009,8 @@ export function initAbilities() { .attr(PostDefendAbilitySwapAbAttr) .bypassFaint(), new Ability(Abilities.GORILLA_TACTICS, "Gorilla Tactics (N)", "Boosts the Pokémon's Attack stat but only allows the use of the first selected move.", 8), - new Ability(Abilities.NEUTRALIZING_GAS, "Neutralizing Gas (N)", "If the Pokémon with Neutralizing Gas is in the battle, the effects of all Pokémon's Abilities will be nullified or will not be triggered.", 8) + new Ability(Abilities.NEUTRALIZING_GAS, "Neutralizing Gas (P)", "If the Pokémon with Neutralizing Gas is in the battle, the effects of all Pokémon's Abilities will be nullified or will not be triggered.", 8) + .attr(SuppressFieldAbilitiesAbAttr) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(NoTransformAbilityAbAttr), @@ -2859,7 +3022,8 @@ export function initAbilities() { .attr(PostTurnFormChangeAbAttr, p => p.getFormKey ? 1 : 0) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(NoTransformAbilityAbAttr), + .attr(NoTransformAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.QUICK_DRAW, "Quick Draw (N)", "Enables the Pokémon to move first occasionally.", 8), new Ability(Abilities.UNSEEN_FIST, "Unseen Fist (N)", "If the Pokémon uses moves that make direct contact, it can attack the target even if the target protects itself.", 8), new Ability(Abilities.CURIOUS_MEDICINE, "Curious Medicine (N)", "When the Pokémon enters a battle, it scatters medicine from its shell, which removes all stat changes from allies.", 8), @@ -2889,7 +3053,7 @@ export function initAbilities() { new Ability(Abilities.SEED_SOWER, "Seed Sower", "Turns the ground into Grassy Terrain when the Pokémon is hit by an attack.", 9) .attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY), new Ability(Abilities.THERMAL_EXCHANGE, "Thermal Exchange", "Boosts the Attack stat when the Pokémon is hit by a Fire-type move. The Pokémon also cannot be burned.", 9) - .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.type === Type.FIRE, BattleStat.ATK, 1) + .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.type === Type.FIRE && move.category !== MoveCategory.STATUS, BattleStat.ATK, 1) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .ignorable(), new Ability(Abilities.ANGER_SHELL, "Anger Shell (N)", "When an attack causes its HP to drop to half or less, the Pokémon gets angry. This lowers its Defense and Sp. Def stats but boosts its Attack, Sp. Atk, and Speed stats.", 9), @@ -2900,22 +3064,26 @@ export function initAbilities() { new Ability(Abilities.WELL_BAKED_BODY, "Well-Baked Body", "The Pokémon takes no damage when hit by Fire-type moves. Instead, its Defense stat is sharply boosted.", 9) .attr(TypeImmunityStatChangeAbAttr, Type.FIRE, BattleStat.DEF, 2) .ignorable(), - new Ability(Abilities.WIND_RIDER, "Wind Rider (N)", "Boosts the Pokémon's Attack stat if Tailwind takes effect or if the Pokémon is hit by a wind move. The Pokémon also takes no damage from wind moves.", 9) + new Ability(Abilities.WIND_RIDER, "Wind Rider (P)", "Boosts the Pokémon's Attack stat if Tailwind takes effect or if the Pokémon is hit by a wind move. The Pokémon also takes no damage from wind moves.", 9) + .attr(MoveImmunityStatChangeAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.getMove().hasFlag(MoveFlags.WIND_MOVE), BattleStat.ATK, 1) .ignorable(), new Ability(Abilities.GUARD_DOG, "Guard Dog (N)", "Boosts the Pokémon's Attack stat if intimidated. Moves and items that would force the Pokémon to switch out also fail to work.", 9) .ignorable(), new Ability(Abilities.ROCKY_PAYLOAD, "Rocky Payload", "Powers up Rock-type moves.", 9) .attr(MoveTypePowerBoostAbAttr, Type.ROCK), - new Ability(Abilities.WIND_POWER, "Wind Power (N)", "The Pokémon becomes charged when it is hit by a wind move, boosting the power of the next Electric-type move the Pokémon uses.", 9), + new Ability(Abilities.WIND_POWER, "Wind Power (P)", "The Pokémon becomes charged when it is hit by a wind move, boosting the power of the next Electric-type move the Pokémon uses.", 9) + .attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.hasFlag(MoveFlags.WIND_MOVE), BattlerTagType.CHARGED), new Ability(Abilities.ZERO_TO_HERO, "Zero to Hero (N)", "The Pokémon transforms into its Hero Form when it switches out.", 9) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) - .attr(NoTransformAbilityAbAttr), + .attr(NoTransformAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.COMMANDER, "Commander (N)", "When the Pokémon enters a battle, it goes inside the mouth of an ally Dondozo if one is on the field. The Pokémon then issues commands from there.", 9) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr), - new Ability(Abilities.ELECTROMORPHOSIS, "Electromorphosis (N)", "The Pokémon becomes charged when it takes damage, boosting the power of the next Electric-type move the Pokémon uses.", 9), + new Ability(Abilities.ELECTROMORPHOSIS, "Electromorphosis", "The Pokémon becomes charged when it takes damage, boosting the power of the next Electric-type move the Pokémon uses.", 9) + .attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, BattlerTagType.CHARGED), new Ability(Abilities.PROTOSYNTHESIS, "Protosynthesis", "Boosts the Pokémon's most proficient stat in harsh sunlight or if the Pokémon is holding Booster Energy.", 9) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN), PostSummonAddBattlerTagAbAttr, BattlerTagType.PROTOSYNTHESIS, 0, true) .attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN) @@ -2960,7 +3128,8 @@ export function initAbilities() { new Ability(Abilities.EARTH_EATER, "Earth Eater", "If hit by a Ground-type move, the Pokémon has its HP restored instead of taking damage.", 9) .attr(TypeImmunityHealAbAttr, Type.GROUND) .ignorable(), - new Ability(Abilities.MYCELIUM_MIGHT, "Mycelium Might (N)", "The Pokémon will always act more slowly when using status moves, but these moves will be unimpeded by the Ability of the target.", 9), + new Ability(Abilities.MYCELIUM_MIGHT, "Mycelium Might (P)", "The Pokémon will always act more slowly when using status moves, but these moves will be unimpeded by the Ability of the target.", 9) + .attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS), new Ability(Abilities.MINDS_EYE, "Mind's Eye (N)", "The Pokémon ignores changes to opponents' evasiveness, its accuracy can't be lowered, and it can hit Ghost types with Normal- and Fighting-type moves.", 9) .ignorable(), new Ability(Abilities.SUPERSWEET_SYRUP, "Supersweet Syrup (N)", "A sickly sweet scent spreads across the field the first time the Pokémon enters a battle, lowering the evasiveness of opposing Pokémon.", 9), @@ -2992,7 +3161,8 @@ export function initAbilities() { .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) - .attr(NoTransformAbilityAbAttr), + .attr(NoTransformAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), new Ability(Abilities.TERA_SHELL, "Tera Shell (N)", "The Pokémon's shell contains the powers of each type. All damage-dealing moves that hit the Pokémon when its HP is full will not be very effective.", 9) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 2f6305862d8..642cc72404a 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -175,7 +175,7 @@ class MudSportTag extends WeakenMoveTypeTag { } onRemove(arena: Arena): void { - arena.scene.queueMessage('The effects of MUD SPORT\nhave faded.'); + arena.scene.queueMessage('The effects of Mud Sport\nhave faded.'); } } @@ -189,7 +189,7 @@ class WaterSportTag extends WeakenMoveTypeTag { } onRemove(arena: Arena): void { - arena.scene.queueMessage('The effects of WATER SPORT\nhave faded.'); + arena.scene.queueMessage('The effects of Water Sport\nhave faded.'); } } diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index 572738fd25f..ee084b38a9e 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -79,6 +79,7 @@ export enum CommonAnim { MAGMA_STORM, CLAMP, THUNDER_CAGE, + INFESTATION, ORDER_UP_CURLY, ORDER_UP_DROOPY, ORDER_UP_STRETCHY, diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 15dc357a4c3..5d4c1c94d89 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -613,6 +613,16 @@ export class ThunderCageTag extends DamagingTrapTag { } } +export class InfestationTag extends DamagingTrapTag { + constructor(turnCount: integer, sourceId: integer) { + super(BattlerTagType.INFESTATION, CommonAnim.INFESTATION, turnCount, Moves.INFESTATION, sourceId); + } + + getTrapMessage(pokemon: Pokemon): string { + return getPokemonMessage(pokemon, ` has been afflicted \nwith an infestation by ${getPokemonPrefix(pokemon.scene.getPokemonById(this.sourceId))}${pokemon.scene.getPokemonById(this.sourceId).name}!`); + } +} + export class ProtectedTag extends BattlerTag { constructor(sourceMove: Moves, tagType: BattlerTagType = BattlerTagType.PROTECTED) { @@ -922,11 +932,15 @@ export class HideSpriteTag extends BattlerTag { export class TypeBoostTag extends BattlerTag { public boostedType: Type; + public boostValue: number; + public oneUse: boolean; - constructor(tagType: BattlerTagType, sourceMove: Moves, boostedType: Type) { + constructor(tagType: BattlerTagType, sourceMove: Moves, boostedType: Type, boostValue: number, oneUse: boolean) { super(tagType, BattlerTagLapseType.TURN_END, 1, sourceMove); this.boostedType = boostedType; + this.boostValue = boostValue; + this.oneUse = oneUse; } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -1047,6 +1061,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc return new MagmaStormTag(turnCount, sourceId); case BattlerTagType.THUNDER_CAGE: return new ThunderCageTag(turnCount, sourceId); + case BattlerTagType.INFESTATION: + return new InfestationTag(turnCount, sourceId); case BattlerTagType.PROTECTED: return new ProtectedTag(sourceMove); case BattlerTagType.SPIKY_SHIELD: @@ -1081,7 +1097,7 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc case BattlerTagType.HIDDEN: return new HideSpriteTag(tagType, turnCount, sourceMove); case BattlerTagType.FIRE_BOOST: - return new TypeBoostTag(tagType, sourceMove, Type.FIRE); + return new TypeBoostTag(tagType, sourceMove, Type.FIRE, 1.5, false); case BattlerTagType.CRIT_BOOST: return new CritBoostTag(tagType, sourceMove); case BattlerTagType.ALWAYS_CRIT: @@ -1098,6 +1114,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount - 1, sourceMove); case BattlerTagType.SALT_CURED: return new SaltCuredTag(sourceId); + case BattlerTagType.CHARGED: + return new TypeBoostTag(tagType, sourceMove, Type.ELECTRIC, 2, true); case BattlerTagType.NONE: default: return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); diff --git a/src/data/biomes.ts b/src/data/biomes.ts index e440321c73f..1bea78f3e50 100644 --- a/src/data/biomes.ts +++ b/src/data/biomes.ts @@ -4144,7 +4144,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ], [ Species.MIME_JR, Type.PSYCHIC, Type.FAIRY, [ ] ], - [ Species.HAPPINY, Type.NORMAL, -1, [] + [ Species.HAPPINY, Type.NORMAL, -1, [ ] ], [ Species.CHATOT, Type.NORMAL, Type.FLYING, [ [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ] @@ -6057,7 +6057,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { [ Biome.SEABED, BiomePoolTier.BOSS ] ] ], - [ Species.TOXEL, Type.ELECTRIC, Type.POISON, [] + [ Species.TOXEL, Type.ELECTRIC, Type.POISON, [ ] ], [ Species.TOXTRICITY, Type.ELECTRIC, Type.POISON, [ [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], diff --git a/src/data/egg-moves.ts b/src/data/egg-moves.ts index 1413bc4bf41..9adfc3e17e7 100644 --- a/src/data/egg-moves.ts +++ b/src/data/egg-moves.ts @@ -26,7 +26,7 @@ export const speciesEggMoves = { [Species.MEOWTH]: [ Moves.COVET, Moves.HAPPY_HOUR, Moves.PARTING_SHOT, Moves.MAKE_IT_RAIN ], [Species.PSYDUCK]: [ Moves.MYSTICAL_POWER, Moves.AQUA_STEP, Moves.PSYCHIC, Moves.MIND_BLOWN ], [Species.MANKEY]: [ Moves.BEAT_UP, Moves.PLAY_ROUGH, Moves.TAUNT, Moves.CLOSE_COMBAT ], - [Species.GROWLITHE]: [ Moves.THUNDER_FANG, Moves.HYPER_VOICE, Moves.NOBLE_ROAR, Moves.RAGING_FURY ], + [Species.GROWLITHE]: [ Moves.TRAILBLAZE, Moves.U_TURN, Moves.MORNING_SUN, Moves.V_CREATE ], [Species.POLIWAG]: [ Moves.BOUNCY_BUBBLE, Moves.AURORA_BEAM, Moves.ZEN_HEADBUTT, Moves.SURGING_STRIKES ], [Species.ABRA]: [ Moves.MYSTICAL_FIRE, Moves.HEX, Moves.MAGICAL_LEAF, Moves.MYSTICAL_POWER ], [Species.MACHOP]: [ Moves.BULLET_PUNCH, Moves.KNOCK_OFF, Moves.COACHING, Moves.CLOSE_COMBAT ], @@ -41,7 +41,7 @@ export const speciesEggMoves = { [Species.SEEL]: [ Moves.FREEZE_DRY, Moves.CHILLING_WATER, Moves.ENCORE, Moves.RECOVER ], [Species.GRIMER]: [ Moves.SHADOW_SNEAK, Moves.CURSE, Moves.CORROSIVE_GAS, Moves.PAIN_SPLIT ], [Species.SHELLDER]: [ Moves.BODY_PRESS, Moves.WATER_SHURIKEN, Moves.BANEFUL_BUNKER, Moves.RECOVER ], - [Species.GASTLY]: [ Moves.CLEAR_SMOG, Moves.THIEF, Moves.NASTY_PLOT, Moves.SPECTRAL_THIEF ], + [Species.GASTLY]: [ Moves.CLEAR_SMOG, Moves.NIGHT_DAZE, Moves.NASTY_PLOT, Moves.SPECTRAL_THIEF ], [Species.ONIX]: [ Moves.SHORE_UP, Moves.DRAGON_TAIL, Moves.HEAD_SMASH, Moves.BODY_PRESS ], [Species.DROWZEE]: [ Moves.DREAM_EATER, Moves.METRONOME, Moves.NIGHTMARE, Moves.SYNCHRONOISE ], [Species.KRABBY]: [ Moves.CRUSH_GRIP, Moves.CEASELESS_EDGE, Moves.SHORE_UP, Moves.SHELL_SMASH ], @@ -72,7 +72,7 @@ export const speciesEggMoves = { [Species.DRATINI]: [ Moves.SCALE_SHOT, Moves.AQUA_JET, Moves.WHIRLWIND, Moves.SHED_TAIL ], [Species.MEWTWO]: [ Moves.PSYBLADE, Moves.POLTERGEIST, Moves.ARMOR_CANNON, Moves.PSYCHO_BOOST ], [Species.MEW]: [ Moves.PSYSTRIKE, Moves.DECORATE, Moves.REVIVAL_BLESSING, Moves.SKETCH ], - [Species.CHIKORITA]: [ Moves.ROCK_SLIDE, Moves.LUNGE, Moves.DRAGON_DANCE, Moves.SAPPY_SEED ], + [Species.CHIKORITA]: [ Moves.ROCK_SLIDE, Moves.PLAY_ROUGH, Moves.DRAGON_DANCE, Moves.SAPPY_SEED ], [Species.CYNDAQUIL]: [ Moves.EXTRASENSORY, Moves.SCORCHING_SANDS, Moves.FIERY_DANCE, Moves.NASTY_PLOT ], [Species.TOTODILE]: [ Moves.AQUA_JET, Moves.DRAGON_DANCE, Moves.ICE_PUNCH, Moves.WAVE_CRASH ], [Species.SENTRET]: [ Moves.TIDY_UP, Moves.TAIL_SLAP, Moves.ENCORE, Moves.EXTREME_SPEED ], @@ -149,7 +149,7 @@ export const speciesEggMoves = { [Species.MAWILE]: [ Moves.SPIRIT_BREAK, Moves.JAW_LOCK, Moves.HYPER_FANG, Moves.HARD_PRESS ], [Species.ARON]: [ Moves.HEAD_SMASH, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.BEHEMOTH_BASH ], [Species.MEDITITE]: [ Moves.TRAILBLAZE, Moves.FAKE_OUT, Moves.BULLET_PUNCH, Moves.PSYBLADE ], - [Species.ELECTRIKE]: [ Moves.NUZZLE, Moves.JAW_LOCK, Moves.FLAME_CHARGE, Moves.WILDBOLT_STORM ], + [Species.ELECTRIKE]: [ Moves.NUZZLE, Moves.TEMPER_FLARE, Moves.TRAILBLAZE, Moves.WILDBOLT_STORM ], [Species.PLUSLE]: [ Moves.FLAMETHROWER, Moves.PARABOLIC_CHARGE, Moves.ALLURING_VOICE, Moves.TAIL_GLOW ], [Species.MINUN]: [ Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE, Moves.ALLURING_VOICE, Moves.TAIL_GLOW ], [Species.VOLBEAT]: [ Moves.FLAME_CHARGE, Moves.LUNGE, Moves.ACROBATICS, Moves.VICTORY_DANCE ], @@ -198,66 +198,66 @@ export const speciesEggMoves = { [Species.RAYQUAZA]: [ Moves.OBLIVION_WING, Moves.DRAGON_DARTS, Moves.SUPERCELL_SLAM, Moves.V_CREATE ], [Species.JIRACHI]: [ Moves.IRON_HEAD, Moves.TRI_ATTACK, Moves.EERIE_SPELL, Moves.TAKE_HEART ], [Species.DEOXYS]: [ Moves.CLOSE_COMBAT, Moves.METEOR_BEAM, Moves.NIGHT_DAZE, Moves.PHOTON_GEYSER ], - [Species.TURTWIG]: [ Moves.HEADLONG_RUSH, Moves.SHELTER, Moves.BODY_PRESS, Moves.FRENZY_PLANT ], - [Species.CHIMCHAR]: [ Moves.RAGING_FURY, Moves.BURN_UP, Moves.WORK_UP, Moves.WICKED_BLOW ], - [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.FLIP_TURN, Moves.NOBLE_ROAR, Moves.SUNSTEEL_STRIKE ], - [Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.OUTRAGE, Moves.FLAME_CHARGE, Moves.COLLISION_COURSE ], - [Species.BIDOOF]: [ Moves.SUPER_FANG, Moves.LIQUIDATION, Moves.BODY_PRESS, Moves.NO_RETREAT ], - [Species.KRICKETOT]: [ Moves.BOOMBURST, Moves.ALLURING_VOICE, Moves.SPARKLING_ARIA, Moves.QUIVER_DANCE ], - [Species.SHINX]: [ Moves.PSYCHIC_FANGS, Moves.JAW_LOCK, Moves.FACADE, Moves.VOLT_TACKLE ], - [Species.BUDEW]: [ Moves.FLORAL_HEALING, Moves.ACID_SPRAY, Moves.SPORE, Moves.SEED_FLARE ], - [Species.CRANIDOS]: [ Moves.STONE_AXE, Moves.DRAGON_RUSH, Moves.SUPERPOWER, Moves.ROCK_WRECKER ], - [Species.SHIELDON]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BASH ], - [Species.BURMY]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.RECOVER, Moves.SHELTER ], - [Species.COMBEE]: [ Moves.TWINEEDLE, Moves.AIR_SLASH, Moves.KINGS_SHIELD, Moves.SPORE ], - [Species.PACHIRISU]: [ Moves.SUPER_FANG, Moves.EXTREME_SPEED, Moves.SUPERPOWER, Moves.VOLT_TACKLE ], - [Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.ICE_PUNCH, Moves.HIGH_HORSEPOWER, Moves.SURGING_STRIKES ], - [Species.CHERUBI]: [ Moves.FLOWER_SHIELD, Moves.GRASSY_TERRAIN, Moves.GRASSY_GLIDE, Moves.SPORE ], - [Species.SHELLOS]: [ Moves.LIFE_DEW, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.FREEZY_FROST ], - [Species.DRIFLOON]: [ Moves.THIEF, Moves.ACUPRESSURE, Moves.WILL_O_WISP, Moves.HURRICANE ], - [Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.TROP_KICK, Moves.FAKE_OUT, Moves.SWORDS_DANCE ], - [Species.GLAMEOW]: [ Moves.U_TURN, Moves.STOMPING_TANTRUM, Moves.COVET, Moves.WICKED_BLOW ], - [Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.BOOMBURST, Moves.TORCH_SONG, Moves.EERIE_SPELL ], - [Species.STUNKY]: [ Moves.CORROSIVE_GAS, Moves.BURNING_JEALOUSY, Moves.SUPER_FANG, Moves.WICKED_BLOW ], - [Species.BRONZOR]: [ Moves.PSYSHIELD_BASH, Moves.COSMIC_POWER, Moves.MIRROR_COAT, Moves.TACHYON_CUTTER ], - [Species.BONSLY]: [ Moves.INGRAIN, Moves.GRASSY_GLIDE, Moves.EXTREME_SPEED, Moves.HEAD_SMASH ], - [Species.MIME_JR]: [ Moves.CALM_MIND, Moves.ATTRACT, Moves.TAUNT, Moves.GLITZY_GLOW ], - [Species.HAPPINY]: [ Moves.HAPPY_HOUR, Moves.SEISMIC_TOSS, Moves.STEALTH_ROCK, Moves.INSTRUCT ], - [Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.BOOMBURST, Moves.TAUNT, Moves.TORCH_SONG ], - [Species.SPIRITOMB]: [ Moves.POLTERGEIST, Moves.PAIN_SPLIT, Moves.BURNING_JEALOUSY, Moves.MAKE_IT_RAIN ], - [Species.GIBLE]: [ Moves.DRAGON_HAMMER, Moves.AQUA_JET, Moves.POISON_FANG, Moves.GLAIVE_RUSH ], - [Species.MUNCHLAX]: [ Moves.TEATIME, Moves.BODY_PRESS, Moves.HEAVY_SLAM, Moves.SLACK_OFF ], - [Species.RIOLU]: [ Moves.UPPER_HAND, Moves.ARM_THRUST, Moves.ICE_PUNCH, Moves.PLAY_ROUGH ], - [Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.HARD_PRESS, Moves.SCORCHING_SANDS, Moves.LANDS_WRATH ], - [Species.SKORUPI]: [ Moves.COIL, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], - [Species.CROAGUNK]: [ Moves.GUNK_SHOT, Moves.LASH_OUT, Moves.MACH_PUNCH, Moves.SWORDS_DANCE ], - [Species.CARNIVINE]: [ Moves.SNAP_TRAP, Moves.JAW_LOCK, Moves.RAGE_POWDER, Moves.FLOWER_TRICK ], - [Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.MOONBLAST, Moves.MOONGEIST_BEAM ], - [Species.MANTYKE]: [ Moves.BOUNCY_BUBBLE, Moves.ICY_WIND, Moves.TAILWIND, Moves.RECOVER ], - [Species.SNOVER]: [ Moves.DRUM_BEATING, Moves.ICE_HAMMER, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ], - [Species.ROTOM]: [ Moves.FREEZE_DRY, Moves.FLAME_BURST, Moves.WATER_PULSE, Moves.AIR_SLASH ], - [Species.UXIE]: [ Moves.REVELATION_DANCE, Moves.TEETER_DANCE, Moves.DARK_PULSE, Moves.PRISMATIC_LASER ], - [Species.MESPRIT]: [ Moves.REVELATION_DANCE, Moves.LUNAR_DANCE, Moves.MOONBLAST, Moves.PRISMATIC_LASER ], - [Species.AZELF]: [ Moves.REVELATION_DANCE, Moves.DRAGON_DANCE, Moves.PHANTOM_FORCE, Moves.PRISMATIC_LASER ], - [Species.DIALGA]: [ Moves.SPACIAL_REND, Moves.EXTREME_SPEED, Moves.GEAR_GRIND, Moves.FREEZING_GLARE ], - [Species.PALKIA]: [ Moves.ROAR_OF_TIME, Moves.LIQUIDATION, Moves.AQUA_CUTTER, Moves.DRAGON_ENERGY ], - [Species.HEATRAN]: [ Moves.FIRE_LASH, Moves.HEAVY_SLAM, Moves.FIERY_DANCE, Moves.BEHEMOTH_BASH ], - [Species.REGIGIGAS]: [ Moves.MIGHTY_CLEAVE, Moves.PRECIPICE_BLADES, Moves.EXTREME_SPEED, Moves.SKILL_SWAP ], - [Species.GIRATINA]: [ Moves.DRAGON_HAMMER, Moves.SPACIAL_REND, Moves.SPIRIT_SHACKLE, Moves.ASTRAL_BARRAGE ], - [Species.CRESSELIA]: [ Moves.MIST_BALL, Moves.LUMINA_CRASH, Moves.INFERNAL_PARADE, Moves.HYPERSPACE_HOLE ], - [Species.PHIONE]: [ Moves.SPARKLING_ARIA, Moves.MAKE_IT_RAIN, Moves.TAIL_GLOW, Moves.LIGHT_OF_RUIN ], - [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.RECOVER, Moves.MOONBLAST, Moves.QUIVER_DANCE ], - [Species.DARKRAI]: [ Moves.NIGHT_DAZE, Moves.KNOCK_OFF, Moves.BITTER_MALICE, Moves.SHADOW_FORCE ], - [Species.SHAYMIN]: [ Moves.FLOWER_SHIELD, Moves.FLOWER_TRICK, Moves.CHLOROBLAST, Moves.FLEUR_CANNON ], - [Species.ARCEUS]: [ Moves.SKETCH, Moves.ROAR_OF_TIME, Moves.SPACIAL_REND, Moves.GEOMANCY ], + [Species.TURTWIG]: [ Moves.SHELL_SMASH, Moves.SHELTER, Moves.BODY_PRESS, Moves.SAPPY_SEED ], + [Species.CHIMCHAR]: [ Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.ICE_PUNCH, Moves.SACRED_FIRE ], + [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.FLASH_CANNON, Moves.ROOST, Moves.STEAM_ERUPTION ], + [Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.HIGH_JUMP_KICK ], + [Species.BIDOOF]: [ Moves.EXTREME_SPEED, Moves.NO_RETREAT, Moves.BODY_PRESS, Moves.SURGING_STRIKES ], + [Species.KRICKETOT]: [ Moves.BONEMERANG, Moves.ROOST, Moves.ROCK_BLAST, Moves.VICTORY_DANCE ], + [Species.SHINX]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.FACADE, Moves.BOLT_STRIKE ], + [Species.BUDEW]: [ Moves.PARTING_SHOT, Moves.SPIKES, Moves.SPORE, Moves.MALIGNANT_CHAIN ], + [Species.CRANIDOS]: [ Moves.STONE_AXE, Moves.ACCELEROCK, Moves.HEADLONG_RUSH, Moves.DRAGON_DANCE ], + [Species.SHIELDON]: [ Moves.PAIN_SPLIT, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.DIAMOND_STORM ], + [Species.BURMY]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.RECOVER, Moves.DEFEND_ORDER ], + [Species.COMBEE]: [ Moves.SPORE, Moves.MYSTICAL_FIRE, Moves.KINGS_SHIELD, Moves.QUIVER_DANCE ], + [Species.PACHIRISU]: [ Moves.BADDY_BAD, Moves.BUZZY_BUZZ, Moves.U_TURN, Moves.SIZZLY_SLIDE ], + [Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.TRIPLE_AXEL, Moves.THUNDER_PUNCH, Moves.SURGING_STRIKES ], + [Species.CHERUBI]: [ Moves.SPORE, Moves.STRENGTH_SAP, Moves.APPLE_ACID, Moves.FIERY_DANCE ], + [Species.SHELLOS]: [ Moves.SHORE_UP, Moves.SPIKES, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], + [Species.DRIFLOON]: [ Moves.WILL_O_WISP, Moves.SHADOW_BONE, Moves.CALM_MIND, Moves.OBLIVION_WING ], + [Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.MULTI_ATTACK ], + [Species.GLAMEOW]: [ Moves.U_TURN, Moves.STOMPING_TANTRUM, Moves.BULK_UP, Moves.RAGING_BULL ], + [Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.COSMIC_POWER, Moves.TORCH_SONG, Moves.LUMINA_CRASH ], + [Species.STUNKY]: [ Moves.SPIKES, Moves.KNOCK_OFF, Moves.RECOVER, Moves.DIRE_CLAW ], + [Species.BRONZOR]: [ Moves.RECOVER, Moves.COSMIC_POWER, Moves.SPIKES, Moves.TACHYON_CUTTER ], + [Species.BONSLY]: [ Moves.STONE_AXE, Moves.LEAF_BLADE, Moves.STRENGTH_SAP, Moves.HEAD_SMASH ], + [Species.MIME_JR]: [ Moves.CALM_MIND, Moves.MOONBLAST, Moves.WILL_O_WISP, Moves.TWIN_BEAM ], + [Species.HAPPINY]: [ Moves.IRON_DEFENSE, Moves.SEISMIC_TOSS, Moves.STEALTH_ROCK, Moves.SIZZLY_SLIDE ], + [Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.TORCH_SONG, Moves.BATON_PASS, Moves.BOOMBURST ], + [Species.SPIRITOMB]: [ Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.RECOVER, Moves.POLTERGEIST ], + [Species.GIBLE]: [ Moves.DRAGON_HAMMER, Moves.LANDS_WRATH, Moves.SHORE_UP, Moves.BITTER_BLADE ], + [Species.MUNCHLAX]: [ Moves.IRON_DEFENSE, Moves.BODY_PRESS, Moves.HEAVY_SLAM, Moves.SLACK_OFF ], + [Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.BULLET_PUNCH, Moves.TRIPLE_AXEL, Moves.DOUBLE_IRON_BASH ], + [Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.STONE_AXE, Moves.SALT_CURE, Moves.IRON_DEFENSE ], + [Species.SKORUPI]: [ Moves.CEASELESS_EDGE, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], + [Species.CROAGUNK]: [ Moves.DIRE_CLAW, Moves.ICE_PUNCH, Moves.THUNDEROUS_KICK, Moves.VICTORY_DANCE ], + [Species.CARNIVINE]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.MIGHTY_CLEAVE, Moves.FLOWER_TRICK ], + [Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ], + [Species.MANTYKE]: [ Moves.BOUNCY_BUBBLE, Moves.SPIKES, Moves.ROOST, Moves.STEAM_ERUPTION ], + [Species.SNOVER]: [ Moves.STOMPING_TANTRUM, Moves.ICE_HAMMER, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ], + [Species.ROTOM]: [ Moves.RECOVER, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.RISING_VOLTAGE ], + [Species.UXIE]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.RECOVER, Moves.LUMINA_CRASH ], + [Species.MESPRIT]: [ Moves.QUIVER_DANCE, Moves.AURA_SPHERE, Moves.RECOVER, Moves.LUMINA_CRASH ], + [Species.AZELF]: [ Moves.PHOTON_GEYSER, Moves.DRAGON_DANCE, Moves.RECOVER, Moves.LUMINA_CRASH ], + [Species.DIALGA]: [ Moves.CORE_ENFORCER, Moves.CALM_MIND, Moves.RECOVER, Moves.MAKE_IT_RAIN ], + [Species.PALKIA]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.WATER_SPOUT, Moves.DRAGON_ENERGY ], + [Species.HEATRAN]: [ Moves.TORCH_SONG, Moves.SPIKES, Moves.FLASH_CANNON, Moves.RECOVER ], + [Species.REGIGIGAS]: [ Moves.MIGHTY_CLEAVE, Moves.SHORE_UP, Moves.EXTREME_SPEED, Moves.SKILL_SWAP ], + [Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.ASTRAL_BARRAGE ], + [Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.SECRET_SWORD, Moves.INFERNAL_PARADE, Moves.LUMINA_CRASH ], + [Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ], + [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ], + [Species.DARKRAI]: [ Moves.FIERY_WRATH, Moves.MOONBLAST, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN ], + [Species.SHAYMIN]: [ Moves.SPRINGTIDE_STORM, Moves.HEAT_WAVE, Moves.BLEAKWIND_STORM, Moves.MATCHA_GOTCHA ], + [Species.ARCEUS]: [ Moves.QUIVER_DANCE, Moves.SPIRIT_SHACKLE, Moves.VICTORY_DANCE, Moves.COLLISION_COURSE ], [Species.VICTINI]: [ Moves.VICTORY_DANCE, Moves.FUSION_BOLT, Moves.GLACIATE, Moves.BLUE_FLARE ], [Species.SNIVY]: [ Moves.SYNTHESIS, Moves.SAPPY_SEED, Moves.POWER_GEM, Moves.DRACO_METEOR ], [Species.TEPIG]: [ Moves.SUCKER_PUNCH, Moves.SLACK_OFF, Moves.MACH_PUNCH, Moves.VICTORY_DANCE ], [Species.OSHAWOTT]: [ Moves.SECRET_SWORD, Moves.AQUA_CUTTER, Moves.NASTY_PLOT, Moves.BEHEMOTH_BLADE ], [Species.PATRAT]: [ Moves.COVET, Moves.EXTREME_SPEED, Moves.ACUPRESSURE, Moves.LAST_RESORT ], [Species.LILLIPUP]: [ Moves.COVET, Moves.LAST_RESPECTS, Moves.HIGH_HORSEPOWER, Moves.NO_RETREAT ], - [Species.PURRLOIN]: [ Moves.THIEF, Moves.SWORDS_DANCE, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], - [Species.PANSAGE]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.STRENGTH_SAP, Moves.FRENZY_PLANT ], + [Species.PURRLOIN]: [ Moves.PSYCHIC_FANGS, Moves.SWORDS_DANCE, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], + [Species.PANSAGE]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.TRAILBLAZE, Moves.FRENZY_PLANT ], [Species.PANSEAR]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.SCORCHING_SANDS, Moves.BLAST_BURN ], [Species.PANPOUR]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.FREEZE_DRY, Moves.HYDRO_CANNON ], [Species.MUNNA]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.MYSTICAL_POWER ], @@ -312,7 +312,7 @@ export const speciesEggMoves = { [Species.MIENFOO]: [ Moves.TIDY_UP, Moves.ICE_SPINNER, Moves.SUPERCELL_SLAM, Moves.BRAVE_BIRD ], [Species.DRUDDIGON]: [ Moves.SPIKY_SHIELD, Moves.STOMPING_TANTRUM, Moves.CLANGOROUS_SOUL, Moves.DIAMOND_STORM ], [Species.GOLETT]: [ Moves.BULK_UP, Moves.RAGE_FIST, Moves.HEADLONG_RUSH, Moves.DOUBLE_IRON_BASH ], - [Species.PAWNIARD]: [ Moves.ATTACK_ORDER, Moves.CEASELESS_EDGE, Moves.AQUA_CUTTER, Moves.PSYBLADE ], + [Species.PAWNIARD]: [ Moves.SUCKER_PUNCH, Moves.CEASELESS_EDGE, Moves.AQUA_CUTTER, Moves.PSYBLADE ], [Species.BOUFFALANT]: [ Moves.EARTHQUAKE, Moves.FLAME_CHARGE, Moves.IRON_HEAD, Moves.RAGING_BULL ], [Species.RUFFLET]: [ Moves.FLOATY_FALL, Moves.DAZZLING_GLEAM, Moves.HEAT_WAVE, Moves.BOLT_BEAK ], [Species.VULLABY]: [ Moves.RUINATION, Moves.BODY_PRESS, Moves.ROOST, Moves.BADDY_BAD ], diff --git a/src/data/enums/battler-tag-type.ts b/src/data/enums/battler-tag-type.ts index b5cae5b8459..b0fb7c2cc75 100644 --- a/src/data/enums/battler-tag-type.ts +++ b/src/data/enums/battler-tag-type.ts @@ -22,6 +22,7 @@ export enum BattlerTagType { SAND_TOMB = "SAND_TOMB", MAGMA_STORM = "MAGMA_STORM", THUNDER_CAGE = "THUNDER_CAGE", + INFESTATION = "INFESTATION", PROTECTED = "PROTECTED", SPIKY_SHIELD = "SPIKY_SHIELD", KINGS_SHIELD = "KINGS_SHIELD", @@ -47,6 +48,7 @@ export enum BattlerTagType { IGNORE_ACCURACY = "IGNORE_ACCURACY", BYPASS_SLEEP = "BYPASS_SLEEP", IGNORE_FLYING = "IGNORE_FLYING", - GROUNDED = "GROUNDED", - SALT_CURED = "SALT_CURED" + SALT_CURED = "SALT_CURED", + CHARGED = "CHARGED", + GROUNDED = "GROUNDED" } diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index bb22f985976..4bf7b7ac875 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -565,6 +565,10 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.MINIOR, 'violet-meteor', 'violet', new SpeciesFormChangeManualTrigger(), true), new SpeciesFormChange(Species.MINIOR, 'violet', 'violet-meteor', new SpeciesFormChangeManualTrigger(), true) ], + [Species.MIMIKYU]: [ + new SpeciesFormChange(Species.MIMIKYU, 'disguised', 'busted', new SpeciesFormChangeManualTrigger(), true), + new SpeciesFormChange(Species.MIMIKYU, 'busted', 'disguised', new SpeciesFormChangeManualTrigger(), true) + ], [Species.NECROZMA]: [ new SpeciesFormChange(Species.NECROZMA, '', 'dawn-wings', new SpeciesFormChangeItemTrigger(FormChangeItem.N_LUNARIZER)), new SpeciesFormChange(Species.NECROZMA, '', 'dusk-mane', new SpeciesFormChangeItemTrigger(FormChangeItem.N_SOLARIZER)) diff --git a/src/data/pokemon-level-moves.ts b/src/data/pokemon-level-moves.ts index 81fb79660fe..fe7f9a0a76f 100644 --- a/src/data/pokemon-level-moves.ts +++ b/src/data/pokemon-level-moves.ts @@ -203,6 +203,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [Species.BEEDRILL]: [ [ 0, Moves.TWINEEDLE ], [ 1, Moves.FURY_ATTACK ], + [ 11, Moves.FURY_CUTTER ], [ 14, Moves.RAGE ], [ 17, Moves.PURSUIT ], [ 20, Moves.FOCUS_ENERGY ], @@ -227,7 +228,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 33, Moves.WING_ATTACK ], [ 37, Moves.ROOST ], [ 41, Moves.TAILWIND ], - [ 45, Moves.MIRROR_MOVE ], + [ 45, Moves.AERIAL_ACE ], [ 49, Moves.AIR_SLASH ], [ 53, Moves.HURRICANE ], ], @@ -235,6 +236,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.GUST ], [ 1, Moves.SAND_ATTACK ], [ 1, Moves.TACKLE ], + [ 5, Moves.SAND_ATTACK ], + [ 9, Moves.GUST ], [ 13, Moves.QUICK_ATTACK ], [ 17, Moves.WHIRLWIND ], [ 22, Moves.TWISTER ], @@ -243,7 +246,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 37, Moves.WING_ATTACK ], [ 42, Moves.ROOST ], [ 47, Moves.TAILWIND ], - [ 52, Moves.MIRROR_MOVE ], + [ 52, Moves.AERIAL_ACE ], [ 57, Moves.AIR_SLASH ], [ 62, Moves.HURRICANE ], ], @@ -253,6 +256,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.TACKLE ], [ 1, Moves.QUICK_ATTACK ], [ 1, Moves.HURRICANE ], + [ 5, Moves.SAND_ATTACK ], + [ 9, Moves.GUST ], [ 17, Moves.WHIRLWIND ], [ 22, Moves.TWISTER ], [ 27, Moves.FEATHER_DANCE ], @@ -260,8 +265,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 38, Moves.WING_ATTACK ], [ 44, Moves.ROOST ], [ 50, Moves.TAILWIND ], - [ 56, Moves.MIRROR_MOVE ], + [ 56, Moves.AERIAL_ACE ], [ 62, Moves.AIR_SLASH ], + [ 68, Moves.HURRICANE ], ], [Species.RATTATA]: [ [ 1, Moves.TACKLE ], @@ -269,8 +275,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 4, Moves.QUICK_ATTACK ], [ 7, Moves.FOCUS_ENERGY ], [ 10, Moves.BITE ], - [ 13, Moves.PURSUIT ], - [ 16, Moves.HYPER_FANG ], + [ 13, Moves.LASER_FOCUS ], + [ 16, Moves.TAKE_DOWN ], [ 19, Moves.ASSURANCE ], [ 22, Moves.CRUNCH ], [ 25, Moves.SUCKER_PUNCH ], @@ -286,8 +292,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.QUICK_ATTACK ], [ 1, Moves.FOCUS_ENERGY ], [ 10, Moves.BITE ], - [ 13, Moves.PURSUIT ], - [ 16, Moves.HYPER_FANG ], + [ 13, Moves.LASER_FOCUS ], + [ 16, Moves.TAKE_DOWN ], [ 19, Moves.ASSURANCE ], [ 24, Moves.CRUNCH ], [ 29, Moves.SUCKER_PUNCH ], @@ -299,11 +305,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.GROWL ], [ 1, Moves.PECK ], [ 4, Moves.LEER ], - [ 8, Moves.PURSUIT ], + [ 8, Moves.ASSURANCE ], [ 11, Moves.FURY_ATTACK ], [ 15, Moves.AERIAL_ACE ], - [ 18, Moves.MIRROR_MOVE ], - [ 22, Moves.ASSURANCE ], + [ 18, Moves.WING_ATTACK ], + [ 22, Moves.TAKE_DOWN ], [ 25, Moves.AGILITY ], [ 29, Moves.FOCUS_ENERGY ], [ 32, Moves.ROOST ], @@ -313,13 +319,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.LEER ], [ 1, Moves.GROWL ], [ 1, Moves.PECK ], - [ 1, Moves.PURSUIT ], + [ 1, Moves.ASSURANCE ], [ 1, Moves.PLUCK ], [ 1, Moves.DRILL_RUN ], + [ 4, Moves.LEER ], + [ 8, Moves.ASSURANCE ], [ 11, Moves.FURY_ATTACK ], [ 15, Moves.AERIAL_ACE ], - [ 18, Moves.MIRROR_MOVE ], - [ 23, Moves.ASSURANCE ], + [ 18, Moves.WING_ATTACK ], + [ 23, Moves.TAKE_DOWN ], [ 27, Moves.AGILITY ], [ 32, Moves.FOCUS_ENERGY ], [ 36, Moves.ROOST ], @@ -483,6 +491,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { ], [Species.NIDOQUEEN]: [ [ 0, Moves.SUPERPOWER ], + [ 1, Moves.SLUDGE_WAVE ], [ 1, Moves.SCRATCH ], [ 1, Moves.DOUBLE_KICK ], [ 1, Moves.TAIL_WHIP ], @@ -529,6 +538,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { ], [Species.NIDOKING]: [ [ 0, Moves.MEGAHORN ], + [ 1, Moves.SLUDGE_WAVE ], [ 1, Moves.DOUBLE_KICK ], [ 1, Moves.HORN_ATTACK ], [ 1, Moves.FURY_ATTACK ], @@ -740,6 +750,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.POISON_POWDER ], [ 1, Moves.STUN_SPORE ], [ 1, Moves.CROSS_POISON ], + [ 6, Moves.POISON_POWDER ], + [ 6, Moves.STUN_SPORE ], + [ 11, Moves.ABSORB ], [ 17, Moves.FURY_CUTTER ], [ 22, Moves.SPORE ], [ 29, Moves.SLASH ], @@ -1324,43 +1337,38 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.GROWL ], [ 1, Moves.PECK ], [ 5, Moves.QUICK_ATTACK ], - [ 8, Moves.RAGE ], - [ 12, Moves.FURY_ATTACK ], - [ 15, Moves.PURSUIT ], - [ 19, Moves.PLUCK ], - [ 22, Moves.DOUBLE_HIT ], - [ 26, Moves.AGILITY ], - [ 29, Moves.UPROAR ], - [ 33, Moves.ACUPRESSURE ], - [ 36, Moves.SWORDS_DANCE ], - [ 40, Moves.JUMP_KICK ], - [ 43, Moves.DRILL_PECK ], - [ 47, Moves.ENDEAVOR ], - [ 50, Moves.THRASH ], + [ 9, Moves.FURY_ATTACK ], + [ 14, Moves.PLUCK ], + [ 19, Moves.DOUBLE_HIT ], + [ 23, Moves.AGILITY ], + [ 27, Moves.UPROAR ], + [ 30, Moves.ACUPRESSURE ], + [ 33, Moves.SWORDS_DANCE ], + [ 36, Moves.DRILL_PECK ], + [ 39, Moves.ENDEAVOR ], + [ 43, Moves.THRASH ], ], [Species.DODRIO]: [ [ 0, Moves.TRI_ATTACK ], + [ 1, Moves.TRI_ATTACK ], [ 1, Moves.GROWL ], [ 1, Moves.PECK ], - [ 1, Moves.QUICK_ATTACK ], - [ 1, Moves.RAGE ], + [ 5, Moves.QUICK_ATTACK ], [ 12, Moves.FURY_ATTACK ], - [ 15, Moves.PURSUIT ], - [ 19, Moves.PLUCK ], - [ 22, Moves.DOUBLE_HIT ], - [ 26, Moves.AGILITY ], - [ 29, Moves.UPROAR ], - [ 34, Moves.ACUPRESSURE ], - [ 38, Moves.SWORDS_DANCE ], - [ 43, Moves.JUMP_KICK ], - [ 47, Moves.DRILL_PECK ], - [ 52, Moves.ENDEAVOR ], - [ 56, Moves.THRASH ], + [ 15, Moves.PLUCK ], + [ 19, Moves.DOUBLE_HIT ], + [ 23, Moves.AGILITY ], + [ 26, Moves.UPROAR ], + [ 30, Moves.ACUPRESSURE ], + [ 34, Moves.SWORDS_DANCE ], + [ 38, Moves.DRILL_PECK ], + [ 43, Moves.ENDEAVOR ], + [ 50, Moves.THRASH ], ], [Species.SEEL]: [ [ 1, Moves.HEADBUTT ], [ 3, Moves.GROWL ], - [ 7, Moves.WATER_SPORT ], + [ 7, Moves.CHARM ], [ 11, Moves.ICY_WIND ], [ 13, Moves.ENCORE ], [ 17, Moves.ICE_SHARD ], @@ -1374,14 +1382,14 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 43, Moves.AQUA_TAIL ], [ 47, Moves.ICE_BEAM ], [ 51, Moves.SAFEGUARD ], - [ 53, Moves.HAIL ], + [ 53, Moves.SNOWSCAPE ], ], [Species.DEWGONG]: [ [ 0, Moves.SHEER_COLD ], [ 1, Moves.HEADBUTT ], [ 1, Moves.GROWL ], [ 1, Moves.ICY_WIND ], - [ 1, Moves.SIGNAL_BEAM ], + [ 1, Moves.CHARM ], [ 13, Moves.ENCORE ], [ 17, Moves.ICE_SHARD ], [ 21, Moves.REST ], @@ -1394,7 +1402,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 49, Moves.AQUA_TAIL ], [ 55, Moves.ICE_BEAM ], [ 61, Moves.SAFEGUARD ], - [ 65, Moves.HAIL ], + [ 65, Moves.SNOWSCAPE ], ], [Species.GRIMER]: [ [ 1, Moves.POUND ], @@ -1532,7 +1540,6 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 20, Moves.ROCK_SLIDE ], [ 24, Moves.SCREECH ], [ 28, Moves.SAND_TOMB ], - [ 30, Moves.IRON_DEFENSE ], [ 32, Moves.STEALTH_ROCK ], [ 36, Moves.SLAM ], [ 40, Moves.SANDSTORM ], @@ -2534,7 +2541,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 12, Moves.SYNTHESIS ], [ 17, Moves.REFLECT ], [ 20, Moves.MAGICAL_LEAF ], - [ 23, Moves.NATURAL_GIFT ], + [ 23, Moves.LEECH_SEED ], [ 28, Moves.SWEET_SCENT ], [ 31, Moves.LIGHT_SCREEN ], [ 34, Moves.BODY_SLAM ], @@ -2550,7 +2557,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 12, Moves.SYNTHESIS ], [ 18, Moves.REFLECT ], [ 22, Moves.MAGICAL_LEAF ], - [ 26, Moves.NATURAL_GIFT ], + [ 26, Moves.LEECH_SEED ], [ 32, Moves.SWEET_SCENT ], [ 36, Moves.LIGHT_SCREEN ], [ 40, Moves.BODY_SLAM ], @@ -2568,13 +2575,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 12, Moves.SYNTHESIS ], [ 18, Moves.REFLECT ], [ 22, Moves.MAGICAL_LEAF ], - [ 26, Moves.NATURAL_GIFT ], + [ 26, Moves.LEECH_SEED ], [ 34, Moves.SWEET_SCENT ], [ 40, Moves.LIGHT_SCREEN ], [ 46, Moves.BODY_SLAM ], [ 54, Moves.SAFEGUARD ], [ 60, Moves.AROMATHERAPY ], - [ 66, Moves.SOLAR_BEAM ], + [ 65, Moves.SOLAR_BEAM ], ], [Species.CYNDAQUIL]: [ [ 1, Moves.TACKLE ], @@ -2635,56 +2642,50 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.SCRATCH ], [ 1, Moves.LEER ], [ 6, Moves.WATER_GUN ], - [ 8, Moves.RAGE ], - [ 13, Moves.BITE ], - [ 15, Moves.SCARY_FACE ], - [ 20, Moves.ICE_FANG ], + [ 9, Moves.BITE ], + [ 13, Moves.SCARY_FACE ], + [ 19, Moves.ICE_FANG ], [ 22, Moves.FLAIL ], [ 27, Moves.CRUNCH ], - [ 29, Moves.CHIP_AWAY ], - [ 34, Moves.SLASH ], - [ 36, Moves.SCREECH ], - [ 41, Moves.THRASH ], - [ 43, Moves.AQUA_TAIL ], - [ 48, Moves.SUPERPOWER ], + [ 30, Moves.SLASH ], + [ 33, Moves.SCREECH ], + [ 37, Moves.THRASH ], + [ 41, Moves.AQUA_TAIL ], + [ 45, Moves.SUPERPOWER ], [ 50, Moves.HYDRO_PUMP ], ], [Species.CROCONAW]: [ [ 1, Moves.SCRATCH ], [ 1, Moves.LEER ], [ 1, Moves.WATER_GUN ], - [ 8, Moves.RAGE ], [ 13, Moves.BITE ], [ 15, Moves.SCARY_FACE ], [ 21, Moves.ICE_FANG ], [ 24, Moves.FLAIL ], [ 30, Moves.CRUNCH ], - [ 33, Moves.CHIP_AWAY ], - [ 39, Moves.SLASH ], - [ 42, Moves.SCREECH ], - [ 48, Moves.THRASH ], - [ 51, Moves.AQUA_TAIL ], - [ 57, Moves.SUPERPOWER ], - [ 60, Moves.HYDRO_PUMP ], + [ 34, Moves.SLASH ], + [ 37, Moves.SCREECH ], + [ 42, Moves.THRASH ], + [ 47, Moves.AQUA_TAIL ], + [ 50, Moves.SUPERPOWER ], + [ 55, Moves.HYDRO_PUMP ], ], [Species.FERALIGATR]: [ + [ 1, Moves.AGILITY ], [ 1, Moves.SCRATCH ], [ 1, Moves.LEER ], [ 1, Moves.WATER_GUN ], - [ 1, Moves.AGILITY ], - [ 1, Moves.RAGE ], [ 13, Moves.BITE ], [ 15, Moves.SCARY_FACE ], [ 21, Moves.ICE_FANG ], [ 24, Moves.FLAIL ], [ 32, Moves.CRUNCH ], - [ 37, Moves.CHIP_AWAY ], - [ 45, Moves.SLASH ], - [ 50, Moves.SCREECH ], - [ 58, Moves.THRASH ], - [ 63, Moves.AQUA_TAIL ], - [ 71, Moves.SUPERPOWER ], - [ 76, Moves.HYDRO_PUMP ], + [ 37, Moves.SLASH ], + [ 44, Moves.SCREECH ], + [ 51, Moves.THRASH ], + [ 59, Moves.AQUA_TAIL ], + [ 65, Moves.SUPERPOWER ], + [ 70, Moves.HYDRO_PUMP ], ], [Species.SENTRET]: [ [ 1, Moves.SCRATCH ], @@ -2760,8 +2761,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 12, Moves.REFLECT ], [ 12, Moves.SAFEGUARD ], [ 15, Moves.MACH_PUNCH ], - [ 19, Moves.SILVER_WIND ], - [ 22, Moves.COMET_PUNCH ], + [ 19, Moves.ROOST ], + [ 22, Moves.STRUGGLE_BUG ], [ 26, Moves.BATON_PASS ], [ 29, Moves.AGILITY ], [ 33, Moves.BUG_BUZZ ], @@ -2772,12 +2773,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.TACKLE ], [ 1, Moves.SUPERSONIC ], [ 1, Moves.SWIFT ], + [ 5, Moves.SUPERSONIC ], [ 12, Moves.LIGHT_SCREEN ], [ 12, Moves.REFLECT ], [ 12, Moves.SAFEGUARD ], [ 15, Moves.MACH_PUNCH ], - [ 20, Moves.SILVER_WIND ], - [ 24, Moves.COMET_PUNCH ], + [ 20, Moves.ROOST ], + [ 24, Moves.STRUGGLE_BUG ], [ 29, Moves.BATON_PASS ], [ 33, Moves.AGILITY ], [ 38, Moves.BUG_BUZZ ], @@ -4476,33 +4478,45 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { ], [Species.SILCOON]: [ [ 0, Moves.HARDEN ], + [ 1, Moves.HARDEN ], ], [Species.BEAUTIFLY]: [ [ 0, Moves.GUST ], + [ 1, Moves.BUG_BITE ], + [ 1, Moves.GUST ], + [ 1, Moves.HARDEN ], + [ 1, Moves.STRING_SHOT ], + [ 1, Moves.POISON_STING ], [ 12, Moves.ABSORB ], [ 15, Moves.STUN_SPORE ], [ 17, Moves.MORNING_SUN ], [ 20, Moves.AIR_CUTTER ], [ 22, Moves.MEGA_DRAIN ], - [ 25, Moves.SILVER_WIND ], + [ 25, Moves.LEECH_LIFE ], [ 27, Moves.ATTRACT ], [ 30, Moves.WHIRLWIND ], [ 32, Moves.GIGA_DRAIN ], [ 35, Moves.BUG_BUZZ ], - [ 37, Moves.RAGE ], + [ 37, Moves.PROTECT ], [ 40, Moves.QUIVER_DANCE ], ], [Species.CASCOON]: [ [ 0, Moves.HARDEN ], + [ 1, Moves.HARDEN ], ], [Species.DUSTOX]: [ [ 0, Moves.GUST ], + [ 1, Moves.BUG_BITE ], + [ 1, Moves.GUST ], + [ 1, Moves.HARDEN ], + [ 1, Moves.STRING_SHOT ], + [ 1, Moves.POISON_STING ], [ 12, Moves.CONFUSION ], [ 15, Moves.POISON_POWDER ], [ 17, Moves.MOONLIGHT ], [ 20, Moves.VENOSHOCK ], [ 22, Moves.PSYBEAM ], - [ 25, Moves.SILVER_WIND ], + [ 25, Moves.LEECH_LIFE ], [ 27, Moves.LIGHT_SCREEN ], [ 30, Moves.WHIRLWIND ], [ 32, Moves.TOXIC ], @@ -4621,6 +4635,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 27, Moves.QUICK_GUARD ], [ 33, Moves.AGILITY ], [ 45, Moves.ENDEAVOR ], + [ 51, Moves.BRAVE_BIRD ], [ 57, Moves.REVERSAL ], ], [Species.WINGULL]: [ @@ -4989,31 +5004,42 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 43, Moves.LOCK_ON ], ], [Species.SKITTY]: [ - [ 1, Moves.TACKLE ], [ 1, Moves.TAIL_WHIP ], [ 1, Moves.GROWL ], [ 1, Moves.FAKE_OUT ], - [ 4, Moves.FORESIGHT ], + [ 4, Moves.TACKLE ], [ 7, Moves.SING ], [ 10, Moves.ATTRACT ], [ 13, Moves.DISARMING_VOICE ], - [ 16, Moves.DOUBLE_SLAP ], + [ 16, Moves.FURY_SWIPES ], [ 19, Moves.COPYCAT ], - [ 22, Moves.FEINT_ATTACK ], + [ 22, Moves.PAYBACK ], [ 25, Moves.CHARM ], - [ 28, Moves.WAKE_UP_SLAP ], - [ 31, Moves.ASSIST ], + [ 31, Moves.FACADE ], [ 34, Moves.COVET ], [ 37, Moves.HEAL_BELL ], [ 40, Moves.DOUBLE_EDGE ], - [ 43, Moves.CAPTIVATE ], + [ 43, Moves.BABY_DOLL_EYES ], [ 46, Moves.PLAY_ROUGH ], ], [Species.DELCATTY]: [ - [ 1, Moves.DOUBLE_SLAP ], + [ 1, Moves.TAIL_WHIP ], + [ 1, Moves.GROWL ], + [ 1, Moves.FAKE_OUT ], + [ 1, Moves.TACKLE ], [ 1, Moves.SING ], [ 1, Moves.ATTRACT ], - [ 1, Moves.FAKE_OUT ], + [ 1, Moves.DISARMING_VOICE ], + [ 1, Moves.FURY_SWIPES ], + [ 1, Moves.COPYCAT ], + [ 1, Moves.PAYBACK ], + [ 1, Moves.CHARM ], + [ 1, Moves.FACADE ], + [ 1, Moves.COVET ], + [ 1, Moves.HEAL_BELL ], + [ 1, Moves.DOUBLE_EDGE ], + [ 1, Moves.BABY_DOLL_EYES ], + [ 1, Moves.PLAY_ROUGH ], ], [Species.SABLEYE]: [ [ 1, Moves.SCRATCH ], @@ -5189,7 +5215,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 4, Moves.HELPING_HAND ], [ 7, Moves.SPARK ], [ 10, Moves.ENCORE ], - [ 13, Moves.BESTOW ], + [ 13, Moves.SWITCHEROO ], [ 16, Moves.SWIFT ], [ 19, Moves.ELECTRO_BALL ], [ 22, Moves.COPYCAT ], @@ -5221,7 +5247,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 31, Moves.DISCHARGE ], [ 34, Moves.BATON_PASS ], [ 37, Moves.AGILITY ], - [ 40, Moves.TRUMP_CARD ], + [ 40, Moves.LAST_RESORT ], [ 43, Moves.THUNDER ], [ 46, Moves.NASTY_PLOT ], [ 49, Moves.ENTRAINMENT ], @@ -5473,10 +5499,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [Species.SPINDA]: [ [ 1, Moves.TACKLE ], [ 5, Moves.COPYCAT ], - [ 10, Moves.FEINT_ATTACK ], + [ 10, Moves.TEETER_DANCE ], [ 14, Moves.PSYBEAM ], [ 19, Moves.HYPNOSIS ], - [ 23, Moves.DIZZY_PUNCH ], + [ 23, Moves.BODY_SLAM ], [ 28, Moves.SUCKER_PUNCH ], [ 32, Moves.TEETER_DANCE ], [ 37, Moves.UPROAR ], @@ -5918,16 +5944,16 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 7, Moves.SHADOW_SNEAK ], [ 10, Moves.FEINT ], [ 13, Moves.FURY_SWIPES ], - [ 16, Moves.FEINT_ATTACK ], + [ 16, Moves.DISABLE ], [ 18, Moves.PSYBEAM ], [ 21, Moves.ANCIENT_POWER ], [ 25, Moves.SLASH ], - [ 30, Moves.CAMOUFLAGE ], + [ 30, Moves.DETECT ], [ 33, Moves.SHADOW_CLAW ], [ 38, Moves.SCREECH ], [ 42, Moves.SUBSTITUTE ], [ 46, Moves.SUCKER_PUNCH ], - [ 50, Moves.SYNCHRONOISE ], + [ 50, Moves.FOUL_PLAY ], ], [Species.SHUPPET]: [ [ 1, Moves.ASTONISH ], @@ -6146,17 +6172,19 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { ], [Species.CLAMPERL]: [ [ 1, Moves.WATER_GUN ], - [ 1, Moves.CLAMP ], [ 1, Moves.WHIRLPOOL ], [ 1, Moves.IRON_DEFENSE ], [ 50, Moves.SHELL_SMASH ], ], [Species.HUNTAIL]: [ [ 1, Moves.BITE ], + [ 1, Moves.WATER_GUN ], [ 1, Moves.WHIRLPOOL ], + [ 1, Moves.IRON_DEFENSE ], + [ 1, Moves.SHELL_SMASH ], [ 5, Moves.SCREECH ], [ 9, Moves.SCARY_FACE ], - [ 11, Moves.FEINT_ATTACK ], + [ 11, Moves.RAIN_DANCE ], [ 14, Moves.WATER_PULSE ], [ 16, Moves.ICE_FANG ], [ 19, Moves.BRINE ], @@ -6170,14 +6198,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { ], [Species.GOREBYSS]: [ [ 1, Moves.CONFUSION ], + [ 1, Moves.WATER_GUN ], [ 1, Moves.WHIRLPOOL ], + [ 1, Moves.IRON_DEFENSE ], + [ 1, Moves.SHELL_SMASH ], [ 5, Moves.WATER_SPORT ], [ 9, Moves.AGILITY ], [ 11, Moves.DRAINING_KISS ], [ 14, Moves.WATER_PULSE ], [ 16, Moves.AMNESIA ], [ 19, Moves.AQUA_RING ], - [ 23, Moves.CAPTIVATE ], + [ 23, Moves.SAFEGUARD ], [ 26, Moves.DIVE ], [ 29, Moves.BATON_PASS ], [ 34, Moves.PSYCHIC ], @@ -6857,7 +6888,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.PROTECT ], [ 10, Moves.TACKLE ], [ 15, Moves.BUG_BITE ], - [ 20, Moves.HIDDEN_POWER ], + [ 20, Moves.STRING_SHOT ], ], [Species.WORMADAM]: [ [ 0, Moves.QUIVER_DANCE ], @@ -6865,12 +6896,14 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.PROTECT ], [ 1, Moves.SUCKER_PUNCH ], [ 1, Moves.BUG_BITE ], - [ 20, Moves.HIDDEN_POWER ], + [ 1, Moves.PROTECT ], + [ 10, Moves.TACKLE ], + [ 20, Moves.STRING_SHOT ], [ 23, Moves.CONFUSION ], [ 26, Moves.RAZOR_LEAF ], [ 29, Moves.GROWTH ], [ 32, Moves.PSYBEAM ], - [ 35, Moves.CAPTIVATE ], + [ 35, Moves.INFESTATION ], [ 38, Moves.FLAIL ], [ 41, Moves.ATTRACT ], [ 44, Moves.PSYCHIC ], @@ -6882,13 +6915,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.TACKLE ], [ 1, Moves.PROTECT ], [ 1, Moves.BUG_BITE ], - [ 20, Moves.HIDDEN_POWER ], + [ 10, Moves.PROTECT ], + [ 15, Moves.BUG_BITE ], + [ 20, Moves.STRING_SHOT ], [ 23, Moves.CONFUSION ], [ 26, Moves.GUST ], [ 29, Moves.POISON_POWDER ], [ 32, Moves.PSYBEAM ], - [ 35, Moves.CAMOUFLAGE ], - [ 38, Moves.SILVER_WIND ], + [ 35, Moves.ROOST ], + [ 38, Moves.STRUGGLE_BUG ], [ 41, Moves.AIR_SLASH ], [ 44, Moves.PSYCHIC ], [ 47, Moves.LUNGE ], @@ -7144,11 +7179,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 5, Moves.SCRATCH ], [ 8, Moves.GROWL ], [ 13, Moves.HYPNOSIS ], - [ 17, Moves.FEINT_ATTACK ], + [ 17, Moves.AERIAL_ACE ], [ 20, Moves.FURY_SWIPES ], [ 25, Moves.CHARM ], - [ 29, Moves.ASSIST ], - [ 32, Moves.CAPTIVATE ], + [ 29, Moves.TAUNT ], + [ 32, Moves.RETALIATE ], [ 37, Moves.SLASH ], [ 41, Moves.SUCKER_PUNCH ], [ 44, Moves.ATTRACT ], @@ -7158,14 +7193,16 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [Species.PURUGLY]: [ [ 0, Moves.SWAGGER ], [ 1, Moves.SCRATCH ], + [ 1, Moves.PLAY_ROUGH ], + [ 1, Moves.SUCKER_PUNCH ], [ 1, Moves.GROWL ], [ 1, Moves.FAKE_OUT ], [ 13, Moves.HYPNOSIS ], - [ 17, Moves.FEINT_ATTACK ], + [ 17, Moves.AERIAL_ACE ], [ 20, Moves.FURY_SWIPES ], [ 25, Moves.CHARM ], - [ 29, Moves.ASSIST ], - [ 32, Moves.CAPTIVATE ], + [ 29, Moves.TAUNT ], + [ 32, Moves.RETALIATE ], [ 37, Moves.SLASH ], [ 45, Moves.BODY_SLAM ], [ 52, Moves.ATTRACT ], @@ -7554,13 +7591,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 11, Moves.VINE_WHIP ], [ 17, Moves.SWEET_SCENT ], [ 21, Moves.INGRAIN ], - [ 27, Moves.FEINT_ATTACK ], + [ 27, Moves.GRASS_KNOT ], [ 31, Moves.LEAF_TORNADO ], [ 37, Moves.STOCKPILE ], [ 37, Moves.SPIT_UP ], [ 37, Moves.SWALLOW ], [ 41, Moves.CRUNCH ], - [ 47, Moves.WRING_OUT ], + [ 47, Moves.SEED_BOMB ], [ 50, Moves.POWER_WHIP ], ], [Species.FINNEON]: [ @@ -8204,11 +8241,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { ], [Species.DARKRAI]: [ [ 1, Moves.DISABLE ], - [ 1, Moves.OMINOUS_WIND ], [ 11, Moves.QUICK_ATTACK ], [ 20, Moves.HYPNOSIS ], - [ 29, Moves.FEINT_ATTACK ], - [ 38, Moves.NIGHTMARE ], + [ 29, Moves.SUCKER_PUNCH ], + [ 38, Moves.NIGHT_SHADE ], [ 47, Moves.DOUBLE_TEAM ], [ 57, Moves.HAZE ], [ 66, Moves.DARK_VOID ], @@ -8270,16 +8306,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 7, Moves.VINE_WHIP ], [ 10, Moves.WRAP ], [ 13, Moves.GROWTH ], - [ 16, Moves.LEAF_TORNADO ], + [ 16, Moves.MAGICAL_LEAF ], [ 19, Moves.LEECH_SEED ], [ 22, Moves.MEGA_DRAIN ], [ 25, Moves.SLAM ], [ 28, Moves.LEAF_BLADE ], [ 31, Moves.COIL ], [ 34, Moves.GIGA_DRAIN ], - [ 37, Moves.WRING_OUT ], - [ 40, Moves.GASTRO_ACID ], - [ 43, Moves.LEAF_STORM ], + [ 37, Moves.GASTRO_ACID ], + [ 40, Moves.LEAF_STORM ], ], [Species.SERVINE]: [ [ 1, Moves.VINE_WHIP ], @@ -8287,16 +8322,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.WRAP ], [ 1, Moves.LEER ], [ 13, Moves.GROWTH ], - [ 16, Moves.LEAF_TORNADO ], + [ 16, Moves.MAGICAL_LEAF ], [ 20, Moves.LEECH_SEED ], [ 24, Moves.MEGA_DRAIN ], [ 28, Moves.SLAM ], [ 32, Moves.LEAF_BLADE ], [ 36, Moves.COIL ], [ 40, Moves.GIGA_DRAIN ], - [ 44, Moves.WRING_OUT ], - [ 48, Moves.GASTRO_ACID ], - [ 52, Moves.LEAF_STORM ], + [ 44, Moves.GASTRO_ACID ], + [ 48, Moves.LEAF_STORM ], ], [Species.SERPERIOR]: [ [ 1, Moves.VINE_WHIP ], @@ -8304,22 +8338,21 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.WRAP ], [ 1, Moves.LEER ], [ 13, Moves.GROWTH ], - [ 16, Moves.LEAF_TORNADO ], + [ 16, Moves.MAGICAL_LEAF ], [ 20, Moves.LEECH_SEED ], [ 24, Moves.MEGA_DRAIN ], [ 28, Moves.SLAM ], [ 32, Moves.LEAF_BLADE ], [ 38, Moves.COIL ], [ 44, Moves.GIGA_DRAIN ], - [ 50, Moves.WRING_OUT ], - [ 56, Moves.GASTRO_ACID ], - [ 62, Moves.LEAF_STORM ], + [ 50, Moves.GASTRO_ACID ], + [ 56, Moves.LEAF_STORM ], ], [Species.TEPIG]: [ [ 1, Moves.TACKLE ], [ 3, Moves.TAIL_WHIP ], [ 7, Moves.EMBER ], - [ 9, Moves.ODOR_SLEUTH ], + [ 9, Moves.ENDURE ], [ 13, Moves.DEFENSE_CURL ], [ 15, Moves.FLAME_CHARGE ], [ 19, Moves.SMOG ], @@ -8337,7 +8370,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.TACKLE ], [ 1, Moves.TAIL_WHIP ], [ 1, Moves.EMBER ], - [ 1, Moves.ODOR_SLEUTH ], + [ 1, Moves.ENDURE ], [ 13, Moves.DEFENSE_CURL ], [ 15, Moves.FLAME_CHARGE ], [ 20, Moves.SMOG ], @@ -8355,7 +8388,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.TAIL_WHIP ], [ 1, Moves.EMBER ], [ 1, Moves.ARM_THRUST ], - [ 1, Moves.ODOR_SLEUTH ], + [ 1, Moves.ENDURE ], [ 1, Moves.HAMMER_ARM ], [ 13, Moves.DEFENSE_CURL ], [ 15, Moves.FLAME_CHARGE ], @@ -8701,23 +8734,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 11, Moves.SHOCK_WAVE ], [ 15, Moves.THUNDER_WAVE ], [ 18, Moves.FLAME_CHARGE ], - [ 22, Moves.PURSUIT ], - [ 25, Moves.SPARK ], - [ 29, Moves.STOMP ], - [ 32, Moves.DISCHARGE ], - [ 36, Moves.AGILITY ], - [ 39, Moves.WILD_CHARGE ], - [ 43, Moves.THRASH ], + [ 22, Moves.SPARK ], + [ 25, Moves.STOMP ], + [ 29, Moves.DISCHARGE ], + [ 33, Moves.AGILITY ], + [ 35, Moves.WILD_CHARGE ], + [ 40, Moves.THRASH ], ], [Species.ZEBSTRIKA]: [ [ 1, Moves.TAIL_WHIP ], [ 1, Moves.THUNDER_WAVE ], [ 1, Moves.QUICK_ATTACK ], [ 1, Moves.CHARGE ], - [ 1, Moves.ION_DELUGE ], [ 11, Moves.SHOCK_WAVE ], [ 18, Moves.FLAME_CHARGE ], - [ 22, Moves.PURSUIT ], [ 25, Moves.SPARK ], [ 31, Moves.STOMP ], [ 36, Moves.DISCHARGE ], @@ -18160,12 +18190,14 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = { [ 1, Moves.PROTECT ], [ 1, Moves.SUCKER_PUNCH ], [ 1, Moves.BUG_BITE ], - [ 20, Moves.HIDDEN_POWER ], + [ 1, Moves.PROTECT ], + [ 10, Moves.TACKLE ], + [ 20, Moves.STRING_SHOT ], [ 23, Moves.CONFUSION ], [ 26, Moves.ROCK_BLAST ], [ 29, Moves.HARDEN ], [ 32, Moves.PSYBEAM ], - [ 35, Moves.CAPTIVATE ], + [ 35, Moves.INFESTATION ], [ 38, Moves.FLAIL ], [ 41, Moves.ATTRACT ], [ 44, Moves.PSYCHIC ], @@ -18174,17 +18206,19 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = { ], 2: [ [ 0, Moves.QUIVER_DANCE ], + [ 1, Moves.METAL_BURST ], [ 1, Moves.TACKLE ], [ 1, Moves.PROTECT ], - [ 1, Moves.METAL_BURST ], [ 1, Moves.SUCKER_PUNCH ], [ 1, Moves.BUG_BITE ], - [ 20, Moves.HIDDEN_POWER ], + [ 1, Moves.PROTECT ], + [ 10, Moves.TACKLE ], + [ 20, Moves.STRING_SHOT ], [ 23, Moves.CONFUSION ], - [ 26, Moves.MIRROR_SHOT ], + [ 26, Moves.METAL_BURST ], [ 29, Moves.METAL_SOUND ], [ 32, Moves.PSYBEAM ], - [ 35, Moves.CAPTIVATE ], + [ 35, Moves.INFESTATION ], [ 38, Moves.FLAIL ], [ 41, Moves.ATTRACT ], [ 44, Moves.PSYCHIC ], @@ -18289,21 +18323,21 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = { }, [Species.GRENINJA]: { 1: [ + [ 0, Moves.WATER_SHURIKEN ], [ 0, Moves.WATER_SHURIKEN ], [ 1, Moves.POUND ], [ 1, Moves.GROWL ], + [ 1, Moves.WATER_GUN ], [ 1, Moves.QUICK_ATTACK ], [ 1, Moves.HAZE ], - [ 1, Moves.BUBBLE ], [ 1, Moves.ROLE_PLAY ], [ 1, Moves.NIGHT_SLASH ], - [ 1, Moves.MAT_BLOCK ], [ 10, Moves.LICK ], [ 14, Moves.WATER_PULSE ], [ 19, Moves.SMOKESCREEN ], [ 23, Moves.SHADOW_SNEAK ], [ 28, Moves.SPIKES ], - [ 33, Moves.FEINT_ATTACK ], + [ 33, Moves.AERIAL_ACE ], [ 42, Moves.SUBSTITUTE ], [ 49, Moves.EXTRASENSORY ], [ 56, Moves.DOUBLE_TEAM ], @@ -18598,4 +18632,4 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = { [ 60, Moves.CLOSE_COMBAT ], ] } -}; \ No newline at end of file +}; diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index e582fdfce1d..786ccd881d5 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -670,8 +670,9 @@ export default class PokemonSpecies extends PokemonSpeciesForm { const legendary = this.legendary; const mythical = this.mythical; return species => { - return pokemonEvolutions.hasOwnProperty(species.speciesId) === hasEvolution - && pokemonPrevolutions.hasOwnProperty(species.speciesId) === hasPrevolution + return (pseudoLegendary || legendary || mythical || + (pokemonEvolutions.hasOwnProperty(species.speciesId) === hasEvolution + && pokemonPrevolutions.hasOwnProperty(species.speciesId) === hasPrevolution)) && species.pseudoLegendary === pseudoLegendary && species.legendary === legendary && species.mythical === mythical @@ -3233,7 +3234,7 @@ export const starterPassiveAbilities = { [Species.ZIGZAGOON]: Abilities.PICKPOCKET, [Species.WURMPLE]: Abilities.TINTED_LENS, [Species.LOTAD]: Abilities.DRIZZLE, - [Species.SEEDOT]: Abilities.DISGUISE, + [Species.SEEDOT]: Abilities.EARLY_BIRD, [Species.TAILLOW]: Abilities.KEEN_EYE, [Species.WINGULL]: Abilities.HYDRATION, [Species.RALTS]: Abilities.PSYCHIC_SURGE, @@ -3408,7 +3409,7 @@ export const starterPassiveAbilities = { [Species.AXEW]: Abilities.SHEER_FORCE, [Species.CUBCHOO]: Abilities.INTIMIDATE, [Species.CRYOGONAL]: Abilities.DAZZLING, - [Species.SHELMET]: Abilities.DISGUISE, + [Species.SHELMET]: Abilities.TOXIC_DEBRIS, [Species.STUNFISK]: Abilities.STORM_DRAIN, [Species.MIENFOO]: Abilities.NO_GUARD, [Species.DRUDDIGON]: Abilities.INTIMIDATE, @@ -3638,7 +3639,7 @@ export const starterPassiveAbilities = { [Species.OKIDOGI]: Abilities.INTIMIDATE, [Species.MUNKIDORI]: Abilities.PRANKSTER, [Species.FEZANDIPITI]: Abilities.DAZZLING, - [Species.OGERPON]: Abilities.DISGUISE, + [Species.OGERPON]: Abilities.UNNERVE, [Species.GOUGING_FIRE]: Abilities.BEAST_BOOST, [Species.RAGING_BOLT]: Abilities.BEAST_BOOST, [Species.IRON_BOULDER]: Abilities.SHARPNESS, diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 55245da20fa..de5e28a1fe9 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -25,7 +25,7 @@ import { TempBattleStat } from '../data/temp-battle-stat'; import { ArenaTagSide, WeakenMoveScreenTag, WeakenMoveTypeTag } from '../data/arena-tag'; import { ArenaTagType } from "../data/enums/arena-tag-type"; import { Biome } from "../data/enums/biome"; -import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs } from '../data/ability'; +import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr } from '../data/ability'; import { Abilities } from "#app/data/enums/abilities"; import PokemonData from '../system/pokemon-data'; import Battle, { BattlerIndex } from '../battle'; @@ -748,8 +748,23 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (passive && !this.hasPassive()) return false; const ability = (!passive ? this.getAbility() : this.getPassiveAbility()); - if (ability.isIgnorable && this.scene.arena.ignoreAbilities) + if (this.isFusion() && ability.hasAttr(NoFusionAbilityAbAttr)) + return false; + if (this.scene?.arena.ignoreAbilities && ability.isIgnorable) + return false; + if (this.summonData?.abilitySuppressed && !ability.hasAttr(UnsuppressableAbilityAbAttr)) + return false; + if (this.isOnField() && !ability.hasAttr(SuppressFieldAbilitiesAbAttr)) { + const suppressed = new Utils.BooleanHolder(false); + this.scene.getField(true).map(p => { + if (p.getAbility().hasAttr(SuppressFieldAbilitiesAbAttr) && p.canApplyAbility()) + p.getAbility().getAttrs(SuppressFieldAbilitiesAbAttr).map(a => a.apply(this, false, suppressed, [ability])); + if (p.getPassiveAbility().hasAttr(SuppressFieldAbilitiesAbAttr) && p.canApplyAbility(true)) + p.getPassiveAbility().getAttrs(SuppressFieldAbilitiesAbAttr).map(a => a.apply(this, true, suppressed, [ability])); + }); + if (suppressed.value) return false; + } return (this.hp || ability.isBypassFaint) && !ability.conditions.find(condition => !condition(this)); } @@ -1191,8 +1206,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (cancelled.value) result = HitResult.NO_EFFECT; else { - if (source.findTag(t => t instanceof TypeBoostTag && (t as TypeBoostTag).boostedType === type)) - power.value *= 1.5; + let typeBoost = source.findTag(t => t instanceof TypeBoostTag && (t as TypeBoostTag).boostedType === type) as TypeBoostTag; + if (typeBoost) { + power.value *= typeBoost.boostValue; + if (typeBoost.oneUse) { + this.removeTag(typeBoost.tagType); + } + } const arenaAttackTypeMultiplier = this.scene.arena.getAttackTypeMultiplier(type, source.isGrounded()); if (this.scene.arena.getTerrainType() === TerrainType.GRASSY && this.isGrounded() && type === Type.GROUND && move.moveTarget === MoveTarget.ALL_NEAR_OTHERS) power.value /= 2; @@ -2832,6 +2852,7 @@ export class PokemonSummonData { public disabledMove: Moves = Moves.NONE; public disabledTurns: integer = 0; public tags: BattlerTag[] = []; + public abilitySuppressed: boolean = false; public speciesForm: PokemonSpeciesForm; public fusionSpeciesForm: PokemonSpeciesForm; diff --git a/src/locales/en/move.ts b/src/locales/en/move.ts index b17d1ef3755..67e7161dde8 100644 --- a/src/locales/en/move.ts +++ b/src/locales/en/move.ts @@ -1,11 +1,4 @@ -interface MoveTranslationEntry { - name: string, - effect: string -} - -interface MoveTranslations { - [key: string]: MoveTranslationEntry -} +import { MoveTranslations } from "#app/plugins/i18n"; export const move: MoveTranslations = { "pound": { @@ -2549,8 +2542,8 @@ export const move: MoveTranslations = { effect: "Dummy Data" }, "neverEndingNightmarePhysical": { - name: "Deep-seated grudges summoned by the user's Z-Power trap the target. The power varies, depending on the original move.", - effect: "Dummy Data" + name: "Never-Ending Nightmare", + effect: "Deep-seated grudges summoned by the user's Z-Power trap the target. The power varies, depending on the original move." }, "neverEndingNightmareSpecial": { name: "Never-Ending Nightmare", @@ -3408,6 +3401,138 @@ export const move: MoveTranslations = { name: "Take Heart", effect: "The user lifts its spirits, curing its own status conditions and boosting its Sp. Atk and Sp. Def stats." }, + "gMaxWildfire": { + name: "G-Max Wildfire", + effect: "A Fire-type attack that Gigantamax Charizard use. This move continues to deal damage to opponents for four turns." + }, + "gMaxBefuddle": { + name: "G-Max Befuddle", + effect: "A Bug-type attack that Gigantamax Butterfree use. This move inflicts the poisoned, paralyzed, or asleep status condition on opponents." + }, + "gMaxVoltCrash": { + name: "G-Max Volt Crash", + effect: "An Electric-type attack that Gigantamax Pikachu use. This move paralyzes opponents." + }, + "gMaxGoldRush": { + name: "G-Max Gold Rush", + effect: "A Normal-type attack that Gigantamax Meowth use. This move confuses opponents and also earns extra money." + }, + "gMaxChiStrike": { + name: "G-Max Chi Strike", + effect: "A Fighting-type attack that Gigantamax Machamp use. This move raises the chance of critical hits." + }, + "gMaxTerror": { + name: "G-Max Terror", + effect: "A Ghost-type attack that Gigantamax Gengar use. This Pokémon steps on the opposing Pokémon's shadow to prevent them from escaping." + }, + "gMaxResonance": { + name: "G-Max Resonance", + effect: "An Ice-type attack that Gigantamax Lapras use. This move reduces the damage received for five turns." + }, + "gMaxCuddle": { + name: "G-Max Cuddle", + effect: "A Normal-type attack that Gigantamax Eevee use. This move infatuates opponents." + }, + "gMaxReplenish": { + name: "G-Max Replenish", + effect: "A Normal-type attack that Gigantamax Snorlax use. This move restores Berries that have been eaten." + }, + "gMaxMalodor": { + name: "G-Max Malodor", + effect: "A Poison-type attack that Gigantamax Garbodor use. This move poisons opponents." + }, + "gMaxStonesurge": { + name: "G-Max Stonesurge", + effect: "A Water-type attack that Gigantamax Drednaw use. This move scatters sharp rocks around the field." + }, + "gMaxWindRage": { + name: "G-Max Wind Rage", + effect: "A Flying-type attack that Gigantamax Corviknight use. This move removes the effects of moves like Reflect and Light Screen." + }, + "gMaxStunShock": { + name: "G-Max Stun Shock", + effect: "An Electric-type attack that Gigantamax Toxtricity use. This move poisons or paralyzes opponents." + }, + "gMaxFinale": { + name: "G-Max Finale", + effect: "A Fairy-type attack that Gigantamax Alcremie use. This move heals the HP of allies." + }, + "gMaxDepletion": { + name: "G-Max Depletion", + effect: "A Dragon-type attack that Gigantamax Duraludon use. Reduces the PP of the last move used." + }, + "gMaxGravitas": { + name: "G-Max Gravitas", + effect: "A Psychic-type attack that Gigantamax Orbeetle use. This move changes gravity for five turns." + }, + "gMaxVolcalith": { + name: "G-Max Volcalith", + effect: "A Rock-type attack that Gigantamax Coalossal use. This move continues to deal damage to opponents for four turns." + }, + "gMaxSandblast": { + name: "G-Max Sandblast", + effect: "A Ground-type attack that Gigantamax Sandaconda use. Opponents are trapped in a raging sandstorm for four to five turns." + }, + "gMaxSnooze": { + name: "G-Max Snooze", + effect: "A Dark-type attack that Gigantamax Grimmsnarl use. The user lets loose a huge yawn that lulls the targets into falling asleep on the next turn." + }, + "gMaxTartness": { + name: "G-Max Tartness", + effect: "A Grass-type attack that Gigantamax Flapple use. This move reduces the opponents' evasiveness." + }, + "gMaxSweetness": { + name: "G-Max Sweetness", + effect: "A Grass-type attack that Gigantamax Appletun use. This move heals the status conditions of allies." + }, + "gMaxSmite": { + name: "G-Max Smite", + effect: "A Fairy-type attack that Gigantamax Hatterene use. This move confuses opponents." + }, + "gMaxSteelsurge": { + name: "G-Max Steelsurge", + effect: "A Steel-type attack that Gigantamax Copperajah use. This move scatters sharp spikes around the field." + }, + "gMaxMeltdown": { + name: "G-Max Meltdown", + effect: "A Steel-type attack that Gigantamax Melmetal use. This move makes opponents incapable of using the same move twice in a row." + }, + "gMaxFoamBurst": { + name: "G-Max Foam Burst", + effect: "A Water-type attack that Gigantamax Kingler use. This move harshly lowers the Speed of opponents." + }, + "gMaxCentiferno": { + name: "G-Max Centiferno", + effect: "A Fire-type attack that Gigantamax Centiskorch use. This move traps opponents in flames for four to five turns." + }, + "gMaxVineLash": { + name: "G-Max Vine Lash", + effect: "A Grass-type attack that Gigantamax Venusaur use. This move continues to deal damage to opponents for four turns." + }, + "gMaxCannonade": { + name: "G-Max Cannonade", + effect: "A Water-type attack that Gigantamax Blastoise use. This move continues to deal damage to opponents for four turns." + }, + "gMaxDrumSolo": { + name: "G-Max Drum Solo", + effect: "A Grass-type attack that Gigantamax Rillaboom use. This move can be used on the target regardless of its Abilities." + }, + "gMaxFireball": { + name: "G-Max Fireball", + effect: "A Fire-type attack that Gigantamax Cinderace use. This move can be used on the target regardless of its Abilities." + }, + "gMaxHydrosnipe": { + name: "G-Max Hydrosnipe", + effect: "A Water-type attack that Gigantamax Inteleon use. This move can be used on the target regardless of its Abilities." + }, + "gMaxOneBlow": { + name: "G-Max One Blow", + effect: "A Dark-type attack that Gigantamax Urshifu use. This single-strike move can ignore Max Guard." + }, + "gMaxRapidFlow": { + name: "G-Max Rapid Flow", + effect: "A Water-type attack that Gigantamax Urshifu use. This rapid-strike move can ignore Max Guard." + }, "teraBlast": { name: "Tera Blast", effect: "If the user has Terastallized, it unleashes energy of its Tera Type. This move inflicts damage using the Attack or Sp. Atk stat-whichever is higher for the user." diff --git a/src/locales/fr/menu.ts b/src/locales/fr/menu.ts new file mode 100644 index 00000000000..0a1ee70a2fe --- /dev/null +++ b/src/locales/fr/menu.ts @@ -0,0 +1,39 @@ +export const menu = { + "cancel": "Annuler", + "continue": "Continuer", + "dailyRun": "Défi du jour (Bêta)", + "loadGame": "Charger la partie", + "newGame": "Nouvelle partie", + "selectGameMode": "Sélectionnez un mode de jeu.", + "logInOrCreateAccount": "Connectez-vous ou créez un compte pour commencer. Aucun e-mail requis !", + "failedToLoadSaveData": "Échec du chargement des données. Veuillez recharger la page.\nSi cela continue, veuillez contacter l'administrateur.", + "sessionSuccess": "Session chargée avec succès.", + "failedToLoadSession": "Vos données de session n'ont pas pu être chargées.\nElles pourraient être corrompues.", + "boyOrGirl": "Es-tu un garçon ou une fille ?", + "boy": "Garçon", + "girl": "Fille", + "bossAppeared": "Un {{bossName}} est apparaît.", + "trainerAppeared": "Un combat est lancé\npar {{trainerName}} !", + "singleWildAppeared": "Un {{pokemonName}} sauvage apparaît!", + "multiWildAppeared": "Un {{pokemonName1}} et un {{pokemonName2}}\nsauvages apparaissent !", + "playerComeBack": "{{pokemonName}}, on change!\nReviens !", + "trainerComeBack": "{{trainerName}} retire {{pokemonName}} !", + "playerGo": "{{pokemonName}} ! Go !", + "trainerGo": "{{pokemonName}} est envoyé par\n{{trainerName}} !", + "switchQuestion": "Voulez-vous changer\n{{pokemonName}} ?", + "pokemon": "Pokémon", + "sendOutPokemon": "{{pokemonName}} ! Go !", + "levelCapUp": "La limite de niveau\na été augmentée à {{levelCap}} !", + "moveNotImplemented": "{{moveName}} n'est pas encore implémenté et ne peut pas être sélectionné.", + "moveDisabled": "{{moveName}} est désactivé !", + "noPokeballForce": "Une force mystérieuse\nempêche l'utilisation des Poké Balls.", + "noPokeballTrainer": "Le Dresseur détourne la Ball\nVoler, c'est mal !", + "noPokeballMulti": "Impossible ! On ne peut pas viser\nquand il y a deux Pokémon!", + "noPokeballStrong": "Le Pokémon est trop fort pour être capturé !\nVous devez d'abord l'affaiblir !", + "noEscapeForce": "Une force mystérieuse\nempêche la fuite.", + "noEscapeTrainer": "On ne s'enfuit pas d'un\ncombat de Dresseurs !", + "noEscapePokemon": "{{moveName}} de {{pokemonName}}\nempêche {{escapeVerb}} !", + "escapeVerbSwitch": "le changement", + "escapeVerbFlee": "la fuite", + "notDisabled": "{{moveName}} n'est plus désactivé !", +} as const; \ No newline at end of file diff --git a/src/locales/fr/move.ts b/src/locales/fr/move.ts index 3caa084c7dc..31ca5eba024 100644 --- a/src/locales/fr/move.ts +++ b/src/locales/fr/move.ts @@ -1,6 +1,3812 @@ -export const move = { +import { MoveTranslations } from "#app/plugins/i18n"; + +export const move: MoveTranslations = { + "pound": { + name: "Écras'Face", + effect: "Le lanceur écrase la cible avec l’un de ses membres, tels qu’une de ses pattes avant ou sa longue queue." + }, + "karateChop": { + name: "Poing Karaté", + effect: "L'ennemi est tranché violemment. Taux de critique élevé." + }, + "doubleSlap": { + name: "Torgnoles", + effect: "Gifle rapidement l'ennemi de deux à cinq fois d'affilée." + }, + "cometPunch": { + name: "Poing Comète", + effect: "Une tornade de coups de poing qui frappe de deux à cinq fois d'affilée." + }, + "megaPunch": { + name: "Ultimapoing", + effect: "La cible reçoit un coup de poing d’une grande puissance." + }, + "payDay": { + name: "Jackpot", + effect: "Des pièces sont lancées sur la cible. Permet d’obtenir de l’argent à la fin du combat." + }, + "firePunch": { + name: "Poing Feu", + effect: "Un coup de poing enflammé vient frapper la cible, ce qui peut la brûler (10% de chances)." + }, + "icePunch": { + name: "Poing Glace", + effect: "Un coup de poing glacé vient frapper la cible, ce qui peut la geler (10% de chances)." + }, + "thunderPunch": { + name: "Poing Éclair", + effect: "Un coup de poing électrique vient frapper la cible, ce qui peut la paralyser (10% de chances)." + }, + "scratch": { + name: "Griffe", + effect: "Lacère la cible avec des griffes acérées pour lui infliger des dégâts." + }, + "viseGrip": { + name: "Force Poigne", + effect: "La cible est attrapée et compressée par les côtés." + }, + "guillotine": { + name: "Guillotine", + effect: "Des pinces lacèrent violemment la cible, la mettant K.O. sur le coup si elle est touchée." + }, + "razorWind": { + name: "Coupe-Vent", + effect: "Attaque en deux tours. Des lames de vent frappent l'ennemi au second tour. Taux de critique élevé." + }, + "swordsDance": { + name: "Danse Lames", + effect: "Une danse frénétique qui exalte l’esprit combatif. Augmente beaucoup l’Attaque du lanceur." + }, + "cut": { + name: "Coupe", + effect: "Coupe la cible avec des lames ou des griffes." + }, + "gust": { + name: "Tornade", + effect: "Le lanceur bat des ailes pour générer une bourrasque qui blesse la cible." + }, + "wingAttack": { + name: "Cru-Ailes", + effect: "Le lanceur déploie largement ses ailes majestueuses pour attaquer la cible." + }, + "whirlwind": { + name: "Cyclone", + effect: "Éjecte le Pokémon ennemi et le remplace par un autre. Lors d’un combat contre un Pokémon sauvage seul, met fin au combat." + }, + "fly": { + name: "Vol", + effect: "Le lanceur s’envole au premier tour et frappe au second." + }, + "bind": { + name: "Étreinte", + effect: "Le lanceur ligote la cible avec son corps allongé ou ses tentacules pour la compresser durant quatre à cinq tours." + }, + "slam": { + name: "Souplesse", + effect: "Le lanceur utilise l’un de ses membres, tels qu’une queue ou une liane, pour infliger des dégâts à la cible." + }, + "vineWhip": { + name: "Fouet Lianes", + effect: "Fouette la cible avec de fines lianes pour infliger des dégâts." + }, + "stomp": { + name: "Écrasement", + effect: "Écrase la cible avec un énorme pied, ce qui peut aussi l’apeurer (30% de chances)." + }, + "doubleKick": { + name: "Double Pied", + effect: "Deux coups de pied qui frappent la cible deux fois d’affilée." + }, + "megaKick": { + name: "Ultimawashi", + effect: "Un coup de pied surpuissant qui frappe la cible." + }, + "jumpKick": { + name: "Pied Sauté", + effect: "Le lanceur s'envole pour décocher un coup de pied sauté. S'il échoue, le lanceur se blesse." + }, + "rollingKick": { + name: "Mawashi Geri", + effect: "Le lanceur effectue un coup de pied tournoyant et extrêmement rapide. Peut apeurer l'ennemi (30% de chances)." + }, + "sandAttack": { + name: "Jet de Sable", + effect: "Lance du sable au visage de la cible pour baisser sa Précision." + }, + "headbutt": { + name: "Coup d'Boule", + effect: "Le lanceur donne un coup de tête à la cible qui peut aussi l’apeurer (30% de chances)." + }, + "hornAttack": { + name: "Koud'Korne", + effect: "Frappe la cible d’un coup de corne pointue pour infliger des dégâts." + }, + "furyAttack": { + name: "Furie", + effect: "Frappe la cible deux à cinq fois d’affilée avec un membre pointu tel qu’un bec ou une corne." + }, + "hornDrill": { + name: "Empal'Korne", + effect: "Un coup de corne en vrille qui empale la cible, la mettant K.O. sur le coup si elle est touchée." + }, + "tackle": { + name: "Charge", + effect: "Le lanceur charge la cible et la percute de tout son poids." + }, + "bodySlam": { + name: "Plaquage", + effect: "Le lanceur se laisse tomber sur la cible de tout son poids, ce qui peut aussi la paralyser (30% de chances)." + }, + "wrap": { + name: "Ligotage", + effect: "Le lanceur ligote la cible avec son corps allongé ou ses tentacules pour la compresser durant quatre à cinq tours." + }, + "takeDown": { + name: "Bélier", + effect: "Une charge violente qui blesse aussi légèrement le lanceur." + }, + "thrash": { + name: "Mania", + effect: "Une attaque furieuse qui dure de deux à trois tours. Le lanceur devient confus." + }, + "doubleEdge": { + name: "Damoclès", + effect: "Une charge dangereuse et imprudente. Blesse aussi gravement le lanceur." + }, + "tailWhip": { + name: "Mimi-Queue", + effect: "Le lanceur remue son adorable queue pour tromper la vigilance de la cible et baisser sa Défense." + }, + "poisonSting": { + name: "Dard-Venin", + effect: "Un dard toxique transperce la cible et peut aussi l’empoisonner (30% de chances)." + }, + "twineedle": { + name: "Double Dard", + effect: "Un double coup de dard qui transperce l'ennemi deux fois d'affilée. Peut aussi l'empoisonner (36% de chances)." + }, + "pinMissile": { + name: "Dard-Nuée", + effect: "Envoie une rafale de dards. Peut toucher de deux à cinq fois." + }, + "leer": { + name: "Groz'Yeux", + effect: "Le lanceur fait les gros yeux à la cible pour l’intimider et baisser sa Défense." + }, + "bite": { + name: "Morsure", + effect: "Le lanceur utilise ses canines tranchantes pour mordre la cible, ce qui peut aussi l’apeurer (30% de chances)." + }, + "growl": { + name: "Rugissement", + effect: "Le lanceur pousse un cri tout mimi pour tromper la vigilance de la cible et baisser son Attaque." + }, + "roar": { + name: "Hurlement", + effect: "Effraie le Pokémon ennemi et le remplace par un autre. Lors d’un combat contre un Pokémon sauvage seul, met fin au combat." + }, + "sing": { + name: "Berceuse", + effect: "Une berceuse plonge la cible dans un profond sommeil." + }, + "supersonic": { + name: "Ultrason", + effect: "Le lanceur produit d’étranges ondes sonores qui rendent la cible confuse." + }, + "sonicBoom": { + name: "Sonic Boom", + effect: "Une onde de choc destructrice qui inflige toujours 20 PV de dégâts." + }, + "disable": { + name: "Entrave", + effect: "Empêche la cible de répéter sa dernière attaque. Dure quatre tours." + }, + "acid": { + name: "Acide", + effect: "Le lanceur attaque la cible avec un jet d’acide corrosif qui peut aussi baisser sa Défense Spéciale." + }, "ember": { name: "Flammèche", - effect: "Flammèche inflige des dégâts et a des chances de brûler le Pokémon adverse." + effect: "La cible est attaquée par une faible flamme qui peut aussi la brûler." }, + "flamethrower": { + name: "Lance-Flammes", + effect: "La cible reçoit un torrent de flammes qui peut aussi la brûler (10% de chances)." + }, + "mist": { + name: "Brume", + effect: "Une brume blanche enveloppe le lanceur et ses alliés et empêche la réduction des stats pour cinq tours." + }, + "waterGun": { + name: "Pistolet à O", + effect: "De l’eau est projetée avec force sur la cible." + }, + "hydroPump": { + name: "Hydrocanon", + effect: "Un puissant jet d’eau est dirigé sur la cible." + }, + "surf": { + name: "Surf", + effect: "Une énorme vague s’abat sur le champ de bataille et inflige des dégâts à tous les Pokémon autour du lanceur." + }, + "iceBeam": { + name: "Laser Glace", + effect: "Un rayon de glace frappe la cible, ce qui peut aussi la geler (10% de chances)." + }, + "blizzard": { + name: "Blizzard", + effect: "Une violente tempête de neige s’abat sur la cible, ce qui peut aussi la geler (10% de chances)." + }, + "psybeam": { + name: "Rafale Psy", + effect: "Un étrange rayon frappe la cible, ce qui peut aussi la rendre confuse." + }, + "bubbleBeam": { + name: "Bulles d'O", + effect: "Des bulles sont envoyées avec puissance sur la cible, ce qui peut aussi baisser sa Vitesse." + }, + "auroraBeam": { + name: "Onde Boréale", + effect: "Le lanceur envoie un rayon arc-en-ciel sur la cible, ce qui peut aussi baisser son Attaque." + }, + "hyperBeam": { + name: "Ultralaser", + effect: "Le lanceur projette un puissant rayon sur la cible, mais doit se reposer au tour suivant." + }, + "peck": { + name: "Picpic", + effect: "Le lanceur frappe la cible d’un bec acéré ou d’une corne pointue pour infliger des dégâts." + }, + "drillPeck": { + name: "Bec Vrille", + effect: "Une attaque utilisant le bec comme une perceuse." + }, + "submission": { + name: "Sacrifice", + effect: "Le lanceur agrippe l'ennemi et l'écrase au sol. Blesse aussi légèrement le lanceur." + }, + "lowKick": { + name: "Balayage", + effect: "Un grand coup de pied bas qui fauche la cible. Plus celle-ci est lourde, plus la puissance de cette capacité augmente." + }, + "counter": { + name: "Riposte", + effect: "Une riposte qui répond à toute attaque physique en infligeant le double de dégâts." + }, + "seismicToss": { + name: "Frappe Atlas", + effect: "La cible est projetée grâce au pouvoir de la gravité. Cette capacité inflige des dégâts égaux au niveau du lanceur." + }, + "strength": { + name: "Force", + effect: "Le lanceur cogne la cible de toutes ses forces." + }, + "absorb": { + name: "Vole-Vie", + effect: "Une attaque qui absorbe les nutriments et convertit la moitié des dégâts infligés en PV pour le lanceur." + }, + "megaDrain": { + name: "Méga-Sangsue", + effect: "Une attaque qui absorbe les nutriments et convertit la moitié des dégâts infligés en PV pour le lanceur." + }, + "leechSeed": { + name: "Vampigraine", + effect: "Une graine est semée sur la cible. À chaque tour, elle lui dérobe des PV que le lanceur récupère." + }, + "growth": { + name: "Croissance", + effect: "Le corps du lanceur se développe. Augmente l’Attaque et l’Attaque Spéciale." + }, + "razorLeaf": { + name: "Tranch'Herbe", + effect: "Des feuilles aiguisées comme des rasoirs entaillent la cible. Taux de critiques élevé." + }, + "solarBeam": { + name: "Lance-Soleil", + effect: "Le lanceur absorbe une grande quantité de lumière au premier tour et envoie un rayon puissant au tour suivant." + }, + "poisonPowder": { + name: "Poudre Toxik", + effect: "Une poudre toxique empoisonne la cible." + }, + "stunSpore": { + name: "Para-Spore", + effect: "Le lanceur répand sur la cible une poudre qui la paralyse." + }, + "sleepPowder": { + name: "Poudre Dodo", + effect: "Le lanceur répand une poudre soporifique qui endort la cible." + }, + "petalDance": { + name: "Danse Fleurs", + effect: "Le lanceur attaque en projetant des pétales pendant deux à trois tours avant de céder à la confusion." + }, + "stringShot": { + name: "Sécrétion", + effect: "Le lanceur crache de la soie pour ligoter la cible et beaucoup baisser sa Vitesse." + }, + "dragonRage": { + name: "Draco-Rage", + effect: "La colère du lanceur déclenche une onde de choc destructrice qui inflige toujours 40 PV de dégâts." + }, + "fireSpin": { + name: "Danse Flammes", + effect: "Un tourbillon de flammes emprisonne la cible pendant quatre à cinq tours." + }, + "thunderShock": { + name: "Éclair", + effect: "Une décharge électrique tombe sur la cible, ce qui peut aussi la paralyser (10% de chances)." + }, + "thunderbolt": { + name: "Tonnerre", + effect: "Une grosse décharge électrique tombe sur la cible, ce qui peut aussi la paralyser (10% de chances)." + }, + "thunderWave": { + name: "Cage Éclair", + effect: "Un faible choc électrique paralyse la cible." + }, + "thunder": { + name: "Fatal-Foudre", + effect: "La foudre tombe sur la cible pour lui infliger des dégâts, ce qui peut aussi la paralyser (30% de chances)." + }, + "rockThrow": { + name: "Jet-Pierres", + effect: "Le lanceur soulève une pierre et la lance sur la cible." + }, + "earthquake": { + name: "Séisme", + effect: "Le lanceur provoque un tremblement de terre touchant tous les Pokémon autour de lui." + }, + "fissure": { + name: "Abîme", + effect: "Le lanceur fait tomber la cible dans une crevasse. Si cette attaque réussit, elle met K.O. sur le coup." + }, + "dig": { + name: "Tunnel", + effect: "Le lanceur creuse au premier tour et frappe au second." + }, + "toxic": { + name: "Fil Toxique", + effect: "Tisse un fil imprégné de venin. Empoisonne la cible et baisse sa Vitesse." + }, + "confusion": { + name: "Choc Mental", + effect: "Une faible vague télékinétique frappe la cible, ce qui peut aussi la plonger dans la confusion." + }, + "psychic": { + name: "Champ Psychique", + effect: "Pendant cinq tours, les Pokémon au sol ne peuvent plus subir d’attaques prioritaires et la puissance des capacités de type Psy augmente." + }, + "hypnosis": { + name: "Hypnose", + effect: "Le lanceur hypnotise la cible pour la plonger dans un profond sommeil." + }, + "meditate": { + name: "Yoga", + effect: "Le lanceur médite pour éveiller son pouvoir latent et augmenter son Attaque." + }, + "agility": { + name: "Hâte", + effect: "Le lanceur se relaxe et allège son corps pour beaucoup augmenter sa Vitesse." + }, + "quickAttack": { + name: "Vive-attaque", + effect: "Le lanceur fonce sur la cible si rapidement qu’on parvient à peine à le discerner. Frappe en priorité." + }, + "rage": { + name: "Frénésie", + effect: "Une fois activée, cette capacité augmente l'Attaque du lanceur à mesure que celui-ci subit des attaques." + }, + "teleport": { + name: "Téléport", + effect: "Permet de changer de place avec un autre Pokémon de l’équipe s’il y en a. Quand cette capacité est utilisée par un Pokémon sauvage, celui-ci fuit le combat." + }, + "nightShade": { + name: "Ombre Nocturne", + effect: "Le lanceur invoque un mirage et inflige des dégâts égaux au niveau du lanceur." + }, + "mimic": { + name: "Copie", + effect: "Le lanceur copie la dernière capacité utilisée par la cible et la conserve tant qu’il reste au combat." + }, + "screech": { + name: "Grincement", + effect: "Le lanceur émet un son strident qui donne envie de se boucher les oreilles. Baisse beaucoup la Défense de la cible." + }, + "doubleTeam": { + name: "Reflet", + effect: "Le lanceur se déplace si vite qu’il crée des copies illusoires de lui-même, augmentant son Esquive." + }, + "recover": { + name: "Soin", + effect: "Un soin qui permet au lanceur de récupérer jusqu’à la moitié de ses PV max." + }, + "harden": { + name: "Armure", + effect: "Le lanceur contracte tous ses muscles pour augmenter sa Défense." + }, + "minimize": { + name: "Lilliput", + effect: "Le lanceur comprime son corps pour se faire tout petit et beaucoup augmenter son Esquive." + }, + "smokescreen": { + name: "Brouillard", + effect: "Le lanceur disperse un nuage d’encre ou de fumée qui réduit la Précision de la cible." + }, + "confuseRay": { + name: "Onde Folie", + effect: "Une lumière étrange qui plonge la cible dans un état de confusion." + }, + "withdraw": { + name: "Repli", + effect: "Le lanceur se recroqueville dans sa carapace, ce qui augmente sa Défense." + }, + "defenseCurl": { + name: "Boul'Armure", + effect: "Le lanceur s’enroule pour cacher ses points faibles, ce qui augmente sa Défense." + }, + "barrier": { + name: "Bouclier", + effect: "Le lanceur érige un mur solide qui augmente beaucoup sa Défense." + }, + "lightScreen": { + name: "Mur Lumière", + effect: "Crée un fabuleux mur de lumière qui réduit les dégâts causés par les capacités spéciales pendant cinq tours." + }, + "haze": { + name: "Buée Noire", + effect: "Crée un brouillard qui annule les changements de stats de tous les Pokémon au combat." + }, + "reflect": { + name: "Protection", + effect: "Crée un fabuleux mur de lumière qui réduit les dégâts causés par les capacités physiques pendant cinq tours." + }, + "focusEnergy": { + name: "Puissance", + effect: "Le lanceur prend une profonde inspiration et se concentre pour augmenter son taux de critiques." + }, + "bide": { + name: "Patience", + effect: "Le lanceur encaisse les coups durant deux tours et réplique en infligeant le double des dégâts subis." + }, + "metronome": { + name: "Métronome", + effect: "Le lanceur agite un doigt et stimule son cerveau pour utiliser presque n’importe quelle capacité au hasard." + }, + "mirrorMove": { + name: "Mimique", + effect: "Le lanceur riposte à l'attaque de l'ennemi avec la même attaque." + }, + "selfDestruct": { + name: "Destruction", + effect: "Le lanceur explose en blessant tous les Pokémon autour de lui. Le lanceur tombe K.O." + }, + "eggBomb": { + name: "Bombe Oeuf", + effect: "De toutes ses forces, le lanceur jette un gros œuf sur l'ennemi pour lui infliger des dégâts." + }, + "lick": { + name: "Léchouille", + effect: "Un grand coup de langue qui inflige des dégâts à la cible et peut aussi la paralyser (30% de chances)." + }, + "smog": { + name: "Bain de Smog", + effect: "Le lanceur projette de la boue bizarre sur la cible. Les changements de stats de la cible sont annulés." + }, + "sludge": { + name: "Détritus", + effect: "Des détritus toxiques sont projetés sur la cible, ce qui peut aussi l’empoisonner (30% de chances)." + }, + "boneClub": { + name: "Massd'Os", + effect: "Le lanceur frappe l'ennemi à grands coups d'os. Peut aussi l'apeurer (10% de chances)." + }, + "fireBlast": { + name: "Déflagration", + effect: "Un déluge de flammes ardentes submerge la cible, ce qui peut aussi la brûler (10% de chances)." + }, + "waterfall": { + name: "Cascade", + effect: "Le lanceur charge la cible avec une intensité remarquable, ce qui peut l’apeurer (20% de chances)." + }, + "clamp": { + name: "Claquoir", + effect: "Le lanceur piège l'ennemi dans sa dure coquille et l'écrase pendant quatre à cinq tours." + }, + "swift": { + name: "Météores", + effect: "Le lanceur envoie des rayons d’étoiles qui touchent toujours la cible." + }, + "skullBash": { + name: "Coud'Krâne", + effect: "Le lanceur baisse la tête pour augmenter sa Défense au premier tour et percuter l'ennemi au second." + }, + "spikeCannon": { + name: "Picanon", + effect: "Envoie une rafale de dards. Peut toucher de deux à cinq fois." + }, + "constrict": { + name: "Constriction", + effect: "De longs tentacules ou lianes attaquent l'ennemi. Peut aussi baisser sa Vitesse." + }, + "amnesia": { + name: "Amnésie", + effect: "Le lanceur fait le vide dans son esprit pour oublier ses soucis. Augmente beaucoup sa Défense Spéciale." + }, + "kinesis": { + name: "Télékinésie", + effect: "Le lanceur distrait l'ennemi en pliant une cuiller, ce qui baisse sa Précision." + }, + "softBoiled": { + name: "E-Coque", + effect: "Le lanceur récupère jusqu’à la moitié de ses PV max." + }, + "highJumpKick": { + name: "Pied Voltige", + effect: "Le lanceur s’élance pour effectuer un coup de genou sauté. S’il échoue, le lanceur se blesse." + }, + "glare": { + name: "Regard Médusant", + effect: "Le lanceur intimide la cible grâce à son regard terrifiant pour la paralyser." + }, + "dreamEater": { + name: "Dévorêve", + effect: "Le lanceur mange le rêve de la cible endormie et récupère en PV la moitié des dégâts infligés." + }, + "poisonGas": { + name: "Gaz Toxik", + effect: "Le lanceur empoisonne la cible en lui projetant un nuage de gaz toxique au visage." + }, + "barrage": { + name: "Pilonnage", + effect: "Projette de deux à cinq grosses boules sur l'ennemi." + }, + "leechLife": { + name: "Vampirisme", + effect: "Une attaque qui aspire le sang de la cible. La moitié des dégâts sont convertis en PV pour le lanceur." + }, + "lovelyKiss": { + name: "Grobisou", + effect: "Le lanceur fait un bisou à l'ennemi en prenant une mine effrayante. Endort l'ennemi." + }, + "skyAttack": { + name: "Piqué", + effect: "Une attaque en deux tours au taux de critiques élevé, qui peut aussi apeurer la cible (30% de chances)." + }, + "transform": { + name: "Morphing", + effect: "Le lanceur devient une copie de sa cible et obtient la même palette de capacités." + }, + "bubble": { + name: "Écume", + effect: "Des bulles frappent l'ennemi. Peut réduire sa Vitesse." + }, + "dizzyPunch": { + name: "Uppercut", + effect: "Un enchaînement de coups de poing cadencés frappe l'ennemi. Peut aussi le rendre confus." + }, + "spore": { + name: "Spore", + effect: "Le lanceur répand un nuage de spores qui endort." + }, + "flash": { + name: "Flash", + effect: "Explosion lumineuse qui fait baisser la Précision de l'ennemi." + }, + "psywave": { + name: "Vague Psy", + effect: "Une étrange onde d'énergie chaude frappe l'ennemi. Cette attaque est d'intensité variable." + }, + "splash": { + name: "Trempette", + effect: "Le lanceur barbote et éclabousse les environs. Cette capacité n’a aucun effet." + }, + "acidArmor": { + name: "Acidarmure", + effect: "Le lanceur modifie sa structure moléculaire pour se liquéfier et beaucoup augmenter sa Défense." + }, + "crabhammer": { + name: "Pince-Masse", + effect: "Une grande pince martèle la cible. Taux de critiques élevé." + }, + "explosion": { + name: "Explosion", + effect: "Le lanceur explose et inflige des dégâts à tous les Pokémon autour de lui. Met K.O. le lanceur." + }, + "furySwipes": { + name: "Combo-Griffe", + effect: "La cible est lacérée par des faux ou des griffes de deux à cinq fois d’affilée." + }, + "bonemerang": { + name: "Osmerang", + effect: "Le lanceur projette son os comme un boomerang. Cette attaque frappe à l'aller et au retour." + }, + "rest": { + name: "Repos", + effect: "Le lanceur regagne tous ses PV et ses altérations de statut sont soignées, puis il dort pendant deux tours." + }, + "rockSlide": { + name: "Éboulement", + effect: "Le lanceur envoie de gros rochers sur la cible pour lui infliger des dégâts, ce qui peut aussi l’apeurer (30% de chances)." + }, + "hyperFang": { + name: "Croc de Mort", + effect: "Le lanceur mord l'ennemi à l'aide de ses incisives aiguisées. Peut aussi l'apeurer (10% de chances)." + }, + "sharpen": { + name: "Affûtage", + effect: "Le lanceur réduit son nombre de polygones pour accentuer ses angles et augmenter son Attaque." + }, + "conversion": { + name: "Conversion", + effect: "Le lanceur change de type pour prendre celui de la première capacité de sa liste." + }, + "triAttack": { + name: "Triplattaque", + effect: "Le lanceur envoie trois boules d’énergie simultanément qui peuvent aussi paralyser, brûler ou geler la cible (6.67% de chances)." + }, + "superFang": { + name: "Croc Fatal", + effect: "Une vilaine morsure d’incisives qui réduit de moitié les PV de la cible." + }, + "slash": { + name: "Lame d'Air", + effect: "Le lanceur attaque avec une lame d’air capable de fendre le ciel, ce qui peut aussi apeurer la cible (30% de chances)." + }, + "substitute": { + name: "Clonage", + effect: "Le lanceur crée un clone en sacrifiant quelques PV. Ce clone sert de leurre." + }, + "struggle": { + name: "Lutte", + effect: "Une attaque désespérée, utilisée quand le lanceur n’a plus de PP. Le blesse aussi légèrement." + }, + "sketch": { + name: "Gribouille", + effect: "Le lanceur apprend la dernière capacité utilisée par la cible. Gribouille disparaît après utilisation." + }, + "tripleKick": { + name: "Triple Pied", + effect: "Une salve de un à trois coups de pied dont la puissance augmente à chaque coup porté." + }, + "thief": { + name: "Larcin", + effect: "Le lanceur attaque la cible et vole son objet. Le lanceur ne peut rien voler s’il tient déjà un objet." + }, + "spiderWeb": { + name: "Toile", + effect: "Le lanceur enserre l'ennemi à l'aide d'une fine soie gluante pour l'empêcher de fuir le combat." + }, + "mindReader": { + name: "Lire-Esprit", + effect: "Le lanceur analyse les mouvements de l'ennemi pour être sûr de toucher au coup suivant." + }, + "nightmare": { + name: "Cauchemar", + effect: "Un cauchemar qui inflige des dégâts à chaque tour à un ennemi endormi." + }, + "flameWheel": { + name: "Roue de Feu", + effect: "Le lanceur s’entoure de feu et charge la cible, ce qui peut aussi la brûler (10% de chances)." + }, + "snore": { + name: "Ronflement", + effect: "Une attaque qui ne fonctionne que si le lanceur est endormi. Le boucan peut aussi apeurer la cible (30% de chances)." + }, + "curse": { + name: "Malédiction", + effect: "Une capacité à l’effet différent selon que le lanceur est un Pokémon Spectre ou non." + }, + "flail": { + name: "Gigotage", + effect: "Le lanceur attaque en gigotant dans tous les sens. Plus ses PV sont bas, plus l’attaque est puissante." + }, + "conversion2": { + name: "Conversion 2", + effect: "Le lanceur change de type pour être résistant au type de la dernière attaque lancée par sa cible." + }, + "aeroblast": { + name: "Aéroblast", + effect: "Le lanceur projette une tornade sur l'ennemi pour infliger des dégâts. Taux de critique élevé." + }, + "cottonSpore": { + name: "Spore Coton", + effect: "Le lanceur libère des spores cotonneuses qui collent à la cible et baissent beaucoup sa Vitesse." + }, + "reversal": { + name: "Contre", + effect: "Le lanceur ne retient plus ses coups. Plus ses PV sont bas, plus la puissance de cette capacité augmente." + }, + "spite": { + name: "Dépit", + effect: "Le lanceur exprime son ressentiment en retirant 4 PP à la dernière capacité utilisée par la cible." + }, + "powderSnow": { + name: "Poudreuse", + effect: "Le lanceur projette de la neige poudreuse qui peut aussi geler la cible (10% de chances)." + }, + "protect": { + name: "Abri", + effect: "Le lanceur se protège de toutes les attaques. Peut échouer si utilisée plusieurs fois de suite." + }, + "machPunch": { + name: "Mach Punch", + effect: "Coup de poing fulgurant. Frappe en priorité." + }, + "scaryFace": { + name: "Grimace", + effect: "Le lanceur fait une grimace qui effraie la cible et réduit beaucoup sa Vitesse." + }, + "feintAttack": { + name: "Feinte", + effect: "Le lanceur s'approche l'air de rien avant de frapper par surprise. N'échoue jamais." + }, + "sweetKiss": { + name: "Doux Baiser", + effect: "Le lanceur envoie un bisou si mignon et désarmant qu’il plonge la cible dans la confusion." + }, + "bellyDrum": { + name: "Cognobidon", + effect: "Améliore l’Attaque au maximum en sacrifiant la moitié des PV max." + }, + "sludgeBomb": { + name: "Bombe Beurk", + effect: "Des détritus toxiques sont projetés sur la cible, ce qui peut aussi l’empoisonner (30% de chances)." + }, + "mudSlap": { + name: "Coud'Boue", + effect: "Le lanceur envoie de la boue au visage de la cible pour infliger des dégâts et baisser sa Précision." + }, + "octazooka": { + name: "Octazooka", + effect: "Le lanceur attaque en projetant de l'encre au visage de l'ennemi. Peut aussi baisser sa Précision." + }, + "spikes": { + name: "Picots", + effect: "Le lanceur disperse des picots sur le sol pour blesser tout ennemi qui entre au combat." + }, + "zapCannon": { + name: "Élecanon", + effect: "Un boulet de canon électrifié qui inflige des dégâts à la cible et la paralyse." + }, + "foresight": { + name: "Clairvoyance", + effect: "Permet de toucher un Pokémon Spectre avec n'importe quelle capacité ou de toucher un ennemi insaisissable." + }, + "destinyBond": { + name: "Lien du Destin", + effect: "Si un assaillant porte un coup fatal au lanceur après qu’il a activé cette capacité, ils sont tous les deux mis K.O. La capacité échoue si elle est immédiatement réutilisée." + }, + "perishSong": { + name: "Requiem", + effect: "Tout Pokémon qui entend ce requiem est K.O. dans trois tours à moins qu’il ne soit remplacé." + }, + "icyWind": { + name: "Vent Glace", + effect: "Une bourrasque de vent froid blesse la cible et réduit sa Vitesse." + }, + "detect": { + name: "Détection", + effect: "Le lanceur se protège de toutes les attaques. Peut échouer si utilisée plusieurs fois de suite." + }, + "boneRush": { + name: "Charge Os", + effect: "Le lanceur frappe la cible avec un os de deux à cinq fois d’affilée." + }, + "lockOn": { + name: "Verrouillage", + effect: "Le lanceur verrouille la cible pour ne pas la rater au tour suivant." + }, + "outrage": { + name: "Colère", + effect: "Le lanceur enrage et attaque pendant deux ou trois tours avant de devenir confus." + }, + "sandstorm": { + name: "Tempête de Sable", + effect: "Une tempête de sable blesse tous les Pokémon pendant cinq tours, sauf ceux de type Roche, Sol ou Acier. Augmente la Défense Spéciale des Pokémon Roche." + }, + "gigaDrain": { + name: "Giga-Sangsue", + effect: "Une attaque qui absorbe les nutriments et convertit la moitié des dégâts infligés en PV pour le lanceur." + }, + "endure": { + name: "Ténacité", + effect: "Le lanceur résiste aux attaques avec 1 PV. Peut échouer si utilisée plusieurs fois de suite." + }, + "charm": { + name: "Charme", + effect: "Le lanceur fait les yeux doux pour berner la cible et beaucoup réduire son Attaque." + }, + "rollout": { + name: "Roulade", + effect: "Un rocher roule sur la cible pendant cinq tours. L’attaque gagne en puissance à chaque coup." + }, + "falseSwipe": { + name: "Faux-Chage", + effect: "Le lanceur retient ses coups pour que la cible garde au moins 1 PV et ne tombe pas K.O." + }, + "swagger": { + name: "Vantardise", + effect: "Fait enrager la cible et la plonge dans la confusion, mais augmente beaucoup son Attaque." + }, + "milkDrink": { + name: "Lait à Boire", + effect: "Le lanceur récupère jusqu’à la moitié de ses PV max." + }, + "spark": { + name: "Étincelle", + effect: "Le lanceur envoie une charge électrique sur la cible qui peut aussi la paralyser (30% de chances)." + }, + "furyCutter": { + name: "Taillade", + effect: "Un coup de faux ou de griffe dont la puissance augmente quand il touche plusieurs fois d’affilée." + }, + "steelWing": { + name: "Ailes d'Acier", + effect: "Le lanceur frappe la cible avec des ailes d’acier, ce qui peut aussi augmenter la Défense du lanceur." + }, + "meanLook": { + name: "Regard Noir", + effect: "Le lanceur pétrifie la cible en lui lançant un regard noir qui la rend incapable de quitter le terrain." + }, + "attract": { + name: "Attraction", + effect: "Si la cible est du sexe opposé, elle tombe amoureuse et rechigne alors à attaquer." + }, + "sleepTalk": { + name: "Blabla Dodo", + effect: "Le lanceur utilise une de ses capacités au hasard. Il ne peut utiliser cette capacité que quand il dort." + }, + "healBell": { + name: "Glas de Soin", + effect: "Carillon apaisant qui soigne les altérations de statut de tous les Pokémon de l’équipe." + }, + "return": { + name: "Retour", + effect: "Plus le Pokémon apprécie son Dresseur, plus la puissance de cette attaque furieuse augmente." + }, + "present": { + name: "Cadeau", + effect: "Le lanceur attaque en offrant un cadeau piégé à la cible, mais le cadeau peut parfois restaurer les PV de celle-ci à la place." + }, + "frustration": { + name: "Frustration", + effect: "Moins le Pokémon aime son Dresseur, plus cette attaque est puissante." + }, + "safeguard": { + name: "Rune Protect", + effect: "Crée un champ protecteur qui empêche toutes les altérations de statut pendant cinq tours." + }, + "painSplit": { + name: "Balance", + effect: "Le lanceur ajoute ses PV à ceux de sa cible et les répartit équitablement." + }, + "sacredFire": { + name: "Feu Sacré", + effect: "Le lanceur génère un feu mystique d'une intensité redoutable pour attaquer l'ennemi. Peut aussi le brûler (50% de chances)." + }, + "magnitude": { + name: "Ampleur", + effect: "Provoque un tremblement de terre d'intensité variable qui affecte tous les Pokémon alentour. L'efficacité varie." + }, + "dynamicPunch": { + name: "Dynamo-Poing", + effect: "Le lanceur rassemble ses forces et envoie un coup de poing à la cible, ce qui la rend confuse à coup sûr." + }, + "megahorn": { + name: "Mégacorne", + effect: "Le lanceur inflige un grand coup de corne à la cible." + }, + "dragonBreath": { + name: "Draco-Souffle", + effect: "Le lanceur souffle fort sur la cible pour lui infliger des dégâts, ce qui peut aussi la paralyser (30% de chances)." + }, + "batonPass": { + name: "Relais", + effect: "Le lanceur échange sa place et tout changement de stats avec un Pokémon de l’équipe." + }, + "encore": { + name: "Encore", + effect: "Le lanceur oblige la cible à répéter la dernière capacité utilisée durant trois tours." + }, + "pursuit": { + name: "Poursuite", + effect: "Une attaque qui inflige deux fois plus de dégâts à un ennemi qui s'apprête à être remplacé." + }, + "rapidSpin": { + name: "Tour Rapide", + effect: "Le lanceur attaque en tournant sur lui-même. Sa Vitesse augmente également. Il se libère également des effets de capacités comme Étreinte, Ligotage ou Vampigraine." + }, + "sweetScent": { + name: "Doux Parfum", + effect: "Un doux parfum qui réduit beaucoup l’Esquive de la cible." + }, + "ironTail": { + name: "Queue de Fer", + effect: "Le lanceur attaque la cible avec une queue de fer, ce qui peut aussi baisser la Défense de la cible." + }, + "metalClaw": { + name: "Griffe Acier", + effect: "Attaque avec des griffes d’acier. Peut aussi augmenter l’Attaque du lanceur." + }, + "vitalThrow": { + name: "Corps Perdu", + effect: "Le lanceur porte son coup en dernier. En échange, cette capacité n'échoue jamais." + }, + "morningSun": { + name: "Aurore", + effect: "Un soin qui restaure des PV au lanceur. Son efficacité varie en fonction de la météo." + }, + "synthesis": { + name: "Synthèse", + effect: "Un soin qui restaure des PV au lanceur. Son efficacité varie en fonction de la météo." + }, + "moonlight": { + name: "Rayon Lune", + effect: "Un soin qui restaure des PV au lanceur. Son efficacité varie en fonction de la météo." + }, + "hiddenPower": { + name: "Puissance Cachée", + effect: "Attaque dont le type dépend du Pokémon qui l'utilise." + }, + "crossChop": { + name: "Coup Croix", + effect: "Le lanceur délivre un coup double en croisant les avant-bras. Taux de critiques élevé." + }, + "twister": { + name: "Ouragan", + effect: "Le lanceur déclenche un terrible ouragan sur la cible, ce qui peut aussi apeurer celle-ci (20% de chances)." + }, + "rainDance": { + name: "Danse Pluie", + effect: "Invoque de fortes pluies qui durent cinq tours, augmentant la puissance des capacités de type Eau et baissant celle des capacités de type Feu." + }, + "sunnyDay": { + name: "Zénith", + effect: "Fait briller le soleil pendant cinq tours, augmentant la puissance des capacités de type Feu et baissant celle des capacités de type Eau." + }, + "crunch": { + name: "Mâchouille", + effect: "Le lanceur mord la cible de ses crocs pointus, ce qui peut aussi baisser sa Défense." + }, + "mirrorCoat": { + name: "Voile Miroir", + effect: "Une riposte qui contre n’importe quelle capacité spéciale en infligeant le double des dégâts subis." + }, + "psychUp": { + name: "Boost", + effect: "Une autohypnose qui permet au lanceur de copier les changements de stats de la cible." + }, + "extremeSpeed": { + name: "Vitesse Extrême", + effect: "Le lanceur charge à une vitesse renversante. Frappe en priorité." + }, + "ancientPower": { + name: "Pouvoir Antique", + effect: "Une attaque préhistorique qui peut augmenter toutes les stats du lanceur d’un seul coup." + }, + "shadowBall": { + name: "Ball'Ombre", + effect: "Le lanceur projette une grande ombre sur la cible qui peut aussi faire baisser la Défense Spéciale de celle-ci." + }, + "futureSight": { + name: "Prescience", + effect: "De l’énergie psychique vient frapper la cible deux tours après l’utilisation de cette capacité." + }, + "rockSmash": { + name: "Éclate-Roc", + effect: "Le lanceur porte un coup de poing à la cible, ce qui peut baisser la Défense de celle-ci." + }, + "whirlpool": { + name: "Siphon", + effect: "Le lanceur piège la cible dans une trombe d’eau pendant quatre à cinq tours." + }, + "beatUp": { + name: "Baston", + effect: "Le lanceur appelle tous les Pokémon de son équipe à attaquer. Plus ils sont nombreux, plus il y a d’attaques." + }, + "fakeOut": { + name: "Bluff", + effect: "Le lanceur frappe en priorité et apeure la cible. La capacité ne fonctionne que si elle est utilisée immédiatement en entrant au combat." + }, + "uproar": { + name: "Brouhaha", + effect: "Le lanceur attaque en rugissant durant trois tours. Pendant ce temps, aucun Pokémon ne peut s’endormir." + }, + "stockpile": { + name: "Stockage", + effect: "Le lanceur emmagasine de l’énergie et augmente sa Défense et sa Défense Spéciale. Peut être utilisée trois fois." + }, + "spitUp": { + name: "Relâche", + effect: "Libère dans une attaque l’énergie précédemment emmagasinée avec Stockage. La puissance augmente en fonction du nombre de fois où Stockage a été utilisée." + }, + "swallow": { + name: "Avale", + effect: "Le lanceur absorbe l’énergie emmagasinée avec Stockage pour restaurer ses PV. Le nombre de PV soignés augmente en fonction du nombre de fois où Stockage a été utilisée." + }, + "heatWave": { + name: "Canicule", + effect: "Le lanceur provoque une vague de chaleur qui peut aussi brûler la cible (10% de chances)." + }, + "hail": { + name: "Grêle", + effect: "Invoque une tempête de grêle qui dure cinq tours. Ne blesse pas les Pokémon de type Glace." + }, + "torment": { + name: "Tourmente", + effect: "Le lanceur irrite la cible pour l’empêcher d’utiliser la même capacité deux fois de suite." + }, + "flatter": { + name: "Flatterie", + effect: "Rend la cible confuse, mais augmente son Attaque Spéciale." + }, + "willOWisp": { + name: "Feu Follet", + effect: "Le lanceur projette des flammes maléfiques à la cible pour lui infliger une brûlure." + }, + "memento": { + name: "Souvenir", + effect: "Le lanceur est mis K.O., mais l’Attaque et l’Attaque Spéciale de la cible baissent beaucoup." + }, + "facade": { + name: "Façade", + effect: "Une capacité dont la puissance double lorsque le lanceur est empoisonné, paralysé ou brûlé." + }, + "focusPunch": { + name: "Mitra-Poing", + effect: "Le lanceur se concentre avant d’attaquer. Échoue s’il est touché avant d’avoir frappé." + }, + "smellingSalts": { + name: "Stimulant", + effect: "Cette attaque est doublement efficace sur les Pokémon paralysés, mais elle soigne leur paralysie." + }, + "followMe": { + name: "Par Ici", + effect: "Le lanceur attire l’attention des cibles présentes pour les forcer à n’attaquer que le lanceur." + }, + "naturePower": { + name: "Force Nature", + effect: "Une attaque qui tire sa force de la nature. Son type varie selon le terrain." + }, + "charge": { + name: "Chargeur", + effect: "Le lanceur se charge en électricité, ce qui augmente la puissance de la prochaine capacité Électrik qu’il utilisera. Sa Défense Spéciale augmente également." + }, + "taunt": { + name: "Provoc", + effect: "Le lanceur provoque la cible, ce qui oblige celle-ci à n’utiliser que des capacités qui infligent des dégâts pendant trois tours." + }, + "helpingHand": { + name: "Coup d'Main", + effect: "Le lanceur donne un coup de main à son allié, qui voit la puissance de ses capacités augmenter." + }, + "trick": { + name: "Tour de Magie", + effect: "Le lanceur prend la cible au dépourvu et l’oblige à échanger son objet contre le sien." + }, + "rolePlay": { + name: "Imitation", + effect: "Imite la cible et copie son talent." + }, + "wish": { + name: "Voeu", + effect: "Un vœu qui permet au lanceur ou au Pokémon entrant sur le terrain au tour suivant de récupérer la moitié des PV max du lanceur." + }, + "assist": { + name: "Assistance", + effect: "Le lanceur se dépêche d'utiliser une capacité au hasard parmi celles des Pokémon de l'équipe." + }, + "ingrain": { + name: "Racines", + effect: "Le lanceur plante ses racines et récupère des PV à chaque tour. Une fois enraciné, il ne peut plus fuir." + }, + "superpower": { + name: "Surpuissance", + effect: "Une attaque puissante, mais qui baisse l’Attaque et la Défense du lanceur." + }, + "magicCoat": { + name: "Reflet Magik", + effect: "Une barrière qui renvoie les capacités comme Vampigraine et celles affectant le statut et les stats." + }, + "recycle": { + name: "Recyclage", + effect: "Recycle un objet tenu à usage unique déjà utilisé lors du combat pour pouvoir l’utiliser à nouveau." + }, + "revenge": { + name: "Vendetta", + effect: "Une attaque deux fois plus puissante si le lanceur a été blessé par l'ennemi durant ce tour." + }, + "brickBreak": { + name: "Casse-Brique", + effect: "Le lanceur attaque avec le tranchant de la main. Permet aussi de briser les barrières comme Mur Lumière et Protection." + }, + "yawn": { + name: "Bâillement", + effect: "Le lanceur fait bâiller la cible, qui s’endort au tour suivant." + }, + "knockOff": { + name: "Sabotage", + effect: "Fait plus de dégâts aux cibles qui tiennent un objet. De plus, fait tomber cet objet et empêche la cible de l’utiliser jusqu’à la fin du combat." + }, + "endeavor": { + name: "Effort", + effect: "Une attaque qui réduit les PV de la cible au niveau des PV du lanceur." + }, + "eruption": { + name: "Éruption", + effect: "Le lanceur laisse exploser sa colère. Plus ses PV sont bas, moins l’attaque est puissante." + }, + "skillSwap": { + name: "Échange", + effect: "Le lanceur utilise ses pouvoirs psychiques pour échanger son talent avec la cible." + }, + "imprison": { + name: "Possessif", + effect: "Si la cible et le lanceur ont des capacités en commun, la cible ne pourra pas les utiliser." + }, + "refresh": { + name: "Régénération", + effect: "Le lanceur se repose pour guérir d'un empoisonnement, d'une brûlure ou d'une paralysie." + }, + "grudge": { + name: "Rancune", + effect: "Si le lanceur est mis K.O., sa rancune épuise les PP de la capacité utilisée par l'ennemi pour le mettre K.O." + }, + "snatch": { + name: "Saisie", + effect: "Lorsqu'une capacité de soin ou de changement de stats est utilisée, le lanceur vole ses effets." + }, + "secretPower": { + name: "Force Cachée", + effect: "Les effets de cette attaque varient en fonction de l'environnement." + }, + "dive": { + name: "Plongée", + effect: "Le lanceur plonge sous l’eau au premier tour et frappe au second." + }, + "armThrust": { + name: "Cogne", + effect: "Un déluge de coups adressés avec la paume qui frappe de deux à cinq fois d’affilée." + }, + "camouflage": { + name: "Camouflage", + effect: "Modifie le type du lanceur en fonction du terrain, comme une berge, une grotte, l'herbe, etc." + }, + "tailGlow": { + name: "Lumi-Queue", + effect: "Le lanceur regarde un flash lumineux fixement. Augmente énormément son Attaque Spéciale." + }, + "lusterPurge": { + name: "Lumi-Éclat", + effect: "Le lanceur libère un éclair lumineux. Peut aussi baisser la Défense Spéciale de l'ennemi." + }, + "mistBall": { + name: "Ball'Brume", + effect: "Une bulle de brume inflige des dégâts à l'ennemi. Peut aussi réduire son Attaque Spéciale." + }, + "featherDance": { + name: "Danse Plumes", + effect: "Une montagne de plumes ensevelit la cible et réduit beaucoup son Attaque." + }, + "teeterDance": { + name: "Danse Folle", + effect: "Danse qui rend confus tous les Pokémon autour du lanceur." + }, + "blazeKick": { + name: "Pied Brûleur", + effect: "Le lanceur envoie un coup de pied au taux de critiques élevé. Peut aussi brûler la cible (10% de chances)." + }, + "mudSport": { + name: "Lance-Boue", + effect: "Asperge les alentours de boue. Affaiblit les capacités Électrik pendant cinq tours." + }, + "iceBall": { + name: "Ball'Glace", + effect: "Frappe l'ennemi pendant cinq tours. L'attaque gagne en puissance à chaque coup." + }, + "needleArm": { + name: "Poing Dard", + effect: "Le lanceur attaque en fouettant l'ennemi de ses bras épineux. Peut aussi l'apeurer (30% de chances)." + }, + "slackOff": { + name: "Paresse", + effect: "Le lanceur se tourne les pouces et récupère jusqu’à la moitié de ses PV max." + }, + "hyperVoice": { + name: "Mégaphone", + effect: "Le lanceur pousse un cri dont l’écho terrifiant a le pouvoir d’infliger des dégâts à la cible." + }, + "poisonFang": { + name: "Crochet Venin", + effect: "Le lanceur mord la cible avec ses crocs toxiques, ce qui peut aussi l’empoisonner gravement (50% de chances)." + }, + "crushClaw": { + name: "Éclate Griffe", + effect: "Le lanceur lacère la cible avec des griffes solides et aiguisées, ce qui peut aussi baisser la Défense de celle-ci." + }, + "blastBurn": { + name: "Rafale Feu", + effect: "Une explosion ardente consume la cible. Le lanceur doit se reposer au tour suivant." + }, + "hydroCannon": { + name: "Hydroblast", + effect: "Le lanceur projette un missile d’eau sur la cible, mais il doit se reposer au tour suivant." + }, + "meteorMash": { + name: "Poing Météore", + effect: "Un coup de poing lancé à la vitesse d’un météore. Peut aussi augmenter l’Attaque du lanceur." + }, + "astonish": { + name: "Étonnement", + effect: "Le lanceur attaque la cible en poussant un cri terrifiant qui peut aussi l’apeurer (30% de chances)." + }, + "weatherBall": { + name: "Ball'Météo", + effect: "Une capacité dont la puissance et le type varient en fonction du temps qu’il fait." + }, + "aromatherapy": { + name: "Aromathérapie", + effect: "Le lanceur libère un parfum apaisant qui guérit tous les problèmes de statut de l'équipe." + }, + "fakeTears": { + name: "Croco Larme", + effect: "Le lanceur fait semblant de pleurer pour troubler la cible et beaucoup baisser sa Défense Spéciale." + }, + "airCutter": { + name: "Tranch'Air", + effect: "Le lanceur appelle des vents tranchants qui lacèrent la cible. Taux de critiques élevé." + }, + "overheat": { + name: "Surchauffe", + effect: "Le lanceur attaque la cible à pleine puissance, mais le contrecoup baisse beaucoup l’Attaque Spéciale du lanceur." + }, + "odorSleuth": { + name: "Flair", + effect: "Permet de toucher un Pokémon Spectre avec n'importe quelle capacité ou de toucher un ennemi insaisissable." + }, + "rockTomb": { + name: "Tomberoche", + effect: "Des rochers frappent la cible et baissent sa Vitesse." + }, + "silverWind": { + name: "Vent Argenté", + effect: "Vent qui projette des écailles poudreuses sur l'ennemi. Peut aussi monter toutes les stats du lanceur." + }, + "metalSound": { + name: "Strido-Son", + effect: "Un cri horrible tel un crissement métallique qui réduit beaucoup la Défense Spéciale de la cible." + }, + "grassWhistle": { + name: "Siffl'Herbe", + effect: "Le lanceur joue une douce mélodie qui plonge l'ennemi dans un profond sommeil." + }, + "tickle": { + name: "Chatouille", + effect: "Le lanceur chatouille la cible, ce qui baisse son Attaque et sa Défense." + }, + "cosmicPower": { + name: "Force Cosmique", + effect: "Le lanceur absorbe un pouvoir mystique spatial qui augmente sa Défense et sa Défense Spéciale." + }, + "waterSpout": { + name: "Giclédo", + effect: "Le lanceur attaque avec un jet d’eau. Moins il a de PV et moins l’attaque est puissante." + }, + "signalBeam": { + name: "Rayon Signal", + effect: "Le lanceur projette un rayon de lumière sinistre. Peut aussi rendre l'ennemi confus." + }, + "shadowPunch": { + name: "Poing Ombre", + effect: "Le lanceur se fond dans les ombres pour porter un coup de poing. N’échoue jamais." + }, + "extrasensory": { + name: "Extrasenseur", + effect: "Le lanceur attaque avec un pouvoir étrange et invisible qui peut aussi apeurer la cible (10% de chances)." + }, + "skyUppercut": { + name: "Stratopercut", + effect: "Le lanceur attaque avec un uppercut. Il envoie son poing vers le ciel de toutes ses forces." + }, + "sandTomb": { + name: "Tourbi-Sable", + effect: "Le lanceur emprisonne la cible dans une tempête de sable terrifiante qui dure de quatre à cinq tours." + }, + "sheerCold": { + name: "Glaciation", + effect: "Une vague de froid glacial frappe la cible pour la mettre K.O. en un coup. Cela a peu de chances de réussir si le lanceur ne possède pas le type Glace." + }, + "muddyWater": { + name: "Ocroupi", + effect: "Le lanceur attaque en projetant de l’eau boueuse. Peut aussi réduire la Précision de la cible." + }, + "bulletSeed": { + name: "Balle Graine", + effect: "Le lanceur mitraille la cible avec une rafale de graines. De deux à cinq rafales sont lancées à la suite." + }, + "aerialAce": { + name: "Aéropique", + effect: "Le lanceur prend la cible de vitesse et la lacère. N’échoue jamais." + }, + "icicleSpear": { + name: "Stalactite", + effect: "Le lanceur jette des pics de glace sur la cible, de deux à cinq fois de suite." + }, + "ironDefense": { + name: "Mur de Fer", + effect: "L’épiderme du lanceur devient dur comme du fer, ce qui augmente beaucoup sa Défense." + }, + "block": { + name: "Barrage", + effect: "Le lanceur bloque la route de la cible pour empêcher sa fuite." + }, + "howl": { + name: "Grondement", + effect: "Le lanceur pousse un grand cri d’encouragement, ce qui augmente son Attaque et celle de ses alliés." + }, + "dragonClaw": { + name: "Draco-Griffe", + effect: "Le lanceur lacère la cible de ses grandes griffes aiguisées." + }, + "frenzyPlant": { + name: "Végé-Attaque", + effect: "Un violent coup de racines s’abat sur la cible. Le lanceur doit se reposer au tour suivant." + }, + "bulkUp": { + name: "Gonflette", + effect: "Le lanceur tend ses muscles pour se gonfler, ce qui booste son Attaque et sa Défense." + }, + "bounce": { + name: "Rebond", + effect: "Le lanceur bondit très haut et plonge sur la cible au second tour, ce qui peut aussi la paralyser (30% de chances)." + }, + "mudShot": { + name: "Tir de Boue", + effect: "Le lanceur attaque en projetant de la boue sur la cible, ce qui réduit aussi la Vitesse de celle-ci." + }, + "poisonTail": { + name: "Queue-Poison", + effect: "Le lanceur attaque la cible avec sa queue, ce qui peut aussi l’empoisonner (10% de chances). Taux de critiques élevés." + }, + "covet": { + name: "Implore", + effect: "Le lanceur s’approche de la cible avec un air angélique afin de dérober l’objet qu’elle tient." + }, + "voltTackle": { + name: "Électacle", + effect: "Le lanceur électrifie son corps avant de charger. Le choc blesse aussi gravement le lanceur et peut paralyser la cible (10% de chances)." + }, + "magicalLeaf": { + name: "Feuille Magik", + effect: "Le lanceur disperse d’étranges feuilles qui poursuivent la cible. N’échoue jamais." + }, + "waterSport": { + name: "Tourniquet", + effect: "Asperge d'eau les alentours. Affaiblit les capacités de type Feu pendant cinq tours." + }, + "calmMind": { + name: "Plénitude", + effect: "Le lanceur se concentre et fait le vide dans son esprit pour augmenter son Attaque Spéciale et sa Défense Spéciale." + }, + "leafBlade": { + name: "Lame Feuille", + effect: "Une feuille coupante comme une lame entaille la cible. Taux de critiques élevé." + }, + "dragonDance": { + name: "Danse Draco", + effect: "Une danse mystique dont le rythme effréné augmente l’Attaque et la Vitesse du lanceur." + }, + "rockBlast": { + name: "Boule Roc", + effect: "Le lanceur projette un rocher sur la cible de deux à cinq fois d’affilée." + }, + "shockWave": { + name: "Onde de Choc", + effect: "Le lanceur envoie un choc électrique rapide à la cible. N’échoue jamais." + }, + "waterPulse": { + name: "Vibraqua", + effect: "Le lanceur projette une aura aquatique sur la cible, et peut la rendre confuse." + }, + "doomDesire": { + name: "Voeu Destructeur", + effect: "Le lanceur génère une sphère lumineuse qu'il projette sur l'ennemi deux tours plus tard." + }, + "psychoBoost": { + name: "Psycho-Boost", + effect: "Attaque l'ennemi à pleine puissance. Le contrecoup baisse beaucoup l'Attaque Spéciale du lanceur." + }, + "roost": { + name: "Atterrissage", + effect: "Le lanceur atterrit et se repose. Restaure jusqu’à la moitié de ses PV max." + }, + "gravity": { + name: "Gravité", + effect: "Pendant cinq tours, les Pokémon Vol ou qui ont Lévitation deviennent sensibles aux capacités Sol, et les capacités volantes deviennent inutilisables." + }, + "miracleEye": { + name: "Oeil Miracle", + effect: "Permet de toucher un Pokémon Ténèbres avec les capacités de type Psy ou de toucher un ennemi ayant beaucoup d'esquive." + }, + "wakeUpSlap": { + name: "Réveil Forcé", + effect: "Cette attaque inflige d'importants dégâts à un Pokémon endormi. Mais elle le réveille également." + }, + "hammerArm": { + name: "Marto-Poing", + effect: "Le lanceur donne un puissant coup de poing à la cible, ce qui réduit la Vitesse du lanceur." + }, + "gyroBall": { + name: "Gyroballe", + effect: "Le lanceur effectue une rotation rapide et frappe la cible. Plus la Vitesse du lanceur est basse par rapport à celle de la cible, plus il inflige de dégâts." + }, + "healingWish": { + name: "Voeu Soin", + effect: "Un soin qui permet au lanceur de récupérer jusqu’à la moitié de ses PV max." + }, + "brine": { + name: "Saumure", + effect: "La puissance de cette capacité est doublée lorsque la cible a moins de la moitié de ses PV." + }, + "naturalGift": { + name: "Don Naturel", + effect: "Avant d'attaquer, le lanceur rassemble ses forces grâce à sa Baie. Elle détermine le type et la puissance de l'attaque." + }, + "feint": { + name: "Ruse", + effect: "Une attaque capable de toucher une cible qui utilise une capacité similaire à Détection ou Abri, et annule l’effet de cette capacité." + }, + "pluck": { + name: "Picore", + effect: "Le lanceur picore la cible. Si cette dernière tient une Baie, le lanceur la mange et profite de ses effets." + }, + "tailwind": { + name: "Vent Arrière", + effect: "Génère une rafale de vent qui augmente la Vitesse des Pokémon de l’équipe pendant quatre tours." + }, + "acupressure": { + name: "Acupression", + effect: "Le lanceur utilise sa connaissance des points de pression pour beaucoup augmenter une stat." + }, + "metalBurst": { + name: "Fulmifer", + effect: "Le lanceur contre-attaque avec un coup infligeant des dégâts supérieurs à ceux de la dernière capacité qui l’a blessé." + }, + "uTurn": { + name: "Demi-Tour", + effect: "Après son attaque, le lanceur revient à toute vitesse et change de place avec un Pokémon de l’équipe prêt à combattre." + }, + "closeCombat": { + name: "Close Combat", + effect: "Le lanceur ne pense plus à se protéger et frappe sa cible violemment au corps à corps. Cette capacité baisse la Défense et la Défense Spéciale du lanceur." + }, + "payback": { + name: "Représailles", + effect: "Le lanceur charge son énergie, puis attaque. La puissance de la capacité est doublée si le lanceur agit après la cible." + }, + "assurance": { + name: "Assurance", + effect: "La puissance de cette capacité est deux fois plus élevée si la cible a déjà été blessée durant ce tour." + }, + "embargo": { + name: "Embargo", + effect: "Empêche la cible d'utiliser un objet tenu et son Dresseur d'utiliser un objet sur lui pendant cinq tours." + }, + "fling": { + name: "Dégommage", + effect: "Le lanceur envoie l’objet qu’il tient sur la cible. La puissance et les effets dépendent de l’objet." + }, + "psychoShift": { + name: "Échange Psy", + effect: "Le lanceur transfère ses problèmes de statut à l'ennemi grâce à son pouvoir de suggestion." + }, + "trumpCard": { + name: "Atout", + effect: "Moins cette capacité possède de PP, plus elle est puissante." + }, + "healBlock": { + name: "Anti-Soin", + effect: "Le lanceur empêche l'ennemi de récupérer des PV à l'aide de capacités, talents ou objets tenus, pendant cinq tours." + }, + "wringOut": { + name: "Essorage", + effect: "Le lanceur essore l'ennemi. Plus l'ennemi a de PV, plus cette attaque est puissante." + }, + "powerTrick": { + name: "Astuce Force", + effect: "Le lanceur utilise ses pouvoirs psychiques pour échanger sa Défense et son Attaque." + }, + "gastroAcid": { + name: "Suc Digestif", + effect: "Le lanceur répand ses sucs digestifs sur la cible. Le fluide neutralise le talent de celle-ci." + }, + "luckyChant": { + name: "Air Veinard", + effect: "Le lanceur envoie une incantation vers le ciel et protège l'équipe des coups critiques pendant cinq tours." + }, + "meFirst": { + name: "Moi d'Abord", + effect: "Le lanceur vole la capacité prévue par l'ennemi et l'utilise en faisant plus de dégâts. Il doit frapper en premier." + }, + "copycat": { + name: "Photocopie", + effect: "Le lanceur imite la dernière capacité employée. Échoue si aucune capacité n’a été utilisée." + }, + "powerSwap": { + name: "Permuforce", + effect: "Le lanceur utilise un pouvoir psychique qui échange les changements de son Attaque et de son Attaque Spéciale avec celles de la cible." + }, + "guardSwap": { + name: "Permugarde", + effect: "Le lanceur utilise un pouvoir psychique qui échange les changements de sa Défense et de sa Défense Spéciale avec celles de la cible." + }, + "punishment": { + name: "Punition", + effect: "Plus l'ennemi a utilisé d'augmentations de stats et plus cette capacité est puissante." + }, + "lastResort": { + name: "Dernier Recours", + effect: "Cette capacité ne peut être utilisée qu’après que le lanceur a utilisé toutes les autres." + }, + "worrySeed": { + name: "Soucigraine", + effect: "Plante sur la cible une graine qui la rend soucieuse et remplace son talent par Insomnia, l’empêchant ainsi de dormir." + }, + "suckerPunch": { + name: "Coup Bas", + effect: "Permet au lanceur de frapper en priorité. Échoue si la cible ne prépare pas une attaque." + }, + "toxicSpikes": { + name: "Pics Toxik", + effect: "Le lanceur éparpille des pics autour de la cible, ce qui empoisonne les Pokémon entrant au combat de ce côté." + }, + "heartSwap": { + name: "Permucoeur", + effect: "Cette capacité ne peut pas être utilisée. Il est recommandé de l’oublier, même s’il sera impossible de se la remémorer une fois oubliée." + }, + "aquaRing": { + name: "Anneau Hydro", + effect: "Un voile d’eau recouvre le lanceur et régénère ses PV à chaque tour." + }, + "magnetRise": { + name: "Vol Magnétik", + effect: "Le lanceur utilise l’électricité pour générer un champ magnétique et léviter durant cinq tours." + }, + "flareBlitz": { + name: "Boutefeu", + effect: "Le lanceur s’embrase avant de charger la cible, ce qui peut la brûler (10% de chances). Le choc blesse aussi gravement le lanceur." + }, + "forcePalm": { + name: "Forte-Paume", + effect: "Une onde de choc frappe la cible, ce qui peut aussi la paralyser (30% de chances)." + }, + "auraSphere": { + name: "Aurasphère", + effect: "Le lanceur puise au fond de lui-même pour dégager une aura et projeter de l’énergie sur la cible. N’échoue jamais." + }, + "rockPolish": { + name: "Poliroche", + effect: "Le lanceur polit son corps pour diminuer sa résistance au vent. Augmente beaucoup la Vitesse." + }, + "poisonJab": { + name: "Direct Toxik", + effect: "Le lanceur attaque la cible avec un tentacule, un bras, ou un autre membre imprégné de poison, ce qui peut aussi empoisonner la cible (30% de chances)." + }, + "darkPulse": { + name: "Vibrobscur", + effect: "Le lanceur projette une horrible aura chargée de pensées maléfiques, ce qui peut aussi apeurer la cible." + }, + "nightSlash": { + name: "Tranche-Nuit", + effect: "Le lanceur lacère la cible à la première occasion. Taux de critiques élevé." + }, + "aquaTail": { + name: "Hydro-Queue", + effect: "Le lanceur attaque en balançant sa queue comme une lame de fond en pleine tempête." + }, + "seedBomb": { + name: "Canon Graine", + effect: "Le lanceur déclenche un déluge de grosses graines à la coque solide sur la cible." + }, + "airSlash": { + name: "Lame d'Air", + effect: "Le lanceur attaque avec une lame d’air capable de fendre le ciel, ce qui peut aussi apeurer la cible (30% de chances)." + }, + "xScissor": { + name: "Plaie Croix", + effect: "Le lanceur taillade la cible en utilisant ses faux ou ses griffes comme une paire de ciseaux." + }, + "bugBuzz": { + name: "Bourdon", + effect: "Le lanceur fait vibrer son corps pour lancer une vague sonique, ce qui peut aussi baisser la Défense Spéciale de la cible." + }, + "dragonPulse": { + name: "Draco-Choc", + effect: "Le lanceur ouvre la bouche pour projeter une aura qui frappe la cible." + }, + "dragonRush": { + name: "Draco-Charge", + effect: "Le lanceur frappe la cible en prenant un air menaçant, ce qui peut aussi l’apeurer (20% de chances)." + }, + "powerGem": { + name: "Rayon Gemme", + effect: "Le lanceur attaque avec un rayon de lumière qui scintille comme s’il était composé de gemmes." + }, + "drainPunch": { + name: "Vampi-Poing", + effect: "Un coup de poing qui draine l’énergie. Convertit la moitié des dégâts infligés en PV pour le lanceur." + }, + "vacuumWave": { + name: "Onde Vide", + effect: "Le lanceur agite son poing pour projeter une onde de vide. Frappe en priorité." + }, + "focusBlast": { + name: "Exploforce", + effect: "Le lanceur rassemble ses forces et laisse éclater son pouvoir, ce qui peut aussi baisser la Défense Spéciale de la cible." + }, + "energyBall": { + name: "Éco-Sphère", + effect: "Le lanceur utilise les pouvoirs de la nature pour attaquer la cible, ce qui peut aussi baisser la Défense Spéciale de celle-ci." + }, + "braveBird": { + name: "Rapace", + effect: "Le lanceur replie ses ailes et charge en rase-mottes. Blesse gravement le lanceur." + }, + "earthPower": { + name: "Telluriforce", + effect: "De terribles séismes secouent la cible et peuvent aussi baisser sa Défense Spéciale." + }, + "switcheroo": { + name: "Passe-Passe", + effect: "Le lanceur échange son objet avec celui de la cible à une vitesse que l’œil a du mal à suivre." + }, + "gigaImpact": { + name: "Giga Impact", + effect: "Le lanceur charge la cible de toute ses forces et doit ensuite se reposer au tour suivant." + }, + "nastyPlot": { + name: "Machination", + effect: "Stimule l’esprit par de mauvaises pensées. Augmente beaucoup l’Attaque Spéciale du lanceur." + }, + "bulletPunch": { + name: "Pisto-Poing", + effect: "Le lanceur envoie des coups de poing aussi rapides que des balles de revolver. Frappe en priorité." + }, + "avalanche": { + name: "Avalanche", + effect: "Une capacité dont la puissance est doublée si le lanceur a été blessé par la cible durant ce tour." + }, + "iceShard": { + name: "Éclats Glace", + effect: "Le lanceur crée des éclats de glace qu’il envoie sur la cible. Frappe en priorité." + }, + "shadowClaw": { + name: "Griffe Ombre", + effect: "Attaque avec une griffe puissante faite d’ombres. Taux de critiques élevé." + }, + "thunderFang": { + name: "Crocs Éclair", + effect: "Le lanceur utilise une morsure électrifiée qui peut aussi paralyser (10% de chances) ou apeurer la cible (10% de chances)." + }, + "iceFang": { + name: "Crocs Givre", + effect: "Le lanceur utilise une morsure glaciale qui peut aussi geler (10% de chances) ou apeurer la cible (10% de chances)." + }, + "fireFang": { + name: "Crocs Feu", + effect: "Le lanceur utilise une morsure enflammée qui peut aussi brûler (10% de chances) ou apeurer (10% de chances) la cible." + }, + "shadowSneak": { + name: "Ombre Portée", + effect: "Le lanceur étend son ombre pour frapper par-derrière. Frappe en priorité." + }, + "mudBomb": { + name: "Boue-Bombe", + effect: "Le lanceur attaque à l'aide d'une boule de boue solidifiée. Peut aussi baisser la Précision de l'ennemi." + }, + "psychoCut": { + name: "Coupe Psycho", + effect: "Le lanceur entaille la cible grâce à des lames faites d’énergie psychique. Taux de critiques élevé." + }, + "zenHeadbutt": { + name: "Psykoud'Boul", + effect: "Le lanceur concentre sa volonté et donne un coup de tête à la cible, ce qui peut aussi apeurer celle-ci (20% de chances)." + }, + "mirrorShot": { + name: "Miroi-Tir", + effect: "Le corps poli du lanceur libère un éclair d'énergie. Peut aussi baisser la Précision de l'ennemi." + }, + "flashCannon": { + name: "Luminocanon", + effect: "Le lanceur concentre son énergie lumineuse et la fait exploser, ce qui peut aussi baisser la Défense Spéciale de la cible." + }, + "rockClimb": { + name: "Escalade", + effect: "Le lanceur se jette violemment sur l'ennemi. Peut aussi le rendre confus." + }, + "defog": { + name: "Anti-Brume", + effect: "Un grand coup de vent disperse Protection ou Mur Lumière de la cible et diminue également son Esquive." + }, + "trickRoom": { + name: "Distorsion", + effect: "Le lanceur crée une zone mystérieuse où les Pokémon les plus lents frappent en priorité pendant cinq tours." + }, + "dracoMeteor": { + name: "Draco-Météore", + effect: "Le lanceur invoque des comètes. Le contrecoup réduit beaucoup son Attaque Spéciale." + }, + "discharge": { + name: "Coup d'Jus", + effect: "Un flamboiement d’électricité frappe tous les Pokémon autour du lanceur. Peut aussi les paralyser (30% de chances)." + }, + "lavaPlume": { + name: "Ébullilave", + effect: "Des flammes s’abattent sur tous les Pokémon autour du lanceur, ce qui peut aussi les brûler (10% de chances)." + }, + "leafStorm": { + name: "Tempête Verte", + effect: "Invoque une tempête de feuilles acérées. Le contrecoup réduit beaucoup l’Attaque Spéciale du lanceur." + }, + "powerWhip": { + name: "Mégafouet", + effect: "Le lanceur fait virevolter violemment ses lianes ou ses tentacules pour fouetter la cible." + }, + "rockWrecker": { + name: "Roc-Boulet", + effect: "Le lanceur attaque en projetant un gros rocher sur l'ennemi. Il doit se reposer au tour suivant." + }, + "crossPoison": { + name: "Poison Croix", + effect: "Un coup tranchant qui peut empoisonner la cible (10% de chances). Taux de critiques élevé." + }, + "gunkShot": { + name: "Détricanon", + effect: "Le lanceur envoie des détritus sur la cible, ce qui peut aussi l’empoisonner (30% de chances)." + }, + "ironHead": { + name: "Tête de Fer", + effect: "Le lanceur heurte la cible avec sa tête dure comme de l’acier, ce qui peut aussi l’apeurer (30% de chances)." + }, + "magnetBomb": { + name: "Bombe Aimant", + effect: "Le lanceur projette des bombes d'acier qui collent à l'ennemi. N'échoue jamais." + }, + "stoneEdge": { + name: "Lame de Roc", + effect: "Le lanceur transperce la cible avec des rochers aiguisés. Taux de critiques élevé." + }, + "captivate": { + name: "Séduction", + effect: "Si l'ennemi est de sexe opposé au lanceur, il est séduit et son Attaque Spéciale baisse beaucoup." + }, + "stealthRock": { + name: "Piège de Roc", + effect: "Le lanceur fait flotter des pierres autour de la cible qui blessent tout adversaire entrant au combat." + }, + "grassKnot": { + name: "Noeud Herbe", + effect: "Le lanceur fait des nœuds dans l’herbe pour faire trébucher la cible. Plus la cible est lourde, plus la puissance de cette capacité augmente." + }, + "chatter": { + name: "Babil", + effect: "Attaque avec les ondes sonores assourdissantes qu'il émet en bavardant. Rend l'ennemi confus." + }, + "judgment": { + name: "Jugement", + effect: "Le lanceur libère une myriade de rayons de lumière. Le type varie selon la plaque que tient le lanceur." + }, + "bugBite": { + name: "Piqûre", + effect: "Le lanceur pique la cible. Si celle-ci tient une Baie, le lanceur la dévore et obtient son effet." + }, + "chargeBeam": { + name: "Rayon Chargé", + effect: "Le lanceur tire un rayon chargé d’électricité. Peut aussi augmenter son Attaque Spéciale." + }, + "woodHammer": { + name: "Martobois", + effect: "Le lanceur heurte la cible de son corps robuste, ce qui blesse aussi gravement le lanceur." + }, + "aquaJet": { + name: "Aqua-Jet", + effect: "Le lanceur fonce sur la cible si rapidement qu’on parvient à peine à le discerner. Frappe en priorité." + }, + "attackOrder": { + name: "Appel Attaque", + effect: "Le lanceur appelle ses subalternes pour frapper la cible. Taux de critiques élevé." + }, + "defendOrder": { + name: "Appel Défense", + effect: "Le lanceur appelle ses subalternes pour former un bouclier qui augmente sa Défense et sa Défense Spéciale." + }, + "healOrder": { + name: "Appel Soins", + effect: "Le lanceur appelle ses sous-fifres pour le soigner. Il récupère jusqu'à la moitié de ses PV max." + }, + "headSmash": { + name: "Fracass'Tête", + effect: "Le lanceur assène un coup de tête désespéré, ce qui le blesse aussi très gravement." + }, + "doubleHit": { + name: "Coup Double", + effect: "Le lanceur frappe la cible deux fois d’affilée à l’aide de sa queue ou d’un autre membre." + }, + "roarOfTime": { + name: "Hurle-Temps", + effect: "Le lanceur frappe si fort qu’il affecte le cours du temps. Il se repose au tour suivant." + }, + "spacialRend": { + name: "Spatio-Rift", + effect: "Le lanceur déchire la cible et l’espace autour de lui. Taux de critiques élevé." + }, + "lunarDance": { + name: "Danse Lune", + effect: "Le lanceur tombe K.O. pour soigner totalement le Pokémon qui prendra sa place au combat." + }, + "crushGrip": { + name: "Presse", + effect: "Une force puissante écrase l'ennemi. Plus il lui reste de PV et plus l'attaque est puissante." + }, + "magmaStorm": { + name: "Vortex Magma", + effect: "La cible est prise dans un tourbillon de feu qui dure de quatre à cinq tours." + }, + "darkVoid": { + name: "Trou Noir", + effect: "L'ennemi est plongé dans les ténèbres. Il tombe dans un profond sommeil." + }, + "seedFlare": { + name: "Fulmigraine", + effect: "Le corps du lanceur émet une onde de choc. Peut aussi beaucoup baisser la Défense Spéciale de la cible." + }, + "ominousWind": { + name: "Vent Mauvais", + effect: "Le lanceur crée une violente bourrasque. Peut aussi augmenter toutes ses stats." + }, + "shadowForce": { + name: "Revenant", + effect: "Le lanceur disparaît au premier tour et frappe la cible au deuxième. Cette capacité fonctionne même si la cible se protège." + }, + "honeClaws": { + name: "Aiguisage", + effect: "Le lanceur s’aiguise les griffes. Augmente l’Attaque et la Précision." + }, + "wideGuard": { + name: "Garde Large", + effect: "Bloque les attaques visant tous les alliés pendant un tour." + }, + "guardSplit": { + name: "Partage Garde", + effect: "Additionne la Défense et la Défense Spéciale du lanceur et de sa cible et les redistribue équitablement entre les deux." + }, + "powerSplit": { + name: "Partage Force", + effect: "Additionne l’Attaque Spéciale et l’Attaque du lanceur et de sa cible et les redistribue équitablement entre les deux." + }, + "wonderRoom": { + name: "Zone Étrange", + effect: "Le lanceur crée une zone mystérieuse où la Défense et la Défense Spéciale de tous les Pokémon sont inversées pendant cinq tours." + }, + "psyshock": { + name: "Choc Psy", + effect: "Le lanceur matérialise des ondes mystérieuses qu’il projette sur la cible, ce qui inflige des dégâts physiques à celle-ci." + }, + "venoshock": { + name: "Choc Venin", + effect: "Le lanceur asperge la cible d’un poison spécial. La puissance de la capacité est doublée si la cible est empoisonnée." + }, + "autotomize": { + name: "Allègement", + effect: "Le lanceur se débarrasse des parties inutiles de son corps. Son poids diminue et sa Vitesse augmente beaucoup." + }, + "ragePowder": { + name: "Poudre Fureur", + effect: "Le lanceur s’asperge d’une poudre irritante pour attirer l’attention et diriger toutes les attaques ennemies sur lui." + }, + "telekinesis": { + name: "Lévikinésie", + effect: "Un pouvoir qui fait flotter l'ennemi dans les airs. Pendant trois tours, il devient plus facile à atteindre." + }, + "magicRoom": { + name: "Zone Magique", + effect: "Le lanceur crée une zone mystérieuse où les objets tenus par tous les Pokémon n’ont plus aucun effet pendant cinq tours." + }, + "smackDown": { + name: "Anti-Air", + effect: "Le lanceur jette un projectile sur la cible. Si cette dernière vole, elle tombe au sol." + }, + "stormThrow": { + name: "Yama Arashi", + effect: "Un coup très puissant dont l'effet est toujours critique." + }, + "flameBurst": { + name: "Rebondifeu", + effect: "Quand l'attaque atteint sa cible, elle projette des flammes qui touchent tout ennemi situé à côté." + }, + "sludgeWave": { + name: "Cradovague", + effect: "Une vague de détritus attaque tous les Pokémon autour du lanceur. Peut aussi empoisonner (10% de chances)." + }, + "quiverDance": { + name: "Papillodanse", + effect: "Une danse mystique dont le rythme parfait augmente l’Attaque Spéciale, la Défense Spéciale et la Vitesse du lanceur." + }, + "heavySlam": { + name: "Tacle Lourd", + effect: "Le lanceur se jette sur la cible de tout son poids. Plus il est lourd par rapport à la cible, plus la puissance de cette capacité augmente." + }, + "synchronoise": { + name: "Synchropeine", + effect: "Des ondes mystérieuses blessent tous les Pokémon alentour qui sont du même type que le lanceur." + }, + "electroBall": { + name: "Boule Élek", + effect: "Le lanceur envoie une boule d’électricité. Plus la Vitesse du lanceur est élevée par rapport à celle de la cible, plus la puissance de la capacité augmente." + }, + "soak": { + name: "Détrempage", + effect: "Le lanceur projette beaucoup d’eau sur sa cible, qui devient de type Eau." + }, + "flameCharge": { + name: "Nitrocharge", + effect: "Le lanceur s’entoure de flammes pour attaquer la cible. Il se concentre et sa Vitesse augmente." + }, + "coil": { + name: "Enroulement", + effect: "Le lanceur s’enroule sur lui-même et se concentre. Son Attaque, sa Défense et sa Précision augmentent." + }, + "lowSweep": { + name: "Balayette", + effect: "Un coup rapide qui affecte la mobilité de la cible et diminue sa Vitesse." + }, + "acidSpray": { + name: "Bombe Acide", + effect: "Le lanceur projette un liquide acide qui fait fondre la cible, ce qui diminue beaucoup la Défense Spéciale de celle-ci." + }, + "foulPlay": { + name: "Tricherie", + effect: "Le lanceur utilise la force de la cible. Plus l’Attaque de celle-ci est élevée, plus le lanceur inflige de dégâts." + }, + "simpleBeam": { + name: "Rayon Simple", + effect: "Le lanceur envoie des ondes mystérieuses à la cible, dont le talent est remplacé par le talent Simple." + }, + "entrainment": { + name: "Ten-Danse", + effect: "Le lanceur danse sur un rythme étrange. Il force sa cible à l’imiter, ce qui lui fait adopter son talent." + }, + "afterYou": { + name: "Après Vous", + effect: "S’il est le premier à agir, le lanceur permet à sa cible d’utiliser une capacité juste après lui." + }, + "round": { + name: "Chant Canon", + effect: "Le lanceur attaque la cible en chantant. Si plusieurs Pokémon déclenchent cette attaque à la suite, la puissance augmente." + }, + "echoedVoice": { + name: "Écho", + effect: "Un cri retentissant blesse la cible. Si le lanceur ou d’autres Pokémon utilisent cette capacité à chaque tour, la puissance augmente." + }, + "chipAway": { + name: "Attrition", + effect: "Une attaque puissante quand l'ennemi baisse sa garde. Inflige des dégâts sans tenir compte des changements de stats." + }, + "clearSmog": { + name: "Bain de Smog", + effect: "Le lanceur projette de la boue bizarre sur la cible. Les changements de stats de la cible sont annulés." + }, + "storedPower": { + name: "Force Ajoutée", + effect: "Le lanceur attaque la cible avec une force cumulée. Plus les stats du lanceur sont augmentées, plus la puissance de cette capacité augmente." + }, + "quickGuard": { + name: "Prévention", + effect: "Protège le lanceur et ses alliés des attaques prioritaires." + }, + "allySwitch": { + name: "Interversion", + effect: "Le lanceur se téléporte à l’aide d’un pouvoir mystérieux. Il échange sa place avec celle d’un allié sur le terrain. Peut échouer si utilisée plusieurs fois de suite." + }, + "scald": { + name: "Ébullition", + effect: "Le lanceur projette un jet d’eau bouillante sur la cible, ce qui peut aussi la brûler (30% de chances)." + }, + "shellSmash": { + name: "Exuviation", + effect: "Le lanceur brise sa carapace. Il baisse sa Défense et sa Défense Spéciale, mais augmente beaucoup son Attaque, son Attaque Spéciale et sa Vitesse." + }, + "healPulse": { + name: "Vibra Soin", + effect: "Le lanceur projette une aura de bien-être qui fait récupérer la moitié de ses PV max à la cible." + }, + "hex": { + name: "Châtiment", + effect: "Une attaque acharnée qui cause davantage de dégâts à la cible si elle a une altération de statut." + }, + "skyDrop": { + name: "Chute Libre", + effect: "Le lanceur emmène l'ennemi dans les airs au premier tour et le lâche dans le vide au second. L'ennemi saisi ne peut pas attaquer." + }, + "shiftGear": { + name: "Chgt Vitesse", + effect: "Le lanceur fait tourner ses engrenages. Cela augmente son Attaque et augmente beaucoup sa Vitesse." + }, + "circleThrow": { + name: "Projection", + effect: "Le lanceur fait une projection sur un Pokémon ennemi et le remplace par un autre. Lors d’un combat contre un Pokémon sauvage seul, cela met fin au combat." + }, + "incinerate": { + name: "Calcination", + effect: "Des flammes calcinent la cible. Si elle tient un objet, une Baie par exemple, celui-ci est brûlé et devient inutilisable." + }, + "quash": { + name: "À la Queue", + effect: "Retient la cible de force, l’obligeant à agir en dernier." + }, + "acrobatics": { + name: "Acrobatie", + effect: "Le lanceur frappe la cible avec agilité. S’il ne tient pas d’objet, l’attaque inflige davantage de dégâts." + }, + "reflectType": { + name: "Copie-Type", + effect: "Le lanceur adopte le même type que la cible." + }, + "retaliate": { + name: "Vengeance", + effect: "Le lanceur venge un allié K.O. Si un Pokémon de l’équipe a été mis K.O. au tour d’avant, la puissance augmente." + }, + "finalGambit": { + name: "Tout ou Rien", + effect: "Une attaque très risquée. Le lanceur perd tous ses PV restants et inflige autant de dégâts à la cible." + }, + "bestow": { + name: "Passe-Cadeau", + effect: "Si la cible ne tient pas d'objet, le lanceur lui donne l'objet qu'il tient." + }, + "inferno": { + name: "Feu d'Enfer", + effect: "La cible est entourée d’un torrent de flammes ardentes qui la brûlent." + }, + "waterPledge": { + name: "Aire d'Eau", + effect: "Une masse d’eau s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire de Feu, la puissance augmente et un arc-en-ciel apparaît." + }, + "firePledge": { + name: "Aire de Feu", + effect: "Une masse de feu s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire d’Herbe, la puissance augmente et une mer de feu apparaît." + }, + "grassPledge": { + name: "Aire d'Herbe", + effect: "Une masse végétale s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire d’Eau, la puissance augmente et un marécage apparaît." + }, + "voltSwitch": { + name: "Change Éclair", + effect: "Après son attaque, le lanceur revient à toute vitesse et change de place avec un Pokémon de l'équipe prêt au combat." + }, + "struggleBug": { + name: "Survinsecte", + effect: "Le lanceur frappe en se débattant de toutes ses forces, et baisse l’Attaque Spéciale de la cible." + }, + "bulldoze": { + name: "Piétisol", + effect: "Le lanceur piétine le sol et inflige des dégâts à tous les Pokémon autour de lui. Baisse aussi leur Vitesse." + }, + "frostBreath": { + name: "Souffle Glacé", + effect: "Un souffle froid blesse la cible. L’effet est toujours critique." + }, + "dragonTail": { + name: "Draco-Queue", + effect: "Un coup puissant qui blesse la cible et l’envoie au loin. Lors d’un combat contre un Pokémon sauvage seul, met fin au combat." + }, + "workUp": { + name: "Rengorgement", + effect: "Le lanceur se rengorge et augmente son Attaque et son Attaque Spéciale." + }, + "electroweb": { + name: "Toile Élek", + effect: "Le lanceur attaque la cible en l’attrapant dans un filet électrique. Baisse aussi la Vitesse de la cible." + }, + "wildCharge": { + name: "Éclair Fou", + effect: "Une charge électrique violente qui blesse aussi légèrement le lanceur." + }, + "drillRun": { + name: "Tunnelier", + effect: "Le lanceur tourne sur lui-même comme une perceuse et se jette sur la cible. Taux de critiques élevé." + }, + "dualChop": { + name: "Double Baffe", + effect: "Le lanceur frappe l'ennemi deux fois d'affilée avec les parties les plus robustes de son corps." + }, + "heartStamp": { + name: "Crève-Coeur", + effect: "Déconcentre l'ennemi avec des mouvements mignons avant de le frapper violemment. Peut aussi l'apeurer (30% de chances)." + }, + "hornLeech": { + name: "Encornebois", + effect: "Un coup de cornes qui draine l’énergie de la cible. La capacité convertit la moitié des dégâts infligés en PV pour le lanceur." + }, + "sacredSword": { + name: "Lame Sainte", + effect: "Un violent coup d’épée qui lacère la cible et lui inflige des dégâts en ignorant ses changements de stats." + }, + "razorShell": { + name: "Coqui-Lame", + effect: "Un coquillage aiguisé lacère la cible et peut aussi baisser sa Défense." + }, + "heatCrash": { + name: "Tacle Feu", + effect: "Le lanceur projette son corps enflammé contre la cible. Plus il est lourd par rapport à la cible, plus la puissance de cette capacité augmente." + }, + "leafTornado": { + name: "Phytomixeur", + effect: "L'ennemi est pris dans un tourbillon de feuilles acérées. Peut aussi baisser sa Précision." + }, + "steamroller": { + name: "Bulldoboule", + effect: "Le lanceur se roule en boule et écrase son ennemi. Peut aussi l'apeurer (30% de chances)." + }, + "cottonGuard": { + name: "Cotogarde", + effect: "Le lanceur se protège en s’emmitouflant dans du coton. Sa Défense augmente énormément." + }, + "nightDaze": { + name: "Explonuit", + effect: "Le lanceur attaque avec une onde de choc ténébreuse qui peut aussi baisser la Précision de la cible." + }, + "psystrike": { + name: "Frappe Psy", + effect: "Le lanceur matérialise des ondes mystérieuses qu’il projette sur la cible, ce qui inflige des dégâts physiques à celle-ci." + }, + "tailSlap": { + name: "Plumo-Queue", + effect: "Le lanceur frappe la cible de deux à cinq fois d’affilée avec sa queue robuste." + }, + "hurricane": { + name: "Vent Violent", + effect: "Le lanceur déclenche une tempête de vents violents qui s’abat sur la cible, et peut aussi la rendre confuse." + }, + "headCharge": { + name: "Peignée", + effect: "Le lanceur donne un coup avec sa tête couronnée d'une fière crinière. Blesse aussi légèrement le lanceur." + }, + "gearGrind": { + name: "Lancécrou", + effect: "Le lanceur jette deux écrous d'acier qui frappent l'ennemi deux fois d'affilée." + }, + "searingShot": { + name: "Incendie", + effect: "Des boules de feu s'abattent sur tous les Pokémon autour du lanceur. Peut aussi les brûler (30% de chances)." + }, + "technoBlast": { + name: "Techno-Buster", + effect: "Le lanceur projette un rayon lumineux sur l'ennemi. Le type varie selon le Module que tient le lanceur." + }, + "relicSong": { + name: "Chant Antique", + effect: "Le lanceur attaque la cible en lui chantant une chanson d’un autre temps qui peut aussi l’endormir." + }, + "secretSword": { + name: "Lame Ointe", + effect: "L'ennemi est lacéré par une longue corne. Son pouvoir mystérieux inflige des dégâts physiques." + }, + "glaciate": { + name: "Ère Glaciaire", + effect: "Un souffle de vent qui congèle tout sur son passage s'abat sur l'ennemi. Réduit aussi sa Vitesse." + }, + "boltStrike": { + name: "Charge Foudre", + effect: "Le lanceur s'enveloppe d'une charge électrique surpuissante et se jette sur l'ennemi. Peut aussi le paralyser (20% de chances)." + }, + "blueFlare": { + name: "Flamme Bleue", + effect: "De magnifiques et redoutables flammes bleues fondent sur l'ennemi. Peut aussi le brûler (20% de chances)." + }, + "fieryDance": { + name: "Danse du Feu", + effect: "Le lanceur s’enveloppe de flammes et attaque la cible, Cela peut aussi augmenter l’Attaque Spéciale du lanceur." + }, + "freezeShock": { + name: "Éclair Gelé", + effect: "Projette un bloc de glace électrifié sur l'ennemi au second tour. Peut aussi le paralyser (30% de chances)." + }, + "iceBurn": { + name: "Feu Glacé", + effect: "Au second tour, le lanceur projette un souffle de vent glacial dévastateur sur l'ennemi. Peut aussi le brûler (30% de chances)." + }, + "snarl": { + name: "Aboiement", + effect: "Le lanceur hurle sur la cible et baisse l’Attaque Spéciale de celle-ci." + }, + "icicleCrash": { + name: "Chute Glace", + effect: "Le lanceur envoie de gros blocs de glace sur la cible pour lui infliger des dégâts, ce qui peut aussi l’apeurer (30% de chances)." + }, + "vCreate": { + name: "Coup Victoire", + effect: "Le lanceur fait jaillir des flammes ardentes de son front et se jette sur la cible, ce qui baisse la Défense, la Défense Spéciale et la Vitesse du lanceur." + }, + "fusionFlare": { + name: "Flamme Croix", + effect: "Projette une boule de feu gigantesque. L'effet augmente sous l'influence d'Éclair Croix." + }, + "fusionBolt": { + name: "Éclair Croix", + effect: "Projette un orbe électrique gigantesque. L'effet augmente sous l'influence de Flamme Croix." + }, + "flyingPress": { + name: "Flying Press", + effect: "Une attaque en piqué depuis le ciel, à la fois de type Combat et de type Vol." + }, + "matBlock": { + name: "Tatamigaeshi", + effect: "Retourne un tatami pour bloquer, comme avec un bouclier, les capacités visant le lanceur ou ses alliés. N'a pas d'effet sur les attaques de statut." + }, + "belch": { + name: "Éructation", + effect: "Le lanceur se tourne vers la cible et lui éructe dessus, infligeant des dégâts. Ne fonctionne que si le lanceur consomme une Baie tenue." + }, + "rototiller": { + name: "Fertilisation", + effect: "Laboure le sol et le rend plus fertile. Augmente l'Attaque et l'Attaque Spéciale des Pokémon de type Plante." + }, + "stickyWeb": { + name: "Toile Gluante", + effect: "Le lanceur déploie une toile visqueuse autour de la cible qui ralentit la Vitesse de tout adversaire entrant au combat." + }, + "fellStinger": { + name: "Dard Mortel", + effect: "Le lanceur augmente énormément son Attaque si une cible est mise K.O. par cette capacité." + }, + "phantomForce": { + name: "Hantise", + effect: "Le lanceur disparaît au premier tour et frappe au second. Cette attaque passe outre les protections." + }, + "trickOrTreat": { + name: "Halloween", + effect: "Insuffle à la cible l'esprit d'Halloween, et ajoute le type Spectre à ses types actuels." + }, + "nobleRoar": { + name: "Râle Mâle", + effect: "Le lanceur pousse un rugissement qui intimide la cible et diminue l’Attaque et l’Attaque Spéciale de celle-ci." + }, + "ionDeluge": { + name: "Déluge Plasmique", + effect: "Diffuse des particules saturées d'électricité qui transforment les capacités de type Normal en capacités de type Électrik." + }, + "parabolicCharge": { + name: "Parabocharge", + effect: "Inflige des dégâts à tous les Pokémon autour du lanceur. Il récupère en PV la moitié des dégâts infligés." + }, + "forestsCurse": { + name: "Maléfice Sylvain", + effect: "La cible est charmée par l'esprit de la forêt. Le type Plante est ajouté à ses types actuels." + }, + "petalBlizzard": { + name: "Tempête Florale", + effect: "Déclenche une violente tempête de fleurs qui inflige des dégâts à tous les Pokémon alentour." + }, + "freezeDry": { + name: "Lyophilisation", + effect: "Le lanceur refroidit violemment la cible et peut la geler (10% de chances). Super efficace sur les Pokémon de type Eau." + }, + "disarmingVoice": { + name: "Voix Enjôleuse", + effect: "Le lanceur laisse s’échapper une voix enchanteresse qui inflige des dégâts psychiques à la cible. N’échoue jamais." + }, + "partingShot": { + name: "Dernier Mot", + effect: "Le lanceur menace la cible dans une ultime tirade avant de changer de place avec un autre Pokémon. Réduit l’Attaque et l’Attaque Spéciale de la cible." + }, + "topsyTurvy": { + name: "Renversement", + effect: "Inverse tous les changements de stats de la cible." + }, + "drainingKiss": { + name: "Vampibaiser", + effect: "Le lanceur aspire la force vitale de la cible par un baiser qui rend au lanceur un nombre de PV supérieur ou égal à la moitié des dégâts infligés." + }, + "craftyShield": { + name: "Vigilance", + effect: "Utilise une force mystérieuse pour protéger l'équipe des capacités de statut. Ne protège pas des autres capacités." + }, + "flowerShield": { + name: "Garde Florale", + effect: "Grâce à une force mystérieuse, la Défense de tous les Pokémon Plante au combat augmente." + }, + "grassyTerrain": { + name: "Champ Herbu", + effect: "Pendant cinq tours, les Pokémon au sol récupèrent quelques PV à chaque tour et la puissance des capacités de type Plante augmente." + }, + "mistyTerrain": { + name: "Champ Brumeux", + effect: "Pendant cinq tours, les Pokémon au sol ne peuvent pas subir d’altération de statut et les dégâts infligés par les capacités de type Dragon sont divisés par deux." + }, + "electrify": { + name: "Électrisation", + effect: "Si le lanceur attaque avant la cible, les capacités de celle-ci seront de type Électrik jusqu'à la fin du tour." + }, + "playRough": { + name: "Câlinerie", + effect: "Le lanceur attaque la cible en lui faisant des câlineries, ce qui peut aussi diminuer l’Attaque de celle-ci." + }, + "fairyWind": { + name: "Vent Féérique", + effect: "Le lanceur déchaîne un vent magique qui cingle la cible." + }, + "moonblast": { + name: "Pouvoir Lunaire", + effect: "Le lanceur attaque la cible grâce au pouvoir de la lune, ce qui peut diminuer l’Attaque Spéciale de celle-ci." + }, + "boomburst": { + name: "Bang Sonique", + effect: "Attaque les Pokémon alentour grâce à une onde sonore assourdissante qui détruit tout sur son passage." + }, + "fairyLock": { + name: "Verrou Enchanté", + effect: "Des chaînes entourent la zone de combat, empêchant tous les Pokémon de quitter le terrain au tour suivant." + }, + "kingsShield": { + name: "Bouclier Royal", + effect: "Prend une posture défensive pour bloquer les dégâts. Diminue beaucoup l'Attaque de tout Pokémon qui entre en contact avec le lanceur." + }, + "playNice": { + name: "Camaraderie", + effect: "La cible se lie d’amitié avec le lanceur et perd sa combativité, ce qui diminue son Attaque." + }, + "confide": { + name: "Confidence", + effect: "Le lanceur dévoile des secrets à la cible, qui perd alors sa concentration et voit son Attaque Spéciale diminuer." + }, + "diamondStorm": { + name: "Orage Adamantin", + effect: "Provoque une tempête de diamants qui inflige des dégâts. Peut beaucoup augmenter la Défense du lanceur." + }, + "steamEruption": { + name: "Jet de Vapeur", + effect: "Le lanceur projette de la vapeur extrêmement chaude sur la cible, ce qui peut aussi la brûler (30% de chances)." + }, + "hyperspaceHole": { + name: "TrouDimensionnel", + effect: "Le lanceur crée une faille dimensionnelle pour attaquer soudainement la cible de côté. Ignore même les capacités comme Abri ou Détection." + }, + "waterShuriken": { + name: "Sheauriken", + effect: "Le lanceur attaque la cible avec des shuriken de mucus. Cette capacité frappe en priorité deux à cinq fois d’affilée en un tour." + }, + "mysticalFire": { + name: "Feu Ensorcelé", + effect: "Le lanceur attaque en soufflant des flammes brûlantes par la bouche et diminue l’Attaque Spéciale de la cible." + }, + "spikyShield": { + name: "Pico-Défense", + effect: "Protège des attaques, et diminue les PV de tout assaillant qui entre en contact avec le lanceur." + }, + "aromaticMist": { + name: "Brume Capiteuse", + effect: "Grâce à un parfum mystérieux, augmente la Défense Spéciale d’un allié." + }, + "eerieImpulse": { + name: "Ondes Étranges", + effect: "Le corps du lanceur produit des ondes anormales qui enveloppent la cible et diminuent beaucoup son Attaque Spéciale." + }, + "venomDrench": { + name: "Piège de Venin", + effect: "Sécrète un liquide empoisonné. Diminue l'Attaque, l'Attaque Spéciale et la Vitesse de l'ennemi empoisonné." + }, + "powder": { + name: "Nuée de Poudre", + effect: "L'ennemi est pris dans un nuage de poudre. S'il utilise une capacité de type Feu lors du même tour, le nuage explose et lui inflige des dégâts." + }, + "geomancy": { + name: "Géo-Contrôle", + effect: "Le lanceur absorbe de l'énergie au premier tour et augmente beaucoup son Attaque Spéciale, sa Défense Spéciale et sa Vitesse au second." + }, + "magneticFlux": { + name: "Magné-Contrôle", + effect: "Manipule les champs magnétiques pour augmenter la Défense et la Défense Spéciale des Pokémon alliés dotés du talent Plus ou du talent Moins." + }, + "happyHour": { + name: "Étrennes", + effect: "Utilisée pendant un combat, multiplie par deux l’argent gagné à la fin." + }, + "electricTerrain": { + name: "Champ Électrifié", + effect: "Pendant cinq tours, le terrain se charge d’électricité. Les Pokémon au sol ne peuvent pas s’endormir et la puissance des capacités de type Électrik augmente." + }, + "dazzlingGleam": { + name: "Éclat Magique", + effect: "Le lanceur libère une puissante décharge lumineuse qui inflige des dégâts à l’ennemi." + }, + "celebrate": { + name: "Célébration", + effect: "Le Pokémon vous souhaite plein de bonnes choses pour cet évènement spécial." + }, + "holdHands": { + name: "Mains Jointes", + effect: "Le lanceur et un allié se prennent la main, ce qui les rend heureux." + }, + "babyDollEyes": { + name: "Regard Touchant", + effect: "Le lanceur fixe la cible d’un air très attendrissant qui la touche et diminue son Attaque. Agit en priorité." + }, + "nuzzle": { + name: "Frotte-Frimousse", + effect: "Le lanceur attaque en frottant ses bajoues chargées d’électricité, ce qui paralyse la cible." + }, + "holdBack": { + name: "Retenue", + effect: "Le lanceur attaque avec retenue, et laisse au moins 1 PV à la cible." + }, + "infestation": { + name: "Harcèlement", + effect: "Cette attaque perdure pendant quatre à cinq tours. La cible ne peut pas quitter le terrain pendant cette période." + }, + "powerUpPunch": { + name: "Poing Boost", + effect: "À force de frapper, les poings deviennent plus durs. Augmente l'Attaque du lanceur si l'ennemi est touché." + }, + "oblivionWing": { + name: "Mort'Ailes", + effect: "Vole l'énergie de la cible. Rend au lanceur un nombre de PV supérieur ou égal à la moitié des dégâts infligés." + }, + "thousandArrows": { + name: "Myria-Flèches", + effect: "Touche même les Pokémon dans les airs. Dans ce cas, la cible retombe au sol." + }, + "thousandWaves": { + name: "Myria-Vagues", + effect: "Attaque avec des vagues glissant au sol. L'ennemi pris dedans ne peut pas s'échapper." + }, + "landsWrath": { + name: "Force Chtonienne", + effect: "Utilise la puissance du sol et la concentre sur l'ennemi pour infliger des dégâts." + }, + "lightOfRuin": { + name: "Lumière du Néant", + effect: "Utilise la puissance de la fleur Éternelle pour lancer un formidable rayon d'énergie. Blesse aussi gravement le lanceur." + }, + "originPulse": { + name: "Onde Originelle", + effect: "Le lanceur projette une aura, et d’innombrables rayons lumineux d’un bleu étincelant s’abattent sur la cible." + }, + "precipiceBlades": { + name: "Lame Pangéenne", + effect: "Le Pokémon transforme la puissance de la terre et attaque la cible avec une lame acérée." + }, + "dragonAscent": { + name: "Draco-Ascension", + effect: "Le Pokémon s’abat à toute vitesse sur la cible depuis les hautes couches de l’atmosphère. Baisse la Défense et la Défense Spéciale du lanceur." + }, + "hyperspaceFury": { + name: "Furie Dimension", + effect: "Le Pokémon utilise sa multitude de bras pour infliger une nuée de coups qui ignorent les capacités telles qu’Abri ou Détection. Baisse la Défense du lanceur." + }, + "breakneckBlitzPhysical": { + name: "Turbo-Charge Bulldozer", + effect: "Le Pokémon utilise la Force Z pour s'élancer à toute vitesse sur l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "breakneckBlitzSpecial": { + name: "Turbo-Charge Bulldozer", + effect: "Dummy Data" + }, + "allOutPummelingPhysical": { + name: "Combo Hyper-Furie", + effect: "Le Pokémon utilise la Force Z pour créer une boule d'énergie qu'il projette sur l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "allOutPummelingSpecial": { + name: "Combo Hyper-Furie", + effect: "Dummy Data" + }, + "supersonicSkystrikePhysical": { + name: "Piqué Supersonique", + effect: "Le Pokémon utilise la Force Z pour s'envoler très haut dans le ciel avant de plonger sur l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "supersonicSkystrikeSpecial": { + name: "Piqué Supersonique", + effect: "Dummy Data" + }, + "acidDownpourPhysical": { + name: "Déluge Causti-Toxique", + effect: "Le Pokémon utilise la Force Z pour répandre un marécage empoisonné où l'adversaire sombre. La puissance varie selon celle de la capacité originale." + }, + "acidDownpourSpecial": { + name: "Déluge Causti-Toxique", + effect: "Dummy Data" + }, + "tectonicRagePhysical": { + name: "Éruption Géo-Sismique", + effect: "Le Pokémon utilise la Force Z pour entraîner l'adversaire dans les profondeurs de la terre. La puissance varie selon celle de la capacité originale." + }, + "tectonicRageSpecial": { + name: "Éruption Géo-Sismique", + effect: "Dummy Data" + }, + "continentalCrushPhysical": { + name: "Apocalypse Gigalithique", + effect: "Le Pokémon utilise la Force Z pour créer un immense rocher et écraser l'adversaire avec. La puissance varie selon celle de la capacité originale." + }, + "continentalCrushSpecial": { + name: "Apocalypse Gigalithique", + effect: "Dummy Data" + }, + "savageSpinOutPhysical": { + name: "Cocon Fatal", + effect: "Le Pokémon utilise la Force Z pour cracher de longs fils de soie et enserrer l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "savageSpinOutSpecial": { + name: "Cocon Fatal", + effect: "Dummy Data" + }, + "neverEndingNightmarePhysical": { + name: "Appel des Ombres Éternelles", + effect: "Le Pokémon utilise la Force Z pour invoquer des esprits rancuniers qui s'abattent sur l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "neverEndingNightmareSpecial": { + name: "Appel des Ombres Éternelles", + effect: "Dummy Data" + }, + "corkscrewCrashPhysical": { + name: "Vrille Maximum", + effect: "Le Pokémon utilise la Force Z pour tourner à toute vitesse et écraser l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "corkscrewCrashSpecial": { + name: "Vrille Maximum", + effect: "Dummy Data" + }, + "infernoOverdrivePhysical": { + name: "Pyro-Explosion Cataclysmique", + effect: "Le Pokémon utilise la Force Z pour cracher une boule de feu qui réduit l'adversaire en cendres. La puissance varie selon celle de la capacité originale." + }, + "infernoOverdriveSpecial": { + name: "Pyro-Explosion Cataclysmique", + effect: "Dummy Data" + }, + "hydroVortexPhysical": { + name: "Super Tourbillon Abyssal", + effect: "Le Pokémon utilise la Force Z pour créer un tourbillon gigantesque qui avale l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "hydroVortexSpecial": { + name: "Super Tourbillon Abyssal", + effect: "Dummy Data" + }, + "bloomDoomPhysical": { + name: "Pétalexplosion Éblouissante", + effect: "Le Pokémon utilise la Force Z pour libérer l'énergie des plantes et attaquer l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "bloomDoomSpecial": { + name: "Pétalexplosion Éblouissante", + effect: "Dummu Data" + }, + "gigavoltHavocPhysical": { + name: "Fulguro-Lance Gigavolt", + effect: "Le Pokémon utilise la Force Z pour générer un courant électrique puissant qu'il projette sur l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "gigavoltHavocSpecial": { + name: "Fulguro-Lance Gigavolt", + effect: "Dummy Data" + }, + "shatteredPsychePhysical": { + name: "Psycho-Pulvérisation EX", + effect: "Le Pokémon utilise la Force Z pour manipuler l'adversaire et lui infliger de sérieux dégâts. La puissance varie selon celle de la capacité originale." + }, + "shatteredPsycheSpecial": { + name: "Psycho-Pulvérisation EX", + effect: "Dummy Data" + }, + "subzeroSlammerPhysical": { + name: "Laser Cryogénique", + effect: "Le Pokémon utilise la Force Z pour baisser la température brutalement et congeler l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "subzeroSlammerSpecial": { + name: "Laser Cryogénique", + effect: "Dummy Data" + }, + "devastatingDrakePhysical": { + name: "Chaos Draconique", + effect: "Le Pokémon utilise la Force Z pour matérialiser son aura et assaillir l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "devastatingDrakeSpecial": { + name: "Chaos Draconique", + effect: "Dummy Data" + }, + "blackHoleEclipsePhysical": { + name: "Trou Noir des Ombres", + effect: "Le Pokémon utilise la Force Z pour rassembler l'énergie négative et y aspirer l'adversaire. La puissance varie selon celle de la capacité originale." + }, + "blackHoleEclipseSpecial": { + name: "Trou Noir des Ombres", + effect: "Dummy Data" + }, + "twinkleTacklePhysical": { + name: "Impact Choupinova", + effect: "Le Pokémon utilise la Force Z pour créer une dimension irréelle où l'adversaire est à sa merci. La puissance varie selon celle de la capacité originale." + }, + "twinkleTackleSpecial": { + name: "Impact Choupinova", + effect: "Dummy Data" + }, + "catastropika": { + name: "Pikachute Foudroyante", + effect: "Pikachu utilise la Force Z pour concentrer toute son électricité avant de se jeter à toute vitesse sur l'adversaire." + }, + "shoreUp": { + name: "Amass'Sable", + effect: "Le lanceur récupère jusqu’à la moitié de ses PV max. Durant une tempête de sable, il en récupère encore plus." + }, + "firstImpression": { + name: "Escarmouche", + effect: "Une capacité très puissante, mais qui ne fonctionne que lorsque le lanceur entre au combat." + }, + "banefulBunker": { + name: "Blockhaus", + effect: "Le lanceur se protège contre les attaques, et si un assaillant utilise une attaque directe contre lui, il l’empoisonne." + }, + "spiritShackle": { + name: "Tisse Ombre", + effect: "Une attaque qui coud la cible à son ombre, ce qui l’empêche de s’enfuir." + }, + "darkestLariat": { + name: "Dark Lariat", + effect: "Le lanceur étend les bras et frappe l’adversaire en tournant violemment. Il inflige des dégâts et ignore les changements de stats de la cible." + }, + "sparklingAria": { + name: "Aria de l'Écume", + effect: "Le lanceur émet plusieurs bulles en chantant. Soigne les brûlures des Pokémon touchés par ces bulles." + }, + "iceHammer": { + name: "Marteau de Glace", + effect: "Le lanceur donne un puissant coup de poing à la cible, ce qui réduit la Vitesse du lanceur." + }, + "floralHealing": { + name: "Soin Floral", + effect: "Rend la moitié de ses PV max à la cible. Plus efficace sur un Champ Herbu." + }, + "highHorsepower": { + name: "Cavalerie Lourde", + effect: "Le lanceur attaque violemment en utilisant tout son poids." + }, + "strengthSap": { + name: "Vole-Force", + effect: "Rend au lanceur une quantité de PV équivalente à la stat d’Attaque de la cible, puis baisse celle-ci." + }, + "solarBlade": { + name: "Lame Solaire", + effect: "Le lanceur absorbe une grande quantité de lumière au premier tour et attaque au second tour en libérant cette énergie sous la forme d’une lame." + }, + "leafage": { + name: "Feuillage", + effect: "Le lanceur attaque la cible avec des feuilles." + }, + "spotlight": { + name: "Projecteur", + effect: "Met un Pokémon sous le feu des projecteurs et force tout le monde à le viser." + }, + "toxicThread": { + name: "Fil Toxique", + effect: "Tisse un fil imprégné de venin. Empoisonne la cible et baisse sa Vitesse." + }, + "laserFocus": { + name: "Affilage", + effect: "Le lanceur se concentre pour être sûr de porter un coup critique au tour suivant." + }, + "gearUp": { + name: "Engrenage", + effect: "Change de réglage pour augmenter l'Attaque et l'Attaque Spéciale des alliés ayant les talents Plus ou Minus." + }, + "throatChop": { + name: "Exécu-Son", + effect: "Inflige une douleur tellement violente à la cible qu’elle ne peut plus émettre de sons pendant deux tours." + }, + "pollenPuff": { + name: "Boule Pollen", + effect: "Sur un ennemi, le lanceur envoie une boule explosive qui fait des dégâts. Sur un allié, il envoie du bon pollen nutritif qui fait récupérer des PV." + }, + "anchorShot": { + name: "Ancrage", + effect: "Le lanceur jette son ancre sur la cible pour l'attaquer. Une fois accrochée, elle l'empêche de s'enfuir." + }, + "psychicTerrain": { + name: "Champ Psychique", + effect: "Pendant cinq tours, les Pokémon au sol ne peuvent plus subir d’attaques prioritaires et la puissance des capacités de type Psy augmente." + }, + "lunge": { + name: "Furie-Bond", + effect: "Le lanceur se jette sur la cible de toutes ses forces pour lui infliger des dégâts et baisser son Attaque." + }, + "fireLash": { + name: "Fouet de Feu", + effect: "Frappe la cible avec un fouet incandescent et baisse sa Défense." + }, + "powerTrip": { + name: "Arrogance", + effect: "Ivre de puissance, le lanceur attaque de toutes ses forces. Plus ses stats ont été augmentées, plus la puissance de cette capacité augmente." + }, + "burnUp": { + name: "Flamme Ultime", + effect: "Le Pokémon se consume et les flammes de son corps infligent des dégâts élevés à la cible. Le lanceur perd le type Feu." + }, + "speedSwap": { + name: "Permuvitesse", + effect: "Intervertit la Vitesse du lanceur et celle de la cible." + }, + "smartStrike": { + name: "Estocorne", + effect: "Le lanceur transperce la cible avec sa corne effilée. N’échoue jamais." + }, + "purify": { + name: "Purification", + effect: "Le lanceur soigne les altérations de statut de la cible, ce qui lui permet de regagner des PV." + }, + "revelationDance": { + name: "Danse Éveil", + effect: "Le lanceur attaque en dansant avec enthousiasme. Le type de la capacité est le même que celui du lanceur." + }, + "coreEnforcer": { + name: "Sanction Suprême", + effect: "La cible subit des dégâts et, si elle a déjà agi à ce tour, elle perd aussi son talent." + }, + "tropKick": { + name: "Botte Sucrette", + effect: "Un coup de pied chaud comme les tropiques qui inflige des dégâts à la cible et baisse son Attaque." + }, + "instruct": { + name: "Sommation", + effect: "Force la cible à lancer immédiatement la dernière capacité qu’elle a utilisée." + }, + "beakBlast": { + name: "Bec-Canon", + effect: "Le lanceur fait chauffer son bec avant d'attaquer. S'il subit une attaque directe pendant la montée en température, l'attaquant sera brûlé." + }, + "clangingScales": { + name: "Vibrécaille", + effect: "Le lanceur déclenche un vacarme en frottant ses écailles les unes contre les autres pour attaquer. Baisse la Défense du lanceur." + }, + "dragonHammer": { + name: "Draco-Marteau", + effect: "Le lanceur utilise son corps comme un véritable marteau pour écraser la cible." + }, + "brutalSwing": { + name: "Centrifugifle", + effect: "Le lanceur pivote pour prendre de l’élan et infliger des dégâts." + }, + "auroraVeil": { + name: "Voile Aurore", + effect: "Réduit les dégâts causés par les capacités physiques et spéciales durant cinq tours. Ne peut être utilisée que lorsqu’il neige." + }, + "sinisterArrowRaid": { + name: "Fureur des Plumes Spectrales", + effect: "Archéduc utilise la Force Z pour créer un nuage de flèches qui transpercent la cible." + }, + "maliciousMoonsault": { + name: "Dark Body Press", + effect: "Félinferno utilise la Force Z pour gonfler ses muscles et écraser la cible de toutes ses forces." + }, + "oceanicOperetta": { + name: "Symphonie des Ondines", + effect: "Oratoria utilise la Force Z pour rassembler une grande quantité d'eau et la projeter sur la cible à pleine puissance." + }, + "guardianOfAlola": { + name: "Colère du Gardien d'Alola", + effect: "Le Pokémon Tutélaire utilise la Force Z et déchaîne toute la puissance d'Alola sur sa cible. Inflige des dégâts en fonction des PV restants de celle-ci." + }, + "soulStealing7StarStrike": { + name: "Fauche-Âme des Sept Étoiles", + effect: "Marshadow concentre toute la Force Z dans ses poings et ses pieds pour infliger un déluge de coups à la cible." + }, + "stokedSparksurfer": { + name: "Électro-Surf Survolté", + effect: "Le Raichu de la région d'Alola utilise la Force Z pour frapper la cible et la paralyser." + }, + "pulverizingPancake": { + name: "Gare au Ronflex", + effect: "Ronflex utilise la Force Z pour montrer ce qu'il a dans le ventre et écraser la cible de tout son poids." + }, + "extremeEvoboost": { + name: "Neuf pour Un", + effect: "Évoli utilise la Force Z pour emprunter la puissance de tous ses amis évolués et beaucoup augmenter toutes ses stats." + }, + "genesisSupernova": { + name: "Supernova Originelle", + effect: "Mew utilise la Force Z pour attaquer la cible. Le terrain devient un Champ Psychique." + }, + "shellTrap": { + name: "Carapiège", + effect: "Pose une carapace piégée. Si l'adversaire utilise une capacité physique, la carapace explose et lui inflige des dégâts." + }, + "fleurCannon": { + name: "Canon Floral", + effect: "Envoie un rayon laser dévastateur. Baisse beaucoup l’Attaque Spéciale du lanceur." + }, + "psychicFangs": { + name: "Psycho-Croc", + effect: "Le lanceur mord la cible avec ses pouvoirs psychiques. Brise aussi les barrières comme Mur Lumière et Protection." + }, + "stompingTantrum": { + name: "Trépignement", + effect: "Le lanceur attaque en utilisant sa frustration. S’il a utilisé une capacité qui a échoué au tour précédent, la puissance de Trépignement est doublée." + }, + "shadowBone": { + name: "Os Ombre", + effect: "Le lanceur frappe avec un os possédé par l'âme d'un défunt. Peut aussi baisser la Défense de la cible." + }, + "accelerock": { + name: "Vif Roc", + effect: "Le lanceur charge la cible à toute vitesse. Frappe en priorité." + }, + "liquidation": { + name: "Aqua-Brèche", + effect: "Le lanceur utilise la force de l’eau pour attaquer. Peut aussi baisser la Défense de la cible." + }, + "prismaticLaser": { + name: "Laser Prisme", + effect: "Le lanceur utilise la puissance d'un prisme pour envoyer un laser destructeur, mais il doit se reposer au tour suivant." + }, + "spectralThief": { + name: "Clepto-Mânes", + effect: "Le lanceur plonge dans l'ombre de la cible, vole ses augmentations de stats et l'attaque." + }, + "sunsteelStrike": { + name: "Choc Météore", + effect: "Le lanceur fonce sur la cible à la vitesse d'une météorite. Ignore le talent de l'ennemi." + }, + "moongeistBeam": { + name: "Rayon Spectral", + effect: "Le lanceur attaque avec un rayon de lumière mystérieux. Ignore le talent de la cible." + }, + "tearfulLook": { + name: "Larme à l'Oeil", + effect: "Le lanceur regarde la cible avec des yeux remplis de larmes. Celle-ci perd toute combativité et voit son Attaque et son Attaque Spéciale baisser." + }, + "zingZap": { + name: "Électrikipik", + effect: "Le lanceur fonce sur la cible et lui envoie un puissant choc électrique, ce qui peut aussi l’effrayer." + }, + "naturesMadness": { + name: "Ire de la Nature", + effect: "Le lanceur déchaîne toute la colère de la nature pour baisser les PV de la cible de moitié." + }, + "multiAttack": { + name: "Coup Varia-Type", + effect: "Le Pokémon s'entoure d'une puissante énergie avant de foncer sur sa cible. Le type de la capacité dépend de la ROM installée." + }, + "tenMillionVoltThunderbolt": { + name: "Giga-Tonnerre", + effect: "Le Pikachu à casquette utilise la Force Z pour augmenter sa puissance électrique avant de la déchaîner sur la cible. Taux de critique élevé." + }, + "mindBlown": { + name: "Caboche-Kaboum", + effect: "Le lanceur fait exploser sa tête pour attaquer toutes les cibles autour de lui. Il subit aussi des dégâts." + }, + "plasmaFists": { + name: "Plasma Punch", + effect: "Le lanceur attaque en projetant de l'électricité avec ses poings. Convertit les capacités de type Normal en type Électrik." + }, + "photonGeyser": { + name: "Photo-Geyser", + effect: "Le lanceur fait jaillir un pilier de lumière. Compare l'Attaque et l'Attaque Spéciale, et utilise celle qui infligera le plus de dégâts." + }, + "lightThatBurnsTheSky": { + name: "Apocalypsis Luminis", + effect: "Compare l'Attaque et l'Attaque Spéciale, et utilise celle qui infligera le plus de dégâts. Ignore le talent de la cible." + }, + "searingSunrazeSmash": { + name: "Hélio-Choc Dévastateur", + effect: "Baigné dans la Force Z, Solgaleo attaque en déchaînant toute sa puissance. Ignore le talent de la cible." + }, + "menacingMoonrazeMaelstrom": { + name: "Rayons Séléno-Explosifs", + effect: "Baigné dans la Force Z, Lunala attaque en déchaînant toute sa puissance. Ignore le talent de la cible." + }, + "letsSnuggleForever": { + name: "Patati-Patattrape", + effect: "Mimiqui concentre toute la Force Z dans son corps, et attaque dans le plus grand fracas !" + }, + "splinteredStormshards": { + name: "Hurlement des Roches-Lames", + effect: "Lougaroc utilise la Force Z pour attaquer la cible de toutes ses forces. Efface aussi tout Champ existant." + }, + "clangorousSoulblaze": { + name: "Dracacophonie Flamboyante", + effect: "Ékaïser utilise la Force Z pour frapper l'ennemi de toutes ses forces. Augmente aussi ses stats." + }, + "zippyZap": { + name: "Pika-Sprint", + effect: "Une attaque électrique rapide comme l'éclair qui inflige un coup critique à coup sûr. Frappe en priorité." + }, + "splishySplash": { + name: "Pika-Splash", + effect: "Pikachu frappe l'adversaire avec une vague géante chargée d'électricité. Peut aussi paralyser l'ennemi." + }, + "floatyFall": { + name: "Pika-Piqué", + effect: "Pikachu prend de la hauteur avant de fondre sur son adversaire. Peut aussi apeurer l'ennemi." + }, + "pikaPapow": { + name: "Pika-Fracas", + effect: "Plus le lanceur est heureux, plus l'attaque est puissante." + }, + "bouncyBubble": { + name: "Évo-Thalasso", + effect: "Évoli frappe l'adversaire avec des bulles d'eau qu'il absorbe ensuite pour récupérer un nombre de PV égal à la moitié des dégâts infligés à l'ennemi." + }, + "buzzyBuzz": { + name: "Évo-Dynamo", + effect: "Une attaque qui foudroie et paralyse l'adversaire." + }, + "sizzlySlide": { + name: "Évo-Flambo", + effect: "Évoli s'embrase et percure violemment l'adversaire. Brûle aussi l'ennemi." + }, + "glitzyGlow": { + name: "Évo-Psycho", + effect: "Évoli submerge l'adversaire sous un flot d'ondes psychiques et crée un mur fabuleux qui réduit les dégâts causés par les attaques spéciales de l'ennemi" + }, + "baddyBad": { + name: "Évo-Ténébro", + effect: "Évoli fait appel à son côté sombre pour attaquer l'adversaire et créer un mur fabuleux qui réduit les dégâts causés par les attaques physiques de l'ennemi." + }, + "sappySeed": { + name: "Évo-Écolo", + effect: "Une liane géante surgit du sol et bombarde l'adversaire de graines qui lui dérobent des PV à chaque tour. Ces PV sont ensuite absorbés par Évoli." + }, + "freezyFrost": { + name: "Évo-Congélo", + effect: "Évoli frappe l'adversaire avec un cristal de buée noire gelée. Annule les changements de stats de tous les Pokémon au combat." + }, + "sparklySwirl": { + name: "Évo-Fabulo", + effect: "Une attaque qui enserre l'adversaire dans un tourbillon de senteurs oppressantes. Guérit toutes les altérations de statut de l'équipe." + }, + "veeveeVolley": { + name: "Évo-Chardasso", + effect: "Le lanceur lance une attaque dès lors qu'un signe apparaît sur le terrain. Les dégâts infligés sont proportionnels à l'affection de votre Pokémon" + }, + "doubleIronBash": { + name: "Écrous d'Poing", + effect: "Le lanceur fait pivoter l'écrou de sa poitrine deux fois d'affilée pour frapper l'adversaire avec ses bras. Peut apeurer l'ennemi (30% de chances)." + }, + "maxGuard": { + name: "Gardomax", + effect: "Le lanceur se protège de toutes les attaques. Peut échouer si utilisée plusieurs fois de suite." + }, + "dynamaxCannon": { + name: "Canon Dynamax", + effect: "Le lanceur attaque en émettant un laser depuis son noyau. Cette capacité inflige deux fois plus de dégâts si l'adversaire est level 200." + }, + "snipeShot": { + name: "Tir de Précision", + effect: "Le lanceur parvient toujours à viser la cible voulue, en ignorant l’effet des talents et des capacités capables de détourner les attaques." + }, + "jawLock": { + name: "Croque Fort", + effect: "Le lanceur et sa cible ne peuvent plus être échangés jusqu’à ce que l’un d’entre eux tombe K.O. L’effet est annulé si l’un des deux Pokémon quitte le terrain." + }, + "stuffCheeks": { + name: "Garde-à-Joues", + effect: "Le lanceur mange la Baie qu’il tient, ce qui augmente beaucoup sa Défense." + }, + "noRetreat": { + name: "Ultime Bastion", + effect: "Le lanceur voit toutes ses stats augmenter, mais en contrepartie, il ne peut plus quitter le terrain." + }, + "tarShot": { + name: "Goudronnage", + effect: "Le lanceur recouvre sa cible de goudron liquide pour baisser sa Vitesse et la rendre vulnérable au feu." + }, + "magicPowder": { + name: "Poudre Magique", + effect: "Le lanceur recouvre sa cible d’une poudre magique qui change son type en Psy." + }, + "dragonDarts": { + name: "Draco-Flèches", + effect: "Le lanceur attaque en propulsant deux Fantyrm. S’il y a deux cibles, chacune d’entre elles est frappée par un Fantyrm." + }, + "teatime": { + name: "Thérémonie", + effect: "Le lanceur invite tous les Pokémon sur le terrain à prendre le goûter autour d’une tasse de thé. Ceux qui tiennent une Baie la mangent." + }, + "octolock": { + name: "Octoprise", + effect: "Empêche l'ennemi de fuir ou de quitter le terrain. Baisse la Défense et la Défense Spécial de l'ennemi chaque tour." + }, + "boltBeak": { + name: "Prise de Bec", + effect: "Inflige des dégâts et les double si le lanceur attaque avant l'ennemi." + }, + "fishiousRend": { + name: "Branchicrok", + effect: "Inflige des dégâts et les double si le lanceur attaque avant l'ennemi." + }, + "courtChange": { + name: "Change-Côté", + effect: "Une force mystérieuse intervertit les effets affectant chaque côté du terrain." + }, + "maxFlare": { + name: "Pyromax", + effect: "Une attaque de type Feu que seuls les Pokémon Dynamax peuvent utiliser. Fait briller le soleil pendant cinq tours." + }, + "maxFlutterby": { + name: "Insectomax", + effect: "Une attaque de type Insecte que seuls les Pokémon Dynamax peuvent utiliser. Baisse l'Attaque Spéciale de la cible." + }, + "maxLightning": { + name: "Fulguromax", + effect: "Une attaque de type Électrik que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Électrifié qui dure cinq tours." + }, + "maxStrike": { + name: "Normalomax", + effect: "Une attaque de type Normal que seuls les Pokémon Dynamax peuvent utiliser. Baisse la Vitesse de la cible." + }, + "maxKnuckle": { + name: "Pugilomax", + effect: "Une attaque de type Combat que seuls les Pokémon dynamax peuvent utiliser. Augmente l'Attaque des Alliés." + }, + "maxPhantasm": { + name: "Spectromax", + effect: "Une attaque de type Spectre que seuls les Pokémon Dynamax peuvent utiliser. Baisse la Défense de la cible." + }, + "maxHailstorm": { + name: "Cryomax", + effect: "Une attaque de type Glace que seuls les Pokémon Dynamax peuvent utiliser. Invoque une tempête de grêle qui dure cinq tours." + }, + "maxOoze": { + name: "Toxinomax", + effect: "Une attaque de type Poison que seuls les Pokémon Dynamax peuvent utiliser. Augmente l'Attaque Spéciale des alliés." + }, + "maxGeyser": { + name: "Hydromax", + effect: "Une attaque de type Eau que seuls les Pokémon Dynamax peuvent utiliser. Invoque de fortes pluies qui durent cinq tours." + }, + "maxAirstream": { + name: "Aéromax", + effect: "Une attaque de type Vol que seuls les Pokémon Dynamax peuvent utiliser. Augmente la Vitesse des alliés." + }, + "maxStarfall": { + name: "Enchantomax", + effect: "Une attaque de type Fée que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Brumeux qui dure cinq tours." + }, + "maxWyrmwind": { + name: "Dracomax", + effect: "Une attaque de type Dragon que seuls les Pokémon Dynamax peuvent utiliser. Baisse l'Attaque de la cible." + }, + "maxMindstorm": { + name: "Psychomax", + effect: "Une attaque de type Psy que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Psychique qui dure cinq tours." + }, + "maxRockfall": { + name: "Lithomax", + effect: "Une attaque de type Roche que seuls les Pokémon Dynamax peuvent utiliser. Invoque une tempête de sable qui dure cinq tours." + }, + "maxQuake": { + name: "Sismomax", + effect: "Une attaque de type Sol que seuls les Pokémon Dynamax peuvent utiliser. Augmente la Défense Spéciale des alliés." + }, + "maxDarkness": { + name: "Sinistromax", + effect: "Une attaque de type Ténèbres que seuls les Pokémon Dynamax peuvent utiliser. Baisse la Défense Spéciale de la cible." + }, + "maxOvergrowth": { + name: "Phytomax", + effect: "Une attaque de type Plante que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Herbu qui dure cinq tours." + }, + "maxSteelspike": { + name: "Métallomax", + effect: "Une attaque de type Acier que seuls les Pokémon Dynamax peuvent utiliser. Augmente la Défense des alliés." + }, + "clangorousSoul": { + name: "Dracacophonie", + effect: "Sacrifie une partie de ses PV pour augmenter toutes ses statistiques." + }, + "bodyPress": { + name: "Big Splash", + effect: "Le lanceur utilise son corps pour attaquer sa cible. Plus la Défense du lanceur est élevée, plus les dégâts infligés sont importants." + }, + "decorate": { + name: "Nappage", + effect: "Augmente fortement l'Attaque et l'Attaque Spéciale du lanceur." + }, + "drumBeating": { + name: "Tambour Battant", + effect: "Le lanceur bat son tambour pour en diriger les racines sur la cible, l’attaquer, et baisser sa Vitesse." + }, + "snapTrap": { + name: "Troquenard", + effect: "Bloque l'ennemi pendant 4 à 5 tours." + }, + "pyroBall": { + name: "Ballon Brûlant", + effect: "Le lanceur attaque avec un ballon fait à partir d’un caillou enflammé. Peut aussi brûler la cible (10% de chances)." + }, + "behemothBlade": { + name: "Gladius Maximus", + effect: "Le lanceur se transforme en une immense épée et pourfend sa cible. Cette capacité inflige le double de dégâts aux Pokémon Dynamax." + }, + "behemothBash": { + name: "Aegis Maxima", + effect: "Le lanceur se transforme en un immense bouclier et charge sa cible. Cette capacité inflige le double de dégâts aux Pokémon Dynamax." + }, + "auraWheel": { + name: "Roue Libre", + effect: "Inflige et change en type Ténèbres" + }, + "breakingSwipe": { + name: "Abattage", + effect: "Le lanceur balaie violemment le camp adverse avec son immense queue. Baisse l’Attaque de la cible." + }, + "branchPoke": { + name: "Tapotige", + effect: "Le lanceur attaque sa cible en la piquant avec une branche pointue." + }, + "overdrive": { + name: "Overdrive", + effect: "Le lanceur gratte ses cordes de guitare ou de basse pour créer de violentes vibrations sonores qui blessent la cible." + }, + "appleAcid": { + name: "Acide Malique", + effect: "Le lanceur projette un liquide corrosif créé à partir d’une pomme acide sur la cible, ce qui baisse la Défense Spéciale de celle-ci." + }, + "gravApple": { + name: "Force G", + effect: "Le lanceur fait tomber une pomme de très haut sur la cible, ce qui baisse la Défense de celle-ci." + }, + "spiritBreak": { + name: "Choc Émotionnel", + effect: "Le lanceur attaque la cible avec une telle force que celle-ci peut s’en retrouver profondément troublée et voir son Attaque Spéciale baisser." + }, + "strangeSteam": { + name: "Vapeur Féérique", + effect: "Inflige des dégâts et peut rendre confus l'ennemi." + }, + "lifeDew": { + name: "Fontaine de Vie", + effect: "Le lanceur projette une eau mystérieuse sur le terrain pour restaurer ses PV et ceux de ses alliés au combat." + }, + "obstruct": { + name: "Blocage", + effect: "Protège le lanceur des attaques de contact. Baisse la Défense de deux crans si l'ennemi a tenté une attaque de contact." + }, + "falseSurrender": { + name: "Fourbette", + effect: "Le lanceur fait semblant de se prosterner et utilise ses cheveux pour transpercer sa cible. N’échoue jamais." + }, + "meteorAssault": { + name: "Joute Astrale", + effect: "Inflige de gros dégâts mais oblige le lanceur à se reposer pendant un tour." + }, + "eternabeam": { + name: "Laser Infinimax", + effect: "Inflige de gros dégâts mais oblige le lanceur à se reposer pendant un tour." + }, + "steelBeam": { + name: "Métalaser", + effect: "Le lanceur concentre du métal issu de tout son corps en un rayon qu’il projette violemment sur sa cible. Il subit aussi des dégâts." + }, + "expandingForce": { + name: "Vaste Pouvoir", + effect: "Le lanceur attaque la cible avec ses pouvoirs psychiques. Si un champ psychique est actif, la puissance de cette capacité augmente et elle touche tous les ennemis." + }, + "steelRoller": { + name: "Métalliroue", + effect: "Une attaque qui inflige des dégâts et fait disparaître le champ actif, mais qui échoue s’il n’y en a pas à ce moment." + }, + "scaleShot": { + name: "Rafale Écailles", + effect: "Le lanceur projette des écailles sur la cible de deux à cinq fois d’affilée. Augmente la Vitesse, mais diminue la Défense." + }, + "meteorBeam": { + name: "Laser Météore", + effect: "Le lanceur concentre l’énergie cosmique au premier tour, ce qui augmente son Attaque Spéciale, et frappe au second." + }, + "shellSideArm": { + name: "Kokiyarme", + effect: "Une attaque physique ou spéciale, en fonction de ce qui inflige le plus de dégâts à la cible. Peut aussi empoisonner." + }, + "mistyExplosion": { + name: "Explo-Brume", + effect: "Le lanceur frappe tous les Pokémon autour de lui en explosant, ce qui le met K.O. La puissance de cette attaque augmente si un champ brumeux est actif." + }, + "grassyGlide": { + name: "Gliss'Herbe", + effect: "Le lanceur attaque la cible en glissant sur le terrain. Frappe toujours en priorité si un champ herbu est actif." + }, + "risingVoltage": { + name: "Monte-Tension", + effect: "Des éclairs surgissent du sol et frappent la cible. La puissance de cette attaque est doublée si la cible est sur un champ électrifié." + }, + "terrainPulse": { + name: "Champlification", + effect: "Une attaque qui utilise la force des champs pour projeter une aura. Son type et sa puissance varient selon le champ actif." + }, + "skitterSmack": { + name: "Ravage Rampant", + effect: "Le lanceur rampe derrière la cible pour l’attaquer, ce qui baisse l’Attaque Spéciale de celle-ci." + }, + "burningJealousy": { + name: "Feu Envieux", + effect: "Le lanceur attaque sa cible avec toute sa jalousie. Cette capacité brûle tout Pokémon dont les stats ont augmenté pendant ce tour." + }, + "lashOut": { + name: "Cent Rancunes", + effect: "Le lanceur frappe la cible avec toute sa rancune. Si les stats du lanceur ont diminué pendant ce tour, la puissance de cette attaque est doublée." + }, + "poltergeist": { + name: "Esprit Frappeur", + effect: "Le lanceur manipule l’objet tenu par la cible pour l’attaquer. Cette capacité échoue si celle-ci ne tient rien." + }, + "corrosiveGas": { + name: "Gaz Corrosif", + effect: "Un gaz corrosif qui enveloppe tous les Pokémon alentour et qui dissout les objets qu’ils tiennent." + }, + "coaching": { + name: "Coaching", + effect: "Le lanceur coache ses alliés, augmentant ainsi leur Attaque et leur Défense." + }, + "flipTurn": { + name: "Eau Revoir", + effect: "Après son attaque, le lanceur revient à toute vitesse et change de place avec un Pokémon de l’équipe prêt à combattre." + }, + "tripleAxel": { + name: "Triple Axel", + effect: "Une série d’un à trois coups de pied distincts dont la puissance augmente à chaque fois que la capacité touche sa cible." + }, + "dualWingbeat": { + name: "Double Volée", + effect: "Le lanceur frappe la cible avec ses ailes deux fois d’affilée." + }, + "scorchingSands": { + name: "Sable Ardent", + effect: "Le lanceur projette du sable chauffé à blanc sur la cible, ce qui peut aussi la brûler (30% de chances)." + }, + "jungleHealing": { + name: "Selve Salvatrice", + effect: "Le lanceur fait appel au pouvoir de la jungle pour restaurer les PV et soigner les altérations d’état de ses alliés et de lui-même." + }, + "wickedBlow": { + name: "Poing Obscur", + effect: "Le lanceur assène un coup puissant à la cible. Cette technique qui inflige toujours un coup critique est réservée à ceux qui maîtrisent la puissance des Ténèbres." + }, + "surgingStrikes": { + name: "Torrent de Coups", + effect: "Le lanceur assène trois coups fluides à la cible. Cette technique qui inflige toujours un coup critique est réservée à ceux qui maîtrisent la puissance de l’Eau." + }, + "thunderCage": { + name: "Voltageôle", + effect: "Le lanceur frappe la cible, et le piège dans une prison électrique qui dure de quatre à cinq tours." + }, + "dragonEnergy": { + name: "Draco-Énergie", + effect: "Le lanceur utilise son énergie vitale pour attaquer la cible. Moins il a de PV, moins l’attaque est puissante." + }, + "freezingGlare": { + name: "Regard Glaçant", + effect: "Les yeux du lanceur tirent des rayons psychiques qui attaquent la cible et peuvent aussi la geler (10% de chances)." + }, + "fieryWrath": { + name: "Fureur Ardente", + effect: "Le lanceur canalise sa colère et la transforme en émanation brûlante, avec laquelle il attaque la cible, ce qui peut aussi apeurer celle-ci (20% de chances)." + }, + "thunderousKick": { + name: "Coup Fulgurant", + effect: "Le lanceur assène un coup de pied à la cible à la vitesse de l’éclair. Baisse aussi la Défense de la cible." + }, + "glacialLance": { + name: "Lance de Glace", + effect: "Le lanceur attaque la cible avec une lance de glace entourée d’un blizzard." + }, + "astralBarrage": { + name: "Éclat Spectral", + effect: "Le lanceur attaque la cible avec une multitude de petits spectres." + }, + "eerieSpell": { + name: "Sort Sinistre", + effect: "Le lanceur attaque avec de puissants pouvoirs psychiques et retire 3 PP de la dernière capacité utilisée par la cible." + }, + "direClaw": { + name: "Griffes Funestes", + effect: "Le lanceur attaque avec des griffes destructrices en visant les points faibles. La cible peut aussi être empoisonnée, paralysée, ou endormie." + }, + "psyshieldBash": { + name: "Sprint Bouclier", + effect: "Le lanceur s’enveloppe d’énergie psychique et frappe sa cible de plein fouet. Cela augmente également la Défense du lanceur." + }, + "powerShift": { + name: "Échange Force", + effect: "Le lanceur échange son Attaque avec sa Défense." + }, + "stoneAxe": { + name: "Hache de Pierre", + effect: "Le lanceur attaque le point faible de sa cible avec sa hache de pierre. Les débris de pierre se mettent alors à flotter autour de la cible." + }, + "springtideStorm": { + name: "Typhon Passionné", + effect: "Le lanceur déclenche un violent typhon de haine et d’amour qui s’abat sur la cible. Peut baisser l’Attaque de celle-ci." + }, + "mysticalPower": { + name: "Force Mystique", + effect: "Le lanceur attaque en libérant un pouvoir mystique. Cela augmente également son Attaque Spéciale." + }, + "ragingFury": { + name: "Grand Courroux", + effect: "Le lanceur se déchaîne et attaque en projetant de violentes flammes pendant deux ou trois tours. Il devient ensuite confus." + }, + "waveCrash": { + name: "Aquatacle", + effect: "Le lanceur se recouvre entièrement d’eau avant de charger sa cible. Cela blesse aussi gravement le lanceur." + }, + "chloroblast": { + name: "Herblast", + effect: "Le lanceur tire un concentré de sa propre chlorophylle sur la cible, ce qui le blesse également." + }, + "mountainGale": { + name: "Bise Glaciaire", + effect: "Le lanceur envoie un bloc de glace de la taille d’un iceberg sur la cible, ce qui peut aussi l’apeurer (30% de chances)." + }, + "victoryDance": { + name: "Danse Victoire", + effect: "Le lanceur danse vigoureusement pour invoquer la victoire, ce qui augmente son Attaque, sa Défense et sa Vitesse." + }, + "headlongRush": { + name: "Assaut Frontal", + effect: "Le lanceur charge la cible de toutes ses forces, ce qui baisse la Défense et la Défense Spéciale du lanceur." + }, + "barbBarrage": { + name: "Multitoxik", + effect: "Une multitude de pointes toxiques frappent la cible et peuvent l’empoisonner. La puissance est doublée si celle-ci est déjà empoisonnée (30% de chances en Style Normal et 50% de chances en Style Puissant)." + }, + "esperWing": { + name: "Ailes Psycho", + effect: "Le lanceur entaille la cible avec ses ailes renforcées par une émanation psychique. Taux de critiques élevé. Cela augmente la Vitesse du lanceur." + }, + "bitterMalice": { + name: "Coeur de Rancoeur", + effect: "Une rancœur glaciale frappe la cible et baisse son Attaque." + }, + "shelter": { + name: "Mur Fumigène", + effect: "Rend la peau du lanceur dure comme un mur de fer, ce qui augmente beaucoup sa Défense." + }, + "tripleArrows": { + name: "Triple Flèche", + effect: "Le lanceur donne un coup de pied et tire trois flèches simultanément, ce qui peut baisser la Défense de la cible ou l’apeurer (30% de chances). Taux de critiques élevé." + }, + "infernalParade": { + name: "Cortège Funèbre", + effect: "Une multitude de boules de feu frappent la cible, ce qui peut aussi la brûler (30% de chances et 50% en Style Puissant). La puissance est doublée si celle-ci souffre d’une altération de statut." + }, + "ceaselessEdge": { + name: "Vagues à Lames", + effect: "Des lames de coquillages entaillent la cible en visant ses points faibles. Les débris de coquillage se répandent sous la forme de picots aux pieds de la cible." + }, + "bleakwindStorm": { + name: "Typhon Hivernal", + effect: "Le lanceur déclenche un typhon froid et brutal qui fait trembler le cœur et le corps de la cible, ce qui peut aussi baisser sa Vitesse." + }, + "wildboltStorm": { + name: "Typhon Fulgurant", + effect: "Le lanceur déclenche un violent typhon orageux dont les rafales et la foudre frappent la cible, ce qui peut aussi la paralyser (30% de chances en Style Normal et 50% en Style Puissant)." + }, + "sandsearStorm": { + name: "Typhon Pyrosable", + effect: "Le lanceur déclenche un violent typhon mêlé à du sable ardent qui s’abat sur la cible, ce qui peut la brûler (30% de chances et 50% en Style Puissant)." + }, + "lunarBlessing": { + name: "Prière Lunaire", + effect: "Le lanceur adresse une prière à la lune pour restaurer les PV et soigner ses altérations de statut ainsi que celles de ses alliés." + }, + "takeHeart": { + name: "Extravaillance", + effect: "Le lanceur fait preuve de bravoure pour soigner ses altérations de statut et augmenter sa puissance offensive et défensive." + }, + "gMaxWildfire": { + name: "Fournaise G-Max", + effect: "Une attaque de type Feu que seul un Dracaufeu Gigamax peut utiliser. Pendant quatre tours, la cible continue de subir des dégâts." + }, + "gMaxBefuddle": { + name: "Illusion G-Max", + effect: "Une attaque de type Insecte que seul un Papilusion Gigamax peut utiliser. Empoisonne, paralyse ou endort la cible." + }, + "gMaxVoltCrash": { + name: "Foudre G-Max", + effect: "Une attaque de type Électrik que seul un Pikachu Gigamax peut utiliser. Paralyse la cible." + }, + "gMaxGoldRush": { + name: "Pactole G-Max", + effect: "Une attaque de type Normal que seul un Miaouss Gigamax peut utiliser. Rend la cible confuse et permet d'obtenir de l'argent à la fin du combat." + }, + "gMaxChiStrike": { + name: "Frappe G-Max", + effect: "Une attaque de type Combat que seul un Mackogneur Gigamax peut utiliser. Augmente le taux de critiques du lanceur et de ses alliés." + }, + "gMaxTerror": { + name: "Hantise G-Max", + effect: "Une attaque de type Spectre que seul un Ectoplasma Gigamax peut utiliser. Empêche les Pokémon ennemis de quitter le combat." + }, + "gMaxResonance": { + name: "Résonance G-Max", + effect: "Une attaque de type Glace que seul un Lokhlass Gigamax peut utiliser. Réduit les dégâts causés par des capacités pendant cinq tours." + }, + "gMaxCuddle": { + name: "Câlin G-Max", + effect: "Une attaque de type Normal que seul un Évoli Gigamax peut utiliser. Rend la cible amoureuse." + }, + "gMaxReplenish": { + name: "Récolte G-Max", + effect: "Une attaque de type Normal que seul un Ronflex Gigamax peut utiliser. Restaure une Baie tenue qui a déjà été mangée." + }, + "gMaxMalodor": { + name: "Pestilence G-Max", + effect: "Une attaque de type Poison que seul un Miasmax Gigamax peut utiliser. Empoisonne la cible." + }, + "gMaxStonesurge": { + name: "Récif G-Max", + effect: "Une attaque de type Eau que seul un Torgamord Gigamax peut utiliser. Disperse des pierres aiguisées sur le terrain." + }, + "gMaxWindRage": { + name: "Rafale G-Max", + effect: "Une attaque de type Vol que seul un Corvaillus Gigamax peut utiliser. Permet de briser les barrières comme Protection et Mur Lumière." + }, + "gMaxStunShock": { + name: "Choc G-Max", + effect: "Une attaque de type Électrik que seul un Salarsen Gigamax peut utiliser. Empoisonne ou paralyse la cible." + }, + "gMaxFinale": { + name: "Cure G-Max", + effect: "Une attaque de type Fée que seul un Charmilly Gigamax peut utiliser. Restaure des PV aux alliés." + }, + "gMaxDepletion": { + name: "Usure G-Max", + effect: "Une attaque de type Dragon que seul un Duralugon Gigamax peut utiliser. Baisse les PP de la dernière capacité utilisée par la cible." + }, + "gMaxGravitas": { + name: "Ondes G-Max", + effect: "Une attaque de type Psy que seul un Astronelle Gigamax peut utiliser. Intensifie la gravité pendant cinq tours." + }, + "gMaxVolcalith": { + name: "Téphra G-Max", + effect: "Une attaque de type Roche que seul un Monthracite Gigamax peut utiliser. Pendant quatre tours, la cible continue de subir des dégâts." + }, + "gMaxSandblast": { + name: "Enlisement G-Max", + effect: "Une attaque de type Sol que seul un Dunaconda Gigamax peut utiliser. Emprisonne la cible dans une tempête de sable qui dure de quatre à cinq tours." + }, + "gMaxSnooze": { + name: "Torpeur G-Max", + effect: "Une attaque de type Ténèbres que seul un Angoliath Gigamax peut utiliser. Fait bâiller la cible qui s'endort au tour suivant." + }, + "gMaxTartness": { + name: "Corrosion G-Max", + effect: "Une attaque de type Plante que seul un Pomdrapi Gigamax peut utiliser. Réduit l'Esquive de la cible." + }, + "gMaxSweetness": { + name: "Nectar G-Max", + effect: "Une attaque de type Plante que seul un Dratatin Gigamax peut utiliser. Soigne les altérations de statut des alliés." + }, + "gMaxSmite": { + name: "Sentence G-Max", + effect: "Une attaque de type Fée que seul un Sorcilence Gigamax peut utiliser. Rend la cible confuse." + }, + "gMaxSteelsurge": { + name: "Percée G-Max", + effect: "Une attaque de type Acier que seul un Pachyradjah Gigamax peut utiliser. Disperse des pics aiguisés sur le terrain." + }, + "gMaxMeltdown": { + name: "Fonte G-Max", + effect: "Une attaque de type Acier que seul un Melmetal Gigamax peut utiliser. Empêche la cible d'utiliser la même capacité deux fois de suite." + }, + "gMaxFoamBurst": { + name: "Bulles G-Max", + effect: "Une attaque de type Eau que seul un Krabboss Gigamax peut utiliser. Réduit beaucoup la Vitesse de la cible." + }, + "gMaxCentiferno": { + name: "Combustion G-Max", + effect: "Une attaque de type Feu que seul un Scolocendre Gigamax peut utiliser. Emprisonne la cible dans un tourbillon de flammes qui dure de quatre à cinq tours." + }, + "gMaxVineLash": { + name: "Fouet G-Max", + effect: "Une attaque de type Plante que seul un Florizarre Gigamax peut utiliser. Inflige des dégâts à la cible pendant quatre tours." + }, + "gMaxCannonade": { + name: "Canonnade G-Max", + effect: "Une attaque de type Eau que seul un Tortank Gigamax peut utiliser. Inflige des dégâts à la cible pendant quatre tours." + }, + "gMaxDrumSolo": { + name: "Percussion G-Max", + effect: "Une attaque de type Plante que seul un Gorythmic Gigamax peut utiliser. Ignore le talent de la cible." + }, + "gMaxFireball": { + name: "Pyroball G-Max", + effect: "Une attaque de type Feu que seul un Pyrobut Gigamax peut utiliser. Ignore le talent de la cible." + }, + "gMaxHydrosnipe": { + name: "Gâchette G-Max", + effect: "Une attaque de type Eau que seul un Lézargus Gigamax peut utiliser. Ignore le talent de la cible." + }, + "gMaxOneBlow": { + name: "Coup Final G-Max", + effect: "Une attaque de type Ténèbres que seul un Shifours Gigamax peut utiliser. Cette frappe unique permet d'ignorer la capacité Gardomax." + }, + "gMaxRapidFlow": { + name: "Multicoup G-Max", + effect: "Une attaque de type Eau que seul un Shifours Gigamax peut utiliser. Cet enchaînement de coups permet d'ignorer la capacité Gardomax." + }, + "teraBlast": { + name: "Téra Explosion", + effect: "Si le lanceur est téracristallisé, il libère l’énergie de son type Téracristal. La capacité utilise l’Attaque ou l’Attaque Spéciale, selon ce qui infligera le plus de dégâts." + }, + "silkTrap": { + name: "Piège de Fil", + effect: "Le lanceur déploie un piège de fil pour se protéger contre les attaques, et si un assaillant utilise une attaque directe contre lui, la Vitesse de l’assaillant baisse." + }, + "axeKick": { + name: "Talon-Marteau", + effect: "Le lanceur donne un coup de talon descendant à la cible, ce qui peut aussi la rendre confuse. S’il échoue, le lanceur se blesse." + }, + "lastRespects": { + name: "Hommage Posthume", + effect: "Le lanceur attaque pour venger ses alliés. Plus le nombre de Pokémon alliés mis K.O. est élevé, plus la puissance de cette capacité augmente." + }, + "luminaCrash": { + name: "Lumino-Impact", + effect: "Le lanceur attaque en émettant une étrange lumière qui ébranle l’esprit de la cible. Cela baisse beaucoup la Défense Spéciale de la cible." + }, + "orderUp": { + name: "Plat du Jour", + effect: "Le lanceur attaque avec adresse et élégance. S’il a un Nigirigon dans la gueule, une de ses stats augmente en fonction de la forme de celui-ci." + }, + "jetPunch": { + name: "Poing Sonique", + effect: "Le lanceur enveloppe son poing d’un torrent furieux et attaque si rapidement qu’on peine à le discerner. Frappe en priorité." + }, + "spicyExtract": { + name: "Habanerage", + effect: "Le lanceur relâche un concentré extrêmement pimenté sur la cible, ce qui augmente beaucoup l’Attaque de celle-ci, mais baisse aussi beaucoup sa Défense." + }, + "spinOut": { + name: "Dérapage", + effect: "Le lanceur met tout son poids sur ses pattes et effectue de violentes rotations, ce qui inflige des dégâts à la cible, mais baisse beaucoup la Vitesse du lanceur." + }, + "populationBomb": { + name: "Prolifération", + effect: "Le lanceur et ses congénères prolifèrent en masse et attaquent ensemble d’une à dix fois d’affilée." + }, + "iceSpinner": { + name: "Cryo-Pirouette", + effect: "Le lanceur enveloppe ses jambes d’une fine couche de glace et heurte la cible en tournant sur lui-même. Ses rotations détruisent le champ actif sur le terrain." + }, + "glaiveRush": { + name: "Charge Glaive", + effect: "Le lanceur se jette dans une charge inconsciente sur la cible. Au tour suivant, l’attaque de la cible inflige le double de dégâts et n’échoue jamais." + }, + "revivalBlessing": { + name: "Second Souffle", + effect: "Dans un élan de compassion, le lanceur adresse une prière afin de ranimer un Pokémon de l’équipe K.O. en lui rendant la moitié de ses PV." + }, + "saltCure": { + name: "Salaison", + effect: "Le lanceur couvre la cible de sel, ce qui lui inflige des dégâts à chaque tour. Si la cible est de type Acier ou Eau, ces dégâts sont plus élevés." + }, + "tripleDive": { + name: "Triple Plongeon", + effect: "Le lanceur effectue des plongeons parfaitement cadencés pour éclabousser la cible et lui infliger des dégâts trois fois d’affilée." + }, + "mortalSpin": { + name: "Toupie Éclat", + effect: "Le lanceur attaque en tournant sur lui-même et empoisonne la cible. Il se libère également des effets de capacités comme Étreinte, Ligotage ou Vampigraine." + }, + "doodle": { + name: "Décalquage", + effect: "Le lanceur capture l’essence de la cible et la décalque. Le talent du lanceur et de ses alliés devient alors identique à celui de la cible." + }, + "filletAway": { + name: "Décharnement", + effect: "Le lanceur sacrifie des PV pour beaucoup augmenter son Attaque, son Attaque Spéciale, et sa Vitesse." + }, + "kowtowCleave": { + name: "Génusection", + effect: "Le lanceur se prosterne devant la cible et profite de cette distraction pour l’attaquer avec une lame. N’échoue jamais." + }, + "flowerTrick": { + name: "Magie Florale", + effect: "Le lanceur attaque en jetant un bouquet de fleurs piégé sur la cible. N’échoue jamais et inflige toujours un coup critique." + }, + "torchSong": { + name: "Chant Flamboyant", + effect: "Le lanceur carbonise la cible en projetant sur elle de vives flammes créées par un chant. Cette capacité augmente l’Attaque Spéciale du lanceur." + }, + "aquaStep": { + name: "Danse Aquatique", + effect: "Le lanceur se joue de la cible et lui inflige des dégâts avec ses pas de danse gracieux et légers. Cette capacité augmente la Vitesse du lanceur." + }, + "ragingBull": { + name: "Taurogne", + effect: "Le lanceur charge la cible comme un taureau enragé. Le type de cette capacité dépend de la race du lanceur, et brise les barrières comme Mur Lumière et Protection." + }, + "makeItRain": { + name: "Ruée d'Or", + effect: "Le lanceur attaque en lançant de nombreuses pièces, ce qui baisse son Attaque Spéciale. Permet d’obtenir plus d’argent à la fin du combat." + }, + "psyblade": { + name: "Lame Psychique", + effect: "Le lanceur lacère la cible à l'aide d'une lame intangible. S'il se trouve dans un champ électrifié, la puissance de cette capacité augmente de 50 %." + }, + "hydroSteam": { + name: "Hydrovapeur", + effect: "Le lanceur asperge la cible avec un puissant jet d'eau bouillante. Quand le soleil brille, la puissance de cette capacité augmente de 50 % au lieu de baisser." + }, + "ruination": { + name: "Cataclysme", + effect: "Le lanceur déclenche un cataclysme qui baisse les PV de la cible de moitié." + }, + "collisionCourse": { + name: "Nitro Crash", + effect: "Le lanceur change de forme et s’écrase sur la cible dans une explosion antique. Si la capacité est super efficace, elle inflige encore plus de dégâts que d’ordinaire." + }, + "electroDrift": { + name: "Turbo Volt", + effect: "Le lanceur change de forme et fonce sur la cible en la perforant d’électricité futuriste. Si la capacité est super efficace, sa puissance augmente encore plus." + }, + "shedTail": { + name: "Queulonage", + effect: "Le lanceur crée un clone en sacrifiant des PV, puis il revient et échange sa place avec un Pokémon de l’équipe prêt à combattre." + }, + "chillyReception": { + name: "Neigeux de Mots", + effect: "Le lanceur fait un si mauvais jeu de mots qu’il jette un froid et échange sa place avec un Pokémon de l’équipe prêt à combattre. La neige tombe pendant cinq tours." + }, + "tidyUp": { + name: "Grand Nettoyage", + effect: "Le lanceur fait le ménage sur le terrain, ce qui annule les effets de Picots, Piège de Roc, Toile Gluante, Pics Toxik, et Clonage. Augmente l’Attaque et la Vitesse du lanceur." + }, + "snowscape": { + name: "Chute de Neige", + effect: "Le lanceur invoque une tempête de neige qui dure cinq tours, ce qui augmente la Défense des Pokémon de type Glace." + }, + "pounce": { + name: "Bond", + effect: "Le lanceur attaque en bondissant sur la cible, ce qui baisse la Vitesse de celle-ci." + }, + "trailblaze": { + name: "Désherbaffe", + effect: "Le lanceur surgit des hautes herbes pour attaquer la cible. Les mouvements agiles du lanceur augmentent sa Vitesse." + }, + "chillingWater": { + name: "Douche Froide", + effect: "Le lanceur attaque la cible en l’arrosant d’une eau si froide qu’elle détériore son esprit combatif. Baisse l’Attaque de la cible." + }, + "hyperDrill": { + name: "Hyperceuse", + effect: "Le lanceur fait tourner à toute vitesse la partie pointue de son corps afin de transpercer la cible. Ignore même les capacités comme Abri ou Détection." + }, + "twinBeam": { + name: "Double Laser", + effect: "Le lanceur projette d’étranges rayons lumineux avec ses yeux et inflige des dégâts deux fois d’affilée." + }, + "rageFist": { + name: "Poing de Colère", + effect: "Le lanceur transforme sa colère en énergie pour attaquer. Plus il a subi d’attaques, plus la puissance de cette capacité augmente." + }, + "armorCannon": { + name: "Canon Blindé", + effect: "Le lanceur tire un boulet de canon ardent provenant de sa propre armure sur la cible. Cela baisse la Défense et la Défense Spéciale du lanceur." + }, + "bitterBlade": { + name: "Lame en Peine", + effect: "Le lanceur concentre son amertume du monde des vivants dans la pointe de ses épées et tranche la cible. La moitié des dégâts infligés sont convertis en PV pour le lanceur." + }, + "doubleShock": { + name: "Double Décharge", + effect: "Le lanceur libère toute l’électricité contenue dans son corps pour infliger des dégâts élevés à la cible. Le lanceur perd le type Électrik." + }, + "gigatonHammer": { + name: "Marteau Mastoc", + effect: "Le lanceur met tout son corps à contribution pour attaquer la cible avec un immense marteau. Cette capacité ne peut pas être utilisée deux fois d’affilée." + }, + "comeuppance": { + name: "Vindicte", + effect: "Le lanceur contre-attaque avec un coup infligeant des dégâts supérieurs à ceux de la dernière capacité qui l’a blessé." + }, + "aquaCutter": { + name: "Tranch'Aqua", + effect: "Le lanceur projette de l’eau pressurisée qui entaille la cible comme une lame. Taux de critiques élevé." + }, + "blazingTorque": { + name: "Crash Brûlant", + effect: "Crash Brûlant inflige des dégâts et possède 30 % de chances de brûler l'adversaire." + }, + "wickedTorque": { + name: "Crash Obscur", + effect: "Crash Obscur inflige des dégâts et possède 10 % de chances d'endormir l'adversaire." + }, + "noxiousTorque": { + name: "Crash Toxique", + effect: "Crash Toxique inflige des dégâts et possède 30 % de chances d'empoisonner l'adversaire." + }, + "combatTorque": { + name: "Crash Musclé", + effect: "Crash Musclé inflige des dégâts et possède 30 % de chances de paralyser l'adversaire." + }, + "magicalTorque": { + name: "Crash Magique", + effect: "Crash Magique inflige des dégâts et possède 30 % de chances de rendre l'adversaire confus." + }, + "bloodMoon": { + name: "Lune Rouge", + effect: "Le lanceur concentre toute son énergie dans la lune rouge sang sur son front et la projette sur la cible. Cette capacité ne peut pas être utilisée deux fois d'affilée." + }, + "matchaGotcha": { + name: "Mortier Matcha", + effect: "Le lanceur remue son thé et en bombarde la cible. La moitié des dégâts infligés sont convertis en PV pour le lanceur. Cette capacité peut aussi brûler la cible." + }, + "syrupBomb": { + name: "Bombe au sirop", + effect: "Le lanceur jette une bombe qui recouvre la cible de sirop gluant et fait progressivement baisser la Vitesse de la cible pendant trois tours." + }, + "ivyCudgel": { + name: "Massue Liane", + effect: "Le lanceur frappe la cible à l'aide d'une massue entourée d'une liane. Le type de cette capacité varie en fonction du masque que porte le lanceur. Taux de critiques élevé." + }, + "electroShot": { + name: "Fulgurayon", + effect: "Le lanceur absorbe de l'électricité au premier tour, ce qui augmente son Attaque Spéciale, et envoie une puissante décharge au second. S'il pleut, il l'envoie au premier tour." + }, + "teraStarstorm": { + name: "Pluie Térastrale", + effect: "Le lanceur bombarde la cible afin de l'éliminer grâce au pouvoir des cristaux. Si le lanceur est Terapagos sous sa Forme Stellaire, la capacité touche tous les ennemis." + }, + "fickleBeam": { + name: "Laser Hasard", + effect: "Le lanceur attaque en tirant un rayon lumineux. Il arrive parfois que toutes les têtes agissent ensemble, ce qui double la puissance de la capacité." + }, + "burningBulwark": { + name: "Rempart Brûlant", + effect: "Le lanceur se protège contre les attaques grâce à son pelage incandescent, et si un assaillant utilise une attaque directe contre lui, il le brûle." + }, + "thunderclap": { + name: "Vif Éclair", + effect: "Permet au lanceur d’attaquer la cible en priorité avec une décharge électrique. Échoue si la cible ne prépare pas une attaque." + }, + "mightyCleave": { + name: "Lame Puissante", + effect: "Le lanceur pourfend la cible avec la lumière accumulée sur sa tête. Cette attaque passe outre les protections." + }, + "tachyonCutter": { + name: "Lame Tachyonique", + effect: "Le lanceur concentre des particules élémentaires pour créer une lame qui inflige des dégâts à la cible deux fois d’affilée. N'échoue jamais." + }, + "hardPress": { + name: "Pression Extrême", + effect: "Le lanceur écrase la cible avec ses bras ou ses pinces. Plus il reste de PV à la cible, plus la puissance de la capacité augmente." + }, + "dragonCheer": { + name: "Cri Draconique", + effect: "Le lanceur galvanise ses alliés avec un encouragement draconique qui augmente leur taux de critiques. L'effet est plus puissant si les alliés ont le type Dragon." + }, + "alluringVoice": { + name: "Voix Envoûtante", + effect: "Le lanceur attaque la cible avec sa voix angélique. Cette capacité rend la cible confuse si ses stats ont augmenté pendant ce tour." + }, + "temperFlare": { + name: "Indignition", + effect: "Le lanceur utilise la force de son dépit pour attaquer. S'il a utilisé une capacité qui a échoué au tour précédent, la puissance d'Indignition est doublée." + }, + "supercellSlam": { + name: "Volt Assaut", + effect: "Le lanceur se charge en électricité et fond sur la cible. S'il échoue, le lanceur se blesse." + }, + "psychicNoise": { + name: "Dissonance Psy", + effect: "Le lanceur attaque avec des ondes sonores dissonantes. Cela empêche la cible de récupérer des PV à l'aide de capacités, talents ou objets tenus pendant 2 tours." + }, + "upperHand": { + name: "Prio-Parade", + effect: "Le lanceur réagit instinctivement au moindre mouvement et donne un coup de paume qui apeure la cible. Échoue si cette dernière n'a pas utilisé une attaque prioritaire." + }, + "malignantChain": { + name: "Chaîne Malsaine", + effect: "Le lanceur ligote la cible avec une chaîne faite de poison et lui injecte un venin corrosif, ce qui peut aussi gravement l'empoisonner." + } } as const; \ No newline at end of file diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 8078a7c06b9..115c9bc23f3 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -400,7 +400,7 @@ export class AttackTypeBoosterModifierType extends PokemonHeldItemModifierType i public boostPercent: integer; constructor(moveType: Type, boostPercent: integer) { - super(getAttackTypeBoosterItemName(moveType), `Inceases the power of a Pokémon's ${Utils.toReadableString(Type[moveType])}-type moves by 20%`, + super(getAttackTypeBoosterItemName(moveType), `Increases the power of a Pokémon's ${Utils.toReadableString(Type[moveType])}-type moves by 20%`, (_type, args) => new Modifiers.AttackTypeBoosterModifier(this, (args[0] as Pokemon).id, moveType, boostPercent), `${getAttackTypeBoosterItemName(moveType).replace(/[ \-]/g, '_').toLowerCase()}`); diff --git a/src/phases.ts b/src/phases.ts index 6ec1cfdf853..32eb3098c1f 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -742,6 +742,7 @@ export class EncounterPhase extends BattlePhase { this.scene.ui.setMode(Mode.MESSAGE).then(() => { if (!this.loaded) { this.scene.gameData.saveSystem().then(success => { + this.scene.disableMenu = false; if (!success) return this.scene.reset(true); this.scene.gameData.saveSession(this.scene, true).then(() => this.doEncounter()); @@ -2140,10 +2141,8 @@ export class MovePhase extends BattlePhase { } if (!this.followUp) { - const abilityEffectsIgnored = new Utils.BooleanHolder(false); - this.scene.getField(true).map(p => applyAbAttrs(MoveAbilityBypassAbAttr, p, abilityEffectsIgnored)); - if (abilityEffectsIgnored.value) - this.scene.arena.setIgnoreAbilities(true); + if (this.move.getMove().checkFlag(MoveFlags.IGNORE_ABILITIES, this.pokemon, null)) + this.scene.arena.setIgnoreAbilities(); } else { this.pokemon.turnData.hitsLeft = undefined; this.pokemon.turnData.hitCount = undefined; @@ -3220,6 +3219,8 @@ export class TrainerVictoryPhase extends BattlePhase { } start() { + this.scene.disableMenu = true; + this.scene.playBgm(this.scene.currentBattle.trainer.config.victoryBgm); this.scene.unshiftPhase(new MoneyRewardPhase(this.scene, this.scene.currentBattle.trainer.config.moneyMultiplier)); @@ -3540,12 +3541,17 @@ export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { this.scene.unshiftPhase(new HidePartyExpBarPhase(this.scene)); pokemon.updateInfo(); - this.scene.partyExpBar.showPokemonExp(pokemon, exp.value).then(() => { - if (newLevel > lastLevel) - this.end(); - else - setTimeout(() => this.end(), 500); - }); + if (this.scene.expGainsSpeed < 3) { + this.scene.partyExpBar.showPokemonExp(pokemon, exp.value).then(() => { + if (newLevel > lastLevel) + this.end(); + else + setTimeout(() => this.end(), 500 / Math.pow(2, this.scene.expGainsSpeed)); + }); + } else { + this.end(); + } + } } diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts index 3c44b0f1d31..8e4997f5d8d 100644 --- a/src/plugins/i18n.ts +++ b/src/plugins/i18n.ts @@ -1,10 +1,20 @@ import i18next from 'i18next'; import { menu as enMenu } from '../locales/en/menu'; import { menu as itMenu } from '../locales/it/menu'; +import { menu as frMenu } from '../locales/fr/menu'; import { move as enMove } from '../locales/en/move'; import { move as frMove } from '../locales/fr/move'; +export interface MoveTranslationEntry { + name: string, + effect: string +} + +export interface MoveTranslations { + [key: string]: MoveTranslationEntry +} + const DEFAULT_LANGUAGE_OVERRIDE = ''; /** @@ -35,6 +45,7 @@ i18next.init({ menu: itMenu, }, fr: { + menu: frMenu, move: frMove, } }, diff --git a/src/system/settings.ts b/src/system/settings.ts index 77dd1101716..68199d9aa5b 100644 --- a/src/system/settings.ts +++ b/src/system/settings.ts @@ -16,6 +16,7 @@ export enum Setting { Sprite_Set = "SPRITE_SET", Move_Animations = "MOVE_ANIMATIONS", Show_Stats_on_Level_Up = "SHOW_LEVEL_UP_STATS", + EXP_Gains_Speed = "EXP_GAINS_SPEED", HP_Bar_Speed = "HP_BAR_SPEED", Fusion_Palette_Swaps = "FUSION_PALETTE_SWAPS", Player_Gender = "PLAYER_GENDER", @@ -45,6 +46,7 @@ export const settingOptions: SettingOptions = { [Setting.Sprite_Set]: [ 'Consistent', 'Prioritize Animation' ], [Setting.Move_Animations]: [ 'Off', 'On' ], [Setting.Show_Stats_on_Level_Up]: [ 'Off', 'On' ], + [Setting.EXP_Gains_Speed]: [ 'Normal', 'Fast', 'Faster', 'Skip' ], [Setting.HP_Bar_Speed]: [ 'Normal', 'Fast', 'Faster', 'Instant' ], [Setting.Fusion_Palette_Swaps]: [ 'Off', 'On' ], [Setting.Player_Gender]: [ 'Boy', 'Girl' ], @@ -66,6 +68,7 @@ export const settingDefaults: SettingDefaults = { [Setting.Sprite_Set]: 0, [Setting.Move_Animations]: 1, [Setting.Show_Stats_on_Level_Up]: 1, + [Setting.EXP_Gains_Speed]: 0, [Setting.HP_Bar_Speed]: 0, [Setting.Fusion_Palette_Swaps]: 1, [Setting.Player_Gender]: 0, @@ -119,6 +122,9 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer) case Setting.Show_Stats_on_Level_Up: scene.showLevelUpStats = settingOptions[setting][value] === 'On'; break; + case Setting.EXP_Gains_Speed: + scene.expGainsSpeed = value; + break; case Setting.HP_Bar_Speed: scene.hpBarSpeed = value; break; @@ -148,4 +154,4 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer) } return true; -} \ No newline at end of file +} diff --git a/src/ui/form-modal-ui-handler.ts b/src/ui/form-modal-ui-handler.ts index 5adf6d3c6b2..3e326322c17 100644 --- a/src/ui/form-modal-ui-handler.ts +++ b/src/ui/form-modal-ui-handler.ts @@ -28,7 +28,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler { abstract getFields(): string[]; getHeight(config?: ModalConfig): number { - return 20 * this.getFields().length + (this.getModalTitle() ? 26 : 0) + ((config as FormModalConfig)?.errorMessage ? 12 : 0) + 28; + return 20 * this.getFields().length + (this.getModalTitle() ? 26 : 0) + ((config as FormModalConfig)?.errorMessage ? 12 : 0) + this.getButtonTopMargin() + 28; } getReadableErrorMessage(error: string): string { @@ -67,7 +67,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler { this.inputs.push(input); }); - this.errorMessage = addTextObject(this.scene, 10, (hasTitle ? 31 : 5) + 20 * (fields.length - 1) + 16, '', TextStyle.TOOLTIP_CONTENT); + this.errorMessage = addTextObject(this.scene, 10, (hasTitle ? 31 : 5) + 20 * (fields.length - 1) + 16 + this.getButtonTopMargin(), '', TextStyle.TOOLTIP_CONTENT); this.errorMessage.setColor(this.getTextColor(TextStyle.SUMMARY_PINK)); this.errorMessage.setShadowColor(this.getTextColor(TextStyle.SUMMARY_PINK, true)); this.errorMessage.setVisible(false); diff --git a/src/ui/login-form-ui-handler.ts b/src/ui/login-form-ui-handler.ts index 27c841b82a6..ce6a28b5290 100644 --- a/src/ui/login-form-ui-handler.ts +++ b/src/ui/login-form-ui-handler.ts @@ -58,7 +58,11 @@ export default class LoginFormUiHandler extends FormModalUiHandler { }; if (!this.inputs[0].text) return onFail('Username must not be empty'); - Utils.apiPost('account/login', JSON.stringify({ username: this.inputs[0].text, password: this.inputs[1].text })) + const contentType = 'application/x-www-form-urlencoded'; + const headers = { + 'Content-Type': contentType, + }; + fetch(`${Utils.apiUrl}/account/login`, { method: 'POST', headers: headers, body: `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}` }) .then(response => { if (!response.ok) return response.text(); diff --git a/src/ui/modal-ui-handler.ts b/src/ui/modal-ui-handler.ts index 2bdc809b364..f193a3db54f 100644 --- a/src/ui/modal-ui-handler.ts +++ b/src/ui/modal-ui-handler.ts @@ -32,6 +32,10 @@ export abstract class ModalUiHandler extends UiHandler { abstract getButtonLabels(config?: ModalConfig): string[]; + getButtonTopMargin(): number { + return 0; + } + setup() { const ui = this.getUi(); @@ -52,6 +56,8 @@ export abstract class ModalUiHandler extends UiHandler { const buttonLabels = this.getButtonLabels(); + const buttonTopMargin = this.getButtonTopMargin(); + for (let label of buttonLabels) { const buttonLabel = addTextObject(this.scene, 0, 8, label, TextStyle.TOOLTIP_CONTENT); buttonLabel.setOrigin(0.5, 0.5); @@ -60,7 +66,7 @@ export abstract class ModalUiHandler extends UiHandler { buttonBg.setOrigin(0.5, 0); buttonBg.setInteractive(new Phaser.Geom.Rectangle(0, 0, buttonBg.width, buttonBg.height), Phaser.Geom.Rectangle.Contains); - const buttonContainer = this.scene.add.container(0, 0); + const buttonContainer = this.scene.add.container(0, buttonTopMargin); this.buttonBgs.push(buttonBg); this.buttonContainers.push(buttonContainer); diff --git a/src/ui/party-exp-bar.ts b/src/ui/party-exp-bar.ts index a582c7e8502..a5451c5f27a 100644 --- a/src/ui/party-exp-bar.ts +++ b/src/ui/party-exp-bar.ts @@ -51,7 +51,7 @@ export default class PartyExpBar extends Phaser.GameObjects.Container { this.tween = this.scene.tweens.add({ targets: this, x: (this.scene.game.canvas.width / 6) - (this.bg.width - 5), - duration: 500, + duration: 500 / Math.pow(2, pokemon.scene.expGainsSpeed), ease: 'Sine.easeOut', onComplete: () => { this.tween = null; diff --git a/src/ui/registration-form-ui-handler.ts b/src/ui/registration-form-ui-handler.ts index c1cc79f6939..d15df22bd85 100644 --- a/src/ui/registration-form-ui-handler.ts +++ b/src/ui/registration-form-ui-handler.ts @@ -2,6 +2,7 @@ import { FormModalUiHandler } from "./form-modal-ui-handler"; import { ModalConfig } from "./modal-ui-handler"; import * as Utils from "../utils"; import { Mode } from "./ui"; +import { TextStyle, addTextObject } from "./text"; export default class RegistrationFormUiHandler extends FormModalUiHandler { getModalTitle(config?: ModalConfig): string { @@ -20,6 +21,10 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler { return [ 0, 0, 48, 0 ]; } + getButtonTopMargin(): number { + return 8; + } + getButtonLabels(config?: ModalConfig): string[] { return [ 'Register', 'Back to Login' ]; } @@ -40,6 +45,14 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler { return super.getReadableErrorMessage(error); } + setup(): void { + super.setup(); + + const label = addTextObject(this.scene, 10, 87, 'By registering, you confirm you are of 13 years of age or older.', TextStyle.TOOLTIP_CONTENT, { fontSize: '42px' }); + + this.modalContainer.add(label); + } + show(args: any[]): boolean { if (super.show(args)) { const config = args[0] as ModalConfig; @@ -60,11 +73,15 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler { return onFail(this.getReadableErrorMessage('invalid password')); if (this.inputs[1].text !== this.inputs[2].text) return onFail('Password must match confirm password'); - Utils.apiPost('account/register', JSON.stringify({ username: this.inputs[0].text, password: this.inputs[1].text })) + const contentType = 'application/x-www-form-urlencoded'; + const headers = { + 'Content-Type': contentType, + }; + fetch(`${Utils.apiUrl}/account/register`, { method: 'POST', headers: headers, body: `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}` }) .then(response => response.text()) .then(response => { if (!response) { - Utils.apiPost('account/login', JSON.stringify({ username: this.inputs[0].text, password: this.inputs[1].text })) + fetch(`${Utils.apiUrl}/account/login`, { method: 'POST', headers: headers, body: `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}` }) .then(response => { if (!response.ok) return response.text(); diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 6c589a1b2d7..2ed30a3be11 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -170,6 +170,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private starterSelectCallback: StarterSelectCallback; private gameMode: GameModes; + protected blockInput: boolean = false; + constructor(scene: BattleScene) { super(scene, Mode.STARTER_SELECT); } @@ -614,6 +616,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } processInput(button: Button): boolean { + if (this.blockInput) + return false; + const ui = this.getUi(); let success = false; @@ -633,6 +638,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { success = true; this.updateInstructions(); } else { + this.blockInput = true; this.scene.clearPhaseQueue(); this.scene.pushPhase(new TitlePhase(this.scene)); this.scene.getCurrentPhase().end(); @@ -1631,6 +1637,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { super.clear(); this.cursor = -1; this.starterSelectContainer.setVisible(false); + this.blockInput = false; while (this.starterCursors.length) this.popStarter();