mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-20 15:22:19 +02:00
make invalidXMoves into sets and move their defs
This commit is contained in:
parent
4115b80ce8
commit
97124575a0
281
src/data/moves/invalid-moves.ts
Normal file
281
src/data/moves/invalid-moves.ts
Normal file
@ -0,0 +1,281 @@
|
|||||||
|
import { Moves } from "#enums/moves";
|
||||||
|
|
||||||
|
/** Set of moves that cannot be called by {@linkcode Moves.METRONOME Metronome} */
|
||||||
|
export const invalidMetronomeMoves: ReadonlySet<Moves> = new Set([
|
||||||
|
Moves.AFTER_YOU,
|
||||||
|
Moves.APPLE_ACID,
|
||||||
|
Moves.ARMOR_CANNON,
|
||||||
|
Moves.ASSIST,
|
||||||
|
Moves.ASTRAL_BARRAGE,
|
||||||
|
Moves.AURA_WHEEL,
|
||||||
|
Moves.BANEFUL_BUNKER,
|
||||||
|
Moves.BEAK_BLAST,
|
||||||
|
Moves.BEHEMOTH_BASH,
|
||||||
|
Moves.BEHEMOTH_BLADE,
|
||||||
|
Moves.BELCH,
|
||||||
|
Moves.BESTOW,
|
||||||
|
Moves.BLAZING_TORQUE,
|
||||||
|
Moves.BODY_PRESS,
|
||||||
|
Moves.BRANCH_POKE,
|
||||||
|
Moves.BREAKING_SWIPE,
|
||||||
|
Moves.CELEBRATE,
|
||||||
|
Moves.CHATTER,
|
||||||
|
Moves.CHILLING_WATER,
|
||||||
|
Moves.CHILLY_RECEPTION,
|
||||||
|
Moves.CLANGOROUS_SOUL,
|
||||||
|
Moves.COLLISION_COURSE,
|
||||||
|
Moves.COMBAT_TORQUE,
|
||||||
|
Moves.COMEUPPANCE,
|
||||||
|
Moves.COPYCAT,
|
||||||
|
Moves.COUNTER,
|
||||||
|
Moves.COVET,
|
||||||
|
Moves.CRAFTY_SHIELD,
|
||||||
|
Moves.DECORATE,
|
||||||
|
Moves.DESTINY_BOND,
|
||||||
|
Moves.DETECT,
|
||||||
|
Moves.DIAMOND_STORM,
|
||||||
|
Moves.DOODLE,
|
||||||
|
Moves.DOUBLE_IRON_BASH,
|
||||||
|
Moves.DOUBLE_SHOCK,
|
||||||
|
Moves.DRAGON_ASCENT,
|
||||||
|
Moves.DRAGON_ENERGY,
|
||||||
|
Moves.DRUM_BEATING,
|
||||||
|
Moves.DYNAMAX_CANNON,
|
||||||
|
Moves.ELECTRO_DRIFT,
|
||||||
|
Moves.ENDURE,
|
||||||
|
Moves.ETERNABEAM,
|
||||||
|
Moves.FALSE_SURRENDER,
|
||||||
|
Moves.FEINT,
|
||||||
|
Moves.FIERY_WRATH,
|
||||||
|
Moves.FILLET_AWAY,
|
||||||
|
Moves.FLEUR_CANNON,
|
||||||
|
Moves.FOCUS_PUNCH,
|
||||||
|
Moves.FOLLOW_ME,
|
||||||
|
Moves.FREEZE_SHOCK,
|
||||||
|
Moves.FREEZING_GLARE,
|
||||||
|
Moves.GLACIAL_LANCE,
|
||||||
|
Moves.GRAV_APPLE,
|
||||||
|
Moves.HELPING_HAND,
|
||||||
|
Moves.HOLD_HANDS,
|
||||||
|
Moves.HYPER_DRILL,
|
||||||
|
Moves.HYPERSPACE_FURY,
|
||||||
|
Moves.HYPERSPACE_HOLE,
|
||||||
|
Moves.ICE_BURN,
|
||||||
|
Moves.INSTRUCT,
|
||||||
|
Moves.JET_PUNCH,
|
||||||
|
Moves.JUNGLE_HEALING,
|
||||||
|
Moves.KINGS_SHIELD,
|
||||||
|
Moves.LIFE_DEW,
|
||||||
|
Moves.LIGHT_OF_RUIN,
|
||||||
|
Moves.MAKE_IT_RAIN,
|
||||||
|
Moves.MAGICAL_TORQUE,
|
||||||
|
Moves.MAT_BLOCK,
|
||||||
|
Moves.ME_FIRST,
|
||||||
|
Moves.METEOR_ASSAULT,
|
||||||
|
Moves.METRONOME,
|
||||||
|
Moves.MIMIC,
|
||||||
|
Moves.MIND_BLOWN,
|
||||||
|
Moves.MIRROR_COAT,
|
||||||
|
Moves.MIRROR_MOVE,
|
||||||
|
Moves.MOONGEIST_BEAM,
|
||||||
|
Moves.NATURE_POWER,
|
||||||
|
Moves.NATURES_MADNESS,
|
||||||
|
Moves.NOXIOUS_TORQUE,
|
||||||
|
Moves.OBSTRUCT,
|
||||||
|
Moves.ORDER_UP,
|
||||||
|
Moves.ORIGIN_PULSE,
|
||||||
|
Moves.OVERDRIVE,
|
||||||
|
Moves.PHOTON_GEYSER,
|
||||||
|
Moves.PLASMA_FISTS,
|
||||||
|
Moves.POPULATION_BOMB,
|
||||||
|
Moves.POUNCE,
|
||||||
|
Moves.POWER_SHIFT,
|
||||||
|
Moves.PRECIPICE_BLADES,
|
||||||
|
Moves.PROTECT,
|
||||||
|
Moves.PYRO_BALL,
|
||||||
|
Moves.QUASH,
|
||||||
|
Moves.QUICK_GUARD,
|
||||||
|
Moves.RAGE_FIST,
|
||||||
|
Moves.RAGE_POWDER,
|
||||||
|
Moves.RAGING_BULL,
|
||||||
|
Moves.RAGING_FURY,
|
||||||
|
Moves.RELIC_SONG,
|
||||||
|
Moves.REVIVAL_BLESSING,
|
||||||
|
Moves.RUINATION,
|
||||||
|
Moves.SALT_CURE,
|
||||||
|
Moves.SECRET_SWORD,
|
||||||
|
Moves.SHED_TAIL,
|
||||||
|
Moves.SHELL_TRAP,
|
||||||
|
Moves.SILK_TRAP,
|
||||||
|
Moves.SKETCH,
|
||||||
|
Moves.SLEEP_TALK,
|
||||||
|
Moves.SNAP_TRAP,
|
||||||
|
Moves.SNARL,
|
||||||
|
Moves.SNATCH,
|
||||||
|
Moves.SNORE,
|
||||||
|
Moves.SNOWSCAPE,
|
||||||
|
Moves.SPECTRAL_THIEF,
|
||||||
|
Moves.SPICY_EXTRACT,
|
||||||
|
Moves.SPIKY_SHIELD,
|
||||||
|
Moves.SPIRIT_BREAK,
|
||||||
|
Moves.SPOTLIGHT,
|
||||||
|
Moves.STEAM_ERUPTION,
|
||||||
|
Moves.STEEL_BEAM,
|
||||||
|
Moves.STRANGE_STEAM,
|
||||||
|
Moves.STRUGGLE,
|
||||||
|
Moves.SUNSTEEL_STRIKE,
|
||||||
|
Moves.SURGING_STRIKES,
|
||||||
|
Moves.SWITCHEROO,
|
||||||
|
Moves.TECHNO_BLAST,
|
||||||
|
Moves.TERA_STARSTORM,
|
||||||
|
Moves.THIEF,
|
||||||
|
Moves.THOUSAND_ARROWS,
|
||||||
|
Moves.THOUSAND_WAVES,
|
||||||
|
Moves.THUNDER_CAGE,
|
||||||
|
Moves.THUNDEROUS_KICK,
|
||||||
|
Moves.TIDY_UP,
|
||||||
|
Moves.TRAILBLAZE,
|
||||||
|
Moves.TRANSFORM,
|
||||||
|
Moves.TRICK,
|
||||||
|
Moves.TWIN_BEAM,
|
||||||
|
Moves.V_CREATE,
|
||||||
|
Moves.WICKED_BLOW,
|
||||||
|
Moves.WICKED_TORQUE,
|
||||||
|
Moves.WIDE_GUARD,
|
||||||
|
]);
|
||||||
|
|
||||||
|
/** Set of moves that cannot be called by {@linkcode Moves.ASSIST Assist} */
|
||||||
|
export const invalidAssistMoves: ReadonlySet<Moves> = new Set([
|
||||||
|
Moves.ASSIST,
|
||||||
|
Moves.BANEFUL_BUNKER,
|
||||||
|
Moves.BEAK_BLAST,
|
||||||
|
Moves.BELCH,
|
||||||
|
Moves.BESTOW,
|
||||||
|
Moves.BOUNCE,
|
||||||
|
Moves.CELEBRATE,
|
||||||
|
Moves.CHATTER,
|
||||||
|
Moves.CIRCLE_THROW,
|
||||||
|
Moves.COPYCAT,
|
||||||
|
Moves.COUNTER,
|
||||||
|
Moves.COVET,
|
||||||
|
Moves.DESTINY_BOND,
|
||||||
|
Moves.DETECT,
|
||||||
|
Moves.DIG,
|
||||||
|
Moves.DIVE,
|
||||||
|
Moves.DRAGON_TAIL,
|
||||||
|
Moves.ENDURE,
|
||||||
|
Moves.FEINT,
|
||||||
|
Moves.FLY,
|
||||||
|
Moves.FOCUS_PUNCH,
|
||||||
|
Moves.FOLLOW_ME,
|
||||||
|
Moves.HELPING_HAND,
|
||||||
|
Moves.HOLD_HANDS,
|
||||||
|
Moves.KINGS_SHIELD,
|
||||||
|
Moves.MAT_BLOCK,
|
||||||
|
Moves.ME_FIRST,
|
||||||
|
Moves.METRONOME,
|
||||||
|
Moves.MIMIC,
|
||||||
|
Moves.MIRROR_COAT,
|
||||||
|
Moves.MIRROR_MOVE,
|
||||||
|
Moves.NATURE_POWER,
|
||||||
|
Moves.PHANTOM_FORCE,
|
||||||
|
Moves.PROTECT,
|
||||||
|
Moves.RAGE_POWDER,
|
||||||
|
Moves.ROAR,
|
||||||
|
Moves.SHADOW_FORCE,
|
||||||
|
Moves.SHELL_TRAP,
|
||||||
|
Moves.SKETCH,
|
||||||
|
Moves.SKY_DROP,
|
||||||
|
Moves.SLEEP_TALK,
|
||||||
|
Moves.SNATCH,
|
||||||
|
Moves.SPIKY_SHIELD,
|
||||||
|
Moves.SPOTLIGHT,
|
||||||
|
Moves.STRUGGLE,
|
||||||
|
Moves.SWITCHEROO,
|
||||||
|
Moves.THIEF,
|
||||||
|
Moves.TRANSFORM,
|
||||||
|
Moves.TRICK,
|
||||||
|
Moves.WHIRLWIND,
|
||||||
|
]);
|
||||||
|
|
||||||
|
/** Set of moves that cannot be called by {@linkcode Moves.SLEEP_TALK Sleep Talk} */
|
||||||
|
export const invalidSleepTalkMoves: ReadonlySet<Moves> = new Set([
|
||||||
|
Moves.ASSIST,
|
||||||
|
Moves.BELCH,
|
||||||
|
Moves.BEAK_BLAST,
|
||||||
|
Moves.BIDE,
|
||||||
|
Moves.BOUNCE,
|
||||||
|
Moves.COPYCAT,
|
||||||
|
Moves.DIG,
|
||||||
|
Moves.DIVE,
|
||||||
|
Moves.DYNAMAX_CANNON,
|
||||||
|
Moves.FREEZE_SHOCK,
|
||||||
|
Moves.FLY,
|
||||||
|
Moves.FOCUS_PUNCH,
|
||||||
|
Moves.GEOMANCY,
|
||||||
|
Moves.ICE_BURN,
|
||||||
|
Moves.ME_FIRST,
|
||||||
|
Moves.METRONOME,
|
||||||
|
Moves.MIRROR_MOVE,
|
||||||
|
Moves.MIMIC,
|
||||||
|
Moves.PHANTOM_FORCE,
|
||||||
|
Moves.RAZOR_WIND,
|
||||||
|
Moves.SHADOW_FORCE,
|
||||||
|
Moves.SHELL_TRAP,
|
||||||
|
Moves.SKETCH,
|
||||||
|
Moves.SKULL_BASH,
|
||||||
|
Moves.SKY_ATTACK,
|
||||||
|
Moves.SKY_DROP,
|
||||||
|
Moves.SLEEP_TALK,
|
||||||
|
Moves.SOLAR_BLADE,
|
||||||
|
Moves.SOLAR_BEAM,
|
||||||
|
Moves.STRUGGLE,
|
||||||
|
Moves.UPROAR,
|
||||||
|
]);
|
||||||
|
|
||||||
|
/** Set of moves that cannot be copied by {@linkcode Moves.COPYCAT Copycat} */
|
||||||
|
export const invalidCopycatMoves: ReadonlySet<Moves> = new Set([
|
||||||
|
Moves.ASSIST,
|
||||||
|
Moves.BANEFUL_BUNKER,
|
||||||
|
Moves.BEAK_BLAST,
|
||||||
|
Moves.BEHEMOTH_BASH,
|
||||||
|
Moves.BEHEMOTH_BLADE,
|
||||||
|
Moves.BESTOW,
|
||||||
|
Moves.CELEBRATE,
|
||||||
|
Moves.CHATTER,
|
||||||
|
Moves.CIRCLE_THROW,
|
||||||
|
Moves.COPYCAT,
|
||||||
|
Moves.COUNTER,
|
||||||
|
Moves.COVET,
|
||||||
|
Moves.DESTINY_BOND,
|
||||||
|
Moves.DETECT,
|
||||||
|
Moves.DRAGON_TAIL,
|
||||||
|
Moves.ENDURE,
|
||||||
|
Moves.FEINT,
|
||||||
|
Moves.FOCUS_PUNCH,
|
||||||
|
Moves.FOLLOW_ME,
|
||||||
|
Moves.HELPING_HAND,
|
||||||
|
Moves.HOLD_HANDS,
|
||||||
|
Moves.KINGS_SHIELD,
|
||||||
|
Moves.MAT_BLOCK,
|
||||||
|
Moves.ME_FIRST,
|
||||||
|
Moves.METRONOME,
|
||||||
|
Moves.MIMIC,
|
||||||
|
Moves.MIRROR_COAT,
|
||||||
|
Moves.MIRROR_MOVE,
|
||||||
|
Moves.PROTECT,
|
||||||
|
Moves.RAGE_POWDER,
|
||||||
|
Moves.ROAR,
|
||||||
|
Moves.SHELL_TRAP,
|
||||||
|
Moves.SKETCH,
|
||||||
|
Moves.SLEEP_TALK,
|
||||||
|
Moves.SNATCH,
|
||||||
|
Moves.SPIKY_SHIELD,
|
||||||
|
Moves.SPOTLIGHT,
|
||||||
|
Moves.STRUGGLE,
|
||||||
|
Moves.SWITCHEROO,
|
||||||
|
Moves.THIEF,
|
||||||
|
Moves.TRANSFORM,
|
||||||
|
Moves.TRICK,
|
||||||
|
Moves.WHIRLWIND,
|
||||||
|
]);
|
@ -125,6 +125,7 @@ import { MoveTarget } from "#enums/MoveTarget";
|
|||||||
import { MoveFlags } from "#enums/MoveFlags";
|
import { MoveFlags } from "#enums/MoveFlags";
|
||||||
import { MoveEffectTrigger } from "#enums/MoveEffectTrigger";
|
import { MoveEffectTrigger } from "#enums/MoveEffectTrigger";
|
||||||
import { MultiHitType } from "#enums/MultiHitType";
|
import { MultiHitType } from "#enums/MultiHitType";
|
||||||
|
import { invalidAssistMoves, invalidCopycatMoves, invalidMetronomeMoves, invalidSleepTalkMoves } from "./invalid-moves";
|
||||||
|
|
||||||
type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean;
|
type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean;
|
||||||
type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean;
|
type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean;
|
||||||
@ -6670,7 +6671,7 @@ export class FirstMoveTypeAttr extends MoveEffectAttr {
|
|||||||
* @extends OverrideMoveEffectAttr
|
* @extends OverrideMoveEffectAttr
|
||||||
*/
|
*/
|
||||||
class CallMoveAttr extends OverrideMoveEffectAttr {
|
class CallMoveAttr extends OverrideMoveEffectAttr {
|
||||||
protected invalidMoves: Moves[];
|
protected invalidMoves: ReadonlySet<Moves>;
|
||||||
protected hasTarget: boolean;
|
protected hasTarget: boolean;
|
||||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
const replaceMoveTarget = move.moveTarget === MoveTarget.NEAR_OTHER ? MoveTarget.NEAR_ENEMY : undefined;
|
const replaceMoveTarget = move.moveTarget === MoveTarget.NEAR_OTHER ? MoveTarget.NEAR_ENEMY : undefined;
|
||||||
@ -6695,7 +6696,7 @@ class CallMoveAttr extends OverrideMoveEffectAttr {
|
|||||||
* @extends CallMoveAttr to call a selected move
|
* @extends CallMoveAttr to call a selected move
|
||||||
*/
|
*/
|
||||||
export class RandomMoveAttr extends CallMoveAttr {
|
export class RandomMoveAttr extends CallMoveAttr {
|
||||||
constructor(invalidMoves: Moves[]) {
|
constructor(invalidMoves: ReadonlySet<Moves>) {
|
||||||
super();
|
super();
|
||||||
this.invalidMoves = invalidMoves;
|
this.invalidMoves = invalidMoves;
|
||||||
}
|
}
|
||||||
@ -6717,7 +6718,7 @@ export class RandomMoveAttr extends CallMoveAttr {
|
|||||||
* @param args Unused
|
* @param args Unused
|
||||||
*/
|
*/
|
||||||
override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
const moveIds = Utils.getEnumValues(Moves).map(m => !this.invalidMoves.includes(m) && !allMoves[m].name.endsWith(" (N)") ? m : Moves.NONE);
|
const moveIds = Utils.getEnumValues(Moves).map(m => !this.invalidMoves.has(m) && !allMoves[m].name.endsWith(" (N)") ? m : Moves.NONE);
|
||||||
let moveId: Moves = Moves.NONE;
|
let moveId: Moves = Moves.NONE;
|
||||||
do {
|
do {
|
||||||
moveId = this.getMoveOverride() ?? moveIds[user.randSeedInt(moveIds.length)];
|
moveId = this.getMoveOverride() ?? moveIds[user.randSeedInt(moveIds.length)];
|
||||||
@ -6740,7 +6741,7 @@ export class RandomMoveAttr extends CallMoveAttr {
|
|||||||
export class RandomMovesetMoveAttr extends CallMoveAttr {
|
export class RandomMovesetMoveAttr extends CallMoveAttr {
|
||||||
private includeParty: boolean;
|
private includeParty: boolean;
|
||||||
private moveId: number;
|
private moveId: number;
|
||||||
constructor(invalidMoves: Moves[], includeParty: boolean = false) {
|
constructor(invalidMoves: ReadonlySet<Moves>, includeParty: boolean = false) {
|
||||||
super();
|
super();
|
||||||
this.includeParty = includeParty;
|
this.includeParty = includeParty;
|
||||||
this.invalidMoves = invalidMoves;
|
this.invalidMoves = invalidMoves;
|
||||||
@ -6767,7 +6768,7 @@ export class RandomMovesetMoveAttr extends CallMoveAttr {
|
|||||||
allies = [ user ];
|
allies = [ user ];
|
||||||
}
|
}
|
||||||
const partyMoveset = allies.map(p => p.moveset).flat();
|
const partyMoveset = allies.map(p => p.moveset).flat();
|
||||||
const moves = partyMoveset.filter(m => !this.invalidMoves.includes(m!.moveId) && !m!.getMove().name.endsWith(" (N)"));
|
const moves = partyMoveset.filter(m => !this.invalidMoves.has(m!.moveId) && !m!.getMove().name.endsWith(" (N)"));
|
||||||
if (moves.length === 0) {
|
if (moves.length === 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -6778,282 +6779,6 @@ export class RandomMovesetMoveAttr extends CallMoveAttr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const invalidMetronomeMoves: Moves[] = [
|
|
||||||
Moves.AFTER_YOU,
|
|
||||||
Moves.APPLE_ACID,
|
|
||||||
Moves.ARMOR_CANNON,
|
|
||||||
Moves.ASSIST,
|
|
||||||
Moves.ASTRAL_BARRAGE,
|
|
||||||
Moves.AURA_WHEEL,
|
|
||||||
Moves.BANEFUL_BUNKER,
|
|
||||||
Moves.BEAK_BLAST,
|
|
||||||
Moves.BEHEMOTH_BASH,
|
|
||||||
Moves.BEHEMOTH_BLADE,
|
|
||||||
Moves.BELCH,
|
|
||||||
Moves.BESTOW,
|
|
||||||
Moves.BLAZING_TORQUE,
|
|
||||||
Moves.BODY_PRESS,
|
|
||||||
Moves.BRANCH_POKE,
|
|
||||||
Moves.BREAKING_SWIPE,
|
|
||||||
Moves.CELEBRATE,
|
|
||||||
Moves.CHATTER,
|
|
||||||
Moves.CHILLING_WATER,
|
|
||||||
Moves.CHILLY_RECEPTION,
|
|
||||||
Moves.CLANGOROUS_SOUL,
|
|
||||||
Moves.COLLISION_COURSE,
|
|
||||||
Moves.COMBAT_TORQUE,
|
|
||||||
Moves.COMEUPPANCE,
|
|
||||||
Moves.COPYCAT,
|
|
||||||
Moves.COUNTER,
|
|
||||||
Moves.COVET,
|
|
||||||
Moves.CRAFTY_SHIELD,
|
|
||||||
Moves.DECORATE,
|
|
||||||
Moves.DESTINY_BOND,
|
|
||||||
Moves.DETECT,
|
|
||||||
Moves.DIAMOND_STORM,
|
|
||||||
Moves.DOODLE,
|
|
||||||
Moves.DOUBLE_IRON_BASH,
|
|
||||||
Moves.DOUBLE_SHOCK,
|
|
||||||
Moves.DRAGON_ASCENT,
|
|
||||||
Moves.DRAGON_ENERGY,
|
|
||||||
Moves.DRUM_BEATING,
|
|
||||||
Moves.DYNAMAX_CANNON,
|
|
||||||
Moves.ELECTRO_DRIFT,
|
|
||||||
Moves.ENDURE,
|
|
||||||
Moves.ETERNABEAM,
|
|
||||||
Moves.FALSE_SURRENDER,
|
|
||||||
Moves.FEINT,
|
|
||||||
Moves.FIERY_WRATH,
|
|
||||||
Moves.FILLET_AWAY,
|
|
||||||
Moves.FLEUR_CANNON,
|
|
||||||
Moves.FOCUS_PUNCH,
|
|
||||||
Moves.FOLLOW_ME,
|
|
||||||
Moves.FREEZE_SHOCK,
|
|
||||||
Moves.FREEZING_GLARE,
|
|
||||||
Moves.GLACIAL_LANCE,
|
|
||||||
Moves.GRAV_APPLE,
|
|
||||||
Moves.HELPING_HAND,
|
|
||||||
Moves.HOLD_HANDS,
|
|
||||||
Moves.HYPER_DRILL,
|
|
||||||
Moves.HYPERSPACE_FURY,
|
|
||||||
Moves.HYPERSPACE_HOLE,
|
|
||||||
Moves.ICE_BURN,
|
|
||||||
Moves.INSTRUCT,
|
|
||||||
Moves.JET_PUNCH,
|
|
||||||
Moves.JUNGLE_HEALING,
|
|
||||||
Moves.KINGS_SHIELD,
|
|
||||||
Moves.LIFE_DEW,
|
|
||||||
Moves.LIGHT_OF_RUIN,
|
|
||||||
Moves.MAKE_IT_RAIN,
|
|
||||||
Moves.MAGICAL_TORQUE,
|
|
||||||
Moves.MAT_BLOCK,
|
|
||||||
Moves.ME_FIRST,
|
|
||||||
Moves.METEOR_ASSAULT,
|
|
||||||
Moves.METRONOME,
|
|
||||||
Moves.MIMIC,
|
|
||||||
Moves.MIND_BLOWN,
|
|
||||||
Moves.MIRROR_COAT,
|
|
||||||
Moves.MIRROR_MOVE,
|
|
||||||
Moves.MOONGEIST_BEAM,
|
|
||||||
Moves.NATURE_POWER,
|
|
||||||
Moves.NATURES_MADNESS,
|
|
||||||
Moves.NOXIOUS_TORQUE,
|
|
||||||
Moves.OBSTRUCT,
|
|
||||||
Moves.ORDER_UP,
|
|
||||||
Moves.ORIGIN_PULSE,
|
|
||||||
Moves.OVERDRIVE,
|
|
||||||
Moves.PHOTON_GEYSER,
|
|
||||||
Moves.PLASMA_FISTS,
|
|
||||||
Moves.POPULATION_BOMB,
|
|
||||||
Moves.POUNCE,
|
|
||||||
Moves.POWER_SHIFT,
|
|
||||||
Moves.PRECIPICE_BLADES,
|
|
||||||
Moves.PROTECT,
|
|
||||||
Moves.PYRO_BALL,
|
|
||||||
Moves.QUASH,
|
|
||||||
Moves.QUICK_GUARD,
|
|
||||||
Moves.RAGE_FIST,
|
|
||||||
Moves.RAGE_POWDER,
|
|
||||||
Moves.RAGING_BULL,
|
|
||||||
Moves.RAGING_FURY,
|
|
||||||
Moves.RELIC_SONG,
|
|
||||||
Moves.REVIVAL_BLESSING,
|
|
||||||
Moves.RUINATION,
|
|
||||||
Moves.SALT_CURE,
|
|
||||||
Moves.SECRET_SWORD,
|
|
||||||
Moves.SHED_TAIL,
|
|
||||||
Moves.SHELL_TRAP,
|
|
||||||
Moves.SILK_TRAP,
|
|
||||||
Moves.SKETCH,
|
|
||||||
Moves.SLEEP_TALK,
|
|
||||||
Moves.SNAP_TRAP,
|
|
||||||
Moves.SNARL,
|
|
||||||
Moves.SNATCH,
|
|
||||||
Moves.SNORE,
|
|
||||||
Moves.SNOWSCAPE,
|
|
||||||
Moves.SPECTRAL_THIEF,
|
|
||||||
Moves.SPICY_EXTRACT,
|
|
||||||
Moves.SPIKY_SHIELD,
|
|
||||||
Moves.SPIRIT_BREAK,
|
|
||||||
Moves.SPOTLIGHT,
|
|
||||||
Moves.STEAM_ERUPTION,
|
|
||||||
Moves.STEEL_BEAM,
|
|
||||||
Moves.STRANGE_STEAM,
|
|
||||||
Moves.STRUGGLE,
|
|
||||||
Moves.SUNSTEEL_STRIKE,
|
|
||||||
Moves.SURGING_STRIKES,
|
|
||||||
Moves.SWITCHEROO,
|
|
||||||
Moves.TECHNO_BLAST,
|
|
||||||
Moves.TERA_STARSTORM,
|
|
||||||
Moves.THIEF,
|
|
||||||
Moves.THOUSAND_ARROWS,
|
|
||||||
Moves.THOUSAND_WAVES,
|
|
||||||
Moves.THUNDER_CAGE,
|
|
||||||
Moves.THUNDEROUS_KICK,
|
|
||||||
Moves.TIDY_UP,
|
|
||||||
Moves.TRAILBLAZE,
|
|
||||||
Moves.TRANSFORM,
|
|
||||||
Moves.TRICK,
|
|
||||||
Moves.TWIN_BEAM,
|
|
||||||
Moves.V_CREATE,
|
|
||||||
Moves.WICKED_BLOW,
|
|
||||||
Moves.WICKED_TORQUE,
|
|
||||||
Moves.WIDE_GUARD,
|
|
||||||
];
|
|
||||||
|
|
||||||
const invalidAssistMoves: Moves[] = [
|
|
||||||
Moves.ASSIST,
|
|
||||||
Moves.BANEFUL_BUNKER,
|
|
||||||
Moves.BEAK_BLAST,
|
|
||||||
Moves.BELCH,
|
|
||||||
Moves.BESTOW,
|
|
||||||
Moves.BOUNCE,
|
|
||||||
Moves.CELEBRATE,
|
|
||||||
Moves.CHATTER,
|
|
||||||
Moves.CIRCLE_THROW,
|
|
||||||
Moves.COPYCAT,
|
|
||||||
Moves.COUNTER,
|
|
||||||
Moves.COVET,
|
|
||||||
Moves.DESTINY_BOND,
|
|
||||||
Moves.DETECT,
|
|
||||||
Moves.DIG,
|
|
||||||
Moves.DIVE,
|
|
||||||
Moves.DRAGON_TAIL,
|
|
||||||
Moves.ENDURE,
|
|
||||||
Moves.FEINT,
|
|
||||||
Moves.FLY,
|
|
||||||
Moves.FOCUS_PUNCH,
|
|
||||||
Moves.FOLLOW_ME,
|
|
||||||
Moves.HELPING_HAND,
|
|
||||||
Moves.HOLD_HANDS,
|
|
||||||
Moves.KINGS_SHIELD,
|
|
||||||
Moves.MAT_BLOCK,
|
|
||||||
Moves.ME_FIRST,
|
|
||||||
Moves.METRONOME,
|
|
||||||
Moves.MIMIC,
|
|
||||||
Moves.MIRROR_COAT,
|
|
||||||
Moves.MIRROR_MOVE,
|
|
||||||
Moves.NATURE_POWER,
|
|
||||||
Moves.PHANTOM_FORCE,
|
|
||||||
Moves.PROTECT,
|
|
||||||
Moves.RAGE_POWDER,
|
|
||||||
Moves.ROAR,
|
|
||||||
Moves.SHADOW_FORCE,
|
|
||||||
Moves.SHELL_TRAP,
|
|
||||||
Moves.SKETCH,
|
|
||||||
Moves.SKY_DROP,
|
|
||||||
Moves.SLEEP_TALK,
|
|
||||||
Moves.SNATCH,
|
|
||||||
Moves.SPIKY_SHIELD,
|
|
||||||
Moves.SPOTLIGHT,
|
|
||||||
Moves.STRUGGLE,
|
|
||||||
Moves.SWITCHEROO,
|
|
||||||
Moves.THIEF,
|
|
||||||
Moves.TRANSFORM,
|
|
||||||
Moves.TRICK,
|
|
||||||
Moves.WHIRLWIND,
|
|
||||||
];
|
|
||||||
|
|
||||||
const invalidSleepTalkMoves: Moves[] = [
|
|
||||||
Moves.ASSIST,
|
|
||||||
Moves.BELCH,
|
|
||||||
Moves.BEAK_BLAST,
|
|
||||||
Moves.BIDE,
|
|
||||||
Moves.BOUNCE,
|
|
||||||
Moves.COPYCAT,
|
|
||||||
Moves.DIG,
|
|
||||||
Moves.DIVE,
|
|
||||||
Moves.DYNAMAX_CANNON,
|
|
||||||
Moves.FREEZE_SHOCK,
|
|
||||||
Moves.FLY,
|
|
||||||
Moves.FOCUS_PUNCH,
|
|
||||||
Moves.GEOMANCY,
|
|
||||||
Moves.ICE_BURN,
|
|
||||||
Moves.ME_FIRST,
|
|
||||||
Moves.METRONOME,
|
|
||||||
Moves.MIRROR_MOVE,
|
|
||||||
Moves.MIMIC,
|
|
||||||
Moves.PHANTOM_FORCE,
|
|
||||||
Moves.RAZOR_WIND,
|
|
||||||
Moves.SHADOW_FORCE,
|
|
||||||
Moves.SHELL_TRAP,
|
|
||||||
Moves.SKETCH,
|
|
||||||
Moves.SKULL_BASH,
|
|
||||||
Moves.SKY_ATTACK,
|
|
||||||
Moves.SKY_DROP,
|
|
||||||
Moves.SLEEP_TALK,
|
|
||||||
Moves.SOLAR_BLADE,
|
|
||||||
Moves.SOLAR_BEAM,
|
|
||||||
Moves.STRUGGLE,
|
|
||||||
Moves.UPROAR,
|
|
||||||
];
|
|
||||||
|
|
||||||
const invalidCopycatMoves = [
|
|
||||||
Moves.ASSIST,
|
|
||||||
Moves.BANEFUL_BUNKER,
|
|
||||||
Moves.BEAK_BLAST,
|
|
||||||
Moves.BEHEMOTH_BASH,
|
|
||||||
Moves.BEHEMOTH_BLADE,
|
|
||||||
Moves.BESTOW,
|
|
||||||
Moves.CELEBRATE,
|
|
||||||
Moves.CHATTER,
|
|
||||||
Moves.CIRCLE_THROW,
|
|
||||||
Moves.COPYCAT,
|
|
||||||
Moves.COUNTER,
|
|
||||||
Moves.COVET,
|
|
||||||
Moves.DESTINY_BOND,
|
|
||||||
Moves.DETECT,
|
|
||||||
Moves.DRAGON_TAIL,
|
|
||||||
Moves.ENDURE,
|
|
||||||
Moves.FEINT,
|
|
||||||
Moves.FOCUS_PUNCH,
|
|
||||||
Moves.FOLLOW_ME,
|
|
||||||
Moves.HELPING_HAND,
|
|
||||||
Moves.HOLD_HANDS,
|
|
||||||
Moves.KINGS_SHIELD,
|
|
||||||
Moves.MAT_BLOCK,
|
|
||||||
Moves.ME_FIRST,
|
|
||||||
Moves.METRONOME,
|
|
||||||
Moves.MIMIC,
|
|
||||||
Moves.MIRROR_COAT,
|
|
||||||
Moves.MIRROR_MOVE,
|
|
||||||
Moves.PROTECT,
|
|
||||||
Moves.RAGE_POWDER,
|
|
||||||
Moves.ROAR,
|
|
||||||
Moves.SHELL_TRAP,
|
|
||||||
Moves.SKETCH,
|
|
||||||
Moves.SLEEP_TALK,
|
|
||||||
Moves.SNATCH,
|
|
||||||
Moves.SPIKY_SHIELD,
|
|
||||||
Moves.SPOTLIGHT,
|
|
||||||
Moves.STRUGGLE,
|
|
||||||
Moves.SWITCHEROO,
|
|
||||||
Moves.THIEF,
|
|
||||||
Moves.TRANSFORM,
|
|
||||||
Moves.TRICK,
|
|
||||||
Moves.WHIRLWIND,
|
|
||||||
];
|
|
||||||
|
|
||||||
export class NaturePowerAttr extends OverrideMoveEffectAttr {
|
export class NaturePowerAttr extends OverrideMoveEffectAttr {
|
||||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
let moveId;
|
let moveId;
|
||||||
@ -7201,7 +6926,7 @@ export class NaturePowerAttr extends OverrideMoveEffectAttr {
|
|||||||
*/
|
*/
|
||||||
export class CopyMoveAttr extends CallMoveAttr {
|
export class CopyMoveAttr extends CallMoveAttr {
|
||||||
private mirrorMove: boolean;
|
private mirrorMove: boolean;
|
||||||
constructor(mirrorMove: boolean, invalidMoves: Moves[] = []) {
|
constructor(mirrorMove: boolean, invalidMoves: ReadonlySet<Moves> = new Set()) {
|
||||||
super();
|
super();
|
||||||
this.mirrorMove = mirrorMove;
|
this.mirrorMove = mirrorMove;
|
||||||
this.invalidMoves = invalidMoves;
|
this.invalidMoves = invalidMoves;
|
||||||
@ -7219,7 +6944,7 @@ export class CopyMoveAttr extends CallMoveAttr {
|
|||||||
return target.getMoveHistory().length !== 0;
|
return target.getMoveHistory().length !== 0;
|
||||||
} else {
|
} else {
|
||||||
const lastMove = globalScene.currentBattle.lastMove;
|
const lastMove = globalScene.currentBattle.lastMove;
|
||||||
return lastMove !== undefined && !this.invalidMoves.includes(lastMove);
|
return lastMove !== undefined && !this.invalidMoves.has(lastMove);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user