@pkmn/sim 0.10.1 → 0.10.3
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/README.md +3 -3
- package/build/cjs/config/formats.js +97 -108
- package/build/cjs/config/formats.js.map +1 -1
- package/build/cjs/data/abilities.js +23 -23
- package/build/cjs/data/abilities.js.map +1 -1
- package/build/cjs/data/aliases.js +12 -3
- package/build/cjs/data/aliases.js.map +1 -1
- package/build/cjs/data/formats-data.js +6 -6
- package/build/cjs/data/formats-data.js.map +1 -1
- package/build/cjs/data/items.js +179 -179
- package/build/cjs/data/items.js.map +1 -1
- package/build/cjs/data/learnsets.js +47 -9
- package/build/cjs/data/learnsets.js.map +1 -1
- package/build/cjs/data/legality.js +9 -0
- package/build/cjs/data/legality.js.map +1 -1
- package/build/cjs/data/mods/gen2/items.js +2 -2
- package/build/cjs/data/mods/gen2/items.js.map +1 -1
- package/build/cjs/data/mods/gen3/formats-data.js +5 -5
- package/build/cjs/data/mods/gen3/formats-data.js.map +1 -1
- package/build/cjs/data/mods/gen4/abilities.js +1 -1
- package/build/cjs/data/mods/gen4/abilities.js.map +1 -1
- package/build/cjs/data/mods/gen4/moves.js +1 -1
- package/build/cjs/data/mods/gen4/moves.js.map +1 -1
- package/build/cjs/data/mods/gen5/moves.js +8 -8
- package/build/cjs/data/mods/gen5/moves.js.map +1 -1
- package/build/cjs/data/mods/gen8bdsp/formats-data.js +1 -1
- package/build/cjs/data/mods/gen8bdsp/formats-data.js.map +1 -1
- package/build/cjs/data/mods/gen8legends/formats-data.js +0 -3
- package/build/cjs/data/mods/gen8legends/formats-data.js.map +1 -1
- package/build/cjs/data/moves.js +144 -143
- package/build/cjs/data/moves.js.map +1 -1
- package/build/cjs/data/pokedex.js +2 -2
- package/build/cjs/data/text/items.js +52 -52
- package/build/cjs/data/text/items.js.map +1 -1
- package/build/cjs/data/text/moves.js +41 -41
- package/build/cjs/data/text/moves.js.map +1 -1
- package/build/cjs/sim/tools/random-player-ai.js +1 -1
- package/build/cjs/sim/tools/random-player-ai.js.map +1 -1
- package/build/esm/config/formats.mjs +97 -108
- package/build/esm/config/formats.mjs.map +1 -1
- package/build/esm/data/abilities.mjs +23 -23
- package/build/esm/data/abilities.mjs.map +1 -1
- package/build/esm/data/aliases.mjs +12 -3
- package/build/esm/data/aliases.mjs.map +1 -1
- package/build/esm/data/formats-data.mjs +6 -6
- package/build/esm/data/formats-data.mjs.map +1 -1
- package/build/esm/data/items.mjs +179 -179
- package/build/esm/data/items.mjs.map +1 -1
- package/build/esm/data/learnsets.mjs +47 -9
- package/build/esm/data/learnsets.mjs.map +1 -1
- package/build/esm/data/legality.mjs +9 -0
- package/build/esm/data/legality.mjs.map +1 -1
- package/build/esm/data/mods/gen2/items.mjs +2 -2
- package/build/esm/data/mods/gen2/items.mjs.map +1 -1
- package/build/esm/data/mods/gen3/formats-data.mjs +5 -5
- package/build/esm/data/mods/gen3/formats-data.mjs.map +1 -1
- package/build/esm/data/mods/gen4/abilities.mjs +1 -1
- package/build/esm/data/mods/gen4/abilities.mjs.map +1 -1
- package/build/esm/data/mods/gen4/moves.mjs +1 -1
- package/build/esm/data/mods/gen4/moves.mjs.map +1 -1
- package/build/esm/data/mods/gen5/moves.mjs +8 -8
- package/build/esm/data/mods/gen5/moves.mjs.map +1 -1
- package/build/esm/data/mods/gen8bdsp/formats-data.mjs +1 -1
- package/build/esm/data/mods/gen8bdsp/formats-data.mjs.map +1 -1
- package/build/esm/data/mods/gen8legends/formats-data.mjs +0 -3
- package/build/esm/data/mods/gen8legends/formats-data.mjs.map +1 -1
- package/build/esm/data/moves.mjs +144 -143
- package/build/esm/data/moves.mjs.map +1 -1
- package/build/esm/data/pokedex.mjs +2 -2
- package/build/esm/data/text/items.mjs +52 -52
- package/build/esm/data/text/items.mjs.map +1 -1
- package/build/esm/data/text/moves.mjs +41 -41
- package/build/esm/data/text/moves.mjs.map +1 -1
- package/build/esm/sim/tools/random-player-ai.mjs +1 -1
- package/build/esm/sim/tools/random-player-ai.mjs.map +1 -1
- package/package.json +2 -2
package/build/cjs/data/moves.js
CHANGED
|
@@ -3813,6 +3813,33 @@ exports.Moves = {
|
|
|
3813
3813
|
type: "Ground",
|
|
3814
3814
|
contestType: "Tough",
|
|
3815
3815
|
},
|
|
3816
|
+
direclaw: {
|
|
3817
|
+
num: 827,
|
|
3818
|
+
accuracy: 100,
|
|
3819
|
+
basePower: 80,
|
|
3820
|
+
category: "Physical",
|
|
3821
|
+
name: "Dire Claw",
|
|
3822
|
+
pp: 15,
|
|
3823
|
+
priority: 0,
|
|
3824
|
+
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
|
3825
|
+
secondary: {
|
|
3826
|
+
chance: 50,
|
|
3827
|
+
onHit(target, source) {
|
|
3828
|
+
const result = this.random(3);
|
|
3829
|
+
if (result === 0) {
|
|
3830
|
+
target.trySetStatus('psn', source);
|
|
3831
|
+
}
|
|
3832
|
+
else if (result === 1) {
|
|
3833
|
+
target.trySetStatus('par', source);
|
|
3834
|
+
}
|
|
3835
|
+
else {
|
|
3836
|
+
target.trySetStatus('slp', source);
|
|
3837
|
+
}
|
|
3838
|
+
},
|
|
3839
|
+
},
|
|
3840
|
+
target: "normal",
|
|
3841
|
+
type: "Poison",
|
|
3842
|
+
},
|
|
3816
3843
|
disable: {
|
|
3817
3844
|
num: 50,
|
|
3818
3845
|
accuracy: 100,
|
|
@@ -3824,7 +3851,7 @@ exports.Moves = {
|
|
|
3824
3851
|
flags: { protect: 1, reflectable: 1, mirror: 1, bypasssub: 1, metronome: 1 },
|
|
3825
3852
|
volatileStatus: 'disable',
|
|
3826
3853
|
onTryHit(target) {
|
|
3827
|
-
if (!target.lastMove || target.lastMove.
|
|
3854
|
+
if (!target.lastMove || target.lastMove.isZOrMaxPowered || target.lastMove.isMax || target.lastMove.id === 'struggle') {
|
|
3828
3855
|
return false;
|
|
3829
3856
|
}
|
|
3830
3857
|
},
|
|
@@ -3863,7 +3890,7 @@ exports.Moves = {
|
|
|
3863
3890
|
},
|
|
3864
3891
|
onBeforeMovePriority: 7,
|
|
3865
3892
|
onBeforeMove(attacker, defender, move) {
|
|
3866
|
-
if (!move.isZ && move.id === this.effectState.move) {
|
|
3893
|
+
if (!(move.isZ && move.isZOrMaxPowered) && move.id === this.effectState.move) {
|
|
3867
3894
|
this.add('cant', attacker, 'Disable', move);
|
|
3868
3895
|
return false;
|
|
3869
3896
|
}
|
|
@@ -3913,33 +3940,6 @@ exports.Moves = {
|
|
|
3913
3940
|
type: "Electric",
|
|
3914
3941
|
contestType: "Beautiful",
|
|
3915
3942
|
},
|
|
3916
|
-
direclaw: {
|
|
3917
|
-
num: 827,
|
|
3918
|
-
accuracy: 100,
|
|
3919
|
-
basePower: 80,
|
|
3920
|
-
category: "Physical",
|
|
3921
|
-
name: "Dire Claw",
|
|
3922
|
-
pp: 15,
|
|
3923
|
-
priority: 0,
|
|
3924
|
-
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
|
3925
|
-
secondary: {
|
|
3926
|
-
chance: 50,
|
|
3927
|
-
onHit(target, source) {
|
|
3928
|
-
const result = this.random(3);
|
|
3929
|
-
if (result === 0) {
|
|
3930
|
-
target.trySetStatus('psn', source);
|
|
3931
|
-
}
|
|
3932
|
-
else if (result === 1) {
|
|
3933
|
-
target.trySetStatus('par', source);
|
|
3934
|
-
}
|
|
3935
|
-
else {
|
|
3936
|
-
target.trySetStatus('slp', source);
|
|
3937
|
-
}
|
|
3938
|
-
},
|
|
3939
|
-
},
|
|
3940
|
-
target: "normal",
|
|
3941
|
-
type: "Poison",
|
|
3942
|
-
},
|
|
3943
3943
|
dive: {
|
|
3944
3944
|
num: 291,
|
|
3945
3945
|
accuracy: 100,
|
|
@@ -4984,10 +4984,11 @@ exports.Moves = {
|
|
|
4984
4984
|
let move = target.lastMove;
|
|
4985
4985
|
if (!move || target.volatiles['dynamax'])
|
|
4986
4986
|
return false;
|
|
4987
|
+
// Encore only works on Max Moves if the base move is not itself a Max Move
|
|
4987
4988
|
if (move.isMax && move.baseMove)
|
|
4988
4989
|
move = this.dex.moves.get(move.baseMove);
|
|
4989
4990
|
const moveSlot = target.getMoveData(move.id);
|
|
4990
|
-
if (move.isZ || move.flags['failencore'] || !moveSlot || moveSlot.pp <= 0) {
|
|
4991
|
+
if (move.isZ || move.isMax || move.flags['failencore'] || !moveSlot || moveSlot.pp <= 0) {
|
|
4991
4992
|
// it failed
|
|
4992
4993
|
return false;
|
|
4993
4994
|
}
|
|
@@ -5891,15 +5892,15 @@ exports.Moves = {
|
|
|
5891
5892
|
type: "Fire",
|
|
5892
5893
|
contestType: "Cool",
|
|
5893
5894
|
},
|
|
5894
|
-
|
|
5895
|
-
num:
|
|
5895
|
+
flamethrower: {
|
|
5896
|
+
num: 53,
|
|
5896
5897
|
accuracy: 100,
|
|
5897
|
-
basePower:
|
|
5898
|
-
category: "
|
|
5899
|
-
name: "
|
|
5900
|
-
pp:
|
|
5898
|
+
basePower: 90,
|
|
5899
|
+
category: "Special",
|
|
5900
|
+
name: "Flamethrower",
|
|
5901
|
+
pp: 15,
|
|
5901
5902
|
priority: 0,
|
|
5902
|
-
flags: {
|
|
5903
|
+
flags: { protect: 1, mirror: 1, metronome: 1 },
|
|
5903
5904
|
secondary: {
|
|
5904
5905
|
chance: 10,
|
|
5905
5906
|
status: 'brn',
|
|
@@ -5908,15 +5909,15 @@ exports.Moves = {
|
|
|
5908
5909
|
type: "Fire",
|
|
5909
5910
|
contestType: "Beautiful",
|
|
5910
5911
|
},
|
|
5911
|
-
|
|
5912
|
-
num:
|
|
5912
|
+
flamewheel: {
|
|
5913
|
+
num: 172,
|
|
5913
5914
|
accuracy: 100,
|
|
5914
|
-
basePower:
|
|
5915
|
-
category: "
|
|
5916
|
-
name: "
|
|
5917
|
-
pp:
|
|
5915
|
+
basePower: 60,
|
|
5916
|
+
category: "Physical",
|
|
5917
|
+
name: "Flame Wheel",
|
|
5918
|
+
pp: 25,
|
|
5918
5919
|
priority: 0,
|
|
5919
|
-
flags: { protect: 1, mirror: 1, metronome: 1 },
|
|
5920
|
+
flags: { contact: 1, protect: 1, mirror: 1, defrost: 1, metronome: 1 },
|
|
5920
5921
|
secondary: {
|
|
5921
5922
|
chance: 10,
|
|
5922
5923
|
status: 'brn',
|
|
@@ -9999,7 +10000,7 @@ exports.Moves = {
|
|
|
9999
10000
|
},
|
|
10000
10001
|
onFoeBeforeMovePriority: 4,
|
|
10001
10002
|
onFoeBeforeMove(attacker, defender, move) {
|
|
10002
|
-
if (move.id !== 'struggle' && this.effectState.source.hasMove(move.id) && !move.
|
|
10003
|
+
if (move.id !== 'struggle' && this.effectState.source.hasMove(move.id) && !move.isZOrMaxPowered) {
|
|
10003
10004
|
this.add('cant', attacker, 'move: Imprison', move);
|
|
10004
10005
|
return false;
|
|
10005
10006
|
}
|
|
@@ -13052,6 +13053,25 @@ exports.Moves = {
|
|
|
13052
13053
|
type: "Ground",
|
|
13053
13054
|
contestType: "Cute",
|
|
13054
13055
|
},
|
|
13056
|
+
muddywater: {
|
|
13057
|
+
num: 330,
|
|
13058
|
+
accuracy: 85,
|
|
13059
|
+
basePower: 90,
|
|
13060
|
+
category: "Special",
|
|
13061
|
+
name: "Muddy Water",
|
|
13062
|
+
pp: 10,
|
|
13063
|
+
priority: 0,
|
|
13064
|
+
flags: { protect: 1, mirror: 1, nonsky: 1, metronome: 1 },
|
|
13065
|
+
secondary: {
|
|
13066
|
+
chance: 30,
|
|
13067
|
+
boosts: {
|
|
13068
|
+
accuracy: -1,
|
|
13069
|
+
},
|
|
13070
|
+
},
|
|
13071
|
+
target: "allAdjacentFoes",
|
|
13072
|
+
type: "Water",
|
|
13073
|
+
contestType: "Tough",
|
|
13074
|
+
},
|
|
13055
13075
|
mudshot: {
|
|
13056
13076
|
num: 341,
|
|
13057
13077
|
accuracy: 95,
|
|
@@ -13125,25 +13145,6 @@ exports.Moves = {
|
|
|
13125
13145
|
zMove: { boost: { spd: 1 } },
|
|
13126
13146
|
contestType: "Cute",
|
|
13127
13147
|
},
|
|
13128
|
-
muddywater: {
|
|
13129
|
-
num: 330,
|
|
13130
|
-
accuracy: 85,
|
|
13131
|
-
basePower: 90,
|
|
13132
|
-
category: "Special",
|
|
13133
|
-
name: "Muddy Water",
|
|
13134
|
-
pp: 10,
|
|
13135
|
-
priority: 0,
|
|
13136
|
-
flags: { protect: 1, mirror: 1, nonsky: 1, metronome: 1 },
|
|
13137
|
-
secondary: {
|
|
13138
|
-
chance: 30,
|
|
13139
|
-
boosts: {
|
|
13140
|
-
accuracy: -1,
|
|
13141
|
-
},
|
|
13142
|
-
},
|
|
13143
|
-
target: "allAdjacentFoes",
|
|
13144
|
-
type: "Water",
|
|
13145
|
-
contestType: "Tough",
|
|
13146
|
-
},
|
|
13147
13148
|
multiattack: {
|
|
13148
13149
|
num: 718,
|
|
13149
13150
|
accuracy: 100,
|
|
@@ -14785,42 +14786,6 @@ exports.Moves = {
|
|
|
14785
14786
|
target: "normal",
|
|
14786
14787
|
type: "Psychic",
|
|
14787
14788
|
},
|
|
14788
|
-
psychup: {
|
|
14789
|
-
num: 244,
|
|
14790
|
-
accuracy: true,
|
|
14791
|
-
basePower: 0,
|
|
14792
|
-
category: "Status",
|
|
14793
|
-
name: "Psych Up",
|
|
14794
|
-
pp: 10,
|
|
14795
|
-
priority: 0,
|
|
14796
|
-
flags: { bypasssub: 1, allyanim: 1, metronome: 1 },
|
|
14797
|
-
onHit(target, source) {
|
|
14798
|
-
let i;
|
|
14799
|
-
for (i in target.boosts) {
|
|
14800
|
-
source.boosts[i] = target.boosts[i];
|
|
14801
|
-
}
|
|
14802
|
-
const volatilesToCopy = ['dragoncheer', 'focusenergy', 'gmaxchistrike', 'laserfocus'];
|
|
14803
|
-
// we need to remove all crit stage volatiles first; otherwise copying e.g. dragoncheer onto a mon with focusenergy
|
|
14804
|
-
// will crash the server (since addVolatile fails due to overlap, leaving the source mon with no hasDragonType to set)
|
|
14805
|
-
for (const volatile of volatilesToCopy)
|
|
14806
|
-
source.removeVolatile(volatile);
|
|
14807
|
-
for (const volatile of volatilesToCopy) {
|
|
14808
|
-
if (target.volatiles[volatile]) {
|
|
14809
|
-
source.addVolatile(volatile);
|
|
14810
|
-
if (volatile === 'gmaxchistrike')
|
|
14811
|
-
source.volatiles[volatile].layers = target.volatiles[volatile].layers;
|
|
14812
|
-
if (volatile === 'dragoncheer')
|
|
14813
|
-
source.volatiles[volatile].hasDragonType = target.volatiles[volatile].hasDragonType;
|
|
14814
|
-
}
|
|
14815
|
-
}
|
|
14816
|
-
this.add('-copyboost', source, target, '[from] move: Psych Up');
|
|
14817
|
-
},
|
|
14818
|
-
secondary: null,
|
|
14819
|
-
target: "normal",
|
|
14820
|
-
type: "Normal",
|
|
14821
|
-
zMove: { effect: 'heal' },
|
|
14822
|
-
contestType: "Clever",
|
|
14823
|
-
},
|
|
14824
14789
|
psychic: {
|
|
14825
14790
|
num: 94,
|
|
14826
14791
|
accuracy: 100,
|
|
@@ -14999,6 +14964,42 @@ exports.Moves = {
|
|
|
14999
14964
|
zMove: { boost: { spa: 2 } },
|
|
15000
14965
|
contestType: "Clever",
|
|
15001
14966
|
},
|
|
14967
|
+
psychup: {
|
|
14968
|
+
num: 244,
|
|
14969
|
+
accuracy: true,
|
|
14970
|
+
basePower: 0,
|
|
14971
|
+
category: "Status",
|
|
14972
|
+
name: "Psych Up",
|
|
14973
|
+
pp: 10,
|
|
14974
|
+
priority: 0,
|
|
14975
|
+
flags: { bypasssub: 1, allyanim: 1, metronome: 1 },
|
|
14976
|
+
onHit(target, source) {
|
|
14977
|
+
let i;
|
|
14978
|
+
for (i in target.boosts) {
|
|
14979
|
+
source.boosts[i] = target.boosts[i];
|
|
14980
|
+
}
|
|
14981
|
+
const volatilesToCopy = ['dragoncheer', 'focusenergy', 'gmaxchistrike', 'laserfocus'];
|
|
14982
|
+
// we need to remove all crit stage volatiles first; otherwise copying e.g. dragoncheer onto a mon with focusenergy
|
|
14983
|
+
// will crash the server (since addVolatile fails due to overlap, leaving the source mon with no hasDragonType to set)
|
|
14984
|
+
for (const volatile of volatilesToCopy)
|
|
14985
|
+
source.removeVolatile(volatile);
|
|
14986
|
+
for (const volatile of volatilesToCopy) {
|
|
14987
|
+
if (target.volatiles[volatile]) {
|
|
14988
|
+
source.addVolatile(volatile);
|
|
14989
|
+
if (volatile === 'gmaxchistrike')
|
|
14990
|
+
source.volatiles[volatile].layers = target.volatiles[volatile].layers;
|
|
14991
|
+
if (volatile === 'dragoncheer')
|
|
14992
|
+
source.volatiles[volatile].hasDragonType = target.volatiles[volatile].hasDragonType;
|
|
14993
|
+
}
|
|
14994
|
+
}
|
|
14995
|
+
this.add('-copyboost', source, target, '[from] move: Psych Up');
|
|
14996
|
+
},
|
|
14997
|
+
secondary: null,
|
|
14998
|
+
target: "normal",
|
|
14999
|
+
type: "Normal",
|
|
15000
|
+
zMove: { effect: 'heal' },
|
|
15001
|
+
contestType: "Clever",
|
|
15002
|
+
},
|
|
15002
15003
|
psyshieldbash: {
|
|
15003
15004
|
num: 828,
|
|
15004
15005
|
accuracy: 90,
|
|
@@ -18626,31 +18627,6 @@ exports.Moves = {
|
|
|
18626
18627
|
type: "Ghost",
|
|
18627
18628
|
contestType: "Tough",
|
|
18628
18629
|
},
|
|
18629
|
-
spitup: {
|
|
18630
|
-
num: 255,
|
|
18631
|
-
accuracy: 100,
|
|
18632
|
-
basePower: 0,
|
|
18633
|
-
basePowerCallback(pokemon) {
|
|
18634
|
-
if (!pokemon.volatiles['stockpile']?.layers)
|
|
18635
|
-
return false;
|
|
18636
|
-
return pokemon.volatiles['stockpile'].layers * 100;
|
|
18637
|
-
},
|
|
18638
|
-
category: "Special",
|
|
18639
|
-
name: "Spit Up",
|
|
18640
|
-
pp: 10,
|
|
18641
|
-
priority: 0,
|
|
18642
|
-
flags: { protect: 1, metronome: 1 },
|
|
18643
|
-
onTry(source) {
|
|
18644
|
-
return !!source.volatiles['stockpile'];
|
|
18645
|
-
},
|
|
18646
|
-
onAfterMove(pokemon) {
|
|
18647
|
-
pokemon.removeVolatile('stockpile');
|
|
18648
|
-
},
|
|
18649
|
-
secondary: null,
|
|
18650
|
-
target: "normal",
|
|
18651
|
-
type: "Normal",
|
|
18652
|
-
contestType: "Tough",
|
|
18653
|
-
},
|
|
18654
18630
|
spite: {
|
|
18655
18631
|
num: 180,
|
|
18656
18632
|
accuracy: 100,
|
|
@@ -18677,6 +18653,31 @@ exports.Moves = {
|
|
|
18677
18653
|
zMove: { effect: 'heal' },
|
|
18678
18654
|
contestType: "Tough",
|
|
18679
18655
|
},
|
|
18656
|
+
spitup: {
|
|
18657
|
+
num: 255,
|
|
18658
|
+
accuracy: 100,
|
|
18659
|
+
basePower: 0,
|
|
18660
|
+
basePowerCallback(pokemon) {
|
|
18661
|
+
if (!pokemon.volatiles['stockpile']?.layers)
|
|
18662
|
+
return false;
|
|
18663
|
+
return pokemon.volatiles['stockpile'].layers * 100;
|
|
18664
|
+
},
|
|
18665
|
+
category: "Special",
|
|
18666
|
+
name: "Spit Up",
|
|
18667
|
+
pp: 10,
|
|
18668
|
+
priority: 0,
|
|
18669
|
+
flags: { protect: 1, metronome: 1 },
|
|
18670
|
+
onTry(source) {
|
|
18671
|
+
return !!source.volatiles['stockpile'];
|
|
18672
|
+
},
|
|
18673
|
+
onAfterMove(pokemon) {
|
|
18674
|
+
pokemon.removeVolatile('stockpile');
|
|
18675
|
+
},
|
|
18676
|
+
secondary: null,
|
|
18677
|
+
target: "normal",
|
|
18678
|
+
type: "Normal",
|
|
18679
|
+
contestType: "Tough",
|
|
18680
|
+
},
|
|
18680
18681
|
splash: {
|
|
18681
18682
|
num: 150,
|
|
18682
18683
|
accuracy: true,
|
|
@@ -20081,7 +20082,7 @@ exports.Moves = {
|
|
|
20081
20082
|
},
|
|
20082
20083
|
onBeforeMovePriority: 5,
|
|
20083
20084
|
onBeforeMove(attacker, defender, move) {
|
|
20084
|
-
if (!move.isZ &&
|
|
20085
|
+
if (!(move.isZ && move.isZOrMaxPowered) && move.category === 'Status' && move.id !== 'mefirst') {
|
|
20085
20086
|
this.add('cant', attacker, 'move: Taunt', move);
|
|
20086
20087
|
return false;
|
|
20087
20088
|
}
|
|
@@ -20513,13 +20514,13 @@ exports.Moves = {
|
|
|
20513
20514
|
},
|
|
20514
20515
|
onBeforeMovePriority: 6,
|
|
20515
20516
|
onBeforeMove(pokemon, target, move) {
|
|
20516
|
-
if (!move.
|
|
20517
|
+
if (!move.isZOrMaxPowered && move.flags['sound']) {
|
|
20517
20518
|
this.add('cant', pokemon, 'move: Throat Chop');
|
|
20518
20519
|
return false;
|
|
20519
20520
|
}
|
|
20520
20521
|
},
|
|
20521
20522
|
onModifyMove(move, pokemon, target) {
|
|
20522
|
-
if (!move.
|
|
20523
|
+
if (!move.isZOrMaxPowered && move.flags['sound']) {
|
|
20523
20524
|
this.add('cant', pokemon, 'move: Throat Chop');
|
|
20524
20525
|
return false;
|
|
20525
20526
|
}
|
|
@@ -21336,21 +21337,6 @@ exports.Moves = {
|
|
|
21336
21337
|
type: "Dragon",
|
|
21337
21338
|
contestType: "Cool",
|
|
21338
21339
|
},
|
|
21339
|
-
uturn: {
|
|
21340
|
-
num: 369,
|
|
21341
|
-
accuracy: 100,
|
|
21342
|
-
basePower: 70,
|
|
21343
|
-
category: "Physical",
|
|
21344
|
-
name: "U-turn",
|
|
21345
|
-
pp: 20,
|
|
21346
|
-
priority: 0,
|
|
21347
|
-
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
|
21348
|
-
selfSwitch: true,
|
|
21349
|
-
secondary: null,
|
|
21350
|
-
target: "normal",
|
|
21351
|
-
type: "Bug",
|
|
21352
|
-
contestType: "Cute",
|
|
21353
|
-
},
|
|
21354
21340
|
upperhand: {
|
|
21355
21341
|
num: 918,
|
|
21356
21342
|
accuracy: 100,
|
|
@@ -21436,6 +21422,21 @@ exports.Moves = {
|
|
|
21436
21422
|
type: "Normal",
|
|
21437
21423
|
contestType: "Cute",
|
|
21438
21424
|
},
|
|
21425
|
+
uturn: {
|
|
21426
|
+
num: 369,
|
|
21427
|
+
accuracy: 100,
|
|
21428
|
+
basePower: 70,
|
|
21429
|
+
category: "Physical",
|
|
21430
|
+
name: "U-turn",
|
|
21431
|
+
pp: 20,
|
|
21432
|
+
priority: 0,
|
|
21433
|
+
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
|
21434
|
+
selfSwitch: true,
|
|
21435
|
+
secondary: null,
|
|
21436
|
+
target: "normal",
|
|
21437
|
+
type: "Bug",
|
|
21438
|
+
contestType: "Cute",
|
|
21439
|
+
},
|
|
21439
21440
|
vacuumwave: {
|
|
21440
21441
|
num: 410,
|
|
21441
21442
|
accuracy: 100,
|