mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-03-21 17:25:10 -05:00
Move descriptions to data/text/ files
This adds some new `data/text/` files, which are the new home for item/move/ability descriptions, as well as in-game messages, in one place for ease of translation.
This commit is contained in:
parent
9b705936b0
commit
d1db1b5d95
File diff suppressed because it is too large
Load Diff
530
data/items.ts
530
data/items.ts
File diff suppressed because it is too large
Load Diff
|
|
@ -6,12 +6,9 @@
|
|||
export const Moves: {[k: string]: ModdedMoveData} = {
|
||||
absorb: {
|
||||
inherit: true,
|
||||
desc: "The user recovers 1/2 the HP lost by the target, rounded down. If this move breaks the target's substitute, the user does not recover any HP.",
|
||||
},
|
||||
acid: {
|
||||
inherit: true,
|
||||
desc: "Has a 33% chance to lower the target's Defense by 1 stage.",
|
||||
shortDesc: "33% chance to lower the target's Defense by 1.",
|
||||
secondary: {
|
||||
chance: 33,
|
||||
boosts: {
|
||||
|
|
@ -22,8 +19,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
amnesia: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's Special by 2 stages.",
|
||||
shortDesc: "Raises the user's Special by 2.",
|
||||
boosts: {
|
||||
spd: 2,
|
||||
spa: 2,
|
||||
|
|
@ -31,8 +26,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
aurorabeam: {
|
||||
inherit: true,
|
||||
desc: "Has a 33% chance to lower the target's Attack by 1 stage.",
|
||||
shortDesc: "33% chance to lower the target's Attack by 1.",
|
||||
secondary: {
|
||||
chance: 33,
|
||||
boosts: {
|
||||
|
|
@ -42,11 +35,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
barrage: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. Damage is calculated once for the first hit and used for every hit. If one of the hits breaks the target's substitute, the move ends.",
|
||||
},
|
||||
bide: {
|
||||
inherit: true,
|
||||
desc: "The user spends two or three turns locked into this move and then, on the second or third turn after using this move, the user attacks the opponent, inflicting double the damage in HP it lost during those turns. This move ignores type immunity and cannot be avoided even if the target is using Dig or Fly. The user can choose to switch out during the effect. If the user switches out or is prevented from moving during this move's use, the effect ends. During the effect, if the opposing Pokemon switches out or uses Confuse Ray, Conversion, Focus Energy, Glare, Haze, Leech Seed, Light Screen, Mimic, Mist, Poison Gas, Poison Powder, Recover, Reflect, Rest, Soft-Boiled, Splash, Stun Spore, Substitute, Supersonic, Teleport, Thunder Wave, Toxic, or Transform, the previous damage dealt to the user will be added to the total.",
|
||||
priority: 0,
|
||||
accuracy: true,
|
||||
ignoreEvasion: true,
|
||||
|
|
@ -125,8 +116,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
bind: {
|
||||
inherit: true,
|
||||
desc: "The user spends two to five turns using this move. Has a 3/8 chance to last two or three turns, and a 1/8 chance to last four or five turns. The damage calculated for the first turn is used for every other turn. The user cannot select a move and the target cannot execute a move during the effect, but both may switch out. If the user switches out, the target remains unable to execute a move during that turn. If the target switches out, the user uses this move again automatically, and if it had 0 PP at the time, it becomes 63. If the user or the target switch out, or the user is prevented from moving, the effect ends. This move can prevent the target from moving even if it has type immunity, but will not deal damage.",
|
||||
shortDesc: "Prevents the target from moving for 2-5 turns.",
|
||||
ignoreImmunity: true,
|
||||
volatileStatus: 'partiallytrapped',
|
||||
self: {
|
||||
|
|
@ -149,8 +138,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
bite: {
|
||||
inherit: true,
|
||||
desc: "Has a 10% chance to flinch the target.",
|
||||
shortDesc: "10% chance to flinch the target.",
|
||||
secondary: {
|
||||
chance: 10,
|
||||
volatileStatus: 'flinch',
|
||||
|
|
@ -164,12 +151,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
bonemerang: {
|
||||
inherit: true,
|
||||
desc: "Hits twice. If the first hit breaks the target's substitute, the move ends.",
|
||||
},
|
||||
bubble: {
|
||||
inherit: true,
|
||||
desc: "Has a 33% chance to lower the target's Speed by 1 stage.",
|
||||
shortDesc: "33% chance to lower the target's Speed by 1.",
|
||||
secondary: {
|
||||
chance: 33,
|
||||
boosts: {
|
||||
|
|
@ -180,8 +164,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
bubblebeam: {
|
||||
inherit: true,
|
||||
desc: "Has a 33% chance to lower the target's Speed by 1 stage.",
|
||||
shortDesc: "33% chance to lower the target's Speed by 1.",
|
||||
secondary: {
|
||||
chance: 33,
|
||||
boosts: {
|
||||
|
|
@ -191,8 +173,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
clamp: {
|
||||
inherit: true,
|
||||
desc: "The user spends two to five turns using this move. Has a 3/8 chance to last two or three turns, and a 1/8 chance to last four or five turns. The damage calculated for the first turn is used for every other turn. The user cannot select a move and the target cannot execute a move during the effect, but both may switch out. If the user switches out, the target remains unable to execute a move during that turn. If the target switches out, the user uses this move again automatically, and if it had 0 PP at the time, it becomes 63. If the user or the target switch out, or the user is prevented from moving, the effect ends. This move can prevent the target from moving even if it has type immunity, but will not deal damage.",
|
||||
shortDesc: "Prevents the target from moving for 2-5 turns.",
|
||||
accuracy: 75,
|
||||
pp: 10,
|
||||
volatileStatus: 'partiallytrapped',
|
||||
|
|
@ -216,12 +196,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
cometpunch: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. Damage is calculated once for the first hit and used for every hit. If one of the hits breaks the target's substitute, the move ends.",
|
||||
},
|
||||
constrict: {
|
||||
inherit: true,
|
||||
desc: "Has a 33% chance to lower the target's Speed by 1 stage.",
|
||||
shortDesc: "33% chance to lower the target's Speed by 1.",
|
||||
secondary: {
|
||||
chance: 33,
|
||||
boosts: {
|
||||
|
|
@ -231,8 +208,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
conversion: {
|
||||
inherit: true,
|
||||
desc: "Causes the user's types to become the same as the current types of the target.",
|
||||
shortDesc: "User becomes the same type as the target.",
|
||||
volatileStatus: 'conversion',
|
||||
accuracy: true,
|
||||
target: "normal",
|
||||
|
|
@ -243,8 +218,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
counter: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the opposing Pokemon equal to twice the damage dealt by the last move used in the battle. This move ignores type immunity. Fails if the user moves first, or if the opposing side's last move was Counter, had 0 power, or was not Normal or Fighting type. Fails if the last move used by either side did 0 damage and was not Confuse Ray, Conversion, Focus Energy, Glare, Haze, Leech Seed, Light Screen, Mimic, Mist, Poison Gas, Poison Powder, Recover, Reflect, Rest, Soft-Boiled, Splash, Stun Spore, Substitute, Supersonic, Teleport, Thunder Wave, Toxic, or Transform.",
|
||||
shortDesc: "If hit by Normal/Fighting move, deals 2x damage.",
|
||||
ignoreImmunity: true,
|
||||
willCrit: false,
|
||||
damageCallback(pokemon, target) {
|
||||
|
|
@ -270,11 +243,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
defensecurl: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's Defense by 1 stage.",
|
||||
},
|
||||
dig: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Bide, Swift, and Transform. If the user is fully paralyzed on the second turn, it continues avoiding attacks until it switches out or successfully executes the second turn of this move or Fly.",
|
||||
basePower: 100,
|
||||
condition: {
|
||||
duration: 2,
|
||||
|
|
@ -296,8 +267,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
disable: {
|
||||
inherit: true,
|
||||
desc: "For 0 to 7 turns, one of the target's known moves that has at least 1 PP remaining becomes disabled, at random. Fails if one of the target's moves is already disabled, or if none of the target's moves have PP remaining. If any Pokemon uses Haze, this effect ends. Whether or not this move was successful, it counts as a hit for the purposes of the opponent's use of Rage.",
|
||||
shortDesc: "For 0-7 turns, disables one of the target's moves.",
|
||||
condition: {
|
||||
duration: 4,
|
||||
durationCallback(target, source, effect) {
|
||||
|
|
@ -335,22 +304,17 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
dizzypunch: {
|
||||
inherit: true,
|
||||
desc: "No additional effect.",
|
||||
shortDesc: "No additional effect.",
|
||||
secondary: null,
|
||||
},
|
||||
doubleedge: {
|
||||
inherit: true,
|
||||
desc: "If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded down, but not less than 1 HP. If this move breaks the target's substitute, the user does not take any recoil damage.",
|
||||
basePower: 100,
|
||||
},
|
||||
doublekick: {
|
||||
inherit: true,
|
||||
desc: "Hits twice. Damage is calculated once for the first hit and used for both hits. If the first hit breaks the target's substitute, the move ends.",
|
||||
},
|
||||
doubleslap: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. Damage is calculated once for the first hit and used for every hit. If one of the hits breaks the target's substitute, the move ends.",
|
||||
},
|
||||
dragonrage: {
|
||||
inherit: true,
|
||||
|
|
@ -358,23 +322,17 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
dreameater: {
|
||||
inherit: true,
|
||||
desc: "The target is unaffected by this move unless it is asleep. The user recovers 1/2 the HP lost by the target, rounded down, but not less than 1 HP. If this move breaks the target's substitute, the user does not recover any HP.",
|
||||
},
|
||||
earthquake: {
|
||||
inherit: true,
|
||||
desc: "No additional effect.",
|
||||
shortDesc: "No additional effect.",
|
||||
},
|
||||
explosion: {
|
||||
inherit: true,
|
||||
desc: "The user faints after using this move, unless this move broke the target's substitute. The target's Defense is halved during damage calculation.",
|
||||
basePower: 170,
|
||||
target: "normal",
|
||||
},
|
||||
fireblast: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to burn the target.",
|
||||
shortDesc: "30% chance to burn the target.",
|
||||
secondary: {
|
||||
chance: 30,
|
||||
status: 'brn',
|
||||
|
|
@ -382,8 +340,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
firespin: {
|
||||
inherit: true,
|
||||
desc: "The user spends two to five turns using this move. Has a 3/8 chance to last two or three turns, and a 1/8 chance to last four or five turns. The damage calculated for the first turn is used for every other turn. The user cannot select a move and the target cannot execute a move during the effect, but both may switch out. If the user switches out, the target remains unable to execute a move during that turn. If the target switches out, the user uses this move again automatically, and if it had 0 PP at the time, it becomes 63. If the user or the target switch out, or the user is prevented from moving, the effect ends. This move can prevent the target from moving even if it has type immunity, but will not deal damage.",
|
||||
shortDesc: "Prevents the target from moving for 2-5 turns.",
|
||||
accuracy: 70,
|
||||
basePower: 15,
|
||||
volatileStatus: 'partiallytrapped',
|
||||
|
|
@ -407,12 +363,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
fissure: {
|
||||
inherit: true,
|
||||
desc: "Deals 65535 damage to the target. Fails if the target's Speed is greater than the user's.",
|
||||
shortDesc: "Deals 65535 damage. Fails if target is faster.",
|
||||
},
|
||||
fly: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Bide, Swift, and Transform. If the user is fully paralyzed on the second turn, it continues avoiding attacks until it switches out or successfully executes the second turn of this move or Dig.",
|
||||
condition: {
|
||||
duration: 2,
|
||||
onLockMove: 'fly',
|
||||
|
|
@ -433,8 +386,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
focusenergy: {
|
||||
inherit: true,
|
||||
desc: "While the user remains active, its chance for a critical hit is quartered. Fails if the user already has the effect. If any Pokemon uses Haze, this effect ends.",
|
||||
shortDesc: "Quarters the user's chance for a critical hit.",
|
||||
condition: {
|
||||
onStart(pokemon) {
|
||||
this.add('-start', pokemon, 'move: Focus Energy');
|
||||
|
|
@ -445,21 +396,16 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
furyattack: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. Damage is calculated once for the first hit and used for every hit. If one of the hits breaks the target's substitute, the move ends.",
|
||||
},
|
||||
furyswipes: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. Damage is calculated once for the first hit and used for every hit. If one of the hits breaks the target's substitute, the move ends.",
|
||||
},
|
||||
glare: {
|
||||
inherit: true,
|
||||
desc: "Paralyzes the target.",
|
||||
ignoreImmunity: true,
|
||||
},
|
||||
growth: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's Special by 1 stage.",
|
||||
shortDesc: "Raises the user's Special by 1.",
|
||||
boosts: {
|
||||
spa: 1,
|
||||
spd: 1,
|
||||
|
|
@ -467,19 +413,13 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
guillotine: {
|
||||
inherit: true,
|
||||
desc: "Deals 65535 damage to the target. Fails if the target's Speed is greater than the user's.",
|
||||
shortDesc: "Deals 65535 damage. Fails if target is faster.",
|
||||
},
|
||||
gust: {
|
||||
inherit: true,
|
||||
desc: "No additional effect.",
|
||||
shortDesc: "No additional effect.",
|
||||
type: "Normal",
|
||||
},
|
||||
haze: {
|
||||
inherit: true,
|
||||
desc: "Resets the stat stages of both Pokemon to 0 and removes stat reductions due to burn and paralysis. Resets Toxic counters to 0 and removes the effect of confusion, Disable, Focus Energy, Leech Seed, Light Screen, Mist, and Reflect from both Pokemon. Removes the opponent's major status condition.",
|
||||
shortDesc: "Resets all stat changes. Removes foe's status.",
|
||||
onHit(target, source) {
|
||||
this.add('-clearallboost');
|
||||
for (const pokemon of this.getAllActive()) {
|
||||
|
|
@ -506,8 +446,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
highjumpkick: {
|
||||
inherit: true,
|
||||
desc: "If this attack misses the target, the user takes 1 HP of crash damage. If the user has a substitute, the crash damage is dealt to the target's substitute if it has one, otherwise no crash damage is dealt.",
|
||||
shortDesc: "User takes 1 HP of damage if it misses.",
|
||||
onMoveFail(target, source, move) {
|
||||
if (!target.types.includes('Ghost')) {
|
||||
this.directDamage(1, source, target);
|
||||
|
|
@ -516,18 +454,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
horndrill: {
|
||||
inherit: true,
|
||||
desc: "Deals 65535 damage to the target. Fails if the target's Speed is greater than the user's.",
|
||||
shortDesc: "Deals 65535 damage. Fails if target is faster.",
|
||||
},
|
||||
hyperbeam: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, the user must recharge on the following turn and cannot select a move, unless the target or its substitute was knocked out by this move.",
|
||||
shortDesc: "Can't move next turn if target or sub is not KOed.",
|
||||
},
|
||||
jumpkick: {
|
||||
inherit: true,
|
||||
desc: "If this attack misses the target, the user takes 1 HP of crash damage. If the user has a substitute, the crash damage is dealt to the target's substitute if it has one, otherwise no crash damage is dealt.",
|
||||
shortDesc: "User takes 1 HP of damage if it misses.",
|
||||
onMoveFail(target, source, move) {
|
||||
if (!target.types.includes('Ghost')) {
|
||||
this.directDamage(1, source, target);
|
||||
|
|
@ -541,7 +473,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
leechseed: {
|
||||
inherit: true,
|
||||
desc: "At the end of each of the target's turns, The Pokemon at the user's position steals 1/16 of the target's maximum HP, rounded down and multiplied by the target's current Toxic counter if it has one, even if the target currently has less than that amount of HP remaining. If the target switches out or any Pokemon uses Haze, this effect ends. Grass-type Pokemon are immune to this move.",
|
||||
onHit() {},
|
||||
condition: {
|
||||
onStart(target) {
|
||||
|
|
@ -576,8 +507,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
accuracy: true,
|
||||
basePower: 0,
|
||||
category: "Status",
|
||||
desc: "While the user remains active, its Special is doubled when taking damage. Critical hits ignore this effect. If any Pokemon uses Haze, this effect ends.",
|
||||
shortDesc: "While active, user's Special is 2x when damaged.",
|
||||
name: "Light Screen",
|
||||
pp: 30,
|
||||
priority: 0,
|
||||
|
|
@ -598,7 +527,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
metronome: {
|
||||
inherit: true,
|
||||
desc: "A random move is selected for use, other than Metronome or Struggle.",
|
||||
noMetronome: ["Metronome", "Struggle"],
|
||||
secondary: null,
|
||||
target: "self",
|
||||
|
|
@ -606,8 +534,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
mimic: {
|
||||
inherit: true,
|
||||
desc: "While the user remains active, this move is replaced by a random move known by the target, even if the user already knows that move. The copied move keeps the remaining PP for this move, regardless of the copied move's maximum PP. Whenever one PP is used for a copied move, one PP is used for this move.",
|
||||
shortDesc: "Random move known by the target replaces this.",
|
||||
onHit(target, source) {
|
||||
const moveslot = source.moves.indexOf('mimic');
|
||||
if (moveslot < 0) return false;
|
||||
|
|
@ -630,11 +556,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
minimize: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's evasiveness by 1 stage.",
|
||||
},
|
||||
mirrormove: {
|
||||
inherit: true,
|
||||
desc: "The user uses the last move used by the target. Fails if the target has not made a move, or if the last move used was Mirror Move.",
|
||||
onHit(pokemon) {
|
||||
const foe = pokemon.side.foe.active[0];
|
||||
if (!foe || !foe.lastMove || foe.lastMove.id === 'mirrormove') {
|
||||
|
|
@ -645,28 +569,20 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
mist: {
|
||||
inherit: true,
|
||||
desc: "While the user remains active, it is protected from having its stat stages lowered by other Pokemon, unless caused by the secondary effect of a move. Fails if the user already has the effect. If any Pokemon uses Haze, this effect ends.",
|
||||
},
|
||||
nightshade: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the target equal to the user's level. This move ignores type immunity.",
|
||||
shortDesc: "Damage = user's level. Can hit Normal types.",
|
||||
ignoreImmunity: true,
|
||||
basePower: 1,
|
||||
},
|
||||
petaldance: {
|
||||
inherit: true,
|
||||
desc: "Whether or not this move is successful, the user spends three or four turns locked into this move and becomes confused immediately after its move on the last turn of the effect, even if it is already confused. If the user is prevented from moving, the effect ends without causing confusion. During the effect, this move's accuracy is overwritten every turn with the current calculated accuracy including stat stage changes, but not to less than 1/256 or more than 255/256.",
|
||||
shortDesc: "Lasts 3-4 turns. Confuses the user afterwards.",
|
||||
},
|
||||
pinmissile: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. Damage is calculated once for the first hit and used for every hit. If one of the hits breaks the target's substitute, the move ends.",
|
||||
},
|
||||
poisonsting: {
|
||||
inherit: true,
|
||||
desc: "Has a 20% chance to poison the target.",
|
||||
shortDesc: "20% chance to poison the target.",
|
||||
secondary: {
|
||||
chance: 20,
|
||||
status: 'psn',
|
||||
|
|
@ -674,8 +590,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
psychic: {
|
||||
inherit: true,
|
||||
desc: "Has a 33% chance to lower the target's Special by 1 stage.",
|
||||
shortDesc: "33% chance to lower the target's Special by 1.",
|
||||
secondary: {
|
||||
chance: 33,
|
||||
boosts: {
|
||||
|
|
@ -690,8 +604,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
rage: {
|
||||
inherit: true,
|
||||
desc: "Once this move is successfully used, the user automatically uses this move every turn and can no longer switch out. During the effect, the user's Attack is raised by 1 stage every time it is hit by the opposing Pokemon, and this move's accuracy is overwritten every turn with the current calculated accuracy including stat stage changes, but not to less than 1/256 or more than 255/256.",
|
||||
shortDesc: "Lasts forever. Raises user's Attack by 1 when hit.",
|
||||
self: {
|
||||
volatileStatus: 'rage',
|
||||
},
|
||||
|
|
@ -721,14 +633,11 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
razorwind: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second.",
|
||||
shortDesc: "Charges turn 1. Hits turn 2.",
|
||||
critRatio: 1,
|
||||
target: "normal",
|
||||
},
|
||||
recover: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP, rounded down. Fails if (user's maximum HP - user's current HP + 1) is divisible by 256.",
|
||||
heal: null,
|
||||
onHit(target) {
|
||||
// Fail when health is 255 or 511 less than max
|
||||
|
|
@ -744,8 +653,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
accuracy: true,
|
||||
basePower: 0,
|
||||
category: "Status",
|
||||
desc: "While the user remains active, its Defense is doubled when taking damage. Critical hits ignore this protection. This effect can be removed by Haze.",
|
||||
shortDesc: "While active, the user's Defense is doubled.",
|
||||
name: "Reflect",
|
||||
pp: 20,
|
||||
priority: 0,
|
||||
|
|
@ -767,7 +674,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
rest: {
|
||||
inherit: true,
|
||||
desc: "The user falls asleep for the next two turns and restores all of its HP, curing itself of any major status condition in the process. This does not remove the user's stat penalty for burn or paralysis. Fails if the user has full HP.",
|
||||
onTryMove() {},
|
||||
onHit(target, source, move) {
|
||||
if (target.hp === target.maxhp) return false;
|
||||
|
|
@ -784,16 +690,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
roar: {
|
||||
inherit: true,
|
||||
desc: "No competitive use.",
|
||||
shortDesc: "No competitive use.",
|
||||
forceSwitch: false,
|
||||
onTryHit() {},
|
||||
priority: 0,
|
||||
},
|
||||
rockslide: {
|
||||
inherit: true,
|
||||
desc: "No additional effect.",
|
||||
shortDesc: "No additional effect.",
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
},
|
||||
|
|
@ -808,21 +710,16 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
seismictoss: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the target equal to the user's level. This move ignores type immunity.",
|
||||
shortDesc: "Damage = user's level. Can hit Ghost types.",
|
||||
ignoreImmunity: true,
|
||||
basePower: 1,
|
||||
},
|
||||
selfdestruct: {
|
||||
inherit: true,
|
||||
desc: "The user faints after using this move, unless the target's substitute was broken by the damage. The target's Defense is halved during damage calculation.",
|
||||
basePower: 130,
|
||||
target: "normal",
|
||||
},
|
||||
skullbash: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second.",
|
||||
shortDesc: "Charges turn 1. Hits turn 2.",
|
||||
onTryMove(attacker, defender, move) {
|
||||
if (attacker.removeVolatile(move.id)) {
|
||||
return;
|
||||
|
|
@ -841,8 +738,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
sludge: {
|
||||
inherit: true,
|
||||
desc: "Has a 40% chance to poison the target.",
|
||||
shortDesc: "40% chance to poison the target.",
|
||||
secondary: {
|
||||
chance: 40,
|
||||
status: 'psn',
|
||||
|
|
@ -850,7 +745,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
softboiled: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP, rounded down. Fails if (user's maximum HP - user's current HP + 1) is divisible by 256.",
|
||||
heal: null,
|
||||
onHit(target) {
|
||||
// Fail when health is 255 or 511 less than max
|
||||
|
|
@ -863,44 +757,33 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
solarbeam: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second.",
|
||||
shortDesc: "Charges turn 1. Hits turn 2.",
|
||||
},
|
||||
sonicboom: {
|
||||
inherit: true,
|
||||
desc: "Deals 20 HP of damage to the target. This move ignores type immunity.",
|
||||
},
|
||||
spikecannon: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. Damage is calculated once for the first hit and used for every hit. If one of the hits breaks the target's substitute, the move ends.",
|
||||
},
|
||||
stomp: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to flinch the target.",
|
||||
},
|
||||
struggle: {
|
||||
inherit: true,
|
||||
desc: "Deals Normal-type damage. If this move was successful, the user takes damage equal to 1/2 the HP lost by the target, rounded down, but not less than 1 HP. This move is automatically used if none of the user's known moves can be selected.",
|
||||
shortDesc: "User loses 1/2 the HP lost by the target.",
|
||||
pp: 10,
|
||||
recoil: [1, 2],
|
||||
onModifyMove() {},
|
||||
},
|
||||
stunspore: {
|
||||
inherit: true,
|
||||
desc: "Paralyzes the target.",
|
||||
},
|
||||
submission: {
|
||||
inherit: true,
|
||||
desc: "If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded down, but not less than 1 HP. If this move breaks the target's substitute, the user does not take any recoil damage.",
|
||||
},
|
||||
substitute: {
|
||||
num: 164,
|
||||
accuracy: true,
|
||||
basePower: 0,
|
||||
category: "Status",
|
||||
desc: "The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute has 1 HP plus the HP used to create it, and is removed once enough damage is inflicted on it or 255 damage is inflicted at once, or if the user switches out or faints. Until the substitute is broken, it receives damage from all attacks made by the opposing Pokemon and shields the user from status effects and stat stage changes caused by the opponent, unless the effect is Disable, Leech Seed, sleep, primary paralysis, or secondary confusion and the user's substitute did not break. The user still takes normal damage from status effects while behind its substitute, unless the effect is confusion damage, which is applied to the opposing Pokemon's substitute instead. If the substitute breaks during a multi-hit attack, the attack ends. Fails if the user does not have enough HP remaining to create a substitute, or if it already has a substitute. The user will create a substitute and then faint if its current HP is exactly 1/4 of its maximum HP.",
|
||||
shortDesc: "User takes 1/4 its max HP to put in a Substitute.",
|
||||
name: "Substitute",
|
||||
pp: 10,
|
||||
priority: 0,
|
||||
|
|
@ -992,29 +875,20 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
superfang: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the target equal to half of its current HP, rounded down, but not less than 1 HP. This move ignores type immunity.",
|
||||
shortDesc: "Damage = 1/2 target's current HP. Hits Ghosts.",
|
||||
ignoreImmunity: true,
|
||||
basePower: 1,
|
||||
},
|
||||
swift: {
|
||||
inherit: true,
|
||||
desc: "This move does not check accuracy and hits even if the target is using Dig or Fly.",
|
||||
shortDesc: "Never misses, even against Dig and Fly.",
|
||||
},
|
||||
takedown: {
|
||||
inherit: true,
|
||||
desc: "If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded down, but not less than 1 HP. If this move breaks the target's substitute, the user does not take any recoil damage.",
|
||||
},
|
||||
thrash: {
|
||||
inherit: true,
|
||||
desc: "Whether or not this move is successful, the user spends three or four turns locked into this move and becomes confused immediately after its move on the last turn of the effect, even if it is already confused. If the user is prevented from moving, the effect ends without causing confusion. During the effect, this move's accuracy is overwritten every turn with the current calculated accuracy including stat stage changes, but not to less than 1/256 or more than 255/256.",
|
||||
shortDesc: "Lasts 3-4 turns. Confuses the user afterwards.",
|
||||
},
|
||||
thunder: {
|
||||
inherit: true,
|
||||
desc: "Has a 10% chance to paralyze the target.",
|
||||
shortDesc: "10% chance to paralyze the target.",
|
||||
secondary: {
|
||||
chance: 10,
|
||||
status: 'par',
|
||||
|
|
@ -1032,24 +906,18 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
transform: {
|
||||
inherit: true,
|
||||
desc: "The user transforms into the target. The target's current stats, stat stages, types, moves, DVs, species, and sprite are copied. The user's level and HP remain the same and each copied move receives only 5 PP. This move can hit a target using Dig or Fly.",
|
||||
},
|
||||
triattack: {
|
||||
inherit: true,
|
||||
desc: "No additional effect.",
|
||||
shortDesc: "No additional effect.",
|
||||
onHit() {},
|
||||
secondary: null,
|
||||
},
|
||||
twineedle: {
|
||||
inherit: true,
|
||||
desc: "Hits twice, with the second hit having a 20% chance to poison the target. If the first hit breaks the target's substitute, the move ends.",
|
||||
},
|
||||
whirlwind: {
|
||||
inherit: true,
|
||||
accuracy: 85,
|
||||
desc: "No competitive use.",
|
||||
shortDesc: "No competitive use.",
|
||||
forceSwitch: false,
|
||||
onTryHit() {},
|
||||
priority: 0,
|
||||
|
|
@ -1060,8 +928,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
wrap: {
|
||||
inherit: true,
|
||||
desc: "The user spends two to five turns using this move. Has a 3/8 chance to last two or three turns, and a 1/8 chance to last four or five turns. The damage calculated for the first turn is used for every other turn. The user cannot select a move and the target cannot execute a move during the effect, but both may switch out. If the user switches out, the target remains unable to execute a move during that turn. If the target switches out, the user uses this move again automatically, and if it had 0 PP at the time, it becomes 63. If the user or the target switch out, or the user is prevented from moving, the effect ends. This move can prevent the target from moving even if it has type immunity, but will not deal damage.",
|
||||
shortDesc: "Prevents the target from moving for 2-5 turns.",
|
||||
accuracy: 85,
|
||||
ignoreImmunity: true,
|
||||
volatileStatus: 'partiallytrapped',
|
||||
|
|
|
|||
|
|
@ -3,25 +3,12 @@
|
|||
*/
|
||||
|
||||
export const Moves: {[k: string]: ModdedMoveData} = {
|
||||
absorb: {
|
||||
inherit: true,
|
||||
desc: "The user recovers 1/2 the HP lost by the target, rounded down. If the target has a substitute, this move misses.",
|
||||
},
|
||||
acid: {
|
||||
inherit: true,
|
||||
shortDesc: "10% chance to lower the target's Defense by 1.",
|
||||
},
|
||||
aeroblast: {
|
||||
inherit: true,
|
||||
critRatio: 3,
|
||||
},
|
||||
attract: {
|
||||
inherit: true,
|
||||
desc: "Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active.",
|
||||
},
|
||||
beatup: {
|
||||
inherit: true,
|
||||
desc: "Deals typeless damage. Hits one time for each unfainted Pokemon without a major status condition in the user's party. For each hit, the damage formula uses the participating Pokemon's level, its base Attack as the Attack stat, the target's base Defense as the Defense stat, and ignores stat stages and other effects that modify Attack or Defense. Fails if no party members can participate.",
|
||||
onModifyMove(move, pokemon) {
|
||||
move.type = '???';
|
||||
move.category = 'Physical';
|
||||
|
|
@ -63,8 +50,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
bide: {
|
||||
inherit: true,
|
||||
desc: "The user spends two or three turns locked into this move and then, on the second or third turn after using this move, the user attacks the opponent, inflicting double the damage in HP it lost during those turns. If the user is prevented from moving during this move's use, the effect ends. This move does not ignore type immunity.",
|
||||
shortDesc: "Waits 2-3 turns; deals double the damage taken.",
|
||||
condition: {
|
||||
duration: 3,
|
||||
durationCallback(target, source, effect) {
|
||||
|
|
@ -125,27 +110,13 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
blizzard: {
|
||||
inherit: true,
|
||||
shortDesc: "10% chance to freeze the target.",
|
||||
},
|
||||
block: {
|
||||
inherit: true,
|
||||
accuracy: true,
|
||||
ignoreAccuracy: false,
|
||||
},
|
||||
bubble: {
|
||||
inherit: true,
|
||||
shortDesc: "10% chance to lower the target's Speed by 1.",
|
||||
},
|
||||
conversion2: {
|
||||
inherit: true,
|
||||
desc: "The user's type changes to match a type that resists or is immune to the type of the last move used by the opposing Pokemon, even it is one of the user's current types. The original type of the move is used rather than the determined type. Fails if the opposing Pokemon has not used a move.",
|
||||
shortDesc: "Changes user's type to resist the foe's last move.",
|
||||
},
|
||||
counter: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the opposing Pokemon equal to twice the HP lost by the user from a physical attack this turn. This move considers Hidden Power as Normal type, and only the last hit of a multi-hit attack is counted. Fails if the user moves first, if the user was not hit by a physical attack this turn, or if the user did not lose HP from the attack. If the opposing Pokemon used Fissure or Horn Drill and missed, this move deals 65535 damage.",
|
||||
damageCallback(pokemon, target) {
|
||||
const lastAttackedBy = pokemon.getLastAttackedBy();
|
||||
if (!lastAttackedBy || !lastAttackedBy.move || !lastAttackedBy.thisTurn) return false;
|
||||
|
|
@ -171,7 +142,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
curse: {
|
||||
inherit: true,
|
||||
desc: "If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage, unless the user's Attack and Defense stats are both at stage 6. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if the target is already affected or has a substitute.",
|
||||
condition: {
|
||||
onStart(pokemon, source) {
|
||||
this.add('-start', pokemon, 'Curse', '[of] ' + source);
|
||||
|
|
@ -181,22 +151,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
defensecurl: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's Defense by 1 stage. While the user remains active, the power of the user's Rollout will be doubled (this effect is not stackable). Baton Pass can be used to transfer this effect to an ally.",
|
||||
},
|
||||
destinybond: {
|
||||
inherit: true,
|
||||
desc: "Until the user's next turn, if an opposing Pokemon's attack knocks the user out, that Pokemon faints as well.",
|
||||
},
|
||||
detect: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from attacks made by the opponent during this turn. This move has an X/255 chance of being successful, where X starts at 255 and halves, rounded down, each time this move is successfully used. X resets to 255 if this move fails or if the user's last move used is not Detect, Endure, or Protect. Fails if the user has a substitute or moves last this turn.",
|
||||
priority: 2,
|
||||
},
|
||||
dig: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake, Fissure, and Magnitude, the user is unaffected by weather, and Earthquake and Magnitude have doubled power when used against the user.",
|
||||
onPrepareHit(target, source) {
|
||||
return source.status !== 'slp';
|
||||
},
|
||||
|
|
@ -223,24 +183,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
disable: {
|
||||
inherit: true,
|
||||
desc: "For 1 to 7 turns, the target's last move used becomes disabled. Fails if one of the target's moves is already disabled, if the target has not made a move, if the target no longer knows the move, or if the move has 0 PP.",
|
||||
shortDesc: "For 1-7 turns, disables the target's last move.",
|
||||
},
|
||||
doubleedge: {
|
||||
inherit: true,
|
||||
desc: "If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded down, but not less than 1 HP. If this move hits a substitute, the recoil damage is always 1 HP.",
|
||||
shortDesc: "Has 1/4 recoil.",
|
||||
recoil: [25, 100],
|
||||
},
|
||||
earthquake: {
|
||||
inherit: true,
|
||||
shortDesc: "Power doubles on Dig.",
|
||||
},
|
||||
encore: {
|
||||
inherit: true,
|
||||
desc: "For 3 to 6 turns, the target is forced to repeat its last move used. If the affected move runs out of PP, the effect ends. Fails if the target is already under this effect, if it has not made a move, if the move has 0 PP, or if the move is Encore, Metronome, Mimic, Mirror Move, Sketch, Sleep Talk, Struggle, or Transform.",
|
||||
condition: {
|
||||
durationCallback() {
|
||||
return this.random(3, 7);
|
||||
|
|
@ -288,27 +236,19 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
endure: {
|
||||
inherit: true,
|
||||
desc: "The user will survive attacks made by the opponent during this turn with at least 1 HP. This move has an X/255 chance of being successful, where X starts at 255 and halves, rounded down, each time this move is successfully used. X resets to 255 if this move fails or if the user's last move used is not Detect, Endure, or Protect. Fails if the user has a substitute or moves last this turn.",
|
||||
priority: 2,
|
||||
},
|
||||
explosion: {
|
||||
inherit: true,
|
||||
desc: "The user faints after using this move. The target's Defense is halved during damage calculation.",
|
||||
noSketch: true,
|
||||
},
|
||||
fissure: {
|
||||
inherit: true,
|
||||
desc: "Deals 65535 damage to the target. This attack's accuracy out of 256 is equal to the lesser of (2 * (user's level - target's level) + 76) and 255, before applying accuracy and evasiveness modifiers. Fails if the target is at a higher level. Can hit a target using Dig.",
|
||||
},
|
||||
flail: {
|
||||
inherit: true,
|
||||
desc: "The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down. This move does not apply damage variance and cannot be a critical hit.",
|
||||
noDamageVariance: true,
|
||||
willCrit: false,
|
||||
},
|
||||
fly: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Thunder, Twister, and Whirlwind, and Gust and Twister have doubled power when used against it.",
|
||||
onPrepareHit(target, source) {
|
||||
return source.status !== 'slp';
|
||||
},
|
||||
|
|
@ -338,8 +278,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
focusenergy: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's chance for a critical hit by 1 stage. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.",
|
||||
shortDesc: "Raises the user's critical hit ratio by 1.",
|
||||
condition: {
|
||||
onStart(pokemon) {
|
||||
this.add('-start', pokemon, 'move: Focus Energy');
|
||||
|
|
@ -352,7 +290,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
foresight: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
desc: "As long as the target remains active, if its evasiveness stat stage is greater than the attacker's accuracy stat stage, both are ignored during accuracy checks, and Normal- and Fighting-type attacks can hit the target if it is a Ghost type. If the target leaves the field using Baton Pass, the replacement will remain under this effect. Fails if the target is already affected.",
|
||||
onTryHit(target) {
|
||||
if (target.volatiles['foresight']) return false;
|
||||
},
|
||||
|
|
@ -370,26 +307,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
futuresight: {
|
||||
inherit: true,
|
||||
desc: "Deals typeless damage that cannot be a critical hit two turns after this move is used. Damage is calculated against the target on use, and at the end of the final turn that damage is dealt to the Pokemon at the position the original target had at the time. Fails if this move is already in effect for the target's position.",
|
||||
},
|
||||
growl: {
|
||||
inherit: true,
|
||||
shortDesc: "Lowers the target's Attack by 1.",
|
||||
},
|
||||
guillotine: {
|
||||
inherit: true,
|
||||
desc: "Deals 65535 damage to the target. This attack's accuracy out of 256 is equal to the lesser of (2 * (user's level - target's level) + 76) and 255, before applying accuracy and evasiveness modifiers. Fails if the target is at a higher level.",
|
||||
},
|
||||
gust: {
|
||||
inherit: true,
|
||||
desc: "Power doubles if the target is using Fly.",
|
||||
shortDesc: "Power doubles during Fly.",
|
||||
},
|
||||
healbell: {
|
||||
inherit: true,
|
||||
desc: "Every Pokemon in the user's party is cured of its major status condition.",
|
||||
onHit(target, source) {
|
||||
this.add('-cureteam', source, '[from] move: Heal Bell');
|
||||
for (const pokemon of source.side.pokemon) {
|
||||
|
|
@ -399,8 +318,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
highjumpkick: {
|
||||
inherit: true,
|
||||
desc: "If this attack is not successful and the target was not immune, the user loses HP equal to 1/8 the damage the target would have taken, rounded down, but not less than 1 HP, as crash damage.",
|
||||
shortDesc: "If miss, user takes 1/8 damage it would've dealt.",
|
||||
onMoveFail(target, source, move) {
|
||||
if (target.runImmunity('Fighting')) {
|
||||
const damage = this.getDamage(source, target, move, true);
|
||||
|
|
@ -409,18 +326,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
horndrill: {
|
||||
inherit: true,
|
||||
desc: "Deals 65535 damage to the target. This attack's accuracy out of 256 is equal to the lesser of (2 * (user's level - target's level) + 76) and 255, before applying accuracy and evasiveness modifiers. Fails if the target is at a higher level.",
|
||||
},
|
||||
icywind: {
|
||||
inherit: true,
|
||||
shortDesc: "100% chance to lower the target's Speed by 1.",
|
||||
},
|
||||
jumpkick: {
|
||||
inherit: true,
|
||||
desc: "If this attack is not successful and the target was not immune, the user loses HP equal to 1/8 the damage the target would have taken, rounded down, but not less than 1 HP, as crash damage.",
|
||||
shortDesc: "If miss, user takes 1/8 damage it would've dealt.",
|
||||
onMoveFail(target, source, move) {
|
||||
if (target.runImmunity('Fighting')) {
|
||||
const damage = this.getDamage(source, target, move, true);
|
||||
|
|
@ -455,14 +362,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
leer: {
|
||||
inherit: true,
|
||||
shortDesc: "Lowers the target's Defense by 1.",
|
||||
},
|
||||
lightscreen: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the user and its party members have their Special Defense doubled. Critical hits ignore this effect. Fails if the effect is already active on the user's side.",
|
||||
shortDesc: "For 5 turns, the user's party has doubled Sp. Def.",
|
||||
condition: {
|
||||
duration: 5,
|
||||
// Sp. Def boost applied directly in stat calculation
|
||||
|
|
@ -478,8 +379,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
lockon: {
|
||||
inherit: true,
|
||||
accuracy: true,
|
||||
desc: "The next accuracy check against the target succeeds. The target will still avoid Earthquake, Fissure, and Magnitude if it is using Fly. If the target leaves the field using Baton Pass, the replacement remains under this effect. This effect ends when the target leaves the field or an accuracy check is done against it.",
|
||||
shortDesc: "The next move will not miss the target.",
|
||||
onTryHit(target) {
|
||||
if (target.volatiles['foresight'] || target.volatiles['lockon']) return false;
|
||||
},
|
||||
|
|
@ -492,8 +391,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
lowkick: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to flinch the target.",
|
||||
shortDesc: "30% chance to flinch the target.",
|
||||
accuracy: 90,
|
||||
basePower: 50,
|
||||
basePowerCallback() {
|
||||
|
|
@ -511,7 +408,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
metronome: {
|
||||
inherit: true,
|
||||
desc: "A random move is selected for use, other than Counter, Destiny Bond, Detect, Endure, Metronome, Mimic, Mirror Coat, Protect, Sketch, Sleep Talk, Struggle, or Thief.",
|
||||
noMetronome: [
|
||||
"Counter", "Destiny Bond", "Detect", "Endure", "Metronome", "Mimic", "Mirror Coat", "Protect", "Sketch", "Sleep Talk", "Struggle", "Thief",
|
||||
],
|
||||
|
|
@ -521,25 +417,17 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
accuracy: true,
|
||||
ignoreAccuracy: false,
|
||||
desc: "While the user remains active, this move is replaced by the last move used by the target. The copied move has 5 PP. Fails if the target has not made a move, if the user already knows the move, or if the move is Struggle.",
|
||||
noSketch: true,
|
||||
},
|
||||
mindreader: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
desc: "The next accuracy check against the target succeeds. The target will still avoid Earthquake, Fissure, and Magnitude if it is using Fly. If the target leaves the field using Baton Pass, the replacement remains under this effect. This effect ends when the target leaves the field or an accuracy check is done against it.",
|
||||
shortDesc: "The next move will not miss the target.",
|
||||
onTryHit(target) {
|
||||
if (target.volatiles['foresight'] || target.volatiles['lockon']) return false;
|
||||
},
|
||||
},
|
||||
minimize: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's evasiveness by 1 stage. Whether or not the user's evasiveness was changed, Stomp will have its power doubled if used against the user while it is active. Baton Pass can be used to transfer this effect to an ally.",
|
||||
},
|
||||
mirrorcoat: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the opposing Pokemon equal to twice the HP lost by the user from a special attack this turn. This move considers Hidden Power as Normal type, and only the last hit of a multi-hit attack is counted. Fails if the user moves first, if the user was not hit by a special attack this turn, or if the user did not lose HP from the attack.",
|
||||
damageCallback(pokemon, target) {
|
||||
const lastAttackedBy = pokemon.getLastAttackedBy();
|
||||
if (!lastAttackedBy || !lastAttackedBy.move || !lastAttackedBy.thisTurn) return false;
|
||||
|
|
@ -557,7 +445,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
mirrormove: {
|
||||
inherit: true,
|
||||
desc: "The user uses the last move used by the target. Fails if the target has not made a move, or if the last move used was Metronome, Mimic, Mirror Move, Sketch, Sleep Talk, Transform, or any move the user knows.",
|
||||
onHit(pokemon) {
|
||||
const noMirror = ['metronome', 'mimic', 'mirrormove', 'sketch', 'sleeptalk', 'transform'];
|
||||
const target = pokemon.side.foe.active[0];
|
||||
|
|
@ -572,14 +459,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
noSketch: true,
|
||||
},
|
||||
mist: {
|
||||
inherit: true,
|
||||
desc: "While the user remains active, it is protected from having its stat stages lowered by other Pokemon. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.",
|
||||
shortDesc: "While active, user is protected from stat drops.",
|
||||
},
|
||||
moonlight: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP if no weather conditions are in effect, all of its HP if the weather is Sunny Day, and 1/4 of its maximum HP if the weather is Rain Dance or Sandstorm, all rounded down.",
|
||||
onHit(pokemon) {
|
||||
if (this.field.isWeather(['sunnyday', 'desolateland'])) {
|
||||
this.heal(pokemon.maxhp);
|
||||
|
|
@ -592,7 +473,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
morningsun: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP if no weather conditions are in effect, all of its HP if the weather is Sunny Day, and 1/4 of its maximum HP if the weather is Rain Dance or Sandstorm, all rounded down.",
|
||||
onHit(pokemon) {
|
||||
if (this.field.isWeather(['sunnyday', 'desolateland'])) {
|
||||
this.heal(pokemon.maxhp);
|
||||
|
|
@ -621,7 +501,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
outrage: {
|
||||
inherit: true,
|
||||
desc: "Whether or not this move is successful, the user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect, even if it is already confused. If the user is prevented from moving, the effect ends without causing confusion. If this move is called by Sleep Talk, the move is used for one turn and does not confuse the user.",
|
||||
onMoveFail(target, source, move) {
|
||||
source.addVolatile('lockedmove');
|
||||
},
|
||||
|
|
@ -638,7 +517,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
petaldance: {
|
||||
inherit: true,
|
||||
desc: "Whether or not this move is successful, the user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect, even if it is already confused. If the user is prevented from moving, the effect ends without causing confusion. If this move is called by Sleep Talk, the move is used for one turn and does not confuse the user.",
|
||||
onMoveFail(target, source, move) {
|
||||
source.addVolatile('lockedmove');
|
||||
},
|
||||
|
|
@ -650,61 +528,28 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
poisongas: {
|
||||
inherit: true,
|
||||
shortDesc: "Poisons the target.",
|
||||
ignoreImmunity: false,
|
||||
},
|
||||
poisonpowder: {
|
||||
inherit: true,
|
||||
ignoreImmunity: false,
|
||||
},
|
||||
powdersnow: {
|
||||
inherit: true,
|
||||
shortDesc: "10% chance to freeze the target.",
|
||||
},
|
||||
present: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, it deals damage or heals the target. 102/256 chance for 40 power, 76/256 chance for 80 power, 26/256 chance for 120 power, or 52/256 chance to heal the target by 1/4 of its maximum HP, rounded down. If this move deals damage, it uses an abnormal version of the damage formula by substituting certain values. The user's Attack stat is replaced with 10 times the effectiveness of this move against the target, the target's Defense stat is replaced with the index number of the user's secondary type, and the user's level is replaced with the index number of the target's secondary type. If a Pokemon does not have a secondary type, its primary type is used. The index numbers for each type are Normal: 0, Fighting: 1, Flying: 2, Poison: 3, Ground: 4, Rock: 5, Bug: 7, Ghost: 8, Steel: 9, Fire: 20, Water: 21, Grass: 22, Electric: 23, Psychic: 24, Ice: 25, Dragon: 26, Dark: 27. If at any point a division by 0 would happen in the damage formula, it divides by 1 instead.",
|
||||
},
|
||||
protect: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from attacks made by the opponent during this turn. This move has an X/255 chance of being successful, where X starts at 255 and halves, rounded down, each time this move is successfully used. X resets to 255 if this move fails or if the user's last move used is not Detect, Endure, or Protect. Fails if the user has a substitute or moves last this turn.",
|
||||
priority: 2,
|
||||
},
|
||||
psychup: {
|
||||
inherit: true,
|
||||
desc: "The user copies all of the target's current stat stage changes. Fails if the target's stat stages are 0.",
|
||||
},
|
||||
psywave: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the target equal to a random number from 1 to (user's level * 1.5 - 1), rounded down, but not less than 1 HP.",
|
||||
shortDesc: "Random damage from 1 to (user's level*1.5 - 1).",
|
||||
damageCallback(pokemon) {
|
||||
return this.random(1, pokemon.level + Math.floor(pokemon.level / 2));
|
||||
},
|
||||
},
|
||||
pursuit: {
|
||||
inherit: true,
|
||||
desc: "If the target switches out this turn, this move hits it before it leaves the field with doubled power and the user's turn is over.",
|
||||
shortDesc: "Power doubles if the foe is switching out.",
|
||||
},
|
||||
rage: {
|
||||
inherit: true,
|
||||
desc: "Once this move is successfully used, X starts at 1. This move's damage is multiplied by X, and whenever the user is hit by the opposing Pokemon, X increases by 1, with a maximum of 255. X resets to 1 when the user is no longer active or did not choose this move for use.",
|
||||
shortDesc: "Next Rage increases in damage if hit during use.",
|
||||
},
|
||||
raindance: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the weather becomes Rain Dance, even if the current weather is Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect.",
|
||||
},
|
||||
razorleaf: {
|
||||
inherit: true,
|
||||
shortDesc: "High critical hit ratio.",
|
||||
critRatio: 3,
|
||||
},
|
||||
razorwind: {
|
||||
inherit: true,
|
||||
desc: "Has a higher chance for a critical hit. This attack charges on the first turn and executes on the second.",
|
||||
shortDesc: "Charges, then hits target turn 2. High crit ratio.",
|
||||
accuracy: 75,
|
||||
critRatio: 3,
|
||||
onPrepareHit(target, source) {
|
||||
|
|
@ -713,8 +558,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
reflect: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the user and its party members have their Defense doubled. Critical hits ignore this effect. Fails if the effect is already active on the user's side.",
|
||||
shortDesc: "For 5 turns, the user's party has doubled Def.",
|
||||
condition: {
|
||||
duration: 5,
|
||||
// Defense boost applied directly in stat calculation
|
||||
|
|
@ -729,7 +572,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
rest: {
|
||||
inherit: true,
|
||||
desc: "The user falls asleep for the next two turns and restores all of its HP, curing itself of any major status condition in the process, even if it was already asleep. Fails if the user has full HP.",
|
||||
onTryMove(pokemon) {
|
||||
if (pokemon.hp < pokemon.maxhp) return;
|
||||
this.add('-fail', pokemon);
|
||||
|
|
@ -750,13 +592,11 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
reversal: {
|
||||
inherit: true,
|
||||
desc: "The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down. This move does not apply damage variance and cannot be a critical hit.",
|
||||
noDamageVariance: true,
|
||||
willCrit: false,
|
||||
},
|
||||
roar: {
|
||||
inherit: true,
|
||||
desc: "The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokemon in its party, or if the user moves before the target.",
|
||||
onTryHit() {
|
||||
for (const action of this.queue) {
|
||||
// Roar only works if it is the last action in a turn, including when it's called by Sleep Talk
|
||||
|
|
@ -765,27 +605,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
priority: -1,
|
||||
},
|
||||
rockslide: {
|
||||
inherit: true,
|
||||
shortDesc: "30% chance to flinch the target.",
|
||||
},
|
||||
safeguard: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the user and its party members cannot have major status conditions or confusion inflicted on them by other Pokemon. During the effect, Outrage, Thrash, and Petal Dance do not confuse the user. Fails if the effect is already active on the user's side.",
|
||||
},
|
||||
sandstorm: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the weather becomes Sandstorm. At the end of each turn except the last, all active Pokemon lose 1/8 of their maximum HP, rounded down, unless they are a Ground, Rock, or Steel type. Fails if the current weather is Sandstorm.",
|
||||
},
|
||||
selfdestruct: {
|
||||
inherit: true,
|
||||
desc: "The user faints after using this move. The target's Defense is halved during damage calculation.",
|
||||
noSketch: true,
|
||||
},
|
||||
sketch: {
|
||||
inherit: true,
|
||||
desc: "Fails when used in Link Battles.",
|
||||
shortDesc: "Fails when used in Link Battles.",
|
||||
onHit() {
|
||||
// Sketch always fails in Link Battles
|
||||
this.add('-nothing');
|
||||
|
|
@ -799,8 +624,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
skyattack: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second.",
|
||||
shortDesc: "Charges turn 1. Hits turn 2.",
|
||||
critRatio: 1,
|
||||
onPrepareHit(target, source) {
|
||||
return source.status !== 'slp';
|
||||
|
|
@ -813,7 +636,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
sleeptalk: {
|
||||
inherit: true,
|
||||
desc: "One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Bide, Sleep Talk, or any two-turn move.",
|
||||
onHit(pokemon) {
|
||||
const NoSleepTalk = ['bide', 'sleeptalk'];
|
||||
const moves = [];
|
||||
|
|
@ -832,7 +654,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
solarbeam: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. Damage is halved if the weather is Rain Dance. If the weather is Sunny Day, the move completes in one turn.",
|
||||
onPrepareHit(target, source) {
|
||||
return source.status !== 'slp';
|
||||
},
|
||||
|
|
@ -846,8 +667,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
spikes: {
|
||||
inherit: true,
|
||||
desc: "Sets up a hazard on the opposing side of the field, causing each opposing Pokemon that switches in to lose 1/8 of their maximum HP, rounded down, unless it is a Flying-type Pokemon. Fails if the effect is already active on the opposing side. Can be removed from the opposing side if any opposing Pokemon uses Rapid Spin successfully.",
|
||||
shortDesc: "Hurts grounded foes on switch-in. Max 1 layer.",
|
||||
condition: {
|
||||
// this is a side condition
|
||||
onStart(side) {
|
||||
|
|
@ -865,30 +684,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
spite: {
|
||||
inherit: true,
|
||||
desc: "Causes the target's last move used to lose 2 to 5 PP, at random. Fails if the target has not made a move, or if the move has 0 PP.",
|
||||
},
|
||||
stomp: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to flinch the target. Power doubles if the target is under the effect of Minimize.",
|
||||
},
|
||||
stringshot: {
|
||||
inherit: true,
|
||||
shortDesc: "Lowers the target's Speed by 1.",
|
||||
},
|
||||
struggle: {
|
||||
inherit: true,
|
||||
desc: "Deals typeless damage. If this move was successful, the user takes damage equal to 1/4 the HP lost by the target, rounded down, but not less than 1 HP. This move is automatically used if none of the user's known moves can be selected.",
|
||||
},
|
||||
submission: {
|
||||
inherit: true,
|
||||
desc: "If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP. If this move hits a substitute, the recoil damage is always 1 HP.",
|
||||
},
|
||||
sunnyday: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the weather becomes Sunny Day, even if the current weather is Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect.",
|
||||
},
|
||||
substitute: {
|
||||
inherit: true,
|
||||
condition: {
|
||||
|
|
@ -959,14 +754,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
surf: {
|
||||
inherit: true,
|
||||
desc: "No additional effect.",
|
||||
shortDesc: "No additional effect.",
|
||||
},
|
||||
swagger: {
|
||||
inherit: true,
|
||||
desc: "Raises the target's Attack by 2 stages and confuses it. This move will miss if the target's Attack cannot be raised.",
|
||||
onTryHit(target, pokemon) {
|
||||
if (target.boosts.atk >= 6 || target.getStat('atk', false, true) === 999) {
|
||||
this.add('-miss', pokemon);
|
||||
|
|
@ -974,17 +763,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
sweetscent: {
|
||||
inherit: true,
|
||||
shortDesc: "Lowers the target's evasiveness by 1.",
|
||||
},
|
||||
swift: {
|
||||
inherit: true,
|
||||
shortDesc: "This move does not check accuracy.",
|
||||
},
|
||||
synthesis: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP if no weather conditions are in effect, all of its HP if the weather is Sunny Day, and 1/4 of its maximum HP if the weather is Rain Dance or Sandstorm, all rounded down.",
|
||||
onHit(pokemon) {
|
||||
if (this.field.isWeather(['sunnyday', 'desolateland'])) {
|
||||
this.heal(pokemon.maxhp);
|
||||
|
|
@ -995,17 +775,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
tailwhip: {
|
||||
inherit: true,
|
||||
shortDesc: "Lowers the target's Defense by 1.",
|
||||
},
|
||||
takedown: {
|
||||
inherit: true,
|
||||
desc: "If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP. If this move hits a substitute, the recoil damage is always 1 HP.",
|
||||
},
|
||||
thief: {
|
||||
inherit: true,
|
||||
desc: "Has a 100% chance to steal the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail.",
|
||||
onAfterHit() {},
|
||||
secondary: {
|
||||
chance: 100,
|
||||
|
|
@ -1027,7 +798,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
thrash: {
|
||||
inherit: true,
|
||||
desc: "Whether or not this move is successful, the user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect, even if it is already confused. If the user is prevented from moving, the effect ends without causing confusion. If this move is called by Sleep Talk, the move is used for one turn and does not confuse the user.",
|
||||
onMoveFail(target, source, move) {
|
||||
source.addVolatile('lockedmove');
|
||||
},
|
||||
|
|
@ -1037,23 +807,16 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
thunder: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to paralyze the target. This move can hit a target using Fly. If the weather is Rain Dance, this move does not check accuracy. If the weather is Sunny Day, this move's accuracy is 50%.",
|
||||
},
|
||||
toxic: {
|
||||
inherit: true,
|
||||
ignoreImmunity: false,
|
||||
},
|
||||
transform: {
|
||||
inherit: true,
|
||||
desc: "The user transforms into the target. The target's current stats, stat stages, types, moves, DVs, species, and sprite are copied. The user's level and HP remain the same and each copied move receives only 5 PP. This move fails if the target has transformed.",
|
||||
shortDesc: "Copies target's stats, moves, types, and species.",
|
||||
noSketch: true,
|
||||
},
|
||||
triattack: {
|
||||
inherit: true,
|
||||
desc: "This move selects burn, freeze, or paralysis at random, and has a 20% chance to inflict the target with that status. If the target is frozen and burn was selected, it thaws out.",
|
||||
onHit(target, source, move) {
|
||||
move.statusRoll = ['par', 'frz', 'brn'][this.random(3)];
|
||||
},
|
||||
|
|
@ -1068,21 +831,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
triplekick: {
|
||||
inherit: true,
|
||||
desc: "Hits one to three times, at random. Power increases to 20 for the second hit and 30 for the third.",
|
||||
shortDesc: "Hits 1-3 times. Power rises with each hit.",
|
||||
multiaccuracy: false,
|
||||
multihit: [1, 3],
|
||||
},
|
||||
twineedle: {
|
||||
inherit: true,
|
||||
desc: "Hits twice, with the second hit having a 20% chance to poison the target. If the first hit breaks the target's substitute, it will take damage for the second hit but the target cannot be poisoned by it.",
|
||||
shortDesc: "Hits 2 times. Last hit has 20% chance to poison.",
|
||||
},
|
||||
twister: {
|
||||
inherit: true,
|
||||
desc: "Has a 20% chance to flinch the target. Power doubles if the target is using Fly.",
|
||||
shortDesc: "20% chance to flinch the target.",
|
||||
},
|
||||
vitalthrow: {
|
||||
inherit: true,
|
||||
accuracy: true,
|
||||
|
|
@ -1090,7 +841,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
whirlwind: {
|
||||
inherit: true,
|
||||
desc: "The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokemon in its party, or if the user moves before the target.",
|
||||
onTryHit() {
|
||||
for (const action of this.queue) {
|
||||
// Whirlwind only works if it is the last action in a turn, including when it's called by Sleep Talk
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
export const Abilities: {[k: string]: ModdedAbilityData} = {
|
||||
cutecharm: {
|
||||
inherit: true,
|
||||
desc: "There is a 1/3 chance a Pokemon making contact with this Pokemon will become infatuated if it is of the opposite gender. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
shortDesc: "1/3 chance of infatuating Pokemon of the opposite gender if they make contact.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact']) {
|
||||
if (this.randomChance(1, 3)) {
|
||||
|
|
@ -13,8 +11,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
effectspore: {
|
||||
inherit: true,
|
||||
desc: "10% chance a Pokemon making contact with this Pokemon will be poisoned, paralyzed, or fall asleep. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
shortDesc: "10% chance of poison/paralysis/sleep on others making contact with this Pokemon.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact'] && !source.status) {
|
||||
const r = this.random(300);
|
||||
|
|
@ -30,8 +26,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
flamebody: {
|
||||
inherit: true,
|
||||
desc: "1/3 chance a Pokemon making contact with this Pokemon will be burned. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
shortDesc: "1/3 chance a Pokemon making contact with this Pokemon will be burned.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact']) {
|
||||
if (this.randomChance(1, 3)) {
|
||||
|
|
@ -42,7 +36,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
flashfire: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon is immune to Fire-type moves, as long as it is not frozen. The first time it is hit by a Fire-type move, damage from its Fire-type attacks will be multiplied by 1.5 as long as it remains active and has this Ability. If this Pokemon has a major status condition, is a Fire type, or has a substitute, Will-O-Wisp will not activate this Ability.",
|
||||
onTryHit(target, source, move) {
|
||||
if (target !== source && move.type === 'Fire') {
|
||||
if (move.id === 'willowisp' && (target.hasType('Fire') || target.status || target.volatiles['substitute'])) {
|
||||
|
|
@ -87,8 +80,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
},
|
||||
lightningrod: {
|
||||
desc: "If this Pokemon is not the target of a single-target Electric-type move used by an opposing Pokemon, this Pokemon redirects that move to itself. This effect considers Hidden Power a Normal-type move.",
|
||||
shortDesc: "This Pokemon draws single-target Electric moves used by opponents to itself.",
|
||||
onFoeRedirectTarget(target, source, source2, move) {
|
||||
if (move.type !== 'Electric') return;
|
||||
if (this.validTarget(this.effectData.target, source, move.target)) {
|
||||
|
|
@ -101,8 +92,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
minus: {
|
||||
inherit: true,
|
||||
desc: "If an active Pokemon has the Plus Ability, this Pokemon's Special Attack is multiplied by 1.5.",
|
||||
shortDesc: "If an active Pokemon has the Plus Ability, this Pokemon's Sp. Atk is 1.5x.",
|
||||
onModifySpA(spa, pokemon) {
|
||||
for (const active of this.getAllActive()) {
|
||||
if (!active.fainted && active.hasAbility('plus')) {
|
||||
|
|
@ -113,8 +102,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
plus: {
|
||||
inherit: true,
|
||||
desc: "If an active Pokemon has the Minus Ability, this Pokemon's Special Attack is multiplied by 1.5.",
|
||||
shortDesc: "If an active Pokemon has the Minus Ability, this Pokemon's Sp. Atk is 1.5x.",
|
||||
onModifySpA(spa, pokemon) {
|
||||
for (const active of this.getAllActive()) {
|
||||
if (!active.fainted && active.hasAbility('minus')) {
|
||||
|
|
@ -125,8 +112,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
poisonpoint: {
|
||||
inherit: true,
|
||||
desc: "1/3 chance a Pokemon making contact with this Pokemon will be poisoned. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
shortDesc: "1/3 chance a Pokemon making contact with this Pokemon will be poisoned.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact']) {
|
||||
if (this.randomChance(1, 3)) {
|
||||
|
|
@ -143,8 +128,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
roughskin: {
|
||||
inherit: true,
|
||||
desc: "Pokemon making contact with this Pokemon lose 1/16 of their maximum HP, rounded down. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
shortDesc: "Pokemon making contact with this Pokemon lose 1/16 of their max HP.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact']) {
|
||||
this.damage(source.baseMaxhp / 16, source, target);
|
||||
|
|
@ -153,16 +136,12 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
shadowtag: {
|
||||
inherit: true,
|
||||
desc: "Prevents opposing Pokemon from choosing to switch out.",
|
||||
shortDesc: "Prevents opposing Pokemon from choosing to switch out.",
|
||||
onFoeTrapPokemon(pokemon) {
|
||||
pokemon.trapped = true;
|
||||
},
|
||||
},
|
||||
static: {
|
||||
inherit: true,
|
||||
desc: "1/3 chance a Pokemon making contact with this Pokemon will be paralyzed. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
shortDesc: "1/3 chance a Pokemon making contact with this Pokemon will be paralyzed.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact']) {
|
||||
if (this.randomChance(1, 3)) {
|
||||
|
|
@ -206,8 +185,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
voltabsorb: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon is immune to damaging Electric-type moves and restores 1/4 of its maximum HP, rounded down, when hit by one.",
|
||||
shortDesc: "This Pokemon heals 1/4 its max HP when hit by a damaging Electric move; immunity.",
|
||||
onTryHit(target, source, move) {
|
||||
if (target !== source && move.type === 'Electric' && move.id !== 'thunderwave') {
|
||||
if (!this.heal(target.baseMaxhp / 4)) {
|
||||
|
|
@ -217,8 +194,4 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
wonderguard: {
|
||||
inherit: true,
|
||||
shortDesc: "This Pokemon is only damaged by supereffective moves and indirect damage.",
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
blackbelt: {
|
||||
inherit: true,
|
||||
desc: "Holder's Fighting-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move && move.type === 'Fighting') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -43,7 +42,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
blackglasses: {
|
||||
inherit: true,
|
||||
desc: "Holder's Dark-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move && move.type === 'Dark') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -52,7 +50,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
charcoal: {
|
||||
inherit: true,
|
||||
desc: "Holder's Fire-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move && move.type === 'Fire') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -61,7 +58,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
dragonfang: {
|
||||
inherit: true,
|
||||
desc: "Holder's Dragon-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move && move.type === 'Dragon') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -70,7 +66,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
enigmaberry: {
|
||||
name: "Enigma Berry",
|
||||
desc: "No competitive use.",
|
||||
spritenum: 124,
|
||||
isBerry: true,
|
||||
num: 208,
|
||||
|
|
@ -99,7 +94,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
hardstone: {
|
||||
inherit: true,
|
||||
desc: "Holder's Rock-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move && move.type === 'Rock') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -143,7 +137,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
laxincense: {
|
||||
inherit: true,
|
||||
desc: "The accuracy of attacks against the holder is 0.95x.",
|
||||
onModifyAccuracy(accuracy) {
|
||||
if (typeof accuracy !== 'number') return;
|
||||
this.debug('lax incense - decreasing accuracy');
|
||||
|
|
@ -162,12 +155,10 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
lightball: {
|
||||
inherit: true,
|
||||
desc: "If held by a Pikachu, its Special Attack is doubled.",
|
||||
onModifyAtk() {},
|
||||
},
|
||||
magnet: {
|
||||
inherit: true,
|
||||
desc: "Holder's Electric-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Electric') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -186,8 +177,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
metalcoat: {
|
||||
inherit: true,
|
||||
desc: "Holder's Steel-type attacks have 1.1x power. Evolves Onix into Steelix and Scyther into Scizor when traded.",
|
||||
shortDesc: "Holder's Steel-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Steel') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -196,7 +185,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
miracleseed: {
|
||||
inherit: true,
|
||||
desc: "Holder's Grass-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Grass') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -205,7 +193,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
mysticwater: {
|
||||
inherit: true,
|
||||
desc: "Holder's Water-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Water') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -214,7 +201,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
nevermeltice: {
|
||||
inherit: true,
|
||||
desc: "Holder's Ice-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Ice') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -243,7 +229,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
poisonbarb: {
|
||||
inherit: true,
|
||||
desc: "Holder's Poison-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Poison') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -270,7 +255,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
seaincense: {
|
||||
inherit: true,
|
||||
desc: "Holder's Water-type attacks have 1.05x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move && move.type === 'Water') {
|
||||
return basePower * 1.05;
|
||||
|
|
@ -279,7 +263,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
sharpbeak: {
|
||||
inherit: true,
|
||||
desc: "Holder's Flying-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move && move.type === 'Flying') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -288,7 +271,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
silkscarf: {
|
||||
inherit: true,
|
||||
desc: "Holder's Normal-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Normal') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -297,7 +279,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
silverpowder: {
|
||||
inherit: true,
|
||||
desc: "Holder's Bug-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Bug') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -306,7 +287,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
sitrusberry: {
|
||||
inherit: true,
|
||||
desc: "Restores 30 HP when at 1/2 max HP or less. Single use.",
|
||||
onUpdate() {},
|
||||
onResidualOrder: 5,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -320,7 +300,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
softsand: {
|
||||
inherit: true,
|
||||
desc: "Holder's Ground-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Ground') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -329,7 +308,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
spelltag: {
|
||||
inherit: true,
|
||||
desc: "Holder's Ghost-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Ghost') {
|
||||
return basePower * 1.1;
|
||||
|
|
@ -348,7 +326,6 @@ export const Items: {[k: string]: ModdedItemData} = {
|
|||
},
|
||||
twistedspoon: {
|
||||
inherit: true,
|
||||
desc: "Holder's Psychic-type attacks have 1.1x power.",
|
||||
onBasePower(basePower, user, target, move) {
|
||||
if (move.type === 'Psychic') {
|
||||
return basePower * 1.1;
|
||||
|
|
|
|||
|
|
@ -5,13 +5,10 @@
|
|||
export const Moves: {[k: string]: ModdedMoveData} = {
|
||||
absorb: {
|
||||
inherit: true,
|
||||
desc: "The user recovers 1/2 the HP lost by the target, rounded down.",
|
||||
pp: 20,
|
||||
},
|
||||
acid: {
|
||||
inherit: true,
|
||||
desc: "Has a 10% chance to lower the target's Defense by 1 stage.",
|
||||
shortDesc: "10% chance to lower the foe(s) Defense by 1.",
|
||||
secondary: {
|
||||
chance: 10,
|
||||
boosts: {
|
||||
|
|
@ -23,33 +20,15 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
flags: {contact: 1, protect: 1, mirror: 1},
|
||||
},
|
||||
armthrust: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
assist: {
|
||||
inherit: true,
|
||||
desc: "A random move among those known by the user's party members is selected for use. Does not select Assist, Counter, Covet, Destiny Bond, Detect, Endure, Focus Punch, Follow Me, Helping Hand, Metronome, Mimic, Mirror Coat, Mirror Move, Protect, Sketch, Sleep Talk, Snatch, Struggle, Thief, or Trick.",
|
||||
},
|
||||
astonish: {
|
||||
inherit: true,
|
||||
basePowerCallback(pokemon, target) {
|
||||
if (target.volatiles['minimize']) return 60;
|
||||
return 30;
|
||||
},
|
||||
desc: "Has a 30% chance to flinch the target. Damage doubles if the target has used Minimize while active.",
|
||||
},
|
||||
barrage: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
beatup: {
|
||||
inherit: true,
|
||||
desc: "Deals typeless damage. Hits one time for each unfainted Pokemon without a major status condition in the user's party, or fails if no Pokemon meet the criteria. For each hit, the damage formula uses the participating Pokemon's base Attack as the Attack stat, the target's base Defense as the Defense stat, and ignores stat stages and other effects that modify Attack or Defense; each hit is considered to come from the user.",
|
||||
},
|
||||
bide: {
|
||||
inherit: true,
|
||||
desc: "The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokemon that hit it, inflicting double the damage in HP it lost during the two turns. If the last Pokemon that hit it is no longer active, the user attacks a random opposing Pokemon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not ignore type immunity.",
|
||||
accuracy: 100,
|
||||
priority: 0,
|
||||
condition: {
|
||||
|
|
@ -109,59 +88,21 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
bind: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for two to five turns. Causes damage to the target equal to 1/16 of its maximum HP, rounded down, at the end of each turn during effect. The target can still switch out if it uses Baton Pass. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
blizzard: {
|
||||
inherit: true,
|
||||
desc: "Has a 10% chance to freeze the target.",
|
||||
shortDesc: "10% chance to freeze foe(s).",
|
||||
onModifyMove() { },
|
||||
},
|
||||
block: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
ignoreAccuracy: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it uses Baton Pass. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field, unless it uses Baton Pass, in which case the target will remain trapped.",
|
||||
},
|
||||
bonerush: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
bonemerang: {
|
||||
inherit: true,
|
||||
desc: "Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.",
|
||||
},
|
||||
bounce: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to paralyze the target. This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Sky Uppercut, Thunder, and Twister, and Gust and Twister have doubled power when used against it.",
|
||||
},
|
||||
bulletseed: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
camouflage: {
|
||||
inherit: true,
|
||||
desc: "The user's type changes based on the battle terrain. Normal type on the regular Wi-Fi terrain. Fails if the type is one of the user's current types.",
|
||||
},
|
||||
charge: {
|
||||
inherit: true,
|
||||
desc: "If the user uses an Electric-type attack on the next turn, its power will be doubled.",
|
||||
shortDesc: "The user's Electric attack next turn has 2x power.",
|
||||
boosts: null,
|
||||
},
|
||||
clamp: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for two to five turns. Causes damage to the target equal to 1/16 of its maximum HP, rounded down, at the end of each turn during effect. The target can still switch out if it uses Baton Pass. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
cometpunch: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
conversion: {
|
||||
inherit: true,
|
||||
desc: "The user's type changes to match the original type of one of its known moves besides Curse, at random, but not either of its current types. Fails if the user cannot change its type, or if this move would only be able to select one of the user's current types.",
|
||||
onHit(target) {
|
||||
const possibleTypes = target.moveSlots.map(moveSlot => {
|
||||
const move = this.dex.getMove(moveSlot.id);
|
||||
|
|
@ -179,13 +120,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
this.add('-start', target, 'typechange', type);
|
||||
},
|
||||
},
|
||||
conversion2: {
|
||||
inherit: true,
|
||||
desc: "The user's type changes to match a type that resists or is immune to the type of the last move used against the user, if it was successful against the user, but not either of its current types. The determined type of the move is used rather than the original type, but considers Struggle as Normal. Fails if the last move used against the user was not successful, or if this move would only be able to select one of the user's current types.",
|
||||
},
|
||||
counter: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the last opposing Pokemon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If that opposing Pokemon's position is no longer in use and there is another opposing Pokemon on the field, the damage is done to it instead. This move considers Hidden Power as Normal type, and only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokemon's physical attack this turn, or if the user did not lose HP from the attack.",
|
||||
condition: {
|
||||
duration: 1,
|
||||
noCopy: true,
|
||||
|
|
@ -209,13 +145,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
covet: {
|
||||
inherit: true,
|
||||
desc: "If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Enigma Berry. Items lost to this move cannot be regained with Recycle.",
|
||||
flags: {protect: 1, mirror: 1},
|
||||
},
|
||||
crunch: {
|
||||
inherit: true,
|
||||
desc: "Has a 20% chance to lower the target's Special Defense by 1 stage.",
|
||||
shortDesc: "20% chance to lower the target's Sp. Def by 1.",
|
||||
secondary: {
|
||||
chance: 20,
|
||||
boosts: {
|
||||
|
|
@ -223,20 +156,13 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
detect: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn. This move has an X/65536 chance of being successful, where X starts at 65535 and halves, rounded down, each time this move is successfully used. After the fourth successful use in a row, X drops to 118 and continues with seemingly random values from 0-65535 on subsequent successful uses. X resets to 65535 if this move fails or if the user's last move used is not Detect, Endure, or Protect. Fails if the user moves last this turn.",
|
||||
},
|
||||
dig: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude, which have doubled power when used against it, and is also unaffected by weather.",
|
||||
basePower: 60,
|
||||
},
|
||||
disable: {
|
||||
inherit: true,
|
||||
accuracy: 55,
|
||||
desc: "For 2 to 5 turns, the target's last move used becomes disabled. Fails if one of the target's moves is already disabled, if the target has not made a move, if the target no longer knows the move, or if the move has 0 PP.",
|
||||
shortDesc: "For 2-5 turns, disables the target's last move.",
|
||||
flags: {protect: 1, mirror: 1, authentic: 1},
|
||||
volatileStatus: 'disable',
|
||||
condition: {
|
||||
|
|
@ -284,7 +210,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
dive: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Surf and Whirlpool, which have doubled power when used against it, and is also unaffected by weather.",
|
||||
basePower: 60,
|
||||
},
|
||||
doomdesire: {
|
||||
|
|
@ -321,22 +246,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
return null;
|
||||
},
|
||||
},
|
||||
doublekick: {
|
||||
inherit: true,
|
||||
desc: "Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.",
|
||||
},
|
||||
doubleslap: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
dreameater: {
|
||||
inherit: true,
|
||||
desc: "The target is unaffected by this move unless it is asleep and does not have a substitute. The user recovers 1/2 the HP lost by the target, rounded down, but not less than 1 HP.",
|
||||
},
|
||||
encore: {
|
||||
inherit: true,
|
||||
desc: "For 3 to 6 turns, the target is forced to repeat its last move used. If the affected move runs out of PP, the effect ends. Fails if the target is already under this effect, if it has not made a move, if the move has 0 PP, or if the move is Encore, Mimic, Mirror Move, Sketch, Struggle, or Transform.",
|
||||
shortDesc: "The target repeats its last move for 3-6 turns.",
|
||||
flags: {protect: 1, mirror: 1, authentic: 1},
|
||||
volatileStatus: 'encore',
|
||||
condition: {
|
||||
|
|
@ -389,17 +300,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
endure: {
|
||||
inherit: true,
|
||||
desc: "The user will survive attacks made by other Pokemon during this turn with at least 1 HP. This move has an X/65536 chance of being successful, where X starts at 65535 and halves, rounded down, each time this move is successfully used. After the fourth successful use in a row, X drops to 118 and continues with seemingly random values from 0-65535 on subsequent successful uses. X resets to 65535 if this move fails or if the user's last move used is not Detect, Endure, or Protect. Fails if the user moves last this turn.",
|
||||
},
|
||||
explosion: {
|
||||
inherit: true,
|
||||
desc: "The user faints after using this move. The target's Defense is halved during damage calculation. This move is prevented from executing if any active Pokemon has the Damp Ability.",
|
||||
},
|
||||
extrasensory: {
|
||||
inherit: true,
|
||||
desc: "Has a 10% chance to flinch the target. Damage doubles if the target has used Minimize while active.",
|
||||
basePowerCallback(pokemon, target) {
|
||||
if (target.volatiles['minimize']) return 160;
|
||||
return 80;
|
||||
|
|
@ -413,53 +315,22 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
flags: {protect: 1, mirror: 1},
|
||||
},
|
||||
firespin: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for two to five turns. Causes damage to the target equal to 1/16 of its maximum HP, rounded down, at the end of each turn during effect. The target can still switch out if it uses Baton Pass. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
flail: {
|
||||
inherit: true,
|
||||
desc: "The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.",
|
||||
},
|
||||
flash: {
|
||||
inherit: true,
|
||||
accuracy: 70,
|
||||
},
|
||||
fly: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Sky Uppercut, Thunder, and Twister, and Gust and Twister have doubled power when used against it.",
|
||||
basePower: 70,
|
||||
},
|
||||
followme: {
|
||||
inherit: true,
|
||||
desc: "Until the end of the turn, all single-target attacks from the opposing side are redirected to the user. Such attacks are redirected to the user before they can be reflected by Magic Coat, or drawn in by the Lightning Rod Ability. This effect remains active even if the user leaves the field. Fails if it is not a Double Battle.",
|
||||
},
|
||||
foresight: {
|
||||
inherit: true,
|
||||
desc: "As long as the target remains active, its evasiveness stat stage is ignored during accuracy checks against it, and Normal- and Fighting-type attacks can hit the target if it is a Ghost type.",
|
||||
},
|
||||
furyattack: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
furyswipes: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
gigadrain: {
|
||||
inherit: true,
|
||||
desc: "The user recovers 1/2 the HP lost by the target, rounded down.",
|
||||
pp: 5,
|
||||
},
|
||||
glare: {
|
||||
inherit: true,
|
||||
desc: "Paralyzes the target. This move does not ignore type immunity.",
|
||||
ignoreImmunity: false,
|
||||
},
|
||||
hail: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokemon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type. Fails if the current weather is Hail.",
|
||||
},
|
||||
hiddenpower: {
|
||||
inherit: true,
|
||||
basePower: 0,
|
||||
|
|
@ -476,8 +347,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
highjumpkick: {
|
||||
inherit: true,
|
||||
basePower: 85,
|
||||
desc: "If this attack is not successful and the target was not immune, the user loses HP equal to half of the damage the target would have taken, rounded down, but no less than 1 HP and no more than half of the target's maximum HP, as crash damage.",
|
||||
shortDesc: "If miss, user takes 1/2 damage it would've dealt.",
|
||||
onMoveFail(target, source, move) {
|
||||
if (target.runImmunity('Fighting')) {
|
||||
const damage = this.getDamage(source, target, move, true);
|
||||
|
|
@ -490,20 +359,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
accuracy: 60,
|
||||
},
|
||||
iciclespear: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
ingrain: {
|
||||
inherit: true,
|
||||
desc: "The user has 1/16 of its maximum HP restored at the end of each turn, but it is prevented from switching out and other Pokemon cannot force the user to switch out. The user can still switch out if it uses Baton Pass, and the replacement will remain trapped and still receive the healing effect.",
|
||||
shortDesc: "User recovers 1/16 max HP per turn. Traps user.",
|
||||
},
|
||||
jumpkick: {
|
||||
inherit: true,
|
||||
basePower: 70,
|
||||
desc: "If this attack is not successful and the target was not immune, the user loses HP equal to half of the damage the target would have taken, rounded down, but no less than 1 HP and no more than half of the target's maximum HP, as crash damage.",
|
||||
shortDesc: "If miss, user takes 1/2 damage it would've dealt.",
|
||||
onMoveFail(target, source, move) {
|
||||
if (target.runImmunity('Fighting')) {
|
||||
const damage = this.getDamage(source, target, move, true);
|
||||
|
|
@ -512,66 +370,30 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
knockoff: {
|
||||
inherit: true,
|
||||
desc: "The target's held item is lost for the rest of the battle, unless it has the Sticky Hold Ability. During the effect, the target cannot gain a new item by any means.",
|
||||
},
|
||||
leafblade: {
|
||||
inherit: true,
|
||||
basePower: 70,
|
||||
},
|
||||
leechlife: {
|
||||
inherit: true,
|
||||
desc: "The user recovers 1/2 the HP lost by the target, rounded down.",
|
||||
},
|
||||
leechseed: {
|
||||
inherit: true,
|
||||
desc: "The Pokemon at the user's position steals 1/8 of the target's maximum HP, rounded down, at the end of each turn. If the target uses Baton Pass, the replacement will continue being leeched. If the target switches out or uses Rapid Spin, the effect ends. Grass-type Pokemon are immune to this move on use, but not its effect.",
|
||||
},
|
||||
lightscreen: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the user and its party members take 1/2 damage from special attacks, or 2/3 damage if there are multiple active Pokemon on the user's side. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break. Fails if the effect is already active on the user's side.",
|
||||
},
|
||||
lockon: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
},
|
||||
magiccoat: {
|
||||
inherit: true,
|
||||
desc: "The user is unaffected by certain non-damaging moves directed at it and will instead use such moves against the original user. If the move targets both opposing Pokemon and the Pokemon under this effect is on the left side, it will reflect the move targeting both opposing Pokemon and its ally will not be affected by the original move; otherwise, if the Pokemon under this effect is on the right side, its ally will be affected by the original move and this Pokemon will reflect the move only targeting the original user. The effect ends once a move is reflected or at the end of the turn. Moves reflected in this way can be reflected again by another Pokemon under this effect. If the user has the Soundproof Ability, it nullifies sound-based moves before this effect happens. The Lightning Rod Ability redirects Electric moves before this move takes effect.",
|
||||
},
|
||||
meanlook: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
ignoreAccuracy: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it uses Baton Pass. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field, unless it uses Baton Pass, in which case the target will remain trapped.",
|
||||
},
|
||||
megadrain: {
|
||||
inherit: true,
|
||||
desc: "The user recovers 1/2 the HP lost by the target, rounded down.",
|
||||
pp: 10,
|
||||
},
|
||||
memento: {
|
||||
inherit: true,
|
||||
desc: "Lowers the target's Attack and Special Attack by 2 stages. The user faints. This move does not check accuracy, and can hit targets in the middle of a two-turn move. Fails entirely if the target's Attack and Special Attack stat stages are both -6.",
|
||||
},
|
||||
metronome: {
|
||||
inherit: true,
|
||||
desc: "A random move is selected for use, other than Counter, Covet, Destiny Bond, Detect, Endure, Focus Punch, Follow Me, Helping Hand, Metronome, Mimic, Mirror Coat, Protect, Sketch, Sleep Talk, Snatch, Struggle, Thief, or Trick.",
|
||||
},
|
||||
mimic: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
ignoreAccuracy: true,
|
||||
desc: "While the user remains active, this move is replaced by the last move used by the target. The copied move has 5 PP. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Metronome, Mimic, Sketch, or Struggle.",
|
||||
},
|
||||
minimize: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's evasiveness by 1 stage. Whether or not the user's evasiveness was changed, Astonish, Extrasensory, Needle Arm, and Stomp will have their damage doubled if used against the user while it is active.",
|
||||
},
|
||||
mirrorcoat: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the last opposing Pokemon to hit the user with a special attack this turn equal to twice the HP lost by the user from that attack. If that opposing Pokemon's position is no longer in use and there is another opposing Pokemon on the field, the damage is done to it instead. This move considers Hidden Power as Normal type, and only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokemon's special attack this turn, or if the user did not lose HP from the attack.",
|
||||
condition: {
|
||||
duration: 1,
|
||||
noCopy: true,
|
||||
|
|
@ -595,7 +417,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
mirrormove: {
|
||||
inherit: true,
|
||||
desc: "The user uses the last move that successfully targeted the user. The copied move is used with no specific target. Fails if no move has targeted the user, if the move missed, failed, or had no effect on the user, or if the move cannot be copied by this move.",
|
||||
onTryHit() { },
|
||||
onHit(pokemon) {
|
||||
const noMirror = [
|
||||
|
|
@ -615,27 +436,19 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
naturepower: {
|
||||
inherit: true,
|
||||
accuracy: 95,
|
||||
desc: "This move calls another move for use depending on the battle terrain. Swift in Wi-Fi battles.",
|
||||
shortDesc: "Attack changes based on terrain. (Swift)",
|
||||
onHit(target) {
|
||||
this.useMove('swift', target);
|
||||
},
|
||||
},
|
||||
needlearm: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to flinch the target. Damage doubles if the target has used Minimize while active.",
|
||||
basePowerCallback(pokemon, target) {
|
||||
if (target.volatiles['minimize']) return 120;
|
||||
return 60;
|
||||
},
|
||||
},
|
||||
odorsleuth: {
|
||||
inherit: true,
|
||||
desc: "As long as the target remains active, its evasiveness stat stage is ignored during accuracy checks against it, and Normal- and Fighting-type attacks can hit the target if it is a Ghost type.",
|
||||
},
|
||||
outrage: {
|
||||
inherit: true,
|
||||
desc: "The user spends two or three turns locked into this move and becomes confused at the end of the last turn of the effect if it is not already. This move targets an opposing Pokemon at random on each turn. If the user is prevented from moving, falls asleep, becomes frozen, or the attack is not successful against the target, the effect ends without causing confusion. If this move is called by Sleep Talk, the move is used for one turn and does not confuse the user.",
|
||||
basePower: 90,
|
||||
},
|
||||
overheat: {
|
||||
|
|
@ -649,60 +462,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
petaldance: {
|
||||
inherit: true,
|
||||
desc: "The user spends two or three turns locked into this move and becomes confused at the end of the last turn of the effect if it is not already. This move targets an opposing Pokemon at random on each turn. If the user is prevented from moving, falls asleep, becomes frozen, or the attack is not successful against the target, the effect ends without causing confusion. If this move is called by Sleep Talk, the move is used for one turn and does not confuse the user.",
|
||||
basePower: 70,
|
||||
},
|
||||
pinmissile: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
protect: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn. This move has an X/65536 chance of being successful, where X starts at 65535 and halves, rounded down, each time this move is successfully used. After the fourth successful use in a row, X drops to 118 and continues with seemingly random values from 0-65535 on subsequent successful uses. X resets to 65535 if this move fails or if the user's last move used is not Detect, Endure, or Protect. Fails if the user moves last this turn.",
|
||||
},
|
||||
pursuit: {
|
||||
inherit: true,
|
||||
desc: "If the target is an opposing Pokemon and it switches out this turn, this move hits that Pokemon before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokemon becomes active immediately.",
|
||||
shortDesc: "Power doubles if the targeted foe is switching out.",
|
||||
},
|
||||
rage: {
|
||||
inherit: true,
|
||||
desc: "Once this move is used and unless the target protected itself, the user's Attack is raised by 1 stage every time it is hit by another Pokemon's attack as long as this move is chosen for use.",
|
||||
},
|
||||
raindance: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Fails if the current weather is Rain Dance.",
|
||||
},
|
||||
rapidspin: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, the effects of Leech Seed and binding moves end for the user, and Spikes are removed from the user's side of the field.",
|
||||
},
|
||||
razorwind: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second.",
|
||||
shortDesc: "Charges, then hits foe(s) turn 2.",
|
||||
},
|
||||
recover: {
|
||||
inherit: true,
|
||||
pp: 20,
|
||||
},
|
||||
reflect: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the user and its party members take 1/2 damage from physical attacks, or 2/3 damage if there are multiple active Pokemon on the user's side. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break. Fails if the effect is already active on the user's side.",
|
||||
},
|
||||
revenge: {
|
||||
inherit: true,
|
||||
desc: "Damage doubles if the user was hit by a Pokemon in the target's current position this turn, and that Pokemon was the last to hit the user.",
|
||||
shortDesc: "Damage doubles if user is hit by the target.",
|
||||
},
|
||||
reversal: {
|
||||
inherit: true,
|
||||
desc: "The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.",
|
||||
},
|
||||
rockblast: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
rocksmash: {
|
||||
inherit: true,
|
||||
basePower: 20,
|
||||
|
|
@ -711,45 +476,14 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
accuracy: 100,
|
||||
ignoreAccuracy: true,
|
||||
desc: "The user's Ability changes to match the target's Ability. Fails if the target's Ability is Wonder Guard.",
|
||||
},
|
||||
safeguard: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the user and its party members cannot have major status conditions or confusion inflicted on them by other Pokemon. Fails if the effect is already active on the user's side.",
|
||||
},
|
||||
sandtomb: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for two to five turns. Causes damage to the target equal to 1/16 of its maximum HP, rounded down, at the end of each turn during effect. The target can still switch out if it uses Baton Pass. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
sandstorm: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the weather becomes Sandstorm. At the end of each turn except the last, all active Pokemon lose 1/16 of their maximum HP, rounded down, unless they are a Ground, Rock, or Steel type, or have the Sand Veil Ability. Fails if the current weather is Sandstorm.",
|
||||
},
|
||||
selfdestruct: {
|
||||
inherit: true,
|
||||
desc: "The user faints after using this move. The target's Defense is halved during damage calculation. This move is prevented from executing if any active Pokemon has the Damp Ability.",
|
||||
},
|
||||
sketch: {
|
||||
inherit: true,
|
||||
desc: "This move is permanently replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, or if the move is Sketch, Struggle, or any move the user knows.",
|
||||
},
|
||||
skillswap: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
ignoreAccuracy: true,
|
||||
desc: "The user swaps its Ability with the target's Ability. Fails if either the user or the target's Ability is Wonder Guard.",
|
||||
},
|
||||
skullbash: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn.",
|
||||
},
|
||||
skyattack: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to flinch the target and a higher chance for a critical hit. This attack charges on the first turn and executes on the second.",
|
||||
},
|
||||
sleeptalk: {
|
||||
inherit: true,
|
||||
desc: "One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, but if it currently has 0 PP it will fail to be used. This move cannot select Assist, Bide, Focus Punch, Metronome, Mirror Move, Sleep Talk, Uproar, or any two-turn move.",
|
||||
beforeMoveCallback(pokemon) {
|
||||
if (pokemon.volatiles['choicelock'] || pokemon.volatiles['encore']) {
|
||||
this.addMove('move', pokemon, 'Sleep Talk');
|
||||
|
|
@ -778,33 +512,13 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
this.useMove(randomMove.move, pokemon);
|
||||
},
|
||||
},
|
||||
smellingsalts: {
|
||||
inherit: true,
|
||||
desc: "Damage doubles if the target is paralyzed. If this move is successful, the target is cured of paralysis.",
|
||||
shortDesc: "Damage doubles if target is paralyzed; cures it.",
|
||||
},
|
||||
solarbeam: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. Damage is halved if the weather is Hail, Rain Dance, or Sandstorm. If the weather is Sunny Day, the move completes in one turn.",
|
||||
},
|
||||
spiderweb: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
ignoreAccuracy: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it uses Baton Pass. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field, unless it uses Baton Pass, in which case the target will remain trapped.",
|
||||
},
|
||||
spikecannon: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 3/8 chance to hit two or three times, and a 1/8 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
spikes: {
|
||||
inherit: true,
|
||||
desc: "Sets up a hazard on the opposing side of the field, damaging each opposing Pokemon that switches in, unless it is a Flying-type Pokemon or has the Levitate Ability. Can be used up to three times before failing. Opponents lose 1/8 of their maximum HP with one layer, 1/6 of their maximum HP with two layers, and 1/4 of their maximum HP with three layers, all rounded down. Can be removed from the opposing side if any opposing Pokemon uses Rapid Spin successfully.",
|
||||
},
|
||||
spite: {
|
||||
inherit: true,
|
||||
desc: "Causes the target's last move used to lose 2 to 5 PP, at random. Fails if the target has not made a move, if the move has 0 or 1 PP, or if it no longer knows the move.",
|
||||
shortDesc: "Lowers the PP of the target's last move by 2-5.",
|
||||
onHit(target) {
|
||||
const roll = this.random(2, 6);
|
||||
if (target.lastMove && target.deductPP(target.lastMove.id, roll)) {
|
||||
|
|
@ -814,14 +528,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
return false;
|
||||
},
|
||||
},
|
||||
spitup: {
|
||||
inherit: true,
|
||||
desc: "Damage is multiplied by the user's Stockpile count. This move does not apply damage variance and cannot be a critical hit. Fails if the user's Stockpile count is 0. Unless this move misses, the user's Stockpile count resets to 0.",
|
||||
},
|
||||
stockpile: {
|
||||
inherit: true,
|
||||
desc: "The user's Stockpile count increases by 1. Fails if the user's Stockpile count is 3. The user's Stockpile count is reset to 0 when it is no longer active.",
|
||||
shortDesc: "Raises user's Stockpile count by 1. Max 3 uses.",
|
||||
pp: 10,
|
||||
condition: {
|
||||
noCopy: true,
|
||||
|
|
@ -840,39 +548,18 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
stomp: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to flinch the target. Damage doubles if the target has used Minimize while active.",
|
||||
},
|
||||
struggle: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
desc: "Deals typeless damage to a random opposing Pokemon. If this move was successful, the user takes damage equal to 1/4 the HP lost by the target, rounded down, but not less than 1 HP, and the Rock Head Ability does not prevent this. This move is automatically used if none of the user's known moves can be selected.",
|
||||
shortDesc: "User loses 1/4 the HP lost by the target.",
|
||||
recoil: [1, 4],
|
||||
struggleRecoil: false,
|
||||
},
|
||||
stunspore: {
|
||||
inherit: true,
|
||||
desc: "Paralyzes the target. This move does not ignore type immunity.",
|
||||
},
|
||||
sunnyday: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Fails if the current weather is Sunny Day.",
|
||||
},
|
||||
surf: {
|
||||
inherit: true,
|
||||
shortDesc: "Hits foes. Power doubles against Dive.",
|
||||
target: "allAdjacentFoes",
|
||||
},
|
||||
swallow: {
|
||||
inherit: true,
|
||||
desc: "The user restores its HP based on its Stockpile count. Restores 1/4 of its maximum HP if it's 1, 1/2 of its maximum HP if it's 2, both rounded half down, and all of its HP if it's 3. Fails if the user's Stockpile count is 0. The user's Stockpile count resets to 0.",
|
||||
},
|
||||
taunt: {
|
||||
inherit: true,
|
||||
desc: "For 2 turns, prevents the target from using non-damaging moves.",
|
||||
shortDesc: "For 2 turns, the target can't use status moves.",
|
||||
flags: {protect: 1, authentic: 1},
|
||||
condition: {
|
||||
duration: 2,
|
||||
|
|
@ -902,35 +589,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
flags: {protect: 1},
|
||||
},
|
||||
thief: {
|
||||
inherit: true,
|
||||
desc: "If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Enigma Berry. Items lost to this move cannot be regained with Recycle.",
|
||||
},
|
||||
thrash: {
|
||||
inherit: true,
|
||||
desc: "The user spends two or three turns locked into this move and becomes confused at the end of the last turn of the effect if it is not already. This move targets an opposing Pokemon at random on each turn. If the user is prevented from moving, falls asleep, becomes frozen, or the attack is not successful against the target, the effect ends without causing confusion. If this move is called by Sleep Talk, the move is used for one turn and does not confuse the user.",
|
||||
},
|
||||
tickle: {
|
||||
inherit: true,
|
||||
flags: {protect: 1, reflectable: 1, mirror: 1, authentic: 1},
|
||||
},
|
||||
trick: {
|
||||
inherit: true,
|
||||
desc: "The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail, if neither is holding an item, if either is under the effect of Knock Off, or if the target has the Sticky Hold Ability.",
|
||||
},
|
||||
triplekick: {
|
||||
inherit: true,
|
||||
desc: "Hits three times. Power increases to 20 for the second hit and 30 for the third. This move checks accuracy for each hit, and the attack ends if the target avoids a hit. If one of the hits breaks the target's substitute, it will take damage for the remaining hits.",
|
||||
},
|
||||
twineedle: {
|
||||
inherit: true,
|
||||
desc: "Hits twice, with each hit having a 20% chance to poison the target. If the first hit breaks the target's substitute, it will take damage for the second hit.",
|
||||
},
|
||||
uproar: {
|
||||
inherit: true,
|
||||
desc: "The user spends three to five turns locked into this move. This move targets an opposing Pokemon at random on each turn. During effect, no active Pokemon can fall asleep by any means, and Pokemon that are already asleep wake up as their turn starts or at the end of each turn, including the last one. If the user is prevented from moving or the attack is not successful against the target during one of the turns, the effect ends.",
|
||||
shortDesc: "Lasts 3-5 turns. Active Pokemon cannot sleep.",
|
||||
},
|
||||
vinewhip: {
|
||||
inherit: true,
|
||||
pp: 10,
|
||||
|
|
@ -942,20 +604,14 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
volttackle: {
|
||||
inherit: true,
|
||||
desc: "If the target lost HP, the user takes recoil damage equal to 1/3 the HP lost by the target, rounded down, but not less than 1 HP.",
|
||||
shortDesc: "Has 1/3 recoil.",
|
||||
secondary: null,
|
||||
},
|
||||
waterfall: {
|
||||
inherit: true,
|
||||
desc: "No additional effect.",
|
||||
shortDesc: "No additional effect.",
|
||||
secondary: null,
|
||||
},
|
||||
weatherball: {
|
||||
inherit: true,
|
||||
desc: "Damage doubles if a weather condition is active, and this move's type changes to match. Ice type during Hail, Water type during Rain Dance, Rock type during Sandstorm, and Fire type during Sunny Day.",
|
||||
shortDesc: "Damage doubles and type varies during weather.",
|
||||
onModifyMove(move) {
|
||||
switch (this.field.effectiveWeather()) {
|
||||
case 'sunnyday':
|
||||
|
|
@ -976,14 +632,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
whirlpool: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for two to five turns. Causes damage to the target equal to 1/16 of its maximum HP, rounded down, at the end of each turn during effect. The target can still switch out if it uses Baton Pass. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
wrap: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for two to five turns. Causes damage to the target equal to 1/16 of its maximum HP, rounded down, at the end of each turn during effect. The target can still switch out if it uses Baton Pass. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
yawn: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
export const Abilities: {[k: string]: ModdedAbilityData} = {
|
||||
angerpoint: {
|
||||
inherit: true,
|
||||
desc: "If this Pokemon, or its substitute, is struck by a critical hit, its Attack is raised by 12 stages.",
|
||||
shortDesc: "If this Pokemon or its substitute takes a critical hit, its Attack is raised 12 stages.",
|
||||
onAfterSubDamage(damage, target, source, move) {
|
||||
if (!target.hp) return;
|
||||
if (move && move.effectType === 'Move' && target.getMoveHitData(move).crit) {
|
||||
|
|
@ -13,8 +11,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
rating: 1.5,
|
||||
},
|
||||
blaze: {
|
||||
desc: "When this Pokemon has 1/3 or less of its maximum HP, rounded down, its Fire-type attacks have their power multiplied by 1.5.",
|
||||
shortDesc: "At 1/3 or less of its max HP, this Pokemon's Fire-type attacks have 1.5x power.",
|
||||
onBasePowerPriority: 2,
|
||||
onBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Fire' && attacker.hp <= attacker.maxhp / 3) {
|
||||
|
|
@ -28,7 +24,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
colorchange: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon's type changes to match the type of the last move that hit it, unless that type is already one of its types. This effect applies after each hit from a multi-hit move. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (!damage || !target.hp) return;
|
||||
const type = move.type;
|
||||
|
|
@ -41,7 +36,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
cutecharm: {
|
||||
inherit: true,
|
||||
desc: "There is a 30% chance a Pokemon making contact with this Pokemon will become infatuated if it is of the opposite gender. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact']) {
|
||||
if (this.randomChance(3, 10)) {
|
||||
|
|
@ -52,7 +46,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
effectspore: {
|
||||
inherit: true,
|
||||
desc: "30% chance a Pokemon making contact with this Pokemon will be poisoned, paralyzed, or fall asleep. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact'] && !source.status) {
|
||||
const r = this.random(100);
|
||||
|
|
@ -68,7 +61,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
flamebody: {
|
||||
inherit: true,
|
||||
desc: "30% chance a Pokemon making contact with this Pokemon will be burned. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact']) {
|
||||
if (this.randomChance(3, 10)) {
|
||||
|
|
@ -108,8 +100,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
flowergift: {
|
||||
inherit: true,
|
||||
desc: "If Sunny Day is active, the Attack and Special Defense of this Pokemon and its allies are multiplied by 1.5.",
|
||||
shortDesc: "If Sunny Day is active, Attack and Sp. Def of this Pokemon and its allies are 1.5x.",
|
||||
onAllyModifyAtk(atk) {
|
||||
if (this.field.isWeather('sunnyday')) {
|
||||
return this.chainModify(1.5);
|
||||
|
|
@ -185,8 +175,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
leafguard: {
|
||||
inherit: true,
|
||||
desc: "If Sunny Day is active, this Pokemon cannot gain a major status condition, but can use Rest normally.",
|
||||
shortDesc: "If Sunny Day is active, this Pokemon cannot be statused, but Rest works normally.",
|
||||
onSetStatus(status, target, source, effect) {
|
||||
if (effect && effect.id === 'rest') {
|
||||
return;
|
||||
|
|
@ -197,14 +185,10 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
lightningrod: {
|
||||
inherit: true,
|
||||
desc: "If this Pokemon is not the target of a single-target Electric-type move used by another Pokemon, this Pokemon redirects that move to itself.",
|
||||
shortDesc: "This Pokemon draws single-target Electric moves to itself.",
|
||||
onTryHit() {},
|
||||
rating: 0,
|
||||
},
|
||||
magicguard: {
|
||||
desc: "This Pokemon can only be damaged by direct attacks. Curse and Substitute on use, Belly Drum, Pain Split, Struggle recoil, and confusion damage are considered direct damage. This Pokemon cannot lose its turn because of paralysis, and is unaffected by Toxic Spikes on switch-in.",
|
||||
shortDesc: "This Pokemon can only be damaged by direct attacks, and can't be fully paralyzed.",
|
||||
onDamage(damage, target, source, effect) {
|
||||
if (effect.effectType !== 'Move') {
|
||||
return false;
|
||||
|
|
@ -220,8 +204,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
num: 98,
|
||||
},
|
||||
minus: {
|
||||
desc: "If an active ally has the Plus Ability, this Pokemon's Special Attack is multiplied by 1.5.",
|
||||
shortDesc: "If an active ally has the Plus Ability, this Pokemon's Sp. Atk is 1.5x.",
|
||||
onModifySpA(spa, pokemon) {
|
||||
const allyActive = pokemon.side.active;
|
||||
if (allyActive.length === 1) {
|
||||
|
|
@ -259,8 +241,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
},
|
||||
overgrow: {
|
||||
desc: "When this Pokemon has 1/3 or less of its maximum HP, rounded down, its Grass-type attacks have their power multiplied by 1.5.",
|
||||
shortDesc: "At 1/3 or less of its max HP, this Pokemon's Grass-type attacks have 1.5x power.",
|
||||
onBasePowerPriority: 2,
|
||||
onBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Grass' && attacker.hp <= attacker.maxhp / 3) {
|
||||
|
|
@ -273,15 +253,11 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
num: 65,
|
||||
},
|
||||
pickup: {
|
||||
desc: "No competitive use.",
|
||||
shortDesc: "No competitive use.",
|
||||
name: "Pickup",
|
||||
rating: 0,
|
||||
num: 53,
|
||||
},
|
||||
plus: {
|
||||
desc: "If an active ally has the Minus Ability, this Pokemon's Special Attack is multiplied by 1.5.",
|
||||
shortDesc: "If an active ally has the Minus Ability, this Pokemon's Sp. Atk is 1.5x.",
|
||||
onModifySpA(spa, pokemon) {
|
||||
const allyActive = pokemon.side.active;
|
||||
if (allyActive.length === 1) {
|
||||
|
|
@ -299,7 +275,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
poisonpoint: {
|
||||
inherit: true,
|
||||
desc: "30% chance a Pokemon making contact with this Pokemon will be poisoned. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact']) {
|
||||
if (this.randomChance(3, 10)) {
|
||||
|
|
@ -309,8 +284,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
},
|
||||
pressure: {
|
||||
desc: "If this Pokemon is the target of another Pokemon's move, that move loses one additional PP.",
|
||||
shortDesc: "If this Pokemon is the target of a move, that move loses one additional PP.",
|
||||
onStart(pokemon) {
|
||||
this.add('-ability', pokemon, 'Pressure');
|
||||
},
|
||||
|
|
@ -324,7 +297,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
roughskin: {
|
||||
inherit: true,
|
||||
desc: "Pokemon making contact with this Pokemon lose 1/16 of their maximum HP, rounded down. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact']) {
|
||||
this.damage(source.baseMaxhp / 16, source, target);
|
||||
|
|
@ -343,7 +315,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
},
|
||||
simple: {
|
||||
shortDesc: "This Pokemon's stat stages are considered doubled during stat calculations.",
|
||||
onModifyBoost(boosts) {
|
||||
let key: BoostName;
|
||||
for (key in boosts) {
|
||||
|
|
@ -356,11 +327,9 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
soundproof: {
|
||||
inherit: true,
|
||||
shortDesc: "This Pokemon is immune to sound-based moves, including Heal Bell.",
|
||||
},
|
||||
static: {
|
||||
inherit: true,
|
||||
desc: "30% chance a Pokemon making contact with this Pokemon will be paralyzed. This effect does not happen if this Pokemon did not lose HP from the attack.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (damage && move.flags['contact']) {
|
||||
if (this.randomChance(3, 10)) {
|
||||
|
|
@ -370,8 +339,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
},
|
||||
stench: {
|
||||
desc: "No competitive use.",
|
||||
shortDesc: "No competitive use.",
|
||||
name: "Stench",
|
||||
rating: 0,
|
||||
num: 1,
|
||||
|
|
@ -388,21 +355,15 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
stormdrain: {
|
||||
inherit: true,
|
||||
desc: "If this Pokemon is not the target of a single-target Water-type move used by another Pokemon, this Pokemon redirects that move to itself.",
|
||||
shortDesc: "This Pokemon draws single-target Water moves to itself.",
|
||||
onTryHit() {},
|
||||
rating: 0,
|
||||
},
|
||||
sturdy: {
|
||||
inherit: true,
|
||||
desc: "OHKO moves fail when used against this Pokemon.",
|
||||
shortDesc: "OHKO moves fail when used against this Pokemon.",
|
||||
onDamage() {},
|
||||
rating: 0,
|
||||
},
|
||||
swarm: {
|
||||
desc: "When this Pokemon has 1/3 or less of its maximum HP, rounded down, its Bug-type attacks have their power multiplied by 1.5.",
|
||||
shortDesc: "At 1/3 or less of its max HP, this Pokemon's Bug-type attacks have 1.5x power.",
|
||||
onBasePowerPriority: 2,
|
||||
onBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Bug' && attacker.hp <= attacker.maxhp / 3) {
|
||||
|
|
@ -416,7 +377,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
synchronize: {
|
||||
inherit: true,
|
||||
desc: "If another Pokemon burns, paralyzes, or poisons this Pokemon, that Pokemon receives the same major status condition. If another Pokemon badly poisons this Pokemon, that Pokemon becomes poisoned.",
|
||||
onAfterSetStatus(status, target, source, effect) {
|
||||
if (!source || source === target) return;
|
||||
if (effect && effect.id === 'toxicspikes') return;
|
||||
|
|
@ -427,7 +387,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
},
|
||||
thickfat: {
|
||||
shortDesc: "The power of Fire- and Ice-type attacks against this Pokemon is halved.",
|
||||
onSourceBasePowerPriority: 1,
|
||||
onSourceBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Ice' || move.type === 'Fire') {
|
||||
|
|
@ -439,8 +398,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
num: 47,
|
||||
},
|
||||
torrent: {
|
||||
desc: "When this Pokemon has 1/3 or less of its maximum HP, rounded down, its Water-type attacks have their power multiplied by 1.5.",
|
||||
shortDesc: "At 1/3 or less of its max HP, this Pokemon's Water-type attacks have 1.5x power.",
|
||||
onBasePowerPriority: 2,
|
||||
onBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Water' && attacker.hp <= attacker.maxhp / 3) {
|
||||
|
|
@ -474,7 +431,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
wonderguard: {
|
||||
inherit: true,
|
||||
shortDesc: "This Pokemon is only damaged by Fire Fang, supereffective moves, indirect damage.",
|
||||
onTryHit(target, source, move) {
|
||||
if (move.id === 'firefang') {
|
||||
this.hint("In Gen 4, Fire Fang is always able to hit through Wonder Guard.");
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +1,6 @@
|
|||
export const Abilities: {[k: string]: ModdedAbilityData} = {
|
||||
anticipation: {
|
||||
inherit: true,
|
||||
desc: "On switch-in, this Pokemon is alerted if any opposing Pokemon has an attack that is super effective on this Pokemon, or an OHKO move. Counter, Metal Burst, and Mirror Coat count as attacking moves of their respective types, while Hidden Power, Judgment, Natural Gift, Techno Blast, and Weather Ball are considered Normal-type moves.",
|
||||
onStart(pokemon) {
|
||||
for (const target of pokemon.side.foe.active) {
|
||||
if (!target || target.fainted) continue;
|
||||
|
|
@ -20,7 +19,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
frisk: {
|
||||
inherit: true,
|
||||
shortDesc: "On switch-in, this Pokemon identifies a random foe's held item.",
|
||||
onStart(pokemon) {
|
||||
const target = pokemon.side.foe.randomActive();
|
||||
if (target?.item) {
|
||||
|
|
@ -30,20 +28,14 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
infiltrator: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon's moves ignore the opposing side's Reflect, Light Screen, Safeguard, and Mist.",
|
||||
shortDesc: "This Pokemon's moves ignore the foe's Reflect, Light Screen, Safeguard, and Mist.",
|
||||
rating: 1.5,
|
||||
},
|
||||
keeneye: {
|
||||
inherit: true,
|
||||
desc: "Prevents other Pokemon from lowering this Pokemon's accuracy stat stage.",
|
||||
shortDesc: "Prevents other Pokemon from lowering this Pokemon's accuracy stat stage.",
|
||||
onModifyMove() {},
|
||||
},
|
||||
oblivious: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon cannot be infatuated. Gaining this Ability while infatuated cures it.",
|
||||
shortDesc: "This Pokemon cannot be infatuated. Gaining this Ability while infatuated cures it.",
|
||||
onUpdate(pokemon) {
|
||||
if (pokemon.volatiles['attract']) {
|
||||
pokemon.removeVolatile('attract');
|
||||
|
|
@ -60,7 +52,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
overcoat: {
|
||||
inherit: true,
|
||||
shortDesc: "This Pokemon is immune to damage from Sandstorm or Hail.",
|
||||
onTryHit() {},
|
||||
rating: 0.5,
|
||||
},
|
||||
|
|
@ -81,7 +72,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
soundproof: {
|
||||
inherit: true,
|
||||
shortDesc: "This Pokemon is immune to sound-based moves, except Heal Bell.",
|
||||
onAllyTryHitSide() {},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
aromatherapy: {
|
||||
inherit: true,
|
||||
desc: "Every Pokemon in the user's party is cured of its major status condition.",
|
||||
onHit(target, source) {
|
||||
this.add('-activate', source, 'move: Aromatherapy');
|
||||
for (const pokemon of source.side.pokemon) {
|
||||
|
|
@ -27,7 +26,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
assist: {
|
||||
inherit: true,
|
||||
desc: "A random move among those known by the user's party members is selected for use. Does not select Assist, Bestow, Chatter, Circle Throw, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Me First, Metronome, Mimic, Mirror Coat, Mirror Move, Nature Power, Protect, Rage Powder, Sketch, Sleep Talk, Snatch, Struggle, Switcheroo, Thief, Transform, or Trick.",
|
||||
onHit(target) {
|
||||
const moves = [];
|
||||
for (const pokemon of target.side.pokemon) {
|
||||
|
|
@ -54,10 +52,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
basePower: 50,
|
||||
},
|
||||
attract: {
|
||||
inherit: true,
|
||||
desc: "Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokemon with the Oblivious Ability are immune.",
|
||||
},
|
||||
aurasphere: {
|
||||
inherit: true,
|
||||
basePower: 90,
|
||||
|
|
@ -97,30 +91,16 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
bestow: {
|
||||
inherit: true,
|
||||
desc: "The target receives the user's held item. Fails if the user has no item or is holding a Mail, if the target is already holding an item, if the user is a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, or if the target is one of those Pokemon and the user is holding the respective item.",
|
||||
flags: {protect: 1, mirror: 1},
|
||||
},
|
||||
bind: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/16 of its maximum HP (1/8 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
blizzard: {
|
||||
inherit: true,
|
||||
basePower: 120,
|
||||
},
|
||||
block: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, U-turn, or Volt Switch. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field.",
|
||||
flags: {protect: 1, reflectable: 1, mirror: 1},
|
||||
},
|
||||
bodyslam: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to paralyze the target.",
|
||||
},
|
||||
bounce: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to paralyze the target. This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.",
|
||||
},
|
||||
bubble: {
|
||||
inherit: true,
|
||||
basePower: 20,
|
||||
|
|
@ -131,8 +111,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
camouflage: {
|
||||
inherit: true,
|
||||
desc: "The user's type changes based on the battle terrain. Ground type on the regular Wi-Fi terrain. Fails if the user's type cannot be changed or if the user is already purely that type.",
|
||||
shortDesc: "Changes user's type based on terrain. (Ground)",
|
||||
onHit(target) {
|
||||
if (!target.setType('Ground')) return false;
|
||||
this.add('-start', target, 'typechange', 'Ground');
|
||||
|
|
@ -145,8 +123,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
chatter: {
|
||||
inherit: true,
|
||||
basePower: 60,
|
||||
desc: "Has an X% chance to confuse the target, where X is 0 unless the user is a Chatot that hasn't Transformed. If the user is a Chatot, X is 0 or 10 depending on the volume of Chatot's recorded cry, if any; 0 for a low volume or no recording, 10 for a medium to high volume recording.",
|
||||
shortDesc: "For Chatot, 10% chance to confuse the target.",
|
||||
onModifyMove(move, pokemon) {
|
||||
if (pokemon.species.name !== 'Chatot') delete move.secondaries;
|
||||
},
|
||||
|
|
@ -156,14 +132,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
flags: {protect: 1, sound: 1, distance: 1},
|
||||
},
|
||||
clamp: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/16 of its maximum HP (1/8 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
conversion: {
|
||||
inherit: true,
|
||||
desc: "The user's type changes to match the original type of one of its known moves besides this move, at random, but not either of its current types. Fails if the user cannot change its type, or if this move would only be able to select one of the user's current types.",
|
||||
shortDesc: "Changes user's type to match a known move.",
|
||||
onHit(target) {
|
||||
const possibleTypes = target.moveSlots.map(moveSlot => {
|
||||
const move = this.dex.getMove(moveSlot.id);
|
||||
|
|
@ -183,7 +153,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
copycat: {
|
||||
inherit: true,
|
||||
desc: "The user uses the last move used by any Pokemon, including itself. Fails if no move has been used, or if the last move used was Assist, Bestow, Chatter, Circle Throw, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Me First, Metronome, Mimic, Mirror Coat, Mirror Move, Nature Power, Protect, Rage Powder, Sketch, Sleep Talk, Snatch, Struggle, Switcheroo, Thief, Transform, or Trick.",
|
||||
onHit(pokemon) {
|
||||
const noCopycat = [
|
||||
'assist', 'bestow', 'chatter', 'circlethrow', 'copycat', 'counter', 'covet', 'destinybond', 'detect', 'dragontail', 'endure', 'feint', 'focuspunch', 'followme', 'helpinghand', 'mefirst', 'metronome', 'mimic', 'mirrorcoat', 'mirrormove', 'naturepower', 'protect', 'ragepowder', 'sketch', 'sleeptalk', 'snatch', 'struggle', 'switcheroo', 'thief', 'transform', 'trick',
|
||||
|
|
@ -201,7 +170,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
covet: {
|
||||
inherit: true,
|
||||
desc: "If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail, or if the target is a Giratina holding a Griseous Orb, an Arceus holding a Plate, or a Genesect holding a Drive. Items lost to this move cannot be regained with Recycle or the Harvest Ability.",
|
||||
pp: 40,
|
||||
},
|
||||
crabhammer: {
|
||||
|
|
@ -210,8 +178,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
defog: {
|
||||
inherit: true,
|
||||
desc: "Lowers the target's evasiveness by 1 stage. If this move is successful and whether or not the target's evasiveness was affected, the effects of Reflect, Light Screen, Safeguard, Mist, Spikes, Toxic Spikes, and Stealth Rock end for the target's side. Ignores a target's substitute, although a substitute will still block the lowering of evasiveness.",
|
||||
shortDesc: "-1 evasion; clears target side's hazards/screens.",
|
||||
onHit(pokemon) {
|
||||
if (!pokemon.volatiles['substitute']) this.boost({evasion: -1});
|
||||
const sideConditions = ['reflect', 'lightscreen', 'safeguard', 'mist', 'spikes', 'toxicspikes', 'stealthrock'];
|
||||
|
|
@ -222,10 +188,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
detect: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and doubles each time this move is successfully used. X resets to 1 if this move fails or if the user's last move used is not Detect, Endure, Protect, Quick Guard, or Wide Guard. Fails if the user moves last this turn.",
|
||||
},
|
||||
dracometeor: {
|
||||
inherit: true,
|
||||
basePower: 140,
|
||||
|
|
@ -234,10 +196,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
basePower: 90,
|
||||
},
|
||||
dragonrush: {
|
||||
inherit: true,
|
||||
desc: "Has a 20% chance to flinch the target.",
|
||||
},
|
||||
drainpunch: {
|
||||
inherit: true,
|
||||
flags: {contact: 1, protect: 1, mirror: 1, punch: 1},
|
||||
|
|
@ -258,31 +216,17 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
this.debug(`${bp} bp`);
|
||||
return bp;
|
||||
},
|
||||
desc: "The power of this move depends on (user's current Speed / target's current Speed), rounded down. Power is equal to 150 if the result is 4 or more, 120 if 3, 80 if 2, 60 if 1, 40 if less than 1. If the target's current Speed is 0, it is treated as 1 instead.",
|
||||
},
|
||||
endure: {
|
||||
inherit: true,
|
||||
desc: "The user will survive attacks made by other Pokemon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and doubles each time this move is successfully used. X resets to 1 if this move fails or if the user's last move used is not Detect, Endure, Protect, Quick Guard, or Wide Guard. Fails if the user moves last this turn.",
|
||||
},
|
||||
energyball: {
|
||||
inherit: true,
|
||||
basePower: 80,
|
||||
},
|
||||
entrainment: {
|
||||
inherit: true,
|
||||
desc: "Causes the target's Ability to become the same as the user's. Fails if the target's Ability is Multitype, Truant, or the same Ability as the user, or if the user's Ability is Flower Gift, Forecast, Illusion, Imposter, Multitype, Trace, or Zen Mode.",
|
||||
},
|
||||
extrasensory: {
|
||||
inherit: true,
|
||||
pp: 30,
|
||||
},
|
||||
facade: {
|
||||
inherit: true,
|
||||
desc: "Power doubles if the user is burned, paralyzed, or poisoned.",
|
||||
},
|
||||
feint: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, it breaks through the target's Detect or Protect for this turn, allowing other Pokemon to attack the target normally. If the target is an opponent and its side is protected by Quick Guard or Wide Guard, that protection is also broken for this turn and other Pokemon may attack the opponent's side normally.",
|
||||
flags: {},
|
||||
},
|
||||
finalgambit: {
|
||||
|
|
@ -304,18 +248,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
return 50;
|
||||
},
|
||||
},
|
||||
firespin: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/16 of its maximum HP (1/8 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
flamethrower: {
|
||||
inherit: true,
|
||||
basePower: 95,
|
||||
},
|
||||
fly: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.",
|
||||
},
|
||||
followme: {
|
||||
inherit: true,
|
||||
priority: 3,
|
||||
|
|
@ -390,17 +326,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
return 50;
|
||||
},
|
||||
},
|
||||
gravity: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the evasiveness of all active Pokemon is multiplied by 0.6. At the time of use, Bounce, Fly, Magnet Rise, Sky Drop, and Telekinesis end immediately for all active Pokemon. During the effect, Bounce, Fly, High Jump Kick, Jump Kick, Magnet Rise, Sky Drop, Splash, and Telekinesis are prevented from being used by all active Pokemon. Ground-type attacks, Spikes, Toxic Spikes, and the Arena Trap Ability can affect Flying types or Pokemon with the Levitate Ability. Fails if this move is already in effect.",
|
||||
},
|
||||
growl: {
|
||||
inherit: true,
|
||||
flags: {protect: 1, reflectable: 1, mirror: 1, sound: 1},
|
||||
},
|
||||
growth: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's Attack and Special Attack by 1 stage. If the weather is Sunny Day, this move raises the user's Attack and Special Attack by 2 stages.",
|
||||
pp: 40,
|
||||
},
|
||||
gunkshot: {
|
||||
|
|
@ -415,11 +346,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
this.debug(`${power} bp`);
|
||||
return power;
|
||||
},
|
||||
desc: "Power is equal to (25 * target's current Speed / user's current Speed) + 1, rounded down, but not more than 150. If the user's current Speed is 0, it is treated as 1 instead.",
|
||||
},
|
||||
healbell: {
|
||||
inherit: true,
|
||||
desc: "Every Pokemon in the user's party is cured of its major status condition. Active Pokemon with the Soundproof Ability are also cured.",
|
||||
flags: {snatch: 1, sound: 1},
|
||||
onHit(target, source) {
|
||||
this.add('-activate', source, 'move: Heal Bell');
|
||||
|
|
@ -430,14 +359,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
healpulse: {
|
||||
inherit: true,
|
||||
desc: "The target restores 1/2 of its maximum HP, rounded half up.",
|
||||
heal: [1, 2],
|
||||
onHit() {},
|
||||
},
|
||||
heatcrash: {
|
||||
inherit: true,
|
||||
desc: "The power of this move depends on (user's weight / target's weight), rounded down. Power is equal to 120 if the result is 5 or more, 100 if 4, 80 if 3, 60 if 2, and 40 if 1 or less.",
|
||||
},
|
||||
heatwave: {
|
||||
inherit: true,
|
||||
basePower: 100,
|
||||
|
|
@ -452,8 +376,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
basePowerCallback(pokemon) {
|
||||
return pokemon.hpPower || 70;
|
||||
},
|
||||
desc: "This move's type and power depend on the user's individual values (IVs). Power varies between 30 and 70, and type can be any but Normal.",
|
||||
shortDesc: "Varies in power and type based on the user's IVs.",
|
||||
},
|
||||
hiddenpowerbug: {
|
||||
inherit: true,
|
||||
|
|
@ -525,7 +447,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
hurricane: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to confuse the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Rain Dance, this move does not check accuracy. If the weather is Sunny Day, this move's accuracy is 50%.",
|
||||
basePower: 120,
|
||||
},
|
||||
hydropump: {
|
||||
|
|
@ -543,8 +464,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
incinerate: {
|
||||
inherit: true,
|
||||
basePower: 30,
|
||||
desc: "The target loses its held item if it is a Berry. This move cannot cause Pokemon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.",
|
||||
shortDesc: "Destroys the foe(s) Berry.",
|
||||
onHit(pokemon, source) {
|
||||
const item = pokemon.getItem();
|
||||
if (item.isBerry && pokemon.takeItem(source)) {
|
||||
|
|
@ -552,15 +471,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
ingrain: {
|
||||
inherit: true,
|
||||
desc: "The user has 1/16 of its maximum HP restored at the end of each turn, but it is prevented from switching out and other Pokemon cannot force the user to switch out. The user can still switch out if it uses Baton Pass, U-turn, or Volt Switch. If the user leaves the field using Baton Pass, the replacement will remain trapped and still receive the healing effect. During the effect, the user can be hit normally by Ground-type attacks and be affected by Spikes and Toxic Spikes, even if the user is a Flying type or has the Levitate Ability.",
|
||||
},
|
||||
knockoff: {
|
||||
inherit: true,
|
||||
basePower: 20,
|
||||
desc: "If the user has not fainted, the target loses its held item. This move cannot cause Pokemon with the Sticky Hold Ability to lose their held item, or force a Giratina, an Arceus, or a Genesect to lose their Griseous Orb, Plate, or Drive, respectively. Items lost to this move cannot be regained with Recycle or the Harvest Ability.",
|
||||
shortDesc: "Removes the target's held item.",
|
||||
onBasePower() {},
|
||||
},
|
||||
leafstorm: {
|
||||
|
|
@ -608,26 +521,16 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
basePower: 60,
|
||||
},
|
||||
magiccoat: {
|
||||
inherit: true,
|
||||
desc: "Until the end of the turn, the user is unaffected by certain non-damaging moves directed at it and will instead use such moves against the original user. Moves reflected in this way are unable to be reflected again by this or the Magic Bounce Ability's effect. Spikes, Stealth Rock, and Toxic Spikes can only be reflected once per side, by the leftmost Pokemon under this or the Magic Bounce Ability's effect. The Lightning Rod and Storm Drain Abilities redirect their respective moves before this move takes effect.",
|
||||
},
|
||||
magicroom: {
|
||||
inherit: true,
|
||||
priority: -7,
|
||||
},
|
||||
magmastorm: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns; seven turns if the user is holding Grip Claw. Causes damage to the target equal to 1/16 of its maximum HP (1/8 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin. This effect is not stackable or reset by using this or another partial-trapping move.",
|
||||
basePower: 120,
|
||||
},
|
||||
magnetrise: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain or Smack Down.",
|
||||
},
|
||||
meanlook: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, U-turn, or Volt Switch. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field.",
|
||||
flags: {protect: 1, reflectable: 1, mirror: 1},
|
||||
},
|
||||
megadrain: {
|
||||
|
|
@ -643,13 +546,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
accuracy: 85,
|
||||
basePower: 100,
|
||||
},
|
||||
metronome: {
|
||||
inherit: true,
|
||||
desc: "A random move is selected for use, other than After You, Assist, Bestow, Chatter, Copycat, Counter, Covet, Destiny Bond, Detect, Endure, Feint, Focus Punch, Follow Me, Freeze Shock, Helping Hand, Ice Burn, Me First, Metronome, Mimic, Mirror Coat, Mirror Move, Nature Power, Protect, Quash, Quick Guard, Rage Powder, Relic Song, Secret Sword, Sketch, Sleep Talk, Snarl, Snatch, Snore, Struggle, Switcheroo, Techno Blast, Thief, Transform, Trick, V-create, or Wide Guard.",
|
||||
},
|
||||
minimize: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's evasiveness by 2 stages. Whether or not the user's evasiveness was changed, Stomp and Steamroller will have their damage doubled if used against the user while it is active.",
|
||||
pp: 20,
|
||||
condition: {
|
||||
noCopy: true,
|
||||
|
|
@ -662,20 +560,13 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
moonlight: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP if no weather conditions are in effect, 2/3 of its maximum HP if the weather is Sunny Day, and 1/4 of its maximum HP if the weather is Hail, Rain Dance, or Sandstorm, all rounded half down.",
|
||||
type: "Normal",
|
||||
},
|
||||
morningsun: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP if no weather conditions are in effect, 2/3 of its maximum HP if the weather is Sunny Day, and 1/4 of its maximum HP if the weather is Hail, Rain Dance, or Sandstorm, all rounded half down.",
|
||||
},
|
||||
mudsport: {
|
||||
num: 300,
|
||||
accuracy: true,
|
||||
basePower: 0,
|
||||
category: "Status",
|
||||
desc: "While the user is active, all Electric-type attacks used by any active Pokemon have their power multiplied by 0.33. Fails if this effect is already active for any Pokemon.",
|
||||
shortDesc: "Weakens Electric-type attacks to 1/3 their power.",
|
||||
name: "Mud Sport",
|
||||
pp: 15,
|
||||
priority: 0,
|
||||
|
|
@ -705,8 +596,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
naturepower: {
|
||||
inherit: true,
|
||||
desc: "This move calls another move for use based on the battle terrain. Earthquake on the regular Wi-Fi terrain.",
|
||||
shortDesc: "Attack changes based on terrain. (Earthquake)",
|
||||
onTryHit() {},
|
||||
onHit(pokemon) {
|
||||
this.useMove('earthquake', pokemon);
|
||||
|
|
@ -728,8 +617,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
poisonfang: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to badly poison the target.",
|
||||
shortDesc: "30% chance to badly poison the target.",
|
||||
secondary: {
|
||||
chance: 30,
|
||||
status: 'tox',
|
||||
|
|
@ -747,10 +634,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
basePower: 70,
|
||||
},
|
||||
protect: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and doubles each time this move is successfully used. X resets to 1 if this move fails or if the user's last move used is not Detect, Endure, Protect, Quick Guard, or Wide Guard. Fails if the user moves last this turn.",
|
||||
},
|
||||
psychup: {
|
||||
inherit: true,
|
||||
onHit(target, source) {
|
||||
|
|
@ -769,13 +652,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
accuracy: 80,
|
||||
},
|
||||
pursuit: {
|
||||
inherit: true,
|
||||
desc: "If an adjacent opposing Pokemon switches out this turn, this move hits that Pokemon before it leaves the field, even if it was not the original target. If the user moves after an opponent using U-turn or Volt Switch, but not Baton Pass, it will hit that opponent before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokemon does not become active until the end of the turn.",
|
||||
},
|
||||
quickguard: {
|
||||
inherit: true,
|
||||
desc: "The user and its party members are protected from attacks with original priority greater than 0 made by other Pokemon, including allies, during this turn. This attack has a 1/X chance of being successful, where X starts at 1 and doubles each time this move is successfully used. X resets to 1 if this attack fails or if the user's last used move is not Detect, Endure, Protect, Quick Guard, or Wide Guard. If X is 256 or more, this move has a 1/(2^32) chance of being successful. Fails if the user moves last this turn or if this move is already in effect for the user's side.",
|
||||
stallingMove: true,
|
||||
onTryHitSide(side, source) {
|
||||
return this.queue.willAct() && this.runEvent('StallMove', source);
|
||||
|
|
@ -855,26 +733,16 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
basePower: 50,
|
||||
pp: 10,
|
||||
},
|
||||
roleplay: {
|
||||
inherit: true,
|
||||
desc: "The user's Ability changes to match the target's Ability. Fails if the user's Ability is Multitype or already matches the target, or if the target's Ability is Flower Gift, Forecast, Illusion, Imposter, Multitype, Trace, Wonder Guard, or Zen Mode.",
|
||||
},
|
||||
round: {
|
||||
inherit: true,
|
||||
flags: {protect: 1, mirror: 1, sound: 1},
|
||||
},
|
||||
sandtomb: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns; seven turns if the user is holding Grip Claw. Causes damage to the target equal to 1/16 of its maximum HP (1/8 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin. This effect is not stackable or reset by using this or another partial-trapping move.",
|
||||
},
|
||||
sacredsword: {
|
||||
inherit: true,
|
||||
pp: 20,
|
||||
},
|
||||
scald: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to burn the target.",
|
||||
shortDesc: "30% chance to burn the target.",
|
||||
thawsTarget: false,
|
||||
},
|
||||
screech: {
|
||||
|
|
@ -883,8 +751,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
secretpower: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Lowers accuracy by 1 stage on the regular Wi-Fi terrain. The secondary effect chance is not affected by the Serene Grace Ability.",
|
||||
shortDesc: "Effect varies with terrain. (30% chance acc -1)",
|
||||
condition: {
|
||||
duration: 1,
|
||||
onAfterMoveSecondarySelf(source, target, move) {
|
||||
|
|
@ -895,21 +761,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
shadowforce: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, it breaks through the target's Detect or Protect for this turn, allowing other Pokemon to attack the target normally. If the target is an opponent and its side is protected by Quick Guard or Wide Guard, that protection is also broken for this turn and other Pokemon may attack the opponent's side normally. This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks. If the user is holding a Power Herb, the move completes in one turn.",
|
||||
},
|
||||
simplebeam: {
|
||||
inherit: true,
|
||||
desc: "Causes the target's Ability to become Simple. Fails if the target's Ability is Multitype, Simple, or Truant.",
|
||||
},
|
||||
sing: {
|
||||
inherit: true,
|
||||
flags: {protect: 1, reflectable: 1, mirror: 1, sound: 1},
|
||||
},
|
||||
skillswap: {
|
||||
inherit: true,
|
||||
desc: "The user swaps its Ability with the target's Ability. Fails if either the user or the target's Ability is Illusion, Multitype, or Wonder Guard, or if both have the same Ability.",
|
||||
onHit(target, source) {
|
||||
const targetAbility = target.ability;
|
||||
const sourceAbility = source.ability;
|
||||
|
|
@ -928,7 +785,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
skydrop: {
|
||||
inherit: true,
|
||||
desc: "This attack takes the target into the air with the user on the first turn and executes on the second. On the first turn, the user and the target avoid all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thunder, and Twister. The user and the target cannot make a move between turns, but the target can select a move to use. This move cannot damage Flying-type Pokemon. Fails on the first turn if the target is an ally, if the target has a substitute, or if the target is using Bounce, Dig, Dive, Fly, Shadow Force, or Sky Drop. If the effect of Gravity ends this effect before the second turn, both the user and the target return to the ground, but the target will otherwise remain under this effect until the user leaves the field or successfully executes the second turn of any two-turn move.",
|
||||
onTryHit(target, source, move) {
|
||||
if (target.fainted) return false;
|
||||
if (source.removeVolatile(move.id)) {
|
||||
|
|
@ -954,10 +810,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
onTryHit() {},
|
||||
},
|
||||
sleeptalk: {
|
||||
inherit: true,
|
||||
desc: "One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Bide, Chatter, Copycat, Focus Punch, Me First, Metronome, Mimic, Mirror Move, Nature Power, Sketch, Sleep Talk, Struggle, Uproar, or any two-turn move.",
|
||||
},
|
||||
smellingsalts: {
|
||||
inherit: true,
|
||||
basePower: 60,
|
||||
|
|
@ -977,7 +829,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
soak: {
|
||||
inherit: true,
|
||||
desc: "Causes the target to become a Water type. Fails if the target is an Arceus.",
|
||||
onHit(target) {
|
||||
if (!target.setType('Water')) {
|
||||
// Soak should animate even when it fails.
|
||||
|
|
@ -988,42 +839,16 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
this.add('-start', target, 'typechange', 'Water');
|
||||
},
|
||||
},
|
||||
solarbeam: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. Power is halved if the weather is Hail, Rain Dance, or Sandstorm. If the user is holding a Power Herb or the weather is Sunny Day, the move completes in one turn.",
|
||||
},
|
||||
spiderweb: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, U-turn, or Volt Switch. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field.",
|
||||
},
|
||||
spikes: {
|
||||
inherit: true,
|
||||
desc: "Sets up a hazard on the opposing side of the field, damaging each opposing Pokemon that switches in, unless it is a Flying-type Pokemon or has the Levitate Ability. Can be used up to three times before failing. Opponents lose 1/8 of their maximum HP with one layer, 1/6 of their maximum HP with two layers, and 1/4 of their maximum HP with three layers, all rounded down. Can be removed from the opposing side if any opposing Pokemon uses Rapid Spin successfully, or is hit by Defog.",
|
||||
},
|
||||
spore: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
},
|
||||
stealthrock: {
|
||||
inherit: true,
|
||||
desc: "Sets up a hazard on the opposing side of the field, damaging each opposing Pokemon that switches in. Fails if the effect is already active on the opposing side. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any opposing Pokemon uses Rapid Spin successfully, or is hit by Defog.",
|
||||
},
|
||||
steamroller: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to flinch the target. Damage doubles if the target has used Minimize while active.",
|
||||
},
|
||||
stomp: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to flinch the target. Damage doubles if the target has used Minimize while active.",
|
||||
},
|
||||
stormthrow: {
|
||||
inherit: true,
|
||||
basePower: 40,
|
||||
},
|
||||
stringshot: {
|
||||
inherit: true,
|
||||
desc: "Lowers the target's Speed by 1 stage.",
|
||||
shortDesc: "Lowers the foe(s) Speed by 1.",
|
||||
boosts: {
|
||||
spe: -1,
|
||||
},
|
||||
|
|
@ -1038,7 +863,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
substitute: {
|
||||
inherit: true,
|
||||
desc: "The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, or if the user switches out or faints. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokemon and shields the user from status effects and stat stage changes caused by other Pokemon. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.",
|
||||
condition: {
|
||||
onStart(target) {
|
||||
this.add('-start', target, 'Substitute');
|
||||
|
|
@ -1103,16 +927,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
sweetscent: {
|
||||
inherit: true,
|
||||
desc: "Lowers the target's evasiveness by 1 stage.",
|
||||
shortDesc: "Lowers the foe(s) evasiveness by 1.",
|
||||
boosts: {
|
||||
evasion: -1,
|
||||
},
|
||||
},
|
||||
switcheroo: {
|
||||
inherit: true,
|
||||
desc: "The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail, if neither is holding an item, or if the user is trying to give or take a Griseous Orb, a Plate, or a Drive to or from a Giratina, an Arceus, or a Genesect, respectively. The target is immune to this move if it has the Sticky Hold Ability.",
|
||||
},
|
||||
swordsdance: {
|
||||
inherit: true,
|
||||
pp: 30,
|
||||
|
|
@ -1122,54 +940,27 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
basePower: 70,
|
||||
pp: 15,
|
||||
},
|
||||
synthesis: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP if no weather conditions are in effect, 2/3 of its maximum HP if the weather is Sunny Day, and 1/4 of its maximum HP if the weather is Hail, Rain Dance, or Sandstorm, all rounded half down.",
|
||||
},
|
||||
tailwind: {
|
||||
inherit: true,
|
||||
pp: 30,
|
||||
},
|
||||
taunt: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from using non-damaging moves for its next three turns.",
|
||||
},
|
||||
technoblast: {
|
||||
inherit: true,
|
||||
basePower: 85,
|
||||
},
|
||||
telekinesis: {
|
||||
inherit: true,
|
||||
desc: "For 3 turns, the target cannot avoid any attacks made against it, other than OHKO moves, as long as it remains active. During the effect, the target is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, and the Arena Trap Ability as long as it remains active. If the target uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, and Iron Ball override this move if the target is under any of their effects. Fails if the target is already under this effect or the effects of Ingrain or Smack Down. The target is immune to this move on use if its species is Diglett or Dugtrio.",
|
||||
},
|
||||
thief: {
|
||||
inherit: true,
|
||||
desc: "If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail, or if the target is a Giratina holding a Griseous Orb, an Arceus holding a Plate, or a Genesect holding a Drive. Items lost to this move cannot be regained with Recycle or the Harvest Ability.",
|
||||
basePower: 40,
|
||||
pp: 10,
|
||||
},
|
||||
thunder: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Rain Dance, this move does not check accuracy. If the weather is Sunny Day, this move's accuracy is 50%.",
|
||||
basePower: 120,
|
||||
},
|
||||
thunderbolt: {
|
||||
inherit: true,
|
||||
basePower: 95,
|
||||
},
|
||||
toxic: {
|
||||
inherit: true,
|
||||
desc: "Badly poisons the target.",
|
||||
shortDesc: "Badly poisons the target.",
|
||||
},
|
||||
toxicspikes: {
|
||||
inherit: true,
|
||||
desc: "Sets up a hazard on the opposing side of the field, poisoning each opposing Pokemon that switches in, unless it is a Flying-type Pokemon or has the Levitate Ability. Can be used up to two times before failing. Opposing Pokemon become poisoned with one layer and badly poisoned with two layers. Can be removed from the opposing side if any opposing Pokemon uses Rapid Spin successfully, is hit by Defog, or a grounded Poison-type Pokemon switches in. Safeguard prevents the opposing party from being poisoned on switch-in, but a substitute does not.",
|
||||
},
|
||||
trick: {
|
||||
inherit: true,
|
||||
desc: "The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail, if neither is holding an item, or if the user is trying to give or take a Griseous Orb, a Plate, or a Drive to or from a Giratina, an Arceus, or a Genesect, respectively. The target is immune to this move if it has the Sticky Hold Ability.",
|
||||
},
|
||||
uproar: {
|
||||
inherit: true,
|
||||
flags: {protect: 1, mirror: 1, sound: 1},
|
||||
|
|
@ -1199,8 +990,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
accuracy: true,
|
||||
basePower: 0,
|
||||
category: "Status",
|
||||
desc: "While the user is active, all Fire-type attacks used by any active Pokemon have their power multiplied by 0.33. Fails if this effect is already active for any Pokemon.",
|
||||
shortDesc: "Weakens Fire-type attacks to 1/3 their power.",
|
||||
name: "Water Sport",
|
||||
pp: 15,
|
||||
priority: 0,
|
||||
|
|
@ -1224,14 +1013,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
target: "all",
|
||||
type: "Water",
|
||||
},
|
||||
weatherball: {
|
||||
inherit: true,
|
||||
desc: "Power doubles if a weather condition is active, and this move's type changes to match. Ice type during Hail, Water type during Rain Dance, Rock type during Sandstorm, and Fire type during Sunny Day.",
|
||||
},
|
||||
whirlpool: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/16 of its maximum HP (1/8 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
whirlwind: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
|
|
@ -1239,7 +1020,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
wideguard: {
|
||||
inherit: true,
|
||||
desc: "The user and its party members are protected from damaging attacks made by other Pokemon, including allies, during this turn that target all adjacent foes or all adjacent Pokemon. This attack has a 1/X chance of being successful, where X starts at 1 and doubles each time this move is successfully used. X resets to 1 if this attack fails or if the user's last used move is not Detect, Endure, Protect, Quick Guard, or Wide Guard. If X is 256 or more, this move has a 1/(2^32) chance of being successful. Fails if the user moves last this turn or if this move is already in effect for the user's side.",
|
||||
stallingMove: true,
|
||||
onTryHitSide(side, source) {
|
||||
return this.queue.willAct() && this.runEvent('StallMove', source);
|
||||
|
|
@ -1256,12 +1036,4 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
priority: -7,
|
||||
},
|
||||
worryseed: {
|
||||
inherit: true,
|
||||
desc: "Causes the target's Ability to become Insomnia. Fails if the target's Ability is Insomnia, Multitype, or Truant.",
|
||||
},
|
||||
wrap: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/16 of its maximum HP (1/8 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
export const Abilities: {[k: string]: ModdedAbilityData} = {
|
||||
aerilate: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon's Normal-type moves become Flying-type moves and have their power multiplied by 1.3. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.",
|
||||
shortDesc: "This Pokemon's Normal-type moves become Flying type and have 1.3x power.",
|
||||
onBasePower(basePower, pokemon, target, move) {
|
||||
if (move.aerilateBoosted) return this.chainModify([0x14CD, 0x1000]);
|
||||
},
|
||||
|
|
@ -16,32 +14,13 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
anticipation: {
|
||||
inherit: true,
|
||||
desc: "On switch-in, this Pokemon is alerted if any opposing Pokemon has an attack that is super effective against this Pokemon, or an OHKO move. Counter, Metal Burst, and Mirror Coat count as attacking moves of their respective types, Hidden Power counts as its determined type, and Judgment, Natural Gift, Techno Blast, and Weather Ball are considered Normal-type moves.",
|
||||
},
|
||||
contrary: {
|
||||
inherit: true,
|
||||
desc: "If this Pokemon has a stat stage raised it is lowered instead, and vice versa.",
|
||||
},
|
||||
damp: {
|
||||
inherit: true,
|
||||
desc: "While this Pokemon is active, Explosion, Self-Destruct, and the Aftermath Ability are prevented from having an effect.",
|
||||
shortDesc: "Prevents Explosion/Self-Destruct/Aftermath while this Pokemon is active.",
|
||||
},
|
||||
galewings: {
|
||||
inherit: true,
|
||||
shortDesc: "This Pokemon's Flying-type moves have their priority increased by 1.",
|
||||
onModifyPriority(priority, pokemon, target, move) {
|
||||
if (move && move.type === 'Flying') return priority + 1;
|
||||
},
|
||||
rating: 4,
|
||||
},
|
||||
infiltrator: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon's moves ignore substitutes and the opposing side's Reflect, Light Screen, Safeguard, and Mist.",
|
||||
shortDesc: "Moves ignore substitutes and the foe's Reflect, Light Screen, Safeguard, and Mist.",
|
||||
},
|
||||
ironbarbs: {
|
||||
inherit: true,
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
|
|
@ -67,18 +46,8 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
if (effect.effectType !== 'Move') return false;
|
||||
},
|
||||
},
|
||||
multitype: {
|
||||
inherit: true,
|
||||
shortDesc: "If this Pokemon is an Arceus, its type changes to match its held Plate.",
|
||||
},
|
||||
mummy: {
|
||||
inherit: true,
|
||||
desc: "Pokemon making contact with this Pokemon have their Ability changed to Mummy. Does not affect the Multitype or Stance Change Abilities.",
|
||||
},
|
||||
normalize: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon's moves are changed to be Normal type. This effect comes before other effects that change a move's type.",
|
||||
shortDesc: "This Pokemon's moves are changed to be Normal type.",
|
||||
onModifyMovePriority: 1,
|
||||
onModifyMove(move) {
|
||||
if (move.id !== 'struggle' && this.dex.getMove(move.id).type !== 'Normal') {
|
||||
|
|
@ -89,8 +58,6 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
parentalbond: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon's damaging moves become multi-hit moves that hit twice. The second hit has its damage halved. Does not affect multi-hit moves or moves that have multiple targets.",
|
||||
shortDesc: "This Pokemon's damaging moves hit twice. The second hit has its damage halved.",
|
||||
onBasePower(basePower, pokemon, target, move) {
|
||||
if (move.multihitType === 'parentalbond' && move.hit > 1) return this.chainModify(0.5);
|
||||
},
|
||||
|
|
@ -98,21 +65,13 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
pixilate: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon's Normal-type moves become Fairy-type moves and have their power multiplied by 1.3. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.",
|
||||
shortDesc: "This Pokemon's Normal-type moves become Fairy type and have 1.3x power.",
|
||||
onBasePower(basePower, pokemon, target, move) {
|
||||
if (move.pixilateBoosted) return this.chainModify([0x14CD, 0x1000]);
|
||||
},
|
||||
rating: 4.5,
|
||||
},
|
||||
prankster: {
|
||||
inherit: true,
|
||||
shortDesc: "This Pokemon's non-damaging moves have their priority increased by 1.",
|
||||
},
|
||||
refrigerate: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon's Normal-type moves become Ice-type moves and have their power multiplied by 1.3. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.",
|
||||
shortDesc: "This Pokemon's Normal-type moves become Ice type and have 1.3x power.",
|
||||
onBasePower(basePower, pokemon, target, move) {
|
||||
if (move.refrigerateBoosted) return this.chainModify([0x14CD, 0x1000]);
|
||||
},
|
||||
|
|
@ -126,18 +85,12 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
simple: {
|
||||
inherit: true,
|
||||
desc: "When this Pokemon's stat stages are raised or lowered, the effect is doubled instead.",
|
||||
},
|
||||
stancechange: {
|
||||
inherit: true,
|
||||
onBeforeMovePriority: 11,
|
||||
},
|
||||
weakarmor: {
|
||||
inherit: true,
|
||||
desc: "If a physical attack hits this Pokemon, its Defense is lowered by 1 stage and its Speed is raised by 1 stage.",
|
||||
shortDesc: "If a physical attack hits this Pokemon, Defense is lowered by 1, Speed is raised by 1.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (move.category === 'Physical') {
|
||||
this.boost({def: -1, spe: 1}, target, target);
|
||||
|
|
@ -145,8 +98,4 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
rating: 0.5,
|
||||
},
|
||||
zenmode: {
|
||||
inherit: true,
|
||||
desc: "If this Pokemon is a Darmanitan, it changes to Zen Mode if it has 1/2 or less of its maximum HP at the end of a turn. If Darmanitan's HP is above 1/2 of its maximum HP at the end of a turn, it changes back to Standard Mode. If Darmanitan loses this Ability while in Zen Mode, it reverts to Standard Mode immediately.",
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,64 +1,21 @@
|
|||
export const Moves: {[k: string]: ModdedMoveData} = {
|
||||
allyswitch: {
|
||||
inherit: true,
|
||||
desc: "The user swaps positions with its ally on the opposite side of the field. Fails if there is no Pokemon at that position, if the user is the only Pokemon on its side, or if the user is in the middle.",
|
||||
shortDesc: "Switches position with the ally on the far side.",
|
||||
priority: 1,
|
||||
},
|
||||
assist: {
|
||||
inherit: true,
|
||||
desc: "A random move among those known by the user's party members is selected for use. Does not select Assist, Belch, Bestow, Bounce, Celebrate, Chatter, Circle Throw, Copycat, Counter, Covet, Destiny Bond, Detect, Dig, Dive, Dragon Tail, Endure, Feint, Fly, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Mat Block, Me First, Metronome, Mimic, Mirror Coat, Mirror Move, Nature Power, Phantom Force, Protect, Rage Powder, Roar, Shadow Force, Sketch, Sky Drop, Sleep Talk, Snatch, Spiky Shield, Struggle, Switcheroo, Thief, Transform, Trick, or Whirlwind.",
|
||||
},
|
||||
bestow: {
|
||||
inherit: true,
|
||||
desc: "The target receives the user's held item. Fails if the user has no item or is holding a Mail, if the target is already holding an item, if the user is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Pokemon that can Mega Evolve holding the Mega Stone for its species, or if the target is one of those Pokemon and the user is holding the respective item.",
|
||||
},
|
||||
brickbreak: {
|
||||
inherit: true,
|
||||
desc: "If this attack does not miss, the effects of Reflect and Light Screen end for the target's side of the field before damage is calculated.",
|
||||
},
|
||||
camouflage: {
|
||||
inherit: true,
|
||||
desc: "The user's type changes based on the battle terrain. Normal type on the regular Wi-Fi terrain, Electric type during Electric Terrain, Fairy type during Misty Terrain, and Grass type during Grassy Terrain. Fails if the user's type cannot be changed or if the user is already purely that type.",
|
||||
},
|
||||
copycat: {
|
||||
inherit: true,
|
||||
desc: "The user uses the last move used by any Pokemon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Belch, Bestow, Celebrate, Chatter, Circle Throw, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Mat Block, Me First, Metronome, Mimic, Mirror Coat, Mirror Move, Nature Power, Protect, Rage Powder, Roar, Sketch, Sleep Talk, Snatch, Spiky Shield, Struggle, Switcheroo, Thief, Transform, Trick, or Whirlwind.",
|
||||
},
|
||||
counter: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the last opposing Pokemon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals damage with a power of 1 instead. If that opposing Pokemon's position is no longer in use, the damage is done to a random opposing Pokemon in range. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokemon's physical attack this turn.",
|
||||
},
|
||||
covet: {
|
||||
inherit: true,
|
||||
desc: "If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, or a Pokemon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.",
|
||||
},
|
||||
darkvoid: {
|
||||
inherit: true,
|
||||
desc: "Causes the target to fall asleep.",
|
||||
shortDesc: "Causes the foe(s) to fall asleep.",
|
||||
accuracy: 80,
|
||||
onTryMove() {},
|
||||
},
|
||||
defog: {
|
||||
inherit: true,
|
||||
desc: "Lowers the target's evasiveness by 1 stage. If this move is successful and whether or not the target's evasiveness was affected, the effects of Reflect, Light Screen, Safeguard, Mist, Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the target's side, and the effects of Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the user's side. Ignores a target's substitute, although a substitute will still block the lowering of evasiveness.",
|
||||
},
|
||||
destinybond: {
|
||||
inherit: true,
|
||||
desc: "Until the user's next turn, if an opposing Pokemon's attack knocks the user out, that Pokemon faints as well, unless the attack was Doom Desire or Future Sight.",
|
||||
onPrepareHit(pokemon) {
|
||||
pokemon.removeVolatile('destinybond');
|
||||
},
|
||||
},
|
||||
detect: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
},
|
||||
diamondstorm: {
|
||||
inherit: true,
|
||||
desc: "Has a 50% chance to raise the user's Defense by 1 stage.",
|
||||
shortDesc: "50% chance to raise user's Def by 1 for each hit.",
|
||||
secondary: {
|
||||
chance: 50,
|
||||
self: {
|
||||
|
|
@ -68,13 +25,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
disable: {
|
||||
inherit: true,
|
||||
desc: "For 4 turns, the target's last move used becomes disabled. Fails if one of the target's moves is already disabled, if the target has not made a move, or if the target no longer knows the move.",
|
||||
},
|
||||
encore: {
|
||||
inherit: true,
|
||||
desc: "For 3 turns, the target is forced to repeat its last move used. If the affected move runs out of PP, the effect ends. Fails if the target is already under this effect, if it has not made a move, if the move has 0 PP, or if the move is Encore, Mimic, Mirror Move, Sketch, Struggle, or Transform.",
|
||||
condition: {
|
||||
duration: 3,
|
||||
onStart(target) {
|
||||
|
|
@ -119,42 +71,19 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
endure: {
|
||||
inherit: true,
|
||||
desc: "The user will survive attacks made by other Pokemon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
},
|
||||
entrainment: {
|
||||
inherit: true,
|
||||
desc: "Causes the target's Ability to become the same as the user's. Fails if the target's Ability is Multitype, Stance Change, Truant, or the same Ability as the user, or if the user's Ability is Flower Gift, Forecast, Illusion, Imposter, Multitype, Stance Change, Trace, or Zen Mode.",
|
||||
},
|
||||
feint: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, it breaks through the target's Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokemon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokemon may attack the target's side normally.",
|
||||
},
|
||||
fellstinger: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's Attack by 2 stages if this move knocks out the target.",
|
||||
shortDesc: "Raises user's Attack by 2 if this KOes the target.",
|
||||
basePower: 30,
|
||||
onAfterMoveSecondarySelf(pokemon, target, move) {
|
||||
if (!target || target.fainted || target.hp <= 0) this.boost({atk: 2}, pokemon, pokemon, move);
|
||||
},
|
||||
},
|
||||
flameburst: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, each ally adjacent to the target loses 1/16 of its maximum HP, rounded down, unless it has the Magic Guard Ability.",
|
||||
},
|
||||
flyingpress: {
|
||||
inherit: true,
|
||||
basePower: 80,
|
||||
},
|
||||
followme: {
|
||||
inherit: true,
|
||||
desc: "Until the end of the turn, all single-target attacks from the opposing side are redirected to the user if they are in range. Such attacks are redirected to the user before they can be reflected by Magic Coat or the Magic Bounce Ability, or drawn in by the Lightning Rod or Storm Drain Abilities. Fails if it is not a Double or Triple Battle. This effect is ignored while the user is under the effect of Sky Drop.",
|
||||
},
|
||||
gastroacid: {
|
||||
inherit: true,
|
||||
desc: "Causes the target's Ability to be rendered ineffective as long as it remains active. If the target uses Baton Pass, the replacement will remain under this effect. If the target's Ability is Multitype or Stance Change, this move fails, and receiving the effect through Baton Pass ends the effect immediately.",
|
||||
onTryHit(pokemon) {
|
||||
const bannedAbilities = ['multitype', 'stancechange'];
|
||||
if (bannedAbilities.includes(pokemon.ability)) {
|
||||
|
|
@ -162,70 +91,13 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
gravity: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the evasiveness of all active Pokemon is multiplied by 0.6. At the time of use, Bounce, Fly, Magnet Rise, Sky Drop, and Telekinesis end immediately for all active Pokemon. During the effect, Bounce, Fly, Flying Press, High Jump Kick, Jump Kick, Magnet Rise, Sky Drop, Splash, and Telekinesis are prevented from being used by all active Pokemon. Ground-type attacks, Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability can affect Flying types or Pokemon with the Levitate Ability. Fails if this move is already in effect.",
|
||||
},
|
||||
healblock: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the target is prevented from restoring any HP as long as it remains active. During the effect, healing and draining moves are unusable, and Abilities and items that grant healing will not heal the user. If an affected Pokemon uses Baton Pass, the replacement will remain unable to restore its HP. Pain Split and the Regenerator Ability are unaffected.",
|
||||
},
|
||||
heavyslam: {
|
||||
inherit: true,
|
||||
desc: "The power of this move depends on (user's weight / target's weight), rounded down. Power is equal to 120 if the result is 5 or more, 100 if 4, 80 if 3, 60 if 2, and 40 if 1 or less.",
|
||||
},
|
||||
hyperspacefury: {
|
||||
inherit: true,
|
||||
desc: "Lowers the user's Defense by 1 stage. This move cannot be used successfully unless the user's current form, while considering Transform, is Hoopa Unbound. If this move is successful, it breaks through the target's Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokemon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokemon may attack the target's side normally.",
|
||||
},
|
||||
hyperspacehole: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, it breaks through the target's Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokemon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokemon may attack the target's side normally.",
|
||||
},
|
||||
iceball: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.",
|
||||
},
|
||||
imprison: {
|
||||
inherit: true,
|
||||
desc: "The user prevents all opposing Pokemon from using any moves that the user also knows as long as the user remains active.",
|
||||
},
|
||||
kingsshield: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn, and Pokemon trying to make contact with the user have their Attack lowered by 2 stages. Non-damaging moves go through this protection. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
},
|
||||
knockoff: {
|
||||
inherit: true,
|
||||
desc: "If the target is holding an item that can be removed from it, ignoring the Sticky Hold Ability, this move's power is multiplied by 1.5. If the user has not fainted, the target loses its held item. This move cannot cause Pokemon with the Sticky Hold Ability to lose their held item, cause Pokemon that can Mega Evolve to lose the Mega Stone for their species, or cause a Kyogre, a Groudon, a Giratina, an Arceus, or a Genesect to lose their Blue Orb, Red Orb, Griseous Orb, Plate, or Drive, respectively. Items lost to this move cannot be regained with Recycle or the Harvest Ability.",
|
||||
},
|
||||
leechlife: {
|
||||
inherit: true,
|
||||
basePower: 20,
|
||||
pp: 15,
|
||||
},
|
||||
lightscreen: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double or Triple Battle. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.",
|
||||
},
|
||||
mefirst: {
|
||||
inherit: true,
|
||||
desc: "The user uses the move the target chose for use this turn against it, if possible, with its power multiplied by 1.5. The move must be a damaging move other than Chatter, Counter, Covet, Focus Punch, Me First, Metal Burst, Mirror Coat, Struggle, or Thief. Fails if the target moves before the user. Ignores the target's substitute for the purpose of copying the move.",
|
||||
},
|
||||
metalburst: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the last opposing Pokemon to hit the user with an attack this turn equal to 1.5 times the HP lost by the user from that attack, rounded down. If the user did not lose HP from the attack, this move deals damage with a power of 1 instead. If that opposing Pokemon's position is no longer in use, the damage is done to a random opposing Pokemon in range. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokemon's attack this turn.",
|
||||
},
|
||||
metronome: {
|
||||
inherit: true,
|
||||
desc: "A random move is selected for use, other than After You, Assist, Belch, Bestow, Celebrate, Chatter, Copycat, Counter, Covet, Crafty Shield, Destiny Bond, Detect, Diamond Storm, Dragon Ascent, Endure, Feint, Focus Punch, Follow Me, Freeze Shock, Helping Hand, Hold Hands, Hyperspace Fury, Hyperspace Hole, Ice Burn, King's Shield, Light of Ruin, Mat Block, Me First, Metronome, Mimic, Mirror Coat, Mirror Move, Nature Power, Origin Pulse, Precipice Blades, Protect, Quash, Quick Guard, Rage Powder, Relic Song, Secret Sword, Sketch, Sleep Talk, Snarl, Snatch, Snore, Spiky Shield, Steam Eruption, Struggle, Switcheroo, Techno Blast, Thief, Thousand Arrows, Thousand Waves, Transform, Trick, V-create, or Wide Guard.",
|
||||
},
|
||||
mimic: {
|
||||
inherit: true,
|
||||
desc: "While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Chatter, Mimic, Sketch, Struggle, or Transform.",
|
||||
},
|
||||
minimize: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's evasiveness by 2 stages. Whether or not the user's evasiveness was changed, Body Slam, Dragon Rush, Flying Press, Heat Crash, Phantom Force, Shadow Force, Steamroller, and Stomp will not check accuracy and have their damage doubled if used against the user while it is active.",
|
||||
condition: {
|
||||
noCopy: true,
|
||||
onSourceModifyDamage(damage, source, target, move) {
|
||||
|
|
@ -247,13 +119,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
mirrorcoat: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the last opposing Pokemon to hit the user with a special attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals damage with a power of 1 instead. If that opposing Pokemon's position is no longer in use, the damage is done to a random opposing Pokemon in range. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokemon's special attack this turn.",
|
||||
},
|
||||
mistyterrain: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the terrain becomes Misty Terrain. During the effect, the power of Dragon-type attacks used against grounded Pokemon is multiplied by 0.5 and grounded Pokemon cannot be inflicted with a major status condition. Camouflage transforms the user into a Fairy type, Nature Power becomes Moonblast, and Secret Power has a 30% chance to lower Special Attack by 1 stage. Fails if the current terrain is Misty Terrain.",
|
||||
condition: {
|
||||
duration: 5,
|
||||
durationCallback(source, effect) {
|
||||
|
|
@ -293,40 +160,18 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
basePower: 65,
|
||||
},
|
||||
naturepower: {
|
||||
inherit: true,
|
||||
desc: "This move calls another move for use based on the battle terrain. Tri Attack on the regular Wi-Fi terrain, Thunderbolt during Electric Terrain, Moonblast during Misty Terrain, and Energy Ball during Grassy Terrain.",
|
||||
},
|
||||
outrage: {
|
||||
inherit: true,
|
||||
desc: "The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an adjacent opposing Pokemon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk, the move is used for one turn and does not confuse the user.",
|
||||
},
|
||||
paraboliccharge: {
|
||||
inherit: true,
|
||||
basePower: 50,
|
||||
},
|
||||
partingshot: {
|
||||
inherit: true,
|
||||
desc: "Lowers the target's Attack and Special Attack by 1 stage. If this move is successful, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members.",
|
||||
onHit(target, source) {
|
||||
this.boost({atk: -1, spa: -1}, target, source);
|
||||
},
|
||||
},
|
||||
payback: {
|
||||
inherit: true,
|
||||
desc: "Power doubles if the user moves after the target this turn. Switching in does not count as an action.",
|
||||
},
|
||||
petaldance: {
|
||||
inherit: true,
|
||||
desc: "The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an adjacent opposing Pokemon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk, the move is used for one turn and does not confuse the user.",
|
||||
},
|
||||
phantomforce: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, it breaks through the target's Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokemon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokemon may attack the target's side normally. This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks. If the user is holding a Power Herb, the move completes in one turn. Damage doubles and no accuracy check is done if the target has used Minimize while active.",
|
||||
},
|
||||
powder: {
|
||||
inherit: true,
|
||||
desc: "If the target uses a Fire-type move this turn, it is prevented from executing and the target loses 1/4 of its maximum HP, rounded half up. This effect happens before the Fire-type move would be prevented by Primordial Sea.",
|
||||
condition: {
|
||||
duration: 1,
|
||||
onStart(target) {
|
||||
|
|
@ -342,59 +187,16 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
protect: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
},
|
||||
pursuit: {
|
||||
inherit: true,
|
||||
desc: "If an adjacent opposing Pokemon switches out this turn, this move hits that Pokemon before it leaves the field, even if it was not the original target. If the user moves after an opponent using Parting Shot, U-turn, or Volt Switch, but not Baton Pass, it will hit that opponent before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokemon does not become active until the end of the turn.",
|
||||
},
|
||||
quickguard: {
|
||||
inherit: true,
|
||||
desc: "The user and its party members are protected from attacks with original or altered priority greater than 0 made by other Pokemon, including allies, during this turn. This move modifies the same 1/X chance of being successful used by other protection moves, where X starts at 1 and triples each time this move is successfully used, but does not use the chance to check for failure. X resets to 1 if this move fails, if the user's last move used is not Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn or if this move is already in effect for the user's side.",
|
||||
},
|
||||
ragepowder: {
|
||||
inherit: true,
|
||||
desc: "Until the end of the turn, all single-target attacks from the opposing side are redirected to the user if they are in range. Such attacks are redirected to the user before they can be reflected by Magic Coat or the Magic Bounce Ability, or drawn in by the Lightning Rod or Storm Drain Abilities. Fails if it is not a Double or Triple Battle. This effect is ignored while the user is under the effect of Sky Drop.",
|
||||
},
|
||||
reflect: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double or Triple Battle. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.",
|
||||
},
|
||||
reflecttype: {
|
||||
inherit: true,
|
||||
desc: "Causes the user's types to become the same as the current types of the target. Fails if the user is an Arceus.",
|
||||
},
|
||||
rockblast: {
|
||||
inherit: true,
|
||||
flags: {protect: 1, mirror: 1},
|
||||
},
|
||||
roleplay: {
|
||||
inherit: true,
|
||||
desc: "The user's Ability changes to match the target's Ability. Fails if the user's Ability is Multitype, Stance Change, or already matches the target, or if the target's Ability is Flower Gift, Forecast, Illusion, Imposter, Multitype, Stance Change, Trace, Wonder Guard, or Zen Mode.",
|
||||
},
|
||||
rollout: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.",
|
||||
},
|
||||
secretpower: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, and causes sleep during Grassy Terrain.",
|
||||
},
|
||||
shadowforce: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful, it breaks through the target's Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokemon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokemon may attack the target's side normally. This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks. If the user is holding a Power Herb, the move completes in one turn. Damage doubles and no accuracy check is done if the target has used Minimize while active.",
|
||||
},
|
||||
sheercold: {
|
||||
inherit: true,
|
||||
desc: "Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + 30)%, and fails if the target is at a higher level. Pokemon with the Sturdy Ability are immune.",
|
||||
shortDesc: "OHKOs the target. Fails if user is a lower level.",
|
||||
ohko: true,
|
||||
},
|
||||
simplebeam: {
|
||||
inherit: true,
|
||||
desc: "Causes the target's Ability to become Simple. Fails if the target's Ability is Multitype, Simple, Stance Change, or Truant.",
|
||||
onTryHit(pokemon) {
|
||||
const bannedAbilities = ['multitype', 'simple', 'stancechange', 'truant'];
|
||||
if (bannedAbilities.includes(pokemon.ability)) {
|
||||
|
|
@ -404,7 +206,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
skillswap: {
|
||||
inherit: true,
|
||||
desc: "The user swaps its Ability with the target's Ability. Fails if either the user or the target's Ability is Illusion, Multitype, Stance Change, or Wonder Guard.",
|
||||
onTryHit(target, source) {
|
||||
const bannedAbilities = ['illusion', 'multitype', 'stancechange', 'wonderguard'];
|
||||
if (bannedAbilities.includes(target.ability) || bannedAbilities.includes(source.ability)) {
|
||||
|
|
@ -412,18 +213,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
sleeptalk: {
|
||||
inherit: true,
|
||||
desc: "One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Belch, Bide, Celebrate, Chatter, Copycat, Focus Punch, Hold Hands, Me First, Metronome, Mimic, Mirror Move, Nature Power, Sketch, Sleep Talk, Struggle, Uproar, or any two-turn move.",
|
||||
},
|
||||
soak: {
|
||||
inherit: true,
|
||||
desc: "Causes the target to become a Water type. Fails if the target is an Arceus, or if the target is already purely Water type.",
|
||||
},
|
||||
spikyshield: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn, and Pokemon making contact with the user lose 1/8 of their maximum HP, rounded down. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
},
|
||||
stockpile: {
|
||||
inherit: true,
|
||||
condition: {
|
||||
|
|
@ -447,10 +236,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
struggle: {
|
||||
inherit: true,
|
||||
desc: "Deals typeless damage to a random adjacent opposing Pokemon. If this move was successful, the user loses 1/4 of its maximum HP, rounded half up, and the Rock Head Ability does not prevent this. This move is automatically used if none of the user's known moves can be selected.",
|
||||
},
|
||||
suckerpunch: {
|
||||
inherit: true,
|
||||
basePower: 80,
|
||||
|
|
@ -459,26 +244,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
accuracy: 90,
|
||||
},
|
||||
switcheroo: {
|
||||
inherit: true,
|
||||
desc: "The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, or a Drive to or from a Kyogre, a Groudon, a Giratina, an Arceus, or a Genesect, respectively. The target is immune to this move if it has the Sticky Hold Ability.",
|
||||
},
|
||||
tackle: {
|
||||
inherit: true,
|
||||
basePower: 50,
|
||||
},
|
||||
taunt: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from using non-damaging moves for its next three turns. Pokemon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.",
|
||||
},
|
||||
telekinesis: {
|
||||
inherit: true,
|
||||
desc: "For 3 turns, the target cannot avoid any attacks made against it, other than OHKO moves, as long as it remains active. During the effect, the target is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the target uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the target is under any of their effects. Fails if the target is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows. The target is immune to this move on use if its species is Diglett, Dugtrio, or Gengar while Mega-Evolved. Mega Gengar cannot be under this effect by any means.",
|
||||
},
|
||||
thief: {
|
||||
inherit: true,
|
||||
desc: "If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, or a Pokemon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.",
|
||||
},
|
||||
thousandarrows: {
|
||||
inherit: true,
|
||||
isNonstandard: "Unobtainable",
|
||||
|
|
@ -487,39 +256,16 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: "Unobtainable",
|
||||
},
|
||||
thrash: {
|
||||
inherit: true,
|
||||
desc: "The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an adjacent opposing Pokemon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk, the move is used for one turn and does not confuse the user.",
|
||||
},
|
||||
thunderwave: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
},
|
||||
trick: {
|
||||
inherit: true,
|
||||
desc: "The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, or a Drive to or from a Kyogre, a Groudon, a Giratina, an Arceus, or a Genesect, respectively. The target is immune to this move if it has the Sticky Hold Ability.",
|
||||
},
|
||||
uproar: {
|
||||
inherit: true,
|
||||
desc: "The user spends three turns locked into this move. This move targets an adjacent opponent at random on each turn. On the first of the three turns, all sleeping active Pokemon wake up. During the three turns, no active Pokemon can fall asleep by any means, and Pokemon switched in during the effect do not wake up. If the user is prevented from moving or the attack is not successful against the target during one of the turns, the effect ends.",
|
||||
},
|
||||
uturn: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button.",
|
||||
},
|
||||
voltswitch: {
|
||||
inherit: true,
|
||||
desc: "If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button.",
|
||||
},
|
||||
watershuriken: {
|
||||
inherit: true,
|
||||
desc: "Hits two to five times. Has a 1/3 chance to hit two or three times, and a 1/6 chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times.",
|
||||
category: "Physical",
|
||||
},
|
||||
wideguard: {
|
||||
inherit: true,
|
||||
desc: "The user and its party members are protected from damaging attacks made by other Pokemon, including allies, during this turn that target all adjacent foes or all adjacent Pokemon. This move modifies the same 1/X chance of being successful used by other protection moves, where X starts at 1 and triples each time this move is successfully used, but does not use the chance to check for failure. X resets to 1 if this move fails, if the user's last move used is not Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn or if this move is already in effect for the user's side.",
|
||||
shortDesc: "Protects allies from multi-target damage this turn.",
|
||||
condition: {
|
||||
duration: 1,
|
||||
onStart(target, source) {
|
||||
|
|
@ -548,7 +294,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
worryseed: {
|
||||
inherit: true,
|
||||
desc: "Causes the target's Ability to become Insomnia. Fails if the target's Ability is Insomnia, Multitype, Stance Change, or Truant.",
|
||||
onTryHit(pokemon) {
|
||||
const bannedAbilities = ['insomnia', 'multitype', 'stancechange', 'truant'];
|
||||
if (bannedAbilities.includes(pokemon.ability)) {
|
||||
|
|
|
|||
|
|
@ -1,17 +1,6 @@
|
|||
export const Abilities: {[k: string]: ModdedAbilityData} = {
|
||||
chlorophyll: {
|
||||
inherit: true,
|
||||
desc: "If Sunny Day is active, this Pokemon's Speed is doubled.",
|
||||
},
|
||||
damp: {
|
||||
inherit: true,
|
||||
desc: "While this Pokemon is active, Explosion, Mind Blown, Self-Destruct, and the Aftermath Ability are prevented from having an effect.",
|
||||
shortDesc: "Prevents Explosion/Mind Blown/Self-Destruct/Aftermath while this Pokemon is active.",
|
||||
},
|
||||
disguise: {
|
||||
inherit: true,
|
||||
desc: "If this Pokemon is a Mimikyu, the first hit it takes in battle deals 0 neutral damage. Its disguise is then broken and it changes to Busted Form. Confusion damage also breaks the disguise.",
|
||||
shortDesc: "(Mimikyu only) First hit deals 0 damage, breaks disguise.",
|
||||
onUpdate(pokemon) {
|
||||
if (['mimikyu', 'mimikyutotem'].includes(pokemon.species.id) && this.effectData.busted) {
|
||||
const speciesid = pokemon.species.id === 'mimikyutotem' ? 'Mimikyu-Busted-Totem' : 'Mimikyu-Busted';
|
||||
|
|
@ -19,41 +8,17 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
}
|
||||
},
|
||||
},
|
||||
dryskin: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon is immune to Water-type moves and restores 1/4 of its maximum HP, rounded down, when hit by a Water-type move. The power of Fire-type moves is multiplied by 1.25 when used on this Pokemon. At the end of each turn, this Pokemon restores 1/8 of its maximum HP, rounded down, if the weather is Rain Dance, and loses 1/8 of its maximum HP, rounded down, if the weather is Sunny Day.",
|
||||
},
|
||||
flowergift: {
|
||||
inherit: true,
|
||||
desc: "If this Pokemon is a Cherrim and Sunny Day is active, it changes to Sunshine Form and the Attack and Special Defense of it and its allies are multiplied by 1.5.",
|
||||
},
|
||||
forecast: {
|
||||
inherit: true,
|
||||
desc: "If this Pokemon is a Castform, its type changes to the current weather condition's type, except Sandstorm.",
|
||||
},
|
||||
hydration: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon has its major status condition cured at the end of each turn if Rain Dance is active.",
|
||||
},
|
||||
innerfocus: {
|
||||
inherit: true,
|
||||
shortDesc: "This Pokemon cannot be made to flinch.",
|
||||
rating: 1,
|
||||
onBoost() {},
|
||||
},
|
||||
intimidate: {
|
||||
inherit: true,
|
||||
desc: "On switch-in, this Pokemon lowers the Attack of adjacent opposing Pokemon by 1 stage. Pokemon behind a substitute are immune.",
|
||||
rating: 4,
|
||||
},
|
||||
leafguard: {
|
||||
inherit: true,
|
||||
desc: "If Sunny Day is active, this Pokemon cannot gain a major status condition and Rest will fail for it.",
|
||||
},
|
||||
moody: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon has a random stat raised by 2 stages and another stat lowered by 1 stage at the end of each turn.",
|
||||
shortDesc: "Raises a random stat by 2 and lowers another stat by 1 at the end of each turn.",
|
||||
onResidual(pokemon) {
|
||||
let stats: BoostName[] = [];
|
||||
const boost: SparseBoostsTable = {};
|
||||
|
|
@ -81,23 +46,13 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
oblivious: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon cannot be infatuated or taunted. Gaining this Ability while affected cures it.",
|
||||
shortDesc: "This Pokemon cannot be infatuated or taunted.",
|
||||
onBoost() {},
|
||||
},
|
||||
owntempo: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon cannot be confused. Gaining this Ability while confused cures it.",
|
||||
shortDesc: "This Pokemon cannot be confused.",
|
||||
onBoost() {},
|
||||
},
|
||||
raindish: {
|
||||
inherit: true,
|
||||
desc: "If Rain Dance is active, this Pokemon restores 1/16 of its maximum HP, rounded down, at the end of each turn.",
|
||||
},
|
||||
rattled: {
|
||||
desc: "This Pokemon's Speed is raised by 1 stage if hit by a Bug-, Dark-, or Ghost-type attack.",
|
||||
shortDesc: "This Pokemon's Speed is raised 1 stage if hit by a Bug-, Dark-, or Ghost-type attack.",
|
||||
onDamagingHit(damage, target, source, move) {
|
||||
if (['Dark', 'Bug', 'Ghost'].includes(move.type)) {
|
||||
this.boost({spe: 1});
|
||||
|
|
@ -109,18 +64,8 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
|
|||
},
|
||||
scrappy: {
|
||||
inherit: true,
|
||||
desc: "This Pokemon can hit Ghost types with Normal- and Fighting-type moves.",
|
||||
shortDesc: "This Pokemon can hit Ghost types with Normal- and Fighting-type moves.",
|
||||
onBoost() {},
|
||||
},
|
||||
solarpower: {
|
||||
inherit: true,
|
||||
desc: "If Sunny Day is active, this Pokemon's Special Attack is multiplied by 1.5 and it loses 1/8 of its maximum HP, rounded down, at the end of each turn.",
|
||||
},
|
||||
swiftswim: {
|
||||
inherit: true,
|
||||
desc: "If Rain Dance is active, this Pokemon's Speed is doubled.",
|
||||
},
|
||||
technician: {
|
||||
inherit: true,
|
||||
onBasePowerPriority: 19,
|
||||
|
|
|
|||
|
|
@ -15,10 +15,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
anchorshot: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field.",
|
||||
},
|
||||
assist: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -28,10 +24,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
accuracy: 100,
|
||||
basePower: 90,
|
||||
},
|
||||
banefulbunker: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn, and Pokemon making contact with the user become poisoned. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
},
|
||||
barrage: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -52,18 +44,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
bind: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
blackholeeclipse: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
block: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field.",
|
||||
},
|
||||
bloomdoom: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -112,7 +96,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
clamp: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
isNonstandard: null,
|
||||
},
|
||||
clangoroussoulblaze: {
|
||||
|
|
@ -131,10 +114,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
copycat: {
|
||||
inherit: true,
|
||||
desc: "The user uses the last move used by any Pokemon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Belch, Bestow, Celebrate, Chatter, Circle Throw, Copycat, Counter, Covet, Crafty Shield, Destiny Bond, Detect, Dragon Tail, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Mat Block, Me First, Metronome, Mimic, Mirror Coat, Mirror Move, Nature Power, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Thief, Transform, Trick, Whirlwind, or any Z-Move.",
|
||||
},
|
||||
coreenforcer: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -155,14 +134,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
detect: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
},
|
||||
defog: {
|
||||
inherit: true,
|
||||
desc: "Lowers the target's evasiveness by 1 stage. If this move is successful and whether or not the target's evasiveness was affected, the effects of Reflect, Light Screen, Aurora Veil, Safeguard, Mist, Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the target's side, and the effects of Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the user's side. Ignores a target's substitute, although a substitute will still block the lowering of evasiveness.",
|
||||
shortDesc: "-1 evasion; clears user and target side's hazards.",
|
||||
onHit(target, source, move) {
|
||||
let success = false;
|
||||
if (!target.volatiles['substitute'] || move.infiltrates) success = !!this.boost({evasion: -1});
|
||||
|
|
@ -194,10 +167,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
disable: {
|
||||
inherit: true,
|
||||
desc: "For 4 turns, the target's last move used becomes disabled. Fails if one of the target's moves is already disabled, if the target has not made a move, if the target no longer knows the move, or if the move was a Z-Move. Z-Powered moves can still be selected and executed during this effect.",
|
||||
},
|
||||
dizzypunch: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -224,7 +193,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
electricterrain: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the terrain becomes Electric Terrain. During the effect, the power of Electric-type attacks made by grounded Pokemon is multiplied by 1.5 and grounded Pokemon cannot fall asleep; Pokemon already asleep do not wake up. Camouflage transforms the user into an Electric type, Nature Power becomes Thunderbolt, and Secret Power has a 30% chance to cause paralysis. Fails if the current terrain is Electric Terrain.",
|
||||
condition: {
|
||||
duration: 5,
|
||||
durationCallback(source, effect) {
|
||||
|
|
@ -272,22 +240,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
encore: {
|
||||
inherit: true,
|
||||
desc: "For its next 3 turns, the target is forced to repeat its last move used. If the affected move runs out of PP, the effect ends. Fails if the target is already under this effect, if it has not made a move, if the move has 0 PP, or if the move is Assist, Copycat, Encore, Me First, Metronome, Mimic, Mirror Move, Nature Power, Sketch, Sleep Talk, Struggle, Transform, or any Z-Move. Z-Powered moves can still be selected and executed during this effect.",
|
||||
},
|
||||
endure: {
|
||||
inherit: true,
|
||||
desc: "The user will survive attacks made by other Pokemon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
},
|
||||
extremeevoboost: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
fairylock: {
|
||||
inherit: true,
|
||||
desc: "Prevents all active Pokemon from switching next turn. A Pokemon can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. Fails if the effect is already active.",
|
||||
},
|
||||
feintattack: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -341,7 +297,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
grassyterrain: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the terrain becomes Grassy Terrain. During the effect, the power of Grass-type attacks used by grounded Pokemon is multiplied by 1.5, the power of Bulldoze, Earthquake, and Magnitude used against grounded Pokemon is multiplied by 0.5, and grounded Pokemon have 1/16 of their maximum HP, rounded down, restored at the end of each turn, including the last turn. Camouflage transforms the user into a Grass type, Nature Power becomes Energy Ball, and Secret Power has a 30% chance to cause sleep. Fails if the current terrain is Grassy Terrain.",
|
||||
condition: {
|
||||
duration: 5,
|
||||
durationCallback(source, effect) {
|
||||
|
|
@ -385,21 +340,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
gravity: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the evasiveness of all active Pokemon is multiplied by 0.6. At the time of use, Bounce, Fly, Magnet Rise, Sky Drop, and Telekinesis end immediately for all active Pokemon. During the effect, Bounce, Fly, Flying Press, High Jump Kick, Jump Kick, Magnet Rise, Sky Drop, Splash, and Telekinesis are prevented from being used by all active Pokemon. Ground-type attacks, Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability can affect Flying types or Pokemon with the Levitate Ability. Fails if this move is already in effect. Relevant Z-Powered moves can still be selected, but will be prevented at execution during this effect.",
|
||||
},
|
||||
growth: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's Attack and Special Attack by 1 stage. If the weather is Sunny Day or Desolate Land, this move raises the user's Attack and Special Attack by 2 stages.",
|
||||
},
|
||||
guardianofalola: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
healbell: {
|
||||
inherit: true,
|
||||
desc: "Every Pokemon in the user's party is cured of its major status condition. Active Pokemon with the Soundproof Ability are not cured.",
|
||||
onHit(pokemon, source) {
|
||||
this.add('-activate', source, 'move: Heal Bell');
|
||||
const side = pokemon.side;
|
||||
|
|
@ -414,12 +360,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
healblock: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
desc: "For 5 turns, the target is prevented from restoring any HP as long as it remains active. During the effect, healing and draining moves are unusable, and Abilities and items that grant healing will not heal the user. If an affected Pokemon uses Baton Pass, the replacement will remain unable to restore its HP. Pain Split and the Regenerator Ability are unaffected. Relevant Z-Powered moves can still be selected and executed during this effect.",
|
||||
},
|
||||
healingwish: {
|
||||
inherit: true,
|
||||
desc: "The user faints and the Pokemon brought out to replace it has its HP fully restored along with having any major status condition cured. The new Pokemon is sent out at the end of the turn, and the healing happens before hazards take effect. Fails if the user is the last unfainted Pokemon in its party.",
|
||||
shortDesc: "User faints. Replacement is fully healed.",
|
||||
condition: {
|
||||
duration: 2,
|
||||
onSwitchInPriority: 1,
|
||||
|
|
@ -453,10 +396,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
onTryHit() {},
|
||||
},
|
||||
hurricane: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to confuse the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%.",
|
||||
},
|
||||
hiddenpower: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -527,8 +466,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
howl: {
|
||||
inherit: true,
|
||||
desc: "Raises the user's Attack by 1 stage.",
|
||||
shortDesc: "Raises the user's Attack by 1.",
|
||||
flags: {snatch: 1},
|
||||
boosts: {
|
||||
atk: 1,
|
||||
|
|
@ -559,26 +496,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
imprison: {
|
||||
inherit: true,
|
||||
desc: "The user prevents all opposing Pokemon from using any moves that the user also knows as long as the user remains active. Z-Powered moves can still be selected and executed during this effect.",
|
||||
},
|
||||
infernooverdrive: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
infestation: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
ingrain: {
|
||||
inherit: true,
|
||||
desc: "The user has 1/16 of its maximum HP restored at the end of each turn, but it is prevented from switching out and other Pokemon cannot force the user to switch out. The user can still switch out if it uses Baton Pass, Parting Shot, U-turn, or Volt Switch. If the user leaves the field using Baton Pass, the replacement will remain trapped and still receive the healing effect. During the effect, the user can be hit normally by Ground-type attacks and be affected by Spikes, Toxic Spikes, and Sticky Web, even if the user is a Flying type or has the Levitate Ability.",
|
||||
},
|
||||
instruct: {
|
||||
inherit: true,
|
||||
desc: "The target immediately uses its last used move. Fails if the target has not made a move, if the move has 0 PP, if the target is preparing to use Beak Blast, Focus Punch, or Shell Trap, or if the move is Assist, Beak Blast, Belch, Bide, Celebrate, Copycat, Focus Punch, Ice Ball, Instruct, King's Shield, Me First, Metronome, Mimic, Mirror Move, Nature Power, Outrage, Petal Dance, Rollout, Shell Trap, Sketch, Sleep Talk, Struggle, Thrash, Transform, Uproar, any two-turn move, any recharge move, or any Z-Move.",
|
||||
},
|
||||
iondeluge: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -597,8 +518,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
kingsshield: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn, and Pokemon trying to make contact with the user have their Attack lowered by 2 stages. Non-damaging moves go through this protection. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
shortDesc: "Protects from damaging attacks. Contact: -2 Atk.",
|
||||
condition: {
|
||||
duration: 1,
|
||||
onStart(target) {
|
||||
|
|
@ -630,10 +549,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
},
|
||||
},
|
||||
knockoff: {
|
||||
inherit: true,
|
||||
desc: "If the target is holding an item that can be removed from it, ignoring the Sticky Hold Ability, this move's power is multiplied by 1.5. If the user has not fainted, the target loses its held item. This move cannot remove Z-Crystals, cause Pokemon with the Sticky Hold Ability to lose their held item, cause Pokemon that can Mega Evolve to lose the Mega Stone for their species, or cause a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, or a Silvally to lose their Blue Orb, Red Orb, Griseous Orb, Plate, Drive, or Memory respectively. Items lost to this move cannot be regained with Recycle or the Harvest Ability.",
|
||||
},
|
||||
landswrath: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -672,7 +587,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
magmastorm: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
isNonstandard: null,
|
||||
},
|
||||
magnetbomb: {
|
||||
|
|
@ -687,10 +601,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
meanlook: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field.",
|
||||
},
|
||||
meditate: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -705,7 +615,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
metronome: {
|
||||
inherit: true,
|
||||
desc: "A random move is selected for use, other than After You, Assist, Baneful Bunker, Beak Blast, Belch, Bestow, Celebrate, Chatter, Copycat, Counter, Covet, Crafty Shield, Destiny Bond, Detect, Diamond Storm, Dragon Ascent, Endure, Feint, Fleur Cannon, Focus Punch, Follow Me, Freeze Shock, Helping Hand, Hold Hands, Hyperspace Fury, Hyperspace Hole, Ice Burn, Instruct, King's Shield, Light of Ruin, Mat Block, Me First, Metronome, Mimic, Mind Blown, Mirror Coat, Mirror Move, Nature Power, Origin Pulse, Photon Geyser, Plasma Fists, Precipice Blades, Protect, Quash, Quick Guard, Rage Powder, Relic Song, Secret Sword, Shell Trap, Sketch, Sleep Talk, Snarl, Snatch, Snore, Spectral Thief, Spiky Shield, Spotlight, Steam Eruption, Struggle, Switcheroo, Techno Blast, Thief, Thousand Arrows, Thousand Waves, Transform, Trick, V-create, or Wide Guard.",
|
||||
noMetronome: [
|
||||
"After You", "Assist", "Baneful Bunker", "Beak Blast", "Belch", "Bestow", "Celebrate", "Chatter", "Copycat", "Counter", "Covet", "Crafty Shield", "Destiny Bond", "Detect", "Diamond Storm", "Dragon Ascent", "Endure", "Feint", "Fleur Cannon", "Focus Punch", "Follow Me", "Freeze Shock", "Helping Hand", "Hold Hands", "Hyperspace Fury", "Hyperspace Hole", "Ice Burn", "Instruct", "King's Shield", "Light of Ruin", "Mat Block", "Me First", "Metronome", "Mimic", "Mind Blown", "Mirror Coat", "Mirror Move", "Nature Power", "Origin Pulse", "Photon Geyser", "Plasma Fists", "Precipice Blades", "Protect", "Quash", "Quick Guard", "Rage Powder", "Relic Song", "Secret Sword", "Shell Trap", "Sketch", "Sleep Talk", "Snarl", "Snatch", "Snore", "Spectral Thief", "Spiky Shield", "Spotlight", "Steam Eruption", "Struggle", "Switcheroo", "Techno Blast", "Thief", "Thousand Arrows", "Thousand Waves", "Transform", "Trick", "V-create", "Wide Guard",
|
||||
],
|
||||
|
|
@ -730,14 +639,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
moonlight: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP if Delta Stream or no weather conditions are in effect, 2/3 of its maximum HP if the weather is Desolate Land or Sunny Day, and 1/4 of its maximum HP if the weather is Hail, Primordial Sea, Rain Dance, or Sandstorm, all rounded half down.",
|
||||
},
|
||||
morningsun: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP if Delta Stream or no weather conditions are in effect, 2/3 of its maximum HP if the weather is Desolate Land or Sunny Day, and 1/4 of its maximum HP if the weather is Hail, Primordial Sea, Rain Dance, or Sandstorm, all rounded half down.",
|
||||
},
|
||||
mudbomb: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -798,13 +699,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
protect: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
},
|
||||
psychicterrain: {
|
||||
inherit: true,
|
||||
desc: "For 5 turns, the terrain becomes Psychic Terrain. During the effect, the power of Psychic-type attacks made by grounded Pokemon is multiplied by 1.5 and grounded Pokemon cannot be hit by moves with priority greater than 0, unless the target is an ally. Camouflage transforms the user into a Psychic type, Nature Power becomes Psychic, and Secret Power has a 30% chance to lower the target's Speed by 1 stage. Fails if the current terrain is Psychic Terrain.",
|
||||
condition: {
|
||||
duration: 5,
|
||||
durationCallback(source, effect) {
|
||||
|
|
@ -880,10 +776,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
this.add('-activate', target, 'move: Quash');
|
||||
},
|
||||
},
|
||||
quickguard: {
|
||||
inherit: true,
|
||||
desc: "The user and its party members are protected from attacks with original or altered priority greater than 0 made by other Pokemon, including allies, during this turn. This move modifies the same 1/X chance of being successful used by other protection moves, where X starts at 1 and triples each time this move is successfully used, but does not use the chance to check for failure. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn or if this move is already in effect for the user's side.",
|
||||
},
|
||||
rage: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -891,8 +783,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
rapidspin: {
|
||||
inherit: true,
|
||||
basePower: 20,
|
||||
desc: "If this move is successful and the user has not fainted, the effects of Leech Seed and binding moves end for the user, and all hazards are removed from the user's side of the field.",
|
||||
shortDesc: "Frees user from hazards, binding, Leech Seed.",
|
||||
secondary: null,
|
||||
},
|
||||
razorwind: {
|
||||
|
|
@ -935,10 +825,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
sandtomb: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
sappyseed: {
|
||||
inherit: true,
|
||||
accuracy: 100,
|
||||
|
|
@ -998,10 +884,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
skillswap: {
|
||||
inherit: true,
|
||||
desc: "The user swaps its Ability with the target's Ability. Fails if either the user or the target's Ability is Battle Bond, Comatose, Disguise, Illusion, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, Wonder Guard, or Zen Mode.",
|
||||
},
|
||||
skydrop: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -1010,10 +892,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
sleeptalk: {
|
||||
inherit: true,
|
||||
desc: "One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Celebrate, Chatter, Copycat, Focus Punch, Hold Hands, Me First, Metronome, Mimic, Mirror Move, Nature Power, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, any two-turn move, or any Z-Move.",
|
||||
},
|
||||
smellingsalts: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -1022,14 +900,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
solarbeam: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. Power is halved if the weather is Hail, Primordial Sea, Rain Dance, or Sandstorm and the user is not holding Utility Umbrella. If the user is holding a Power Herb or the weather is Desolate Land or Sunny Day, the move completes in one turn.",
|
||||
},
|
||||
solarblade: {
|
||||
inherit: true,
|
||||
desc: "This attack charges on the first turn and executes on the second. Power is halved if the weather is Hail, Primordial Sea, Rain Dance, or Sandstorm and the user is not holding Utility Umbrella. If the user is holding a Power Herb or the weather is Desolate Land or Sunny Day, the move completes in one turn.",
|
||||
},
|
||||
sonicboom: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -1050,21 +920,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
spiderweb: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field.",
|
||||
isNonstandard: null,
|
||||
},
|
||||
spikecannon: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
spikyshield: {
|
||||
inherit: true,
|
||||
desc: "The user is protected from most attacks made by other Pokemon during this turn, and Pokemon making contact with the user lose 1/8 of their maximum HP, rounded down. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.",
|
||||
},
|
||||
spiritshackle: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. If the target leaves the field using Baton Pass, the replacement will remain trapped. The effect ends if the user leaves the field.",
|
||||
},
|
||||
splinteredstormshards: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -1097,18 +958,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
synthesis: {
|
||||
inherit: true,
|
||||
desc: "The user restores 1/2 of its maximum HP if Delta Stream or no weather conditions are in effect, 2/3 of its maximum HP if the weather is Desolate Land or Sunny Day, and 1/4 of its maximum HP if the weather is Hail, Primordial Sea, Rain Dance, or Sandstorm, all rounded half down.",
|
||||
},
|
||||
tailglow: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
taunt: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from using non-damaging moves for its next three turns. Pokemon with the Oblivious Ability or protected by the Aroma Veil Ability are immune. Z-Powered moves can still be selected and executed during this effect.",
|
||||
},
|
||||
technoblast: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -1123,8 +976,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
},
|
||||
teleport: {
|
||||
inherit: true,
|
||||
desc: "Fails when used.",
|
||||
shortDesc: "Fails when used.",
|
||||
priority: 0,
|
||||
selfSwitch: false,
|
||||
onTryHit: false,
|
||||
|
|
@ -1137,10 +988,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
throatchop: {
|
||||
inherit: true,
|
||||
desc: "For 2 turns, the target cannot use sound-based moves. Z-Powered sound moves can still be selected and executed during this effect.",
|
||||
},
|
||||
toxicthread: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -1149,10 +996,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
thunder: {
|
||||
inherit: true,
|
||||
desc: "Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%.",
|
||||
},
|
||||
twineedle: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -1169,18 +1012,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
whirlpool: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
wideguard: {
|
||||
inherit: true,
|
||||
desc: "The user and its party members are protected from moves made by other Pokemon, including allies, during this turn that target all adjacent foes or all adjacent Pokemon. This move modifies the same 1/X chance of being successful used by other protection moves, where X starts at 1 and triples each time this move is successfully used, but does not use the chance to check for failure. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Detect, Endure, King's Shield, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn or if this move is already in effect for the user's side.",
|
||||
},
|
||||
wrap: {
|
||||
inherit: true,
|
||||
desc: "Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Parting Shot, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.",
|
||||
},
|
||||
wringout: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
|
|
@ -1188,8 +1019,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|||
zippyzap: {
|
||||
inherit: true,
|
||||
basePower: 50,
|
||||
desc: "Will always result in a critical hit.",
|
||||
shortDesc: "Nearly always goes first. Always crits.",
|
||||
pp: 15,
|
||||
willCrit: true,
|
||||
secondary: null,
|
||||
|
|
|
|||
1699
data/moves.ts
1699
data/moves.ts
File diff suppressed because it is too large
Load Diff
233
data/tags.ts
Normal file
233
data/tags.ts
Normal file
|
|
@ -0,0 +1,233 @@
|
|||
interface TagData {
|
||||
name: string;
|
||||
desc?: string;
|
||||
pokemonFilter?: (species: Species) => boolean;
|
||||
moveFilter?: (move: Move) => boolean;
|
||||
}
|
||||
|
||||
export const Tags: {[id: string]: TagData} = {
|
||||
// Categories
|
||||
// ----------
|
||||
physical: {
|
||||
name: "Physical",
|
||||
desc: "Move deals damage with the Attack and Defense stats.",
|
||||
moveFilter: move => move.category === 'Physical',
|
||||
},
|
||||
special: {
|
||||
name: "Special",
|
||||
desc: "Move deals damage with the Special Attack and Special Defense stats.",
|
||||
moveFilter: move => move.category === 'Special',
|
||||
},
|
||||
status: {
|
||||
name: "Status",
|
||||
desc: "Move does not deal damage.",
|
||||
moveFilter: move => move.category === 'Status',
|
||||
},
|
||||
|
||||
// Pokemon tags
|
||||
// ------------
|
||||
mega: {
|
||||
name: "Mega",
|
||||
pokemonFilter: species => !!species.isMega,
|
||||
},
|
||||
|
||||
// Move tags
|
||||
// ---------
|
||||
zmove: {
|
||||
name: "Z-Move",
|
||||
moveFilter: move => !!move.isZ,
|
||||
},
|
||||
maxmove: {
|
||||
name: "Max Move",
|
||||
moveFilter: move => !!move.isMax,
|
||||
},
|
||||
contact: {
|
||||
name: "Contact",
|
||||
desc: "Affected by a variety of moves, abilities, and items. Moves affected by contact moves include: Spiky Shield, King's Shield. Abilities affected by contact moves include: Iron Barbs, Rough Skin, Gooey, Flame Body, Static, Tough Claws. Items affected by contact moves include: Rocky Helmet, Sticky Barb.",
|
||||
moveFilter: move => 'contact' in move.flags,
|
||||
},
|
||||
sound: {
|
||||
name: "Sound",
|
||||
desc: "Doesn't affect Soundproof Pokémon. (All sound moves also bypass Substitute.)",
|
||||
moveFilter: move => 'sound' in move.flags,
|
||||
},
|
||||
powder: {
|
||||
name: "Powder",
|
||||
desc: "Doesn't affect Grass-type Pokémon, Overcoat Pokémon, or Safety Goggles holders.",
|
||||
moveFilter: move => 'powder' in move.flags,
|
||||
},
|
||||
fist: {
|
||||
name: "Fist",
|
||||
desc: "Boosted 1.2x by Iron Fist.",
|
||||
moveFilter: move => 'punch' in move.flags,
|
||||
},
|
||||
pulse: {
|
||||
name: "Pulse",
|
||||
desc: "Boosted 1.5x by Mega Launcher.",
|
||||
moveFilter: move => 'pulse' in move.flags,
|
||||
},
|
||||
bite: {
|
||||
name: "Bite",
|
||||
desc: "Boosted 1.5x by Strong Jaw.",
|
||||
moveFilter: move => 'bite' in move.flags,
|
||||
},
|
||||
ballistic: {
|
||||
name: "Ballistic",
|
||||
desc: "Doesn't affect Bulletproof Pokémon.",
|
||||
moveFilter: move => 'bullet' in move.flags,
|
||||
},
|
||||
bypassprotect: {
|
||||
name: "Bypass Protect",
|
||||
desc: "Bypasses Protect, Detect, King's Shield, and Spiky Shield.",
|
||||
moveFilter: move => move.target !== 'self' && !('protect' in move.flags),
|
||||
},
|
||||
nonreflectable: {
|
||||
name: "Nonreflectable",
|
||||
desc: "Can't be bounced by Magic Coat or Magic Bounce.",
|
||||
moveFilter: move => move.target !== 'self' && move.category === 'Status' && !('reflectable' in move.flags),
|
||||
},
|
||||
nonmirror: {
|
||||
name: "Nonmirror",
|
||||
desc: "Can't be copied by Mirror Move.",
|
||||
moveFilter: move => move.target !== 'self' && !('mirror' in move.flags),
|
||||
},
|
||||
nonsnatchable: {
|
||||
name: "Nonsnatchable",
|
||||
desc: "Can't be copied by Snatch.",
|
||||
moveFilter: move => ['allyTeam', 'self', 'adjacentAllyOrSelf'].includes(move.target) && !('snatch' in move.flags),
|
||||
},
|
||||
bypasssubstitute: {
|
||||
name: "Bypass Substitute",
|
||||
desc: "Bypasses but does not break a Substitute.",
|
||||
moveFilter: move => 'authentic' in move.flags,
|
||||
},
|
||||
gmaxmove: {
|
||||
name: "G-Max Move",
|
||||
moveFilter: move => typeof move.isMax === 'string',
|
||||
},
|
||||
|
||||
// Tiers
|
||||
// -----
|
||||
uber: {
|
||||
name: "Uber",
|
||||
pokemonFilter: species => species.tier === 'Uber',
|
||||
},
|
||||
ou: {
|
||||
name: "OU",
|
||||
pokemonFilter: species => species.tier === 'OU',
|
||||
},
|
||||
uubl: {
|
||||
name: "UUBL",
|
||||
pokemonFilter: species => species.tier === 'UUBL',
|
||||
},
|
||||
uu: {
|
||||
name: "UU",
|
||||
pokemonFilter: species => species.tier === 'UU',
|
||||
},
|
||||
rubl: {
|
||||
name: "RUBL",
|
||||
pokemonFilter: species => species.tier === 'RUBL',
|
||||
},
|
||||
ru: {
|
||||
name: "RU",
|
||||
pokemonFilter: species => species.tier === 'RU',
|
||||
},
|
||||
nubl: {
|
||||
name: "NUBL",
|
||||
pokemonFilter: species => species.tier === 'NUBL',
|
||||
},
|
||||
nu: {
|
||||
name: "NU",
|
||||
pokemonFilter: species => species.tier === 'NU',
|
||||
},
|
||||
publ: {
|
||||
name: "PUBL",
|
||||
pokemonFilter: species => species.tier === 'PUBL',
|
||||
},
|
||||
pu: {
|
||||
name: "PU",
|
||||
pokemonFilter: species => species.tier === 'PU',
|
||||
},
|
||||
zu: {
|
||||
name: "ZU",
|
||||
pokemonFilter: species => species.tier === '(PU)',
|
||||
},
|
||||
nfe: {
|
||||
name: "NFE",
|
||||
pokemonFilter: species => species.tier === 'NFE',
|
||||
},
|
||||
lcuber: {
|
||||
name: "LC Uber",
|
||||
pokemonFilter: species => species.doublesTier === 'LC Uber',
|
||||
},
|
||||
lc: {
|
||||
name: "LC",
|
||||
pokemonFilter: species => species.doublesTier === 'LC',
|
||||
},
|
||||
cap: {
|
||||
name: "CAP",
|
||||
pokemonFilter: species => species.tier === 'CAP',
|
||||
},
|
||||
caplc: {
|
||||
name: "CAP LC",
|
||||
pokemonFilter: species => species.tier === 'CAP LC',
|
||||
},
|
||||
capnfe: {
|
||||
name: "CAP NFE",
|
||||
pokemonFilter: species => species.tier === 'CAP NFE',
|
||||
},
|
||||
ag: {
|
||||
name: "AG",
|
||||
pokemonFilter: species => species.tier === 'AG',
|
||||
},
|
||||
|
||||
// Doubles tiers
|
||||
// -------------
|
||||
duber: {
|
||||
name: "DUber",
|
||||
pokemonFilter: species => species.doublesTier === 'DUber',
|
||||
},
|
||||
dou: {
|
||||
name: "DOU",
|
||||
pokemonFilter: species => species.doublesTier === 'DOU',
|
||||
},
|
||||
dbl: {
|
||||
name: "DBL",
|
||||
pokemonFilter: species => species.doublesTier === 'DBL',
|
||||
},
|
||||
duu: {
|
||||
name: "DUU",
|
||||
pokemonFilter: species => species.doublesTier === 'DUU',
|
||||
},
|
||||
dnu: {
|
||||
name: "DNU",
|
||||
pokemonFilter: species => species.doublesTier === '(DUU)',
|
||||
},
|
||||
|
||||
// Legality tags
|
||||
past: {
|
||||
name: "Past",
|
||||
pokemonFilter: species => species.isNonstandard === 'Past',
|
||||
moveFilter: move => move.isNonstandard === 'Past',
|
||||
},
|
||||
future: {
|
||||
name: "Future",
|
||||
pokemonFilter: species => species.isNonstandard === 'Future',
|
||||
moveFilter: move => move.isNonstandard === 'Future',
|
||||
},
|
||||
unobtainable: {
|
||||
name: "Unobtainable",
|
||||
pokemonFilter: species => species.isNonstandard === 'Unobtainable',
|
||||
moveFilter: move => move.isNonstandard === 'Unobtainable',
|
||||
},
|
||||
lgpe: {
|
||||
name: "LGPE",
|
||||
pokemonFilter: species => species.isNonstandard === 'LGPE',
|
||||
moveFilter: move => move.isNonstandard === 'LGPE',
|
||||
},
|
||||
custom: {
|
||||
name: "Custom",
|
||||
pokemonFilter: species => species.isNonstandard === 'Custom',
|
||||
moveFilter: move => move.isNonstandard === 'Custom',
|
||||
},
|
||||
};
|
||||
1480
data/text/abilities.ts
Normal file
1480
data/text/abilities.ts
Normal file
File diff suppressed because it is too large
Load Diff
2189
data/text/items.ts
Normal file
2189
data/text/items.ts
Normal file
File diff suppressed because it is too large
Load Diff
5458
data/text/moves.ts
Normal file
5458
data/text/moves.ts
Normal file
File diff suppressed because it is too large
Load Diff
3656
data/text/pokedex.ts
Normal file
3656
data/text/pokedex.ts
Normal file
File diff suppressed because it is too large
Load Diff
65
sim/dex.ts
65
sim/dex.ts
|
|
@ -102,6 +102,12 @@ interface DexTableData {
|
|||
Conditions: DexTable<EffectData>;
|
||||
TypeChart: DexTable<TypeData>;
|
||||
}
|
||||
interface TextTableData {
|
||||
Abilities: AnyObject;
|
||||
Items: AnyObject;
|
||||
Moves: AnyObject;
|
||||
Pokedex: AnyObject;
|
||||
}
|
||||
|
||||
const Natures: {[k: string]: Nature} = {
|
||||
adamant: {name: "Adamant", plus: 'atk', minus: 'spa'},
|
||||
|
|
@ -155,6 +161,7 @@ export class ModdedDex {
|
|||
modsLoaded: boolean;
|
||||
|
||||
dataCache: DexTableData | null;
|
||||
textCache: TextTableData | null;
|
||||
formatsCache: DexTable<Format> | null;
|
||||
|
||||
deepClone = Utils.deepClone;
|
||||
|
|
@ -182,6 +189,7 @@ export class ModdedDex {
|
|||
this.modsLoaded = false;
|
||||
|
||||
this.dataCache = null;
|
||||
this.textCache = null;
|
||||
this.formatsCache = null;
|
||||
|
||||
if (!isOriginal) {
|
||||
|
|
@ -472,6 +480,35 @@ export class ModdedDex {
|
|||
return learnsetData;
|
||||
}
|
||||
|
||||
getDescs(table: keyof TextTableData, id: ID, dataEntry: AnyObject) {
|
||||
if (dataEntry.shortDesc) {
|
||||
return {
|
||||
desc: dataEntry.desc,
|
||||
shortDesc: dataEntry.shortDesc,
|
||||
};
|
||||
}
|
||||
const entry = this.loadTextData()[table][id];
|
||||
if (!entry) return null;
|
||||
const descs = {
|
||||
desc: '',
|
||||
shortDesc: '',
|
||||
};
|
||||
for (let i = this.gen; i < dexes['base'].gen; i++) {
|
||||
const curDesc = entry[`descGen${i}`];
|
||||
const curShortDesc = entry[`shortDescGen${i}`];
|
||||
if (!descs.desc && curDesc) {
|
||||
descs.desc = curDesc;
|
||||
}
|
||||
if (!descs.shortDesc && curShortDesc) {
|
||||
descs.shortDesc = curShortDesc;
|
||||
}
|
||||
if (descs.desc && descs.shortDesc) break;
|
||||
}
|
||||
if (!descs.shortDesc) descs.shortDesc = entry.shortDesc || '';
|
||||
if (!descs.desc) descs.desc = entry.desc || descs.shortDesc;
|
||||
return descs;
|
||||
}
|
||||
|
||||
getMove(name?: string | Move): Move {
|
||||
if (name && typeof name !== 'string') return name;
|
||||
|
||||
|
|
@ -490,7 +527,9 @@ export class ModdedDex {
|
|||
id = /([a-z]*)([0-9]*)/.exec(id)![1] as ID;
|
||||
}
|
||||
if (id && this.data.Moves.hasOwnProperty(id)) {
|
||||
move = new Data.Move({name}, this.data.Moves[id]);
|
||||
const moveData = this.data.Moves[id];
|
||||
const moveTextData = this.getDescs('Moves', id, moveData);
|
||||
move = new Data.Move({name}, moveData, moveTextData);
|
||||
if (move.gen > this.gen) {
|
||||
(move as any).isNonstandard = 'Future';
|
||||
}
|
||||
|
|
@ -655,7 +694,9 @@ export class ModdedDex {
|
|||
return item;
|
||||
}
|
||||
if (id && this.data.Items.hasOwnProperty(id)) {
|
||||
item = new Data.Item({name}, this.data.Items[id]);
|
||||
const itemData = this.data.Items[id];
|
||||
const itemTextData = this.getDescs('Items', id, itemData);
|
||||
item = new Data.Item({name}, itemData, itemTextData);
|
||||
if (item.gen > this.gen) {
|
||||
(item as any).isNonstandard = 'Future';
|
||||
}
|
||||
|
|
@ -685,7 +726,9 @@ export class ModdedDex {
|
|||
return ability;
|
||||
}
|
||||
if (id && this.data.Abilities.hasOwnProperty(id)) {
|
||||
ability = new Data.Ability({name}, this.data.Abilities[id]);
|
||||
const abilityData = this.data.Abilities[id];
|
||||
const abilityTextData = this.getDescs('Abilities', id, abilityData);
|
||||
ability = new Data.Ability({name}, abilityData, abilityTextData);
|
||||
if (ability.gen > this.gen) {
|
||||
(ability as any).isNonstandard = 'Future';
|
||||
}
|
||||
|
|
@ -1401,6 +1444,11 @@ export class ModdedDex {
|
|||
return {};
|
||||
}
|
||||
|
||||
loadTextFile(name: string, exportName: string): AnyObject {
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
return require(`${DATA_DIR}/text/${name}`)[exportName];
|
||||
}
|
||||
|
||||
includeMods(): ModdedDex {
|
||||
if (!this.isBase) throw new Error(`This must be called on the base Dex`);
|
||||
if (this.modsLoaded) return this;
|
||||
|
|
@ -1425,6 +1473,17 @@ export class ModdedDex {
|
|||
return this;
|
||||
}
|
||||
|
||||
loadTextData() {
|
||||
if (dexes['base'].textCache) return dexes['base'].textCache;
|
||||
dexes['base'].textCache = {
|
||||
Pokedex: this.loadTextFile('pokedex', 'PokedexText'),
|
||||
Moves: this.loadTextFile('moves', 'MovesText'),
|
||||
Abilities: this.loadTextFile('abilities', 'AbilitiesText'),
|
||||
Items: this.loadTextFile('items', 'ItemsText'),
|
||||
};
|
||||
return dexes['base'].textCache;
|
||||
}
|
||||
|
||||
loadData(): DexTableData {
|
||||
if (this.dataCache) return this.dataCache;
|
||||
dexes['base'].includeMods();
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"include": [
|
||||
"./config/*.ts",
|
||||
"./data/*",
|
||||
"./data/text/*",
|
||||
"./data/mods/*/*",
|
||||
"./dev-tools/*.ts",
|
||||
"./lib/*",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user