mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-04 07:22:19 +02:00
Merge branch 'pagefaultgames:main' into main
This commit is contained in:
commit
ca88d22d98
@ -22,7 +22,6 @@ export function updateUserInfo(): Promise<[boolean, integer]> {
|
|||||||
return resolve([ true, 200 ]);
|
return resolve([ true, 200 ]);
|
||||||
}
|
}
|
||||||
Utils.apiFetch('account/info').then(response => {
|
Utils.apiFetch('account/info').then(response => {
|
||||||
console.log(response.status);
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
resolve([ false, response.status ]);
|
resolve([ false, response.status ]);
|
||||||
return;
|
return;
|
||||||
|
@ -19,7 +19,8 @@ import { } from "./data/move";
|
|||||||
import { initMoves } from './data/move';
|
import { initMoves } from './data/move';
|
||||||
import { ModifierPoolType, getDefaultModifierTypeForTier, getEnemyModifierTypesForWave } from './modifier/modifier-type';
|
import { ModifierPoolType, getDefaultModifierTypeForTier, getEnemyModifierTypesForWave } from './modifier/modifier-type';
|
||||||
import AbilityBar from './ui/ability-bar';
|
import AbilityBar from './ui/ability-bar';
|
||||||
import { Abilities, BlockItemTheftAbAttr, DoubleBattleChanceAbAttr, IncrementMovePriorityAbAttr, applyAbAttrs, initAbilities } from './data/ability';
|
import { BlockItemTheftAbAttr, DoubleBattleChanceAbAttr, IncrementMovePriorityAbAttr, applyAbAttrs, initAbilities } from './data/ability';
|
||||||
|
import { Abilities } from "./data/enums/abilities";
|
||||||
import Battle, { BattleType, FixedBattleConfig, fixedBattles } from './battle';
|
import Battle, { BattleType, FixedBattleConfig, fixedBattles } from './battle';
|
||||||
import { GameMode, GameModes, gameModes } from './game-mode';
|
import { GameMode, GameModes, gameModes } from './game-mode';
|
||||||
import FieldSpritePipeline from './pipelines/field-sprite';
|
import FieldSpritePipeline from './pipelines/field-sprite';
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -5,7 +5,8 @@ import fs from 'vite-plugin-fs/browser';
|
|||||||
import PokemonSpecies, { PokemonForm, SpeciesFormKey, allSpecies } from './pokemon-species';
|
import PokemonSpecies, { PokemonForm, SpeciesFormKey, allSpecies } from './pokemon-species';
|
||||||
import { GrowthRate } from './exp';
|
import { GrowthRate } from './exp';
|
||||||
import { Type } from './type';
|
import { Type } from './type';
|
||||||
import { Abilities, allAbilities } from './ability';
|
import { allAbilities } from './ability';
|
||||||
|
import { Abilities } from "./enums/abilities";
|
||||||
import { Species } from './enums/species';
|
import { Species } from './enums/species';
|
||||||
import { pokemonFormLevelMoves } from './pokemon-level-moves';
|
import { pokemonFormLevelMoves } from './pokemon-level-moves';
|
||||||
import { tmSpecies } from './tms';
|
import { tmSpecies } from './tms';
|
||||||
|
@ -8,11 +8,13 @@ import * as Utils from "../utils";
|
|||||||
import { Moves } from "./enums/moves";
|
import { Moves } from "./enums/moves";
|
||||||
import { ChargeAttr, MoveFlags, allMoves } from "./move";
|
import { ChargeAttr, MoveFlags, allMoves } from "./move";
|
||||||
import { Type } from "./type";
|
import { Type } from "./type";
|
||||||
import { Abilities, BlockNonDirectDamageAbAttr, FlinchEffectAbAttr, applyAbAttrs } from "./ability";
|
import { BlockNonDirectDamageAbAttr, FlinchEffectAbAttr, applyAbAttrs } from "./ability";
|
||||||
|
import { Abilities } from "./enums/abilities";
|
||||||
import { BattlerTagType } from "./enums/battler-tag-type";
|
import { BattlerTagType } from "./enums/battler-tag-type";
|
||||||
import { TerrainType } from "./terrain";
|
import { TerrainType } from "./terrain";
|
||||||
import { WeatherType } from "./weather";
|
import { WeatherType } from "./weather";
|
||||||
import { BattleStat } from "./battle-stat";
|
import { BattleStat } from "./battle-stat";
|
||||||
|
import { allAbilities } from "./ability"
|
||||||
|
|
||||||
export enum BattlerTagLapseType {
|
export enum BattlerTagLapseType {
|
||||||
FAINT,
|
FAINT,
|
||||||
@ -797,14 +799,15 @@ export class TruantTag extends AbilityBattlerTag {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
|
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
|
||||||
if (pokemon.getAbility().id !== Abilities.TRUANT)
|
if ((!pokemon.canApplyAbility() || pokemon.getAbility().id !== Abilities.TRUANT) && (!pokemon.canApplyAbility(true) || pokemon.getPassiveAbility().id !== Abilities.TRUANT))
|
||||||
return super.lapse(pokemon, lapseType);
|
return super.lapse(pokemon, lapseType);
|
||||||
|
const passive = pokemon.getAbility().id !== Abilities.TRUANT;
|
||||||
|
|
||||||
const lastMove = pokemon.getLastXMoves().find(() => true);
|
const lastMove = pokemon.getLastXMoves().find(() => true);
|
||||||
|
|
||||||
if (lastMove && lastMove.move !== Moves.NONE) {
|
if (lastMove && lastMove.move !== Moves.NONE) {
|
||||||
(pokemon.scene.getCurrentPhase() as MovePhase).cancel();
|
(pokemon.scene.getCurrentPhase() as MovePhase).cancel();
|
||||||
pokemon.scene.unshiftPhase(new ShowAbilityPhase(pokemon.scene, pokemon.id));
|
pokemon.scene.unshiftPhase(new ShowAbilityPhase(pokemon.scene, pokemon.id, passive));
|
||||||
pokemon.scene.queueMessage(getPokemonMessage(pokemon, ' is\nloafing around!'));
|
pokemon.scene.queueMessage(getPokemonMessage(pokemon, ' is\nloafing around!'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -824,7 +827,7 @@ export class SlowStartTag extends AbilityBattlerTag {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
|
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
|
||||||
if (pokemon.getAbility().id !== this.ability)
|
if ((!pokemon.canApplyAbility() || pokemon.getAbility().id !== this.ability) && (!pokemon.canApplyAbility(true) || pokemon.getPassiveAbility().id !== this.ability))
|
||||||
this.turnCount = 1;
|
this.turnCount = 1;
|
||||||
|
|
||||||
return super.lapse(pokemon, lapseType);
|
return super.lapse(pokemon, lapseType);
|
||||||
@ -875,7 +878,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag {
|
|||||||
onRemove(pokemon: Pokemon): void {
|
onRemove(pokemon: Pokemon): void {
|
||||||
super.onRemove(pokemon);
|
super.onRemove(pokemon);
|
||||||
|
|
||||||
pokemon.scene.queueMessage(`The effects of ${getPokemonMessage(pokemon, `'s\n${pokemon.getAbility().name} wore off!`)}`);
|
pokemon.scene.queueMessage(`The effects of ${getPokemonMessage(pokemon, `'s\n${allAbilities[this.ability].name} wore off!`)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
313
src/data/enums/abilities.ts
Normal file
313
src/data/enums/abilities.ts
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
export enum Abilities {
|
||||||
|
NONE,
|
||||||
|
STENCH,
|
||||||
|
DRIZZLE,
|
||||||
|
SPEED_BOOST,
|
||||||
|
BATTLE_ARMOR,
|
||||||
|
STURDY,
|
||||||
|
DAMP,
|
||||||
|
LIMBER,
|
||||||
|
SAND_VEIL,
|
||||||
|
STATIC,
|
||||||
|
VOLT_ABSORB,
|
||||||
|
WATER_ABSORB,
|
||||||
|
OBLIVIOUS,
|
||||||
|
CLOUD_NINE,
|
||||||
|
COMPOUND_EYES,
|
||||||
|
INSOMNIA,
|
||||||
|
COLOR_CHANGE,
|
||||||
|
IMMUNITY,
|
||||||
|
FLASH_FIRE,
|
||||||
|
SHIELD_DUST,
|
||||||
|
OWN_TEMPO,
|
||||||
|
SUCTION_CUPS,
|
||||||
|
INTIMIDATE,
|
||||||
|
SHADOW_TAG,
|
||||||
|
ROUGH_SKIN,
|
||||||
|
WONDER_GUARD,
|
||||||
|
LEVITATE,
|
||||||
|
EFFECT_SPORE,
|
||||||
|
SYNCHRONIZE,
|
||||||
|
CLEAR_BODY,
|
||||||
|
NATURAL_CURE,
|
||||||
|
LIGHTNING_ROD,
|
||||||
|
SERENE_GRACE,
|
||||||
|
SWIFT_SWIM,
|
||||||
|
CHLOROPHYLL,
|
||||||
|
ILLUMINATE,
|
||||||
|
TRACE,
|
||||||
|
HUGE_POWER,
|
||||||
|
POISON_POINT,
|
||||||
|
INNER_FOCUS,
|
||||||
|
MAGMA_ARMOR,
|
||||||
|
WATER_VEIL,
|
||||||
|
MAGNET_PULL,
|
||||||
|
SOUNDPROOF,
|
||||||
|
RAIN_DISH,
|
||||||
|
SAND_STREAM,
|
||||||
|
PRESSURE,
|
||||||
|
THICK_FAT,
|
||||||
|
EARLY_BIRD,
|
||||||
|
FLAME_BODY,
|
||||||
|
RUN_AWAY,
|
||||||
|
KEEN_EYE,
|
||||||
|
HYPER_CUTTER,
|
||||||
|
PICKUP,
|
||||||
|
TRUANT,
|
||||||
|
HUSTLE,
|
||||||
|
CUTE_CHARM,
|
||||||
|
PLUS,
|
||||||
|
MINUS,
|
||||||
|
FORECAST,
|
||||||
|
STICKY_HOLD,
|
||||||
|
SHED_SKIN,
|
||||||
|
GUTS,
|
||||||
|
MARVEL_SCALE,
|
||||||
|
LIQUID_OOZE,
|
||||||
|
OVERGROW,
|
||||||
|
BLAZE,
|
||||||
|
TORRENT,
|
||||||
|
SWARM,
|
||||||
|
ROCK_HEAD,
|
||||||
|
DROUGHT,
|
||||||
|
ARENA_TRAP,
|
||||||
|
VITAL_SPIRIT,
|
||||||
|
WHITE_SMOKE,
|
||||||
|
PURE_POWER,
|
||||||
|
SHELL_ARMOR,
|
||||||
|
AIR_LOCK,
|
||||||
|
TANGLED_FEET,
|
||||||
|
MOTOR_DRIVE,
|
||||||
|
RIVALRY,
|
||||||
|
STEADFAST,
|
||||||
|
SNOW_CLOAK,
|
||||||
|
GLUTTONY,
|
||||||
|
ANGER_POINT,
|
||||||
|
UNBURDEN,
|
||||||
|
HEATPROOF,
|
||||||
|
SIMPLE,
|
||||||
|
DRY_SKIN,
|
||||||
|
DOWNLOAD,
|
||||||
|
IRON_FIST,
|
||||||
|
POISON_HEAL,
|
||||||
|
ADAPTABILITY,
|
||||||
|
SKILL_LINK,
|
||||||
|
HYDRATION,
|
||||||
|
SOLAR_POWER,
|
||||||
|
QUICK_FEET,
|
||||||
|
NORMALIZE,
|
||||||
|
SNIPER,
|
||||||
|
MAGIC_GUARD,
|
||||||
|
NO_GUARD,
|
||||||
|
STALL,
|
||||||
|
TECHNICIAN,
|
||||||
|
LEAF_GUARD,
|
||||||
|
KLUTZ,
|
||||||
|
MOLD_BREAKER,
|
||||||
|
SUPER_LUCK,
|
||||||
|
AFTERMATH,
|
||||||
|
ANTICIPATION,
|
||||||
|
FOREWARN,
|
||||||
|
UNAWARE,
|
||||||
|
TINTED_LENS,
|
||||||
|
FILTER,
|
||||||
|
SLOW_START,
|
||||||
|
SCRAPPY,
|
||||||
|
STORM_DRAIN,
|
||||||
|
ICE_BODY,
|
||||||
|
SOLID_ROCK,
|
||||||
|
SNOW_WARNING,
|
||||||
|
HONEY_GATHER,
|
||||||
|
FRISK,
|
||||||
|
RECKLESS,
|
||||||
|
MULTITYPE,
|
||||||
|
FLOWER_GIFT,
|
||||||
|
BAD_DREAMS,
|
||||||
|
PICKPOCKET,
|
||||||
|
SHEER_FORCE,
|
||||||
|
CONTRARY,
|
||||||
|
UNNERVE,
|
||||||
|
DEFIANT,
|
||||||
|
DEFEATIST,
|
||||||
|
CURSED_BODY,
|
||||||
|
HEALER,
|
||||||
|
FRIEND_GUARD,
|
||||||
|
WEAK_ARMOR,
|
||||||
|
HEAVY_METAL,
|
||||||
|
LIGHT_METAL,
|
||||||
|
MULTISCALE,
|
||||||
|
TOXIC_BOOST,
|
||||||
|
FLARE_BOOST,
|
||||||
|
HARVEST,
|
||||||
|
TELEPATHY,
|
||||||
|
MOODY,
|
||||||
|
OVERCOAT,
|
||||||
|
POISON_TOUCH,
|
||||||
|
REGENERATOR,
|
||||||
|
BIG_PECKS,
|
||||||
|
SAND_RUSH,
|
||||||
|
WONDER_SKIN,
|
||||||
|
ANALYTIC,
|
||||||
|
ILLUSION,
|
||||||
|
IMPOSTER,
|
||||||
|
INFILTRATOR,
|
||||||
|
MUMMY,
|
||||||
|
MOXIE,
|
||||||
|
JUSTIFIED,
|
||||||
|
RATTLED,
|
||||||
|
MAGIC_BOUNCE,
|
||||||
|
SAP_SIPPER,
|
||||||
|
PRANKSTER,
|
||||||
|
SAND_FORCE,
|
||||||
|
IRON_BARBS,
|
||||||
|
ZEN_MODE,
|
||||||
|
VICTORY_STAR,
|
||||||
|
TURBOBLAZE,
|
||||||
|
TERAVOLT,
|
||||||
|
AROMA_VEIL,
|
||||||
|
FLOWER_VEIL,
|
||||||
|
CHEEK_POUCH,
|
||||||
|
PROTEAN,
|
||||||
|
FUR_COAT,
|
||||||
|
MAGICIAN,
|
||||||
|
BULLETPROOF,
|
||||||
|
COMPETITIVE,
|
||||||
|
STRONG_JAW,
|
||||||
|
REFRIGERATE,
|
||||||
|
SWEET_VEIL,
|
||||||
|
STANCE_CHANGE,
|
||||||
|
GALE_WINGS,
|
||||||
|
MEGA_LAUNCHER,
|
||||||
|
GRASS_PELT,
|
||||||
|
SYMBIOSIS,
|
||||||
|
TOUGH_CLAWS,
|
||||||
|
PIXILATE,
|
||||||
|
GOOEY,
|
||||||
|
AERILATE,
|
||||||
|
PARENTAL_BOND,
|
||||||
|
DARK_AURA,
|
||||||
|
FAIRY_AURA,
|
||||||
|
AURA_BREAK,
|
||||||
|
PRIMORDIAL_SEA,
|
||||||
|
DESOLATE_LAND,
|
||||||
|
DELTA_STREAM,
|
||||||
|
STAMINA,
|
||||||
|
WIMP_OUT,
|
||||||
|
EMERGENCY_EXIT,
|
||||||
|
WATER_COMPACTION,
|
||||||
|
MERCILESS,
|
||||||
|
SHIELDS_DOWN,
|
||||||
|
STAKEOUT,
|
||||||
|
WATER_BUBBLE,
|
||||||
|
STEELWORKER,
|
||||||
|
BERSERK,
|
||||||
|
SLUSH_RUSH,
|
||||||
|
LONG_REACH,
|
||||||
|
LIQUID_VOICE,
|
||||||
|
TRIAGE,
|
||||||
|
GALVANIZE,
|
||||||
|
SURGE_SURFER,
|
||||||
|
SCHOOLING,
|
||||||
|
DISGUISE,
|
||||||
|
BATTLE_BOND,
|
||||||
|
POWER_CONSTRUCT,
|
||||||
|
CORROSION,
|
||||||
|
COMATOSE,
|
||||||
|
QUEENLY_MAJESTY,
|
||||||
|
INNARDS_OUT,
|
||||||
|
DANCER,
|
||||||
|
BATTERY,
|
||||||
|
FLUFFY,
|
||||||
|
DAZZLING,
|
||||||
|
SOUL_HEART,
|
||||||
|
TANGLING_HAIR,
|
||||||
|
RECEIVER,
|
||||||
|
POWER_OF_ALCHEMY,
|
||||||
|
BEAST_BOOST,
|
||||||
|
RKS_SYSTEM,
|
||||||
|
ELECTRIC_SURGE,
|
||||||
|
PSYCHIC_SURGE,
|
||||||
|
MISTY_SURGE,
|
||||||
|
GRASSY_SURGE,
|
||||||
|
FULL_METAL_BODY,
|
||||||
|
SHADOW_SHIELD,
|
||||||
|
PRISM_ARMOR,
|
||||||
|
NEUROFORCE,
|
||||||
|
INTREPID_SWORD,
|
||||||
|
DAUNTLESS_SHIELD,
|
||||||
|
LIBERO,
|
||||||
|
BALL_FETCH,
|
||||||
|
COTTON_DOWN,
|
||||||
|
PROPELLER_TAIL,
|
||||||
|
MIRROR_ARMOR,
|
||||||
|
GULP_MISSILE,
|
||||||
|
STALWART,
|
||||||
|
STEAM_ENGINE,
|
||||||
|
PUNK_ROCK,
|
||||||
|
SAND_SPIT,
|
||||||
|
ICE_SCALES,
|
||||||
|
RIPEN,
|
||||||
|
ICE_FACE,
|
||||||
|
POWER_SPOT,
|
||||||
|
MIMICRY,
|
||||||
|
SCREEN_CLEANER,
|
||||||
|
STEELY_SPIRIT,
|
||||||
|
PERISH_BODY,
|
||||||
|
WANDERING_SPIRIT,
|
||||||
|
GORILLA_TACTICS,
|
||||||
|
NEUTRALIZING_GAS,
|
||||||
|
PASTEL_VEIL,
|
||||||
|
HUNGER_SWITCH,
|
||||||
|
QUICK_DRAW,
|
||||||
|
UNSEEN_FIST,
|
||||||
|
CURIOUS_MEDICINE,
|
||||||
|
TRANSISTOR,
|
||||||
|
DRAGONS_MAW,
|
||||||
|
CHILLING_NEIGH,
|
||||||
|
GRIM_NEIGH,
|
||||||
|
AS_ONE_GLASTRIER,
|
||||||
|
AS_ONE_SPECTRIER,
|
||||||
|
LINGERING_AROMA,
|
||||||
|
SEED_SOWER,
|
||||||
|
THERMAL_EXCHANGE,
|
||||||
|
ANGER_SHELL,
|
||||||
|
PURIFYING_SALT,
|
||||||
|
WELL_BAKED_BODY,
|
||||||
|
WIND_RIDER,
|
||||||
|
GUARD_DOG,
|
||||||
|
ROCKY_PAYLOAD,
|
||||||
|
WIND_POWER,
|
||||||
|
ZERO_TO_HERO,
|
||||||
|
COMMANDER,
|
||||||
|
ELECTROMORPHOSIS,
|
||||||
|
PROTOSYNTHESIS,
|
||||||
|
QUARK_DRIVE,
|
||||||
|
GOOD_AS_GOLD,
|
||||||
|
VESSEL_OF_RUIN,
|
||||||
|
SWORD_OF_RUIN,
|
||||||
|
TABLETS_OF_RUIN,
|
||||||
|
BEADS_OF_RUIN,
|
||||||
|
ORICHALCUM_PULSE,
|
||||||
|
HADRON_ENGINE,
|
||||||
|
OPPORTUNIST,
|
||||||
|
CUD_CHEW,
|
||||||
|
SHARPNESS,
|
||||||
|
SUPREME_OVERLORD,
|
||||||
|
COSTAR,
|
||||||
|
TOXIC_DEBRIS,
|
||||||
|
ARMOR_TAIL,
|
||||||
|
EARTH_EATER,
|
||||||
|
MYCELIUM_MIGHT,
|
||||||
|
MINDS_EYE,
|
||||||
|
SUPERSWEET_SYRUP,
|
||||||
|
HOSPITALITY,
|
||||||
|
TOXIC_CHAIN,
|
||||||
|
EMBODY_ASPECT_TEAL,
|
||||||
|
EMBODY_ASPECT_WELLSPRING,
|
||||||
|
EMBODY_ASPECT_HEARTHFLAME,
|
||||||
|
EMBODY_ASPECT_CORNERSTONE,
|
||||||
|
TERA_SHIFT,
|
||||||
|
TERA_SHELL,
|
||||||
|
TERAFORM_ZERO,
|
||||||
|
POISON_PUPPETEER
|
||||||
|
}
|
@ -12,7 +12,8 @@ import * as Utils from "../utils";
|
|||||||
import { WeatherType } from "./weather";
|
import { WeatherType } from "./weather";
|
||||||
import { ArenaTagSide, ArenaTrapTag } from "./arena-tag";
|
import { ArenaTagSide, ArenaTrapTag } from "./arena-tag";
|
||||||
import { ArenaTagType } from "./enums/arena-tag-type";
|
import { ArenaTagType } from "./enums/arena-tag-type";
|
||||||
import { Abilities, ProtectAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr } from "./ability";
|
import { ProtectAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr } from "./ability";
|
||||||
|
import { Abilities } from "./enums/abilities";
|
||||||
import { PokemonHeldItemModifier } from "../modifier/modifier";
|
import { PokemonHeldItemModifier } from "../modifier/modifier";
|
||||||
import { BattlerIndex } from "../battle";
|
import { BattlerIndex } from "../battle";
|
||||||
import { Stat } from "./pokemon-stat";
|
import { Stat } from "./pokemon-stat";
|
||||||
@ -271,7 +272,7 @@ export default class Move {
|
|||||||
checkFlag(flag: MoveFlags, user: Pokemon, target: Pokemon): boolean {
|
checkFlag(flag: MoveFlags, user: Pokemon, target: Pokemon): boolean {
|
||||||
switch (flag) {
|
switch (flag) {
|
||||||
case MoveFlags.MAKES_CONTACT:
|
case MoveFlags.MAKES_CONTACT:
|
||||||
if (user.getAbility().hasAttr(IgnoreContactAbAttr))
|
if ((user.canApplyAbility() && user.getAbility().hasAttr(IgnoreContactAbAttr)) || (user.canApplyAbility(true) && user.getPassiveAbility().hasAttr(IgnoreContactAbAttr)))
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1898,6 +1899,57 @@ export class BlizzardAccuracyAttr extends VariableAccuracyAttr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class VariableMoveCategoryAttr extends MoveAttr {
|
||||||
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class PhotonGeyserCategoryAttr extends VariableMoveCategoryAttr {
|
||||||
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
|
const category = (args[0] as Utils.IntegerHolder);
|
||||||
|
|
||||||
|
if (user.getBattleStat(Stat.ATK, target, move) > user.getBattleStat(Stat.SPATK, target, move)) {
|
||||||
|
category.value = MoveCategory.PHYSICAL;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class TeraBlastCategoryAttr extends VariableMoveCategoryAttr {
|
||||||
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
|
const category = (args[0] as Utils.IntegerHolder);
|
||||||
|
|
||||||
|
if (user.isTerastallized() && user.getBattleStat(Stat.ATK, target, move) > user.getBattleStat(Stat.SPATK, target, move)) {
|
||||||
|
category.value = MoveCategory.PHYSICAL;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ShellSideArmCategoryAttr extends VariableMoveCategoryAttr {
|
||||||
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
|
const category = (args[0] as Utils.IntegerHolder);
|
||||||
|
const atkRatio = user.getBattleStat(Stat.ATK, target, move) / target.getBattleStat(Stat.DEF, user, move);
|
||||||
|
const specialRatio = user.getBattleStat(Stat.SPATK, target, move) / target.getBattleStat(Stat.SPDEF, user, move);
|
||||||
|
|
||||||
|
// Shell Side Arm is much more complicated than it looks, this is a partial implementation to try to achieve something similar to the games
|
||||||
|
if (atkRatio > specialRatio) {
|
||||||
|
category.value = MoveCategory.PHYSICAL;
|
||||||
|
return true;
|
||||||
|
} else if (atkRatio === specialRatio && user.randSeedInt(2) === 0) {
|
||||||
|
category.value = MoveCategory.PHYSICAL;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class VariableMoveTypeAttr extends MoveAttr {
|
export class VariableMoveTypeAttr extends MoveAttr {
|
||||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||||
return false;
|
return false;
|
||||||
@ -4453,9 +4505,9 @@ export function initMoves() {
|
|||||||
.attr(StatChangeAttr, [ BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 2, true)
|
.attr(StatChangeAttr, [ BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 2, true)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new StatusMove(Moves.MAGNETIC_FLUX, "Magnetic Flux", Type.ELECTRIC, -1, 20, "The user manipulates magnetic fields, which raises the Defense and Sp. Def stats of ally Pokémon with the Plus or Minus Ability.", -1, 0, 6)
|
new StatusMove(Moves.MAGNETIC_FLUX, "Magnetic Flux", Type.ELECTRIC, -1, 20, "The user manipulates magnetic fields, which raises the Defense and Sp. Def stats of ally Pokémon with the Plus or Minus Ability.", -1, 0, 6)
|
||||||
.attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], 1, false, (user, target, move) => !![ Abilities.PLUS, Abilities.MINUS].find(a => a === user.getAbility().id))
|
.attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], 1, false, (user, target, move) => !![ Abilities.PLUS, Abilities.MINUS].find(a => a === user.getAbility().id || (user.canApplyPassive() && a === user.getPassiveAbility().id)))
|
||||||
.target(MoveTarget.USER_AND_ALLIES)
|
.target(MoveTarget.USER_AND_ALLIES)
|
||||||
.condition((user, target, move) => !![ user, user.getAlly() ].filter(p => p?.isActive()).find(p => !![ Abilities.PLUS, Abilities.MINUS].find(a => a === p.getAbility().id))),
|
.condition((user, target, move) => !![ user, user.getAlly() ].filter(p => p?.isActive()).find(p => !![ Abilities.PLUS, Abilities.MINUS].find(a => a === p.getAbility().id || (user.canApplyPassive() && a === user.getPassiveAbility().id)))),
|
||||||
new StatusMove(Moves.HAPPY_HOUR, "Happy Hour (N)", Type.NORMAL, -1, 30, "Using Happy Hour doubles the amount of prize money received after battle.", -1, 0, 6) // No animation
|
new StatusMove(Moves.HAPPY_HOUR, "Happy Hour (N)", Type.NORMAL, -1, 30, "Using Happy Hour doubles the amount of prize money received after battle.", -1, 0, 6) // No animation
|
||||||
.target(MoveTarget.USER_SIDE),
|
.target(MoveTarget.USER_SIDE),
|
||||||
new StatusMove(Moves.ELECTRIC_TERRAIN, "Electric Terrain", Type.ELECTRIC, -1, 10, "The user electrifies the ground for five turns, powering up Electric-type moves. Pokémon on the ground no longer fall asleep.", -1, 0, 6)
|
new StatusMove(Moves.ELECTRIC_TERRAIN, "Electric Terrain", Type.ELECTRIC, -1, 10, "The user electrifies the ground for five turns, powering up Electric-type moves. Pokémon on the ground no longer fall asleep.", -1, 0, 6)
|
||||||
@ -4580,9 +4632,9 @@ export function initMoves() {
|
|||||||
.attr(StatChangeAttr, BattleStat.SPD, -1),
|
.attr(StatChangeAttr, BattleStat.SPD, -1),
|
||||||
new SelfStatusMove(Moves.LASER_FOCUS, "Laser Focus (N)", Type.NORMAL, -1, 30, "The user concentrates intensely. The attack on the next turn always results in a critical hit.", -1, 0, 7),
|
new SelfStatusMove(Moves.LASER_FOCUS, "Laser Focus (N)", Type.NORMAL, -1, 30, "The user concentrates intensely. The attack on the next turn always results in a critical hit.", -1, 0, 7),
|
||||||
new StatusMove(Moves.GEAR_UP, "Gear Up", Type.STEEL, -1, 20, "The user engages its gears to raise the Attack and Sp. Atk stats of ally Pokémon with the Plus or Minus Ability.", -1, 0, 7)
|
new StatusMove(Moves.GEAR_UP, "Gear Up", Type.STEEL, -1, 20, "The user engages its gears to raise the Attack and Sp. Atk stats of ally Pokémon with the Plus or Minus Ability.", -1, 0, 7)
|
||||||
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], 1, false, (user, target, move) => [ Abilities.PLUS, Abilities.MINUS ].indexOf(target.getAbility().id) > -1)
|
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], 1, false, (user, target, move) => [ Abilities.PLUS, Abilities.MINUS ].includes(target.getAbility().id) || (target.canApplyPassive() && [ Abilities.PLUS, Abilities.MINUS ].includes(target.getPassiveAbility().id)))
|
||||||
.target(MoveTarget.USER_AND_ALLIES)
|
.target(MoveTarget.USER_AND_ALLIES)
|
||||||
.condition((user, target, move) => !![ user, user.getAlly() ].find(p => p && [ Abilities.PLUS, Abilities.MINUS ].indexOf(p.getAbility().id) > -1)),
|
.condition((user, target, move) => !![ user, user.getAlly() ].find(p => p && [ Abilities.PLUS, Abilities.MINUS ].includes(p.getAbility().id) || (target.canApplyPassive() && [ Abilities.PLUS, Abilities.MINUS ].includes(target.getPassiveAbility().id)))),
|
||||||
new AttackMove(Moves.THROAT_CHOP, "Throat Chop (P)", Type.DARK, MoveCategory.PHYSICAL, 80, 100, 15, "The user attacks the target's throat, and the resultant suffering prevents the target from using moves that emit sound for two turns.", 100, 0, 7),
|
new AttackMove(Moves.THROAT_CHOP, "Throat Chop (P)", Type.DARK, MoveCategory.PHYSICAL, 80, 100, 15, "The user attacks the target's throat, and the resultant suffering prevents the target from using moves that emit sound for two turns.", 100, 0, 7),
|
||||||
new AttackMove(Moves.POLLEN_PUFF, "Pollen Puff (P)", Type.BUG, MoveCategory.SPECIAL, 90, 100, 15, "The user attacks the enemy with a pollen puff that explodes. If the target is an ally, it gives the ally a pollen puff that restores its HP instead.", -1, 0, 7)
|
new AttackMove(Moves.POLLEN_PUFF, "Pollen Puff (P)", Type.BUG, MoveCategory.SPECIAL, 90, 100, 15, "The user attacks the enemy with a pollen puff that explodes. If the target is an ally, it gives the ally a pollen puff that restores its HP instead.", -1, 0, 7)
|
||||||
.ballBombMove(),
|
.ballBombMove(),
|
||||||
@ -4672,9 +4724,11 @@ export function initMoves() {
|
|||||||
.target(MoveTarget.ALL_NEAR_OTHERS),
|
.target(MoveTarget.ALL_NEAR_OTHERS),
|
||||||
new AttackMove(Moves.PLASMA_FISTS, "Plasma Fists (P)", Type.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 15, "The user attacks with electrically charged fists. This move changes Normal-type moves to Electric-type moves.", -1, 0, 7)
|
new AttackMove(Moves.PLASMA_FISTS, "Plasma Fists (P)", Type.ELECTRIC, MoveCategory.PHYSICAL, 100, 100, 15, "The user attacks with electrically charged fists. This move changes Normal-type moves to Electric-type moves.", -1, 0, 7)
|
||||||
.punchingMove(),
|
.punchingMove(),
|
||||||
new AttackMove(Moves.PHOTON_GEYSER, "Photon Geyser (P)", Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 5, "The user attacks a target with a pillar of light. This move inflicts Attack or Sp. Atk damage—whichever stat is higher for the user.", -1, 0, 7),
|
new AttackMove(Moves.PHOTON_GEYSER, "Photon Geyser (P)", Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 5, "The user attacks a target with a pillar of light. This move inflicts Attack or Sp. Atk damage—whichever stat is higher for the user.", -1, 0, 7)
|
||||||
|
.attr(PhotonGeyserCategoryAttr),
|
||||||
/* Unused */
|
/* Unused */
|
||||||
new AttackMove(Moves.LIGHT_THAT_BURNS_THE_SKY, "Light That Burns the Sky (P)", Type.PSYCHIC, MoveCategory.SPECIAL, 200, -1, 1, "This attack inflicts Attack or Sp. Atk damage—whichever stat is higher for the user, Necrozma. This move ignores the target's Ability.", -1, 0, 7),
|
new AttackMove(Moves.LIGHT_THAT_BURNS_THE_SKY, "Light That Burns the Sky (P)", Type.PSYCHIC, MoveCategory.SPECIAL, 200, -1, 1, "This attack inflicts Attack or Sp. Atk damage—whichever stat is higher for the user, Necrozma. This move ignores the target's Ability.", -1, 0, 7)
|
||||||
|
.attr(PhotonGeyserCategoryAttr),
|
||||||
new AttackMove(Moves.SEARING_SUNRAZE_SMASH, "Searing Sunraze Smash (P)", Type.STEEL, MoveCategory.PHYSICAL, 200, -1, 1, "After obtaining Z-Power, the user, Solgaleo, attacks the target with full force. This move can ignore the effect of the target's Ability.", -1, 0, 7),
|
new AttackMove(Moves.SEARING_SUNRAZE_SMASH, "Searing Sunraze Smash (P)", Type.STEEL, MoveCategory.PHYSICAL, 200, -1, 1, "After obtaining Z-Power, the user, Solgaleo, attacks the target with full force. This move can ignore the effect of the target's Ability.", -1, 0, 7),
|
||||||
new AttackMove(Moves.MENACING_MOONRAZE_MAELSTROM, "Menacing Moonraze Maelstrom (P)", Type.GHOST, MoveCategory.SPECIAL, 200, -1, 1, "After obtaining Z-Power, the user, Lunala, attacks the target with full force. This move can ignore the effect of the target's Ability.", -1, 0, 7),
|
new AttackMove(Moves.MENACING_MOONRAZE_MAELSTROM, "Menacing Moonraze Maelstrom (P)", Type.GHOST, MoveCategory.SPECIAL, 200, -1, 1, "After obtaining Z-Power, the user, Lunala, attacks the target with full force. This move can ignore the effect of the target's Ability.", -1, 0, 7),
|
||||||
new AttackMove(Moves.LETS_SNUGGLE_FOREVER, "Let's Snuggle Forever (P)", Type.FAIRY, MoveCategory.PHYSICAL, 190, -1, 1, "After obtaining Z-Power, the user, Mimikyu, punches the target with full force.", -1, 0, 7),
|
new AttackMove(Moves.LETS_SNUGGLE_FOREVER, "Let's Snuggle Forever (P)", Type.FAIRY, MoveCategory.PHYSICAL, 190, -1, 1, "After obtaining Z-Power, the user, Mimikyu, punches the target with full force.", -1, 0, 7),
|
||||||
@ -4855,7 +4909,9 @@ export function initMoves() {
|
|||||||
.attr(ChargeAttr, ChargeAnim.METEOR_BEAM_CHARGING, 'is overflowing\nwith space power!', null, true)
|
.attr(ChargeAttr, ChargeAnim.METEOR_BEAM_CHARGING, 'is overflowing\nwith space power!', null, true)
|
||||||
.attr(StatChangeAttr, BattleStat.SPATK, 1, true)
|
.attr(StatChangeAttr, BattleStat.SPATK, 1, true)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new AttackMove(Moves.SHELL_SIDE_ARM, "Shell Side Arm (P)", Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, "This move inflicts physical or special damage, whichever will be more effective. This may also poison the target.", 20, 0, 8),
|
new AttackMove(Moves.SHELL_SIDE_ARM, "Shell Side Arm (P)", Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, "This move inflicts physical or special damage, whichever will be more effective. This may also poison the target.", 20, 0, 8)
|
||||||
|
.attr(ShellSideArmCategoryAttr)
|
||||||
|
.attr(StatusEffectAttr, StatusEffect.POISON),
|
||||||
new AttackMove(Moves.MISTY_EXPLOSION, "Misty Explosion (P)", Type.FAIRY, MoveCategory.SPECIAL, 100, 100, 5, "The user attacks everything around it and faints upon using this move. This move's power is increased on Misty Terrain.", -1, 0, 8)
|
new AttackMove(Moves.MISTY_EXPLOSION, "Misty Explosion (P)", Type.FAIRY, MoveCategory.SPECIAL, 100, 100, 5, "The user attacks everything around it and faints upon using this move. This move's power is increased on Misty Terrain.", -1, 0, 8)
|
||||||
.target(MoveTarget.ALL_NEAR_OTHERS),
|
.target(MoveTarget.ALL_NEAR_OTHERS),
|
||||||
new AttackMove(Moves.GRASSY_GLIDE, "Grassy Glide (P)", Type.GRASS, MoveCategory.PHYSICAL, 55, 100, 20, "Gliding on the ground, the user attacks the target. This move always goes first on Grassy Terrain.", -1, 0, 8),
|
new AttackMove(Moves.GRASSY_GLIDE, "Grassy Glide (P)", Type.GRASS, MoveCategory.PHYSICAL, 55, 100, 20, "Gliding on the ground, the user attacks the target. This move always goes first on Grassy Terrain.", -1, 0, 8),
|
||||||
@ -5057,7 +5113,8 @@ export function initMoves() {
|
|||||||
new AttackMove(Moves.G_MAX_RAPID_FLOW, "G-Max Rapid Flow (N)", Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, "A Water-type attack that Gigantamax Urshifu use. This rapid-strike move can ignore Max Guard.", -1, 0, 8)
|
new AttackMove(Moves.G_MAX_RAPID_FLOW, "G-Max Rapid Flow (N)", Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, "A Water-type attack that Gigantamax Urshifu use. This rapid-strike move can ignore Max Guard.", -1, 0, 8)
|
||||||
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
||||||
End Unused */
|
End Unused */
|
||||||
new AttackMove(Moves.TERA_BLAST, "Tera Blast (P)", Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, "If the user has Terastallized, it unleashes energy of its Tera Type. This move inflicts damage using the Attack or Sp. Atk stat-whichever is higher for the user.", -1, 0, 9),
|
new AttackMove(Moves.TERA_BLAST, "Tera Blast (P)", Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, "If the user has Terastallized, it unleashes energy of its Tera Type. This move inflicts damage using the Attack or Sp. Atk stat-whichever is higher for the user.", -1, 0, 9)
|
||||||
|
.attr(TeraBlastCategoryAttr),
|
||||||
new SelfStatusMove(Moves.SILK_TRAP, "Silk Trap", Type.BUG, -1, 10, "The user spins a silken trap, protecting itself from damage while lowering the Speed stat of any attacker that makes direct contact.", -1, 4, 9)
|
new SelfStatusMove(Moves.SILK_TRAP, "Silk Trap", Type.BUG, -1, 10, "The user spins a silken trap, protecting itself from damage while lowering the Speed stat of any attacker that makes direct contact.", -1, 4, 9)
|
||||||
.attr(ProtectAttr, BattlerTagType.SILK_TRAP),
|
.attr(ProtectAttr, BattlerTagType.SILK_TRAP),
|
||||||
new AttackMove(Moves.AXE_KICK, "Axe Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 120, 90, 10, "The user attacks by kicking up into the air and slamming its heel down upon the target. This may also confuse the target. If it misses, the user takes damage instead.", 30, 0, 9)
|
new AttackMove(Moves.AXE_KICK, "Axe Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 120, 90, 10, "The user attacks by kicking up into the air and slamming its heel down upon the target. This may also confuse the target. If it misses, the user takes damage instead.", 30, 0, 9)
|
||||||
@ -5193,7 +5250,8 @@ export function initMoves() {
|
|||||||
.attr(ElectroShotChargeAttr)
|
.attr(ElectroShotChargeAttr)
|
||||||
.attr(StatChangeAttr, BattleStat.SPATK, 1, true)
|
.attr(StatChangeAttr, BattleStat.SPATK, 1, true)
|
||||||
.ignoresVirtual(),
|
.ignoresVirtual(),
|
||||||
new AttackMove(Moves.TERA_STARSTORM, "Tera Starstorm (P)", Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, "With the power of its crystals, the user bombards and eliminates the target. When used by Terapagos in its Stellar Form, this move damages all opposing Pokémon.", -1, 0, 9),
|
new AttackMove(Moves.TERA_STARSTORM, "Tera Starstorm (P)", Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, "With the power of its crystals, the user bombards and eliminates the target. When used by Terapagos in its Stellar Form, this move damages all opposing Pokémon.", -1, 0, 9)
|
||||||
|
.attr(TeraBlastCategoryAttr),
|
||||||
new AttackMove(Moves.FICKLE_BEAM, "Fickle Beam", Type.DRAGON, MoveCategory.SPECIAL, 80, 100, 5, "The user shoots a beam of light to inflict damage. Sometimes all the user's heads shoot beams in unison, doubling the move's power.", 30, 0, 9)
|
new AttackMove(Moves.FICKLE_BEAM, "Fickle Beam", Type.DRAGON, MoveCategory.SPECIAL, 80, 100, 5, "The user shoots a beam of light to inflict damage. Sometimes all the user's heads shoot beams in unison, doubling the move's power.", 30, 0, 9)
|
||||||
.attr(PreMoveMessageAttr, doublePowerChanceMessageFunc)
|
.attr(PreMoveMessageAttr, doublePowerChanceMessageFunc)
|
||||||
.attr(DoublePowerChanceAttr),
|
.attr(DoublePowerChanceAttr),
|
||||||
|
@ -6,7 +6,7 @@ import { SpeciesFormKey } from "./pokemon-species";
|
|||||||
import { Species } from "./enums/species";
|
import { Species } from "./enums/species";
|
||||||
import { StatusEffect } from "./status-effect";
|
import { StatusEffect } from "./status-effect";
|
||||||
import { MoveCategory, allMoves } from "./move";
|
import { MoveCategory, allMoves } from "./move";
|
||||||
import { Abilities } from "./ability";
|
import { Abilities } from "./enums/abilities";
|
||||||
|
|
||||||
export enum FormChangeItem {
|
export enum FormChangeItem {
|
||||||
NONE,
|
NONE,
|
||||||
|
@ -10888,6 +10888,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 91, Moves.SELF_DESTRUCT ],
|
[ 91, Moves.SELF_DESTRUCT ],
|
||||||
],
|
],
|
||||||
[Species.CHESPIN]: [
|
[Species.CHESPIN]: [
|
||||||
|
[ 1, Moves.TACKLE ],
|
||||||
[ 1, Moves.VINE_WHIP ],
|
[ 1, Moves.VINE_WHIP ],
|
||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
[ 8, Moves.ROLLOUT ],
|
[ 8, Moves.ROLLOUT ],
|
||||||
@ -10902,6 +10903,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 48, Moves.WOOD_HAMMER ],
|
[ 48, Moves.WOOD_HAMMER ],
|
||||||
],
|
],
|
||||||
[Species.QUILLADIN]: [
|
[Species.QUILLADIN]: [
|
||||||
|
[ 1, Moves.TACKLE ],
|
||||||
[ 1, Moves.VINE_WHIP ],
|
[ 1, Moves.VINE_WHIP ],
|
||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
[ 8, Moves.ROLLOUT ],
|
[ 8, Moves.ROLLOUT ],
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { Abilities } from './ability';
|
import { Abilities } from "./enums/abilities";
|
||||||
import BattleScene, { AnySound } from '../battle-scene';
|
import BattleScene, { AnySound } from '../battle-scene';
|
||||||
import { GrowthRate } from './exp';
|
import { GrowthRate } from './exp';
|
||||||
import { SpeciesWildEvolutionDelay, pokemonEvolutions, pokemonPrevolutions } from './pokemon-evolutions';
|
import { SpeciesWildEvolutionDelay, pokemonEvolutions, pokemonPrevolutions } from './pokemon-evolutions';
|
||||||
@ -1835,7 +1835,7 @@ export function initSpecies() {
|
|||||||
new PokemonForm("10% Forme Power Construct", "10-pc", Type.DRAGON, Type.GROUND, 1.2, 33.5, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 300, false, "10"),
|
new PokemonForm("10% Forme Power Construct", "10-pc", Type.DRAGON, Type.GROUND, 1.2, 33.5, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 486, 54, 100, 71, 61, 85, 115, 3, 0, 300, false, "10"),
|
||||||
new PokemonForm("Complete Forme", "complete", Type.DRAGON, Type.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 300),
|
new PokemonForm("Complete Forme", "complete", Type.DRAGON, Type.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 300),
|
||||||
),
|
),
|
||||||
new PokemonSpecies(Species.DIANCIE, "Diancie", 6, false, false, true, "Jewel Pokémon", Type.ROCK, Type.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, GrowthRate.SLOW, 0, false, true,
|
new PokemonSpecies(Species.DIANCIE, "Diancie", 6, false, false, true, "Jewel Pokémon", Type.ROCK, Type.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300, GrowthRate.SLOW, null, false, true,
|
||||||
new PokemonForm("Normal", "", Type.ROCK, Type.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300),
|
new PokemonForm("Normal", "", Type.ROCK, Type.FAIRY, 0.7, 8.8, Abilities.CLEAR_BODY, Abilities.NONE, Abilities.NONE, 600, 50, 100, 150, 100, 150, 50, 3, 50, 300),
|
||||||
new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ROCK, Type.FAIRY, 1.1, 27.8, Abilities.MAGIC_BOUNCE, Abilities.NONE, Abilities.NONE, 700, 50, 160, 110, 160, 110, 110, 3, 50, 300),
|
new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ROCK, Type.FAIRY, 1.1, 27.8, Abilities.MAGIC_BOUNCE, Abilities.NONE, Abilities.NONE, 700, 50, 160, 110, 160, 110, 110, 3, 50, 300),
|
||||||
),
|
),
|
||||||
@ -3053,6 +3053,578 @@ export const noStarterFormKeys: string[] = [
|
|||||||
SpeciesFormKey.ETERNAMAX
|
SpeciesFormKey.ETERNAMAX
|
||||||
].map(k => k.toString());
|
].map(k => k.toString());
|
||||||
|
|
||||||
|
export const starterPassiveAbilities = {
|
||||||
|
[Species.BULBASAUR]: Abilities.SOLAR_POWER,
|
||||||
|
[Species.CHARMANDER]: Abilities.INTIMIDATE,
|
||||||
|
[Species.SQUIRTLE]: Abilities.DAUNTLESS_SHIELD,
|
||||||
|
[Species.CATERPIE]: Abilities.MAGICIAN,
|
||||||
|
[Species.WEEDLE]: Abilities.POISON_TOUCH,
|
||||||
|
[Species.PIDGEY]: Abilities.TECHNICIAN,
|
||||||
|
[Species.RATTATA]: Abilities.STRONG_JAW,
|
||||||
|
[Species.SPEAROW]: Abilities.MOXIE,
|
||||||
|
[Species.EKANS]: Abilities.ROUGH_SKIN,
|
||||||
|
[Species.SANDSHREW]: Abilities.IRON_BARBS,
|
||||||
|
[Species.NIDORAN_F]: Abilities.QUEENLY_MAJESTY,
|
||||||
|
[Species.NIDORAN_M]: Abilities.SUPREME_OVERLORD,
|
||||||
|
[Species.VULPIX]: Abilities.CURSED_BODY,
|
||||||
|
[Species.ZUBAT]: Abilities.WIND_RIDER,
|
||||||
|
[Species.ODDISH]: Abilities.LINGERING_AROMA,
|
||||||
|
[Species.PARAS]: Abilities.POISON_HEAL,
|
||||||
|
[Species.VENONAT]: Abilities.TECHNICIAN,
|
||||||
|
[Species.DIGLETT]: Abilities.STURDY,
|
||||||
|
[Species.MEOWTH]: Abilities.NORMALIZE,
|
||||||
|
[Species.PSYDUCK]: Abilities.SIMPLE,
|
||||||
|
[Species.MANKEY]: Abilities.STAMINA,
|
||||||
|
[Species.GROWLITHE]: Abilities.BALL_FETCH,
|
||||||
|
[Species.POLIWAG]: Abilities.WATER_BUBBLE,
|
||||||
|
[Species.ABRA]: Abilities.TECHNICIAN,
|
||||||
|
[Species.MACHOP]: Abilities.IRON_FIST,
|
||||||
|
[Species.BELLSPROUT]: Abilities.CORROSION,
|
||||||
|
[Species.TENTACOOL]: Abilities.INNARDS_OUT,
|
||||||
|
[Species.GEODUDE]: Abilities.ROCKY_PAYLOAD,
|
||||||
|
[Species.PONYTA]: Abilities.PIXILATE,
|
||||||
|
[Species.SLOWPOKE]: Abilities.UNAWARE,
|
||||||
|
[Species.MAGNEMITE]: Abilities.MOTOR_DRIVE,
|
||||||
|
[Species.FARFETCHD]: Abilities.PURE_POWER,
|
||||||
|
[Species.DODUO]: Abilities.RECKLESS,
|
||||||
|
[Species.SEEL]: Abilities.REGENERATOR,
|
||||||
|
[Species.GRIMER]: Abilities.GOOEY,
|
||||||
|
[Species.SHELLDER]: Abilities.MOXIE,
|
||||||
|
[Species.GASTLY]: Abilities.PERISH_BODY,
|
||||||
|
[Species.ONIX]: Abilities.ROCKY_PAYLOAD,
|
||||||
|
[Species.DROWZEE]: Abilities.BAD_DREAMS,
|
||||||
|
[Species.KRABBY]: Abilities.ANGER_SHELL,
|
||||||
|
[Species.VOLTORB]: Abilities.GALVANIZE,
|
||||||
|
[Species.EXEGGCUTE]: Abilities.PARENTAL_BOND,
|
||||||
|
[Species.CUBONE]: Abilities.MOODY,
|
||||||
|
[Species.LICKITUNG]: Abilities.EARTH_EATER,
|
||||||
|
[Species.KOFFING]: Abilities.FLARE_BOOST,
|
||||||
|
[Species.RHYHORN]: Abilities.FILTER,
|
||||||
|
[Species.TANGELA]: Abilities.TANGLING_HAIR,
|
||||||
|
[Species.KANGASKHAN]: Abilities.IRON_FIST,
|
||||||
|
[Species.HORSEA]: Abilities.DRIZZLE,
|
||||||
|
[Species.GOLDEEN]: Abilities.VOLT_ABSORB,
|
||||||
|
[Species.STARYU]: Abilities.REGENERATOR,
|
||||||
|
[Species.SCYTHER]: Abilities.SPEED_BOOST,
|
||||||
|
[Species.PINSIR]: Abilities.SAP_SIPPER,
|
||||||
|
[Species.TAUROS]: Abilities.ROCK_HEAD,
|
||||||
|
[Species.MAGIKARP]: Abilities.BERSERK,
|
||||||
|
[Species.LAPRAS]: Abilities.LIQUID_VOICE,
|
||||||
|
[Species.DITTO]: Abilities.GOOEY,
|
||||||
|
[Species.EEVEE]: Abilities.PROTEAN,
|
||||||
|
[Species.PORYGON]: Abilities.QUARK_DRIVE,
|
||||||
|
[Species.OMANYTE]: Abilities.ANGER_SHELL,
|
||||||
|
[Species.KABUTO]: Abilities.SHARPNESS,
|
||||||
|
[Species.AERODACTYL]: Abilities.PROTOSYNTHESIS,
|
||||||
|
[Species.ARTICUNO]: Abilities.SNOW_WARNING,
|
||||||
|
[Species.ZAPDOS]: Abilities.DRIZZLE,
|
||||||
|
[Species.MOLTRES]: Abilities.DROUGHT,
|
||||||
|
[Species.DRATINI]: Abilities.DELTA_STREAM,
|
||||||
|
[Species.MEWTWO]: Abilities.BERSERK,
|
||||||
|
[Species.MEW]: Abilities.PROTEAN,
|
||||||
|
[Species.CHIKORITA]: Abilities.TRIAGE,
|
||||||
|
[Species.CYNDAQUIL]: Abilities.TURBOBLAZE,
|
||||||
|
[Species.TOTODILE]: Abilities.STRONG_JAW,
|
||||||
|
[Species.SENTRET]: Abilities.FLUFFY,
|
||||||
|
[Species.HOOTHOOT]: Abilities.CURSED_BODY,
|
||||||
|
[Species.LEDYBA]: Abilities.SCREEN_CLEANER,
|
||||||
|
[Species.SPINARAK]: Abilities.PRANKSTER,
|
||||||
|
[Species.CHINCHOU]: Abilities.REGENERATOR,
|
||||||
|
[Species.PICHU]: Abilities.TRANSISTOR,
|
||||||
|
[Species.CLEFFA]: Abilities.TRIAGE,
|
||||||
|
[Species.IGGLYBUFF]: Abilities.SERENE_GRACE,
|
||||||
|
[Species.TOGEPI]: Abilities.OPPORTUNIST,
|
||||||
|
[Species.NATU]: Abilities.TINTED_LENS,
|
||||||
|
[Species.MAREEP]: Abilities.FLUFFY,
|
||||||
|
[Species.HOPPIP]: Abilities.PRANKSTER,
|
||||||
|
[Species.AIPOM]: Abilities.SCRAPPY,
|
||||||
|
[Species.SUNKERN]: Abilities.DROUGHT,
|
||||||
|
[Species.YANMA]: Abilities.TECHNICIAN,
|
||||||
|
[Species.WOOPER]: Abilities.SIMPLE,
|
||||||
|
[Species.MURKROW]: Abilities.DEFIANT,
|
||||||
|
[Species.MISDREAVUS]: Abilities.DAZZLING,
|
||||||
|
[Species.UNOWN]: Abilities.PICKUP,
|
||||||
|
[Species.GIRAFARIG]: Abilities.PARENTAL_BOND,
|
||||||
|
[Species.PINECO]: Abilities.IRON_BARBS,
|
||||||
|
[Species.DUNSPARCE]: Abilities.MARVEL_SCALE,
|
||||||
|
[Species.GLIGAR]: Abilities.MERCILESS,
|
||||||
|
[Species.SNUBBULL]: Abilities.BALL_FETCH,
|
||||||
|
[Species.QWILFISH]: Abilities.LIQUID_OOZE,
|
||||||
|
[Species.SHUCKLE]: Abilities.WELL_BAKED_BODY,
|
||||||
|
[Species.HERACROSS]: Abilities.QUICK_FEET,
|
||||||
|
[Species.SNEASEL]: Abilities.MOXIE,
|
||||||
|
[Species.TEDDIURSA]: Abilities.GLUTTONY,
|
||||||
|
[Species.SLUGMA]: Abilities.DESOLATE_LAND,
|
||||||
|
[Species.SWINUB]: Abilities.SLUSH_RUSH,
|
||||||
|
[Species.CORSOLA]: Abilities.STORM_DRAIN,
|
||||||
|
[Species.REMORAID]: Abilities.SKILL_LINK,
|
||||||
|
[Species.DELIBIRD]: Abilities.PRANKSTER,
|
||||||
|
[Species.SKARMORY]: Abilities.OBLIVIOUS,
|
||||||
|
[Species.HOUNDOUR]: Abilities.INTIMIDATE,
|
||||||
|
[Species.PHANPY]: Abilities.ROCK_HEAD,
|
||||||
|
[Species.STANTLER]: Abilities.MAGIC_GUARD,
|
||||||
|
[Species.SMEARGLE]: Abilities.TRACE,
|
||||||
|
[Species.TYROGUE]: Abilities.STAMINA,
|
||||||
|
[Species.SMOOCHUM]: Abilities.CUTE_CHARM,
|
||||||
|
[Species.ELEKID]: Abilities.ADAPTABILITY,
|
||||||
|
[Species.MAGBY]: Abilities.CONTRARY,
|
||||||
|
[Species.MILTANK]: Abilities.GLUTTONY,
|
||||||
|
[Species.RAIKOU]: Abilities.FLARE_BOOST,
|
||||||
|
[Species.ENTEI]: Abilities.TOXIC_BOOST,
|
||||||
|
[Species.SUICUNE]: Abilities.SPEED_BOOST,
|
||||||
|
[Species.LARVITAR]: Abilities.SAND_FORCE,
|
||||||
|
[Species.LUGIA]: Abilities.STORM_DRAIN,
|
||||||
|
[Species.HO_OH]: Abilities.FLASH_FIRE,
|
||||||
|
[Species.CELEBI]: Abilities.TRIAGE,
|
||||||
|
[Species.TREECKO]: Abilities.GRASSY_SURGE,
|
||||||
|
[Species.TORCHIC]: Abilities.RECKLESS,
|
||||||
|
[Species.MUDKIP]: Abilities.REGENERATOR,
|
||||||
|
[Species.POOCHYENA]: Abilities.STRONG_JAW,
|
||||||
|
[Species.ZIGZAGOON]: Abilities.PICKPOCKET,
|
||||||
|
[Species.WURMPLE]: Abilities.TINTED_LENS,
|
||||||
|
[Species.LOTAD]: Abilities.DRIZZLE,
|
||||||
|
[Species.SEEDOT]: Abilities.DISGUISE,
|
||||||
|
[Species.TAILLOW]: Abilities.KEEN_EYE,
|
||||||
|
[Species.WINGULL]: Abilities.HYDRATION,
|
||||||
|
[Species.RALTS]: Abilities.PSYCHIC_SURGE,
|
||||||
|
[Species.SURSKIT]: Abilities.WATER_ABSORB,
|
||||||
|
[Species.SHROOMISH]: Abilities.GUTS,
|
||||||
|
[Species.SLAKOTH]: Abilities.GUTS,
|
||||||
|
[Species.NINCADA]: Abilities.OVERCOAT,
|
||||||
|
[Species.WHISMUR]: Abilities.PUNK_ROCK,
|
||||||
|
[Species.MAKUHITA]: Abilities.CONTRARY,
|
||||||
|
[Species.AZURILL]: Abilities.UNNERVE,
|
||||||
|
[Species.NOSEPASS]: Abilities.LEVITATE,
|
||||||
|
[Species.SKITTY]: Abilities.SCRAPPY,
|
||||||
|
[Species.SABLEYE]: Abilities.UNNERVE,
|
||||||
|
[Species.MAWILE]: Abilities.MOLD_BREAKER,
|
||||||
|
[Species.ARON]: Abilities.SOLID_ROCK,
|
||||||
|
[Species.MEDITITE]: Abilities.OWN_TEMPO,
|
||||||
|
[Species.ELECTRIKE]: Abilities.SPEED_BOOST,
|
||||||
|
[Species.PLUSLE]: Abilities.MINUS,
|
||||||
|
[Species.MINUN]: Abilities.PLUS,
|
||||||
|
[Species.VOLBEAT]: Abilities.TINTED_LENS,
|
||||||
|
[Species.ILLUMISE]: Abilities.SWARM,
|
||||||
|
[Species.GULPIN]: Abilities.POISON_TOUCH,
|
||||||
|
[Species.CARVANHA]: Abilities.STAKEOUT,
|
||||||
|
[Species.WAILMER]: Abilities.LEVITATE,
|
||||||
|
[Species.NUMEL]: Abilities.TURBOBLAZE,
|
||||||
|
[Species.TORKOAL]: Abilities.PROTOSYNTHESIS,
|
||||||
|
[Species.SPOINK]: Abilities.PSYCHIC_SURGE,
|
||||||
|
[Species.SPINDA]: Abilities.SIMPLE,
|
||||||
|
[Species.TRAPINCH]: Abilities.ADAPTABILITY,
|
||||||
|
[Species.CACNEA]: Abilities.SAND_RUSH,
|
||||||
|
[Species.SWABLU]: Abilities.WHITE_SMOKE,
|
||||||
|
[Species.ZANGOOSE]: Abilities.SUPER_LUCK,
|
||||||
|
[Species.SEVIPER]: Abilities.MOLD_BREAKER,
|
||||||
|
[Species.LUNATONE]: Abilities.SHADOW_SHIELD,
|
||||||
|
[Species.SOLROCK]: Abilities.FULL_METAL_BODY,
|
||||||
|
[Species.BARBOACH]: Abilities.BALL_FETCH,
|
||||||
|
[Species.CORPHISH]: Abilities.WATER_BUBBLE,
|
||||||
|
[Species.BALTOY]: Abilities.OWN_TEMPO,
|
||||||
|
[Species.LILEEP]: Abilities.WATER_ABSORB,
|
||||||
|
[Species.ANORITH]: Abilities.WATER_ABSORB,
|
||||||
|
[Species.FEEBAS]: Abilities.PASTEL_VEIL,
|
||||||
|
[Species.CASTFORM]: Abilities.ADAPTABILITY,
|
||||||
|
[Species.KECLEON]: Abilities.ADAPTABILITY,
|
||||||
|
[Species.SHUPPET]: Abilities.MUMMY,
|
||||||
|
[Species.DUSKULL]: Abilities.UNNERVE,
|
||||||
|
[Species.TROPIUS]: Abilities.CUD_CHEW,
|
||||||
|
[Species.ABSOL]: Abilities.DARK_AURA,
|
||||||
|
[Species.WYNAUT]: Abilities.STAMINA,
|
||||||
|
[Species.SNORUNT]: Abilities.SNOW_WARNING,
|
||||||
|
[Species.SPHEAL]: Abilities.SLUSH_RUSH,
|
||||||
|
[Species.CLAMPERL]: Abilities.SIMPLE,
|
||||||
|
[Species.RELICANTH]: Abilities.SOLID_ROCK,
|
||||||
|
[Species.LUVDISC]: Abilities.PICKUP,
|
||||||
|
[Species.BAGON]: Abilities.GALE_WINGS,
|
||||||
|
[Species.BELDUM]: Abilities.IRON_FIST,
|
||||||
|
[Species.REGIROCK]: Abilities.REGENERATOR,
|
||||||
|
[Species.REGICE]: Abilities.ICE_SCALES,
|
||||||
|
[Species.REGISTEEL]: Abilities.STEELY_SPIRIT,
|
||||||
|
[Species.LATIAS]: Abilities.SERENE_GRACE,
|
||||||
|
[Species.LATIOS]: Abilities.SERENE_GRACE,
|
||||||
|
[Species.KYOGRE]: Abilities.HYDRATION,
|
||||||
|
[Species.GROUDON]: Abilities.LEAF_GUARD,
|
||||||
|
[Species.RAYQUAZA]: Abilities.STEADFAST,
|
||||||
|
[Species.JIRACHI]: Abilities.COMATOSE,
|
||||||
|
[Species.DEOXYS]: Abilities.STICKY_HOLD,
|
||||||
|
[Species.TURTWIG]: Abilities.HARVEST,
|
||||||
|
[Species.CHIMCHAR]: Abilities.DEFIANT,
|
||||||
|
[Species.PIPLUP]: Abilities.BATTLE_ARMOR,
|
||||||
|
[Species.STARLY]: Abilities.ROCK_HEAD,
|
||||||
|
[Species.BIDOOF]: Abilities.NEUROFORCE,
|
||||||
|
[Species.KRICKETOT]: Abilities.SOUNDPROOF,
|
||||||
|
[Species.SHINX]: Abilities.VOLT_ABSORB,
|
||||||
|
[Species.BUDEW]: Abilities.CUTE_CHARM,
|
||||||
|
[Species.CRANIDOS]: Abilities.ROCK_HEAD,
|
||||||
|
[Species.SHIELDON]: Abilities.SOLID_ROCK,
|
||||||
|
[Species.BURMY]: Abilities.STURDY,
|
||||||
|
[Species.COMBEE]: Abilities.QUEENLY_MAJESTY,
|
||||||
|
[Species.PACHIRISU]: Abilities.BALL_FETCH,
|
||||||
|
[Species.BUIZEL]: Abilities.HYDRATION,
|
||||||
|
[Species.CHERUBI]: Abilities.DROUGHT,
|
||||||
|
[Species.SHELLOS]: Abilities.SHELL_ARMOR,
|
||||||
|
[Species.DRIFLOON]: Abilities.PICKPOCKET,
|
||||||
|
[Species.BUNEARY]: Abilities.OBLIVIOUS,
|
||||||
|
[Species.GLAMEOW]: Abilities.PICKUP,
|
||||||
|
[Species.CHINGLING]: Abilities.VICTORY_STAR,
|
||||||
|
[Species.STUNKY]: Abilities.MERCILESS,
|
||||||
|
[Species.BRONZOR]: Abilities.SOUNDPROOF,
|
||||||
|
[Species.BONSLY]: Abilities.SAP_SIPPER,
|
||||||
|
[Species.MIME_JR]: Abilities.MAGIC_BOUNCE,
|
||||||
|
[Species.HAPPINY]: Abilities.TRIAGE,
|
||||||
|
[Species.CHATOT]: Abilities.PUNK_ROCK,
|
||||||
|
[Species.SPIRITOMB]: Abilities.REGENERATOR,
|
||||||
|
[Species.GIBLE]: Abilities.SAND_STREAM,
|
||||||
|
[Species.MUNCHLAX]: Abilities.CUD_CHEW,
|
||||||
|
[Species.RIOLU]: Abilities.MEGA_LAUNCHER,
|
||||||
|
[Species.HIPPOPOTAS]: Abilities.SAND_VEIL,
|
||||||
|
[Species.SKORUPI]: Abilities.SUPER_LUCK,
|
||||||
|
[Species.CROAGUNK]: Abilities.PICKPOCKET,
|
||||||
|
[Species.CARNIVINE]: Abilities.EFFECT_SPORE,
|
||||||
|
[Species.FINNEON]: Abilities.DRIZZLE,
|
||||||
|
[Species.MANTYKE]: Abilities.STORM_DRAIN,
|
||||||
|
[Species.SNOVER]: Abilities.SNOW_CLOAK,
|
||||||
|
[Species.ROTOM]: Abilities.ELECTRIC_SURGE,
|
||||||
|
[Species.UXIE]: Abilities.ILLUSION,
|
||||||
|
[Species.MESPRIT]: Abilities.MOODY,
|
||||||
|
[Species.AZELF]: Abilities.NEUROFORCE,
|
||||||
|
[Species.DIALGA]: Abilities.SPEED_BOOST,
|
||||||
|
[Species.PALKIA]: Abilities.MAGIC_BOUNCE,
|
||||||
|
[Species.HEATRAN]: Abilities.ROUGH_SKIN,
|
||||||
|
[Species.REGIGIGAS]: Abilities.IRON_FIST,
|
||||||
|
[Species.GIRATINA]: Abilities.SHADOW_TAG,
|
||||||
|
[Species.CRESSELIA]: Abilities.MAGIC_BOUNCE,
|
||||||
|
[Species.PHIONE]: Abilities.SWIFT_SWIM,
|
||||||
|
[Species.MANAPHY]: Abilities.SIMPLE,
|
||||||
|
[Species.DARKRAI]: Abilities.UNNERVE,
|
||||||
|
[Species.SHAYMIN]: Abilities.FLOWER_VEIL,
|
||||||
|
[Species.ARCEUS]: Abilities.ADAPTABILITY,
|
||||||
|
[Species.VICTINI]: Abilities.SUPER_LUCK,
|
||||||
|
[Species.SNIVY]: Abilities.MULTISCALE,
|
||||||
|
[Species.TEPIG]: Abilities.SAND_RUSH,
|
||||||
|
[Species.OSHAWOTT]: Abilities.LIGHTNING_ROD,
|
||||||
|
[Species.PATRAT]: Abilities.STAKEOUT,
|
||||||
|
[Species.LILLIPUP]: Abilities.BALL_FETCH,
|
||||||
|
[Species.PURRLOIN]: Abilities.DEFIANT,
|
||||||
|
[Species.PANSAGE]: Abilities.SAP_SIPPER,
|
||||||
|
[Species.PANSEAR]: Abilities.FLASH_FIRE,
|
||||||
|
[Species.PANPOUR]: Abilities.STORM_DRAIN,
|
||||||
|
[Species.MUNNA]: Abilities.NEUTRALIZING_GAS,
|
||||||
|
[Species.PIDOVE]: Abilities.OPPORTUNIST,
|
||||||
|
[Species.BLITZLE]: Abilities.FLARE_BOOST,
|
||||||
|
[Species.ROGGENROLA]: Abilities.SOLID_ROCK,
|
||||||
|
[Species.WOOBAT]: Abilities.SOUL_HEART,
|
||||||
|
[Species.DRILBUR]: Abilities.SAND_STREAM,
|
||||||
|
[Species.AUDINO]: Abilities.SERENE_GRACE,
|
||||||
|
[Species.TIMBURR]: Abilities.STAMINA,
|
||||||
|
[Species.TYMPOLE]: Abilities.MOODY,
|
||||||
|
[Species.THROH]: Abilities.SIMPLE,
|
||||||
|
[Species.SAWK]: Abilities.DEFIANT,
|
||||||
|
[Species.SEWADDLE]: Abilities.SHARPNESS,
|
||||||
|
[Species.VENIPEDE]: Abilities.INTIMIDATE,
|
||||||
|
[Species.COTTONEE]: Abilities.MISTY_SURGE,
|
||||||
|
[Species.PETILIL]: Abilities.ORICHALCUM_PULSE,
|
||||||
|
[Species.BASCULIN]: Abilities.ROCK_HEAD,
|
||||||
|
[Species.SANDILE]: Abilities.STRONG_JAW,
|
||||||
|
[Species.DARUMAKA]: Abilities.IRON_FIST,
|
||||||
|
[Species.MARACTUS]: Abilities.IRON_BARBS,
|
||||||
|
[Species.DWEBBLE]: Abilities.STAMINA,
|
||||||
|
[Species.SCRAGGY]: Abilities.ROCK_HEAD,
|
||||||
|
[Species.SIGILYPH]: Abilities.MAGICIAN,
|
||||||
|
[Species.YAMASK]: Abilities.GOOD_AS_GOLD,
|
||||||
|
[Species.TIRTOUGA]: Abilities.SHELL_ARMOR,
|
||||||
|
[Species.ARCHEN]: Abilities.ROCKY_PAYLOAD,
|
||||||
|
[Species.TRUBBISH]: Abilities.GOOEY,
|
||||||
|
[Species.ZORUA]: Abilities.ADAPTABILITY,
|
||||||
|
[Species.MINCCINO]: Abilities.SCRAPPY,
|
||||||
|
[Species.GOTHITA]: Abilities.PRESSURE,
|
||||||
|
[Species.SOLOSIS]: Abilities.GOOEY,
|
||||||
|
[Species.DUCKLETT]: Abilities.GALE_WINGS,
|
||||||
|
[Species.VANILLITE]: Abilities.REFRIGERATE,
|
||||||
|
[Species.DEERLING]: Abilities.JUSTIFIED,
|
||||||
|
[Species.EMOLGA]: Abilities.WIND_POWER,
|
||||||
|
[Species.KARRABLAST]: Abilities.NO_GUARD,
|
||||||
|
[Species.FOONGUS]: Abilities.ADAPTABILITY,
|
||||||
|
[Species.FRILLISH]: Abilities.MUMMY,
|
||||||
|
[Species.ALOMOMOLA]: Abilities.MULTISCALE,
|
||||||
|
[Species.JOLTIK]: Abilities.VOLT_ABSORB,
|
||||||
|
[Species.FERROSEED]: Abilities.SKILL_LINK,
|
||||||
|
[Species.KLINK]: Abilities.STEELWORKER,
|
||||||
|
[Species.TYNAMO]: Abilities.SWIFT_SWIM,
|
||||||
|
[Species.ELGYEM]: Abilities.COMMANDER,
|
||||||
|
[Species.LITWICK]: Abilities.SOUL_HEART,
|
||||||
|
[Species.AXEW]: Abilities.SHEER_FORCE,
|
||||||
|
[Species.CUBCHOO]: Abilities.INTIMIDATE,
|
||||||
|
[Species.CRYOGONAL]: Abilities.DAZZLING,
|
||||||
|
[Species.SHELMET]: Abilities.DISGUISE,
|
||||||
|
[Species.STUNFISK]: Abilities.STORM_DRAIN,
|
||||||
|
[Species.MIENFOO]: Abilities.NO_GUARD,
|
||||||
|
[Species.DRUDDIGON]: Abilities.INTIMIDATE,
|
||||||
|
[Species.GOLETT]: Abilities.JUSTIFIED,
|
||||||
|
[Species.PAWNIARD]: Abilities.SHARPNESS,
|
||||||
|
[Species.BOUFFALANT]: Abilities.THICK_FAT,
|
||||||
|
[Species.RUFFLET]: Abilities.RECKLESS,
|
||||||
|
[Species.VULLABY]: Abilities.THICK_FAT,
|
||||||
|
[Species.HEATMOR]: Abilities.CONTRARY,
|
||||||
|
[Species.DURANT]: Abilities.TOUGH_CLAWS,
|
||||||
|
[Species.DEINO]: Abilities.BERSERK,
|
||||||
|
[Species.LARVESTA]: Abilities.DROUGHT,
|
||||||
|
[Species.COBALION]: Abilities.INTREPID_SWORD,
|
||||||
|
[Species.TERRAKION]: Abilities.ROCKY_PAYLOAD,
|
||||||
|
[Species.VIRIZION]: Abilities.SYMBIOSIS,
|
||||||
|
[Species.TORNADUS]: Abilities.DELTA_STREAM,
|
||||||
|
[Species.THUNDURUS]: Abilities.DRIZZLE,
|
||||||
|
[Species.RESHIRAM]: Abilities.ORICHALCUM_PULSE,
|
||||||
|
[Species.ZEKROM]: Abilities.HADRON_ENGINE,
|
||||||
|
[Species.LANDORUS]: Abilities.PRANKSTER,
|
||||||
|
[Species.KYUREM]: Abilities.SNOW_WARNING,
|
||||||
|
[Species.KELDEO]: Abilities.HUGE_POWER,
|
||||||
|
[Species.MELOETTA]: Abilities.PUNK_ROCK,
|
||||||
|
[Species.GENESECT]: Abilities.MEGA_LAUNCHER,
|
||||||
|
[Species.CHESPIN]: Abilities.IRON_BARBS,
|
||||||
|
[Species.FENNEKIN]: Abilities.MAGIC_GUARD,
|
||||||
|
[Species.FROAKIE]: Abilities.MERCILESS,
|
||||||
|
[Species.BUNNELBY]: Abilities.GUTS,
|
||||||
|
[Species.FLETCHLING]: Abilities.RECKLESS,
|
||||||
|
[Species.SCATTERBUG]: Abilities.PRANKSTER,
|
||||||
|
[Species.LITLEO]: Abilities.INTIMIDATE,
|
||||||
|
[Species.FLABEBE]: Abilities.GRASSY_SURGE,
|
||||||
|
[Species.SKIDDO]: Abilities.FUR_COAT,
|
||||||
|
[Species.PANCHAM]: Abilities.FLUFFY,
|
||||||
|
[Species.FURFROU]: Abilities.BALL_FETCH,
|
||||||
|
[Species.ESPURR]: Abilities.PSYCHIC_SURGE,
|
||||||
|
[Species.HONEDGE]: Abilities.SHARPNESS,
|
||||||
|
[Species.SPRITZEE]: Abilities.UNAWARE,
|
||||||
|
[Species.SWIRLIX]: Abilities.PIXILATE,
|
||||||
|
[Species.INKAY]: Abilities.SUPREME_OVERLORD,
|
||||||
|
[Species.BINACLE]: Abilities.SOLID_ROCK,
|
||||||
|
[Species.SKRELP]: Abilities.CORROSION,
|
||||||
|
[Species.CLAUNCHER]: Abilities.SWIFT_SWIM,
|
||||||
|
[Species.HELIOPTILE]: Abilities.NO_GUARD,
|
||||||
|
[Species.TYRUNT]: Abilities.SHEER_FORCE,
|
||||||
|
[Species.AMAURA]: Abilities.SERENE_GRACE,
|
||||||
|
[Species.HAWLUCHA]: Abilities.RECKLESS,
|
||||||
|
[Species.DEDENNE]: Abilities.SIMPLE,
|
||||||
|
[Species.CARBINK]: Abilities.OBLIVIOUS,
|
||||||
|
[Species.GOOMY]: Abilities.POISON_HEAL,
|
||||||
|
[Species.KLEFKI]: Abilities.TRIAGE,
|
||||||
|
[Species.PHANTUMP]: Abilities.UNNERVE,
|
||||||
|
[Species.PUMPKABOO]: Abilities.FLARE_BOOST,
|
||||||
|
[Species.BERGMITE]: Abilities.MIRROR_ARMOR,
|
||||||
|
[Species.NOIBAT]: Abilities.PUNK_ROCK,
|
||||||
|
[Species.XERNEAS]: Abilities.COMPETITIVE,
|
||||||
|
[Species.YVELTAL]: Abilities.DEFIANT,
|
||||||
|
[Species.ZYGARDE]: Abilities.REGENERATOR,
|
||||||
|
[Species.DIANCIE]: Abilities.QUEENLY_MAJESTY,
|
||||||
|
[Species.HOOPA]: Abilities.TRACE,
|
||||||
|
[Species.VOLCANION]: Abilities.FILTER,
|
||||||
|
[Species.ROWLET]: Abilities.SNIPER,
|
||||||
|
[Species.LITTEN]: Abilities.PRANKSTER,
|
||||||
|
[Species.POPPLIO]: Abilities.PUNK_ROCK,
|
||||||
|
[Species.PIKIPEK]: Abilities.ANGER_POINT,
|
||||||
|
[Species.YUNGOOS]: Abilities.HUGE_POWER,
|
||||||
|
[Species.GRUBBIN]: Abilities.GALVANIZE,
|
||||||
|
[Species.CRABRAWLER]: Abilities.REFRIGERATE,
|
||||||
|
[Species.ORICORIO]: Abilities.ADAPTABILITY,
|
||||||
|
[Species.CUTIEFLY]: Abilities.FRIEND_GUARD,
|
||||||
|
[Species.ROCKRUFF]: Abilities.ROCKY_PAYLOAD,
|
||||||
|
[Species.WISHIWASHI]: Abilities.PARENTAL_BOND,
|
||||||
|
[Species.MAREANIE]: Abilities.TOXIC_DEBRIS,
|
||||||
|
[Species.MUDBRAY]: Abilities.CUD_CHEW,
|
||||||
|
[Species.DEWPIDER]: Abilities.STRONG_JAW,
|
||||||
|
[Species.FOMANTIS]: Abilities.MIMICRY,
|
||||||
|
[Species.MORELULL]: Abilities.PERISH_BODY,
|
||||||
|
[Species.SALANDIT]: Abilities.DAZZLING,
|
||||||
|
[Species.STUFFUL]: Abilities.HOSPITALITY,
|
||||||
|
[Species.BOUNSWEET]: Abilities.RIPEN,
|
||||||
|
[Species.COMFEY]: Abilities.FRIEND_GUARD,
|
||||||
|
[Species.ORANGURU]: Abilities.HOSPITALITY,
|
||||||
|
[Species.PASSIMIAN]: Abilities.COSTAR,
|
||||||
|
[Species.WIMPOD]: Abilities.BATTLE_ARMOR,
|
||||||
|
[Species.SANDYGAST]: Abilities.DAUNTLESS_SHIELD,
|
||||||
|
[Species.PYUKUMUKU]: Abilities.IRON_BARBS,
|
||||||
|
[Species.TYPE_NULL]: Abilities.ADAPTABILITY,
|
||||||
|
[Species.MINIOR]: Abilities.ANGER_SHELL,
|
||||||
|
[Species.KOMALA]: Abilities.GUTS,
|
||||||
|
[Species.TURTONATOR]: Abilities.ANGER_SHELL,
|
||||||
|
[Species.TOGEDEMARU]: Abilities.STATIC,
|
||||||
|
[Species.MIMIKYU]: Abilities.MIMICRY,
|
||||||
|
[Species.BRUXISH]: Abilities.MULTISCALE,
|
||||||
|
[Species.DRAMPA]: Abilities.FLASH_FIRE,
|
||||||
|
[Species.DHELMISE]: Abilities.INFILTRATOR,
|
||||||
|
[Species.JANGMO_O]: Abilities.DANCER,
|
||||||
|
[Species.TAPU_KOKO]: Abilities.GALVANIZE,
|
||||||
|
[Species.TAPU_LELE]: Abilities.BERSERK,
|
||||||
|
[Species.TAPU_BULU]: Abilities.FLOWER_VEIL,
|
||||||
|
[Species.TAPU_FINI]: Abilities.FAIRY_AURA,
|
||||||
|
[Species.COSMOG]: Abilities.BEAST_BOOST,
|
||||||
|
[Species.NIHILEGO]: Abilities.POISON_PUPPETEER,
|
||||||
|
[Species.BUZZWOLE]: Abilities.MOXIE,
|
||||||
|
[Species.PHEROMOSA]: Abilities.MOXIE,
|
||||||
|
[Species.XURKITREE]: Abilities.LIGHTNING_ROD,
|
||||||
|
[Species.CELESTEELA]: Abilities.CHLOROPHYLL,
|
||||||
|
[Species.KARTANA]: Abilities.INTREPID_SWORD,
|
||||||
|
[Species.GUZZLORD]: Abilities.GLUTTONY,
|
||||||
|
[Species.NECROZMA]: Abilities.BEAST_BOOST,
|
||||||
|
[Species.MAGEARNA]: Abilities.STEELY_SPIRIT,
|
||||||
|
[Species.MARSHADOW]: Abilities.IRON_FIST,
|
||||||
|
[Species.POIPOLE]: Abilities.MERCILESS,
|
||||||
|
[Species.STAKATAKA]: Abilities.DAUNTLESS_SHIELD,
|
||||||
|
[Species.BLACEPHALON]: Abilities.REGENERATOR,
|
||||||
|
[Species.ZERAORA]: Abilities.MOTOR_DRIVE,
|
||||||
|
[Species.MELTAN]: Abilities.FULL_METAL_BODY,
|
||||||
|
[Species.GROOKEY]: Abilities.SOLID_ROCK,
|
||||||
|
[Species.SCORBUNNY]: Abilities.RECKLESS,
|
||||||
|
[Species.SOBBLE]: Abilities.MIMICRY,
|
||||||
|
[Species.SKWOVET]: Abilities.HONEY_GATHER,
|
||||||
|
[Species.ROOKIDEE]: Abilities.JUSTIFIED,
|
||||||
|
[Species.BLIPBUG]: Abilities.TINTED_LENS,
|
||||||
|
[Species.NICKIT]: Abilities.INTIMIDATE,
|
||||||
|
[Species.GOSSIFLEUR]: Abilities.STORM_DRAIN,
|
||||||
|
[Species.WOOLOO]: Abilities.ROCK_HEAD,
|
||||||
|
[Species.CHEWTLE]: Abilities.ROCK_HEAD,
|
||||||
|
[Species.YAMPER]: Abilities.SPEED_BOOST,
|
||||||
|
[Species.ROLYCOLY]: Abilities.EARTH_EATER,
|
||||||
|
[Species.APPLIN]: Abilities.DRAGONS_MAW,
|
||||||
|
[Species.SILICOBRA]: Abilities.SAND_RUSH,
|
||||||
|
[Species.CRAMORANT]: Abilities.STORM_DRAIN,
|
||||||
|
[Species.ARROKUDA]: Abilities.STRONG_JAW,
|
||||||
|
[Species.TOXEL]: Abilities.GALVANIZE,
|
||||||
|
[Species.SIZZLIPEDE]: Abilities.DEFIANT,
|
||||||
|
[Species.CLOBBOPUS]: Abilities.SWIFT_SWIM,
|
||||||
|
[Species.SINISTEA]: Abilities.WATER_ABSORB,
|
||||||
|
[Species.HATENNA]: Abilities.MAGIC_GUARD,
|
||||||
|
[Species.IMPIDIMP]: Abilities.TANGLING_HAIR,
|
||||||
|
[Species.MILCERY]: Abilities.WELL_BAKED_BODY,
|
||||||
|
[Species.FALINKS]: Abilities.MOXIE,
|
||||||
|
[Species.PINCURCHIN]: Abilities.IRON_BARBS,
|
||||||
|
[Species.SNOM]: Abilities.SNOW_WARNING,
|
||||||
|
[Species.STONJOURNER]: Abilities.SOLID_ROCK,
|
||||||
|
[Species.EISCUE]: Abilities.SLUSH_RUSH,
|
||||||
|
[Species.INDEEDEE]: Abilities.MAGIC_BOUNCE,
|
||||||
|
[Species.MORPEKO]: Abilities.GLUTTONY,
|
||||||
|
[Species.CUFANT]: Abilities.HEATPROOF,
|
||||||
|
[Species.DRACOZOLT]: Abilities.SLUSH_RUSH,
|
||||||
|
[Species.ARCTOZOLT]: Abilities.SAND_RUSH,
|
||||||
|
[Species.DRACOVISH]: Abilities.HUSTLE,
|
||||||
|
[Species.ARCTOVISH]: Abilities.STRONG_JAW,
|
||||||
|
[Species.DURALUDON]: Abilities.MEGA_LAUNCHER,
|
||||||
|
[Species.DREEPY]: Abilities.PARENTAL_BOND,
|
||||||
|
[Species.ZACIAN]: Abilities.SHARPNESS,
|
||||||
|
[Species.ZAMAZENTA]: Abilities.GUARD_DOG,
|
||||||
|
[Species.ETERNATUS]: Abilities.SUPREME_OVERLORD,
|
||||||
|
[Species.KUBFU]: Abilities.IRON_FIST,
|
||||||
|
[Species.ZARUDE]: Abilities.PRANKSTER,
|
||||||
|
[Species.REGIELEKI]: Abilities.LEVITATE,
|
||||||
|
[Species.REGIDRAGO]: Abilities.INTIMIDATE,
|
||||||
|
[Species.GLASTRIER]: Abilities.FILTER,
|
||||||
|
[Species.SPECTRIER]: Abilities.PERISH_BODY,
|
||||||
|
[Species.CALYREX]: Abilities.HARVEST,
|
||||||
|
[Species.ENAMORUS]: Abilities.MISTY_SURGE,
|
||||||
|
[Species.SPRIGATITO]: Abilities.MAGICIAN,
|
||||||
|
[Species.FUECOCO]: Abilities.EARTH_EATER,
|
||||||
|
[Species.QUAXLY]: Abilities.DANCER,
|
||||||
|
[Species.LECHONK]: Abilities.SIMPLE,
|
||||||
|
[Species.TAROUNTULA]: Abilities.PICKUP,
|
||||||
|
[Species.NYMBLE]: Abilities.TECHNICIAN,
|
||||||
|
[Species.PAWMI]: Abilities.FLUFFY,
|
||||||
|
[Species.TANDEMAUS]: Abilities.PARENTAL_BOND,
|
||||||
|
[Species.FIDOUGH]: Abilities.WATER_ABSORB,
|
||||||
|
[Species.SMOLIV]: Abilities.RIPEN,
|
||||||
|
[Species.SQUAWKABILLY]: Abilities.GALE_WINGS,
|
||||||
|
[Species.NACLI]: Abilities.EARTH_EATER,
|
||||||
|
[Species.CHARCADET]: Abilities.CONTRARY,
|
||||||
|
[Species.TADBULB]: Abilities.TRANSISTOR,
|
||||||
|
[Species.WATTREL]: Abilities.GALE_WINGS,
|
||||||
|
[Species.MASCHIFF]: Abilities.STRONG_JAW,
|
||||||
|
[Species.SHROODLE]: Abilities.CORROSION,
|
||||||
|
[Species.BRAMBLIN]: Abilities.WANDERING_SPIRIT,
|
||||||
|
[Species.TOEDSCOOL]: Abilities.PRANKSTER,
|
||||||
|
[Species.KLAWF]: Abilities.WATER_ABSORB,
|
||||||
|
[Species.CAPSAKID]: Abilities.PARENTAL_BOND,
|
||||||
|
[Species.RELLOR]: Abilities.MAGIC_GUARD,
|
||||||
|
[Species.FLITTLE]: Abilities.COMPETITIVE,
|
||||||
|
[Species.TINKATINK]: Abilities.HUGE_POWER,
|
||||||
|
[Species.WIGLETT]: Abilities.STORM_DRAIN,
|
||||||
|
[Species.BOMBIRDIER]: Abilities.UNAWARE,
|
||||||
|
[Species.FINIZEN]: Abilities.LIQUID_VOICE,
|
||||||
|
[Species.VAROOM]: Abilities.SPEED_BOOST,
|
||||||
|
[Species.CYCLIZAR]: Abilities.PROTEAN,
|
||||||
|
[Species.ORTHWORM]: Abilities.HEATPROOF,
|
||||||
|
[Species.GLIMMET]: Abilities.SYMBIOSIS,
|
||||||
|
[Species.GREAVARD]: Abilities.FUR_COAT,
|
||||||
|
[Species.FLAMIGO]: Abilities.MOXIE,
|
||||||
|
[Species.CETODDLE]: Abilities.GLUTTONY,
|
||||||
|
[Species.VELUZA]: Abilities.SIMPLE,
|
||||||
|
[Species.DONDOZO]: Abilities.GLUTTONY,
|
||||||
|
[Species.TATSUGIRI]: Abilities.WATER_BUBBLE,
|
||||||
|
[Species.GREAT_TUSK]: Abilities.INTIMIDATE,
|
||||||
|
[Species.SCREAM_TAIL]: Abilities.PIXILATE,
|
||||||
|
[Species.BRUTE_BONNET]: Abilities.ADAPTABILITY,
|
||||||
|
[Species.FLUTTER_MANE]: Abilities.DAZZLING,
|
||||||
|
[Species.SLITHER_WING]: Abilities.SCRAPPY,
|
||||||
|
[Species.SANDY_SHOCKS]: Abilities.EARTH_EATER,
|
||||||
|
[Species.IRON_TREADS]: Abilities.STEAM_ENGINE,
|
||||||
|
[Species.IRON_BUNDLE]: Abilities.SNOW_WARNING,
|
||||||
|
[Species.IRON_HANDS]: Abilities.IRON_FIST,
|
||||||
|
[Species.IRON_JUGULIS]: Abilities.NO_GUARD,
|
||||||
|
[Species.IRON_MOTH]: Abilities.TINTED_LENS,
|
||||||
|
[Species.IRON_THORNS]: Abilities.SAND_STREAM,
|
||||||
|
[Species.FRIGIBAX]: Abilities.THICK_FAT,
|
||||||
|
[Species.GIMMIGHOUL]: Abilities.SUPER_LUCK,
|
||||||
|
[Species.WO_CHIEN]: Abilities.TRIAGE,
|
||||||
|
[Species.CHIEN_PAO]: Abilities.REFRIGERATE,
|
||||||
|
[Species.TING_LU]: Abilities.STAMINA,
|
||||||
|
[Species.CHI_YU]: Abilities.BLAZE,
|
||||||
|
[Species.ROARING_MOON]: Abilities.AERILATE,
|
||||||
|
[Species.IRON_VALIANT]: Abilities.DOWNLOAD,
|
||||||
|
[Species.KORAIDON]: Abilities.PROTOSYNTHESIS,
|
||||||
|
[Species.MIRAIDON]: Abilities.QUARK_DRIVE,
|
||||||
|
[Species.WALKING_WAKE]: Abilities.BEAST_BOOST,
|
||||||
|
[Species.IRON_LEAVES]: Abilities.SHARPNESS,
|
||||||
|
[Species.POLTCHAGEIST]: Abilities.FLAME_BODY,
|
||||||
|
[Species.OKIDOGI]: Abilities.STICKY_HOLD,
|
||||||
|
[Species.MUNKIDORI]: Abilities.PRANKSTER,
|
||||||
|
[Species.FEZANDIPITI]: Abilities.DAZZLING,
|
||||||
|
[Species.OGERPON]: Abilities.DISGUISE,
|
||||||
|
[Species.GOUGING_FIRE]: Abilities.BEAST_BOOST,
|
||||||
|
[Species.RAGING_BOLT]: Abilities.BEAST_BOOST,
|
||||||
|
[Species.IRON_BOULDER]: Abilities.SHARPNESS,
|
||||||
|
[Species.IRON_CROWN]: Abilities.SHARPNESS,
|
||||||
|
[Species.TERAPAGOS]: Abilities.PROTEAN,
|
||||||
|
[Species.PECHARUNT]: Abilities.CORROSION,
|
||||||
|
[Species.ALOLA_RATTATA]: Abilities.CHEEK_POUCH,
|
||||||
|
[Species.ALOLA_SANDSHREW]: Abilities.ICE_BODY,
|
||||||
|
[Species.ALOLA_VULPIX]: Abilities.ICE_BODY,
|
||||||
|
[Species.ALOLA_DIGLETT]: Abilities.CUTE_CHARM,
|
||||||
|
[Species.ALOLA_MEOWTH]: Abilities.UNNERVE,
|
||||||
|
[Species.ALOLA_GEODUDE]: Abilities.ELECTROMORPHOSIS,
|
||||||
|
[Species.ALOLA_GRIMER]: Abilities.MERCILESS,
|
||||||
|
[Species.ETERNAL_FLOETTE]: Abilities.MAGIC_GUARD,
|
||||||
|
[Species.GALAR_MEOWTH]: Abilities.SUPER_LUCK,
|
||||||
|
[Species.GALAR_PONYTA]: Abilities.MAGIC_GUARD,
|
||||||
|
[Species.GALAR_SLOWPOKE]: Abilities.POISON_TOUCH,
|
||||||
|
[Species.GALAR_FARFETCHD]: Abilities.SUPER_LUCK,
|
||||||
|
[Species.GALAR_ARTICUNO]: Abilities.SERENE_GRACE,
|
||||||
|
[Species.GALAR_ZAPDOS]: Abilities.TOUGH_CLAWS,
|
||||||
|
[Species.GALAR_MOLTRES]: Abilities.REGENERATOR,
|
||||||
|
[Species.GALAR_CORSOLA]: Abilities.SHADOW_TAG,
|
||||||
|
[Species.GALAR_ZIGZAGOON]: Abilities.PICKPOCKET,
|
||||||
|
[Species.GALAR_DARUMAKA]: Abilities.FLASH_FIRE,
|
||||||
|
[Species.GALAR_YAMASK]: Abilities.SOLID_ROCK,
|
||||||
|
[Species.GALAR_STUNFISK]: Abilities.IRON_BARBS,
|
||||||
|
[Species.HISUI_GROWLITHE]: Abilities.STRONG_JAW,
|
||||||
|
[Species.HISUI_VOLTORB]: Abilities.HADRON_ENGINE,
|
||||||
|
[Species.HISUI_QWILFISH]: Abilities.MERCILESS,
|
||||||
|
[Species.HISUI_SNEASEL]: Abilities.SCRAPPY,
|
||||||
|
[Species.HISUI_ZORUA]: Abilities.DARK_AURA,
|
||||||
|
[Species.PALDEA_TAUROS]: Abilities.RATTLED,
|
||||||
|
[Species.PALDEA_WOOPER]: Abilities.THICK_FAT,
|
||||||
|
[Species.BLOODMOON_URSALUNA]: Abilities.BERSERK
|
||||||
|
};
|
||||||
|
|
||||||
// TODO: Remove
|
// TODO: Remove
|
||||||
{
|
{
|
||||||
//setTimeout(() => {
|
//setTimeout(() => {
|
||||||
@ -3071,4 +3643,4 @@ export const noStarterFormKeys: string[] = [
|
|||||||
return s;
|
return s;
|
||||||
}))].map(s => s.name));*/
|
}))].map(s => s.name));*/
|
||||||
//}, 1000);
|
//}, 1000);
|
||||||
}
|
}
|
||||||
|
@ -106,7 +106,9 @@ export class Weather {
|
|||||||
const field = scene.getField(true);
|
const field = scene.getField(true);
|
||||||
|
|
||||||
for (let pokemon of field) {
|
for (let pokemon of field) {
|
||||||
const suppressWeatherEffectAbAttr = pokemon.getAbility().getAttrs(SuppressWeatherEffectAbAttr).find(() => true) as SuppressWeatherEffectAbAttr;
|
let suppressWeatherEffectAbAttr = pokemon.getAbility().getAttrs(SuppressWeatherEffectAbAttr).find(() => true) as SuppressWeatherEffectAbAttr;
|
||||||
|
if (!suppressWeatherEffectAbAttr)
|
||||||
|
suppressWeatherEffectAbAttr = pokemon.canApplyPassive() ? pokemon.getPassiveAbility().getAttrs(SuppressWeatherEffectAbAttr).find(() => true) as SuppressWeatherEffectAbAttr : null;
|
||||||
if (suppressWeatherEffectAbAttr && (!this.isImmutable() || suppressWeatherEffectAbAttr.affectsImmutable))
|
if (suppressWeatherEffectAbAttr && (!this.isImmutable() || suppressWeatherEffectAbAttr.affectsImmutable))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,8 @@ import Phaser from 'phaser';
|
|||||||
import BattleScene, { ABILITY_OVERRIDE, AnySound, MOVE_OVERRIDE, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE } from '../battle-scene';
|
import BattleScene, { ABILITY_OVERRIDE, AnySound, MOVE_OVERRIDE, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE } from '../battle-scene';
|
||||||
import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from '../ui/battle-info';
|
import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from '../ui/battle-info';
|
||||||
import { Moves } from "../data/enums/moves";
|
import { Moves } from "../data/enums/moves";
|
||||||
import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr, VariableMoveTypeAttr } from "../data/move";
|
import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr, VariableMoveTypeAttr, VariableMoveCategoryAttr } from "../data/move";
|
||||||
import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm } from '../data/pokemon-species';
|
import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm, starterPassiveAbilities } from '../data/pokemon-species';
|
||||||
import * as Utils from '../utils';
|
import * as Utils from '../utils';
|
||||||
import { Type, TypeDamageMultiplier, getTypeDamageMultiplier, getTypeRgb } from '../data/type';
|
import { Type, TypeDamageMultiplier, getTypeDamageMultiplier, getTypeRgb } from '../data/type';
|
||||||
import { getLevelTotalExp } from '../data/exp';
|
import { getLevelTotalExp } from '../data/exp';
|
||||||
@ -25,7 +25,8 @@ import { TempBattleStat } from '../data/temp-battle-stat';
|
|||||||
import { ArenaTagSide, WeakenMoveScreenTag, WeakenMoveTypeTag } from '../data/arena-tag';
|
import { ArenaTagSide, WeakenMoveScreenTag, WeakenMoveTypeTag } from '../data/arena-tag';
|
||||||
import { ArenaTagType } from "../data/enums/arena-tag-type";
|
import { ArenaTagType } from "../data/enums/arena-tag-type";
|
||||||
import { Biome } from "../data/enums/biome";
|
import { Biome } from "../data/enums/biome";
|
||||||
import { Abilities, Ability, BattleStatMultiplierAbAttr, BlockCritAbAttr, BypassBurnDamageReductionAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs } from '../data/ability';
|
import { Ability, BattleStatMultiplierAbAttr, BlockCritAbAttr, BypassBurnDamageReductionAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs } from '../data/ability';
|
||||||
|
import { Abilities } from "#app/data/enums/abilities";
|
||||||
import PokemonData from '../system/pokemon-data';
|
import PokemonData from '../system/pokemon-data';
|
||||||
import { BattlerIndex } from '../battle';
|
import { BattlerIndex } from '../battle';
|
||||||
import { BattleSpec } from "../enums/battle-spec";
|
import { BattleSpec } from "../enums/battle-spec";
|
||||||
@ -556,7 +557,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
let value = Math.floor(((2 * baseStat + this.ivs[s]) * this.level) * 0.01);
|
let value = Math.floor(((2 * baseStat + this.ivs[s]) * this.level) * 0.01);
|
||||||
if (isHp) {
|
if (isHp) {
|
||||||
value = value + this.level + 10;
|
value = value + this.level + 10;
|
||||||
if (this.getAbility().hasAttr(NonSuperEffectiveImmunityAbAttr))
|
if ((this.canApplyAbility() && this.getAbility().hasAttr(NonSuperEffectiveImmunityAbAttr)) || (this.canApplyAbility(true) && this.getPassiveAbility().hasAttr(NonSuperEffectiveImmunityAbAttr)))
|
||||||
value = 1;
|
value = 1;
|
||||||
if (this.hp > value || this.hp === undefined)
|
if (this.hp > value || this.hp === undefined)
|
||||||
this.hp = value;
|
this.hp = value;
|
||||||
@ -716,11 +717,24 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
return allAbilities[abilityId];
|
return allAbilities[abilityId];
|
||||||
}
|
}
|
||||||
|
|
||||||
canApplyAbility(): boolean {
|
getPassiveAbility(): Ability {
|
||||||
const ability = this.getAbility();
|
let starterSpeciesId = this.species.speciesId;
|
||||||
|
while (pokemonPrevolutions.hasOwnProperty(starterSpeciesId))
|
||||||
|
starterSpeciesId = pokemonPrevolutions[starterSpeciesId];
|
||||||
|
return allAbilities[starterPassiveAbilities[starterSpeciesId]];
|
||||||
|
}
|
||||||
|
|
||||||
|
canApplyPassive(): boolean {
|
||||||
|
return this.isBoss();
|
||||||
|
}
|
||||||
|
|
||||||
|
canApplyAbility(passive: boolean = false): boolean {
|
||||||
|
if (passive && !this.canApplyPassive())
|
||||||
|
return false;
|
||||||
|
const ability = (!passive ? this.getAbility() : this.getPassiveAbility());
|
||||||
if (ability.isIgnorable && this.scene.arena.ignoreAbilities)
|
if (ability.isIgnorable && this.scene.arena.ignoreAbilities)
|
||||||
return false;
|
return false;
|
||||||
return (this.hp || ability.isPassive) && !this.getAbility().conditions.find(condition => !condition(this));
|
return (this.hp || ability.isBypassFaint) && !ability.conditions.find(condition => !condition(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
getWeight(): number {
|
getWeight(): number {
|
||||||
@ -1093,9 +1107,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
apply(source: Pokemon, battlerMove: PokemonMove): HitResult {
|
apply(source: Pokemon, battlerMove: PokemonMove): HitResult {
|
||||||
let result: HitResult;
|
let result: HitResult;
|
||||||
const move = battlerMove.getMove();
|
const move = battlerMove.getMove();
|
||||||
const moveCategory = move.category;
|
|
||||||
let damage = new Utils.NumberHolder(0);
|
let damage = new Utils.NumberHolder(0);
|
||||||
|
|
||||||
|
const variableCategory = new Utils.IntegerHolder(move.category);
|
||||||
|
applyMoveAttrs(VariableMoveCategoryAttr, source, this, move, variableCategory);
|
||||||
|
const moveCategory = variableCategory.value as MoveCategory;
|
||||||
|
|
||||||
const variableType = new Utils.IntegerHolder(move.type);
|
const variableType = new Utils.IntegerHolder(move.type);
|
||||||
const typeChangeMovePowerMultiplier = new Utils.NumberHolder(1);
|
const typeChangeMovePowerMultiplier = new Utils.NumberHolder(1);
|
||||||
applyMoveAttrs(VariableMoveTypeAttr, source, this, move, variableType);
|
applyMoveAttrs(VariableMoveTypeAttr, source, this, move, variableType);
|
||||||
|
@ -30,7 +30,8 @@ import { Weather, WeatherType, getRandomWeatherType, getTerrainBlockMessage, get
|
|||||||
import { TempBattleStat } from "./data/temp-battle-stat";
|
import { TempBattleStat } from "./data/temp-battle-stat";
|
||||||
import { ArenaTagSide, ArenaTrapTag, MistTag, TrickRoomTag } from "./data/arena-tag";
|
import { ArenaTagSide, ArenaTrapTag, MistTag, TrickRoomTag } from "./data/arena-tag";
|
||||||
import { ArenaTagType } from "./data/enums/arena-tag-type";
|
import { ArenaTagType } from "./data/enums/arena-tag-type";
|
||||||
import { Abilities, CheckTrappedAbAttr, MoveAbilityBypassAbAttr, IgnoreOpponentStatChangesAbAttr, PostAttackAbAttr, PostBattleAbAttr, PostDefendAbAttr, PostSummonAbAttr, PostTurnAbAttr, PostWeatherLapseAbAttr, PreSwitchOutAbAttr, PreWeatherDamageAbAttr, ProtectStatAbAttr, RedirectMoveAbAttr, RunSuccessAbAttr, StatChangeMultiplierAbAttr, SuppressWeatherEffectAbAttr, SyncEncounterNatureAbAttr, applyAbAttrs, applyCheckTrappedAbAttrs, applyPostAttackAbAttrs, applyPostBattleAbAttrs, applyPostDefendAbAttrs, applyPostSummonAbAttrs, applyPostTurnAbAttrs, applyPostWeatherLapseAbAttrs, applyPreStatChangeAbAttrs, applyPreSwitchOutAbAttrs, applyPreWeatherEffectAbAttrs, BattleStatMultiplierAbAttr, applyBattleStatMultiplierAbAttrs, IncrementMovePriorityAbAttr, applyPostVictoryAbAttrs, PostVictoryAbAttr, applyPostBattleInitAbAttrs, PostBattleInitAbAttr, BlockNonDirectDamageAbAttr as BlockNonDirectDamageAbAttr, applyPostKnockOutAbAttrs, PostKnockOutAbAttr, PostBiomeChangeAbAttr, applyPostFaintAbAttrs, PostFaintAbAttr } from "./data/ability";
|
import { CheckTrappedAbAttr, MoveAbilityBypassAbAttr, IgnoreOpponentStatChangesAbAttr, PostAttackAbAttr, PostBattleAbAttr, PostDefendAbAttr, PostSummonAbAttr, PostTurnAbAttr, PostWeatherLapseAbAttr, PreSwitchOutAbAttr, PreWeatherDamageAbAttr, ProtectStatAbAttr, RedirectMoveAbAttr, RunSuccessAbAttr, StatChangeMultiplierAbAttr, SuppressWeatherEffectAbAttr, SyncEncounterNatureAbAttr, applyAbAttrs, applyCheckTrappedAbAttrs, applyPostAttackAbAttrs, applyPostBattleAbAttrs, applyPostDefendAbAttrs, applyPostSummonAbAttrs, applyPostTurnAbAttrs, applyPostWeatherLapseAbAttrs, applyPreStatChangeAbAttrs, applyPreSwitchOutAbAttrs, applyPreWeatherEffectAbAttrs, BattleStatMultiplierAbAttr, applyBattleStatMultiplierAbAttrs, IncrementMovePriorityAbAttr, applyPostVictoryAbAttrs, PostVictoryAbAttr, applyPostBattleInitAbAttrs, PostBattleInitAbAttr, BlockNonDirectDamageAbAttr as BlockNonDirectDamageAbAttr, applyPostKnockOutAbAttrs, PostKnockOutAbAttr, PostBiomeChangeAbAttr, applyPostFaintAbAttrs, PostFaintAbAttr, IncreasePpAbAttr } from "./data/ability";
|
||||||
|
import { Abilities } from "./data/enums/abilities";
|
||||||
import { Unlockables, getUnlockableName } from "./system/unlockables";
|
import { Unlockables, getUnlockableName } from "./system/unlockables";
|
||||||
import { getBiomeKey } from "./field/arena";
|
import { getBiomeKey } from "./field/arena";
|
||||||
import { BattleType, BattlerIndex, TurnCommand } from "./battle";
|
import { BattleType, BattlerIndex, TurnCommand } from "./battle";
|
||||||
@ -1207,7 +1208,7 @@ export class SummonPhase extends PartyMemberPokemonPhase {
|
|||||||
|
|
||||||
pokemon.resetTurnData();
|
pokemon.resetTurnData();
|
||||||
|
|
||||||
if (!this.loaded) {
|
if (!this.loaded || this.scene.currentBattle.battleType === BattleType.TRAINER || (this.scene.currentBattle.waveIndex % 10) === 1) {
|
||||||
this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true);
|
this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true);
|
||||||
|
|
||||||
this.queuePostSummon();
|
this.queuePostSummon();
|
||||||
@ -2131,7 +2132,7 @@ export class MovePhase extends BattlePhase {
|
|||||||
for (let opponent of targetedOpponents) {
|
for (let opponent of targetedOpponents) {
|
||||||
if (this.move.ppUsed === this.move.getMove().pp)
|
if (this.move.ppUsed === this.move.getMove().pp)
|
||||||
break;
|
break;
|
||||||
if (opponent.getAbility().id === Abilities.PRESSURE)
|
if ((opponent.canApplyAbility() && opponent.getAbility().hasAttr(IncreasePpAbAttr)) || (opponent.canApplyAbility(true) && opponent.getPassiveAbility().hasAttr(IncreasePpAbAttr)))
|
||||||
this.move.ppUsed = Math.min(this.move.ppUsed + 1, this.move.getMovePp());
|
this.move.ppUsed = Math.min(this.move.ppUsed + 1, this.move.getMovePp());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2502,14 +2503,18 @@ export class MoveAnimTestPhase extends BattlePhase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class ShowAbilityPhase extends PokemonPhase {
|
export class ShowAbilityPhase extends PokemonPhase {
|
||||||
constructor(scene: BattleScene, battlerIndex: BattlerIndex) {
|
private passive: boolean;
|
||||||
|
|
||||||
|
constructor(scene: BattleScene, battlerIndex: BattlerIndex, passive: boolean = false) {
|
||||||
super(scene, battlerIndex);
|
super(scene, battlerIndex);
|
||||||
|
|
||||||
|
this.passive = passive;
|
||||||
}
|
}
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
super.start();
|
super.start();
|
||||||
|
|
||||||
this.scene.abilityBar.showAbility(this.getPokemon());
|
this.scene.abilityBar.showAbility(this.getPokemon(), this.passive);
|
||||||
|
|
||||||
this.end();
|
this.end();
|
||||||
}
|
}
|
||||||
@ -2904,11 +2909,9 @@ export class FaintPhase extends PokemonPhase {
|
|||||||
|
|
||||||
this.scene.queueMessage(getPokemonMessage(pokemon, ' fainted!'), null, true);
|
this.scene.queueMessage(getPokemonMessage(pokemon, ' fainted!'), null, true);
|
||||||
|
|
||||||
if (pokemon.getAbility().hasAttr(PostFaintAbAttr)) {
|
if (pokemon.turnData?.attacksReceived?.length) {
|
||||||
if (pokemon.turnData?.attacksReceived?.length) {
|
const lastAttack = pokemon.turnData.attacksReceived[0];
|
||||||
const lastAttack = pokemon.turnData.attacksReceived[0];
|
applyPostFaintAbAttrs(PostFaintAbAttr, pokemon, this.scene.getPokemonById(lastAttack.sourceId), new PokemonMove(lastAttack.move), lastAttack.result);
|
||||||
applyPostFaintAbAttrs(PostFaintAbAttr,pokemon, this.scene.getPokemonById(lastAttack.sourceId), new PokemonMove(lastAttack.move), lastAttack.result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const alivePlayField = this.scene.getField(true);
|
const alivePlayField = this.scene.getField(true);
|
||||||
|
@ -360,7 +360,7 @@ export class GameData {
|
|||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(response => {
|
.then(response => {
|
||||||
if (!response.length || response[0] !== '{') {
|
if (!response.length || response[0] !== '{') {
|
||||||
if (response.startsWith('failed to read save file')) {
|
if (response.startsWith('failed to open save file')) {
|
||||||
this.scene.queueMessage('Save data could not be found. If this is a new account, you can safely ignore this message.', null, true);
|
this.scene.queueMessage('Save data could not be found. If this is a new account, you can safely ignore this message.', null, true);
|
||||||
return resolve(true);
|
return resolve(true);
|
||||||
}
|
}
|
||||||
|
@ -38,9 +38,9 @@ export default class AbilityBar extends Phaser.GameObjects.Container {
|
|||||||
this.shown = false;
|
this.shown = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
showAbility(pokemon: Pokemon): void {
|
showAbility(pokemon: Pokemon, passive: boolean = false): void {
|
||||||
this.pokemonNameText.setText(`${pokemon.name}'s`);
|
this.pokemonNameText.setText(`${pokemon.name}'s${passive ? ' Passive' : ''}`);
|
||||||
this.abilityNameText.setText(pokemon.getAbility().name);
|
this.abilityNameText.setText((!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name);
|
||||||
|
|
||||||
if (this.shown)
|
if (this.shown)
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user