|
|
|
@ -69,7 +69,9 @@ export enum MoveFlags {
|
|
|
|
DANCE_MOVE = 4096,
|
|
|
|
DANCE_MOVE = 4096,
|
|
|
|
WIND_MOVE = 8192,
|
|
|
|
WIND_MOVE = 8192,
|
|
|
|
TRIAGE_MOVE = 16384,
|
|
|
|
TRIAGE_MOVE = 16384,
|
|
|
|
IGNORE_ABILITIES = 32768
|
|
|
|
IGNORE_ABILITIES = 32768,
|
|
|
|
|
|
|
|
MAGIC_COAT_MOVE = 65536
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean;
|
|
|
|
type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean;
|
|
|
|
@ -294,6 +296,11 @@ export default class Move implements Localizable {
|
|
|
|
return this;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
magicCoatMove(magicCoatMove?: boolean): this {
|
|
|
|
|
|
|
|
this.setFlag(MoveFlags.MAGIC_COAT_MOVE, magicCoatMove);
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ignoresAbilities(ignoresAbilities?: boolean): this {
|
|
|
|
ignoresAbilities(ignoresAbilities?: boolean): this {
|
|
|
|
this.setFlag(MoveFlags.IGNORE_ABILITIES, ignoresAbilities);
|
|
|
|
this.setFlag(MoveFlags.IGNORE_ABILITIES, ignoresAbilities);
|
|
|
|
return this;
|
|
|
|
return this;
|
|
|
|
@ -1558,7 +1565,7 @@ export class AcupressureStatChangeAttr extends MoveEffectAttr {
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export class GrowthStatChangeAttr extends StatChangeAttr {
|
|
|
|
export class GrowthStatChangeAttr extends StatChangeAttr {
|
|
|
|
@ -2090,9 +2097,9 @@ export class KnockOffPowerAttr extends VariablePowerAttr {
|
|
|
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
|
|
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
|
|
|
if(target.getHeldItems().length > 0){
|
|
|
|
if(target.getHeldItems().length > 0){
|
|
|
|
(args[0] as Utils.NumberHolder).value *= 1.5;
|
|
|
|
(args[0] as Utils.NumberHolder).value *= 1.5;
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -3999,7 +4006,8 @@ export function initMoves() {
|
|
|
|
.attr(ForceSwitchOutAttr)
|
|
|
|
.attr(ForceSwitchOutAttr)
|
|
|
|
.attr(HitsTagAttr, BattlerTagType.FLYING, false)
|
|
|
|
.attr(HitsTagAttr, BattlerTagType.FLYING, false)
|
|
|
|
.hidesTarget()
|
|
|
|
.hidesTarget()
|
|
|
|
.windMove(),
|
|
|
|
.windMove()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.FLY, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1)
|
|
|
|
new AttackMove(Moves.FLY, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1)
|
|
|
|
.attr(ChargeAttr, ChargeAnim.FLY_CHARGING, 'flew\nup high!', BattlerTagType.FLYING)
|
|
|
|
.attr(ChargeAttr, ChargeAnim.FLY_CHARGING, 'flew\nup high!', BattlerTagType.FLYING)
|
|
|
|
.condition(failOnGravityCondition)
|
|
|
|
.condition(failOnGravityCondition)
|
|
|
|
@ -4020,7 +4028,8 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.ROLLING_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 85, 15, 30, 0, 1)
|
|
|
|
new AttackMove(Moves.ROLLING_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 85, 15, 30, 0, 1)
|
|
|
|
.attr(FlinchAttr),
|
|
|
|
.attr(FlinchAttr),
|
|
|
|
new StatusMove(Moves.SAND_ATTACK, Type.GROUND, 100, 15, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.SAND_ATTACK, Type.GROUND, 100, 15, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ACC, -1),
|
|
|
|
.attr(StatChangeAttr, BattleStat.ACC, -1)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.HEADBUTT, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 15, 30, 0, 1)
|
|
|
|
new AttackMove(Moves.HEADBUTT, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 15, 30, 0, 1)
|
|
|
|
.attr(FlinchAttr),
|
|
|
|
.attr(FlinchAttr),
|
|
|
|
new AttackMove(Moves.HORN_ATTACK, Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, 0, 1),
|
|
|
|
new AttackMove(Moves.HORN_ATTACK, Type.NORMAL, MoveCategory.PHYSICAL, 65, 100, 25, -1, 0, 1),
|
|
|
|
@ -4044,7 +4053,8 @@ export function initMoves() {
|
|
|
|
.attr(RecoilAttr, false, 0.33),
|
|
|
|
.attr(RecoilAttr, false, 0.33),
|
|
|
|
new StatusMove(Moves.TAIL_WHIP, Type.NORMAL, 100, 30, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.TAIL_WHIP, Type.NORMAL, 100, 30, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, -1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, -1)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.POISON_STING, Type.POISON, MoveCategory.PHYSICAL, 15, 100, 35, 30, 0, 1)
|
|
|
|
new AttackMove(Moves.POISON_STING, Type.POISON, MoveCategory.PHYSICAL, 15, 100, 35, 30, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.POISON)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.POISON)
|
|
|
|
.makesContact(false),
|
|
|
|
.makesContact(false),
|
|
|
|
@ -4057,29 +4067,35 @@ export function initMoves() {
|
|
|
|
.makesContact(false),
|
|
|
|
.makesContact(false),
|
|
|
|
new StatusMove(Moves.LEER, Type.NORMAL, 100, 30, 100, 0, 1)
|
|
|
|
new StatusMove(Moves.LEER, Type.NORMAL, 100, 30, 100, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, -1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, -1)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.BITE, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 1)
|
|
|
|
new AttackMove(Moves.BITE, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, 30, 0, 1)
|
|
|
|
.attr(FlinchAttr)
|
|
|
|
.attr(FlinchAttr)
|
|
|
|
.bitingMove(),
|
|
|
|
.bitingMove(),
|
|
|
|
new StatusMove(Moves.GROWL, Type.NORMAL, 100, 40, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.GROWL, Type.NORMAL, 100, 40, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -1)
|
|
|
|
.soundBased()
|
|
|
|
.soundBased()
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.ROAR, Type.NORMAL, -1, 20, -1, -6, 1)
|
|
|
|
new StatusMove(Moves.ROAR, Type.NORMAL, -1, 20, -1, -6, 1)
|
|
|
|
.attr(ForceSwitchOutAttr)
|
|
|
|
.attr(ForceSwitchOutAttr)
|
|
|
|
.soundBased()
|
|
|
|
.soundBased()
|
|
|
|
.hidesTarget(),
|
|
|
|
.hidesTarget()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.SING, Type.NORMAL, 55, 15, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.SING, Type.NORMAL, 55, 15, -1, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
.soundBased(),
|
|
|
|
.soundBased()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.SUPERSONIC, Type.NORMAL, 55, 20, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.SUPERSONIC, Type.NORMAL, 55, 20, -1, 0, 1)
|
|
|
|
.attr(ConfuseAttr)
|
|
|
|
.attr(ConfuseAttr)
|
|
|
|
.soundBased(),
|
|
|
|
.soundBased()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.SONIC_BOOM, Type.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, 0, 1)
|
|
|
|
new AttackMove(Moves.SONIC_BOOM, Type.NORMAL, MoveCategory.SPECIAL, -1, 90, 20, -1, 0, 1)
|
|
|
|
.attr(FixedDamageAttr, 20),
|
|
|
|
.attr(FixedDamageAttr, 20),
|
|
|
|
new StatusMove(Moves.DISABLE, Type.NORMAL, 100, 20, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.DISABLE, Type.NORMAL, 100, 20, -1, 0, 1)
|
|
|
|
.attr(DisableMoveAttr)
|
|
|
|
.attr(DisableMoveAttr)
|
|
|
|
.condition(failOnMaxCondition),
|
|
|
|
.condition(failOnMaxCondition)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.ACID, Type.POISON, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1)
|
|
|
|
new AttackMove(Moves.ACID, Type.POISON, MoveCategory.SPECIAL, 40, 100, 30, 10, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, -1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, -1)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
@ -4131,7 +4147,8 @@ export function initMoves() {
|
|
|
|
.triageMove(),
|
|
|
|
.triageMove(),
|
|
|
|
new StatusMove(Moves.LEECH_SEED, Type.GRASS, 90, 10, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.LEECH_SEED, Type.GRASS, 90, 10, -1, 0, 1)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.SEEDED)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.SEEDED)
|
|
|
|
.condition((user, target, move) => !target.getTag(BattlerTagType.SEEDED) && !target.isOfType(Type.GRASS)),
|
|
|
|
.condition((user, target, move) => !target.getTag(BattlerTagType.SEEDED) && !target.isOfType(Type.GRASS))
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new SelfStatusMove(Moves.GROWTH, Type.NORMAL, -1, 20, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.GROWTH, Type.NORMAL, -1, 20, -1, 0, 1)
|
|
|
|
.attr(GrowthStatChangeAttr),
|
|
|
|
.attr(GrowthStatChangeAttr),
|
|
|
|
new AttackMove(Moves.RAZOR_LEAF, Type.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, 0, 1)
|
|
|
|
new AttackMove(Moves.RAZOR_LEAF, Type.GRASS, MoveCategory.PHYSICAL, 55, 95, 25, -1, 0, 1)
|
|
|
|
@ -4145,13 +4162,16 @@ export function initMoves() {
|
|
|
|
.ignoresVirtual(),
|
|
|
|
.ignoresVirtual(),
|
|
|
|
new StatusMove(Moves.POISON_POWDER, Type.POISON, 75, 35, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.POISON_POWDER, Type.POISON, 75, 35, -1, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.POISON)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.POISON)
|
|
|
|
.powderMove(),
|
|
|
|
.powderMove()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.STUN_SPORE, Type.GRASS, 75, 30, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.STUN_SPORE, Type.GRASS, 75, 30, -1, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
|
|
|
.powderMove(),
|
|
|
|
.powderMove()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.SLEEP_POWDER, Type.GRASS, 75, 15, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.SLEEP_POWDER, Type.GRASS, 75, 15, -1, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
.powderMove(),
|
|
|
|
.powderMove()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.PETAL_DANCE, Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1)
|
|
|
|
new AttackMove(Moves.PETAL_DANCE, Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1)
|
|
|
|
.attr(FrenzyAttr)
|
|
|
|
.attr(FrenzyAttr)
|
|
|
|
.attr(MissEffectAttr, frenzyMissFunc)
|
|
|
|
.attr(MissEffectAttr, frenzyMissFunc)
|
|
|
|
@ -4160,7 +4180,8 @@ export function initMoves() {
|
|
|
|
.target(MoveTarget.RANDOM_NEAR_ENEMY),
|
|
|
|
.target(MoveTarget.RANDOM_NEAR_ENEMY),
|
|
|
|
new StatusMove(Moves.STRING_SHOT, Type.BUG, 95, 40, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.STRING_SHOT, Type.BUG, 95, 40, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -2)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.DRAGON_RAGE, Type.DRAGON, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 1)
|
|
|
|
new AttackMove(Moves.DRAGON_RAGE, Type.DRAGON, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 1)
|
|
|
|
.attr(FixedDamageAttr, 40),
|
|
|
|
.attr(FixedDamageAttr, 40),
|
|
|
|
new AttackMove(Moves.FIRE_SPIN, Type.FIRE, MoveCategory.SPECIAL, 35, 85, 15, 100, 0, 1)
|
|
|
|
new AttackMove(Moves.FIRE_SPIN, Type.FIRE, MoveCategory.SPECIAL, 35, 85, 15, 100, 0, 1)
|
|
|
|
@ -4171,7 +4192,8 @@ export function initMoves() {
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
|
|
|
|
new StatusMove(Moves.THUNDER_WAVE, Type.ELECTRIC, 90, 20, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.THUNDER_WAVE, Type.ELECTRIC, 90, 20, -1, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
|
|
|
.attr(StatusMoveTypeImmunityAttr, Type.GROUND),
|
|
|
|
.attr(StatusMoveTypeImmunityAttr, Type.GROUND)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.THUNDER, Type.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 1)
|
|
|
|
new AttackMove(Moves.THUNDER, Type.ELECTRIC, MoveCategory.SPECIAL, 110, 70, 10, 30, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
|
|
|
.attr(ThunderAccuracyAttr)
|
|
|
|
.attr(ThunderAccuracyAttr)
|
|
|
|
@ -4191,6 +4213,7 @@ export function initMoves() {
|
|
|
|
.attr(ChargeAttr, ChargeAnim.DIG_CHARGING, 'dug a hole!', BattlerTagType.UNDERGROUND)
|
|
|
|
.attr(ChargeAttr, ChargeAnim.DIG_CHARGING, 'dug a hole!', BattlerTagType.UNDERGROUND)
|
|
|
|
.ignoresVirtual(),
|
|
|
|
.ignoresVirtual(),
|
|
|
|
new StatusMove(Moves.TOXIC, Type.POISON, 90, 10, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.TOXIC, Type.POISON, 90, 10, -1, 0, 1)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.TOXIC)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.TOXIC)
|
|
|
|
.attr(ToxicAccuracyAttr),
|
|
|
|
.attr(ToxicAccuracyAttr),
|
|
|
|
new AttackMove(Moves.CONFUSION, Type.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, 10, 0, 1)
|
|
|
|
new AttackMove(Moves.CONFUSION, Type.PSYCHIC, MoveCategory.SPECIAL, 50, 100, 25, 10, 0, 1)
|
|
|
|
@ -4198,7 +4221,8 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.PSYCHIC, Type.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1)
|
|
|
|
new AttackMove(Moves.PSYCHIC, Type.PSYCHIC, MoveCategory.SPECIAL, 90, 100, 10, 10, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, -1),
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, -1),
|
|
|
|
new StatusMove(Moves.HYPNOSIS, Type.PSYCHIC, 60, 20, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.HYPNOSIS, Type.PSYCHIC, 60, 20, -1, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP),
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new SelfStatusMove(Moves.MEDITATE, Type.PSYCHIC, -1, 40, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.MEDITATE, Type.PSYCHIC, -1, 40, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, 1, true),
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, 1, true),
|
|
|
|
new SelfStatusMove(Moves.AGILITY, Type.PSYCHIC, -1, 30, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.AGILITY, Type.PSYCHIC, -1, 30, -1, 0, 1)
|
|
|
|
@ -4216,7 +4240,8 @@ export function initMoves() {
|
|
|
|
.ignoresVirtual(),
|
|
|
|
.ignoresVirtual(),
|
|
|
|
new StatusMove(Moves.SCREECH, Type.NORMAL, 85, 40, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.SCREECH, Type.NORMAL, 85, 40, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, -2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, -2)
|
|
|
|
.soundBased(),
|
|
|
|
.soundBased()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new SelfStatusMove(Moves.DOUBLE_TEAM, Type.NORMAL, -1, 15, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.DOUBLE_TEAM, Type.NORMAL, -1, 15, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.EVA, 1, true),
|
|
|
|
.attr(StatChangeAttr, BattleStat.EVA, 1, true),
|
|
|
|
new SelfStatusMove(Moves.RECOVER, Type.NORMAL, -1, 5, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.RECOVER, Type.NORMAL, -1, 5, -1, 0, 1)
|
|
|
|
@ -4227,9 +4252,11 @@ export function initMoves() {
|
|
|
|
new SelfStatusMove(Moves.MINIMIZE, Type.NORMAL, -1, 10, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.MINIMIZE, Type.NORMAL, -1, 10, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.EVA, 2, true),
|
|
|
|
.attr(StatChangeAttr, BattleStat.EVA, 2, true),
|
|
|
|
new StatusMove(Moves.SMOKESCREEN, Type.NORMAL, 100, 20, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.SMOKESCREEN, Type.NORMAL, 100, 20, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ACC, -1),
|
|
|
|
.attr(StatChangeAttr, BattleStat.ACC, -1)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.CONFUSE_RAY, Type.GHOST, 100, 10, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.CONFUSE_RAY, Type.GHOST, 100, 10, -1, 0, 1)
|
|
|
|
.attr(ConfuseAttr),
|
|
|
|
.attr(ConfuseAttr)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new SelfStatusMove(Moves.WITHDRAW, Type.WATER, -1, 40, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.WITHDRAW, Type.WATER, -1, 40, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, 1, true),
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, 1, true),
|
|
|
|
new SelfStatusMove(Moves.DEFENSE_CURL, Type.NORMAL, -1, 40, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.DEFENSE_CURL, Type.NORMAL, -1, 40, -1, 0, 1)
|
|
|
|
@ -4294,7 +4321,8 @@ export function initMoves() {
|
|
|
|
new SelfStatusMove(Moves.AMNESIA, Type.PSYCHIC, -1, 20, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.AMNESIA, Type.PSYCHIC, -1, 20, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, 2, true),
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, 2, true),
|
|
|
|
new StatusMove(Moves.KINESIS, Type.PSYCHIC, 80, 15, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.KINESIS, Type.PSYCHIC, 80, 15, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ACC, -1),
|
|
|
|
.attr(StatChangeAttr, BattleStat.ACC, -1)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new SelfStatusMove(Moves.SOFT_BOILED, Type.NORMAL, -1, 5, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.SOFT_BOILED, Type.NORMAL, -1, 5, -1, 0, 1)
|
|
|
|
.attr(HealAttr, 0.5)
|
|
|
|
.attr(HealAttr, 0.5)
|
|
|
|
.triageMove(),
|
|
|
|
.triageMove(),
|
|
|
|
@ -4303,14 +4331,16 @@ export function initMoves() {
|
|
|
|
.attr(NoEffectAttr, crashDamageFunc)
|
|
|
|
.attr(NoEffectAttr, crashDamageFunc)
|
|
|
|
.condition(failOnGravityCondition),
|
|
|
|
.condition(failOnGravityCondition),
|
|
|
|
new StatusMove(Moves.GLARE, Type.NORMAL, 100, 30, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.GLARE, Type.NORMAL, 100, 30, -1, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.DREAM_EATER, Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, 0, 1)
|
|
|
|
new AttackMove(Moves.DREAM_EATER, Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, 0, 1)
|
|
|
|
.attr(HitHealAttr)
|
|
|
|
.attr(HitHealAttr)
|
|
|
|
.condition((user, target, move) => target.status?.effect === StatusEffect.SLEEP)
|
|
|
|
.condition((user, target, move) => target.status?.effect === StatusEffect.SLEEP)
|
|
|
|
.triageMove(),
|
|
|
|
.triageMove(),
|
|
|
|
new StatusMove(Moves.POISON_GAS, Type.POISON, 90, 40, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.POISON_GAS, Type.POISON, 90, 40, -1, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.POISON)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.POISON)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.BARRAGE, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1)
|
|
|
|
new AttackMove(Moves.BARRAGE, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1)
|
|
|
|
.attr(MultiHitAttr)
|
|
|
|
.attr(MultiHitAttr)
|
|
|
|
.makesContact(false)
|
|
|
|
.makesContact(false)
|
|
|
|
@ -4319,7 +4349,8 @@ export function initMoves() {
|
|
|
|
.attr(HitHealAttr)
|
|
|
|
.attr(HitHealAttr)
|
|
|
|
.triageMove(),
|
|
|
|
.triageMove(),
|
|
|
|
new StatusMove(Moves.LOVELY_KISS, Type.NORMAL, 75, 10, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.LOVELY_KISS, Type.NORMAL, 75, 10, -1, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP),
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.SKY_ATTACK, Type.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 1)
|
|
|
|
new AttackMove(Moves.SKY_ATTACK, Type.FLYING, MoveCategory.PHYSICAL, 140, 90, 5, 30, 0, 1)
|
|
|
|
.attr(ChargeAttr, ChargeAnim.SKY_ATTACK_CHARGING, 'is glowing!')
|
|
|
|
.attr(ChargeAttr, ChargeAnim.SKY_ATTACK_CHARGING, 'is glowing!')
|
|
|
|
.attr(HighCritAttr)
|
|
|
|
.attr(HighCritAttr)
|
|
|
|
@ -4337,9 +4368,11 @@ export function initMoves() {
|
|
|
|
.punchingMove(),
|
|
|
|
.punchingMove(),
|
|
|
|
new StatusMove(Moves.SPORE, Type.GRASS, 100, 15, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.SPORE, Type.GRASS, 100, 15, -1, 0, 1)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
.powderMove(),
|
|
|
|
.powderMove()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.FLASH, Type.NORMAL, 100, 20, -1, 0, 1)
|
|
|
|
new StatusMove(Moves.FLASH, Type.NORMAL, 100, 20, -1, 0, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ACC, -1),
|
|
|
|
.attr(StatChangeAttr, BattleStat.ACC, -1)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.PSYWAVE, Type.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1)
|
|
|
|
new AttackMove(Moves.PSYWAVE, Type.PSYCHIC, MoveCategory.SPECIAL, -1, 100, 15, -1, 0, 1)
|
|
|
|
.attr(RandomLevelDamageAttr),
|
|
|
|
.attr(RandomLevelDamageAttr),
|
|
|
|
new SelfStatusMove(Moves.SPLASH, Type.NORMAL, -1, 40, -1, 0, 1)
|
|
|
|
new SelfStatusMove(Moves.SPLASH, Type.NORMAL, -1, 40, -1, 0, 1)
|
|
|
|
@ -4402,7 +4435,8 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.THIEF, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 2)
|
|
|
|
new AttackMove(Moves.THIEF, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 2)
|
|
|
|
.attr(StealHeldItemChanceAttr, 0.3),
|
|
|
|
.attr(StealHeldItemChanceAttr, 0.3),
|
|
|
|
new StatusMove(Moves.SPIDER_WEB, Type.BUG, -1, 10, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.SPIDER_WEB, Type.BUG, -1, 10, -1, 0, 2)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1),
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.MIND_READER, Type.NORMAL, -1, 5, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.MIND_READER, Type.NORMAL, -1, 5, -1, 0, 2)
|
|
|
|
.attr(IgnoreAccuracyAttr),
|
|
|
|
.attr(IgnoreAccuracyAttr),
|
|
|
|
new StatusMove(Moves.NIGHTMARE, Type.GHOST, 100, 15, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.NIGHTMARE, Type.GHOST, 100, 15, -1, 0, 2)
|
|
|
|
@ -4428,11 +4462,13 @@ export function initMoves() {
|
|
|
|
new StatusMove(Moves.COTTON_SPORE, Type.GRASS, 100, 40, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.COTTON_SPORE, Type.GRASS, 100, 40, -1, 0, 2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -2)
|
|
|
|
.powderMove()
|
|
|
|
.powderMove()
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.REVERSAL, Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2)
|
|
|
|
new AttackMove(Moves.REVERSAL, Type.FIGHTING, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2)
|
|
|
|
.attr(LowHpPowerAttr),
|
|
|
|
.attr(LowHpPowerAttr),
|
|
|
|
new StatusMove(Moves.SPITE, Type.GHOST, 100, 10, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.SPITE, Type.GHOST, 100, 10, -1, 0, 2)
|
|
|
|
.attr(ReducePpMoveAttr),
|
|
|
|
.attr(ReducePpMoveAttr)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.POWDER_SNOW, Type.ICE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 2)
|
|
|
|
new AttackMove(Moves.POWDER_SNOW, Type.ICE, MoveCategory.SPECIAL, 40, 100, 25, 10, 0, 2)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.FREEZE)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.FREEZE)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
@ -4441,10 +4477,12 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.MACH_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 2)
|
|
|
|
new AttackMove(Moves.MACH_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 30, -1, 1, 2)
|
|
|
|
.punchingMove(),
|
|
|
|
.punchingMove(),
|
|
|
|
new StatusMove(Moves.SCARY_FACE, Type.NORMAL, 100, 10, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.SCARY_FACE, Type.NORMAL, 100, 10, -1, 0, 2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -2),
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -2)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.FEINT_ATTACK, Type.DARK, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 2),
|
|
|
|
new AttackMove(Moves.FEINT_ATTACK, Type.DARK, MoveCategory.PHYSICAL, 60, -1, 20, -1, 0, 2),
|
|
|
|
new StatusMove(Moves.SWEET_KISS, Type.FAIRY, 75, 10, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.SWEET_KISS, Type.FAIRY, 75, 10, -1, 0, 2)
|
|
|
|
.attr(ConfuseAttr),
|
|
|
|
.attr(ConfuseAttr)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new SelfStatusMove(Moves.BELLY_DRUM, Type.NORMAL, -1, 10, -1, 0, 2)
|
|
|
|
new SelfStatusMove(Moves.BELLY_DRUM, Type.NORMAL, -1, 10, -1, 0, 2)
|
|
|
|
.attr(HalfHpStatMaxAttr, BattleStat.ATK),
|
|
|
|
.attr(HalfHpStatMaxAttr, BattleStat.ATK),
|
|
|
|
new AttackMove(Moves.SLUDGE_BOMB, Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 30, 0, 2)
|
|
|
|
new AttackMove(Moves.SLUDGE_BOMB, Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 30, 0, 2)
|
|
|
|
@ -4462,6 +4500,7 @@ export function initMoves() {
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS)
|
|
|
|
.ballBombMove(),
|
|
|
|
.ballBombMove(),
|
|
|
|
new StatusMove(Moves.FORESIGHT, Type.NORMAL, -1, 40, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.FORESIGHT, Type.NORMAL, -1, 40, -1, 0, 2)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new SelfStatusMove(Moves.DESTINY_BOND, Type.GHOST, -1, 5, -1, 0, 2)
|
|
|
|
new SelfStatusMove(Moves.DESTINY_BOND, Type.GHOST, -1, 5, -1, 0, 2)
|
|
|
|
.ignoresProtect()
|
|
|
|
.ignoresProtect()
|
|
|
|
@ -4497,14 +4536,16 @@ export function initMoves() {
|
|
|
|
new SelfStatusMove(Moves.ENDURE, Type.NORMAL, -1, 10, -1, 4, 2)
|
|
|
|
new SelfStatusMove(Moves.ENDURE, Type.NORMAL, -1, 10, -1, 4, 2)
|
|
|
|
.attr(EndureAttr),
|
|
|
|
.attr(EndureAttr),
|
|
|
|
new StatusMove(Moves.CHARM, Type.FAIRY, 100, 20, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.CHARM, Type.FAIRY, 100, 20, -1, 0, 2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -2),
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -2)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.ROLLOUT, Type.ROCK, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 2)
|
|
|
|
new AttackMove(Moves.ROLLOUT, Type.ROCK, MoveCategory.PHYSICAL, 30, 90, 20, -1, 0, 2)
|
|
|
|
.attr(ConsecutiveUseDoublePowerAttr, 5, true, true, Moves.DEFENSE_CURL),
|
|
|
|
.attr(ConsecutiveUseDoublePowerAttr, 5, true, true, Moves.DEFENSE_CURL),
|
|
|
|
new AttackMove(Moves.FALSE_SWIPE, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 2)
|
|
|
|
new AttackMove(Moves.FALSE_SWIPE, Type.NORMAL, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 2)
|
|
|
|
.attr(SurviveDamageAttr),
|
|
|
|
.attr(SurviveDamageAttr),
|
|
|
|
new StatusMove(Moves.SWAGGER, Type.NORMAL, 85, 15, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.SWAGGER, Type.NORMAL, 85, 15, -1, 0, 2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, 2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, 2)
|
|
|
|
.attr(ConfuseAttr),
|
|
|
|
.attr(ConfuseAttr)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new SelfStatusMove(Moves.MILK_DRINK, Type.NORMAL, -1, 5, -1, 0, 2)
|
|
|
|
new SelfStatusMove(Moves.MILK_DRINK, Type.NORMAL, -1, 5, -1, 0, 2)
|
|
|
|
.attr(HealAttr, 0.5)
|
|
|
|
.attr(HealAttr, 0.5)
|
|
|
|
.triageMove(),
|
|
|
|
.triageMove(),
|
|
|
|
@ -4516,8 +4557,10 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.STEEL_WING, Type.STEEL, MoveCategory.PHYSICAL, 70, 90, 25, 10, 0, 2)
|
|
|
|
new AttackMove(Moves.STEEL_WING, Type.STEEL, MoveCategory.PHYSICAL, 70, 90, 25, 10, 0, 2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, 1, true),
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, 1, true),
|
|
|
|
new StatusMove(Moves.MEAN_LOOK, Type.NORMAL, -1, 5, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.MEAN_LOOK, Type.NORMAL, -1, 5, -1, 0, 2)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1),
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.ATTRACT, Type.NORMAL, 100, 15, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.ATTRACT, Type.NORMAL, 100, 15, -1, 0, 2)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.INFATUATED)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.INFATUATED)
|
|
|
|
.condition((user, target, move) => user.isOppositeGender(target)),
|
|
|
|
.condition((user, target, move) => user.isOppositeGender(target)),
|
|
|
|
new SelfStatusMove(Moves.SLEEP_TALK, Type.NORMAL, -1, 10, -1, 0, 2)
|
|
|
|
new SelfStatusMove(Moves.SLEEP_TALK, Type.NORMAL, -1, 10, -1, 0, 2)
|
|
|
|
@ -4563,7 +4606,8 @@ export function initMoves() {
|
|
|
|
.hidesUser(),
|
|
|
|
.hidesUser(),
|
|
|
|
new StatusMove(Moves.ENCORE, Type.NORMAL, 100, 5, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.ENCORE, Type.NORMAL, 100, 5, -1, 0, 2)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.ENCORE, false, true)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.ENCORE, false, true)
|
|
|
|
.condition((user, target, move) => new EncoreTag(user.id).canAdd(target)),
|
|
|
|
.condition((user, target, move) => new EncoreTag(user.id).canAdd(target))
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.PURSUIT, Type.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 2)
|
|
|
|
new AttackMove(Moves.PURSUIT, Type.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 2)
|
|
|
|
.partial(),
|
|
|
|
.partial(),
|
|
|
|
new AttackMove(Moves.RAPID_SPIN, Type.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, 100, 0, 2)
|
|
|
|
new AttackMove(Moves.RAPID_SPIN, Type.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, 100, 0, 2)
|
|
|
|
@ -4584,7 +4628,8 @@ export function initMoves() {
|
|
|
|
.partial(),
|
|
|
|
.partial(),
|
|
|
|
new StatusMove(Moves.SWEET_SCENT, Type.NORMAL, 100, 20, -1, 0, 2)
|
|
|
|
new StatusMove(Moves.SWEET_SCENT, Type.NORMAL, 100, 20, -1, 0, 2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.EVA, -1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.EVA, -1)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.IRON_TAIL, Type.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, 30, 0, 2)
|
|
|
|
new AttackMove(Moves.IRON_TAIL, Type.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, 30, 0, 2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, -1),
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, -1),
|
|
|
|
new AttackMove(Moves.METAL_CLAW, Type.STEEL, MoveCategory.PHYSICAL, 50, 95, 35, 10, 0, 2)
|
|
|
|
new AttackMove(Moves.METAL_CLAW, Type.STEEL, MoveCategory.PHYSICAL, 50, 95, 35, 10, 0, 2)
|
|
|
|
@ -4662,12 +4707,15 @@ export function initMoves() {
|
|
|
|
.attr(WeatherChangeAttr, WeatherType.HAIL)
|
|
|
|
.attr(WeatherChangeAttr, WeatherType.HAIL)
|
|
|
|
.target(MoveTarget.BOTH_SIDES),
|
|
|
|
.target(MoveTarget.BOTH_SIDES),
|
|
|
|
new StatusMove(Moves.TORMENT, Type.DARK, 100, 15, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.TORMENT, Type.DARK, 100, 15, -1, 0, 3)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new StatusMove(Moves.FLATTER, Type.DARK, 100, 15, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.FLATTER, Type.DARK, 100, 15, -1, 0, 3)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPATK, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPATK, 1)
|
|
|
|
.attr(ConfuseAttr),
|
|
|
|
.attr(ConfuseAttr)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.WILL_O_WISP, Type.FIRE, 85, 15, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.WILL_O_WISP, Type.FIRE, 85, 15, -1, 0, 3)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.BURN),
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.BURN)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.MEMENTO, Type.DARK, 100, 10, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.MEMENTO, Type.DARK, 100, 10, -1, 0, 3)
|
|
|
|
.attr(SacrificialAttr)
|
|
|
|
.attr(SacrificialAttr)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -2),
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -2),
|
|
|
|
@ -4690,6 +4738,7 @@ export function initMoves() {
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, 1, true)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, 1, true)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.CHARGED, true, true),
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.CHARGED, true, true),
|
|
|
|
new StatusMove(Moves.TAUNT, Type.DARK, 100, 20, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.TAUNT, Type.DARK, 100, 20, -1, 0, 3)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new StatusMove(Moves.HELPING_HAND, Type.NORMAL, -1, 20, -1, 5, 3)
|
|
|
|
new StatusMove(Moves.HELPING_HAND, Type.NORMAL, -1, 20, -1, 5, 3)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.HELPING_HAND)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.HELPING_HAND)
|
|
|
|
@ -4709,7 +4758,7 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.SUPERPOWER, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, 100, 0, 3)
|
|
|
|
new AttackMove(Moves.SUPERPOWER, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, 100, 0, 3)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], -1, true),
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], -1, true),
|
|
|
|
new SelfStatusMove(Moves.MAGIC_COAT, Type.PSYCHIC, -1, 15, -1, 4, 3)
|
|
|
|
new SelfStatusMove(Moves.MAGIC_COAT, Type.PSYCHIC, -1, 15, -1, 4, 3)
|
|
|
|
.unimplemented(),
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.MAGIC_COAT),
|
|
|
|
new SelfStatusMove(Moves.RECYCLE, Type.NORMAL, -1, 10, -1, 0, 3)
|
|
|
|
new SelfStatusMove(Moves.RECYCLE, Type.NORMAL, -1, 10, -1, 0, 3)
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new AttackMove(Moves.REVENGE, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 3)
|
|
|
|
new AttackMove(Moves.REVENGE, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, -4, 3)
|
|
|
|
@ -4718,7 +4767,8 @@ export function initMoves() {
|
|
|
|
.attr(RemoveScreensAttr),
|
|
|
|
.attr(RemoveScreensAttr),
|
|
|
|
new StatusMove(Moves.YAWN, Type.NORMAL, -1, 10, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.YAWN, Type.NORMAL, -1, 10, -1, 0, 3)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.DROWSY, false, true)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.DROWSY, false, true)
|
|
|
|
.condition((user, target, move) => !target.status),
|
|
|
|
.condition((user, target, move) => !target.status)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.KNOCK_OFF, Type.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, 0, 3)
|
|
|
|
new AttackMove(Moves.KNOCK_OFF, Type.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, 0, 3)
|
|
|
|
.attr(KnockOffPowerAttr)
|
|
|
|
.attr(KnockOffPowerAttr)
|
|
|
|
.partial(),
|
|
|
|
.partial(),
|
|
|
|
@ -4758,7 +4808,8 @@ export function initMoves() {
|
|
|
|
.ballBombMove(),
|
|
|
|
.ballBombMove(),
|
|
|
|
new StatusMove(Moves.FEATHER_DANCE, Type.FLYING, 100, 15, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.FEATHER_DANCE, Type.FLYING, 100, 15, -1, 0, 3)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -2)
|
|
|
|
.danceMove(),
|
|
|
|
.danceMove()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.TEETER_DANCE, Type.NORMAL, 100, 20, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.TEETER_DANCE, Type.NORMAL, 100, 20, -1, 0, 3)
|
|
|
|
.attr(ConfuseAttr)
|
|
|
|
.attr(ConfuseAttr)
|
|
|
|
.danceMove()
|
|
|
|
.danceMove()
|
|
|
|
@ -4802,7 +4853,8 @@ export function initMoves() {
|
|
|
|
.target(MoveTarget.USER_AND_ALLIES)
|
|
|
|
.target(MoveTarget.USER_AND_ALLIES)
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new StatusMove(Moves.FAKE_TEARS, Type.DARK, 100, 20, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.FAKE_TEARS, Type.DARK, 100, 20, -1, 0, 3)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, -2),
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, -2)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.AIR_CUTTER, Type.FLYING, MoveCategory.SPECIAL, 60, 95, 25, -1, 0, 3)
|
|
|
|
new AttackMove(Moves.AIR_CUTTER, Type.FLYING, MoveCategory.SPECIAL, 60, 95, 25, -1, 0, 3)
|
|
|
|
.attr(HighCritAttr)
|
|
|
|
.attr(HighCritAttr)
|
|
|
|
.slicingMove()
|
|
|
|
.slicingMove()
|
|
|
|
@ -4812,6 +4864,7 @@ export function initMoves() {
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPATK, -2, true)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPATK, -2, true)
|
|
|
|
.attr(HealStatusEffectAttr, true, StatusEffect.FREEZE),
|
|
|
|
.attr(HealStatusEffectAttr, true, StatusEffect.FREEZE),
|
|
|
|
new StatusMove(Moves.ODOR_SLEUTH, Type.NORMAL, -1, 40, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.ODOR_SLEUTH, Type.NORMAL, -1, 40, -1, 0, 3)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new AttackMove(Moves.ROCK_TOMB, Type.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 100, 0, 3)
|
|
|
|
new AttackMove(Moves.ROCK_TOMB, Type.ROCK, MoveCategory.PHYSICAL, 60, 95, 15, 100, 0, 3)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -1)
|
|
|
|
@ -4821,12 +4874,15 @@ export function initMoves() {
|
|
|
|
.windMove(),
|
|
|
|
.windMove(),
|
|
|
|
new StatusMove(Moves.METAL_SOUND, Type.STEEL, 85, 40, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.METAL_SOUND, Type.STEEL, 85, 40, -1, 0, 3)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, -2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, -2)
|
|
|
|
.soundBased(),
|
|
|
|
.soundBased()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.GRASS_WHISTLE, Type.GRASS, 55, 15, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.GRASS_WHISTLE, Type.GRASS, 55, 15, -1, 0, 3)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
.soundBased(),
|
|
|
|
.soundBased()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.TICKLE, Type.NORMAL, 100, 20, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.TICKLE, Type.NORMAL, 100, 20, -1, 0, 3)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], -1),
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], -1)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new SelfStatusMove(Moves.COSMIC_POWER, Type.PSYCHIC, -1, 20, -1, 0, 3)
|
|
|
|
new SelfStatusMove(Moves.COSMIC_POWER, Type.PSYCHIC, -1, 20, -1, 0, 3)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], 1, true),
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], 1, true),
|
|
|
|
new AttackMove(Moves.WATER_SPOUT, Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3)
|
|
|
|
new AttackMove(Moves.WATER_SPOUT, Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3)
|
|
|
|
@ -4862,6 +4918,7 @@ export function initMoves() {
|
|
|
|
new SelfStatusMove(Moves.IRON_DEFENSE, Type.STEEL, -1, 15, -1, 0, 3)
|
|
|
|
new SelfStatusMove(Moves.IRON_DEFENSE, Type.STEEL, -1, 15, -1, 0, 3)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, 2, true),
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, 2, true),
|
|
|
|
new StatusMove(Moves.BLOCK, Type.NORMAL, -1, 5, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.BLOCK, Type.NORMAL, -1, 5, -1, 0, 3)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1),
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1),
|
|
|
|
new StatusMove(Moves.HOWL, Type.NORMAL, -1, 40, -1, 0, 3)
|
|
|
|
new StatusMove(Moves.HOWL, Type.NORMAL, -1, 40, -1, 0, 3)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, 1)
|
|
|
|
@ -4919,6 +4976,7 @@ export function initMoves() {
|
|
|
|
.attr(AddArenaTagAttr, ArenaTagType.GRAVITY, 5)
|
|
|
|
.attr(AddArenaTagAttr, ArenaTagType.GRAVITY, 5)
|
|
|
|
.target(MoveTarget.BOTH_SIDES),
|
|
|
|
.target(MoveTarget.BOTH_SIDES),
|
|
|
|
new StatusMove(Moves.MIRACLE_EYE, Type.PSYCHIC, -1, 40, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.MIRACLE_EYE, Type.PSYCHIC, -1, 40, -1, 0, 4)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new AttackMove(Moves.WAKE_UP_SLAP, Type.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 4)
|
|
|
|
new AttackMove(Moves.WAKE_UP_SLAP, Type.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 4)
|
|
|
|
.attr(MovePowerMultiplierAttr, (user, target, move) => target.status?.effect === StatusEffect.SLEEP ? 2 : 1)
|
|
|
|
.attr(MovePowerMultiplierAttr, (user, target, move) => target.status?.effect === StatusEffect.SLEEP ? 2 : 1)
|
|
|
|
@ -4963,6 +5021,7 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.ASSURANCE, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 4)
|
|
|
|
new AttackMove(Moves.ASSURANCE, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 4)
|
|
|
|
.attr(MovePowerMultiplierAttr, (user, target, move) => target.turnData.damageTaken > 0 ? 2 : 1),
|
|
|
|
.attr(MovePowerMultiplierAttr, (user, target, move) => target.turnData.damageTaken > 0 ? 2 : 1),
|
|
|
|
new StatusMove(Moves.EMBARGO, Type.DARK, 100, 15, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.EMBARGO, Type.DARK, 100, 15, -1, 0, 4)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new AttackMove(Moves.FLING, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4)
|
|
|
|
new AttackMove(Moves.FLING, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4)
|
|
|
|
.makesContact(false)
|
|
|
|
.makesContact(false)
|
|
|
|
@ -4981,6 +5040,7 @@ export function initMoves() {
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new StatusMove(Moves.HEAL_BLOCK, Type.PSYCHIC, 100, 15, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.HEAL_BLOCK, Type.PSYCHIC, 100, 15, -1, 0, 4)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new AttackMove(Moves.WRING_OUT, Type.NORMAL, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 4)
|
|
|
|
new AttackMove(Moves.WRING_OUT, Type.NORMAL, MoveCategory.SPECIAL, -1, 100, 5, -1, 0, 4)
|
|
|
|
.attr(OpponentHighHpPowerAttr)
|
|
|
|
.attr(OpponentHighHpPowerAttr)
|
|
|
|
@ -4988,7 +5048,8 @@ export function initMoves() {
|
|
|
|
new SelfStatusMove(Moves.POWER_TRICK, Type.PSYCHIC, -1, 10, -1, 0, 4)
|
|
|
|
new SelfStatusMove(Moves.POWER_TRICK, Type.PSYCHIC, -1, 10, -1, 0, 4)
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new StatusMove(Moves.GASTRO_ACID, Type.POISON, 100, 10, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.GASTRO_ACID, Type.POISON, 100, 10, -1, 0, 4)
|
|
|
|
.attr(SuppressAbilitiesAttr),
|
|
|
|
.attr(SuppressAbilitiesAttr)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.LUCKY_CHANT, Type.NORMAL, -1, 30, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.LUCKY_CHANT, Type.NORMAL, -1, 30, -1, 0, 4)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.NO_CRIT, false, false, 5)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.NO_CRIT, false, false, 5)
|
|
|
|
.target(MoveTarget.USER_SIDE)
|
|
|
|
.target(MoveTarget.USER_SIDE)
|
|
|
|
@ -5009,10 +5070,12 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.LAST_RESORT, Type.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, 0, 4)
|
|
|
|
new AttackMove(Moves.LAST_RESORT, Type.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, 0, 4)
|
|
|
|
.attr(LastResortAttr),
|
|
|
|
.attr(LastResortAttr),
|
|
|
|
new StatusMove(Moves.WORRY_SEED, Type.GRASS, 100, 10, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.WORRY_SEED, Type.GRASS, 100, 10, -1, 0, 4)
|
|
|
|
.attr(AbilityChangeAttr, Abilities.INSOMNIA),
|
|
|
|
.attr(AbilityChangeAttr, Abilities.INSOMNIA)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.SUCKER_PUNCH, Type.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, 1, 4)
|
|
|
|
new AttackMove(Moves.SUCKER_PUNCH, Type.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, 1, 4)
|
|
|
|
.condition((user, target, move) => user.scene.currentBattle.turnCommands[target.getBattlerIndex()].command === Command.FIGHT && !target.turnData.acted && allMoves[user.scene.currentBattle.turnCommands[target.getBattlerIndex()].move.move].category !== MoveCategory.STATUS),
|
|
|
|
.condition((user, target, move) => user.scene.currentBattle.turnCommands[target.getBattlerIndex()].command === Command.FIGHT && !target.turnData.acted && allMoves[user.scene.currentBattle.turnCommands[target.getBattlerIndex()].move.move].category !== MoveCategory.STATUS),
|
|
|
|
new StatusMove(Moves.TOXIC_SPIKES, Type.POISON, -1, 20, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.TOXIC_SPIKES, Type.POISON, -1, 20, -1, 0, 4)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.attr(AddArenaTrapTagAttr, ArenaTagType.TOXIC_SPIKES)
|
|
|
|
.attr(AddArenaTrapTagAttr, ArenaTagType.TOXIC_SPIKES)
|
|
|
|
.target(MoveTarget.ENEMY_SIDE),
|
|
|
|
.target(MoveTarget.ENEMY_SIDE),
|
|
|
|
new StatusMove(Moves.HEART_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.HEART_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 4)
|
|
|
|
@ -5021,7 +5084,7 @@ export function initMoves() {
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.AQUA_RING, true, true),
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.AQUA_RING, true, true),
|
|
|
|
new SelfStatusMove(Moves.MAGNET_RISE, Type.ELECTRIC, -1, 10, -1, 0, 4)
|
|
|
|
new SelfStatusMove(Moves.MAGNET_RISE, Type.ELECTRIC, -1, 10, -1, 0, 4)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.MAGNET_RISEN, true, true)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.MAGNET_RISEN, true, true)
|
|
|
|
.condition((user, target, move) => !user.scene.arena.getTag(ArenaTagType.GRAVITY) &&
|
|
|
|
.condition((user, target, move) => !user.scene.arena.getTag(ArenaTagType.GRAVITY) &&
|
|
|
|
!user.getTag(BattlerTagType.IGNORE_FLYING) && !user.getTag(BattlerTagType.INGRAIN) &&
|
|
|
|
!user.getTag(BattlerTagType.IGNORE_FLYING) && !user.getTag(BattlerTagType.INGRAIN) &&
|
|
|
|
!user.getTag(BattlerTagType.MAGNET_RISEN))
|
|
|
|
!user.getTag(BattlerTagType.MAGNET_RISEN))
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
@ -5123,7 +5186,8 @@ export function initMoves() {
|
|
|
|
.attr(StatChangeAttr, BattleStat.EVA, -1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.EVA, -1)
|
|
|
|
.attr(ClearWeatherAttr, WeatherType.FOG)
|
|
|
|
.attr(ClearWeatherAttr, WeatherType.FOG)
|
|
|
|
.attr(ClearTerrainAttr)
|
|
|
|
.attr(ClearTerrainAttr)
|
|
|
|
.attr(RemoveScreensAttr, true),
|
|
|
|
.attr(RemoveScreensAttr, true)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.TRICK_ROOM, Type.PSYCHIC, -1, 5, -1, -7, 4)
|
|
|
|
new StatusMove(Moves.TRICK_ROOM, Type.PSYCHIC, -1, 5, -1, -7, 4)
|
|
|
|
.attr(AddArenaTagAttr, ArenaTagType.TRICK_ROOM, 5)
|
|
|
|
.attr(AddArenaTagAttr, ArenaTagType.TRICK_ROOM, 5)
|
|
|
|
.ignoresProtect()
|
|
|
|
.ignoresProtect()
|
|
|
|
@ -5161,10 +5225,12 @@ export function initMoves() {
|
|
|
|
new StatusMove(Moves.CAPTIVATE, Type.NORMAL, 100, 20, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.CAPTIVATE, Type.NORMAL, 100, 20, -1, 0, 4)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPATK, -2)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPATK, -2)
|
|
|
|
.condition((user, target, move) => target.isOppositeGender(user))
|
|
|
|
.condition((user, target, move) => target.isOppositeGender(user))
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.STEALTH_ROCK, Type.ROCK, -1, 20, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.STEALTH_ROCK, Type.ROCK, -1, 20, -1, 0, 4)
|
|
|
|
.attr(AddArenaTrapTagAttr, ArenaTagType.STEALTH_ROCK)
|
|
|
|
.attr(AddArenaTrapTagAttr, ArenaTagType.STEALTH_ROCK)
|
|
|
|
.target(MoveTarget.ENEMY_SIDE),
|
|
|
|
.target(MoveTarget.ENEMY_SIDE)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.GRASS_KNOT, Type.GRASS, MoveCategory.SPECIAL, -1, 100, 20, -1, 0, 4)
|
|
|
|
new AttackMove(Moves.GRASS_KNOT, Type.GRASS, MoveCategory.SPECIAL, -1, 100, 20, -1, 0, 4)
|
|
|
|
.attr(WeightPowerAttr)
|
|
|
|
.attr(WeightPowerAttr)
|
|
|
|
.makesContact()
|
|
|
|
.makesContact()
|
|
|
|
@ -5208,7 +5274,8 @@ export function initMoves() {
|
|
|
|
.attr(TrapAttr, BattlerTagType.MAGMA_STORM),
|
|
|
|
.attr(TrapAttr, BattlerTagType.MAGMA_STORM),
|
|
|
|
new StatusMove(Moves.DARK_VOID, Type.DARK, 50, 10, -1, 0, 4)
|
|
|
|
new StatusMove(Moves.DARK_VOID, Type.DARK, 50, 10, -1, 0, 4)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.SLEEP)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.SEED_FLARE, Type.GRASS, MoveCategory.SPECIAL, 120, 85, 5, 40, 0, 4)
|
|
|
|
new AttackMove(Moves.SEED_FLARE, Type.GRASS, MoveCategory.SPECIAL, 120, 85, 5, 40, 0, 4)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, -1),
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, -1),
|
|
|
|
new AttackMove(Moves.OMINOUS_WIND, Type.GHOST, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 4)
|
|
|
|
new AttackMove(Moves.OMINOUS_WIND, Type.GHOST, MoveCategory.SPECIAL, 60, 100, 5, 10, 0, 4)
|
|
|
|
@ -5243,6 +5310,7 @@ export function initMoves() {
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new StatusMove(Moves.TELEKINESIS, Type.PSYCHIC, -1, 15, -1, 0, 5)
|
|
|
|
new StatusMove(Moves.TELEKINESIS, Type.PSYCHIC, -1, 15, -1, 0, 5)
|
|
|
|
.condition(failOnGravityCondition)
|
|
|
|
.condition(failOnGravityCondition)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new StatusMove(Moves.MAGIC_ROOM, Type.PSYCHIC, -1, 10, -1, 0, 5)
|
|
|
|
new StatusMove(Moves.MAGIC_ROOM, Type.PSYCHIC, -1, 10, -1, 0, 5)
|
|
|
|
.ignoresProtect()
|
|
|
|
.ignoresProtect()
|
|
|
|
@ -5275,7 +5343,8 @@ export function initMoves() {
|
|
|
|
.attr(BattleStatRatioPowerAttr, Stat.SPD)
|
|
|
|
.attr(BattleStatRatioPowerAttr, Stat.SPD)
|
|
|
|
.ballBombMove(),
|
|
|
|
.ballBombMove(),
|
|
|
|
new StatusMove(Moves.SOAK, Type.WATER, 100, 20, -1, 0, 5)
|
|
|
|
new StatusMove(Moves.SOAK, Type.WATER, 100, 20, -1, 0, 5)
|
|
|
|
.attr(ChangeTypeAttr, Type.WATER),
|
|
|
|
.attr(ChangeTypeAttr, Type.WATER)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.FLAME_CHARGE, Type.FIRE, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 5)
|
|
|
|
new AttackMove(Moves.FLAME_CHARGE, Type.FIRE, MoveCategory.PHYSICAL, 50, 100, 20, 100, 0, 5)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, 1, true),
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, 1, true),
|
|
|
|
new SelfStatusMove(Moves.COIL, Type.POISON, -1, 20, -1, 0, 5)
|
|
|
|
new SelfStatusMove(Moves.COIL, Type.POISON, -1, 20, -1, 0, 5)
|
|
|
|
@ -5288,9 +5357,11 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.FOUL_PLAY, Type.DARK, MoveCategory.PHYSICAL, 95, 100, 15, -1, 0, 5)
|
|
|
|
new AttackMove(Moves.FOUL_PLAY, Type.DARK, MoveCategory.PHYSICAL, 95, 100, 15, -1, 0, 5)
|
|
|
|
.attr(TargetAtkUserAtkAttr),
|
|
|
|
.attr(TargetAtkUserAtkAttr),
|
|
|
|
new StatusMove(Moves.SIMPLE_BEAM, Type.NORMAL, 100, 15, -1, 0, 5)
|
|
|
|
new StatusMove(Moves.SIMPLE_BEAM, Type.NORMAL, 100, 15, -1, 0, 5)
|
|
|
|
.attr(AbilityChangeAttr, Abilities.SIMPLE),
|
|
|
|
.attr(AbilityChangeAttr, Abilities.SIMPLE)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.ENTRAINMENT, Type.NORMAL, 100, 15, -1, 0, 5)
|
|
|
|
new StatusMove(Moves.ENTRAINMENT, Type.NORMAL, 100, 15, -1, 0, 5)
|
|
|
|
.attr(AbilityGiveAttr),
|
|
|
|
.attr(AbilityGiveAttr)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.AFTER_YOU, Type.NORMAL, -1, 15, -1, 0, 5)
|
|
|
|
new StatusMove(Moves.AFTER_YOU, Type.NORMAL, -1, 15, -1, 0, 5)
|
|
|
|
.ignoresProtect()
|
|
|
|
.ignoresProtect()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
@ -5322,7 +5393,8 @@ export function initMoves() {
|
|
|
|
new StatusMove(Moves.HEAL_PULSE, Type.PSYCHIC, -1, 10, -1, 0, 5)
|
|
|
|
new StatusMove(Moves.HEAL_PULSE, Type.PSYCHIC, -1, 10, -1, 0, 5)
|
|
|
|
.attr(HealAttr, 0.5, false, false)
|
|
|
|
.attr(HealAttr, 0.5, false, false)
|
|
|
|
.pulseMove()
|
|
|
|
.pulseMove()
|
|
|
|
.triageMove(),
|
|
|
|
.triageMove()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.HEX, Type.GHOST, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5)
|
|
|
|
new AttackMove(Moves.HEX, Type.GHOST, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5)
|
|
|
|
.attr(MovePowerMultiplierAttr, (user, target, move) => target.status ? 2 : 1),
|
|
|
|
.attr(MovePowerMultiplierAttr, (user, target, move) => target.status ? 2 : 1),
|
|
|
|
new AttackMove(Moves.SKY_DROP, Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5)
|
|
|
|
new AttackMove(Moves.SKY_DROP, Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5)
|
|
|
|
@ -5485,10 +5557,12 @@ export function initMoves() {
|
|
|
|
.ignoresVirtual(),
|
|
|
|
.ignoresVirtual(),
|
|
|
|
new StatusMove(Moves.TRICK_OR_TREAT, Type.GHOST, 100, 20, -1, 0, 6)
|
|
|
|
new StatusMove(Moves.TRICK_OR_TREAT, Type.GHOST, 100, 20, -1, 0, 6)
|
|
|
|
.attr(AddTypeAttr, Type.GHOST)
|
|
|
|
.attr(AddTypeAttr, Type.GHOST)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.partial(),
|
|
|
|
.partial(),
|
|
|
|
new StatusMove(Moves.NOBLE_ROAR, Type.NORMAL, 100, 30, 100, 0, 6)
|
|
|
|
new StatusMove(Moves.NOBLE_ROAR, Type.NORMAL, 100, 30, 100, 0, 6)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1)
|
|
|
|
.soundBased(),
|
|
|
|
.soundBased()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.ION_DELUGE, Type.ELECTRIC, -1, 25, -1, 1, 6)
|
|
|
|
new StatusMove(Moves.ION_DELUGE, Type.ELECTRIC, -1, 25, -1, 1, 6)
|
|
|
|
.target(MoveTarget.BOTH_SIDES)
|
|
|
|
.target(MoveTarget.BOTH_SIDES)
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
@ -5498,6 +5572,7 @@ export function initMoves() {
|
|
|
|
.triageMove(),
|
|
|
|
.triageMove(),
|
|
|
|
new StatusMove(Moves.FORESTS_CURSE, Type.GRASS, 100, 20, -1, 0, 6)
|
|
|
|
new StatusMove(Moves.FORESTS_CURSE, Type.GRASS, 100, 20, -1, 0, 6)
|
|
|
|
.attr(AddTypeAttr, Type.GRASS)
|
|
|
|
.attr(AddTypeAttr, Type.GRASS)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.partial(),
|
|
|
|
.partial(),
|
|
|
|
new AttackMove(Moves.PETAL_BLIZZARD, Type.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 6)
|
|
|
|
new AttackMove(Moves.PETAL_BLIZZARD, Type.GRASS, MoveCategory.PHYSICAL, 90, 100, 15, -1, 0, 6)
|
|
|
|
.windMove()
|
|
|
|
.windMove()
|
|
|
|
@ -5512,9 +5587,11 @@ export function initMoves() {
|
|
|
|
new StatusMove(Moves.PARTING_SHOT, Type.DARK, 100, 20, 100, 0, 6)
|
|
|
|
new StatusMove(Moves.PARTING_SHOT, Type.DARK, 100, 20, 100, 0, 6)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1, false, null, true, true, MoveEffectTrigger.PRE_APPLY)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1, false, null, true, true, MoveEffectTrigger.PRE_APPLY)
|
|
|
|
.attr(ForceSwitchOutAttr, true, false)
|
|
|
|
.attr(ForceSwitchOutAttr, true, false)
|
|
|
|
.soundBased(),
|
|
|
|
.soundBased()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.TOPSY_TURVY, Type.DARK, -1, 20, -1, 0, 6)
|
|
|
|
new StatusMove(Moves.TOPSY_TURVY, Type.DARK, -1, 20, -1, 0, 6)
|
|
|
|
.attr(InvertStatsAttr),
|
|
|
|
.attr(InvertStatsAttr)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.DRAINING_KISS, Type.FAIRY, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 6)
|
|
|
|
new AttackMove(Moves.DRAINING_KISS, Type.FAIRY, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 6)
|
|
|
|
.attr(HitHealAttr, 0.75)
|
|
|
|
.attr(HitHealAttr, 0.75)
|
|
|
|
.makesContact()
|
|
|
|
.makesContact()
|
|
|
|
@ -5548,10 +5625,12 @@ export function initMoves() {
|
|
|
|
new SelfStatusMove(Moves.KINGS_SHIELD, Type.STEEL, -1, 10, -1, 4, 6)
|
|
|
|
new SelfStatusMove(Moves.KINGS_SHIELD, Type.STEEL, -1, 10, -1, 4, 6)
|
|
|
|
.attr(ProtectAttr, BattlerTagType.KINGS_SHIELD),
|
|
|
|
.attr(ProtectAttr, BattlerTagType.KINGS_SHIELD),
|
|
|
|
new StatusMove(Moves.PLAY_NICE, Type.NORMAL, -1, 20, 100, 0, 6)
|
|
|
|
new StatusMove(Moves.PLAY_NICE, Type.NORMAL, -1, 20, 100, 0, 6)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -1),
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -1)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.CONFIDE, Type.NORMAL, -1, 20, 100, 0, 6)
|
|
|
|
new StatusMove(Moves.CONFIDE, Type.NORMAL, -1, 20, 100, 0, 6)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPATK, -1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPATK, -1)
|
|
|
|
.soundBased(),
|
|
|
|
.soundBased()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.DIAMOND_STORM, Type.ROCK, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 6)
|
|
|
|
new AttackMove(Moves.DIAMOND_STORM, Type.ROCK, MoveCategory.PHYSICAL, 100, 95, 5, 50, 0, 6)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, 2, true)
|
|
|
|
.attr(StatChangeAttr, BattleStat.DEF, 2, true)
|
|
|
|
.makesContact(false)
|
|
|
|
.makesContact(false)
|
|
|
|
@ -5573,12 +5652,15 @@ export function initMoves() {
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, 1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPDEF, 1)
|
|
|
|
.target(MoveTarget.NEAR_ALLY),
|
|
|
|
.target(MoveTarget.NEAR_ALLY),
|
|
|
|
new StatusMove(Moves.EERIE_IMPULSE, Type.ELECTRIC, 100, 15, -1, 0, 6)
|
|
|
|
new StatusMove(Moves.EERIE_IMPULSE, Type.ELECTRIC, 100, 15, -1, 0, 6)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPATK, -2),
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPATK, -2)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.VENOM_DRENCH, Type.POISON, 100, 20, 100, 0, 6)
|
|
|
|
new StatusMove(Moves.VENOM_DRENCH, Type.POISON, 100, 20, 100, 0, 6)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK, BattleStat.SPD ], -1, false, (user, target, move) => target.status?.effect === StatusEffect.POISON || target.status?.effect === StatusEffect.TOXIC)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK, BattleStat.SPD ], -1, false, (user, target, move) => target.status?.effect === StatusEffect.POISON || target.status?.effect === StatusEffect.TOXIC)
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
|
|
|
.target(MoveTarget.ALL_NEAR_ENEMIES)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new StatusMove(Moves.POWDER, Type.BUG, 100, 20, -1, 1, 6)
|
|
|
|
new StatusMove(Moves.POWDER, Type.BUG, 100, 20, -1, 1, 6)
|
|
|
|
.powderMove()
|
|
|
|
.powderMove()
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new SelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6)
|
|
|
|
new SelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6)
|
|
|
|
.attr(ChargeAttr, ChargeAnim.GEOMANCY_CHARGING, "is charging its power!")
|
|
|
|
.attr(ChargeAttr, ChargeAnim.GEOMANCY_CHARGING, "is charging its power!")
|
|
|
|
@ -5600,6 +5682,7 @@ export function initMoves() {
|
|
|
|
new StatusMove(Moves.HOLD_HANDS, Type.NORMAL, -1, 40, -1, 0, 6)
|
|
|
|
new StatusMove(Moves.HOLD_HANDS, Type.NORMAL, -1, 40, -1, 0, 6)
|
|
|
|
.target(MoveTarget.NEAR_ALLY),
|
|
|
|
.target(MoveTarget.NEAR_ALLY),
|
|
|
|
new StatusMove(Moves.BABY_DOLL_EYES, Type.FAIRY, 100, 30, -1, 1, 6)
|
|
|
|
new StatusMove(Moves.BABY_DOLL_EYES, Type.FAIRY, 100, 30, -1, 1, 6)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -1),
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -1),
|
|
|
|
new AttackMove(Moves.NUZZLE, Type.ELECTRIC, MoveCategory.PHYSICAL, 20, 100, 20, 100, 0, 6)
|
|
|
|
new AttackMove(Moves.NUZZLE, Type.ELECTRIC, MoveCategory.PHYSICAL, 20, 100, 20, 100, 0, 6)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
|
|
|
|
@ -5739,13 +5822,15 @@ export function initMoves() {
|
|
|
|
new StatusMove(Moves.FLORAL_HEALING, Type.FAIRY, -1, 10, -1, 0, 7)
|
|
|
|
new StatusMove(Moves.FLORAL_HEALING, Type.FAIRY, -1, 10, -1, 0, 7)
|
|
|
|
.attr(HealAttr, 0.5, true, false)
|
|
|
|
.attr(HealAttr, 0.5, true, false)
|
|
|
|
.triageMove()
|
|
|
|
.triageMove()
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.partial(),
|
|
|
|
.partial(),
|
|
|
|
new AttackMove(Moves.HIGH_HORSEPOWER, Type.GROUND, MoveCategory.PHYSICAL, 95, 95, 10, -1, 0, 7),
|
|
|
|
new AttackMove(Moves.HIGH_HORSEPOWER, Type.GROUND, MoveCategory.PHYSICAL, 95, 95, 10, -1, 0, 7),
|
|
|
|
new StatusMove(Moves.STRENGTH_SAP, Type.GRASS, 100, 10, 100, 0, 7)
|
|
|
|
new StatusMove(Moves.STRENGTH_SAP, Type.GRASS, 100, 10, 100, 0, 7)
|
|
|
|
.attr(StrengthSapHealAttr)
|
|
|
|
.attr(StrengthSapHealAttr)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.ATK, -1)
|
|
|
|
.condition((user, target, move) => target.summonData.battleStats[BattleStat.ATK] > -6)
|
|
|
|
.condition((user, target, move) => target.summonData.battleStats[BattleStat.ATK] > -6)
|
|
|
|
.triageMove(),
|
|
|
|
.triageMove()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.SOLAR_BLADE, Type.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7)
|
|
|
|
new AttackMove(Moves.SOLAR_BLADE, Type.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7)
|
|
|
|
.attr(SunlightChargeAttr, ChargeAnim.SOLAR_BLADE_CHARGING, "is glowing!")
|
|
|
|
.attr(SunlightChargeAttr, ChargeAnim.SOLAR_BLADE_CHARGING, "is glowing!")
|
|
|
|
.attr(AntiSunlightPowerDecreaseAttr)
|
|
|
|
.attr(AntiSunlightPowerDecreaseAttr)
|
|
|
|
@ -5753,10 +5838,12 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.LEAFAGE, Type.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 7)
|
|
|
|
new AttackMove(Moves.LEAFAGE, Type.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 7)
|
|
|
|
.makesContact(false),
|
|
|
|
.makesContact(false),
|
|
|
|
new StatusMove(Moves.SPOTLIGHT, Type.NORMAL, -1, 15, -1, 3, 7)
|
|
|
|
new StatusMove(Moves.SPOTLIGHT, Type.NORMAL, -1, 15, -1, 3, 7)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new StatusMove(Moves.TOXIC_THREAD, Type.POISON, 100, 20, 100, 0, 7)
|
|
|
|
new StatusMove(Moves.TOXIC_THREAD, Type.POISON, 100, 20, 100, 0, 7)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.POISON)
|
|
|
|
.attr(StatusEffectAttr, StatusEffect.POISON)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -1),
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -1)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new SelfStatusMove(Moves.LASER_FOCUS, Type.NORMAL, -1, 30, -1, 0, 7)
|
|
|
|
new SelfStatusMove(Moves.LASER_FOCUS, Type.NORMAL, -1, 30, -1, 0, 7)
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_CRIT, true, false),
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_CRIT, true, false),
|
|
|
|
new StatusMove(Moves.GEAR_UP, Type.STEEL, -1, 20, -1, 0, 7)
|
|
|
|
new StatusMove(Moves.GEAR_UP, Type.STEEL, -1, 20, -1, 0, 7)
|
|
|
|
@ -5793,6 +5880,7 @@ export function initMoves() {
|
|
|
|
new AttackMove(Moves.SMART_STRIKE, Type.STEEL, MoveCategory.PHYSICAL, 70, -1, 10, -1, 0, 7),
|
|
|
|
new AttackMove(Moves.SMART_STRIKE, Type.STEEL, MoveCategory.PHYSICAL, 70, -1, 10, -1, 0, 7),
|
|
|
|
new StatusMove(Moves.PURIFY, Type.POISON, -1, 20, -1, 0, 7)
|
|
|
|
new StatusMove(Moves.PURIFY, Type.POISON, -1, 20, -1, 0, 7)
|
|
|
|
.triageMove()
|
|
|
|
.triageMove()
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new AttackMove(Moves.REVELATION_DANCE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7)
|
|
|
|
new AttackMove(Moves.REVELATION_DANCE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7)
|
|
|
|
.danceMove()
|
|
|
|
.danceMove()
|
|
|
|
@ -5868,7 +5956,8 @@ export function initMoves() {
|
|
|
|
.ignoresAbilities()
|
|
|
|
.ignoresAbilities()
|
|
|
|
.partial(),
|
|
|
|
.partial(),
|
|
|
|
new StatusMove(Moves.TEARFUL_LOOK, Type.NORMAL, -1, 20, 100, 0, 7)
|
|
|
|
new StatusMove(Moves.TEARFUL_LOOK, Type.NORMAL, -1, 20, 100, 0, 7)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1),
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1)
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.ZING_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7)
|
|
|
|
new AttackMove(Moves.ZING_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7)
|
|
|
|
.attr(FlinchAttr),
|
|
|
|
.attr(FlinchAttr),
|
|
|
|
new AttackMove(Moves.NATURES_MADNESS, Type.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7)
|
|
|
|
new AttackMove(Moves.NATURES_MADNESS, Type.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7)
|
|
|
|
@ -5962,10 +6051,12 @@ export function initMoves() {
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, true, true, 1),
|
|
|
|
.attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, true, true, 1),
|
|
|
|
new StatusMove(Moves.TAR_SHOT, Type.ROCK, 100, 15, 100, 0, 8)
|
|
|
|
new StatusMove(Moves.TAR_SHOT, Type.ROCK, 100, 15, 100, 0, 8)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -1)
|
|
|
|
.attr(StatChangeAttr, BattleStat.SPD, -1)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.partial(),
|
|
|
|
.partial(),
|
|
|
|
new StatusMove(Moves.MAGIC_POWDER, Type.PSYCHIC, 100, 20, -1, 0, 8)
|
|
|
|
new StatusMove(Moves.MAGIC_POWDER, Type.PSYCHIC, 100, 20, -1, 0, 8)
|
|
|
|
.attr(ChangeTypeAttr, Type.PSYCHIC)
|
|
|
|
.attr(ChangeTypeAttr, Type.PSYCHIC)
|
|
|
|
.powderMove(),
|
|
|
|
.powderMove()
|
|
|
|
|
|
|
|
.magicCoatMove(),
|
|
|
|
new AttackMove(Moves.DRAGON_DARTS, Type.DRAGON, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 8)
|
|
|
|
new AttackMove(Moves.DRAGON_DARTS, Type.DRAGON, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 8)
|
|
|
|
.attr(MultiHitAttr, MultiHitType._2)
|
|
|
|
.attr(MultiHitAttr, MultiHitType._2)
|
|
|
|
.makesContact(false)
|
|
|
|
.makesContact(false)
|
|
|
|
@ -6140,6 +6231,7 @@ export function initMoves() {
|
|
|
|
.partial(),
|
|
|
|
.partial(),
|
|
|
|
new StatusMove(Moves.CORROSIVE_GAS, Type.POISON, 100, 40, -1, 0, 8)
|
|
|
|
new StatusMove(Moves.CORROSIVE_GAS, Type.POISON, 100, 40, -1, 0, 8)
|
|
|
|
.target(MoveTarget.ALL_NEAR_OTHERS)
|
|
|
|
.target(MoveTarget.ALL_NEAR_OTHERS)
|
|
|
|
|
|
|
|
.magicCoatMove()
|
|
|
|
.unimplemented(),
|
|
|
|
.unimplemented(),
|
|
|
|
new StatusMove(Moves.COACHING, Type.FIGHTING, -1, 10, 100, 0, 8)
|
|
|
|
new StatusMove(Moves.COACHING, Type.FIGHTING, -1, 10, 100, 0, 8)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], 1)
|
|
|
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], 1)
|
|
|
|
|