@pkmn/sim 0.7.29 → 0.7.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/config/formats.js +26 -38
- package/build/cjs/config/formats.js.map +1 -1
- package/build/cjs/data/abilities.js +11 -13
- package/build/cjs/data/abilities.js.map +1 -1
- package/build/cjs/data/conditions.js +0 -3
- package/build/cjs/data/conditions.js.map +1 -1
- package/build/cjs/data/formats-data.js +7 -11
- package/build/cjs/data/formats-data.js.map +1 -1
- package/build/cjs/data/items.js +6 -11
- package/build/cjs/data/items.js.map +1 -1
- package/build/cjs/data/mods/gen1/scripts.js +13 -11
- package/build/cjs/data/mods/gen1/scripts.js.map +1 -1
- package/build/cjs/data/mods/gen2/moves.js +10 -6
- package/build/cjs/data/mods/gen2/moves.js.map +1 -1
- package/build/cjs/data/mods/gen3/moves.js +16 -10
- package/build/cjs/data/mods/gen3/moves.js.map +1 -1
- package/build/cjs/data/mods/gen3/scripts.js +1 -1
- package/build/cjs/data/mods/gen3/scripts.js.map +1 -1
- package/build/cjs/data/mods/gen4/items.js +1 -1
- package/build/cjs/data/mods/gen4/items.js.map +1 -1
- package/build/cjs/data/mods/gen4/moves.js +22 -51
- package/build/cjs/data/mods/gen4/moves.js.map +1 -1
- package/build/cjs/data/mods/gen5/moves.js +28 -37
- package/build/cjs/data/mods/gen5/moves.js.map +1 -1
- package/build/cjs/data/mods/gen6/moves.js +25 -2
- package/build/cjs/data/mods/gen6/moves.js.map +1 -1
- package/build/cjs/data/mods/gen7/moves.js +1 -1
- package/build/cjs/data/mods/gen7/moves.js.map +1 -1
- package/build/cjs/data/mods/gen8/abilities.js +2 -2
- package/build/cjs/data/mods/gen8/abilities.js.map +1 -1
- package/build/cjs/data/mods/gen8/moves.js +55 -0
- package/build/cjs/data/mods/gen8/moves.js.map +1 -1
- package/build/cjs/data/moves.js +153 -179
- package/build/cjs/data/moves.js.map +1 -1
- package/build/cjs/data/text/abilities.js +17 -4
- package/build/cjs/data/text/abilities.js.map +1 -1
- package/build/cjs/data/text/moves.js +44 -11
- package/build/cjs/data/text/moves.js.map +1 -1
- package/build/cjs/sim/battle-actions.js +2 -1
- package/build/cjs/sim/battle-actions.js.map +1 -1
- package/build/cjs/sim/battle.js +1 -1
- package/build/cjs/sim/battle.js.map +1 -1
- package/build/cjs/sim/dex-moves.js.map +1 -1
- package/build/cjs/sim/pokemon.js +7 -13
- package/build/cjs/sim/pokemon.js.map +1 -1
- package/build/cjs/sim/team-validator.js +1 -1
- package/build/cjs/sim/team-validator.js.map +1 -1
- package/build/esm/config/formats.mjs +26 -38
- package/build/esm/config/formats.mjs.map +1 -1
- package/build/esm/data/abilities.mjs +11 -13
- package/build/esm/data/abilities.mjs.map +1 -1
- package/build/esm/data/conditions.mjs +0 -3
- package/build/esm/data/conditions.mjs.map +1 -1
- package/build/esm/data/formats-data.mjs +7 -11
- package/build/esm/data/formats-data.mjs.map +1 -1
- package/build/esm/data/items.mjs +6 -11
- package/build/esm/data/items.mjs.map +1 -1
- package/build/esm/data/mods/gen1/scripts.mjs +13 -11
- package/build/esm/data/mods/gen1/scripts.mjs.map +1 -1
- package/build/esm/data/mods/gen2/moves.mjs +10 -6
- package/build/esm/data/mods/gen2/moves.mjs.map +1 -1
- package/build/esm/data/mods/gen3/moves.mjs +16 -10
- package/build/esm/data/mods/gen3/moves.mjs.map +1 -1
- package/build/esm/data/mods/gen3/scripts.mjs +1 -1
- package/build/esm/data/mods/gen3/scripts.mjs.map +1 -1
- package/build/esm/data/mods/gen4/items.mjs +1 -1
- package/build/esm/data/mods/gen4/items.mjs.map +1 -1
- package/build/esm/data/mods/gen4/moves.mjs +22 -51
- package/build/esm/data/mods/gen4/moves.mjs.map +1 -1
- package/build/esm/data/mods/gen5/moves.mjs +28 -37
- package/build/esm/data/mods/gen5/moves.mjs.map +1 -1
- package/build/esm/data/mods/gen6/moves.mjs +25 -2
- package/build/esm/data/mods/gen6/moves.mjs.map +1 -1
- package/build/esm/data/mods/gen7/moves.mjs +1 -1
- package/build/esm/data/mods/gen7/moves.mjs.map +1 -1
- package/build/esm/data/mods/gen8/abilities.mjs +2 -2
- package/build/esm/data/mods/gen8/abilities.mjs.map +1 -1
- package/build/esm/data/mods/gen8/moves.mjs +55 -0
- package/build/esm/data/mods/gen8/moves.mjs.map +1 -1
- package/build/esm/data/moves.mjs +153 -179
- package/build/esm/data/moves.mjs.map +1 -1
- package/build/esm/data/text/abilities.mjs +17 -4
- package/build/esm/data/text/abilities.mjs.map +1 -1
- package/build/esm/data/text/moves.mjs +44 -11
- package/build/esm/data/text/moves.mjs.map +1 -1
- package/build/esm/sim/battle-actions.mjs +2 -1
- package/build/esm/sim/battle-actions.mjs.map +1 -1
- package/build/esm/sim/battle.mjs +1 -1
- package/build/esm/sim/battle.mjs.map +1 -1
- package/build/esm/sim/dex-moves.mjs.map +1 -1
- package/build/esm/sim/pokemon.mjs +7 -13
- package/build/esm/sim/pokemon.mjs.map +1 -1
- package/build/esm/sim/team-validator.mjs +1 -1
- package/build/esm/sim/team-validator.mjs.map +1 -1
- package/build/types/sim/dex-moves.d.ts +12 -2
- package/package.json +1 -1
package/build/cjs/data/moves.js
CHANGED
|
@@ -1,33 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
List of flags and their descriptions:
|
|
5
|
-
|
|
6
|
-
bypasssub: Ignores a target's substitute.
|
|
7
|
-
bite: Power is multiplied by 1.5 when used by a Pokemon with the Strong Jaw Ability.
|
|
8
|
-
bullet: Has no effect on Pokemon with the Bulletproof Ability.
|
|
9
|
-
charge: The user is unable to make a move between turns.
|
|
10
|
-
contact: Makes contact.
|
|
11
|
-
dance: When used by a Pokemon, other Pokemon with the Dancer Ability can attempt to execute the same move.
|
|
12
|
-
defrost: Thaws the user if executed successfully while the user is frozen.
|
|
13
|
-
distance: Can target a Pokemon positioned anywhere in a Triple Battle.
|
|
14
|
-
gravity: Prevented from being executed or selected during Gravity's effect.
|
|
15
|
-
heal: Prevented from being executed or selected during Heal Block's effect.
|
|
16
|
-
mirror: Can be copied by Mirror Move.
|
|
17
|
-
allyanim: Animates when used against allies
|
|
18
|
-
nonsky: Prevented from being executed or selected in a Sky Battle.
|
|
19
|
-
powder: Has no effect on Grass-type Pokemon, Pokemon with the Overcoat Ability, and Pokemon holding Safety Goggles.
|
|
20
|
-
protect: Blocked by Detect, Protect, Spiky Shield, and if not a Status move, King's Shield.
|
|
21
|
-
pulse: Power is multiplied by 1.5 when used by a Pokemon with the Mega Launcher Ability.
|
|
22
|
-
punch: Power is multiplied by 1.2 when used by a Pokemon with the Iron Fist Ability.
|
|
23
|
-
recharge: If this move is successful, the user must recharge on the following turn and cannot make a move.
|
|
24
|
-
reflectable: Bounced back to the original user by Magic Coat or the Magic Bounce Ability.
|
|
25
|
-
slicing: Power is multiplied by 1.5 when used by a Pokemon with the Ability Sharpness.
|
|
26
|
-
snatch: Can be stolen from the original user and instead used by another Pokemon using Snatch.
|
|
27
|
-
sound: Has no effect on Pokemon with the Soundproof Ability.
|
|
28
|
-
wind: Activates the Wind Power and Wind Rider Abilities.
|
|
29
|
-
|
|
30
|
-
*/
|
|
2
|
+
// List of flags and their descriptions can be found in sim/dex-moves.ts
|
|
31
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
4
|
exports.Moves = void 0;
|
|
33
5
|
exports.Moves = {
|
|
@@ -621,21 +593,16 @@ exports.Moves = {
|
|
|
621
593
|
name: "Assist",
|
|
622
594
|
pp: 20,
|
|
623
595
|
priority: 0,
|
|
624
|
-
flags: {},
|
|
596
|
+
flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
625
597
|
onHit(target) {
|
|
626
|
-
const noAssist = [
|
|
627
|
-
'assist', 'banefulbunker', 'beakblast', 'belch', 'bestow', 'blazingtorque', 'bounce', 'celebrate', 'chatter', 'circlethrow', 'combattorque', 'copycat', 'counter', 'covet', 'destinybond', 'detect', 'dig', 'dive', 'dragontail', 'endure', 'feint', 'fly', 'focuspunch', 'followme', 'helpinghand', 'holdhands', 'kingsshield', 'magicaltorque', 'matblock', 'mefirst', 'metronome', 'mimic', 'mirrorcoat', 'mirrormove', 'naturepower', 'noxioustorque', 'phantomforce', 'protect', 'ragepowder', 'roar', 'shadowforce', 'shelltrap', 'sketch', 'skydrop', 'sleeptalk', 'snatch', 'spikyshield', 'spotlight', 'struggle', 'switcheroo', 'thief', 'transform', 'trick', 'whirlwind', 'wickedtorque',
|
|
628
|
-
];
|
|
629
598
|
const moves = [];
|
|
630
599
|
for (const pokemon of target.side.pokemon) {
|
|
631
600
|
if (pokemon === target)
|
|
632
601
|
continue;
|
|
633
602
|
for (const moveSlot of pokemon.moveSlots) {
|
|
634
603
|
const moveid = moveSlot.id;
|
|
635
|
-
if (noAssist.includes(moveid))
|
|
636
|
-
continue;
|
|
637
604
|
const move = this.dex.moves.get(moveid);
|
|
638
|
-
if (move.isZ || move.isMax) {
|
|
605
|
+
if (move.flags['noassist'] || move.isZ || move.isMax) {
|
|
639
606
|
continue;
|
|
640
607
|
}
|
|
641
608
|
moves.push(moveid);
|
|
@@ -999,7 +966,7 @@ exports.Moves = {
|
|
|
999
966
|
name: "Baddy Bad",
|
|
1000
967
|
pp: 15,
|
|
1001
968
|
priority: 0,
|
|
1002
|
-
flags: { protect: 1 },
|
|
969
|
+
flags: { protect: 1, mirror: 1 },
|
|
1003
970
|
self: {
|
|
1004
971
|
sideCondition: 'reflect',
|
|
1005
972
|
},
|
|
@@ -1016,7 +983,7 @@ exports.Moves = {
|
|
|
1016
983
|
name: "Baneful Bunker",
|
|
1017
984
|
pp: 10,
|
|
1018
985
|
priority: 4,
|
|
1019
|
-
flags: {},
|
|
986
|
+
flags: { noassist: 1, failcopycat: 1 },
|
|
1020
987
|
stallingMove: true,
|
|
1021
988
|
volatileStatus: 'banefulbunker',
|
|
1022
989
|
onPrepareHit(pokemon) {
|
|
@@ -1163,7 +1130,7 @@ exports.Moves = {
|
|
|
1163
1130
|
name: "Beak Blast",
|
|
1164
1131
|
pp: 15,
|
|
1165
1132
|
priority: -3,
|
|
1166
|
-
flags: { bullet: 1, protect: 1 },
|
|
1133
|
+
flags: { bullet: 1, protect: 1, noassist: 1, failmefirst: 1, nosleeptalk: 1, failcopycat: 1, failinstruct: 1 },
|
|
1167
1134
|
priorityChargeCallback(pokemon) {
|
|
1168
1135
|
pokemon.addVolatile('beakblast');
|
|
1169
1136
|
},
|
|
@@ -1219,7 +1186,7 @@ exports.Moves = {
|
|
|
1219
1186
|
name: "Behemoth Bash",
|
|
1220
1187
|
pp: 5,
|
|
1221
1188
|
priority: 0,
|
|
1222
|
-
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
1189
|
+
flags: { contact: 1, protect: 1, mirror: 1, failcopycat: 1, failmimic: 1 },
|
|
1223
1190
|
secondary: null,
|
|
1224
1191
|
target: "normal",
|
|
1225
1192
|
type: "Steel",
|
|
@@ -1232,7 +1199,7 @@ exports.Moves = {
|
|
|
1232
1199
|
name: "Behemoth Blade",
|
|
1233
1200
|
pp: 5,
|
|
1234
1201
|
priority: 0,
|
|
1235
|
-
flags: { contact: 1, protect: 1, mirror: 1, slicing: 1 },
|
|
1202
|
+
flags: { contact: 1, protect: 1, mirror: 1, slicing: 1, failcopycat: 1, failmimic: 1 },
|
|
1236
1203
|
secondary: null,
|
|
1237
1204
|
target: "normal",
|
|
1238
1205
|
type: "Steel",
|
|
@@ -1245,7 +1212,7 @@ exports.Moves = {
|
|
|
1245
1212
|
name: "Belch",
|
|
1246
1213
|
pp: 10,
|
|
1247
1214
|
priority: 0,
|
|
1248
|
-
flags: { protect: 1 },
|
|
1215
|
+
flags: { protect: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
1249
1216
|
onDisableMove(pokemon) {
|
|
1250
1217
|
if (!pokemon.ateBerry)
|
|
1251
1218
|
pokemon.disableMove('belch');
|
|
@@ -1286,7 +1253,7 @@ exports.Moves = {
|
|
|
1286
1253
|
name: "Bestow",
|
|
1287
1254
|
pp: 15,
|
|
1288
1255
|
priority: 0,
|
|
1289
|
-
flags: { mirror: 1, bypasssub: 1, allyanim: 1 },
|
|
1256
|
+
flags: { mirror: 1, bypasssub: 1, allyanim: 1, noassist: 1, failcopycat: 1 },
|
|
1290
1257
|
onHit(target, source, move) {
|
|
1291
1258
|
if (target.item) {
|
|
1292
1259
|
return false;
|
|
@@ -1315,7 +1282,7 @@ exports.Moves = {
|
|
|
1315
1282
|
name: "Bide",
|
|
1316
1283
|
pp: 10,
|
|
1317
1284
|
priority: 1,
|
|
1318
|
-
flags: { contact: 1, protect: 1 },
|
|
1285
|
+
flags: { contact: 1, protect: 1, nosleeptalk: 1, failinstruct: 1 },
|
|
1319
1286
|
volatileStatus: 'bide',
|
|
1320
1287
|
ignoreImmunity: true,
|
|
1321
1288
|
beforeMoveCallback(pokemon) {
|
|
@@ -1506,7 +1473,9 @@ exports.Moves = {
|
|
|
1506
1473
|
name: "Blazing Torque",
|
|
1507
1474
|
pp: 10,
|
|
1508
1475
|
priority: 0,
|
|
1509
|
-
flags: {
|
|
1476
|
+
flags: {
|
|
1477
|
+
protect: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1,
|
|
1478
|
+
},
|
|
1510
1479
|
secondary: {
|
|
1511
1480
|
chance: 30,
|
|
1512
1481
|
status: 'brn',
|
|
@@ -1751,7 +1720,9 @@ exports.Moves = {
|
|
|
1751
1720
|
name: "Bounce",
|
|
1752
1721
|
pp: 5,
|
|
1753
1722
|
priority: 0,
|
|
1754
|
-
flags: {
|
|
1723
|
+
flags: {
|
|
1724
|
+
contact: 1, charge: 1, protect: 1, mirror: 1, gravity: 1, distance: 1, nosleeptalk: 1, noassist: 1, failinstruct: 1,
|
|
1725
|
+
},
|
|
1755
1726
|
onTryMove(attacker, defender, move) {
|
|
1756
1727
|
if (attacker.removeVolatile(move.id)) {
|
|
1757
1728
|
return;
|
|
@@ -1794,7 +1765,7 @@ exports.Moves = {
|
|
|
1794
1765
|
name: "Bouncy Bubble",
|
|
1795
1766
|
pp: 20,
|
|
1796
1767
|
priority: 0,
|
|
1797
|
-
flags: { protect: 1, heal: 1 },
|
|
1768
|
+
flags: { protect: 1, mirror: 1, heal: 1 },
|
|
1798
1769
|
drain: [1, 2],
|
|
1799
1770
|
secondary: null,
|
|
1800
1771
|
target: "normal",
|
|
@@ -2127,7 +2098,7 @@ exports.Moves = {
|
|
|
2127
2098
|
name: "Buzzy Buzz",
|
|
2128
2099
|
pp: 20,
|
|
2129
2100
|
priority: 0,
|
|
2130
|
-
flags: { protect: 1 },
|
|
2101
|
+
flags: { protect: 1, mirror: 1 },
|
|
2131
2102
|
secondary: {
|
|
2132
2103
|
chance: 100,
|
|
2133
2104
|
status: 'par',
|
|
@@ -2256,7 +2227,7 @@ exports.Moves = {
|
|
|
2256
2227
|
name: "Celebrate",
|
|
2257
2228
|
pp: 40,
|
|
2258
2229
|
priority: 0,
|
|
2259
|
-
flags: {},
|
|
2230
|
+
flags: { nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
2260
2231
|
onTryHit(target, source) {
|
|
2261
2232
|
this.add('-activate', target, 'move: Celebrate');
|
|
2262
2233
|
},
|
|
@@ -2371,7 +2342,10 @@ exports.Moves = {
|
|
|
2371
2342
|
name: "Chatter",
|
|
2372
2343
|
pp: 20,
|
|
2373
2344
|
priority: 0,
|
|
2374
|
-
flags: {
|
|
2345
|
+
flags: {
|
|
2346
|
+
protect: 1, mirror: 1, sound: 1, distance: 1, bypasssub: 1, nosleeptalk: 1, noassist: 1,
|
|
2347
|
+
failcopycat: 1, failinstruct: 1, failmimic: 1,
|
|
2348
|
+
},
|
|
2375
2349
|
noSketch: true,
|
|
2376
2350
|
secondary: {
|
|
2377
2351
|
chance: 100,
|
|
@@ -2466,7 +2440,7 @@ exports.Moves = {
|
|
|
2466
2440
|
name: "Circle Throw",
|
|
2467
2441
|
pp: 10,
|
|
2468
2442
|
priority: -6,
|
|
2469
|
-
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
2443
|
+
flags: { contact: 1, protect: 1, mirror: 1, noassist: 1, failcopycat: 1 },
|
|
2470
2444
|
forceSwitch: true,
|
|
2471
2445
|
target: "normal",
|
|
2472
2446
|
type: "Fighting",
|
|
@@ -2673,7 +2647,9 @@ exports.Moves = {
|
|
|
2673
2647
|
name: "Combat Torque",
|
|
2674
2648
|
pp: 10,
|
|
2675
2649
|
priority: 0,
|
|
2676
|
-
flags: {
|
|
2650
|
+
flags: {
|
|
2651
|
+
protect: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1,
|
|
2652
|
+
},
|
|
2677
2653
|
secondary: {
|
|
2678
2654
|
chance: 30,
|
|
2679
2655
|
status: 'par',
|
|
@@ -2713,7 +2689,7 @@ exports.Moves = {
|
|
|
2713
2689
|
name: "Comeuppance",
|
|
2714
2690
|
pp: 10,
|
|
2715
2691
|
priority: 0,
|
|
2716
|
-
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
2692
|
+
flags: { contact: 1, protect: 1, mirror: 1, failmefirst: 1 },
|
|
2717
2693
|
onTry(source) {
|
|
2718
2694
|
const lastDamagedBy = source.getLastDamagedBy(true);
|
|
2719
2695
|
if (lastDamagedBy === undefined || !lastDamagedBy.thisTurn)
|
|
@@ -2885,17 +2861,14 @@ exports.Moves = {
|
|
|
2885
2861
|
name: "Copycat",
|
|
2886
2862
|
pp: 20,
|
|
2887
2863
|
priority: 0,
|
|
2888
|
-
flags: {},
|
|
2864
|
+
flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
2889
2865
|
onHit(pokemon) {
|
|
2890
|
-
const noCopycat = [
|
|
2891
|
-
'assist', 'banefulbunker', 'beakblast', 'behemothbash', 'behemothblade', 'belch', 'bestow', 'celebrate', 'chatter', 'circlethrow', 'copycat', 'counter', 'covet', 'craftyshield', 'destinybond', 'detect', 'dragontail', 'dynamaxcannon', 'endure', 'feint', 'focuspunch', 'followme', 'helpinghand', 'holdhands', 'kingsshield', 'matblock', 'mefirst', 'metronome', 'mimic', 'mirrorcoat', 'mirrormove', 'naturepower', 'obstruct', 'protect', 'ragepowder', 'roar', 'shelltrap', 'sketch', 'sleeptalk', 'snatch', 'spikyshield', 'spotlight', 'struggle', 'switcheroo', 'thief', 'transform', 'trick', 'whirlwind',
|
|
2892
|
-
];
|
|
2893
2866
|
let move = this.lastMove;
|
|
2894
2867
|
if (!move)
|
|
2895
2868
|
return;
|
|
2896
2869
|
if (move.isMax && move.baseMove)
|
|
2897
2870
|
move = this.dex.moves.get(move.baseMove);
|
|
2898
|
-
if (
|
|
2871
|
+
if (move.flags['failcopycat'] || move.isZ || move.isMax) {
|
|
2899
2872
|
return false;
|
|
2900
2873
|
}
|
|
2901
2874
|
this.actions.useMove(move.id, pokemon);
|
|
@@ -3043,7 +3016,7 @@ exports.Moves = {
|
|
|
3043
3016
|
name: "Counter",
|
|
3044
3017
|
pp: 20,
|
|
3045
3018
|
priority: -5,
|
|
3046
|
-
flags: { contact: 1, protect: 1 },
|
|
3019
|
+
flags: { contact: 1, protect: 1, failmefirst: 1, noassist: 1, failcopycat: 1 },
|
|
3047
3020
|
beforeTurnCallback(pokemon) {
|
|
3048
3021
|
pokemon.addVolatile('counter');
|
|
3049
3022
|
},
|
|
@@ -3167,7 +3140,7 @@ exports.Moves = {
|
|
|
3167
3140
|
name: "Covet",
|
|
3168
3141
|
pp: 25,
|
|
3169
3142
|
priority: 0,
|
|
3170
|
-
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
3143
|
+
flags: { contact: 1, protect: 1, mirror: 1, failmefirst: 1, noassist: 1, failcopycat: 1 },
|
|
3171
3144
|
onAfterHit(target, source, move) {
|
|
3172
3145
|
if (source.item || source.volatiles['gem']) {
|
|
3173
3146
|
return;
|
|
@@ -3574,7 +3547,7 @@ exports.Moves = {
|
|
|
3574
3547
|
name: "Destiny Bond",
|
|
3575
3548
|
pp: 5,
|
|
3576
3549
|
priority: 0,
|
|
3577
|
-
flags: { bypasssub: 1 },
|
|
3550
|
+
flags: { bypasssub: 1, noassist: 1, failcopycat: 1 },
|
|
3578
3551
|
volatileStatus: 'destinybond',
|
|
3579
3552
|
onPrepareHit(pokemon) {
|
|
3580
3553
|
return !pokemon.removeVolatile('destinybond');
|
|
@@ -3586,7 +3559,7 @@ exports.Moves = {
|
|
|
3586
3559
|
onFaint(target, source, effect) {
|
|
3587
3560
|
if (!source || !effect || target.isAlly(source))
|
|
3588
3561
|
return;
|
|
3589
|
-
if (effect.effectType === 'Move' && !effect.
|
|
3562
|
+
if (effect.effectType === 'Move' && !effect.flags['futuremove']) {
|
|
3590
3563
|
if (source.volatiles['dynamax']) {
|
|
3591
3564
|
this.add('-hint', "Dynamaxed Pokémon are immune to Destiny Bond.");
|
|
3592
3565
|
return;
|
|
@@ -3620,7 +3593,7 @@ exports.Moves = {
|
|
|
3620
3593
|
name: "Detect",
|
|
3621
3594
|
pp: 5,
|
|
3622
3595
|
priority: 4,
|
|
3623
|
-
flags: {},
|
|
3596
|
+
flags: { noassist: 1, failcopycat: 1 },
|
|
3624
3597
|
stallingMove: true,
|
|
3625
3598
|
volatileStatus: 'protect',
|
|
3626
3599
|
onPrepareHit(pokemon) {
|
|
@@ -3681,7 +3654,7 @@ exports.Moves = {
|
|
|
3681
3654
|
name: "Dig",
|
|
3682
3655
|
pp: 10,
|
|
3683
3656
|
priority: 0,
|
|
3684
|
-
flags: { contact: 1, charge: 1, protect: 1, mirror: 1, nonsky: 1 },
|
|
3657
|
+
flags: { contact: 1, charge: 1, protect: 1, mirror: 1, nonsky: 1, nosleeptalk: 1, noassist: 1, failinstruct: 1 },
|
|
3685
3658
|
onTryMove(attacker, defender, move) {
|
|
3686
3659
|
if (attacker.removeVolatile(move.id)) {
|
|
3687
3660
|
return;
|
|
@@ -3852,7 +3825,9 @@ exports.Moves = {
|
|
|
3852
3825
|
name: "Dive",
|
|
3853
3826
|
pp: 10,
|
|
3854
3827
|
priority: 0,
|
|
3855
|
-
flags: {
|
|
3828
|
+
flags: {
|
|
3829
|
+
contact: 1, charge: 1, protect: 1, mirror: 1, nonsky: 1, allyanim: 1, nosleeptalk: 1, noassist: 1, failinstruct: 1,
|
|
3830
|
+
},
|
|
3856
3831
|
onTryMove(attacker, defender, move) {
|
|
3857
3832
|
if (attacker.removeVolatile(move.id)) {
|
|
3858
3833
|
return;
|
|
@@ -3953,8 +3928,7 @@ exports.Moves = {
|
|
|
3953
3928
|
name: "Doom Desire",
|
|
3954
3929
|
pp: 5,
|
|
3955
3930
|
priority: 0,
|
|
3956
|
-
flags: {},
|
|
3957
|
-
isFutureMove: true,
|
|
3931
|
+
flags: { futuremove: 1 },
|
|
3958
3932
|
onTry(source, target) {
|
|
3959
3933
|
if (!target.side.addSlotCondition(target, 'futuremove'))
|
|
3960
3934
|
return false;
|
|
@@ -3968,9 +3942,8 @@ exports.Moves = {
|
|
|
3968
3942
|
basePower: 140,
|
|
3969
3943
|
category: "Special",
|
|
3970
3944
|
priority: 0,
|
|
3971
|
-
flags: {},
|
|
3945
|
+
flags: { futuremove: 1 },
|
|
3972
3946
|
effectType: 'Move',
|
|
3973
|
-
isFutureMove: true,
|
|
3974
3947
|
type: 'Steel',
|
|
3975
3948
|
},
|
|
3976
3949
|
});
|
|
@@ -4208,7 +4181,7 @@ exports.Moves = {
|
|
|
4208
4181
|
name: "Dragon Darts",
|
|
4209
4182
|
pp: 10,
|
|
4210
4183
|
priority: 0,
|
|
4211
|
-
flags: { protect: 1, mirror: 1 },
|
|
4184
|
+
flags: { protect: 1, mirror: 1, noparentalbond: 1 },
|
|
4212
4185
|
multihit: 2,
|
|
4213
4186
|
smartTarget: true,
|
|
4214
4187
|
secondary: null,
|
|
@@ -4304,7 +4277,7 @@ exports.Moves = {
|
|
|
4304
4277
|
name: "Dragon Tail",
|
|
4305
4278
|
pp: 10,
|
|
4306
4279
|
priority: -6,
|
|
4307
|
-
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
4280
|
+
flags: { contact: 1, protect: 1, mirror: 1, noassist: 1, failcopycat: 1 },
|
|
4308
4281
|
forceSwitch: true,
|
|
4309
4282
|
target: "normal",
|
|
4310
4283
|
type: "Dragon",
|
|
@@ -4445,7 +4418,7 @@ exports.Moves = {
|
|
|
4445
4418
|
name: "Dynamax Cannon",
|
|
4446
4419
|
pp: 5,
|
|
4447
4420
|
priority: 0,
|
|
4448
|
-
flags: { protect: 1 },
|
|
4421
|
+
flags: { protect: 1, failencore: 1, nosleeptalk: 1, noparentalbond: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
4449
4422
|
secondary: null,
|
|
4450
4423
|
target: "normal",
|
|
4451
4424
|
type: "Dragon",
|
|
@@ -4813,22 +4786,19 @@ exports.Moves = {
|
|
|
4813
4786
|
name: "Encore",
|
|
4814
4787
|
pp: 5,
|
|
4815
4788
|
priority: 0,
|
|
4816
|
-
flags: { protect: 1, reflectable: 1, mirror: 1, bypasssub: 1 },
|
|
4789
|
+
flags: { protect: 1, reflectable: 1, mirror: 1, bypasssub: 1, failencore: 1 },
|
|
4817
4790
|
volatileStatus: 'encore',
|
|
4818
4791
|
condition: {
|
|
4819
4792
|
duration: 3,
|
|
4820
4793
|
noCopy: true,
|
|
4821
4794
|
onStart(target) {
|
|
4822
|
-
const noEncore = [
|
|
4823
|
-
'assist', 'copycat', 'dynamaxcannon', 'encore', 'mefirst', 'metronome', 'mimic', 'mirrormove', 'naturepower', 'sketch', 'sleeptalk', 'struggle', 'transform',
|
|
4824
|
-
];
|
|
4825
4795
|
let move = target.lastMove;
|
|
4826
4796
|
if (!move || target.volatiles['dynamax'])
|
|
4827
4797
|
return false;
|
|
4828
4798
|
if (move.isMax && move.baseMove)
|
|
4829
4799
|
move = this.dex.moves.get(move.baseMove);
|
|
4830
4800
|
const moveIndex = target.moves.indexOf(move.id);
|
|
4831
|
-
if (move.isZ ||
|
|
4801
|
+
if (move.isZ || move.flags['failencore'] || !target.moveSlots[moveIndex] || target.moveSlots[moveIndex].pp <= 0) {
|
|
4832
4802
|
// it failed
|
|
4833
4803
|
return false;
|
|
4834
4804
|
}
|
|
@@ -4881,7 +4851,7 @@ exports.Moves = {
|
|
|
4881
4851
|
name: "Endeavor",
|
|
4882
4852
|
pp: 5,
|
|
4883
4853
|
priority: 0,
|
|
4884
|
-
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
4854
|
+
flags: { contact: 1, protect: 1, mirror: 1, noparentalbond: 1 },
|
|
4885
4855
|
onTryImmunity(target, pokemon) {
|
|
4886
4856
|
return pokemon.hp < target.hp;
|
|
4887
4857
|
},
|
|
@@ -4900,7 +4870,7 @@ exports.Moves = {
|
|
|
4900
4870
|
name: "Endure",
|
|
4901
4871
|
pp: 10,
|
|
4902
4872
|
priority: 4,
|
|
4903
|
-
flags: {},
|
|
4873
|
+
flags: { noassist: 1, failcopycat: 1 },
|
|
4904
4874
|
stallingMove: true,
|
|
4905
4875
|
volatileStatus: 'endure',
|
|
4906
4876
|
onPrepareHit(pokemon) {
|
|
@@ -5075,7 +5045,7 @@ exports.Moves = {
|
|
|
5075
5045
|
name: "Explosion",
|
|
5076
5046
|
pp: 5,
|
|
5077
5047
|
priority: 0,
|
|
5078
|
-
flags: { protect: 1, mirror: 1 },
|
|
5048
|
+
flags: { protect: 1, mirror: 1, noparentalbond: 1 },
|
|
5079
5049
|
selfdestruct: "always",
|
|
5080
5050
|
secondary: null,
|
|
5081
5051
|
target: "allAdjacent",
|
|
@@ -5293,7 +5263,7 @@ exports.Moves = {
|
|
|
5293
5263
|
name: "Feint",
|
|
5294
5264
|
pp: 10,
|
|
5295
5265
|
priority: 2,
|
|
5296
|
-
flags: { mirror: 1 },
|
|
5266
|
+
flags: { mirror: 1, noassist: 1, failcopycat: 1 },
|
|
5297
5267
|
breaksProtect: true,
|
|
5298
5268
|
// Breaking protection implemented in scripts.js
|
|
5299
5269
|
secondary: null,
|
|
@@ -5414,7 +5384,7 @@ exports.Moves = {
|
|
|
5414
5384
|
name: "Final Gambit",
|
|
5415
5385
|
pp: 5,
|
|
5416
5386
|
priority: 0,
|
|
5417
|
-
flags: { protect: 1 },
|
|
5387
|
+
flags: { protect: 1, noparentalbond: 1 },
|
|
5418
5388
|
secondary: null,
|
|
5419
5389
|
target: "normal",
|
|
5420
5390
|
type: "Fighting",
|
|
@@ -5494,7 +5464,7 @@ exports.Moves = {
|
|
|
5494
5464
|
name: "Fire Pledge",
|
|
5495
5465
|
pp: 10,
|
|
5496
5466
|
priority: 0,
|
|
5497
|
-
flags: { protect: 1, mirror: 1, nonsky: 1 },
|
|
5467
|
+
flags: { protect: 1, mirror: 1, nonsky: 1, pledgecombo: 1 },
|
|
5498
5468
|
onPrepareHit(target, source, move) {
|
|
5499
5469
|
for (const action of this.queue.list) {
|
|
5500
5470
|
if (!action.move || !action.pokemon?.isActive ||
|
|
@@ -5855,7 +5825,7 @@ exports.Moves = {
|
|
|
5855
5825
|
name: "Fling",
|
|
5856
5826
|
pp: 10,
|
|
5857
5827
|
priority: 0,
|
|
5858
|
-
flags: { protect: 1, mirror: 1, allyanim: 1 },
|
|
5828
|
+
flags: { protect: 1, mirror: 1, allyanim: 1, noparentalbond: 1 },
|
|
5859
5829
|
onPrepareHit(target, source, move) {
|
|
5860
5830
|
if (source.ignoringItem())
|
|
5861
5831
|
return false;
|
|
@@ -5931,7 +5901,7 @@ exports.Moves = {
|
|
|
5931
5901
|
name: "Floaty Fall",
|
|
5932
5902
|
pp: 15,
|
|
5933
5903
|
priority: 0,
|
|
5934
|
-
flags: { contact: 1, protect: 1, gravity: 1 },
|
|
5904
|
+
flags: { contact: 1, protect: 1, mirror: 1, gravity: 1 },
|
|
5935
5905
|
secondary: {
|
|
5936
5906
|
chance: 30,
|
|
5937
5907
|
volatileStatus: 'flinch',
|
|
@@ -6027,7 +5997,9 @@ exports.Moves = {
|
|
|
6027
5997
|
name: "Fly",
|
|
6028
5998
|
pp: 15,
|
|
6029
5999
|
priority: 0,
|
|
6030
|
-
flags: {
|
|
6000
|
+
flags: {
|
|
6001
|
+
contact: 1, charge: 1, protect: 1, mirror: 1, gravity: 1, distance: 1, nosleeptalk: 1, noassist: 1, failinstruct: 1,
|
|
6002
|
+
},
|
|
6031
6003
|
onTryMove(attacker, defender, move) {
|
|
6032
6004
|
if (attacker.removeVolatile(move.id)) {
|
|
6033
6005
|
return;
|
|
@@ -6135,7 +6107,7 @@ exports.Moves = {
|
|
|
6135
6107
|
name: "Focus Punch",
|
|
6136
6108
|
pp: 20,
|
|
6137
6109
|
priority: -3,
|
|
6138
|
-
flags: { contact: 1, protect: 1, punch: 1 },
|
|
6110
|
+
flags: { contact: 1, protect: 1, punch: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
|
|
6139
6111
|
priorityChargeCallback(pokemon) {
|
|
6140
6112
|
pokemon.addVolatile('focuspunch');
|
|
6141
6113
|
},
|
|
@@ -6173,7 +6145,7 @@ exports.Moves = {
|
|
|
6173
6145
|
name: "Follow Me",
|
|
6174
6146
|
pp: 20,
|
|
6175
6147
|
priority: 2,
|
|
6176
|
-
flags: {},
|
|
6148
|
+
flags: { noassist: 1, failcopycat: 1 },
|
|
6177
6149
|
volatileStatus: 'followme',
|
|
6178
6150
|
onTry(source) {
|
|
6179
6151
|
return this.activePerHalf > 1;
|
|
@@ -6325,7 +6297,7 @@ exports.Moves = {
|
|
|
6325
6297
|
name: "Freeze Shock",
|
|
6326
6298
|
pp: 5,
|
|
6327
6299
|
priority: 0,
|
|
6328
|
-
flags: { charge: 1, protect: 1, mirror: 1 },
|
|
6300
|
+
flags: { charge: 1, protect: 1, mirror: 1, nosleeptalk: 1, failinstruct: 1 },
|
|
6329
6301
|
onTryMove(attacker, defender, move) {
|
|
6330
6302
|
if (attacker.removeVolatile(move.id)) {
|
|
6331
6303
|
return;
|
|
@@ -6370,7 +6342,7 @@ exports.Moves = {
|
|
|
6370
6342
|
name: "Freezy Frost",
|
|
6371
6343
|
pp: 10,
|
|
6372
6344
|
priority: 0,
|
|
6373
|
-
flags: { protect: 1 },
|
|
6345
|
+
flags: { protect: 1, mirror: 1 },
|
|
6374
6346
|
onHit() {
|
|
6375
6347
|
this.add('-clearallboost');
|
|
6376
6348
|
for (const pokemon of this.getAllActive()) {
|
|
@@ -6549,9 +6521,8 @@ exports.Moves = {
|
|
|
6549
6521
|
name: "Future Sight",
|
|
6550
6522
|
pp: 10,
|
|
6551
6523
|
priority: 0,
|
|
6552
|
-
flags: {},
|
|
6524
|
+
flags: { allyanim: 1, futuremove: 1 },
|
|
6553
6525
|
ignoreImmunity: true,
|
|
6554
|
-
isFutureMove: true,
|
|
6555
6526
|
onTry(source, target) {
|
|
6556
6527
|
if (!target.side.addSlotCondition(target, 'futuremove'))
|
|
6557
6528
|
return false;
|
|
@@ -6566,10 +6537,9 @@ exports.Moves = {
|
|
|
6566
6537
|
basePower: 120,
|
|
6567
6538
|
category: "Special",
|
|
6568
6539
|
priority: 0,
|
|
6569
|
-
flags: {},
|
|
6540
|
+
flags: { allyanim: 1, futuremove: 1 },
|
|
6570
6541
|
ignoreImmunity: false,
|
|
6571
6542
|
effectType: 'Move',
|
|
6572
|
-
isFutureMove: true,
|
|
6573
6543
|
type: 'Psychic',
|
|
6574
6544
|
},
|
|
6575
6545
|
});
|
|
@@ -6696,7 +6666,7 @@ exports.Moves = {
|
|
|
6696
6666
|
name: "Geomancy",
|
|
6697
6667
|
pp: 10,
|
|
6698
6668
|
priority: 0,
|
|
6699
|
-
flags: { charge: 1, nonsky: 1 },
|
|
6669
|
+
flags: { charge: 1, nonsky: 1, nosleeptalk: 1, failinstruct: 1 },
|
|
6700
6670
|
onTryMove(attacker, defender, move) {
|
|
6701
6671
|
if (attacker.removeVolatile(move.id)) {
|
|
6702
6672
|
return;
|
|
@@ -6885,7 +6855,7 @@ exports.Moves = {
|
|
|
6885
6855
|
name: "Glitzy Glow",
|
|
6886
6856
|
pp: 15,
|
|
6887
6857
|
priority: 0,
|
|
6888
|
-
flags: { protect: 1 },
|
|
6858
|
+
flags: { protect: 1, mirror: 1 },
|
|
6889
6859
|
self: {
|
|
6890
6860
|
sideCondition: 'lightscreen',
|
|
6891
6861
|
},
|
|
@@ -7837,7 +7807,7 @@ exports.Moves = {
|
|
|
7837
7807
|
name: "Grass Pledge",
|
|
7838
7808
|
pp: 10,
|
|
7839
7809
|
priority: 0,
|
|
7840
|
-
flags: { protect: 1, mirror: 1, nonsky: 1 },
|
|
7810
|
+
flags: { protect: 1, mirror: 1, nonsky: 1, pledgecombo: 1 },
|
|
7841
7811
|
onPrepareHit(target, source, move) {
|
|
7842
7812
|
for (const action of this.queue.list) {
|
|
7843
7813
|
if (!action.move || !action.pokemon?.isActive ||
|
|
@@ -7907,7 +7877,7 @@ exports.Moves = {
|
|
|
7907
7877
|
name: "Grassy Glide",
|
|
7908
7878
|
pp: 20,
|
|
7909
7879
|
priority: 0,
|
|
7910
|
-
flags: { contact: 1, protect: 1 },
|
|
7880
|
+
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
7911
7881
|
onModifyPriority(priority, source, target, move) {
|
|
7912
7882
|
if (this.field.isTerrain('grassyterrain') && source.isGrounded()) {
|
|
7913
7883
|
return priority + 1;
|
|
@@ -8152,7 +8122,7 @@ exports.Moves = {
|
|
|
8152
8122
|
onFaint(target, source, effect) {
|
|
8153
8123
|
if (!source || source.fainted || !effect)
|
|
8154
8124
|
return;
|
|
8155
|
-
if (effect.effectType === 'Move' && !effect.
|
|
8125
|
+
if (effect.effectType === 'Move' && !effect.flags['futuremove'] && source.lastMove) {
|
|
8156
8126
|
let move = source.lastMove;
|
|
8157
8127
|
if (move.isMax && move.baseMove)
|
|
8158
8128
|
move = this.dex.moves.get(move.baseMove);
|
|
@@ -8820,7 +8790,7 @@ exports.Moves = {
|
|
|
8820
8790
|
name: "Helping Hand",
|
|
8821
8791
|
pp: 20,
|
|
8822
8792
|
priority: 5,
|
|
8823
|
-
flags: { bypasssub: 1 },
|
|
8793
|
+
flags: { bypasssub: 1, noassist: 1, failcopycat: 1 },
|
|
8824
8794
|
volatileStatus: 'helpinghand',
|
|
8825
8795
|
onTryHit(target) {
|
|
8826
8796
|
if (!target.newlySwitched && !this.queue.willMove(target))
|
|
@@ -9203,7 +9173,7 @@ exports.Moves = {
|
|
|
9203
9173
|
name: "Hold Hands",
|
|
9204
9174
|
pp: 40,
|
|
9205
9175
|
priority: 0,
|
|
9206
|
-
flags: { bypasssub: 1 },
|
|
9176
|
+
flags: { bypasssub: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
9207
9177
|
secondary: null,
|
|
9208
9178
|
target: "adjacentAlly",
|
|
9209
9179
|
type: "Normal",
|
|
@@ -9540,7 +9510,7 @@ exports.Moves = {
|
|
|
9540
9510
|
name: "Ice Ball",
|
|
9541
9511
|
pp: 20,
|
|
9542
9512
|
priority: 0,
|
|
9543
|
-
flags: { bullet: 1, contact: 1, protect: 1, mirror: 1 },
|
|
9513
|
+
flags: { bullet: 1, contact: 1, protect: 1, mirror: 1, noparentalbond: 1, failinstruct: 1 },
|
|
9544
9514
|
onModifyMove(move, pokemon, target) {
|
|
9545
9515
|
if (pokemon.volatiles['iceball'] || pokemon.status === 'slp' || !target)
|
|
9546
9516
|
return;
|
|
@@ -9608,7 +9578,7 @@ exports.Moves = {
|
|
|
9608
9578
|
name: "Ice Burn",
|
|
9609
9579
|
pp: 5,
|
|
9610
9580
|
priority: 0,
|
|
9611
|
-
flags: { charge: 1, protect: 1, mirror: 1 },
|
|
9581
|
+
flags: { charge: 1, protect: 1, mirror: 1, nosleeptalk: 1, failinstruct: 1 },
|
|
9612
9582
|
onTryMove(attacker, defender, move) {
|
|
9613
9583
|
if (attacker.removeVolatile(move.id)) {
|
|
9614
9584
|
return;
|
|
@@ -9780,7 +9750,7 @@ exports.Moves = {
|
|
|
9780
9750
|
name: "Imprison",
|
|
9781
9751
|
pp: 10,
|
|
9782
9752
|
priority: 0,
|
|
9783
|
-
flags: { snatch: 1, bypasssub: 1 },
|
|
9753
|
+
flags: { snatch: 1, bypasssub: 1, mustpressure: 1 },
|
|
9784
9754
|
volatileStatus: 'imprison',
|
|
9785
9755
|
condition: {
|
|
9786
9756
|
noCopy: true,
|
|
@@ -9804,7 +9774,6 @@ exports.Moves = {
|
|
|
9804
9774
|
},
|
|
9805
9775
|
},
|
|
9806
9776
|
secondary: null,
|
|
9807
|
-
pressureTarget: "foeSide",
|
|
9808
9777
|
target: "self",
|
|
9809
9778
|
type: "Psychic",
|
|
9810
9779
|
zMove: { boost: { spd: 2 } },
|
|
@@ -9941,16 +9910,13 @@ exports.Moves = {
|
|
|
9941
9910
|
name: "Instruct",
|
|
9942
9911
|
pp: 15,
|
|
9943
9912
|
priority: 0,
|
|
9944
|
-
flags: { protect: 1, bypasssub: 1, allyanim: 1 },
|
|
9913
|
+
flags: { protect: 1, bypasssub: 1, allyanim: 1, failinstruct: 1 },
|
|
9945
9914
|
onHit(target, source) {
|
|
9946
9915
|
if (!target.lastMove || target.volatiles['dynamax'])
|
|
9947
9916
|
return false;
|
|
9948
9917
|
const lastMove = target.lastMove;
|
|
9949
9918
|
const moveIndex = target.moves.indexOf(lastMove.id);
|
|
9950
|
-
|
|
9951
|
-
'assist', 'beakblast', 'belch', 'bide', 'celebrate', 'copycat', 'dynamaxcannon', 'focuspunch', 'iceball', 'instruct', 'kingsshield', 'mefirst', 'metronome', 'mimic', 'mirrormove', 'naturepower', 'obstruct', 'outrage', 'petaldance', 'rollout', 'shelltrap', 'sketch', 'sleeptalk', 'struggle', 'thrash', 'transform', 'uproar',
|
|
9952
|
-
];
|
|
9953
|
-
if (noInstruct.includes(lastMove.id) || lastMove.isZ || lastMove.isMax ||
|
|
9919
|
+
if (lastMove.flags['failinstruct'] || lastMove.isZ || lastMove.isMax ||
|
|
9954
9920
|
lastMove.flags['charge'] || lastMove.flags['recharge'] ||
|
|
9955
9921
|
target.volatiles['beakblast'] || target.volatiles['focuspunch'] || target.volatiles['shelltrap'] ||
|
|
9956
9922
|
(target.moveSlots[moveIndex] && target.moveSlots[moveIndex].pp <= 0)) {
|
|
@@ -10189,7 +10155,7 @@ exports.Moves = {
|
|
|
10189
10155
|
name: "King's Shield",
|
|
10190
10156
|
pp: 10,
|
|
10191
10157
|
priority: 4,
|
|
10192
|
-
flags: {},
|
|
10158
|
+
flags: { noassist: 1, failcopycat: 1, failinstruct: 1 },
|
|
10193
10159
|
stallingMove: true,
|
|
10194
10160
|
volatileStatus: 'kingsshield',
|
|
10195
10161
|
onPrepareHit(pokemon) {
|
|
@@ -10999,7 +10965,9 @@ exports.Moves = {
|
|
|
10999
10965
|
name: "Magical Torque",
|
|
11000
10966
|
pp: 10,
|
|
11001
10967
|
priority: 0,
|
|
11002
|
-
flags: {
|
|
10968
|
+
flags: {
|
|
10969
|
+
protect: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1,
|
|
10970
|
+
},
|
|
11003
10971
|
secondary: {
|
|
11004
10972
|
chance: 30,
|
|
11005
10973
|
volatileStatus: 'confusion',
|
|
@@ -11308,7 +11276,7 @@ exports.Moves = {
|
|
|
11308
11276
|
name: "Mat Block",
|
|
11309
11277
|
pp: 10,
|
|
11310
11278
|
priority: 0,
|
|
11311
|
-
flags: { snatch: 1, nonsky: 1 },
|
|
11279
|
+
flags: { snatch: 1, nonsky: 1, noassist: 1, failcopycat: 1 },
|
|
11312
11280
|
stallingMove: true,
|
|
11313
11281
|
sideCondition: 'matblock',
|
|
11314
11282
|
onTry(source) {
|
|
@@ -11865,20 +11833,20 @@ exports.Moves = {
|
|
|
11865
11833
|
name: "Me First",
|
|
11866
11834
|
pp: 20,
|
|
11867
11835
|
priority: 0,
|
|
11868
|
-
flags: {
|
|
11836
|
+
flags: {
|
|
11837
|
+
protect: 1, bypasssub: 1,
|
|
11838
|
+
failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1,
|
|
11839
|
+
},
|
|
11869
11840
|
onTryHit(target, pokemon) {
|
|
11870
11841
|
const action = this.queue.willMove(target);
|
|
11871
11842
|
if (!action)
|
|
11872
11843
|
return false;
|
|
11873
|
-
const noMeFirst = [
|
|
11874
|
-
'beakblast', 'chatter', 'counter', 'covet', 'focuspunch', 'mefirst', 'metalburst', 'mirrorcoat', 'shelltrap', 'struggle', 'thief',
|
|
11875
|
-
];
|
|
11876
11844
|
const move = this.dex.getActiveMove(action.move.id);
|
|
11877
11845
|
if (action.zmove || move.isZ || move.isMax)
|
|
11878
11846
|
return false;
|
|
11879
11847
|
if (target.volatiles['mustrecharge'])
|
|
11880
11848
|
return false;
|
|
11881
|
-
if (move.category === 'Status' ||
|
|
11849
|
+
if (move.category === 'Status' || move.flags['failmefirst'])
|
|
11882
11850
|
return false;
|
|
11883
11851
|
pokemon.addVolatile('mefirst');
|
|
11884
11852
|
this.actions.useMove(move, pokemon, target);
|
|
@@ -12007,7 +11975,7 @@ exports.Moves = {
|
|
|
12007
11975
|
name: "Metal Burst",
|
|
12008
11976
|
pp: 10,
|
|
12009
11977
|
priority: 0,
|
|
12010
|
-
flags: { protect: 1, mirror: 1 },
|
|
11978
|
+
flags: { protect: 1, mirror: 1, failmefirst: 1 },
|
|
12011
11979
|
onTry(source) {
|
|
12012
11980
|
const lastDamagedBy = source.getLastDamagedBy(true);
|
|
12013
11981
|
if (lastDamagedBy === undefined || !lastDamagedBy.thisTurn)
|
|
@@ -12072,7 +12040,7 @@ exports.Moves = {
|
|
|
12072
12040
|
name: "Meteor Assault",
|
|
12073
12041
|
pp: 5,
|
|
12074
12042
|
priority: 0,
|
|
12075
|
-
flags: { protect: 1, recharge: 1, mirror: 1 },
|
|
12043
|
+
flags: { protect: 1, recharge: 1, mirror: 1, failinstruct: 1 },
|
|
12076
12044
|
self: {
|
|
12077
12045
|
volatileStatus: 'mustrecharge',
|
|
12078
12046
|
},
|
|
@@ -12134,7 +12102,7 @@ exports.Moves = {
|
|
|
12134
12102
|
name: "Metronome",
|
|
12135
12103
|
pp: 10,
|
|
12136
12104
|
priority: 0,
|
|
12137
|
-
flags: {},
|
|
12105
|
+
flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
12138
12106
|
noMetronome: [
|
|
12139
12107
|
"After You", "Apple Acid", "Armor Cannon", "Assist", "Astral Barrage", "Aura Wheel", "Baneful Bunker", "Beak Blast", "Behemoth Bash", "Behemoth Blade", "Belch", "Bestow", "Blazing Torque", "Body Press", "Branch Poke", "Breaking Swipe", "Celebrate", "Chatter", "Chilling Water", "Chilly Reception", "Clangorous Soul", "Collision Course", "Combat Torque", "Comeuppance", "Copycat", "Counter", "Covet", "Crafty Shield", "Decorate", "Destiny Bond", "Detect", "Diamond Storm", "Doodle", "Double Iron Bash", "Double Shock", "Dragon Ascent", "Dragon Energy", "Drum Beating", "Dynamax Cannon", "Electro Drift", "Endure", "Eternabeam", "False Surrender", "Feint", "Fiery Wrath", "Fillet Away", "Fleur Cannon", "Focus Punch", "Follow Me", "Freeze Shock", "Freezing Glare", "Glacial Lance", "Grav Apple", "Helping Hand", "Hold Hands", "Hyper Drill", "Hyperspace Fury", "Hyperspace Hole", "Ice Burn", "Instruct", "Jet Punch", "Jungle Healing", "King's Shield", "Life Dew", "Light of Ruin", "Magical Torque", "Make It Rain", "Mat Block", "Me First", "Meteor Assault", "Metronome", "Mimic", "Mind Blown", "Mirror Coat", "Mirror Move", "Moongeist Beam", "Nature Power", "Nature's Madness", "Noxious Torque", "Obstruct", "Order Up", "Origin Pulse", "Overdrive", "Photon Geyser", "Plasma Fists", "Population Bomb", "Pounce", "Power Shift", "Precipice Blades", "Protect", "Pyro Ball", "Quash", "Quick Guard", "Rage Fist", "Rage Powder", "Raging Bull", "Raging Fury", "Relic Song", "Revival Blessing", "Ruination", "Salt Cure", "Secret Sword", "Shed Tail", "Shell Trap", "Silk Trap", "Sketch", "Sleep Talk", "Snap Trap", "Snarl", "Snatch", "Snore", "Snowscape", "Spectral Thief", "Spicy Extract", "Spiky Shield", "Spirit Break", "Spotlight", "Springtide Storm", "Steam Eruption", "Steel Beam", "Strange Steam", "Struggle", "Sunsteel Strike", "Surging Strikes", "Switcheroo", "Techno Blast", "Thief", "Thousand Arrows", "Thousand Waves", "Thunder Cage", "Thunderous Kick", "Tidy Up", "Trailblaze", "Transform", "Trick", "Twin Beam", "V-create", "Wicked Blow", "Wicked Torque", "Wide Guard",
|
|
12140
12108
|
],
|
|
@@ -12182,13 +12150,13 @@ exports.Moves = {
|
|
|
12182
12150
|
name: "Mimic",
|
|
12183
12151
|
pp: 10,
|
|
12184
12152
|
priority: 0,
|
|
12185
|
-
flags: {
|
|
12153
|
+
flags: {
|
|
12154
|
+
protect: 1, bypasssub: 1, allyanim: 1,
|
|
12155
|
+
failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1,
|
|
12156
|
+
},
|
|
12186
12157
|
onHit(target, source) {
|
|
12187
|
-
const disallowedMoves = [
|
|
12188
|
-
'behemothbash', 'behemothblade', 'chatter', 'dynamaxcannon', 'mimic', 'sketch', 'struggle', 'transform',
|
|
12189
|
-
];
|
|
12190
12158
|
const move = target.lastMove;
|
|
12191
|
-
if (source.transformed || !move ||
|
|
12159
|
+
if (source.transformed || !move || move.flags['failmimic'] || source.moves.includes(move.id)) {
|
|
12192
12160
|
return false;
|
|
12193
12161
|
}
|
|
12194
12162
|
if (move.isZ || move.isMax)
|
|
@@ -12352,7 +12320,7 @@ exports.Moves = {
|
|
|
12352
12320
|
name: "Mirror Coat",
|
|
12353
12321
|
pp: 20,
|
|
12354
12322
|
priority: -5,
|
|
12355
|
-
flags: { protect: 1 },
|
|
12323
|
+
flags: { protect: 1, failmefirst: 1, noassist: 1 },
|
|
12356
12324
|
beforeTurnCallback(pokemon) {
|
|
12357
12325
|
pokemon.addVolatile('mirrorcoat');
|
|
12358
12326
|
},
|
|
@@ -12398,7 +12366,7 @@ exports.Moves = {
|
|
|
12398
12366
|
name: "Mirror Move",
|
|
12399
12367
|
pp: 20,
|
|
12400
12368
|
priority: 0,
|
|
12401
|
-
flags: {},
|
|
12369
|
+
flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
12402
12370
|
onTryHit(target, pokemon) {
|
|
12403
12371
|
const move = target.lastMove;
|
|
12404
12372
|
if (!move?.flags['mirror'] || move.isZ || move.isMax) {
|
|
@@ -12988,7 +12956,7 @@ exports.Moves = {
|
|
|
12988
12956
|
name: "Nature Power",
|
|
12989
12957
|
pp: 20,
|
|
12990
12958
|
priority: 0,
|
|
12991
|
-
flags: {},
|
|
12959
|
+
flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
12992
12960
|
onTryHit(target, pokemon) {
|
|
12993
12961
|
let move = 'triattack';
|
|
12994
12962
|
if (this.field.isTerrain('electricterrain')) {
|
|
@@ -13206,7 +13174,9 @@ exports.Moves = {
|
|
|
13206
13174
|
name: "Noxious Torque",
|
|
13207
13175
|
pp: 10,
|
|
13208
13176
|
priority: 0,
|
|
13209
|
-
flags: {
|
|
13177
|
+
flags: {
|
|
13178
|
+
protect: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1,
|
|
13179
|
+
},
|
|
13210
13180
|
secondary: {
|
|
13211
13181
|
chance: 30,
|
|
13212
13182
|
status: 'psn',
|
|
@@ -13256,7 +13226,7 @@ exports.Moves = {
|
|
|
13256
13226
|
name: "Obstruct",
|
|
13257
13227
|
pp: 10,
|
|
13258
13228
|
priority: 4,
|
|
13259
|
-
flags: {},
|
|
13229
|
+
flags: { failinstruct: 1 },
|
|
13260
13230
|
stallingMove: true,
|
|
13261
13231
|
volatileStatus: 'obstruct',
|
|
13262
13232
|
onPrepareHit(pokemon) {
|
|
@@ -13480,7 +13450,7 @@ exports.Moves = {
|
|
|
13480
13450
|
name: "Outrage",
|
|
13481
13451
|
pp: 10,
|
|
13482
13452
|
priority: 0,
|
|
13483
|
-
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
13453
|
+
flags: { contact: 1, protect: 1, mirror: 1, failinstruct: 1 },
|
|
13484
13454
|
self: {
|
|
13485
13455
|
volatileStatus: 'lockedmove',
|
|
13486
13456
|
},
|
|
@@ -13729,7 +13699,7 @@ exports.Moves = {
|
|
|
13729
13699
|
name: "Petal Dance",
|
|
13730
13700
|
pp: 10,
|
|
13731
13701
|
priority: 0,
|
|
13732
|
-
flags: { contact: 1, protect: 1, mirror: 1, dance: 1 },
|
|
13702
|
+
flags: { contact: 1, protect: 1, mirror: 1, dance: 1, failinstruct: 1 },
|
|
13733
13703
|
self: {
|
|
13734
13704
|
volatileStatus: 'lockedmove',
|
|
13735
13705
|
},
|
|
@@ -13751,7 +13721,7 @@ exports.Moves = {
|
|
|
13751
13721
|
name: "Phantom Force",
|
|
13752
13722
|
pp: 10,
|
|
13753
13723
|
priority: 0,
|
|
13754
|
-
flags: { contact: 1, charge: 1, mirror: 1 },
|
|
13724
|
+
flags: { contact: 1, charge: 1, mirror: 1, nosleeptalk: 1, noassist: 1, failinstruct: 1 },
|
|
13755
13725
|
breaksProtect: true,
|
|
13756
13726
|
onTryMove(attacker, defender, move) {
|
|
13757
13727
|
if (attacker.removeVolatile(move.id)) {
|
|
@@ -13807,7 +13777,7 @@ exports.Moves = {
|
|
|
13807
13777
|
name: "Pika Papow",
|
|
13808
13778
|
pp: 20,
|
|
13809
13779
|
priority: 0,
|
|
13810
|
-
flags: { protect: 1 },
|
|
13780
|
+
flags: { protect: 1, mirror: 1 },
|
|
13811
13781
|
secondary: null,
|
|
13812
13782
|
target: "normal",
|
|
13813
13783
|
type: "Electric",
|
|
@@ -14427,7 +14397,7 @@ exports.Moves = {
|
|
|
14427
14397
|
name: "Protect",
|
|
14428
14398
|
pp: 10,
|
|
14429
14399
|
priority: 4,
|
|
14430
|
-
flags: {},
|
|
14400
|
+
flags: { noassist: 1, failcopycat: 1 },
|
|
14431
14401
|
stallingMove: true,
|
|
14432
14402
|
volatileStatus: 'protect',
|
|
14433
14403
|
onPrepareHit(pokemon) {
|
|
@@ -15088,7 +15058,7 @@ exports.Moves = {
|
|
|
15088
15058
|
name: "Rage Powder",
|
|
15089
15059
|
pp: 20,
|
|
15090
15060
|
priority: 2,
|
|
15091
|
-
flags: { powder: 1 },
|
|
15061
|
+
flags: { powder: 1, noassist: 1, failcopycat: 1 },
|
|
15092
15062
|
volatileStatus: 'ragepowder',
|
|
15093
15063
|
onTry(source) {
|
|
15094
15064
|
return this.activePerHalf > 1;
|
|
@@ -15279,7 +15249,7 @@ exports.Moves = {
|
|
|
15279
15249
|
name: "Razor Wind",
|
|
15280
15250
|
pp: 10,
|
|
15281
15251
|
priority: 0,
|
|
15282
|
-
flags: { charge: 1, protect: 1, mirror: 1 },
|
|
15252
|
+
flags: { charge: 1, protect: 1, mirror: 1, nosleeptalk: 1, failinstruct: 1 },
|
|
15283
15253
|
onTryMove(attacker, defender, move) {
|
|
15284
15254
|
if (attacker.removeVolatile(move.id)) {
|
|
15285
15255
|
return;
|
|
@@ -15680,7 +15650,7 @@ exports.Moves = {
|
|
|
15680
15650
|
name: "Roar",
|
|
15681
15651
|
pp: 20,
|
|
15682
15652
|
priority: -6,
|
|
15683
|
-
flags: { reflectable: 1, mirror: 1, sound: 1, bypasssub: 1, allyanim: 1 },
|
|
15653
|
+
flags: { reflectable: 1, mirror: 1, sound: 1, bypasssub: 1, allyanim: 1, noassist: 1, failcopycat: 1 },
|
|
15684
15654
|
forceSwitch: true,
|
|
15685
15655
|
secondary: null,
|
|
15686
15656
|
target: "normal",
|
|
@@ -15925,7 +15895,7 @@ exports.Moves = {
|
|
|
15925
15895
|
name: "Rollout",
|
|
15926
15896
|
pp: 20,
|
|
15927
15897
|
priority: 0,
|
|
15928
|
-
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
15898
|
+
flags: { contact: 1, protect: 1, mirror: 1, noparentalbond: 1, failinstruct: 1 },
|
|
15929
15899
|
onModifyMove(move, pokemon, target) {
|
|
15930
15900
|
if (pokemon.volatiles['rollout'] || pokemon.status === 'slp' || !target)
|
|
15931
15901
|
return;
|
|
@@ -16290,7 +16260,7 @@ exports.Moves = {
|
|
|
16290
16260
|
name: "Sappy Seed",
|
|
16291
16261
|
pp: 10,
|
|
16292
16262
|
priority: 0,
|
|
16293
|
-
flags: { protect: 1, reflectable: 1 },
|
|
16263
|
+
flags: { protect: 1, reflectable: 1, mirror: 1 },
|
|
16294
16264
|
onHit(target, source) {
|
|
16295
16265
|
if (target.hasType('Grass'))
|
|
16296
16266
|
return null;
|
|
@@ -16584,7 +16554,7 @@ exports.Moves = {
|
|
|
16584
16554
|
name: "Self-Destruct",
|
|
16585
16555
|
pp: 5,
|
|
16586
16556
|
priority: 0,
|
|
16587
|
-
flags: { protect: 1, mirror: 1 },
|
|
16557
|
+
flags: { protect: 1, mirror: 1, noparentalbond: 1 },
|
|
16588
16558
|
selfdestruct: "always",
|
|
16589
16559
|
secondary: null,
|
|
16590
16560
|
target: "allAdjacent",
|
|
@@ -16653,7 +16623,7 @@ exports.Moves = {
|
|
|
16653
16623
|
name: "Shadow Force",
|
|
16654
16624
|
pp: 5,
|
|
16655
16625
|
priority: 0,
|
|
16656
|
-
flags: { contact: 1, charge: 1, mirror: 1 },
|
|
16626
|
+
flags: { contact: 1, charge: 1, mirror: 1, nosleeptalk: 1, noassist: 1, failinstruct: 1 },
|
|
16657
16627
|
breaksProtect: true,
|
|
16658
16628
|
onTryMove(attacker, defender, move) {
|
|
16659
16629
|
if (attacker.removeVolatile(move.id)) {
|
|
@@ -16888,7 +16858,7 @@ exports.Moves = {
|
|
|
16888
16858
|
name: "Shell Trap",
|
|
16889
16859
|
pp: 5,
|
|
16890
16860
|
priority: -3,
|
|
16891
|
-
flags: { protect: 1 },
|
|
16861
|
+
flags: { protect: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
|
|
16892
16862
|
priorityChargeCallback(pokemon) {
|
|
16893
16863
|
pokemon.addVolatile('shelltrap');
|
|
16894
16864
|
},
|
|
@@ -17166,7 +17136,7 @@ exports.Moves = {
|
|
|
17166
17136
|
name: "Sizzly Slide",
|
|
17167
17137
|
pp: 20,
|
|
17168
17138
|
priority: 0,
|
|
17169
|
-
flags: { contact: 1, protect: 1, defrost: 1 },
|
|
17139
|
+
flags: { contact: 1, protect: 1, mirror: 1, defrost: 1 },
|
|
17170
17140
|
secondary: {
|
|
17171
17141
|
chance: 100,
|
|
17172
17142
|
status: 'brn',
|
|
@@ -17185,7 +17155,9 @@ exports.Moves = {
|
|
|
17185
17155
|
pp: 1,
|
|
17186
17156
|
noPPBoosts: true,
|
|
17187
17157
|
priority: 0,
|
|
17188
|
-
flags: {
|
|
17158
|
+
flags: {
|
|
17159
|
+
bypasssub: 1, allyanim: 1, failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1,
|
|
17160
|
+
},
|
|
17189
17161
|
onHit(target, source) {
|
|
17190
17162
|
const disallowedMoves = ['chatter', 'sketch', 'struggle'];
|
|
17191
17163
|
const move = target.lastMove;
|
|
@@ -17295,7 +17267,7 @@ exports.Moves = {
|
|
|
17295
17267
|
name: "Skull Bash",
|
|
17296
17268
|
pp: 10,
|
|
17297
17269
|
priority: 0,
|
|
17298
|
-
flags: { contact: 1, charge: 1, protect: 1, mirror: 1 },
|
|
17270
|
+
flags: { contact: 1, charge: 1, protect: 1, mirror: 1, nosleeptalk: 1, failinstruct: 1 },
|
|
17299
17271
|
onTryMove(attacker, defender, move) {
|
|
17300
17272
|
if (attacker.removeVolatile(move.id)) {
|
|
17301
17273
|
return;
|
|
@@ -17321,7 +17293,7 @@ exports.Moves = {
|
|
|
17321
17293
|
name: "Sky Attack",
|
|
17322
17294
|
pp: 5,
|
|
17323
17295
|
priority: 0,
|
|
17324
|
-
flags: { charge: 1, protect: 1, mirror: 1, distance: 1 },
|
|
17296
|
+
flags: { charge: 1, protect: 1, mirror: 1, distance: 1, nosleeptalk: 1, failinstruct: 1 },
|
|
17325
17297
|
critRatio: 2,
|
|
17326
17298
|
onTryMove(attacker, defender, move) {
|
|
17327
17299
|
if (attacker.removeVolatile(move.id)) {
|
|
@@ -17351,7 +17323,9 @@ exports.Moves = {
|
|
|
17351
17323
|
name: "Sky Drop",
|
|
17352
17324
|
pp: 10,
|
|
17353
17325
|
priority: 0,
|
|
17354
|
-
flags: {
|
|
17326
|
+
flags: {
|
|
17327
|
+
contact: 1, charge: 1, protect: 1, mirror: 1, gravity: 1, distance: 1, nosleeptalk: 1, noassist: 1, failinstruct: 1,
|
|
17328
|
+
},
|
|
17355
17329
|
onModifyMove(move, source) {
|
|
17356
17330
|
if (!source.volatiles['skydrop']) {
|
|
17357
17331
|
move.accuracy = true;
|
|
@@ -17543,22 +17517,19 @@ exports.Moves = {
|
|
|
17543
17517
|
name: "Sleep Talk",
|
|
17544
17518
|
pp: 10,
|
|
17545
17519
|
priority: 0,
|
|
17546
|
-
flags: {},
|
|
17520
|
+
flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
17547
17521
|
sleepUsable: true,
|
|
17548
17522
|
onTry(source) {
|
|
17549
17523
|
return source.status === 'slp' || source.hasAbility('comatose');
|
|
17550
17524
|
},
|
|
17551
17525
|
onHit(pokemon) {
|
|
17552
|
-
const noSleepTalk = [
|
|
17553
|
-
'assist', 'beakblast', 'belch', 'bide', 'celebrate', 'chatter', 'copycat', 'dynamaxcannon', 'focuspunch', 'mefirst', 'metronome', 'mimic', 'mirrormove', 'naturepower', 'shelltrap', 'sketch', 'sleeptalk', 'uproar',
|
|
17554
|
-
];
|
|
17555
17526
|
const moves = [];
|
|
17556
17527
|
for (const moveSlot of pokemon.moveSlots) {
|
|
17557
17528
|
const moveid = moveSlot.id;
|
|
17558
17529
|
if (!moveid)
|
|
17559
17530
|
continue;
|
|
17560
17531
|
const move = this.dex.moves.get(moveid);
|
|
17561
|
-
if (
|
|
17532
|
+
if (move.flags['nosleeptalk'] || move.flags['charge'] || (move.isZ && move.basePower !== 1) || move.isMax) {
|
|
17562
17533
|
continue;
|
|
17563
17534
|
}
|
|
17564
17535
|
moves.push(moveid);
|
|
@@ -17796,7 +17767,7 @@ exports.Moves = {
|
|
|
17796
17767
|
name: "Snatch",
|
|
17797
17768
|
pp: 10,
|
|
17798
17769
|
priority: 4,
|
|
17799
|
-
flags: { bypasssub: 1 },
|
|
17770
|
+
flags: { bypasssub: 1, mustpressure: 1, noassist: 1, failcopycat: 1 },
|
|
17800
17771
|
volatileStatus: 'snatch',
|
|
17801
17772
|
condition: {
|
|
17802
17773
|
duration: 1,
|
|
@@ -17818,7 +17789,6 @@ exports.Moves = {
|
|
|
17818
17789
|
},
|
|
17819
17790
|
},
|
|
17820
17791
|
secondary: null,
|
|
17821
|
-
pressureTarget: "foeSide",
|
|
17822
17792
|
target: "self",
|
|
17823
17793
|
type: "Dark",
|
|
17824
17794
|
zMove: { boost: { spe: 2 } },
|
|
@@ -17922,7 +17892,7 @@ exports.Moves = {
|
|
|
17922
17892
|
name: "Solar Beam",
|
|
17923
17893
|
pp: 10,
|
|
17924
17894
|
priority: 0,
|
|
17925
|
-
flags: { charge: 1, protect: 1, mirror: 1 },
|
|
17895
|
+
flags: { charge: 1, protect: 1, mirror: 1, nosleeptalk: 1, failinstruct: 1 },
|
|
17926
17896
|
onTryMove(attacker, defender, move) {
|
|
17927
17897
|
if (attacker.removeVolatile(move.id)) {
|
|
17928
17898
|
return;
|
|
@@ -17959,7 +17929,7 @@ exports.Moves = {
|
|
|
17959
17929
|
name: "Solar Blade",
|
|
17960
17930
|
pp: 10,
|
|
17961
17931
|
priority: 0,
|
|
17962
|
-
flags: { contact: 1, charge: 1, protect: 1, mirror: 1, slicing: 1 },
|
|
17932
|
+
flags: { contact: 1, charge: 1, protect: 1, mirror: 1, slicing: 1, nosleeptalk: 1, failinstruct: 1 },
|
|
17963
17933
|
onTryMove(attacker, defender, move) {
|
|
17964
17934
|
if (attacker.removeVolatile(move.id)) {
|
|
17965
17935
|
return;
|
|
@@ -18087,7 +18057,7 @@ exports.Moves = {
|
|
|
18087
18057
|
name: "Sparkly Swirl",
|
|
18088
18058
|
pp: 5,
|
|
18089
18059
|
priority: 0,
|
|
18090
|
-
flags: { protect: 1 },
|
|
18060
|
+
flags: { protect: 1, mirror: 1 },
|
|
18091
18061
|
self: {
|
|
18092
18062
|
onHit(pokemon, source, move) {
|
|
18093
18063
|
this.add('-activate', source, 'move: Aromatherapy');
|
|
@@ -18203,7 +18173,7 @@ exports.Moves = {
|
|
|
18203
18173
|
name: "Spikes",
|
|
18204
18174
|
pp: 20,
|
|
18205
18175
|
priority: 0,
|
|
18206
|
-
flags: { reflectable: 1, nonsky: 1 },
|
|
18176
|
+
flags: { reflectable: 1, nonsky: 1, mustpressure: 1 },
|
|
18207
18177
|
sideCondition: 'spikes',
|
|
18208
18178
|
condition: {
|
|
18209
18179
|
// this is a side condition
|
|
@@ -18238,7 +18208,7 @@ exports.Moves = {
|
|
|
18238
18208
|
name: "Spiky Shield",
|
|
18239
18209
|
pp: 10,
|
|
18240
18210
|
priority: 4,
|
|
18241
|
-
flags: {},
|
|
18211
|
+
flags: { noassist: 1, failcopycat: 1 },
|
|
18242
18212
|
stallingMove: true,
|
|
18243
18213
|
volatileStatus: 'spikyshield',
|
|
18244
18214
|
onPrepareHit(pokemon) {
|
|
@@ -18454,7 +18424,7 @@ exports.Moves = {
|
|
|
18454
18424
|
name: "Splishy Splash",
|
|
18455
18425
|
pp: 15,
|
|
18456
18426
|
priority: 0,
|
|
18457
|
-
flags: { protect: 1 },
|
|
18427
|
+
flags: { protect: 1, mirror: 1 },
|
|
18458
18428
|
secondary: {
|
|
18459
18429
|
chance: 30,
|
|
18460
18430
|
status: 'par',
|
|
@@ -18488,7 +18458,7 @@ exports.Moves = {
|
|
|
18488
18458
|
name: "Spotlight",
|
|
18489
18459
|
pp: 15,
|
|
18490
18460
|
priority: 3,
|
|
18491
|
-
flags: { protect: 1, reflectable: 1, allyanim: 1 },
|
|
18461
|
+
flags: { protect: 1, reflectable: 1, allyanim: 1, noassist: 1, failcopycat: 1 },
|
|
18492
18462
|
volatileStatus: 'spotlight',
|
|
18493
18463
|
onTryHit(target) {
|
|
18494
18464
|
if (this.activePerHalf === 1)
|
|
@@ -18540,7 +18510,7 @@ exports.Moves = {
|
|
|
18540
18510
|
name: "Stealth Rock",
|
|
18541
18511
|
pp: 20,
|
|
18542
18512
|
priority: 0,
|
|
18543
|
-
flags: { reflectable: 1 },
|
|
18513
|
+
flags: { reflectable: 1, mustpressure: 1 },
|
|
18544
18514
|
sideCondition: 'stealthrock',
|
|
18545
18515
|
condition: {
|
|
18546
18516
|
// this is a side condition
|
|
@@ -18684,7 +18654,6 @@ exports.Moves = {
|
|
|
18684
18654
|
},
|
|
18685
18655
|
},
|
|
18686
18656
|
secondary: null,
|
|
18687
|
-
pressureTarget: "self",
|
|
18688
18657
|
target: "foeSide",
|
|
18689
18658
|
type: "Bug",
|
|
18690
18659
|
zMove: { boost: { spe: 1 } },
|
|
@@ -18962,7 +18931,10 @@ exports.Moves = {
|
|
|
18962
18931
|
pp: 1,
|
|
18963
18932
|
noPPBoosts: true,
|
|
18964
18933
|
priority: 0,
|
|
18965
|
-
flags: {
|
|
18934
|
+
flags: {
|
|
18935
|
+
contact: 1, protect: 1,
|
|
18936
|
+
failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1,
|
|
18937
|
+
},
|
|
18966
18938
|
noSketch: true,
|
|
18967
18939
|
onModifyMove(move, pokemon, target) {
|
|
18968
18940
|
move.type = '???';
|
|
@@ -19405,7 +19377,7 @@ exports.Moves = {
|
|
|
19405
19377
|
name: "Switcheroo",
|
|
19406
19378
|
pp: 10,
|
|
19407
19379
|
priority: 0,
|
|
19408
|
-
flags: { protect: 1, mirror: 1, allyanim: 1 },
|
|
19380
|
+
flags: { protect: 1, mirror: 1, allyanim: 1, noassist: 1, failcopycat: 1 },
|
|
19409
19381
|
onTryImmunity(target) {
|
|
19410
19382
|
return !target.hasAbility('stickyhold');
|
|
19411
19383
|
},
|
|
@@ -19929,7 +19901,7 @@ exports.Moves = {
|
|
|
19929
19901
|
name: "Tera Blast",
|
|
19930
19902
|
pp: 10,
|
|
19931
19903
|
priority: 0,
|
|
19932
|
-
flags: { protect: 1, mirror: 1 },
|
|
19904
|
+
flags: { protect: 1, mirror: 1, mustpressure: 1 },
|
|
19933
19905
|
onModifyType(move, pokemon, target) {
|
|
19934
19906
|
if (pokemon.terastallized) {
|
|
19935
19907
|
move.type = pokemon.teraType;
|
|
@@ -19991,7 +19963,7 @@ exports.Moves = {
|
|
|
19991
19963
|
name: "Thief",
|
|
19992
19964
|
pp: 25,
|
|
19993
19965
|
priority: 0,
|
|
19994
|
-
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
19966
|
+
flags: { contact: 1, protect: 1, mirror: 1, failmefirst: 1, noassist: 1, failcopycat: 1 },
|
|
19995
19967
|
onAfterHit(target, source, move) {
|
|
19996
19968
|
if (source.item || source.volatiles['gem']) {
|
|
19997
19969
|
return;
|
|
@@ -20069,7 +20041,7 @@ exports.Moves = {
|
|
|
20069
20041
|
name: "Thrash",
|
|
20070
20042
|
pp: 10,
|
|
20071
20043
|
priority: 0,
|
|
20072
|
-
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
20044
|
+
flags: { contact: 1, protect: 1, mirror: 1, failinstruct: 1 },
|
|
20073
20045
|
self: {
|
|
20074
20046
|
volatileStatus: 'lockedmove',
|
|
20075
20047
|
},
|
|
@@ -20445,7 +20417,7 @@ exports.Moves = {
|
|
|
20445
20417
|
name: "Toxic Spikes",
|
|
20446
20418
|
pp: 20,
|
|
20447
20419
|
priority: 0,
|
|
20448
|
-
flags: { reflectable: 1, nonsky: 1 },
|
|
20420
|
+
flags: { reflectable: 1, nonsky: 1, mustpressure: 1 },
|
|
20449
20421
|
sideCondition: 'toxicspikes',
|
|
20450
20422
|
condition: {
|
|
20451
20423
|
// this is a side condition
|
|
@@ -20532,7 +20504,7 @@ exports.Moves = {
|
|
|
20532
20504
|
name: "Transform",
|
|
20533
20505
|
pp: 10,
|
|
20534
20506
|
priority: 0,
|
|
20535
|
-
flags: { allyanim: 1 },
|
|
20507
|
+
flags: { allyanim: 1, failencore: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1 },
|
|
20536
20508
|
onHit(target, pokemon) {
|
|
20537
20509
|
if (!pokemon.transformInto(target)) {
|
|
20538
20510
|
return false;
|
|
@@ -20580,7 +20552,7 @@ exports.Moves = {
|
|
|
20580
20552
|
name: "Trick",
|
|
20581
20553
|
pp: 10,
|
|
20582
20554
|
priority: 0,
|
|
20583
|
-
flags: { protect: 1, mirror: 1, allyanim: 1 },
|
|
20555
|
+
flags: { protect: 1, mirror: 1, allyanim: 1, noassist: 1, failcopycat: 1 },
|
|
20584
20556
|
onTryImmunity(target) {
|
|
20585
20557
|
return !target.hasAbility('stickyhold');
|
|
20586
20558
|
},
|
|
@@ -20935,7 +20907,7 @@ exports.Moves = {
|
|
|
20935
20907
|
name: "Uproar",
|
|
20936
20908
|
pp: 10,
|
|
20937
20909
|
priority: 0,
|
|
20938
|
-
flags: { protect: 1, mirror: 1, sound: 1, bypasssub: 1 },
|
|
20910
|
+
flags: { protect: 1, mirror: 1, sound: 1, bypasssub: 1, nosleeptalk: 1, failinstruct: 1 },
|
|
20939
20911
|
self: {
|
|
20940
20912
|
volatileStatus: 'uproar',
|
|
20941
20913
|
},
|
|
@@ -21039,7 +21011,7 @@ exports.Moves = {
|
|
|
21039
21011
|
name: "Veevee Volley",
|
|
21040
21012
|
pp: 20,
|
|
21041
21013
|
priority: 0,
|
|
21042
|
-
flags: { contact: 1, protect: 1 },
|
|
21014
|
+
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
21043
21015
|
secondary: null,
|
|
21044
21016
|
target: "normal",
|
|
21045
21017
|
type: "Normal",
|
|
@@ -21253,7 +21225,7 @@ exports.Moves = {
|
|
|
21253
21225
|
name: "Water Pledge",
|
|
21254
21226
|
pp: 10,
|
|
21255
21227
|
priority: 0,
|
|
21256
|
-
flags: { protect: 1, mirror: 1, nonsky: 1 },
|
|
21228
|
+
flags: { protect: 1, mirror: 1, nonsky: 1, pledgecombo: 1 },
|
|
21257
21229
|
onPrepareHit(target, source, move) {
|
|
21258
21230
|
for (const action of this.queue) {
|
|
21259
21231
|
if (action.choice !== 'move')
|
|
@@ -21497,7 +21469,7 @@ exports.Moves = {
|
|
|
21497
21469
|
name: "Whirlwind",
|
|
21498
21470
|
pp: 20,
|
|
21499
21471
|
priority: -6,
|
|
21500
|
-
flags: { reflectable: 1, mirror: 1, bypasssub: 1, allyanim: 1, wind: 1 },
|
|
21472
|
+
flags: { reflectable: 1, mirror: 1, bypasssub: 1, allyanim: 1, wind: 1, noassist: 1, failcopycat: 1 },
|
|
21501
21473
|
forceSwitch: true,
|
|
21502
21474
|
secondary: null,
|
|
21503
21475
|
target: "normal",
|
|
@@ -21528,7 +21500,9 @@ exports.Moves = {
|
|
|
21528
21500
|
name: "Wicked Torque",
|
|
21529
21501
|
pp: 10,
|
|
21530
21502
|
priority: 0,
|
|
21531
|
-
flags: {
|
|
21503
|
+
flags: {
|
|
21504
|
+
protect: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1,
|
|
21505
|
+
},
|
|
21532
21506
|
secondary: {
|
|
21533
21507
|
chance: 10,
|
|
21534
21508
|
status: 'slp',
|
|
@@ -21968,7 +21942,7 @@ exports.Moves = {
|
|
|
21968
21942
|
name: "Zippy Zap",
|
|
21969
21943
|
pp: 10,
|
|
21970
21944
|
priority: 2,
|
|
21971
|
-
flags: { contact: 1, protect: 1 },
|
|
21945
|
+
flags: { contact: 1, protect: 1, mirror: 1 },
|
|
21972
21946
|
secondary: {
|
|
21973
21947
|
chance: 100,
|
|
21974
21948
|
self: {
|