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