mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-04 23:42:18 +02:00
Merge branch 'pagefaultgames:main' into stench
This commit is contained in:
commit
f79442b467
Binary file not shown.
Binary file not shown.
1966
public/battle-anims/common-infestation.json
Normal file
1966
public/battle-anims/common-infestation.json
Normal file
File diff suppressed because it is too large
Load Diff
BIN
public/images/pokemon/icons/778-busted.png
Normal file
BIN
public/images/pokemon/icons/778-busted.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
public/images/pokemon/icons/778s-busted.png
Normal file
BIN
public/images/pokemon/icons/778s-busted.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 316 B |
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
@ -126,12 +126,15 @@ export default class BattleScene extends SceneBase {
|
|||||||
public windowType: integer = 0;
|
public windowType: integer = 0;
|
||||||
public experimentalSprites: boolean = false;
|
public experimentalSprites: boolean = false;
|
||||||
public moveAnimations: boolean = true;
|
public moveAnimations: boolean = true;
|
||||||
|
public expGainsSpeed: integer = 0;
|
||||||
public hpBarSpeed: integer = 0;
|
public hpBarSpeed: integer = 0;
|
||||||
public fusionPaletteSwaps: boolean = true;
|
public fusionPaletteSwaps: boolean = true;
|
||||||
public gamepadSupport: boolean = true;
|
public gamepadSupport: boolean = true;
|
||||||
public enableTouchControls: boolean = false;
|
public enableTouchControls: boolean = false;
|
||||||
public enableVibration: boolean = false;
|
public enableVibration: boolean = false;
|
||||||
|
|
||||||
|
public disableMenu: boolean = false;
|
||||||
|
|
||||||
public gameData: GameData;
|
public gameData: GameData;
|
||||||
public sessionSlotId: integer;
|
public sessionSlotId: integer;
|
||||||
|
|
||||||
@ -733,6 +736,8 @@ export default class BattleScene extends SceneBase {
|
|||||||
this.setSeed(SEED_OVERRIDE || Utils.randomString(24));
|
this.setSeed(SEED_OVERRIDE || Utils.randomString(24));
|
||||||
console.log('Seed:', this.seed);
|
console.log('Seed:', this.seed);
|
||||||
|
|
||||||
|
this.disableMenu = false;
|
||||||
|
|
||||||
this.score = 0;
|
this.score = 0;
|
||||||
this.money = 0;
|
this.money = 0;
|
||||||
|
|
||||||
@ -1234,6 +1239,8 @@ export default class BattleScene extends SceneBase {
|
|||||||
inputSuccess = this.ui.processInput(Button.CANCEL);
|
inputSuccess = this.ui.processInput(Button.CANCEL);
|
||||||
this.setLastProcessedMovementTime(Button.CANCEL);
|
this.setLastProcessedMovementTime(Button.CANCEL);
|
||||||
} else if (this.buttonJustPressed(Button.MENU)) {
|
} else if (this.buttonJustPressed(Button.MENU)) {
|
||||||
|
if (this.disableMenu)
|
||||||
|
return;
|
||||||
switch (this.ui?.getMode()) {
|
switch (this.ui?.getMode()) {
|
||||||
case Mode.MESSAGE:
|
case Mode.MESSAGE:
|
||||||
if (!(this.ui.getHandler() as MessageUiHandler).pendingPrompt)
|
if (!(this.ui.getHandler() as MessageUiHandler).pendingPrompt)
|
||||||
|
@ -202,6 +202,25 @@ export class PreDefendAbAttr extends AbAttr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class PreDefendFormChangeAbAttr extends PreDefendAbAttr {
|
||||||
|
private formFunc: (p: Pokemon) => integer;
|
||||||
|
|
||||||
|
constructor(formFunc: ((p: Pokemon) => integer)) {
|
||||||
|
super(true);
|
||||||
|
|
||||||
|
this.formFunc = formFunc;
|
||||||
|
}
|
||||||
|
|
||||||
|
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||||
|
const formIndex = this.formFunc(pokemon);
|
||||||
|
if (formIndex !== pokemon.formIndex) {
|
||||||
|
pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
export class PreDefendFullHpEndureAbAttr extends PreDefendAbAttr {
|
export class PreDefendFullHpEndureAbAttr extends PreDefendAbAttr {
|
||||||
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||||
if (pokemon.getHpRatio() < 1 || (args[0] as Utils.NumberHolder).value < pokemon.hp)
|
if (pokemon.getHpRatio() < 1 || (args[0] as Utils.NumberHolder).value < pokemon.hp)
|
||||||
@ -235,7 +254,7 @@ export class StabBoostAbAttr extends AbAttr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class ReceivedMoveDamageMultiplierAbAttr extends PreDefendAbAttr {
|
export class ReceivedMoveDamageMultiplierAbAttr extends PreDefendAbAttr {
|
||||||
private condition: PokemonDefendCondition;
|
protected condition: PokemonDefendCondition;
|
||||||
private powerMultiplier: number;
|
private powerMultiplier: number;
|
||||||
|
|
||||||
constructor(condition: PokemonDefendCondition, powerMultiplier: number) {
|
constructor(condition: PokemonDefendCondition, powerMultiplier: number) {
|
||||||
@ -261,6 +280,21 @@ export class ReceivedTypeDamageMultiplierAbAttr extends ReceivedMoveDamageMultip
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class PreDefendMovePowerToOneAbAttr extends ReceivedMoveDamageMultiplierAbAttr {
|
||||||
|
constructor(condition: PokemonDefendCondition) {
|
||||||
|
super(condition, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||||
|
if (this.condition(pokemon, attacker, move.getMove())) {
|
||||||
|
(args[0] as Utils.NumberHolder).value = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class TypeImmunityAbAttr extends PreDefendAbAttr {
|
export class TypeImmunityAbAttr extends PreDefendAbAttr {
|
||||||
private immuneType: Type;
|
private immuneType: Type;
|
||||||
private condition: AbAttrCondition;
|
private condition: AbAttrCondition;
|
||||||
@ -386,6 +420,43 @@ export class PostDefendAbAttr extends AbAttr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class PostDefendDisguiseAbAttr extends PostDefendAbAttr {
|
||||||
|
|
||||||
|
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
|
||||||
|
if (pokemon.formIndex == 0 && pokemon.battleData.hitCount != 0 && (move.getMove().category == MoveCategory.SPECIAL || move.getMove().category == MoveCategory.PHYSICAL)) {
|
||||||
|
|
||||||
|
const recoilDamage = Math.ceil((pokemon.getMaxHp() / 8) - attacker.turnData.damageDealt);
|
||||||
|
if (!recoilDamage)
|
||||||
|
return false;
|
||||||
|
pokemon.damageAndUpdate(recoilDamage, HitResult.OTHER);
|
||||||
|
pokemon.scene.queueMessage(getPokemonMessage(pokemon, '\'s disguise was busted!'));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class PostDefendFormChangeAbAttr extends PostDefendAbAttr {
|
||||||
|
private formFunc: (p: Pokemon) => integer;
|
||||||
|
|
||||||
|
constructor(formFunc: ((p: Pokemon) => integer)) {
|
||||||
|
super(true);
|
||||||
|
|
||||||
|
this.formFunc = formFunc;
|
||||||
|
}
|
||||||
|
|
||||||
|
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
|
||||||
|
const formIndex = this.formFunc(pokemon);
|
||||||
|
if (formIndex !== pokemon.formIndex) {
|
||||||
|
pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class FieldPriorityMoveImmunityAbAttr extends PreDefendAbAttr {
|
export class FieldPriorityMoveImmunityAbAttr extends PreDefendAbAttr {
|
||||||
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||||
const attackPriority = new Utils.IntegerHolder(move.getMove().priority);
|
const attackPriority = new Utils.IntegerHolder(move.getMove().priority);
|
||||||
@ -429,6 +500,26 @@ export class MoveImmunityAbAttr extends PreDefendAbAttr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class MoveImmunityStatChangeAbAttr extends MoveImmunityAbAttr {
|
||||||
|
private stat: BattleStat;
|
||||||
|
private levels: integer;
|
||||||
|
|
||||||
|
constructor(immuneCondition: PreDefendAbAttrCondition, stat: BattleStat, levels: integer) {
|
||||||
|
super(immuneCondition);
|
||||||
|
this.stat = stat;
|
||||||
|
this.levels = levels;
|
||||||
|
}
|
||||||
|
|
||||||
|
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||||
|
const ret = super.applyPreDefend(pokemon, passive, attacker, move, cancelled, args)
|
||||||
|
if (ret) {
|
||||||
|
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ this.stat ], this.levels));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class PostDefendStatChangeAbAttr extends PostDefendAbAttr {
|
export class PostDefendStatChangeAbAttr extends PostDefendAbAttr {
|
||||||
private condition: PokemonDefendCondition;
|
private condition: PokemonDefendCondition;
|
||||||
private stat: BattleStat;
|
private stat: BattleStat;
|
||||||
@ -454,6 +545,25 @@ export class PostDefendStatChangeAbAttr extends PostDefendAbAttr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class PostDefendApplyBattlerTagAbAttr extends PostDefendAbAttr {
|
||||||
|
private condition: PokemonDefendCondition;
|
||||||
|
private tagType: BattlerTagType;
|
||||||
|
constructor(condition: PokemonDefendCondition, tagType: BattlerTagType) {
|
||||||
|
super(true);
|
||||||
|
|
||||||
|
this.condition = condition;
|
||||||
|
this.tagType = tagType;
|
||||||
|
}
|
||||||
|
|
||||||
|
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
|
||||||
|
if (this.condition(pokemon, attacker, move.getMove())) {
|
||||||
|
pokemon.addTag(this.tagType, undefined, undefined, pokemon.id);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class PostDefendTypeChangeAbAttr extends PostDefendAbAttr {
|
export class PostDefendTypeChangeAbAttr extends PostDefendAbAttr {
|
||||||
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
|
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
|
||||||
if (hitResult < HitResult.NO_EFFECT) {
|
if (hitResult < HitResult.NO_EFFECT) {
|
||||||
@ -1979,14 +2089,36 @@ export class SyncEncounterNatureAbAttr extends AbAttr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class MoveAbilityBypassAbAttr extends AbAttr {
|
export class MoveAbilityBypassAbAttr extends AbAttr {
|
||||||
|
private moveIgnoreFunc: (pokemon: Pokemon, move: Move) => boolean;
|
||||||
|
|
||||||
|
constructor(moveIgnoreFunc?: (pokemon: Pokemon, move: Move) => boolean) {
|
||||||
|
super(false);
|
||||||
|
|
||||||
|
this.moveIgnoreFunc = moveIgnoreFunc || ((pokemon, move) => true);
|
||||||
|
}
|
||||||
|
|
||||||
|
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||||
|
if (this.moveIgnoreFunc(pokemon, (args[0] as Move))) {
|
||||||
|
cancelled.value = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SuppressFieldAbilitiesAbAttr extends AbAttr {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(false);
|
super(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||||
|
const ability = (args[0] as Ability);
|
||||||
|
if (!ability.hasAttr(UnsuppressableAbilityAbAttr) && !ability.hasAttr(SuppressFieldAbilitiesAbAttr)) {
|
||||||
cancelled.value = true;
|
cancelled.value = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class UncopiableAbilityAbAttr extends AbAttr {
|
export class UncopiableAbilityAbAttr extends AbAttr {
|
||||||
@ -2013,6 +2145,12 @@ export class NoTransformAbilityAbAttr extends AbAttr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class NoFusionAbilityAbAttr extends AbAttr {
|
||||||
|
constructor() {
|
||||||
|
super(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function applyAbAttrsInternal<TAttr extends AbAttr>(attrType: { new(...args: any[]): TAttr },
|
function applyAbAttrsInternal<TAttr extends AbAttr>(attrType: { new(...args: any[]): TAttr },
|
||||||
pokemon: Pokemon, applyFunc: AbAttrApplyFunc<TAttr>, args: any[], isAsync: boolean = false, showAbilityInstant: boolean = false, quiet: boolean = false, passive: boolean = false): Promise<void> {
|
pokemon: Pokemon, applyFunc: AbAttrApplyFunc<TAttr>, args: any[], isAsync: boolean = false, showAbilityInstant: boolean = false, quiet: boolean = false, passive: boolean = false): Promise<void> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
@ -2361,7 +2499,8 @@ export function initAbilities() {
|
|||||||
new Ability(Abilities.PLUS, "Plus (N)", "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.", 3),
|
new Ability(Abilities.PLUS, "Plus (N)", "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.", 3),
|
||||||
new Ability(Abilities.MINUS, "Minus (N)", "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.", 3),
|
new Ability(Abilities.MINUS, "Minus (N)", "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.", 3),
|
||||||
new Ability(Abilities.FORECAST, "Forecast (N)", "The Pokémon transforms with the weather to change its type to Water, Fire, or Ice.", 3)
|
new Ability(Abilities.FORECAST, "Forecast (N)", "The Pokémon transforms with the weather to change its type to Water, Fire, or Ice.", 3)
|
||||||
.attr(UncopiableAbilityAbAttr),
|
.attr(UncopiableAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.STICKY_HOLD, "Sticky Hold", "Items held by the Pokémon are stuck fast and cannot be removed by other Pokémon.", 3)
|
new Ability(Abilities.STICKY_HOLD, "Sticky Hold", "Items held by the Pokémon are stuck fast and cannot be removed by other Pokémon.", 3)
|
||||||
.attr(BlockItemTheftAbAttr)
|
.attr(BlockItemTheftAbAttr)
|
||||||
.bypassFaint()
|
.bypassFaint()
|
||||||
@ -2454,7 +2593,7 @@ export function initAbilities() {
|
|||||||
.attr(BattleStatMultiplierAbAttr, BattleStat.SPATK, 1.5)
|
.attr(BattleStatMultiplierAbAttr, BattleStat.SPATK, 1.5)
|
||||||
.condition(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN)),
|
.condition(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN)),
|
||||||
new Ability(Abilities.QUICK_FEET, "Quick Feet", "Boosts the Speed stat if the Pokémon has a status condition.", 4)
|
new Ability(Abilities.QUICK_FEET, "Quick Feet", "Boosts the Speed stat if the Pokémon has a status condition.", 4)
|
||||||
.conditionalAttr(pokemon => pokemon.status.effect === StatusEffect.PARALYSIS, BattleStatMultiplierAbAttr, BattleStat.SPD, 2)
|
.conditionalAttr(pokemon => pokemon.status ? pokemon.status.effect === StatusEffect.PARALYSIS : false, BattleStatMultiplierAbAttr, BattleStat.SPD, 2)
|
||||||
.conditionalAttr(pokemon => !!pokemon.status, BattleStatMultiplierAbAttr, BattleStat.SPD, 1.5),
|
.conditionalAttr(pokemon => !!pokemon.status, BattleStatMultiplierAbAttr, BattleStat.SPD, 1.5),
|
||||||
new Ability(Abilities.NORMALIZE, "Normalize", "All the Pokémon's moves become Normal type. The power of those moves is boosted a little.", 4)
|
new Ability(Abilities.NORMALIZE, "Normalize", "All the Pokémon's moves become Normal type. The power of those moves is boosted a little.", 4)
|
||||||
.attr(MoveTypeChangeAttr, Type.NORMAL, 1.2, (user, target, move) => move.id !== Moves.HIDDEN_POWER && move.id !== Moves.WEATHER_BALL &&
|
.attr(MoveTypeChangeAttr, Type.NORMAL, 1.2, (user, target, move) => move.id !== Moves.HIDDEN_POWER && move.id !== Moves.WEATHER_BALL &&
|
||||||
@ -2512,11 +2651,13 @@ export function initAbilities() {
|
|||||||
new Ability(Abilities.MULTITYPE, "Multitype (N)", "Changes the Pokémon's type to match the Plate or Z-Crystal it holds.", 4)
|
new Ability(Abilities.MULTITYPE, "Multitype (N)", "Changes the Pokémon's type to match the Plate or Z-Crystal it holds.", 4)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr),
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.FLOWER_GIFT, "Flower Gift (P)", "Boosts the Attack and Sp. Def stats of itself and allies in harsh sunlight.", 4)
|
new Ability(Abilities.FLOWER_GIFT, "Flower Gift (P)", "Boosts the Attack and Sp. Def stats of itself and allies in harsh sunlight.", 4)
|
||||||
.conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5)
|
.conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5)
|
||||||
.conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.SPDEF, 1.5)
|
.conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.SPDEF, 1.5)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.BAD_DREAMS, "Bad Dreams (N)", "Reduces the HP of sleeping opposing Pokémon.", 4),
|
new Ability(Abilities.BAD_DREAMS, "Bad Dreams (N)", "Reduces the HP of sleeping opposing Pokémon.", 4),
|
||||||
new Ability(Abilities.PICKPOCKET, "Pickpocket", "Steals an item from an attacker that made direct contact.", 5)
|
new Ability(Abilities.PICKPOCKET, "Pickpocket", "Steals an item from an attacker that made direct contact.", 5)
|
||||||
@ -2591,7 +2732,9 @@ export function initAbilities() {
|
|||||||
.attr(PostVictoryStatChangeAbAttr, BattleStat.ATK, 1),
|
.attr(PostVictoryStatChangeAbAttr, BattleStat.ATK, 1),
|
||||||
new Ability(Abilities.JUSTIFIED, "Justified", "Being hit by a Dark-type move boosts the Attack stat of the Pokémon, for justice.", 5)
|
new Ability(Abilities.JUSTIFIED, "Justified", "Being hit by a Dark-type move boosts the Attack stat of the Pokémon, for justice.", 5)
|
||||||
.attr(PostDefendStatChangeAbAttr, (target, user, move) => move.type === Type.DARK && move.category !== MoveCategory.STATUS, BattleStat.ATK, 1),
|
.attr(PostDefendStatChangeAbAttr, (target, user, move) => move.type === Type.DARK && move.category !== MoveCategory.STATUS, BattleStat.ATK, 1),
|
||||||
new Ability(Abilities.RATTLED, "Rattled (N)", "Dark-, Ghost-, and Bug-type moves scare the Pokémon and boost its Speed stat.", 5),
|
new Ability(Abilities.RATTLED, "Rattled (P)", "Intimidate or being hit by a Dark-, Ghost-, or Bug-type move will scare the Pokémon and boost its Speed stat.", 5)
|
||||||
|
.attr(PostDefendStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS && (move.type === Type.DARK || move.type === Type.BUG ||
|
||||||
|
move.type === Type.GHOST), BattleStat.SPD, 1),
|
||||||
new Ability(Abilities.MAGIC_BOUNCE, "Magic Bounce (N)", "Reflects status moves instead of getting hit by them.", 5)
|
new Ability(Abilities.MAGIC_BOUNCE, "Magic Bounce (N)", "Reflects status moves instead of getting hit by them.", 5)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.SAP_SIPPER, "Sap Sipper", "Boosts the Attack stat if hit by a Grass-type move instead of taking damage.", 5)
|
new Ability(Abilities.SAP_SIPPER, "Sap Sipper", "Boosts the Attack stat if hit by a Grass-type move instead of taking damage.", 5)
|
||||||
@ -2614,8 +2757,10 @@ export function initAbilities() {
|
|||||||
.attr(PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 1 : 0)
|
.attr(PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 1 : 0)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr),
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
new Ability(Abilities.VICTORY_STAR, "Victory Star (N)", "Boosts the accuracy of its allies and itself.", 5),
|
.attr(NoFusionAbilityAbAttr),
|
||||||
|
new Ability(Abilities.VICTORY_STAR, "Victory Star (P)", "Boosts the accuracy of its allies and itself.", 5)
|
||||||
|
.attr(BattleStatMultiplierAbAttr, BattleStat.ACC, 1.1),
|
||||||
new Ability(Abilities.TURBOBLAZE, "Turboblaze", "Moves can be used on the target regardless of its Abilities.", 5)
|
new Ability(Abilities.TURBOBLAZE, "Turboblaze", "Moves can be used on the target regardless of its Abilities.", 5)
|
||||||
.attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' is radiating a blazing aura!'))
|
.attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' is radiating a blazing aura!'))
|
||||||
.attr(MoveAbilityBypassAbAttr),
|
.attr(MoveAbilityBypassAbAttr),
|
||||||
@ -2642,12 +2787,15 @@ export function initAbilities() {
|
|||||||
.attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.BITING_MOVE), 1.5),
|
.attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.BITING_MOVE), 1.5),
|
||||||
new Ability(Abilities.REFRIGERATE, "Refrigerate", "Normal-type moves become Ice-type moves. The power of those moves is boosted a little.", 6)
|
new Ability(Abilities.REFRIGERATE, "Refrigerate", "Normal-type moves become Ice-type moves. The power of those moves is boosted a little.", 6)
|
||||||
.attr(MoveTypeChangePowerMultiplierAbAttr, Type.NORMAL, Type.ICE, 1.2),
|
.attr(MoveTypeChangePowerMultiplierAbAttr, Type.NORMAL, Type.ICE, 1.2),
|
||||||
new Ability(Abilities.SWEET_VEIL, "Sweet Veil (N)", "Prevents itself and ally Pokémon from falling asleep.", 6)
|
new Ability(Abilities.SWEET_VEIL, "Sweet Veil (P)", "Prevents itself and ally Pokémon from falling asleep.", 6)
|
||||||
|
.attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP)
|
||||||
|
.attr(BattlerTagImmunityAbAttr, BattlerTagType.DROWSY)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.STANCE_CHANGE, "Stance Change", "The Pokémon changes its form to Blade Forme when it uses an attack move and changes to Shield Forme when it uses King's Shield.", 6)
|
new Ability(Abilities.STANCE_CHANGE, "Stance Change", "The Pokémon changes its form to Blade Forme when it uses an attack move and changes to Shield Forme when it uses King's Shield.", 6)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr),
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.GALE_WINGS, "Gale Wings", "Gives priority to Flying-type moves when the Pokémon's HP is full.", 6)
|
new Ability(Abilities.GALE_WINGS, "Gale Wings", "Gives priority to Flying-type moves when the Pokémon's HP is full.", 6)
|
||||||
.attr(IncrementMovePriorityAbAttr, (pokemon, move) => pokemon.getHpRatio() === 1 && move.type === Type.FLYING),
|
.attr(IncrementMovePriorityAbAttr, (pokemon, move) => pokemon.getHpRatio() === 1 && move.type === Type.FLYING),
|
||||||
new Ability(Abilities.MEGA_LAUNCHER, "Mega Launcher", "Powers up aura and pulse moves.", 6)
|
new Ability(Abilities.MEGA_LAUNCHER, "Mega Launcher", "Powers up aura and pulse moves.", 6)
|
||||||
@ -2695,7 +2843,8 @@ export function initAbilities() {
|
|||||||
.attr(PostTurnFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0))
|
.attr(PostTurnFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0))
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr),
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.STAKEOUT, "Stakeout (N)", "Doubles the damage dealt to the target's replacement if the target switches out.", 7),
|
new Ability(Abilities.STAKEOUT, "Stakeout (N)", "Doubles the damage dealt to the target's replacement if the target switches out.", 7),
|
||||||
new Ability(Abilities.WATER_BUBBLE, "Water Bubble", "Lowers the power of Fire-type moves done to the Pokémon and prevents the Pokémon from getting a burn.", 7)
|
new Ability(Abilities.WATER_BUBBLE, "Water Bubble", "Lowers the power of Fire-type moves done to the Pokémon and prevents the Pokémon from getting a burn.", 7)
|
||||||
.attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 0.5)
|
.attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 0.5)
|
||||||
@ -2724,21 +2873,31 @@ export function initAbilities() {
|
|||||||
.attr(PostTurnFormChangeAbAttr, p => p.level < 20 || p.getHpRatio() <= 0.25 ? 0 : 1)
|
.attr(PostTurnFormChangeAbAttr, p => p.level < 20 || p.getHpRatio() <= 0.25 ? 0 : 1)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr),
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
new Ability(Abilities.DISGUISE, "Disguise (N)", "Once per battle, the shroud that covers the Pokémon can protect it from an attack.", 7)
|
.attr(NoFusionAbilityAbAttr),
|
||||||
|
new Ability(Abilities.DISGUISE, "Disguise (P)", "Once per battle, the shroud that covers the Pokémon can protect it from an attack.", 7)
|
||||||
|
.attr(PreDefendMovePowerToOneAbAttr, (target, user, move) => target.formIndex == 0 && target.getAttackTypeEffectiveness(move.type) > 0)
|
||||||
|
.attr(PostSummonFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1)
|
||||||
|
.attr(PostBattleInitFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1)
|
||||||
|
.attr(PostDefendFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1)
|
||||||
|
.attr(PreDefendFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1)
|
||||||
|
.attr(PostDefendDisguiseAbAttr)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr)
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
.attr(NoTransformAbilityAbAttr)
|
.attr(NoTransformAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.BATTLE_BOND, "Battle Bond (N)", "Defeating an opposing Pokémon strengthens the Pokémon's bond with its Trainer, and it becomes Ash-Greninja. Water Shuriken gets more powerful.", 7)
|
new Ability(Abilities.BATTLE_BOND, "Battle Bond (N)", "Defeating an opposing Pokémon strengthens the Pokémon's bond with its Trainer, and it becomes Ash-Greninja. Water Shuriken gets more powerful.", 7)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr),
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.POWER_CONSTRUCT, "Power Construct (N)", "Other Cells gather to aid when its HP becomes half or less. Then the Pokémon changes its form to Complete Forme.", 7)
|
new Ability(Abilities.POWER_CONSTRUCT, "Power Construct (N)", "Other Cells gather to aid when its HP becomes half or less. Then the Pokémon changes its form to Complete Forme.", 7)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr),
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.CORROSION, "Corrosion (N)", "The Pokémon can poison the target even if it's a Steel or Poison type.", 7),
|
new Ability(Abilities.CORROSION, "Corrosion (N)", "The Pokémon can poison the target even if it's a Steel or Poison type.", 7),
|
||||||
new Ability(Abilities.COMATOSE, "Comatose (N)", "It's always drowsing and will never wake up. It can attack without waking up.", 7)
|
new Ability(Abilities.COMATOSE, "Comatose (N)", "It's always drowsing and will never wake up. It can attack without waking up.", 7)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
@ -2784,7 +2943,8 @@ export function initAbilities() {
|
|||||||
new Ability(Abilities.RKS_SYSTEM, "RKS System (N)", "Changes the Pokémon's type to match the memory disc it holds.", 7)
|
new Ability(Abilities.RKS_SYSTEM, "RKS System (N)", "Changes the Pokémon's type to match the memory disc it holds.", 7)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr),
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.ELECTRIC_SURGE, "Electric Surge", "Turns the ground into Electric Terrain when the Pokémon enters a battle.", 7)
|
new Ability(Abilities.ELECTRIC_SURGE, "Electric Surge", "Turns the ground into Electric Terrain when the Pokémon enters a battle.", 7)
|
||||||
.attr(PostSummonTerrainChangeAbAttr, TerrainType.ELECTRIC)
|
.attr(PostSummonTerrainChangeAbAttr, TerrainType.ELECTRIC)
|
||||||
.attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC),
|
.attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC),
|
||||||
@ -2817,7 +2977,8 @@ export function initAbilities() {
|
|||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.GULP_MISSILE, "Gulp Missile (N)", "When the Pokémon uses Surf or Dive, it will come back with prey. When it takes damage, it will spit out the prey to attack.", 8)
|
new Ability(Abilities.GULP_MISSILE, "Gulp Missile (N)", "When the Pokémon uses Surf or Dive, it will come back with prey. When it takes damage, it will spit out the prey to attack.", 8)
|
||||||
.attr(UnsuppressableAbilityAbAttr)
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
.attr(NoTransformAbilityAbAttr),
|
.attr(NoTransformAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.STALWART, "Stalwart (N)", "Ignores the effects of opposing Pokémon's Abilities and moves that draw in moves.", 8),
|
new Ability(Abilities.STALWART, "Stalwart (N)", "Ignores the effects of opposing Pokémon's Abilities and moves that draw in moves.", 8),
|
||||||
new Ability(Abilities.STEAM_ENGINE, "Steam Engine", "Boosts the Pokémon's Speed stat drastically if hit by a Fire- or Water-type move.", 8)
|
new Ability(Abilities.STEAM_ENGINE, "Steam Engine", "Boosts the Pokémon's Speed stat drastically if hit by a Fire- or Water-type move.", 8)
|
||||||
.attr(PostDefendStatChangeAbAttr, (target, user, move) => (move.type === Type.FIRE || move.type === Type.WATER) && move.category !== MoveCategory.STATUS, BattleStat.SPD, 6),
|
.attr(PostDefendStatChangeAbAttr, (target, user, move) => (move.type === Type.FIRE || move.type === Type.WATER) && move.category !== MoveCategory.STATUS, BattleStat.SPD, 6),
|
||||||
@ -2837,6 +2998,7 @@ export function initAbilities() {
|
|||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr)
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
.attr(NoTransformAbilityAbAttr)
|
.attr(NoTransformAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.POWER_SPOT, "Power Spot (N)", "Just being next to the Pokémon powers up moves.", 8),
|
new Ability(Abilities.POWER_SPOT, "Power Spot (N)", "Just being next to the Pokémon powers up moves.", 8),
|
||||||
new Ability(Abilities.MIMICRY, "Mimicry (N)", "Changes the Pokémon's type depending on the terrain.", 8),
|
new Ability(Abilities.MIMICRY, "Mimicry (N)", "Changes the Pokémon's type depending on the terrain.", 8),
|
||||||
@ -2847,7 +3009,8 @@ export function initAbilities() {
|
|||||||
.attr(PostDefendAbilitySwapAbAttr)
|
.attr(PostDefendAbilitySwapAbAttr)
|
||||||
.bypassFaint(),
|
.bypassFaint(),
|
||||||
new Ability(Abilities.GORILLA_TACTICS, "Gorilla Tactics (N)", "Boosts the Pokémon's Attack stat but only allows the use of the first selected move.", 8),
|
new Ability(Abilities.GORILLA_TACTICS, "Gorilla Tactics (N)", "Boosts the Pokémon's Attack stat but only allows the use of the first selected move.", 8),
|
||||||
new Ability(Abilities.NEUTRALIZING_GAS, "Neutralizing Gas (N)", "If the Pokémon with Neutralizing Gas is in the battle, the effects of all Pokémon's Abilities will be nullified or will not be triggered.", 8)
|
new Ability(Abilities.NEUTRALIZING_GAS, "Neutralizing Gas (P)", "If the Pokémon with Neutralizing Gas is in the battle, the effects of all Pokémon's Abilities will be nullified or will not be triggered.", 8)
|
||||||
|
.attr(SuppressFieldAbilitiesAbAttr)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(NoTransformAbilityAbAttr),
|
.attr(NoTransformAbilityAbAttr),
|
||||||
@ -2859,7 +3022,8 @@ export function initAbilities() {
|
|||||||
.attr(PostTurnFormChangeAbAttr, p => p.getFormKey ? 1 : 0)
|
.attr(PostTurnFormChangeAbAttr, p => p.getFormKey ? 1 : 0)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(NoTransformAbilityAbAttr),
|
.attr(NoTransformAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.QUICK_DRAW, "Quick Draw (N)", "Enables the Pokémon to move first occasionally.", 8),
|
new Ability(Abilities.QUICK_DRAW, "Quick Draw (N)", "Enables the Pokémon to move first occasionally.", 8),
|
||||||
new Ability(Abilities.UNSEEN_FIST, "Unseen Fist (N)", "If the Pokémon uses moves that make direct contact, it can attack the target even if the target protects itself.", 8),
|
new Ability(Abilities.UNSEEN_FIST, "Unseen Fist (N)", "If the Pokémon uses moves that make direct contact, it can attack the target even if the target protects itself.", 8),
|
||||||
new Ability(Abilities.CURIOUS_MEDICINE, "Curious Medicine (N)", "When the Pokémon enters a battle, it scatters medicine from its shell, which removes all stat changes from allies.", 8),
|
new Ability(Abilities.CURIOUS_MEDICINE, "Curious Medicine (N)", "When the Pokémon enters a battle, it scatters medicine from its shell, which removes all stat changes from allies.", 8),
|
||||||
@ -2889,7 +3053,7 @@ export function initAbilities() {
|
|||||||
new Ability(Abilities.SEED_SOWER, "Seed Sower", "Turns the ground into Grassy Terrain when the Pokémon is hit by an attack.", 9)
|
new Ability(Abilities.SEED_SOWER, "Seed Sower", "Turns the ground into Grassy Terrain when the Pokémon is hit by an attack.", 9)
|
||||||
.attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY),
|
.attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY),
|
||||||
new Ability(Abilities.THERMAL_EXCHANGE, "Thermal Exchange", "Boosts the Attack stat when the Pokémon is hit by a Fire-type move. The Pokémon also cannot be burned.", 9)
|
new Ability(Abilities.THERMAL_EXCHANGE, "Thermal Exchange", "Boosts the Attack stat when the Pokémon is hit by a Fire-type move. The Pokémon also cannot be burned.", 9)
|
||||||
.attr(PostDefendStatChangeAbAttr, (target, user, move) => move.type === Type.FIRE, BattleStat.ATK, 1)
|
.attr(PostDefendStatChangeAbAttr, (target, user, move) => move.type === Type.FIRE && move.category !== MoveCategory.STATUS, BattleStat.ATK, 1)
|
||||||
.attr(StatusEffectImmunityAbAttr, StatusEffect.BURN)
|
.attr(StatusEffectImmunityAbAttr, StatusEffect.BURN)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.ANGER_SHELL, "Anger Shell (N)", "When an attack causes its HP to drop to half or less, the Pokémon gets angry. This lowers its Defense and Sp. Def stats but boosts its Attack, Sp. Atk, and Speed stats.", 9),
|
new Ability(Abilities.ANGER_SHELL, "Anger Shell (N)", "When an attack causes its HP to drop to half or less, the Pokémon gets angry. This lowers its Defense and Sp. Def stats but boosts its Attack, Sp. Atk, and Speed stats.", 9),
|
||||||
@ -2900,22 +3064,26 @@ export function initAbilities() {
|
|||||||
new Ability(Abilities.WELL_BAKED_BODY, "Well-Baked Body", "The Pokémon takes no damage when hit by Fire-type moves. Instead, its Defense stat is sharply boosted.", 9)
|
new Ability(Abilities.WELL_BAKED_BODY, "Well-Baked Body", "The Pokémon takes no damage when hit by Fire-type moves. Instead, its Defense stat is sharply boosted.", 9)
|
||||||
.attr(TypeImmunityStatChangeAbAttr, Type.FIRE, BattleStat.DEF, 2)
|
.attr(TypeImmunityStatChangeAbAttr, Type.FIRE, BattleStat.DEF, 2)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.WIND_RIDER, "Wind Rider (N)", "Boosts the Pokémon's Attack stat if Tailwind takes effect or if the Pokémon is hit by a wind move. The Pokémon also takes no damage from wind moves.", 9)
|
new Ability(Abilities.WIND_RIDER, "Wind Rider (P)", "Boosts the Pokémon's Attack stat if Tailwind takes effect or if the Pokémon is hit by a wind move. The Pokémon also takes no damage from wind moves.", 9)
|
||||||
|
.attr(MoveImmunityStatChangeAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.getMove().hasFlag(MoveFlags.WIND_MOVE), BattleStat.ATK, 1)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.GUARD_DOG, "Guard Dog (N)", "Boosts the Pokémon's Attack stat if intimidated. Moves and items that would force the Pokémon to switch out also fail to work.", 9)
|
new Ability(Abilities.GUARD_DOG, "Guard Dog (N)", "Boosts the Pokémon's Attack stat if intimidated. Moves and items that would force the Pokémon to switch out also fail to work.", 9)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.ROCKY_PAYLOAD, "Rocky Payload", "Powers up Rock-type moves.", 9)
|
new Ability(Abilities.ROCKY_PAYLOAD, "Rocky Payload", "Powers up Rock-type moves.", 9)
|
||||||
.attr(MoveTypePowerBoostAbAttr, Type.ROCK),
|
.attr(MoveTypePowerBoostAbAttr, Type.ROCK),
|
||||||
new Ability(Abilities.WIND_POWER, "Wind Power (N)", "The Pokémon becomes charged when it is hit by a wind move, boosting the power of the next Electric-type move the Pokémon uses.", 9),
|
new Ability(Abilities.WIND_POWER, "Wind Power (P)", "The Pokémon becomes charged when it is hit by a wind move, boosting the power of the next Electric-type move the Pokémon uses.", 9)
|
||||||
|
.attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.hasFlag(MoveFlags.WIND_MOVE), BattlerTagType.CHARGED),
|
||||||
new Ability(Abilities.ZERO_TO_HERO, "Zero to Hero (N)", "The Pokémon transforms into its Hero Form when it switches out.", 9)
|
new Ability(Abilities.ZERO_TO_HERO, "Zero to Hero (N)", "The Pokémon transforms into its Hero Form when it switches out.", 9)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr)
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
.attr(NoTransformAbilityAbAttr),
|
.attr(NoTransformAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.COMMANDER, "Commander (N)", "When the Pokémon enters a battle, it goes inside the mouth of an ally Dondozo if one is on the field. The Pokémon then issues commands from there.", 9)
|
new Ability(Abilities.COMMANDER, "Commander (N)", "When the Pokémon enters a battle, it goes inside the mouth of an ally Dondozo if one is on the field. The Pokémon then issues commands from there.", 9)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr),
|
.attr(UnswappableAbilityAbAttr),
|
||||||
new Ability(Abilities.ELECTROMORPHOSIS, "Electromorphosis (N)", "The Pokémon becomes charged when it takes damage, boosting the power of the next Electric-type move the Pokémon uses.", 9),
|
new Ability(Abilities.ELECTROMORPHOSIS, "Electromorphosis", "The Pokémon becomes charged when it takes damage, boosting the power of the next Electric-type move the Pokémon uses.", 9)
|
||||||
|
.attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, BattlerTagType.CHARGED),
|
||||||
new Ability(Abilities.PROTOSYNTHESIS, "Protosynthesis", "Boosts the Pokémon's most proficient stat in harsh sunlight or if the Pokémon is holding Booster Energy.", 9)
|
new Ability(Abilities.PROTOSYNTHESIS, "Protosynthesis", "Boosts the Pokémon's most proficient stat in harsh sunlight or if the Pokémon is holding Booster Energy.", 9)
|
||||||
.conditionalAttr(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN), PostSummonAddBattlerTagAbAttr, BattlerTagType.PROTOSYNTHESIS, 0, true)
|
.conditionalAttr(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN), PostSummonAddBattlerTagAbAttr, BattlerTagType.PROTOSYNTHESIS, 0, true)
|
||||||
.attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN)
|
.attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN)
|
||||||
@ -2960,7 +3128,8 @@ export function initAbilities() {
|
|||||||
new Ability(Abilities.EARTH_EATER, "Earth Eater", "If hit by a Ground-type move, the Pokémon has its HP restored instead of taking damage.", 9)
|
new Ability(Abilities.EARTH_EATER, "Earth Eater", "If hit by a Ground-type move, the Pokémon has its HP restored instead of taking damage.", 9)
|
||||||
.attr(TypeImmunityHealAbAttr, Type.GROUND)
|
.attr(TypeImmunityHealAbAttr, Type.GROUND)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.MYCELIUM_MIGHT, "Mycelium Might (N)", "The Pokémon will always act more slowly when using status moves, but these moves will be unimpeded by the Ability of the target.", 9),
|
new Ability(Abilities.MYCELIUM_MIGHT, "Mycelium Might (P)", "The Pokémon will always act more slowly when using status moves, but these moves will be unimpeded by the Ability of the target.", 9)
|
||||||
|
.attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS),
|
||||||
new Ability(Abilities.MINDS_EYE, "Mind's Eye (N)", "The Pokémon ignores changes to opponents' evasiveness, its accuracy can't be lowered, and it can hit Ghost types with Normal- and Fighting-type moves.", 9)
|
new Ability(Abilities.MINDS_EYE, "Mind's Eye (N)", "The Pokémon ignores changes to opponents' evasiveness, its accuracy can't be lowered, and it can hit Ghost types with Normal- and Fighting-type moves.", 9)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.SUPERSWEET_SYRUP, "Supersweet Syrup (N)", "A sickly sweet scent spreads across the field the first time the Pokémon enters a battle, lowering the evasiveness of opposing Pokémon.", 9),
|
new Ability(Abilities.SUPERSWEET_SYRUP, "Supersweet Syrup (N)", "A sickly sweet scent spreads across the field the first time the Pokémon enters a battle, lowering the evasiveness of opposing Pokémon.", 9),
|
||||||
@ -2992,7 +3161,8 @@ export function initAbilities() {
|
|||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.attr(UnsuppressableAbilityAbAttr)
|
.attr(UnsuppressableAbilityAbAttr)
|
||||||
.attr(NoTransformAbilityAbAttr),
|
.attr(NoTransformAbilityAbAttr)
|
||||||
|
.attr(NoFusionAbilityAbAttr),
|
||||||
new Ability(Abilities.TERA_SHELL, "Tera Shell (N)", "The Pokémon's shell contains the powers of each type. All damage-dealing moves that hit the Pokémon when its HP is full will not be very effective.", 9)
|
new Ability(Abilities.TERA_SHELL, "Tera Shell (N)", "The Pokémon's shell contains the powers of each type. All damage-dealing moves that hit the Pokémon when its HP is full will not be very effective.", 9)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
|
@ -175,7 +175,7 @@ class MudSportTag extends WeakenMoveTypeTag {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onRemove(arena: Arena): void {
|
onRemove(arena: Arena): void {
|
||||||
arena.scene.queueMessage('The effects of MUD SPORT\nhave faded.');
|
arena.scene.queueMessage('The effects of Mud Sport\nhave faded.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ class WaterSportTag extends WeakenMoveTypeTag {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onRemove(arena: Arena): void {
|
onRemove(arena: Arena): void {
|
||||||
arena.scene.queueMessage('The effects of WATER SPORT\nhave faded.');
|
arena.scene.queueMessage('The effects of Water Sport\nhave faded.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,6 +79,7 @@ export enum CommonAnim {
|
|||||||
MAGMA_STORM,
|
MAGMA_STORM,
|
||||||
CLAMP,
|
CLAMP,
|
||||||
THUNDER_CAGE,
|
THUNDER_CAGE,
|
||||||
|
INFESTATION,
|
||||||
ORDER_UP_CURLY,
|
ORDER_UP_CURLY,
|
||||||
ORDER_UP_DROOPY,
|
ORDER_UP_DROOPY,
|
||||||
ORDER_UP_STRETCHY,
|
ORDER_UP_STRETCHY,
|
||||||
|
@ -613,6 +613,16 @@ export class ThunderCageTag extends DamagingTrapTag {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class InfestationTag extends DamagingTrapTag {
|
||||||
|
constructor(turnCount: integer, sourceId: integer) {
|
||||||
|
super(BattlerTagType.INFESTATION, CommonAnim.INFESTATION, turnCount, Moves.INFESTATION, sourceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
getTrapMessage(pokemon: Pokemon): string {
|
||||||
|
return getPokemonMessage(pokemon, ` has been afflicted \nwith an infestation by ${getPokemonPrefix(pokemon.scene.getPokemonById(this.sourceId))}${pokemon.scene.getPokemonById(this.sourceId).name}!`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export class ProtectedTag extends BattlerTag {
|
export class ProtectedTag extends BattlerTag {
|
||||||
constructor(sourceMove: Moves, tagType: BattlerTagType = BattlerTagType.PROTECTED) {
|
constructor(sourceMove: Moves, tagType: BattlerTagType = BattlerTagType.PROTECTED) {
|
||||||
@ -922,11 +932,15 @@ export class HideSpriteTag extends BattlerTag {
|
|||||||
|
|
||||||
export class TypeBoostTag extends BattlerTag {
|
export class TypeBoostTag extends BattlerTag {
|
||||||
public boostedType: Type;
|
public boostedType: Type;
|
||||||
|
public boostValue: number;
|
||||||
|
public oneUse: boolean;
|
||||||
|
|
||||||
constructor(tagType: BattlerTagType, sourceMove: Moves, boostedType: Type) {
|
constructor(tagType: BattlerTagType, sourceMove: Moves, boostedType: Type, boostValue: number, oneUse: boolean) {
|
||||||
super(tagType, BattlerTagLapseType.TURN_END, 1, sourceMove);
|
super(tagType, BattlerTagLapseType.TURN_END, 1, sourceMove);
|
||||||
|
|
||||||
this.boostedType = boostedType;
|
this.boostedType = boostedType;
|
||||||
|
this.boostValue = boostValue;
|
||||||
|
this.oneUse = oneUse;
|
||||||
}
|
}
|
||||||
|
|
||||||
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
|
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
|
||||||
@ -1047,6 +1061,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc
|
|||||||
return new MagmaStormTag(turnCount, sourceId);
|
return new MagmaStormTag(turnCount, sourceId);
|
||||||
case BattlerTagType.THUNDER_CAGE:
|
case BattlerTagType.THUNDER_CAGE:
|
||||||
return new ThunderCageTag(turnCount, sourceId);
|
return new ThunderCageTag(turnCount, sourceId);
|
||||||
|
case BattlerTagType.INFESTATION:
|
||||||
|
return new InfestationTag(turnCount, sourceId);
|
||||||
case BattlerTagType.PROTECTED:
|
case BattlerTagType.PROTECTED:
|
||||||
return new ProtectedTag(sourceMove);
|
return new ProtectedTag(sourceMove);
|
||||||
case BattlerTagType.SPIKY_SHIELD:
|
case BattlerTagType.SPIKY_SHIELD:
|
||||||
@ -1081,7 +1097,7 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc
|
|||||||
case BattlerTagType.HIDDEN:
|
case BattlerTagType.HIDDEN:
|
||||||
return new HideSpriteTag(tagType, turnCount, sourceMove);
|
return new HideSpriteTag(tagType, turnCount, sourceMove);
|
||||||
case BattlerTagType.FIRE_BOOST:
|
case BattlerTagType.FIRE_BOOST:
|
||||||
return new TypeBoostTag(tagType, sourceMove, Type.FIRE);
|
return new TypeBoostTag(tagType, sourceMove, Type.FIRE, 1.5, false);
|
||||||
case BattlerTagType.CRIT_BOOST:
|
case BattlerTagType.CRIT_BOOST:
|
||||||
return new CritBoostTag(tagType, sourceMove);
|
return new CritBoostTag(tagType, sourceMove);
|
||||||
case BattlerTagType.ALWAYS_CRIT:
|
case BattlerTagType.ALWAYS_CRIT:
|
||||||
@ -1098,6 +1114,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc
|
|||||||
return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount - 1, sourceMove);
|
return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount - 1, sourceMove);
|
||||||
case BattlerTagType.SALT_CURED:
|
case BattlerTagType.SALT_CURED:
|
||||||
return new SaltCuredTag(sourceId);
|
return new SaltCuredTag(sourceId);
|
||||||
|
case BattlerTagType.CHARGED:
|
||||||
|
return new TypeBoostTag(tagType, sourceMove, Type.ELECTRIC, 2, true);
|
||||||
case BattlerTagType.NONE:
|
case BattlerTagType.NONE:
|
||||||
default:
|
default:
|
||||||
return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId);
|
return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId);
|
||||||
|
@ -4144,7 +4144,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
|
|||||||
],
|
],
|
||||||
[ Species.MIME_JR, Type.PSYCHIC, Type.FAIRY, [ ]
|
[ Species.MIME_JR, Type.PSYCHIC, Type.FAIRY, [ ]
|
||||||
],
|
],
|
||||||
[ Species.HAPPINY, Type.NORMAL, -1, []
|
[ Species.HAPPINY, Type.NORMAL, -1, [ ]
|
||||||
],
|
],
|
||||||
[ Species.CHATOT, Type.NORMAL, Type.FLYING, [
|
[ Species.CHATOT, Type.NORMAL, Type.FLYING, [
|
||||||
[ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ]
|
[ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ]
|
||||||
@ -6057,7 +6057,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
|
|||||||
[ Biome.SEABED, BiomePoolTier.BOSS ]
|
[ Biome.SEABED, BiomePoolTier.BOSS ]
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[ Species.TOXEL, Type.ELECTRIC, Type.POISON, []
|
[ Species.TOXEL, Type.ELECTRIC, Type.POISON, [ ]
|
||||||
],
|
],
|
||||||
[ Species.TOXTRICITY, Type.ELECTRIC, Type.POISON, [
|
[ Species.TOXTRICITY, Type.ELECTRIC, Type.POISON, [
|
||||||
[ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ],
|
[ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ],
|
||||||
|
@ -26,7 +26,7 @@ export const speciesEggMoves = {
|
|||||||
[Species.MEOWTH]: [ Moves.COVET, Moves.HAPPY_HOUR, Moves.PARTING_SHOT, Moves.MAKE_IT_RAIN ],
|
[Species.MEOWTH]: [ Moves.COVET, Moves.HAPPY_HOUR, Moves.PARTING_SHOT, Moves.MAKE_IT_RAIN ],
|
||||||
[Species.PSYDUCK]: [ Moves.MYSTICAL_POWER, Moves.AQUA_STEP, Moves.PSYCHIC, Moves.MIND_BLOWN ],
|
[Species.PSYDUCK]: [ Moves.MYSTICAL_POWER, Moves.AQUA_STEP, Moves.PSYCHIC, Moves.MIND_BLOWN ],
|
||||||
[Species.MANKEY]: [ Moves.BEAT_UP, Moves.PLAY_ROUGH, Moves.TAUNT, Moves.CLOSE_COMBAT ],
|
[Species.MANKEY]: [ Moves.BEAT_UP, Moves.PLAY_ROUGH, Moves.TAUNT, Moves.CLOSE_COMBAT ],
|
||||||
[Species.GROWLITHE]: [ Moves.THUNDER_FANG, Moves.HYPER_VOICE, Moves.NOBLE_ROAR, Moves.RAGING_FURY ],
|
[Species.GROWLITHE]: [ Moves.TRAILBLAZE, Moves.U_TURN, Moves.MORNING_SUN, Moves.V_CREATE ],
|
||||||
[Species.POLIWAG]: [ Moves.BOUNCY_BUBBLE, Moves.AURORA_BEAM, Moves.ZEN_HEADBUTT, Moves.SURGING_STRIKES ],
|
[Species.POLIWAG]: [ Moves.BOUNCY_BUBBLE, Moves.AURORA_BEAM, Moves.ZEN_HEADBUTT, Moves.SURGING_STRIKES ],
|
||||||
[Species.ABRA]: [ Moves.MYSTICAL_FIRE, Moves.HEX, Moves.MAGICAL_LEAF, Moves.MYSTICAL_POWER ],
|
[Species.ABRA]: [ Moves.MYSTICAL_FIRE, Moves.HEX, Moves.MAGICAL_LEAF, Moves.MYSTICAL_POWER ],
|
||||||
[Species.MACHOP]: [ Moves.BULLET_PUNCH, Moves.KNOCK_OFF, Moves.COACHING, Moves.CLOSE_COMBAT ],
|
[Species.MACHOP]: [ Moves.BULLET_PUNCH, Moves.KNOCK_OFF, Moves.COACHING, Moves.CLOSE_COMBAT ],
|
||||||
@ -41,7 +41,7 @@ export const speciesEggMoves = {
|
|||||||
[Species.SEEL]: [ Moves.FREEZE_DRY, Moves.CHILLING_WATER, Moves.ENCORE, Moves.RECOVER ],
|
[Species.SEEL]: [ Moves.FREEZE_DRY, Moves.CHILLING_WATER, Moves.ENCORE, Moves.RECOVER ],
|
||||||
[Species.GRIMER]: [ Moves.SHADOW_SNEAK, Moves.CURSE, Moves.CORROSIVE_GAS, Moves.PAIN_SPLIT ],
|
[Species.GRIMER]: [ Moves.SHADOW_SNEAK, Moves.CURSE, Moves.CORROSIVE_GAS, Moves.PAIN_SPLIT ],
|
||||||
[Species.SHELLDER]: [ Moves.BODY_PRESS, Moves.WATER_SHURIKEN, Moves.BANEFUL_BUNKER, Moves.RECOVER ],
|
[Species.SHELLDER]: [ Moves.BODY_PRESS, Moves.WATER_SHURIKEN, Moves.BANEFUL_BUNKER, Moves.RECOVER ],
|
||||||
[Species.GASTLY]: [ Moves.CLEAR_SMOG, Moves.THIEF, Moves.NASTY_PLOT, Moves.SPECTRAL_THIEF ],
|
[Species.GASTLY]: [ Moves.CLEAR_SMOG, Moves.NIGHT_DAZE, Moves.NASTY_PLOT, Moves.SPECTRAL_THIEF ],
|
||||||
[Species.ONIX]: [ Moves.SHORE_UP, Moves.DRAGON_TAIL, Moves.HEAD_SMASH, Moves.BODY_PRESS ],
|
[Species.ONIX]: [ Moves.SHORE_UP, Moves.DRAGON_TAIL, Moves.HEAD_SMASH, Moves.BODY_PRESS ],
|
||||||
[Species.DROWZEE]: [ Moves.DREAM_EATER, Moves.METRONOME, Moves.NIGHTMARE, Moves.SYNCHRONOISE ],
|
[Species.DROWZEE]: [ Moves.DREAM_EATER, Moves.METRONOME, Moves.NIGHTMARE, Moves.SYNCHRONOISE ],
|
||||||
[Species.KRABBY]: [ Moves.CRUSH_GRIP, Moves.CEASELESS_EDGE, Moves.SHORE_UP, Moves.SHELL_SMASH ],
|
[Species.KRABBY]: [ Moves.CRUSH_GRIP, Moves.CEASELESS_EDGE, Moves.SHORE_UP, Moves.SHELL_SMASH ],
|
||||||
@ -72,7 +72,7 @@ export const speciesEggMoves = {
|
|||||||
[Species.DRATINI]: [ Moves.SCALE_SHOT, Moves.AQUA_JET, Moves.WHIRLWIND, Moves.SHED_TAIL ],
|
[Species.DRATINI]: [ Moves.SCALE_SHOT, Moves.AQUA_JET, Moves.WHIRLWIND, Moves.SHED_TAIL ],
|
||||||
[Species.MEWTWO]: [ Moves.PSYBLADE, Moves.POLTERGEIST, Moves.ARMOR_CANNON, Moves.PSYCHO_BOOST ],
|
[Species.MEWTWO]: [ Moves.PSYBLADE, Moves.POLTERGEIST, Moves.ARMOR_CANNON, Moves.PSYCHO_BOOST ],
|
||||||
[Species.MEW]: [ Moves.PSYSTRIKE, Moves.DECORATE, Moves.REVIVAL_BLESSING, Moves.SKETCH ],
|
[Species.MEW]: [ Moves.PSYSTRIKE, Moves.DECORATE, Moves.REVIVAL_BLESSING, Moves.SKETCH ],
|
||||||
[Species.CHIKORITA]: [ Moves.ROCK_SLIDE, Moves.LUNGE, Moves.DRAGON_DANCE, Moves.SAPPY_SEED ],
|
[Species.CHIKORITA]: [ Moves.ROCK_SLIDE, Moves.PLAY_ROUGH, Moves.DRAGON_DANCE, Moves.SAPPY_SEED ],
|
||||||
[Species.CYNDAQUIL]: [ Moves.EXTRASENSORY, Moves.SCORCHING_SANDS, Moves.FIERY_DANCE, Moves.NASTY_PLOT ],
|
[Species.CYNDAQUIL]: [ Moves.EXTRASENSORY, Moves.SCORCHING_SANDS, Moves.FIERY_DANCE, Moves.NASTY_PLOT ],
|
||||||
[Species.TOTODILE]: [ Moves.AQUA_JET, Moves.DRAGON_DANCE, Moves.ICE_PUNCH, Moves.WAVE_CRASH ],
|
[Species.TOTODILE]: [ Moves.AQUA_JET, Moves.DRAGON_DANCE, Moves.ICE_PUNCH, Moves.WAVE_CRASH ],
|
||||||
[Species.SENTRET]: [ Moves.TIDY_UP, Moves.TAIL_SLAP, Moves.ENCORE, Moves.EXTREME_SPEED ],
|
[Species.SENTRET]: [ Moves.TIDY_UP, Moves.TAIL_SLAP, Moves.ENCORE, Moves.EXTREME_SPEED ],
|
||||||
@ -149,7 +149,7 @@ export const speciesEggMoves = {
|
|||||||
[Species.MAWILE]: [ Moves.SPIRIT_BREAK, Moves.JAW_LOCK, Moves.HYPER_FANG, Moves.HARD_PRESS ],
|
[Species.MAWILE]: [ Moves.SPIRIT_BREAK, Moves.JAW_LOCK, Moves.HYPER_FANG, Moves.HARD_PRESS ],
|
||||||
[Species.ARON]: [ Moves.HEAD_SMASH, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.BEHEMOTH_BASH ],
|
[Species.ARON]: [ Moves.HEAD_SMASH, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.BEHEMOTH_BASH ],
|
||||||
[Species.MEDITITE]: [ Moves.TRAILBLAZE, Moves.FAKE_OUT, Moves.BULLET_PUNCH, Moves.PSYBLADE ],
|
[Species.MEDITITE]: [ Moves.TRAILBLAZE, Moves.FAKE_OUT, Moves.BULLET_PUNCH, Moves.PSYBLADE ],
|
||||||
[Species.ELECTRIKE]: [ Moves.NUZZLE, Moves.JAW_LOCK, Moves.FLAME_CHARGE, Moves.WILDBOLT_STORM ],
|
[Species.ELECTRIKE]: [ Moves.NUZZLE, Moves.TEMPER_FLARE, Moves.TRAILBLAZE, Moves.WILDBOLT_STORM ],
|
||||||
[Species.PLUSLE]: [ Moves.FLAMETHROWER, Moves.PARABOLIC_CHARGE, Moves.ALLURING_VOICE, Moves.TAIL_GLOW ],
|
[Species.PLUSLE]: [ Moves.FLAMETHROWER, Moves.PARABOLIC_CHARGE, Moves.ALLURING_VOICE, Moves.TAIL_GLOW ],
|
||||||
[Species.MINUN]: [ Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE, Moves.ALLURING_VOICE, Moves.TAIL_GLOW ],
|
[Species.MINUN]: [ Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE, Moves.ALLURING_VOICE, Moves.TAIL_GLOW ],
|
||||||
[Species.VOLBEAT]: [ Moves.FLAME_CHARGE, Moves.LUNGE, Moves.ACROBATICS, Moves.VICTORY_DANCE ],
|
[Species.VOLBEAT]: [ Moves.FLAME_CHARGE, Moves.LUNGE, Moves.ACROBATICS, Moves.VICTORY_DANCE ],
|
||||||
@ -198,66 +198,66 @@ export const speciesEggMoves = {
|
|||||||
[Species.RAYQUAZA]: [ Moves.OBLIVION_WING, Moves.DRAGON_DARTS, Moves.SUPERCELL_SLAM, Moves.V_CREATE ],
|
[Species.RAYQUAZA]: [ Moves.OBLIVION_WING, Moves.DRAGON_DARTS, Moves.SUPERCELL_SLAM, Moves.V_CREATE ],
|
||||||
[Species.JIRACHI]: [ Moves.IRON_HEAD, Moves.TRI_ATTACK, Moves.EERIE_SPELL, Moves.TAKE_HEART ],
|
[Species.JIRACHI]: [ Moves.IRON_HEAD, Moves.TRI_ATTACK, Moves.EERIE_SPELL, Moves.TAKE_HEART ],
|
||||||
[Species.DEOXYS]: [ Moves.CLOSE_COMBAT, Moves.METEOR_BEAM, Moves.NIGHT_DAZE, Moves.PHOTON_GEYSER ],
|
[Species.DEOXYS]: [ Moves.CLOSE_COMBAT, Moves.METEOR_BEAM, Moves.NIGHT_DAZE, Moves.PHOTON_GEYSER ],
|
||||||
[Species.TURTWIG]: [ Moves.HEADLONG_RUSH, Moves.SHELTER, Moves.BODY_PRESS, Moves.FRENZY_PLANT ],
|
[Species.TURTWIG]: [ Moves.SHELL_SMASH, Moves.SHELTER, Moves.BODY_PRESS, Moves.SAPPY_SEED ],
|
||||||
[Species.CHIMCHAR]: [ Moves.RAGING_FURY, Moves.BURN_UP, Moves.WORK_UP, Moves.WICKED_BLOW ],
|
[Species.CHIMCHAR]: [ Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.ICE_PUNCH, Moves.SACRED_FIRE ],
|
||||||
[Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.FLIP_TURN, Moves.NOBLE_ROAR, Moves.SUNSTEEL_STRIKE ],
|
[Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.FLASH_CANNON, Moves.ROOST, Moves.STEAM_ERUPTION ],
|
||||||
[Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.OUTRAGE, Moves.FLAME_CHARGE, Moves.COLLISION_COURSE ],
|
[Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.HIGH_JUMP_KICK ],
|
||||||
[Species.BIDOOF]: [ Moves.SUPER_FANG, Moves.LIQUIDATION, Moves.BODY_PRESS, Moves.NO_RETREAT ],
|
[Species.BIDOOF]: [ Moves.EXTREME_SPEED, Moves.NO_RETREAT, Moves.BODY_PRESS, Moves.SURGING_STRIKES ],
|
||||||
[Species.KRICKETOT]: [ Moves.BOOMBURST, Moves.ALLURING_VOICE, Moves.SPARKLING_ARIA, Moves.QUIVER_DANCE ],
|
[Species.KRICKETOT]: [ Moves.BONEMERANG, Moves.ROOST, Moves.ROCK_BLAST, Moves.VICTORY_DANCE ],
|
||||||
[Species.SHINX]: [ Moves.PSYCHIC_FANGS, Moves.JAW_LOCK, Moves.FACADE, Moves.VOLT_TACKLE ],
|
[Species.SHINX]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.FACADE, Moves.BOLT_STRIKE ],
|
||||||
[Species.BUDEW]: [ Moves.FLORAL_HEALING, Moves.ACID_SPRAY, Moves.SPORE, Moves.SEED_FLARE ],
|
[Species.BUDEW]: [ Moves.PARTING_SHOT, Moves.SPIKES, Moves.SPORE, Moves.MALIGNANT_CHAIN ],
|
||||||
[Species.CRANIDOS]: [ Moves.STONE_AXE, Moves.DRAGON_RUSH, Moves.SUPERPOWER, Moves.ROCK_WRECKER ],
|
[Species.CRANIDOS]: [ Moves.STONE_AXE, Moves.ACCELEROCK, Moves.HEADLONG_RUSH, Moves.DRAGON_DANCE ],
|
||||||
[Species.SHIELDON]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BASH ],
|
[Species.SHIELDON]: [ Moves.PAIN_SPLIT, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.DIAMOND_STORM ],
|
||||||
[Species.BURMY]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.RECOVER, Moves.SHELTER ],
|
[Species.BURMY]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.RECOVER, Moves.DEFEND_ORDER ],
|
||||||
[Species.COMBEE]: [ Moves.TWINEEDLE, Moves.AIR_SLASH, Moves.KINGS_SHIELD, Moves.SPORE ],
|
[Species.COMBEE]: [ Moves.SPORE, Moves.MYSTICAL_FIRE, Moves.KINGS_SHIELD, Moves.QUIVER_DANCE ],
|
||||||
[Species.PACHIRISU]: [ Moves.SUPER_FANG, Moves.EXTREME_SPEED, Moves.SUPERPOWER, Moves.VOLT_TACKLE ],
|
[Species.PACHIRISU]: [ Moves.BADDY_BAD, Moves.BUZZY_BUZZ, Moves.U_TURN, Moves.SIZZLY_SLIDE ],
|
||||||
[Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.ICE_PUNCH, Moves.HIGH_HORSEPOWER, Moves.SURGING_STRIKES ],
|
[Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.TRIPLE_AXEL, Moves.THUNDER_PUNCH, Moves.SURGING_STRIKES ],
|
||||||
[Species.CHERUBI]: [ Moves.FLOWER_SHIELD, Moves.GRASSY_TERRAIN, Moves.GRASSY_GLIDE, Moves.SPORE ],
|
[Species.CHERUBI]: [ Moves.SPORE, Moves.STRENGTH_SAP, Moves.APPLE_ACID, Moves.FIERY_DANCE ],
|
||||||
[Species.SHELLOS]: [ Moves.LIFE_DEW, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.FREEZY_FROST ],
|
[Species.SHELLOS]: [ Moves.SHORE_UP, Moves.SPIKES, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ],
|
||||||
[Species.DRIFLOON]: [ Moves.THIEF, Moves.ACUPRESSURE, Moves.WILL_O_WISP, Moves.HURRICANE ],
|
[Species.DRIFLOON]: [ Moves.WILL_O_WISP, Moves.SHADOW_BONE, Moves.CALM_MIND, Moves.OBLIVION_WING ],
|
||||||
[Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.TROP_KICK, Moves.FAKE_OUT, Moves.SWORDS_DANCE ],
|
[Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.MULTI_ATTACK ],
|
||||||
[Species.GLAMEOW]: [ Moves.U_TURN, Moves.STOMPING_TANTRUM, Moves.COVET, Moves.WICKED_BLOW ],
|
[Species.GLAMEOW]: [ Moves.U_TURN, Moves.STOMPING_TANTRUM, Moves.BULK_UP, Moves.RAGING_BULL ],
|
||||||
[Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.BOOMBURST, Moves.TORCH_SONG, Moves.EERIE_SPELL ],
|
[Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.COSMIC_POWER, Moves.TORCH_SONG, Moves.LUMINA_CRASH ],
|
||||||
[Species.STUNKY]: [ Moves.CORROSIVE_GAS, Moves.BURNING_JEALOUSY, Moves.SUPER_FANG, Moves.WICKED_BLOW ],
|
[Species.STUNKY]: [ Moves.SPIKES, Moves.KNOCK_OFF, Moves.RECOVER, Moves.DIRE_CLAW ],
|
||||||
[Species.BRONZOR]: [ Moves.PSYSHIELD_BASH, Moves.COSMIC_POWER, Moves.MIRROR_COAT, Moves.TACHYON_CUTTER ],
|
[Species.BRONZOR]: [ Moves.RECOVER, Moves.COSMIC_POWER, Moves.SPIKES, Moves.TACHYON_CUTTER ],
|
||||||
[Species.BONSLY]: [ Moves.INGRAIN, Moves.GRASSY_GLIDE, Moves.EXTREME_SPEED, Moves.HEAD_SMASH ],
|
[Species.BONSLY]: [ Moves.STONE_AXE, Moves.LEAF_BLADE, Moves.STRENGTH_SAP, Moves.HEAD_SMASH ],
|
||||||
[Species.MIME_JR]: [ Moves.CALM_MIND, Moves.ATTRACT, Moves.TAUNT, Moves.GLITZY_GLOW ],
|
[Species.MIME_JR]: [ Moves.CALM_MIND, Moves.MOONBLAST, Moves.WILL_O_WISP, Moves.TWIN_BEAM ],
|
||||||
[Species.HAPPINY]: [ Moves.HAPPY_HOUR, Moves.SEISMIC_TOSS, Moves.STEALTH_ROCK, Moves.INSTRUCT ],
|
[Species.HAPPINY]: [ Moves.IRON_DEFENSE, Moves.SEISMIC_TOSS, Moves.STEALTH_ROCK, Moves.SIZZLY_SLIDE ],
|
||||||
[Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.BOOMBURST, Moves.TAUNT, Moves.TORCH_SONG ],
|
[Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.TORCH_SONG, Moves.BATON_PASS, Moves.BOOMBURST ],
|
||||||
[Species.SPIRITOMB]: [ Moves.POLTERGEIST, Moves.PAIN_SPLIT, Moves.BURNING_JEALOUSY, Moves.MAKE_IT_RAIN ],
|
[Species.SPIRITOMB]: [ Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.RECOVER, Moves.POLTERGEIST ],
|
||||||
[Species.GIBLE]: [ Moves.DRAGON_HAMMER, Moves.AQUA_JET, Moves.POISON_FANG, Moves.GLAIVE_RUSH ],
|
[Species.GIBLE]: [ Moves.DRAGON_HAMMER, Moves.LANDS_WRATH, Moves.SHORE_UP, Moves.BITTER_BLADE ],
|
||||||
[Species.MUNCHLAX]: [ Moves.TEATIME, Moves.BODY_PRESS, Moves.HEAVY_SLAM, Moves.SLACK_OFF ],
|
[Species.MUNCHLAX]: [ Moves.IRON_DEFENSE, Moves.BODY_PRESS, Moves.HEAVY_SLAM, Moves.SLACK_OFF ],
|
||||||
[Species.RIOLU]: [ Moves.UPPER_HAND, Moves.ARM_THRUST, Moves.ICE_PUNCH, Moves.PLAY_ROUGH ],
|
[Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.BULLET_PUNCH, Moves.TRIPLE_AXEL, Moves.DOUBLE_IRON_BASH ],
|
||||||
[Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.HARD_PRESS, Moves.SCORCHING_SANDS, Moves.LANDS_WRATH ],
|
[Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.STONE_AXE, Moves.SALT_CURE, Moves.IRON_DEFENSE ],
|
||||||
[Species.SKORUPI]: [ Moves.COIL, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.WICKED_BLOW ],
|
[Species.SKORUPI]: [ Moves.CEASELESS_EDGE, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.WICKED_BLOW ],
|
||||||
[Species.CROAGUNK]: [ Moves.GUNK_SHOT, Moves.LASH_OUT, Moves.MACH_PUNCH, Moves.SWORDS_DANCE ],
|
[Species.CROAGUNK]: [ Moves.DIRE_CLAW, Moves.ICE_PUNCH, Moves.THUNDEROUS_KICK, Moves.VICTORY_DANCE ],
|
||||||
[Species.CARNIVINE]: [ Moves.SNAP_TRAP, Moves.JAW_LOCK, Moves.RAGE_POWDER, Moves.FLOWER_TRICK ],
|
[Species.CARNIVINE]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.MIGHTY_CLEAVE, Moves.FLOWER_TRICK ],
|
||||||
[Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.MOONBLAST, Moves.MOONGEIST_BEAM ],
|
[Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ],
|
||||||
[Species.MANTYKE]: [ Moves.BOUNCY_BUBBLE, Moves.ICY_WIND, Moves.TAILWIND, Moves.RECOVER ],
|
[Species.MANTYKE]: [ Moves.BOUNCY_BUBBLE, Moves.SPIKES, Moves.ROOST, Moves.STEAM_ERUPTION ],
|
||||||
[Species.SNOVER]: [ Moves.DRUM_BEATING, Moves.ICE_HAMMER, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ],
|
[Species.SNOVER]: [ Moves.STOMPING_TANTRUM, Moves.ICE_HAMMER, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ],
|
||||||
[Species.ROTOM]: [ Moves.FREEZE_DRY, Moves.FLAME_BURST, Moves.WATER_PULSE, Moves.AIR_SLASH ],
|
[Species.ROTOM]: [ Moves.RECOVER, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.RISING_VOLTAGE ],
|
||||||
[Species.UXIE]: [ Moves.REVELATION_DANCE, Moves.TEETER_DANCE, Moves.DARK_PULSE, Moves.PRISMATIC_LASER ],
|
[Species.UXIE]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.RECOVER, Moves.LUMINA_CRASH ],
|
||||||
[Species.MESPRIT]: [ Moves.REVELATION_DANCE, Moves.LUNAR_DANCE, Moves.MOONBLAST, Moves.PRISMATIC_LASER ],
|
[Species.MESPRIT]: [ Moves.QUIVER_DANCE, Moves.AURA_SPHERE, Moves.RECOVER, Moves.LUMINA_CRASH ],
|
||||||
[Species.AZELF]: [ Moves.REVELATION_DANCE, Moves.DRAGON_DANCE, Moves.PHANTOM_FORCE, Moves.PRISMATIC_LASER ],
|
[Species.AZELF]: [ Moves.PHOTON_GEYSER, Moves.DRAGON_DANCE, Moves.RECOVER, Moves.LUMINA_CRASH ],
|
||||||
[Species.DIALGA]: [ Moves.SPACIAL_REND, Moves.EXTREME_SPEED, Moves.GEAR_GRIND, Moves.FREEZING_GLARE ],
|
[Species.DIALGA]: [ Moves.CORE_ENFORCER, Moves.CALM_MIND, Moves.RECOVER, Moves.MAKE_IT_RAIN ],
|
||||||
[Species.PALKIA]: [ Moves.ROAR_OF_TIME, Moves.LIQUIDATION, Moves.AQUA_CUTTER, Moves.DRAGON_ENERGY ],
|
[Species.PALKIA]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.WATER_SPOUT, Moves.DRAGON_ENERGY ],
|
||||||
[Species.HEATRAN]: [ Moves.FIRE_LASH, Moves.HEAVY_SLAM, Moves.FIERY_DANCE, Moves.BEHEMOTH_BASH ],
|
[Species.HEATRAN]: [ Moves.TORCH_SONG, Moves.SPIKES, Moves.FLASH_CANNON, Moves.RECOVER ],
|
||||||
[Species.REGIGIGAS]: [ Moves.MIGHTY_CLEAVE, Moves.PRECIPICE_BLADES, Moves.EXTREME_SPEED, Moves.SKILL_SWAP ],
|
[Species.REGIGIGAS]: [ Moves.MIGHTY_CLEAVE, Moves.SHORE_UP, Moves.EXTREME_SPEED, Moves.SKILL_SWAP ],
|
||||||
[Species.GIRATINA]: [ Moves.DRAGON_HAMMER, Moves.SPACIAL_REND, Moves.SPIRIT_SHACKLE, Moves.ASTRAL_BARRAGE ],
|
[Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.ASTRAL_BARRAGE ],
|
||||||
[Species.CRESSELIA]: [ Moves.MIST_BALL, Moves.LUMINA_CRASH, Moves.INFERNAL_PARADE, Moves.HYPERSPACE_HOLE ],
|
[Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.SECRET_SWORD, Moves.INFERNAL_PARADE, Moves.LUMINA_CRASH ],
|
||||||
[Species.PHIONE]: [ Moves.SPARKLING_ARIA, Moves.MAKE_IT_RAIN, Moves.TAIL_GLOW, Moves.LIGHT_OF_RUIN ],
|
[Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ],
|
||||||
[Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.RECOVER, Moves.MOONBLAST, Moves.QUIVER_DANCE ],
|
[Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ],
|
||||||
[Species.DARKRAI]: [ Moves.NIGHT_DAZE, Moves.KNOCK_OFF, Moves.BITTER_MALICE, Moves.SHADOW_FORCE ],
|
[Species.DARKRAI]: [ Moves.FIERY_WRATH, Moves.MOONBLAST, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN ],
|
||||||
[Species.SHAYMIN]: [ Moves.FLOWER_SHIELD, Moves.FLOWER_TRICK, Moves.CHLOROBLAST, Moves.FLEUR_CANNON ],
|
[Species.SHAYMIN]: [ Moves.SPRINGTIDE_STORM, Moves.HEAT_WAVE, Moves.BLEAKWIND_STORM, Moves.MATCHA_GOTCHA ],
|
||||||
[Species.ARCEUS]: [ Moves.SKETCH, Moves.ROAR_OF_TIME, Moves.SPACIAL_REND, Moves.GEOMANCY ],
|
[Species.ARCEUS]: [ Moves.QUIVER_DANCE, Moves.SPIRIT_SHACKLE, Moves.VICTORY_DANCE, Moves.COLLISION_COURSE ],
|
||||||
[Species.VICTINI]: [ Moves.VICTORY_DANCE, Moves.FUSION_BOLT, Moves.GLACIATE, Moves.BLUE_FLARE ],
|
[Species.VICTINI]: [ Moves.VICTORY_DANCE, Moves.FUSION_BOLT, Moves.GLACIATE, Moves.BLUE_FLARE ],
|
||||||
[Species.SNIVY]: [ Moves.SYNTHESIS, Moves.SAPPY_SEED, Moves.POWER_GEM, Moves.DRACO_METEOR ],
|
[Species.SNIVY]: [ Moves.SYNTHESIS, Moves.SAPPY_SEED, Moves.POWER_GEM, Moves.DRACO_METEOR ],
|
||||||
[Species.TEPIG]: [ Moves.SUCKER_PUNCH, Moves.SLACK_OFF, Moves.MACH_PUNCH, Moves.VICTORY_DANCE ],
|
[Species.TEPIG]: [ Moves.SUCKER_PUNCH, Moves.SLACK_OFF, Moves.MACH_PUNCH, Moves.VICTORY_DANCE ],
|
||||||
[Species.OSHAWOTT]: [ Moves.SECRET_SWORD, Moves.AQUA_CUTTER, Moves.NASTY_PLOT, Moves.BEHEMOTH_BLADE ],
|
[Species.OSHAWOTT]: [ Moves.SECRET_SWORD, Moves.AQUA_CUTTER, Moves.NASTY_PLOT, Moves.BEHEMOTH_BLADE ],
|
||||||
[Species.PATRAT]: [ Moves.COVET, Moves.EXTREME_SPEED, Moves.ACUPRESSURE, Moves.LAST_RESORT ],
|
[Species.PATRAT]: [ Moves.COVET, Moves.EXTREME_SPEED, Moves.ACUPRESSURE, Moves.LAST_RESORT ],
|
||||||
[Species.LILLIPUP]: [ Moves.COVET, Moves.LAST_RESPECTS, Moves.HIGH_HORSEPOWER, Moves.NO_RETREAT ],
|
[Species.LILLIPUP]: [ Moves.COVET, Moves.LAST_RESPECTS, Moves.HIGH_HORSEPOWER, Moves.NO_RETREAT ],
|
||||||
[Species.PURRLOIN]: [ Moves.THIEF, Moves.SWORDS_DANCE, Moves.PARTING_SHOT, Moves.WICKED_BLOW ],
|
[Species.PURRLOIN]: [ Moves.PSYCHIC_FANGS, Moves.SWORDS_DANCE, Moves.PARTING_SHOT, Moves.WICKED_BLOW ],
|
||||||
[Species.PANSAGE]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.STRENGTH_SAP, Moves.FRENZY_PLANT ],
|
[Species.PANSAGE]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.TRAILBLAZE, Moves.FRENZY_PLANT ],
|
||||||
[Species.PANSEAR]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.SCORCHING_SANDS, Moves.BLAST_BURN ],
|
[Species.PANSEAR]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.SCORCHING_SANDS, Moves.BLAST_BURN ],
|
||||||
[Species.PANPOUR]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.FREEZE_DRY, Moves.HYDRO_CANNON ],
|
[Species.PANPOUR]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.FREEZE_DRY, Moves.HYDRO_CANNON ],
|
||||||
[Species.MUNNA]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.MYSTICAL_POWER ],
|
[Species.MUNNA]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.MYSTICAL_POWER ],
|
||||||
@ -312,7 +312,7 @@ export const speciesEggMoves = {
|
|||||||
[Species.MIENFOO]: [ Moves.TIDY_UP, Moves.ICE_SPINNER, Moves.SUPERCELL_SLAM, Moves.BRAVE_BIRD ],
|
[Species.MIENFOO]: [ Moves.TIDY_UP, Moves.ICE_SPINNER, Moves.SUPERCELL_SLAM, Moves.BRAVE_BIRD ],
|
||||||
[Species.DRUDDIGON]: [ Moves.SPIKY_SHIELD, Moves.STOMPING_TANTRUM, Moves.CLANGOROUS_SOUL, Moves.DIAMOND_STORM ],
|
[Species.DRUDDIGON]: [ Moves.SPIKY_SHIELD, Moves.STOMPING_TANTRUM, Moves.CLANGOROUS_SOUL, Moves.DIAMOND_STORM ],
|
||||||
[Species.GOLETT]: [ Moves.BULK_UP, Moves.RAGE_FIST, Moves.HEADLONG_RUSH, Moves.DOUBLE_IRON_BASH ],
|
[Species.GOLETT]: [ Moves.BULK_UP, Moves.RAGE_FIST, Moves.HEADLONG_RUSH, Moves.DOUBLE_IRON_BASH ],
|
||||||
[Species.PAWNIARD]: [ Moves.ATTACK_ORDER, Moves.CEASELESS_EDGE, Moves.AQUA_CUTTER, Moves.PSYBLADE ],
|
[Species.PAWNIARD]: [ Moves.SUCKER_PUNCH, Moves.CEASELESS_EDGE, Moves.AQUA_CUTTER, Moves.PSYBLADE ],
|
||||||
[Species.BOUFFALANT]: [ Moves.EARTHQUAKE, Moves.FLAME_CHARGE, Moves.IRON_HEAD, Moves.RAGING_BULL ],
|
[Species.BOUFFALANT]: [ Moves.EARTHQUAKE, Moves.FLAME_CHARGE, Moves.IRON_HEAD, Moves.RAGING_BULL ],
|
||||||
[Species.RUFFLET]: [ Moves.FLOATY_FALL, Moves.DAZZLING_GLEAM, Moves.HEAT_WAVE, Moves.BOLT_BEAK ],
|
[Species.RUFFLET]: [ Moves.FLOATY_FALL, Moves.DAZZLING_GLEAM, Moves.HEAT_WAVE, Moves.BOLT_BEAK ],
|
||||||
[Species.VULLABY]: [ Moves.RUINATION, Moves.BODY_PRESS, Moves.ROOST, Moves.BADDY_BAD ],
|
[Species.VULLABY]: [ Moves.RUINATION, Moves.BODY_PRESS, Moves.ROOST, Moves.BADDY_BAD ],
|
||||||
|
@ -22,6 +22,7 @@ export enum BattlerTagType {
|
|||||||
SAND_TOMB = "SAND_TOMB",
|
SAND_TOMB = "SAND_TOMB",
|
||||||
MAGMA_STORM = "MAGMA_STORM",
|
MAGMA_STORM = "MAGMA_STORM",
|
||||||
THUNDER_CAGE = "THUNDER_CAGE",
|
THUNDER_CAGE = "THUNDER_CAGE",
|
||||||
|
INFESTATION = "INFESTATION",
|
||||||
PROTECTED = "PROTECTED",
|
PROTECTED = "PROTECTED",
|
||||||
SPIKY_SHIELD = "SPIKY_SHIELD",
|
SPIKY_SHIELD = "SPIKY_SHIELD",
|
||||||
KINGS_SHIELD = "KINGS_SHIELD",
|
KINGS_SHIELD = "KINGS_SHIELD",
|
||||||
@ -47,6 +48,7 @@ export enum BattlerTagType {
|
|||||||
IGNORE_ACCURACY = "IGNORE_ACCURACY",
|
IGNORE_ACCURACY = "IGNORE_ACCURACY",
|
||||||
BYPASS_SLEEP = "BYPASS_SLEEP",
|
BYPASS_SLEEP = "BYPASS_SLEEP",
|
||||||
IGNORE_FLYING = "IGNORE_FLYING",
|
IGNORE_FLYING = "IGNORE_FLYING",
|
||||||
GROUNDED = "GROUNDED",
|
SALT_CURED = "SALT_CURED",
|
||||||
SALT_CURED = "SALT_CURED"
|
CHARGED = "CHARGED",
|
||||||
|
GROUNDED = "GROUNDED"
|
||||||
}
|
}
|
||||||
|
@ -565,6 +565,10 @@ export const pokemonFormChanges: PokemonFormChanges = {
|
|||||||
new SpeciesFormChange(Species.MINIOR, 'violet-meteor', 'violet', new SpeciesFormChangeManualTrigger(), true),
|
new SpeciesFormChange(Species.MINIOR, 'violet-meteor', 'violet', new SpeciesFormChangeManualTrigger(), true),
|
||||||
new SpeciesFormChange(Species.MINIOR, 'violet', 'violet-meteor', new SpeciesFormChangeManualTrigger(), true)
|
new SpeciesFormChange(Species.MINIOR, 'violet', 'violet-meteor', new SpeciesFormChangeManualTrigger(), true)
|
||||||
],
|
],
|
||||||
|
[Species.MIMIKYU]: [
|
||||||
|
new SpeciesFormChange(Species.MIMIKYU, 'disguised', 'busted', new SpeciesFormChangeManualTrigger(), true),
|
||||||
|
new SpeciesFormChange(Species.MIMIKYU, 'busted', 'disguised', new SpeciesFormChangeManualTrigger(), true)
|
||||||
|
],
|
||||||
[Species.NECROZMA]: [
|
[Species.NECROZMA]: [
|
||||||
new SpeciesFormChange(Species.NECROZMA, '', 'dawn-wings', new SpeciesFormChangeItemTrigger(FormChangeItem.N_LUNARIZER)),
|
new SpeciesFormChange(Species.NECROZMA, '', 'dawn-wings', new SpeciesFormChangeItemTrigger(FormChangeItem.N_LUNARIZER)),
|
||||||
new SpeciesFormChange(Species.NECROZMA, '', 'dusk-mane', new SpeciesFormChangeItemTrigger(FormChangeItem.N_SOLARIZER))
|
new SpeciesFormChange(Species.NECROZMA, '', 'dusk-mane', new SpeciesFormChangeItemTrigger(FormChangeItem.N_SOLARIZER))
|
||||||
|
@ -203,6 +203,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[Species.BEEDRILL]: [
|
[Species.BEEDRILL]: [
|
||||||
[ 0, Moves.TWINEEDLE ],
|
[ 0, Moves.TWINEEDLE ],
|
||||||
[ 1, Moves.FURY_ATTACK ],
|
[ 1, Moves.FURY_ATTACK ],
|
||||||
|
[ 11, Moves.FURY_CUTTER ],
|
||||||
[ 14, Moves.RAGE ],
|
[ 14, Moves.RAGE ],
|
||||||
[ 17, Moves.PURSUIT ],
|
[ 17, Moves.PURSUIT ],
|
||||||
[ 20, Moves.FOCUS_ENERGY ],
|
[ 20, Moves.FOCUS_ENERGY ],
|
||||||
@ -227,7 +228,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 33, Moves.WING_ATTACK ],
|
[ 33, Moves.WING_ATTACK ],
|
||||||
[ 37, Moves.ROOST ],
|
[ 37, Moves.ROOST ],
|
||||||
[ 41, Moves.TAILWIND ],
|
[ 41, Moves.TAILWIND ],
|
||||||
[ 45, Moves.MIRROR_MOVE ],
|
[ 45, Moves.AERIAL_ACE ],
|
||||||
[ 49, Moves.AIR_SLASH ],
|
[ 49, Moves.AIR_SLASH ],
|
||||||
[ 53, Moves.HURRICANE ],
|
[ 53, Moves.HURRICANE ],
|
||||||
],
|
],
|
||||||
@ -235,6 +236,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.GUST ],
|
[ 1, Moves.GUST ],
|
||||||
[ 1, Moves.SAND_ATTACK ],
|
[ 1, Moves.SAND_ATTACK ],
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
|
[ 5, Moves.SAND_ATTACK ],
|
||||||
|
[ 9, Moves.GUST ],
|
||||||
[ 13, Moves.QUICK_ATTACK ],
|
[ 13, Moves.QUICK_ATTACK ],
|
||||||
[ 17, Moves.WHIRLWIND ],
|
[ 17, Moves.WHIRLWIND ],
|
||||||
[ 22, Moves.TWISTER ],
|
[ 22, Moves.TWISTER ],
|
||||||
@ -243,7 +246,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 37, Moves.WING_ATTACK ],
|
[ 37, Moves.WING_ATTACK ],
|
||||||
[ 42, Moves.ROOST ],
|
[ 42, Moves.ROOST ],
|
||||||
[ 47, Moves.TAILWIND ],
|
[ 47, Moves.TAILWIND ],
|
||||||
[ 52, Moves.MIRROR_MOVE ],
|
[ 52, Moves.AERIAL_ACE ],
|
||||||
[ 57, Moves.AIR_SLASH ],
|
[ 57, Moves.AIR_SLASH ],
|
||||||
[ 62, Moves.HURRICANE ],
|
[ 62, Moves.HURRICANE ],
|
||||||
],
|
],
|
||||||
@ -253,6 +256,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
[ 1, Moves.QUICK_ATTACK ],
|
[ 1, Moves.QUICK_ATTACK ],
|
||||||
[ 1, Moves.HURRICANE ],
|
[ 1, Moves.HURRICANE ],
|
||||||
|
[ 5, Moves.SAND_ATTACK ],
|
||||||
|
[ 9, Moves.GUST ],
|
||||||
[ 17, Moves.WHIRLWIND ],
|
[ 17, Moves.WHIRLWIND ],
|
||||||
[ 22, Moves.TWISTER ],
|
[ 22, Moves.TWISTER ],
|
||||||
[ 27, Moves.FEATHER_DANCE ],
|
[ 27, Moves.FEATHER_DANCE ],
|
||||||
@ -260,8 +265,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 38, Moves.WING_ATTACK ],
|
[ 38, Moves.WING_ATTACK ],
|
||||||
[ 44, Moves.ROOST ],
|
[ 44, Moves.ROOST ],
|
||||||
[ 50, Moves.TAILWIND ],
|
[ 50, Moves.TAILWIND ],
|
||||||
[ 56, Moves.MIRROR_MOVE ],
|
[ 56, Moves.AERIAL_ACE ],
|
||||||
[ 62, Moves.AIR_SLASH ],
|
[ 62, Moves.AIR_SLASH ],
|
||||||
|
[ 68, Moves.HURRICANE ],
|
||||||
],
|
],
|
||||||
[Species.RATTATA]: [
|
[Species.RATTATA]: [
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
@ -269,8 +275,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 4, Moves.QUICK_ATTACK ],
|
[ 4, Moves.QUICK_ATTACK ],
|
||||||
[ 7, Moves.FOCUS_ENERGY ],
|
[ 7, Moves.FOCUS_ENERGY ],
|
||||||
[ 10, Moves.BITE ],
|
[ 10, Moves.BITE ],
|
||||||
[ 13, Moves.PURSUIT ],
|
[ 13, Moves.LASER_FOCUS ],
|
||||||
[ 16, Moves.HYPER_FANG ],
|
[ 16, Moves.TAKE_DOWN ],
|
||||||
[ 19, Moves.ASSURANCE ],
|
[ 19, Moves.ASSURANCE ],
|
||||||
[ 22, Moves.CRUNCH ],
|
[ 22, Moves.CRUNCH ],
|
||||||
[ 25, Moves.SUCKER_PUNCH ],
|
[ 25, Moves.SUCKER_PUNCH ],
|
||||||
@ -286,8 +292,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.QUICK_ATTACK ],
|
[ 1, Moves.QUICK_ATTACK ],
|
||||||
[ 1, Moves.FOCUS_ENERGY ],
|
[ 1, Moves.FOCUS_ENERGY ],
|
||||||
[ 10, Moves.BITE ],
|
[ 10, Moves.BITE ],
|
||||||
[ 13, Moves.PURSUIT ],
|
[ 13, Moves.LASER_FOCUS ],
|
||||||
[ 16, Moves.HYPER_FANG ],
|
[ 16, Moves.TAKE_DOWN ],
|
||||||
[ 19, Moves.ASSURANCE ],
|
[ 19, Moves.ASSURANCE ],
|
||||||
[ 24, Moves.CRUNCH ],
|
[ 24, Moves.CRUNCH ],
|
||||||
[ 29, Moves.SUCKER_PUNCH ],
|
[ 29, Moves.SUCKER_PUNCH ],
|
||||||
@ -299,11 +305,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
[ 1, Moves.PECK ],
|
[ 1, Moves.PECK ],
|
||||||
[ 4, Moves.LEER ],
|
[ 4, Moves.LEER ],
|
||||||
[ 8, Moves.PURSUIT ],
|
[ 8, Moves.ASSURANCE ],
|
||||||
[ 11, Moves.FURY_ATTACK ],
|
[ 11, Moves.FURY_ATTACK ],
|
||||||
[ 15, Moves.AERIAL_ACE ],
|
[ 15, Moves.AERIAL_ACE ],
|
||||||
[ 18, Moves.MIRROR_MOVE ],
|
[ 18, Moves.WING_ATTACK ],
|
||||||
[ 22, Moves.ASSURANCE ],
|
[ 22, Moves.TAKE_DOWN ],
|
||||||
[ 25, Moves.AGILITY ],
|
[ 25, Moves.AGILITY ],
|
||||||
[ 29, Moves.FOCUS_ENERGY ],
|
[ 29, Moves.FOCUS_ENERGY ],
|
||||||
[ 32, Moves.ROOST ],
|
[ 32, Moves.ROOST ],
|
||||||
@ -313,13 +319,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.LEER ],
|
[ 1, Moves.LEER ],
|
||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
[ 1, Moves.PECK ],
|
[ 1, Moves.PECK ],
|
||||||
[ 1, Moves.PURSUIT ],
|
[ 1, Moves.ASSURANCE ],
|
||||||
[ 1, Moves.PLUCK ],
|
[ 1, Moves.PLUCK ],
|
||||||
[ 1, Moves.DRILL_RUN ],
|
[ 1, Moves.DRILL_RUN ],
|
||||||
|
[ 4, Moves.LEER ],
|
||||||
|
[ 8, Moves.ASSURANCE ],
|
||||||
[ 11, Moves.FURY_ATTACK ],
|
[ 11, Moves.FURY_ATTACK ],
|
||||||
[ 15, Moves.AERIAL_ACE ],
|
[ 15, Moves.AERIAL_ACE ],
|
||||||
[ 18, Moves.MIRROR_MOVE ],
|
[ 18, Moves.WING_ATTACK ],
|
||||||
[ 23, Moves.ASSURANCE ],
|
[ 23, Moves.TAKE_DOWN ],
|
||||||
[ 27, Moves.AGILITY ],
|
[ 27, Moves.AGILITY ],
|
||||||
[ 32, Moves.FOCUS_ENERGY ],
|
[ 32, Moves.FOCUS_ENERGY ],
|
||||||
[ 36, Moves.ROOST ],
|
[ 36, Moves.ROOST ],
|
||||||
@ -483,6 +491,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
],
|
],
|
||||||
[Species.NIDOQUEEN]: [
|
[Species.NIDOQUEEN]: [
|
||||||
[ 0, Moves.SUPERPOWER ],
|
[ 0, Moves.SUPERPOWER ],
|
||||||
|
[ 1, Moves.SLUDGE_WAVE ],
|
||||||
[ 1, Moves.SCRATCH ],
|
[ 1, Moves.SCRATCH ],
|
||||||
[ 1, Moves.DOUBLE_KICK ],
|
[ 1, Moves.DOUBLE_KICK ],
|
||||||
[ 1, Moves.TAIL_WHIP ],
|
[ 1, Moves.TAIL_WHIP ],
|
||||||
@ -529,6 +538,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
],
|
],
|
||||||
[Species.NIDOKING]: [
|
[Species.NIDOKING]: [
|
||||||
[ 0, Moves.MEGAHORN ],
|
[ 0, Moves.MEGAHORN ],
|
||||||
|
[ 1, Moves.SLUDGE_WAVE ],
|
||||||
[ 1, Moves.DOUBLE_KICK ],
|
[ 1, Moves.DOUBLE_KICK ],
|
||||||
[ 1, Moves.HORN_ATTACK ],
|
[ 1, Moves.HORN_ATTACK ],
|
||||||
[ 1, Moves.FURY_ATTACK ],
|
[ 1, Moves.FURY_ATTACK ],
|
||||||
@ -740,6 +750,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.POISON_POWDER ],
|
[ 1, Moves.POISON_POWDER ],
|
||||||
[ 1, Moves.STUN_SPORE ],
|
[ 1, Moves.STUN_SPORE ],
|
||||||
[ 1, Moves.CROSS_POISON ],
|
[ 1, Moves.CROSS_POISON ],
|
||||||
|
[ 6, Moves.POISON_POWDER ],
|
||||||
|
[ 6, Moves.STUN_SPORE ],
|
||||||
|
[ 11, Moves.ABSORB ],
|
||||||
[ 17, Moves.FURY_CUTTER ],
|
[ 17, Moves.FURY_CUTTER ],
|
||||||
[ 22, Moves.SPORE ],
|
[ 22, Moves.SPORE ],
|
||||||
[ 29, Moves.SLASH ],
|
[ 29, Moves.SLASH ],
|
||||||
@ -1324,43 +1337,38 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
[ 1, Moves.PECK ],
|
[ 1, Moves.PECK ],
|
||||||
[ 5, Moves.QUICK_ATTACK ],
|
[ 5, Moves.QUICK_ATTACK ],
|
||||||
[ 8, Moves.RAGE ],
|
[ 9, Moves.FURY_ATTACK ],
|
||||||
[ 12, Moves.FURY_ATTACK ],
|
[ 14, Moves.PLUCK ],
|
||||||
[ 15, Moves.PURSUIT ],
|
[ 19, Moves.DOUBLE_HIT ],
|
||||||
[ 19, Moves.PLUCK ],
|
[ 23, Moves.AGILITY ],
|
||||||
[ 22, Moves.DOUBLE_HIT ],
|
[ 27, Moves.UPROAR ],
|
||||||
[ 26, Moves.AGILITY ],
|
[ 30, Moves.ACUPRESSURE ],
|
||||||
[ 29, Moves.UPROAR ],
|
[ 33, Moves.SWORDS_DANCE ],
|
||||||
[ 33, Moves.ACUPRESSURE ],
|
[ 36, Moves.DRILL_PECK ],
|
||||||
[ 36, Moves.SWORDS_DANCE ],
|
[ 39, Moves.ENDEAVOR ],
|
||||||
[ 40, Moves.JUMP_KICK ],
|
[ 43, Moves.THRASH ],
|
||||||
[ 43, Moves.DRILL_PECK ],
|
|
||||||
[ 47, Moves.ENDEAVOR ],
|
|
||||||
[ 50, Moves.THRASH ],
|
|
||||||
],
|
],
|
||||||
[Species.DODRIO]: [
|
[Species.DODRIO]: [
|
||||||
[ 0, Moves.TRI_ATTACK ],
|
[ 0, Moves.TRI_ATTACK ],
|
||||||
|
[ 1, Moves.TRI_ATTACK ],
|
||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
[ 1, Moves.PECK ],
|
[ 1, Moves.PECK ],
|
||||||
[ 1, Moves.QUICK_ATTACK ],
|
[ 5, Moves.QUICK_ATTACK ],
|
||||||
[ 1, Moves.RAGE ],
|
|
||||||
[ 12, Moves.FURY_ATTACK ],
|
[ 12, Moves.FURY_ATTACK ],
|
||||||
[ 15, Moves.PURSUIT ],
|
[ 15, Moves.PLUCK ],
|
||||||
[ 19, Moves.PLUCK ],
|
[ 19, Moves.DOUBLE_HIT ],
|
||||||
[ 22, Moves.DOUBLE_HIT ],
|
[ 23, Moves.AGILITY ],
|
||||||
[ 26, Moves.AGILITY ],
|
[ 26, Moves.UPROAR ],
|
||||||
[ 29, Moves.UPROAR ],
|
[ 30, Moves.ACUPRESSURE ],
|
||||||
[ 34, Moves.ACUPRESSURE ],
|
[ 34, Moves.SWORDS_DANCE ],
|
||||||
[ 38, Moves.SWORDS_DANCE ],
|
[ 38, Moves.DRILL_PECK ],
|
||||||
[ 43, Moves.JUMP_KICK ],
|
[ 43, Moves.ENDEAVOR ],
|
||||||
[ 47, Moves.DRILL_PECK ],
|
[ 50, Moves.THRASH ],
|
||||||
[ 52, Moves.ENDEAVOR ],
|
|
||||||
[ 56, Moves.THRASH ],
|
|
||||||
],
|
],
|
||||||
[Species.SEEL]: [
|
[Species.SEEL]: [
|
||||||
[ 1, Moves.HEADBUTT ],
|
[ 1, Moves.HEADBUTT ],
|
||||||
[ 3, Moves.GROWL ],
|
[ 3, Moves.GROWL ],
|
||||||
[ 7, Moves.WATER_SPORT ],
|
[ 7, Moves.CHARM ],
|
||||||
[ 11, Moves.ICY_WIND ],
|
[ 11, Moves.ICY_WIND ],
|
||||||
[ 13, Moves.ENCORE ],
|
[ 13, Moves.ENCORE ],
|
||||||
[ 17, Moves.ICE_SHARD ],
|
[ 17, Moves.ICE_SHARD ],
|
||||||
@ -1374,14 +1382,14 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 43, Moves.AQUA_TAIL ],
|
[ 43, Moves.AQUA_TAIL ],
|
||||||
[ 47, Moves.ICE_BEAM ],
|
[ 47, Moves.ICE_BEAM ],
|
||||||
[ 51, Moves.SAFEGUARD ],
|
[ 51, Moves.SAFEGUARD ],
|
||||||
[ 53, Moves.HAIL ],
|
[ 53, Moves.SNOWSCAPE ],
|
||||||
],
|
],
|
||||||
[Species.DEWGONG]: [
|
[Species.DEWGONG]: [
|
||||||
[ 0, Moves.SHEER_COLD ],
|
[ 0, Moves.SHEER_COLD ],
|
||||||
[ 1, Moves.HEADBUTT ],
|
[ 1, Moves.HEADBUTT ],
|
||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
[ 1, Moves.ICY_WIND ],
|
[ 1, Moves.ICY_WIND ],
|
||||||
[ 1, Moves.SIGNAL_BEAM ],
|
[ 1, Moves.CHARM ],
|
||||||
[ 13, Moves.ENCORE ],
|
[ 13, Moves.ENCORE ],
|
||||||
[ 17, Moves.ICE_SHARD ],
|
[ 17, Moves.ICE_SHARD ],
|
||||||
[ 21, Moves.REST ],
|
[ 21, Moves.REST ],
|
||||||
@ -1394,7 +1402,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 49, Moves.AQUA_TAIL ],
|
[ 49, Moves.AQUA_TAIL ],
|
||||||
[ 55, Moves.ICE_BEAM ],
|
[ 55, Moves.ICE_BEAM ],
|
||||||
[ 61, Moves.SAFEGUARD ],
|
[ 61, Moves.SAFEGUARD ],
|
||||||
[ 65, Moves.HAIL ],
|
[ 65, Moves.SNOWSCAPE ],
|
||||||
],
|
],
|
||||||
[Species.GRIMER]: [
|
[Species.GRIMER]: [
|
||||||
[ 1, Moves.POUND ],
|
[ 1, Moves.POUND ],
|
||||||
@ -1532,7 +1540,6 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 20, Moves.ROCK_SLIDE ],
|
[ 20, Moves.ROCK_SLIDE ],
|
||||||
[ 24, Moves.SCREECH ],
|
[ 24, Moves.SCREECH ],
|
||||||
[ 28, Moves.SAND_TOMB ],
|
[ 28, Moves.SAND_TOMB ],
|
||||||
[ 30, Moves.IRON_DEFENSE ],
|
|
||||||
[ 32, Moves.STEALTH_ROCK ],
|
[ 32, Moves.STEALTH_ROCK ],
|
||||||
[ 36, Moves.SLAM ],
|
[ 36, Moves.SLAM ],
|
||||||
[ 40, Moves.SANDSTORM ],
|
[ 40, Moves.SANDSTORM ],
|
||||||
@ -2534,7 +2541,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 12, Moves.SYNTHESIS ],
|
[ 12, Moves.SYNTHESIS ],
|
||||||
[ 17, Moves.REFLECT ],
|
[ 17, Moves.REFLECT ],
|
||||||
[ 20, Moves.MAGICAL_LEAF ],
|
[ 20, Moves.MAGICAL_LEAF ],
|
||||||
[ 23, Moves.NATURAL_GIFT ],
|
[ 23, Moves.LEECH_SEED ],
|
||||||
[ 28, Moves.SWEET_SCENT ],
|
[ 28, Moves.SWEET_SCENT ],
|
||||||
[ 31, Moves.LIGHT_SCREEN ],
|
[ 31, Moves.LIGHT_SCREEN ],
|
||||||
[ 34, Moves.BODY_SLAM ],
|
[ 34, Moves.BODY_SLAM ],
|
||||||
@ -2550,7 +2557,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 12, Moves.SYNTHESIS ],
|
[ 12, Moves.SYNTHESIS ],
|
||||||
[ 18, Moves.REFLECT ],
|
[ 18, Moves.REFLECT ],
|
||||||
[ 22, Moves.MAGICAL_LEAF ],
|
[ 22, Moves.MAGICAL_LEAF ],
|
||||||
[ 26, Moves.NATURAL_GIFT ],
|
[ 26, Moves.LEECH_SEED ],
|
||||||
[ 32, Moves.SWEET_SCENT ],
|
[ 32, Moves.SWEET_SCENT ],
|
||||||
[ 36, Moves.LIGHT_SCREEN ],
|
[ 36, Moves.LIGHT_SCREEN ],
|
||||||
[ 40, Moves.BODY_SLAM ],
|
[ 40, Moves.BODY_SLAM ],
|
||||||
@ -2568,13 +2575,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 12, Moves.SYNTHESIS ],
|
[ 12, Moves.SYNTHESIS ],
|
||||||
[ 18, Moves.REFLECT ],
|
[ 18, Moves.REFLECT ],
|
||||||
[ 22, Moves.MAGICAL_LEAF ],
|
[ 22, Moves.MAGICAL_LEAF ],
|
||||||
[ 26, Moves.NATURAL_GIFT ],
|
[ 26, Moves.LEECH_SEED ],
|
||||||
[ 34, Moves.SWEET_SCENT ],
|
[ 34, Moves.SWEET_SCENT ],
|
||||||
[ 40, Moves.LIGHT_SCREEN ],
|
[ 40, Moves.LIGHT_SCREEN ],
|
||||||
[ 46, Moves.BODY_SLAM ],
|
[ 46, Moves.BODY_SLAM ],
|
||||||
[ 54, Moves.SAFEGUARD ],
|
[ 54, Moves.SAFEGUARD ],
|
||||||
[ 60, Moves.AROMATHERAPY ],
|
[ 60, Moves.AROMATHERAPY ],
|
||||||
[ 66, Moves.SOLAR_BEAM ],
|
[ 65, Moves.SOLAR_BEAM ],
|
||||||
],
|
],
|
||||||
[Species.CYNDAQUIL]: [
|
[Species.CYNDAQUIL]: [
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
@ -2635,56 +2642,50 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.SCRATCH ],
|
[ 1, Moves.SCRATCH ],
|
||||||
[ 1, Moves.LEER ],
|
[ 1, Moves.LEER ],
|
||||||
[ 6, Moves.WATER_GUN ],
|
[ 6, Moves.WATER_GUN ],
|
||||||
[ 8, Moves.RAGE ],
|
[ 9, Moves.BITE ],
|
||||||
[ 13, Moves.BITE ],
|
[ 13, Moves.SCARY_FACE ],
|
||||||
[ 15, Moves.SCARY_FACE ],
|
[ 19, Moves.ICE_FANG ],
|
||||||
[ 20, Moves.ICE_FANG ],
|
|
||||||
[ 22, Moves.FLAIL ],
|
[ 22, Moves.FLAIL ],
|
||||||
[ 27, Moves.CRUNCH ],
|
[ 27, Moves.CRUNCH ],
|
||||||
[ 29, Moves.CHIP_AWAY ],
|
[ 30, Moves.SLASH ],
|
||||||
[ 34, Moves.SLASH ],
|
[ 33, Moves.SCREECH ],
|
||||||
[ 36, Moves.SCREECH ],
|
[ 37, Moves.THRASH ],
|
||||||
[ 41, Moves.THRASH ],
|
[ 41, Moves.AQUA_TAIL ],
|
||||||
[ 43, Moves.AQUA_TAIL ],
|
[ 45, Moves.SUPERPOWER ],
|
||||||
[ 48, Moves.SUPERPOWER ],
|
|
||||||
[ 50, Moves.HYDRO_PUMP ],
|
[ 50, Moves.HYDRO_PUMP ],
|
||||||
],
|
],
|
||||||
[Species.CROCONAW]: [
|
[Species.CROCONAW]: [
|
||||||
[ 1, Moves.SCRATCH ],
|
[ 1, Moves.SCRATCH ],
|
||||||
[ 1, Moves.LEER ],
|
[ 1, Moves.LEER ],
|
||||||
[ 1, Moves.WATER_GUN ],
|
[ 1, Moves.WATER_GUN ],
|
||||||
[ 8, Moves.RAGE ],
|
|
||||||
[ 13, Moves.BITE ],
|
[ 13, Moves.BITE ],
|
||||||
[ 15, Moves.SCARY_FACE ],
|
[ 15, Moves.SCARY_FACE ],
|
||||||
[ 21, Moves.ICE_FANG ],
|
[ 21, Moves.ICE_FANG ],
|
||||||
[ 24, Moves.FLAIL ],
|
[ 24, Moves.FLAIL ],
|
||||||
[ 30, Moves.CRUNCH ],
|
[ 30, Moves.CRUNCH ],
|
||||||
[ 33, Moves.CHIP_AWAY ],
|
[ 34, Moves.SLASH ],
|
||||||
[ 39, Moves.SLASH ],
|
[ 37, Moves.SCREECH ],
|
||||||
[ 42, Moves.SCREECH ],
|
[ 42, Moves.THRASH ],
|
||||||
[ 48, Moves.THRASH ],
|
[ 47, Moves.AQUA_TAIL ],
|
||||||
[ 51, Moves.AQUA_TAIL ],
|
[ 50, Moves.SUPERPOWER ],
|
||||||
[ 57, Moves.SUPERPOWER ],
|
[ 55, Moves.HYDRO_PUMP ],
|
||||||
[ 60, Moves.HYDRO_PUMP ],
|
|
||||||
],
|
],
|
||||||
[Species.FERALIGATR]: [
|
[Species.FERALIGATR]: [
|
||||||
|
[ 1, Moves.AGILITY ],
|
||||||
[ 1, Moves.SCRATCH ],
|
[ 1, Moves.SCRATCH ],
|
||||||
[ 1, Moves.LEER ],
|
[ 1, Moves.LEER ],
|
||||||
[ 1, Moves.WATER_GUN ],
|
[ 1, Moves.WATER_GUN ],
|
||||||
[ 1, Moves.AGILITY ],
|
|
||||||
[ 1, Moves.RAGE ],
|
|
||||||
[ 13, Moves.BITE ],
|
[ 13, Moves.BITE ],
|
||||||
[ 15, Moves.SCARY_FACE ],
|
[ 15, Moves.SCARY_FACE ],
|
||||||
[ 21, Moves.ICE_FANG ],
|
[ 21, Moves.ICE_FANG ],
|
||||||
[ 24, Moves.FLAIL ],
|
[ 24, Moves.FLAIL ],
|
||||||
[ 32, Moves.CRUNCH ],
|
[ 32, Moves.CRUNCH ],
|
||||||
[ 37, Moves.CHIP_AWAY ],
|
[ 37, Moves.SLASH ],
|
||||||
[ 45, Moves.SLASH ],
|
[ 44, Moves.SCREECH ],
|
||||||
[ 50, Moves.SCREECH ],
|
[ 51, Moves.THRASH ],
|
||||||
[ 58, Moves.THRASH ],
|
[ 59, Moves.AQUA_TAIL ],
|
||||||
[ 63, Moves.AQUA_TAIL ],
|
[ 65, Moves.SUPERPOWER ],
|
||||||
[ 71, Moves.SUPERPOWER ],
|
[ 70, Moves.HYDRO_PUMP ],
|
||||||
[ 76, Moves.HYDRO_PUMP ],
|
|
||||||
],
|
],
|
||||||
[Species.SENTRET]: [
|
[Species.SENTRET]: [
|
||||||
[ 1, Moves.SCRATCH ],
|
[ 1, Moves.SCRATCH ],
|
||||||
@ -2760,8 +2761,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 12, Moves.REFLECT ],
|
[ 12, Moves.REFLECT ],
|
||||||
[ 12, Moves.SAFEGUARD ],
|
[ 12, Moves.SAFEGUARD ],
|
||||||
[ 15, Moves.MACH_PUNCH ],
|
[ 15, Moves.MACH_PUNCH ],
|
||||||
[ 19, Moves.SILVER_WIND ],
|
[ 19, Moves.ROOST ],
|
||||||
[ 22, Moves.COMET_PUNCH ],
|
[ 22, Moves.STRUGGLE_BUG ],
|
||||||
[ 26, Moves.BATON_PASS ],
|
[ 26, Moves.BATON_PASS ],
|
||||||
[ 29, Moves.AGILITY ],
|
[ 29, Moves.AGILITY ],
|
||||||
[ 33, Moves.BUG_BUZZ ],
|
[ 33, Moves.BUG_BUZZ ],
|
||||||
@ -2772,12 +2773,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
[ 1, Moves.SUPERSONIC ],
|
[ 1, Moves.SUPERSONIC ],
|
||||||
[ 1, Moves.SWIFT ],
|
[ 1, Moves.SWIFT ],
|
||||||
|
[ 5, Moves.SUPERSONIC ],
|
||||||
[ 12, Moves.LIGHT_SCREEN ],
|
[ 12, Moves.LIGHT_SCREEN ],
|
||||||
[ 12, Moves.REFLECT ],
|
[ 12, Moves.REFLECT ],
|
||||||
[ 12, Moves.SAFEGUARD ],
|
[ 12, Moves.SAFEGUARD ],
|
||||||
[ 15, Moves.MACH_PUNCH ],
|
[ 15, Moves.MACH_PUNCH ],
|
||||||
[ 20, Moves.SILVER_WIND ],
|
[ 20, Moves.ROOST ],
|
||||||
[ 24, Moves.COMET_PUNCH ],
|
[ 24, Moves.STRUGGLE_BUG ],
|
||||||
[ 29, Moves.BATON_PASS ],
|
[ 29, Moves.BATON_PASS ],
|
||||||
[ 33, Moves.AGILITY ],
|
[ 33, Moves.AGILITY ],
|
||||||
[ 38, Moves.BUG_BUZZ ],
|
[ 38, Moves.BUG_BUZZ ],
|
||||||
@ -4476,33 +4478,45 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
],
|
],
|
||||||
[Species.SILCOON]: [
|
[Species.SILCOON]: [
|
||||||
[ 0, Moves.HARDEN ],
|
[ 0, Moves.HARDEN ],
|
||||||
|
[ 1, Moves.HARDEN ],
|
||||||
],
|
],
|
||||||
[Species.BEAUTIFLY]: [
|
[Species.BEAUTIFLY]: [
|
||||||
[ 0, Moves.GUST ],
|
[ 0, Moves.GUST ],
|
||||||
|
[ 1, Moves.BUG_BITE ],
|
||||||
|
[ 1, Moves.GUST ],
|
||||||
|
[ 1, Moves.HARDEN ],
|
||||||
|
[ 1, Moves.STRING_SHOT ],
|
||||||
|
[ 1, Moves.POISON_STING ],
|
||||||
[ 12, Moves.ABSORB ],
|
[ 12, Moves.ABSORB ],
|
||||||
[ 15, Moves.STUN_SPORE ],
|
[ 15, Moves.STUN_SPORE ],
|
||||||
[ 17, Moves.MORNING_SUN ],
|
[ 17, Moves.MORNING_SUN ],
|
||||||
[ 20, Moves.AIR_CUTTER ],
|
[ 20, Moves.AIR_CUTTER ],
|
||||||
[ 22, Moves.MEGA_DRAIN ],
|
[ 22, Moves.MEGA_DRAIN ],
|
||||||
[ 25, Moves.SILVER_WIND ],
|
[ 25, Moves.LEECH_LIFE ],
|
||||||
[ 27, Moves.ATTRACT ],
|
[ 27, Moves.ATTRACT ],
|
||||||
[ 30, Moves.WHIRLWIND ],
|
[ 30, Moves.WHIRLWIND ],
|
||||||
[ 32, Moves.GIGA_DRAIN ],
|
[ 32, Moves.GIGA_DRAIN ],
|
||||||
[ 35, Moves.BUG_BUZZ ],
|
[ 35, Moves.BUG_BUZZ ],
|
||||||
[ 37, Moves.RAGE ],
|
[ 37, Moves.PROTECT ],
|
||||||
[ 40, Moves.QUIVER_DANCE ],
|
[ 40, Moves.QUIVER_DANCE ],
|
||||||
],
|
],
|
||||||
[Species.CASCOON]: [
|
[Species.CASCOON]: [
|
||||||
[ 0, Moves.HARDEN ],
|
[ 0, Moves.HARDEN ],
|
||||||
|
[ 1, Moves.HARDEN ],
|
||||||
],
|
],
|
||||||
[Species.DUSTOX]: [
|
[Species.DUSTOX]: [
|
||||||
[ 0, Moves.GUST ],
|
[ 0, Moves.GUST ],
|
||||||
|
[ 1, Moves.BUG_BITE ],
|
||||||
|
[ 1, Moves.GUST ],
|
||||||
|
[ 1, Moves.HARDEN ],
|
||||||
|
[ 1, Moves.STRING_SHOT ],
|
||||||
|
[ 1, Moves.POISON_STING ],
|
||||||
[ 12, Moves.CONFUSION ],
|
[ 12, Moves.CONFUSION ],
|
||||||
[ 15, Moves.POISON_POWDER ],
|
[ 15, Moves.POISON_POWDER ],
|
||||||
[ 17, Moves.MOONLIGHT ],
|
[ 17, Moves.MOONLIGHT ],
|
||||||
[ 20, Moves.VENOSHOCK ],
|
[ 20, Moves.VENOSHOCK ],
|
||||||
[ 22, Moves.PSYBEAM ],
|
[ 22, Moves.PSYBEAM ],
|
||||||
[ 25, Moves.SILVER_WIND ],
|
[ 25, Moves.LEECH_LIFE ],
|
||||||
[ 27, Moves.LIGHT_SCREEN ],
|
[ 27, Moves.LIGHT_SCREEN ],
|
||||||
[ 30, Moves.WHIRLWIND ],
|
[ 30, Moves.WHIRLWIND ],
|
||||||
[ 32, Moves.TOXIC ],
|
[ 32, Moves.TOXIC ],
|
||||||
@ -4621,6 +4635,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 27, Moves.QUICK_GUARD ],
|
[ 27, Moves.QUICK_GUARD ],
|
||||||
[ 33, Moves.AGILITY ],
|
[ 33, Moves.AGILITY ],
|
||||||
[ 45, Moves.ENDEAVOR ],
|
[ 45, Moves.ENDEAVOR ],
|
||||||
|
[ 51, Moves.BRAVE_BIRD ],
|
||||||
[ 57, Moves.REVERSAL ],
|
[ 57, Moves.REVERSAL ],
|
||||||
],
|
],
|
||||||
[Species.WINGULL]: [
|
[Species.WINGULL]: [
|
||||||
@ -4989,31 +5004,42 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 43, Moves.LOCK_ON ],
|
[ 43, Moves.LOCK_ON ],
|
||||||
],
|
],
|
||||||
[Species.SKITTY]: [
|
[Species.SKITTY]: [
|
||||||
[ 1, Moves.TACKLE ],
|
|
||||||
[ 1, Moves.TAIL_WHIP ],
|
[ 1, Moves.TAIL_WHIP ],
|
||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
[ 1, Moves.FAKE_OUT ],
|
[ 1, Moves.FAKE_OUT ],
|
||||||
[ 4, Moves.FORESIGHT ],
|
[ 4, Moves.TACKLE ],
|
||||||
[ 7, Moves.SING ],
|
[ 7, Moves.SING ],
|
||||||
[ 10, Moves.ATTRACT ],
|
[ 10, Moves.ATTRACT ],
|
||||||
[ 13, Moves.DISARMING_VOICE ],
|
[ 13, Moves.DISARMING_VOICE ],
|
||||||
[ 16, Moves.DOUBLE_SLAP ],
|
[ 16, Moves.FURY_SWIPES ],
|
||||||
[ 19, Moves.COPYCAT ],
|
[ 19, Moves.COPYCAT ],
|
||||||
[ 22, Moves.FEINT_ATTACK ],
|
[ 22, Moves.PAYBACK ],
|
||||||
[ 25, Moves.CHARM ],
|
[ 25, Moves.CHARM ],
|
||||||
[ 28, Moves.WAKE_UP_SLAP ],
|
[ 31, Moves.FACADE ],
|
||||||
[ 31, Moves.ASSIST ],
|
|
||||||
[ 34, Moves.COVET ],
|
[ 34, Moves.COVET ],
|
||||||
[ 37, Moves.HEAL_BELL ],
|
[ 37, Moves.HEAL_BELL ],
|
||||||
[ 40, Moves.DOUBLE_EDGE ],
|
[ 40, Moves.DOUBLE_EDGE ],
|
||||||
[ 43, Moves.CAPTIVATE ],
|
[ 43, Moves.BABY_DOLL_EYES ],
|
||||||
[ 46, Moves.PLAY_ROUGH ],
|
[ 46, Moves.PLAY_ROUGH ],
|
||||||
],
|
],
|
||||||
[Species.DELCATTY]: [
|
[Species.DELCATTY]: [
|
||||||
[ 1, Moves.DOUBLE_SLAP ],
|
[ 1, Moves.TAIL_WHIP ],
|
||||||
|
[ 1, Moves.GROWL ],
|
||||||
|
[ 1, Moves.FAKE_OUT ],
|
||||||
|
[ 1, Moves.TACKLE ],
|
||||||
[ 1, Moves.SING ],
|
[ 1, Moves.SING ],
|
||||||
[ 1, Moves.ATTRACT ],
|
[ 1, Moves.ATTRACT ],
|
||||||
[ 1, Moves.FAKE_OUT ],
|
[ 1, Moves.DISARMING_VOICE ],
|
||||||
|
[ 1, Moves.FURY_SWIPES ],
|
||||||
|
[ 1, Moves.COPYCAT ],
|
||||||
|
[ 1, Moves.PAYBACK ],
|
||||||
|
[ 1, Moves.CHARM ],
|
||||||
|
[ 1, Moves.FACADE ],
|
||||||
|
[ 1, Moves.COVET ],
|
||||||
|
[ 1, Moves.HEAL_BELL ],
|
||||||
|
[ 1, Moves.DOUBLE_EDGE ],
|
||||||
|
[ 1, Moves.BABY_DOLL_EYES ],
|
||||||
|
[ 1, Moves.PLAY_ROUGH ],
|
||||||
],
|
],
|
||||||
[Species.SABLEYE]: [
|
[Species.SABLEYE]: [
|
||||||
[ 1, Moves.SCRATCH ],
|
[ 1, Moves.SCRATCH ],
|
||||||
@ -5189,7 +5215,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 4, Moves.HELPING_HAND ],
|
[ 4, Moves.HELPING_HAND ],
|
||||||
[ 7, Moves.SPARK ],
|
[ 7, Moves.SPARK ],
|
||||||
[ 10, Moves.ENCORE ],
|
[ 10, Moves.ENCORE ],
|
||||||
[ 13, Moves.BESTOW ],
|
[ 13, Moves.SWITCHEROO ],
|
||||||
[ 16, Moves.SWIFT ],
|
[ 16, Moves.SWIFT ],
|
||||||
[ 19, Moves.ELECTRO_BALL ],
|
[ 19, Moves.ELECTRO_BALL ],
|
||||||
[ 22, Moves.COPYCAT ],
|
[ 22, Moves.COPYCAT ],
|
||||||
@ -5221,7 +5247,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 31, Moves.DISCHARGE ],
|
[ 31, Moves.DISCHARGE ],
|
||||||
[ 34, Moves.BATON_PASS ],
|
[ 34, Moves.BATON_PASS ],
|
||||||
[ 37, Moves.AGILITY ],
|
[ 37, Moves.AGILITY ],
|
||||||
[ 40, Moves.TRUMP_CARD ],
|
[ 40, Moves.LAST_RESORT ],
|
||||||
[ 43, Moves.THUNDER ],
|
[ 43, Moves.THUNDER ],
|
||||||
[ 46, Moves.NASTY_PLOT ],
|
[ 46, Moves.NASTY_PLOT ],
|
||||||
[ 49, Moves.ENTRAINMENT ],
|
[ 49, Moves.ENTRAINMENT ],
|
||||||
@ -5473,10 +5499,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[Species.SPINDA]: [
|
[Species.SPINDA]: [
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
[ 5, Moves.COPYCAT ],
|
[ 5, Moves.COPYCAT ],
|
||||||
[ 10, Moves.FEINT_ATTACK ],
|
[ 10, Moves.TEETER_DANCE ],
|
||||||
[ 14, Moves.PSYBEAM ],
|
[ 14, Moves.PSYBEAM ],
|
||||||
[ 19, Moves.HYPNOSIS ],
|
[ 19, Moves.HYPNOSIS ],
|
||||||
[ 23, Moves.DIZZY_PUNCH ],
|
[ 23, Moves.BODY_SLAM ],
|
||||||
[ 28, Moves.SUCKER_PUNCH ],
|
[ 28, Moves.SUCKER_PUNCH ],
|
||||||
[ 32, Moves.TEETER_DANCE ],
|
[ 32, Moves.TEETER_DANCE ],
|
||||||
[ 37, Moves.UPROAR ],
|
[ 37, Moves.UPROAR ],
|
||||||
@ -5918,16 +5944,16 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 7, Moves.SHADOW_SNEAK ],
|
[ 7, Moves.SHADOW_SNEAK ],
|
||||||
[ 10, Moves.FEINT ],
|
[ 10, Moves.FEINT ],
|
||||||
[ 13, Moves.FURY_SWIPES ],
|
[ 13, Moves.FURY_SWIPES ],
|
||||||
[ 16, Moves.FEINT_ATTACK ],
|
[ 16, Moves.DISABLE ],
|
||||||
[ 18, Moves.PSYBEAM ],
|
[ 18, Moves.PSYBEAM ],
|
||||||
[ 21, Moves.ANCIENT_POWER ],
|
[ 21, Moves.ANCIENT_POWER ],
|
||||||
[ 25, Moves.SLASH ],
|
[ 25, Moves.SLASH ],
|
||||||
[ 30, Moves.CAMOUFLAGE ],
|
[ 30, Moves.DETECT ],
|
||||||
[ 33, Moves.SHADOW_CLAW ],
|
[ 33, Moves.SHADOW_CLAW ],
|
||||||
[ 38, Moves.SCREECH ],
|
[ 38, Moves.SCREECH ],
|
||||||
[ 42, Moves.SUBSTITUTE ],
|
[ 42, Moves.SUBSTITUTE ],
|
||||||
[ 46, Moves.SUCKER_PUNCH ],
|
[ 46, Moves.SUCKER_PUNCH ],
|
||||||
[ 50, Moves.SYNCHRONOISE ],
|
[ 50, Moves.FOUL_PLAY ],
|
||||||
],
|
],
|
||||||
[Species.SHUPPET]: [
|
[Species.SHUPPET]: [
|
||||||
[ 1, Moves.ASTONISH ],
|
[ 1, Moves.ASTONISH ],
|
||||||
@ -6146,17 +6172,19 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
],
|
],
|
||||||
[Species.CLAMPERL]: [
|
[Species.CLAMPERL]: [
|
||||||
[ 1, Moves.WATER_GUN ],
|
[ 1, Moves.WATER_GUN ],
|
||||||
[ 1, Moves.CLAMP ],
|
|
||||||
[ 1, Moves.WHIRLPOOL ],
|
[ 1, Moves.WHIRLPOOL ],
|
||||||
[ 1, Moves.IRON_DEFENSE ],
|
[ 1, Moves.IRON_DEFENSE ],
|
||||||
[ 50, Moves.SHELL_SMASH ],
|
[ 50, Moves.SHELL_SMASH ],
|
||||||
],
|
],
|
||||||
[Species.HUNTAIL]: [
|
[Species.HUNTAIL]: [
|
||||||
[ 1, Moves.BITE ],
|
[ 1, Moves.BITE ],
|
||||||
|
[ 1, Moves.WATER_GUN ],
|
||||||
[ 1, Moves.WHIRLPOOL ],
|
[ 1, Moves.WHIRLPOOL ],
|
||||||
|
[ 1, Moves.IRON_DEFENSE ],
|
||||||
|
[ 1, Moves.SHELL_SMASH ],
|
||||||
[ 5, Moves.SCREECH ],
|
[ 5, Moves.SCREECH ],
|
||||||
[ 9, Moves.SCARY_FACE ],
|
[ 9, Moves.SCARY_FACE ],
|
||||||
[ 11, Moves.FEINT_ATTACK ],
|
[ 11, Moves.RAIN_DANCE ],
|
||||||
[ 14, Moves.WATER_PULSE ],
|
[ 14, Moves.WATER_PULSE ],
|
||||||
[ 16, Moves.ICE_FANG ],
|
[ 16, Moves.ICE_FANG ],
|
||||||
[ 19, Moves.BRINE ],
|
[ 19, Moves.BRINE ],
|
||||||
@ -6170,14 +6198,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
],
|
],
|
||||||
[Species.GOREBYSS]: [
|
[Species.GOREBYSS]: [
|
||||||
[ 1, Moves.CONFUSION ],
|
[ 1, Moves.CONFUSION ],
|
||||||
|
[ 1, Moves.WATER_GUN ],
|
||||||
[ 1, Moves.WHIRLPOOL ],
|
[ 1, Moves.WHIRLPOOL ],
|
||||||
|
[ 1, Moves.IRON_DEFENSE ],
|
||||||
|
[ 1, Moves.SHELL_SMASH ],
|
||||||
[ 5, Moves.WATER_SPORT ],
|
[ 5, Moves.WATER_SPORT ],
|
||||||
[ 9, Moves.AGILITY ],
|
[ 9, Moves.AGILITY ],
|
||||||
[ 11, Moves.DRAINING_KISS ],
|
[ 11, Moves.DRAINING_KISS ],
|
||||||
[ 14, Moves.WATER_PULSE ],
|
[ 14, Moves.WATER_PULSE ],
|
||||||
[ 16, Moves.AMNESIA ],
|
[ 16, Moves.AMNESIA ],
|
||||||
[ 19, Moves.AQUA_RING ],
|
[ 19, Moves.AQUA_RING ],
|
||||||
[ 23, Moves.CAPTIVATE ],
|
[ 23, Moves.SAFEGUARD ],
|
||||||
[ 26, Moves.DIVE ],
|
[ 26, Moves.DIVE ],
|
||||||
[ 29, Moves.BATON_PASS ],
|
[ 29, Moves.BATON_PASS ],
|
||||||
[ 34, Moves.PSYCHIC ],
|
[ 34, Moves.PSYCHIC ],
|
||||||
@ -6857,7 +6888,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.PROTECT ],
|
[ 1, Moves.PROTECT ],
|
||||||
[ 10, Moves.TACKLE ],
|
[ 10, Moves.TACKLE ],
|
||||||
[ 15, Moves.BUG_BITE ],
|
[ 15, Moves.BUG_BITE ],
|
||||||
[ 20, Moves.HIDDEN_POWER ],
|
[ 20, Moves.STRING_SHOT ],
|
||||||
],
|
],
|
||||||
[Species.WORMADAM]: [
|
[Species.WORMADAM]: [
|
||||||
[ 0, Moves.QUIVER_DANCE ],
|
[ 0, Moves.QUIVER_DANCE ],
|
||||||
@ -6865,12 +6896,14 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.PROTECT ],
|
[ 1, Moves.PROTECT ],
|
||||||
[ 1, Moves.SUCKER_PUNCH ],
|
[ 1, Moves.SUCKER_PUNCH ],
|
||||||
[ 1, Moves.BUG_BITE ],
|
[ 1, Moves.BUG_BITE ],
|
||||||
[ 20, Moves.HIDDEN_POWER ],
|
[ 1, Moves.PROTECT ],
|
||||||
|
[ 10, Moves.TACKLE ],
|
||||||
|
[ 20, Moves.STRING_SHOT ],
|
||||||
[ 23, Moves.CONFUSION ],
|
[ 23, Moves.CONFUSION ],
|
||||||
[ 26, Moves.RAZOR_LEAF ],
|
[ 26, Moves.RAZOR_LEAF ],
|
||||||
[ 29, Moves.GROWTH ],
|
[ 29, Moves.GROWTH ],
|
||||||
[ 32, Moves.PSYBEAM ],
|
[ 32, Moves.PSYBEAM ],
|
||||||
[ 35, Moves.CAPTIVATE ],
|
[ 35, Moves.INFESTATION ],
|
||||||
[ 38, Moves.FLAIL ],
|
[ 38, Moves.FLAIL ],
|
||||||
[ 41, Moves.ATTRACT ],
|
[ 41, Moves.ATTRACT ],
|
||||||
[ 44, Moves.PSYCHIC ],
|
[ 44, Moves.PSYCHIC ],
|
||||||
@ -6882,13 +6915,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
[ 1, Moves.PROTECT ],
|
[ 1, Moves.PROTECT ],
|
||||||
[ 1, Moves.BUG_BITE ],
|
[ 1, Moves.BUG_BITE ],
|
||||||
[ 20, Moves.HIDDEN_POWER ],
|
[ 10, Moves.PROTECT ],
|
||||||
|
[ 15, Moves.BUG_BITE ],
|
||||||
|
[ 20, Moves.STRING_SHOT ],
|
||||||
[ 23, Moves.CONFUSION ],
|
[ 23, Moves.CONFUSION ],
|
||||||
[ 26, Moves.GUST ],
|
[ 26, Moves.GUST ],
|
||||||
[ 29, Moves.POISON_POWDER ],
|
[ 29, Moves.POISON_POWDER ],
|
||||||
[ 32, Moves.PSYBEAM ],
|
[ 32, Moves.PSYBEAM ],
|
||||||
[ 35, Moves.CAMOUFLAGE ],
|
[ 35, Moves.ROOST ],
|
||||||
[ 38, Moves.SILVER_WIND ],
|
[ 38, Moves.STRUGGLE_BUG ],
|
||||||
[ 41, Moves.AIR_SLASH ],
|
[ 41, Moves.AIR_SLASH ],
|
||||||
[ 44, Moves.PSYCHIC ],
|
[ 44, Moves.PSYCHIC ],
|
||||||
[ 47, Moves.LUNGE ],
|
[ 47, Moves.LUNGE ],
|
||||||
@ -7144,11 +7179,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 5, Moves.SCRATCH ],
|
[ 5, Moves.SCRATCH ],
|
||||||
[ 8, Moves.GROWL ],
|
[ 8, Moves.GROWL ],
|
||||||
[ 13, Moves.HYPNOSIS ],
|
[ 13, Moves.HYPNOSIS ],
|
||||||
[ 17, Moves.FEINT_ATTACK ],
|
[ 17, Moves.AERIAL_ACE ],
|
||||||
[ 20, Moves.FURY_SWIPES ],
|
[ 20, Moves.FURY_SWIPES ],
|
||||||
[ 25, Moves.CHARM ],
|
[ 25, Moves.CHARM ],
|
||||||
[ 29, Moves.ASSIST ],
|
[ 29, Moves.TAUNT ],
|
||||||
[ 32, Moves.CAPTIVATE ],
|
[ 32, Moves.RETALIATE ],
|
||||||
[ 37, Moves.SLASH ],
|
[ 37, Moves.SLASH ],
|
||||||
[ 41, Moves.SUCKER_PUNCH ],
|
[ 41, Moves.SUCKER_PUNCH ],
|
||||||
[ 44, Moves.ATTRACT ],
|
[ 44, Moves.ATTRACT ],
|
||||||
@ -7158,14 +7193,16 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[Species.PURUGLY]: [
|
[Species.PURUGLY]: [
|
||||||
[ 0, Moves.SWAGGER ],
|
[ 0, Moves.SWAGGER ],
|
||||||
[ 1, Moves.SCRATCH ],
|
[ 1, Moves.SCRATCH ],
|
||||||
|
[ 1, Moves.PLAY_ROUGH ],
|
||||||
|
[ 1, Moves.SUCKER_PUNCH ],
|
||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
[ 1, Moves.FAKE_OUT ],
|
[ 1, Moves.FAKE_OUT ],
|
||||||
[ 13, Moves.HYPNOSIS ],
|
[ 13, Moves.HYPNOSIS ],
|
||||||
[ 17, Moves.FEINT_ATTACK ],
|
[ 17, Moves.AERIAL_ACE ],
|
||||||
[ 20, Moves.FURY_SWIPES ],
|
[ 20, Moves.FURY_SWIPES ],
|
||||||
[ 25, Moves.CHARM ],
|
[ 25, Moves.CHARM ],
|
||||||
[ 29, Moves.ASSIST ],
|
[ 29, Moves.TAUNT ],
|
||||||
[ 32, Moves.CAPTIVATE ],
|
[ 32, Moves.RETALIATE ],
|
||||||
[ 37, Moves.SLASH ],
|
[ 37, Moves.SLASH ],
|
||||||
[ 45, Moves.BODY_SLAM ],
|
[ 45, Moves.BODY_SLAM ],
|
||||||
[ 52, Moves.ATTRACT ],
|
[ 52, Moves.ATTRACT ],
|
||||||
@ -7554,13 +7591,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 11, Moves.VINE_WHIP ],
|
[ 11, Moves.VINE_WHIP ],
|
||||||
[ 17, Moves.SWEET_SCENT ],
|
[ 17, Moves.SWEET_SCENT ],
|
||||||
[ 21, Moves.INGRAIN ],
|
[ 21, Moves.INGRAIN ],
|
||||||
[ 27, Moves.FEINT_ATTACK ],
|
[ 27, Moves.GRASS_KNOT ],
|
||||||
[ 31, Moves.LEAF_TORNADO ],
|
[ 31, Moves.LEAF_TORNADO ],
|
||||||
[ 37, Moves.STOCKPILE ],
|
[ 37, Moves.STOCKPILE ],
|
||||||
[ 37, Moves.SPIT_UP ],
|
[ 37, Moves.SPIT_UP ],
|
||||||
[ 37, Moves.SWALLOW ],
|
[ 37, Moves.SWALLOW ],
|
||||||
[ 41, Moves.CRUNCH ],
|
[ 41, Moves.CRUNCH ],
|
||||||
[ 47, Moves.WRING_OUT ],
|
[ 47, Moves.SEED_BOMB ],
|
||||||
[ 50, Moves.POWER_WHIP ],
|
[ 50, Moves.POWER_WHIP ],
|
||||||
],
|
],
|
||||||
[Species.FINNEON]: [
|
[Species.FINNEON]: [
|
||||||
@ -8204,11 +8241,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
],
|
],
|
||||||
[Species.DARKRAI]: [
|
[Species.DARKRAI]: [
|
||||||
[ 1, Moves.DISABLE ],
|
[ 1, Moves.DISABLE ],
|
||||||
[ 1, Moves.OMINOUS_WIND ],
|
|
||||||
[ 11, Moves.QUICK_ATTACK ],
|
[ 11, Moves.QUICK_ATTACK ],
|
||||||
[ 20, Moves.HYPNOSIS ],
|
[ 20, Moves.HYPNOSIS ],
|
||||||
[ 29, Moves.FEINT_ATTACK ],
|
[ 29, Moves.SUCKER_PUNCH ],
|
||||||
[ 38, Moves.NIGHTMARE ],
|
[ 38, Moves.NIGHT_SHADE ],
|
||||||
[ 47, Moves.DOUBLE_TEAM ],
|
[ 47, Moves.DOUBLE_TEAM ],
|
||||||
[ 57, Moves.HAZE ],
|
[ 57, Moves.HAZE ],
|
||||||
[ 66, Moves.DARK_VOID ],
|
[ 66, Moves.DARK_VOID ],
|
||||||
@ -8270,16 +8306,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 7, Moves.VINE_WHIP ],
|
[ 7, Moves.VINE_WHIP ],
|
||||||
[ 10, Moves.WRAP ],
|
[ 10, Moves.WRAP ],
|
||||||
[ 13, Moves.GROWTH ],
|
[ 13, Moves.GROWTH ],
|
||||||
[ 16, Moves.LEAF_TORNADO ],
|
[ 16, Moves.MAGICAL_LEAF ],
|
||||||
[ 19, Moves.LEECH_SEED ],
|
[ 19, Moves.LEECH_SEED ],
|
||||||
[ 22, Moves.MEGA_DRAIN ],
|
[ 22, Moves.MEGA_DRAIN ],
|
||||||
[ 25, Moves.SLAM ],
|
[ 25, Moves.SLAM ],
|
||||||
[ 28, Moves.LEAF_BLADE ],
|
[ 28, Moves.LEAF_BLADE ],
|
||||||
[ 31, Moves.COIL ],
|
[ 31, Moves.COIL ],
|
||||||
[ 34, Moves.GIGA_DRAIN ],
|
[ 34, Moves.GIGA_DRAIN ],
|
||||||
[ 37, Moves.WRING_OUT ],
|
[ 37, Moves.GASTRO_ACID ],
|
||||||
[ 40, Moves.GASTRO_ACID ],
|
[ 40, Moves.LEAF_STORM ],
|
||||||
[ 43, Moves.LEAF_STORM ],
|
|
||||||
],
|
],
|
||||||
[Species.SERVINE]: [
|
[Species.SERVINE]: [
|
||||||
[ 1, Moves.VINE_WHIP ],
|
[ 1, Moves.VINE_WHIP ],
|
||||||
@ -8287,16 +8322,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.WRAP ],
|
[ 1, Moves.WRAP ],
|
||||||
[ 1, Moves.LEER ],
|
[ 1, Moves.LEER ],
|
||||||
[ 13, Moves.GROWTH ],
|
[ 13, Moves.GROWTH ],
|
||||||
[ 16, Moves.LEAF_TORNADO ],
|
[ 16, Moves.MAGICAL_LEAF ],
|
||||||
[ 20, Moves.LEECH_SEED ],
|
[ 20, Moves.LEECH_SEED ],
|
||||||
[ 24, Moves.MEGA_DRAIN ],
|
[ 24, Moves.MEGA_DRAIN ],
|
||||||
[ 28, Moves.SLAM ],
|
[ 28, Moves.SLAM ],
|
||||||
[ 32, Moves.LEAF_BLADE ],
|
[ 32, Moves.LEAF_BLADE ],
|
||||||
[ 36, Moves.COIL ],
|
[ 36, Moves.COIL ],
|
||||||
[ 40, Moves.GIGA_DRAIN ],
|
[ 40, Moves.GIGA_DRAIN ],
|
||||||
[ 44, Moves.WRING_OUT ],
|
[ 44, Moves.GASTRO_ACID ],
|
||||||
[ 48, Moves.GASTRO_ACID ],
|
[ 48, Moves.LEAF_STORM ],
|
||||||
[ 52, Moves.LEAF_STORM ],
|
|
||||||
],
|
],
|
||||||
[Species.SERPERIOR]: [
|
[Species.SERPERIOR]: [
|
||||||
[ 1, Moves.VINE_WHIP ],
|
[ 1, Moves.VINE_WHIP ],
|
||||||
@ -8304,22 +8338,21 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.WRAP ],
|
[ 1, Moves.WRAP ],
|
||||||
[ 1, Moves.LEER ],
|
[ 1, Moves.LEER ],
|
||||||
[ 13, Moves.GROWTH ],
|
[ 13, Moves.GROWTH ],
|
||||||
[ 16, Moves.LEAF_TORNADO ],
|
[ 16, Moves.MAGICAL_LEAF ],
|
||||||
[ 20, Moves.LEECH_SEED ],
|
[ 20, Moves.LEECH_SEED ],
|
||||||
[ 24, Moves.MEGA_DRAIN ],
|
[ 24, Moves.MEGA_DRAIN ],
|
||||||
[ 28, Moves.SLAM ],
|
[ 28, Moves.SLAM ],
|
||||||
[ 32, Moves.LEAF_BLADE ],
|
[ 32, Moves.LEAF_BLADE ],
|
||||||
[ 38, Moves.COIL ],
|
[ 38, Moves.COIL ],
|
||||||
[ 44, Moves.GIGA_DRAIN ],
|
[ 44, Moves.GIGA_DRAIN ],
|
||||||
[ 50, Moves.WRING_OUT ],
|
[ 50, Moves.GASTRO_ACID ],
|
||||||
[ 56, Moves.GASTRO_ACID ],
|
[ 56, Moves.LEAF_STORM ],
|
||||||
[ 62, Moves.LEAF_STORM ],
|
|
||||||
],
|
],
|
||||||
[Species.TEPIG]: [
|
[Species.TEPIG]: [
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
[ 3, Moves.TAIL_WHIP ],
|
[ 3, Moves.TAIL_WHIP ],
|
||||||
[ 7, Moves.EMBER ],
|
[ 7, Moves.EMBER ],
|
||||||
[ 9, Moves.ODOR_SLEUTH ],
|
[ 9, Moves.ENDURE ],
|
||||||
[ 13, Moves.DEFENSE_CURL ],
|
[ 13, Moves.DEFENSE_CURL ],
|
||||||
[ 15, Moves.FLAME_CHARGE ],
|
[ 15, Moves.FLAME_CHARGE ],
|
||||||
[ 19, Moves.SMOG ],
|
[ 19, Moves.SMOG ],
|
||||||
@ -8337,7 +8370,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
[ 1, Moves.TAIL_WHIP ],
|
[ 1, Moves.TAIL_WHIP ],
|
||||||
[ 1, Moves.EMBER ],
|
[ 1, Moves.EMBER ],
|
||||||
[ 1, Moves.ODOR_SLEUTH ],
|
[ 1, Moves.ENDURE ],
|
||||||
[ 13, Moves.DEFENSE_CURL ],
|
[ 13, Moves.DEFENSE_CURL ],
|
||||||
[ 15, Moves.FLAME_CHARGE ],
|
[ 15, Moves.FLAME_CHARGE ],
|
||||||
[ 20, Moves.SMOG ],
|
[ 20, Moves.SMOG ],
|
||||||
@ -8355,7 +8388,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 1, Moves.TAIL_WHIP ],
|
[ 1, Moves.TAIL_WHIP ],
|
||||||
[ 1, Moves.EMBER ],
|
[ 1, Moves.EMBER ],
|
||||||
[ 1, Moves.ARM_THRUST ],
|
[ 1, Moves.ARM_THRUST ],
|
||||||
[ 1, Moves.ODOR_SLEUTH ],
|
[ 1, Moves.ENDURE ],
|
||||||
[ 1, Moves.HAMMER_ARM ],
|
[ 1, Moves.HAMMER_ARM ],
|
||||||
[ 13, Moves.DEFENSE_CURL ],
|
[ 13, Moves.DEFENSE_CURL ],
|
||||||
[ 15, Moves.FLAME_CHARGE ],
|
[ 15, Moves.FLAME_CHARGE ],
|
||||||
@ -8701,23 +8734,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
|
|||||||
[ 11, Moves.SHOCK_WAVE ],
|
[ 11, Moves.SHOCK_WAVE ],
|
||||||
[ 15, Moves.THUNDER_WAVE ],
|
[ 15, Moves.THUNDER_WAVE ],
|
||||||
[ 18, Moves.FLAME_CHARGE ],
|
[ 18, Moves.FLAME_CHARGE ],
|
||||||
[ 22, Moves.PURSUIT ],
|
[ 22, Moves.SPARK ],
|
||||||
[ 25, Moves.SPARK ],
|
[ 25, Moves.STOMP ],
|
||||||
[ 29, Moves.STOMP ],
|
[ 29, Moves.DISCHARGE ],
|
||||||
[ 32, Moves.DISCHARGE ],
|
[ 33, Moves.AGILITY ],
|
||||||
[ 36, Moves.AGILITY ],
|
[ 35, Moves.WILD_CHARGE ],
|
||||||
[ 39, Moves.WILD_CHARGE ],
|
[ 40, Moves.THRASH ],
|
||||||
[ 43, Moves.THRASH ],
|
|
||||||
],
|
],
|
||||||
[Species.ZEBSTRIKA]: [
|
[Species.ZEBSTRIKA]: [
|
||||||
[ 1, Moves.TAIL_WHIP ],
|
[ 1, Moves.TAIL_WHIP ],
|
||||||
[ 1, Moves.THUNDER_WAVE ],
|
[ 1, Moves.THUNDER_WAVE ],
|
||||||
[ 1, Moves.QUICK_ATTACK ],
|
[ 1, Moves.QUICK_ATTACK ],
|
||||||
[ 1, Moves.CHARGE ],
|
[ 1, Moves.CHARGE ],
|
||||||
[ 1, Moves.ION_DELUGE ],
|
|
||||||
[ 11, Moves.SHOCK_WAVE ],
|
[ 11, Moves.SHOCK_WAVE ],
|
||||||
[ 18, Moves.FLAME_CHARGE ],
|
[ 18, Moves.FLAME_CHARGE ],
|
||||||
[ 22, Moves.PURSUIT ],
|
|
||||||
[ 25, Moves.SPARK ],
|
[ 25, Moves.SPARK ],
|
||||||
[ 31, Moves.STOMP ],
|
[ 31, Moves.STOMP ],
|
||||||
[ 36, Moves.DISCHARGE ],
|
[ 36, Moves.DISCHARGE ],
|
||||||
@ -18160,12 +18190,14 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = {
|
|||||||
[ 1, Moves.PROTECT ],
|
[ 1, Moves.PROTECT ],
|
||||||
[ 1, Moves.SUCKER_PUNCH ],
|
[ 1, Moves.SUCKER_PUNCH ],
|
||||||
[ 1, Moves.BUG_BITE ],
|
[ 1, Moves.BUG_BITE ],
|
||||||
[ 20, Moves.HIDDEN_POWER ],
|
[ 1, Moves.PROTECT ],
|
||||||
|
[ 10, Moves.TACKLE ],
|
||||||
|
[ 20, Moves.STRING_SHOT ],
|
||||||
[ 23, Moves.CONFUSION ],
|
[ 23, Moves.CONFUSION ],
|
||||||
[ 26, Moves.ROCK_BLAST ],
|
[ 26, Moves.ROCK_BLAST ],
|
||||||
[ 29, Moves.HARDEN ],
|
[ 29, Moves.HARDEN ],
|
||||||
[ 32, Moves.PSYBEAM ],
|
[ 32, Moves.PSYBEAM ],
|
||||||
[ 35, Moves.CAPTIVATE ],
|
[ 35, Moves.INFESTATION ],
|
||||||
[ 38, Moves.FLAIL ],
|
[ 38, Moves.FLAIL ],
|
||||||
[ 41, Moves.ATTRACT ],
|
[ 41, Moves.ATTRACT ],
|
||||||
[ 44, Moves.PSYCHIC ],
|
[ 44, Moves.PSYCHIC ],
|
||||||
@ -18174,17 +18206,19 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = {
|
|||||||
],
|
],
|
||||||
2: [
|
2: [
|
||||||
[ 0, Moves.QUIVER_DANCE ],
|
[ 0, Moves.QUIVER_DANCE ],
|
||||||
|
[ 1, Moves.METAL_BURST ],
|
||||||
[ 1, Moves.TACKLE ],
|
[ 1, Moves.TACKLE ],
|
||||||
[ 1, Moves.PROTECT ],
|
[ 1, Moves.PROTECT ],
|
||||||
[ 1, Moves.METAL_BURST ],
|
|
||||||
[ 1, Moves.SUCKER_PUNCH ],
|
[ 1, Moves.SUCKER_PUNCH ],
|
||||||
[ 1, Moves.BUG_BITE ],
|
[ 1, Moves.BUG_BITE ],
|
||||||
[ 20, Moves.HIDDEN_POWER ],
|
[ 1, Moves.PROTECT ],
|
||||||
|
[ 10, Moves.TACKLE ],
|
||||||
|
[ 20, Moves.STRING_SHOT ],
|
||||||
[ 23, Moves.CONFUSION ],
|
[ 23, Moves.CONFUSION ],
|
||||||
[ 26, Moves.MIRROR_SHOT ],
|
[ 26, Moves.METAL_BURST ],
|
||||||
[ 29, Moves.METAL_SOUND ],
|
[ 29, Moves.METAL_SOUND ],
|
||||||
[ 32, Moves.PSYBEAM ],
|
[ 32, Moves.PSYBEAM ],
|
||||||
[ 35, Moves.CAPTIVATE ],
|
[ 35, Moves.INFESTATION ],
|
||||||
[ 38, Moves.FLAIL ],
|
[ 38, Moves.FLAIL ],
|
||||||
[ 41, Moves.ATTRACT ],
|
[ 41, Moves.ATTRACT ],
|
||||||
[ 44, Moves.PSYCHIC ],
|
[ 44, Moves.PSYCHIC ],
|
||||||
@ -18289,21 +18323,21 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = {
|
|||||||
},
|
},
|
||||||
[Species.GRENINJA]: {
|
[Species.GRENINJA]: {
|
||||||
1: [
|
1: [
|
||||||
|
[ 0, Moves.WATER_SHURIKEN ],
|
||||||
[ 0, Moves.WATER_SHURIKEN ],
|
[ 0, Moves.WATER_SHURIKEN ],
|
||||||
[ 1, Moves.POUND ],
|
[ 1, Moves.POUND ],
|
||||||
[ 1, Moves.GROWL ],
|
[ 1, Moves.GROWL ],
|
||||||
|
[ 1, Moves.WATER_GUN ],
|
||||||
[ 1, Moves.QUICK_ATTACK ],
|
[ 1, Moves.QUICK_ATTACK ],
|
||||||
[ 1, Moves.HAZE ],
|
[ 1, Moves.HAZE ],
|
||||||
[ 1, Moves.BUBBLE ],
|
|
||||||
[ 1, Moves.ROLE_PLAY ],
|
[ 1, Moves.ROLE_PLAY ],
|
||||||
[ 1, Moves.NIGHT_SLASH ],
|
[ 1, Moves.NIGHT_SLASH ],
|
||||||
[ 1, Moves.MAT_BLOCK ],
|
|
||||||
[ 10, Moves.LICK ],
|
[ 10, Moves.LICK ],
|
||||||
[ 14, Moves.WATER_PULSE ],
|
[ 14, Moves.WATER_PULSE ],
|
||||||
[ 19, Moves.SMOKESCREEN ],
|
[ 19, Moves.SMOKESCREEN ],
|
||||||
[ 23, Moves.SHADOW_SNEAK ],
|
[ 23, Moves.SHADOW_SNEAK ],
|
||||||
[ 28, Moves.SPIKES ],
|
[ 28, Moves.SPIKES ],
|
||||||
[ 33, Moves.FEINT_ATTACK ],
|
[ 33, Moves.AERIAL_ACE ],
|
||||||
[ 42, Moves.SUBSTITUTE ],
|
[ 42, Moves.SUBSTITUTE ],
|
||||||
[ 49, Moves.EXTRASENSORY ],
|
[ 49, Moves.EXTRASENSORY ],
|
||||||
[ 56, Moves.DOUBLE_TEAM ],
|
[ 56, Moves.DOUBLE_TEAM ],
|
||||||
|
@ -670,8 +670,9 @@ export default class PokemonSpecies extends PokemonSpeciesForm {
|
|||||||
const legendary = this.legendary;
|
const legendary = this.legendary;
|
||||||
const mythical = this.mythical;
|
const mythical = this.mythical;
|
||||||
return species => {
|
return species => {
|
||||||
return pokemonEvolutions.hasOwnProperty(species.speciesId) === hasEvolution
|
return (pseudoLegendary || legendary || mythical ||
|
||||||
&& pokemonPrevolutions.hasOwnProperty(species.speciesId) === hasPrevolution
|
(pokemonEvolutions.hasOwnProperty(species.speciesId) === hasEvolution
|
||||||
|
&& pokemonPrevolutions.hasOwnProperty(species.speciesId) === hasPrevolution))
|
||||||
&& species.pseudoLegendary === pseudoLegendary
|
&& species.pseudoLegendary === pseudoLegendary
|
||||||
&& species.legendary === legendary
|
&& species.legendary === legendary
|
||||||
&& species.mythical === mythical
|
&& species.mythical === mythical
|
||||||
@ -3233,7 +3234,7 @@ export const starterPassiveAbilities = {
|
|||||||
[Species.ZIGZAGOON]: Abilities.PICKPOCKET,
|
[Species.ZIGZAGOON]: Abilities.PICKPOCKET,
|
||||||
[Species.WURMPLE]: Abilities.TINTED_LENS,
|
[Species.WURMPLE]: Abilities.TINTED_LENS,
|
||||||
[Species.LOTAD]: Abilities.DRIZZLE,
|
[Species.LOTAD]: Abilities.DRIZZLE,
|
||||||
[Species.SEEDOT]: Abilities.DISGUISE,
|
[Species.SEEDOT]: Abilities.EARLY_BIRD,
|
||||||
[Species.TAILLOW]: Abilities.KEEN_EYE,
|
[Species.TAILLOW]: Abilities.KEEN_EYE,
|
||||||
[Species.WINGULL]: Abilities.HYDRATION,
|
[Species.WINGULL]: Abilities.HYDRATION,
|
||||||
[Species.RALTS]: Abilities.PSYCHIC_SURGE,
|
[Species.RALTS]: Abilities.PSYCHIC_SURGE,
|
||||||
@ -3408,7 +3409,7 @@ export const starterPassiveAbilities = {
|
|||||||
[Species.AXEW]: Abilities.SHEER_FORCE,
|
[Species.AXEW]: Abilities.SHEER_FORCE,
|
||||||
[Species.CUBCHOO]: Abilities.INTIMIDATE,
|
[Species.CUBCHOO]: Abilities.INTIMIDATE,
|
||||||
[Species.CRYOGONAL]: Abilities.DAZZLING,
|
[Species.CRYOGONAL]: Abilities.DAZZLING,
|
||||||
[Species.SHELMET]: Abilities.DISGUISE,
|
[Species.SHELMET]: Abilities.TOXIC_DEBRIS,
|
||||||
[Species.STUNFISK]: Abilities.STORM_DRAIN,
|
[Species.STUNFISK]: Abilities.STORM_DRAIN,
|
||||||
[Species.MIENFOO]: Abilities.NO_GUARD,
|
[Species.MIENFOO]: Abilities.NO_GUARD,
|
||||||
[Species.DRUDDIGON]: Abilities.INTIMIDATE,
|
[Species.DRUDDIGON]: Abilities.INTIMIDATE,
|
||||||
@ -3638,7 +3639,7 @@ export const starterPassiveAbilities = {
|
|||||||
[Species.OKIDOGI]: Abilities.INTIMIDATE,
|
[Species.OKIDOGI]: Abilities.INTIMIDATE,
|
||||||
[Species.MUNKIDORI]: Abilities.PRANKSTER,
|
[Species.MUNKIDORI]: Abilities.PRANKSTER,
|
||||||
[Species.FEZANDIPITI]: Abilities.DAZZLING,
|
[Species.FEZANDIPITI]: Abilities.DAZZLING,
|
||||||
[Species.OGERPON]: Abilities.DISGUISE,
|
[Species.OGERPON]: Abilities.UNNERVE,
|
||||||
[Species.GOUGING_FIRE]: Abilities.BEAST_BOOST,
|
[Species.GOUGING_FIRE]: Abilities.BEAST_BOOST,
|
||||||
[Species.RAGING_BOLT]: Abilities.BEAST_BOOST,
|
[Species.RAGING_BOLT]: Abilities.BEAST_BOOST,
|
||||||
[Species.IRON_BOULDER]: Abilities.SHARPNESS,
|
[Species.IRON_BOULDER]: Abilities.SHARPNESS,
|
||||||
|
@ -25,7 +25,7 @@ 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 { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs } from '../data/ability';
|
import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr } from '../data/ability';
|
||||||
import { Abilities } from "#app/data/enums/abilities";
|
import { Abilities } from "#app/data/enums/abilities";
|
||||||
import PokemonData from '../system/pokemon-data';
|
import PokemonData from '../system/pokemon-data';
|
||||||
import Battle, { BattlerIndex } from '../battle';
|
import Battle, { BattlerIndex } from '../battle';
|
||||||
@ -748,8 +748,23 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
if (passive && !this.hasPassive())
|
if (passive && !this.hasPassive())
|
||||||
return false;
|
return false;
|
||||||
const ability = (!passive ? this.getAbility() : this.getPassiveAbility());
|
const ability = (!passive ? this.getAbility() : this.getPassiveAbility());
|
||||||
if (ability.isIgnorable && this.scene.arena.ignoreAbilities)
|
if (this.isFusion() && ability.hasAttr(NoFusionAbilityAbAttr))
|
||||||
return false;
|
return false;
|
||||||
|
if (this.scene?.arena.ignoreAbilities && ability.isIgnorable)
|
||||||
|
return false;
|
||||||
|
if (this.summonData?.abilitySuppressed && !ability.hasAttr(UnsuppressableAbilityAbAttr))
|
||||||
|
return false;
|
||||||
|
if (this.isOnField() && !ability.hasAttr(SuppressFieldAbilitiesAbAttr)) {
|
||||||
|
const suppressed = new Utils.BooleanHolder(false);
|
||||||
|
this.scene.getField(true).map(p => {
|
||||||
|
if (p.getAbility().hasAttr(SuppressFieldAbilitiesAbAttr) && p.canApplyAbility())
|
||||||
|
p.getAbility().getAttrs(SuppressFieldAbilitiesAbAttr).map(a => a.apply(this, false, suppressed, [ability]));
|
||||||
|
if (p.getPassiveAbility().hasAttr(SuppressFieldAbilitiesAbAttr) && p.canApplyAbility(true))
|
||||||
|
p.getPassiveAbility().getAttrs(SuppressFieldAbilitiesAbAttr).map(a => a.apply(this, true, suppressed, [ability]));
|
||||||
|
});
|
||||||
|
if (suppressed.value)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return (this.hp || ability.isBypassFaint) && !ability.conditions.find(condition => !condition(this));
|
return (this.hp || ability.isBypassFaint) && !ability.conditions.find(condition => !condition(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1191,8 +1206,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
if (cancelled.value)
|
if (cancelled.value)
|
||||||
result = HitResult.NO_EFFECT;
|
result = HitResult.NO_EFFECT;
|
||||||
else {
|
else {
|
||||||
if (source.findTag(t => t instanceof TypeBoostTag && (t as TypeBoostTag).boostedType === type))
|
let typeBoost = source.findTag(t => t instanceof TypeBoostTag && (t as TypeBoostTag).boostedType === type) as TypeBoostTag;
|
||||||
power.value *= 1.5;
|
if (typeBoost) {
|
||||||
|
power.value *= typeBoost.boostValue;
|
||||||
|
if (typeBoost.oneUse) {
|
||||||
|
this.removeTag(typeBoost.tagType);
|
||||||
|
}
|
||||||
|
}
|
||||||
const arenaAttackTypeMultiplier = this.scene.arena.getAttackTypeMultiplier(type, source.isGrounded());
|
const arenaAttackTypeMultiplier = this.scene.arena.getAttackTypeMultiplier(type, source.isGrounded());
|
||||||
if (this.scene.arena.getTerrainType() === TerrainType.GRASSY && this.isGrounded() && type === Type.GROUND && move.moveTarget === MoveTarget.ALL_NEAR_OTHERS)
|
if (this.scene.arena.getTerrainType() === TerrainType.GRASSY && this.isGrounded() && type === Type.GROUND && move.moveTarget === MoveTarget.ALL_NEAR_OTHERS)
|
||||||
power.value /= 2;
|
power.value /= 2;
|
||||||
@ -2832,6 +2852,7 @@ export class PokemonSummonData {
|
|||||||
public disabledMove: Moves = Moves.NONE;
|
public disabledMove: Moves = Moves.NONE;
|
||||||
public disabledTurns: integer = 0;
|
public disabledTurns: integer = 0;
|
||||||
public tags: BattlerTag[] = [];
|
public tags: BattlerTag[] = [];
|
||||||
|
public abilitySuppressed: boolean = false;
|
||||||
|
|
||||||
public speciesForm: PokemonSpeciesForm;
|
public speciesForm: PokemonSpeciesForm;
|
||||||
public fusionSpeciesForm: PokemonSpeciesForm;
|
public fusionSpeciesForm: PokemonSpeciesForm;
|
||||||
|
@ -1,11 +1,4 @@
|
|||||||
interface MoveTranslationEntry {
|
import { MoveTranslations } from "#app/plugins/i18n";
|
||||||
name: string,
|
|
||||||
effect: string
|
|
||||||
}
|
|
||||||
|
|
||||||
interface MoveTranslations {
|
|
||||||
[key: string]: MoveTranslationEntry
|
|
||||||
}
|
|
||||||
|
|
||||||
export const move: MoveTranslations = {
|
export const move: MoveTranslations = {
|
||||||
"pound": {
|
"pound": {
|
||||||
@ -2549,8 +2542,8 @@ export const move: MoveTranslations = {
|
|||||||
effect: "Dummy Data"
|
effect: "Dummy Data"
|
||||||
},
|
},
|
||||||
"neverEndingNightmarePhysical": {
|
"neverEndingNightmarePhysical": {
|
||||||
name: "Deep-seated grudges summoned by the user's Z-Power trap the target. The power varies, depending on the original move.",
|
name: "Never-Ending Nightmare",
|
||||||
effect: "Dummy Data"
|
effect: "Deep-seated grudges summoned by the user's Z-Power trap the target. The power varies, depending on the original move."
|
||||||
},
|
},
|
||||||
"neverEndingNightmareSpecial": {
|
"neverEndingNightmareSpecial": {
|
||||||
name: "Never-Ending Nightmare",
|
name: "Never-Ending Nightmare",
|
||||||
@ -3408,6 +3401,138 @@ export const move: MoveTranslations = {
|
|||||||
name: "Take Heart",
|
name: "Take Heart",
|
||||||
effect: "The user lifts its spirits, curing its own status conditions and boosting its Sp. Atk and Sp. Def stats."
|
effect: "The user lifts its spirits, curing its own status conditions and boosting its Sp. Atk and Sp. Def stats."
|
||||||
},
|
},
|
||||||
|
"gMaxWildfire": {
|
||||||
|
name: "G-Max Wildfire",
|
||||||
|
effect: "A Fire-type attack that Gigantamax Charizard use. This move continues to deal damage to opponents for four turns."
|
||||||
|
},
|
||||||
|
"gMaxBefuddle": {
|
||||||
|
name: "G-Max Befuddle",
|
||||||
|
effect: "A Bug-type attack that Gigantamax Butterfree use. This move inflicts the poisoned, paralyzed, or asleep status condition on opponents."
|
||||||
|
},
|
||||||
|
"gMaxVoltCrash": {
|
||||||
|
name: "G-Max Volt Crash",
|
||||||
|
effect: "An Electric-type attack that Gigantamax Pikachu use. This move paralyzes opponents."
|
||||||
|
},
|
||||||
|
"gMaxGoldRush": {
|
||||||
|
name: "G-Max Gold Rush",
|
||||||
|
effect: "A Normal-type attack that Gigantamax Meowth use. This move confuses opponents and also earns extra money."
|
||||||
|
},
|
||||||
|
"gMaxChiStrike": {
|
||||||
|
name: "G-Max Chi Strike",
|
||||||
|
effect: "A Fighting-type attack that Gigantamax Machamp use. This move raises the chance of critical hits."
|
||||||
|
},
|
||||||
|
"gMaxTerror": {
|
||||||
|
name: "G-Max Terror",
|
||||||
|
effect: "A Ghost-type attack that Gigantamax Gengar use. This Pokémon steps on the opposing Pokémon's shadow to prevent them from escaping."
|
||||||
|
},
|
||||||
|
"gMaxResonance": {
|
||||||
|
name: "G-Max Resonance",
|
||||||
|
effect: "An Ice-type attack that Gigantamax Lapras use. This move reduces the damage received for five turns."
|
||||||
|
},
|
||||||
|
"gMaxCuddle": {
|
||||||
|
name: "G-Max Cuddle",
|
||||||
|
effect: "A Normal-type attack that Gigantamax Eevee use. This move infatuates opponents."
|
||||||
|
},
|
||||||
|
"gMaxReplenish": {
|
||||||
|
name: "G-Max Replenish",
|
||||||
|
effect: "A Normal-type attack that Gigantamax Snorlax use. This move restores Berries that have been eaten."
|
||||||
|
},
|
||||||
|
"gMaxMalodor": {
|
||||||
|
name: "G-Max Malodor",
|
||||||
|
effect: "A Poison-type attack that Gigantamax Garbodor use. This move poisons opponents."
|
||||||
|
},
|
||||||
|
"gMaxStonesurge": {
|
||||||
|
name: "G-Max Stonesurge",
|
||||||
|
effect: "A Water-type attack that Gigantamax Drednaw use. This move scatters sharp rocks around the field."
|
||||||
|
},
|
||||||
|
"gMaxWindRage": {
|
||||||
|
name: "G-Max Wind Rage",
|
||||||
|
effect: "A Flying-type attack that Gigantamax Corviknight use. This move removes the effects of moves like Reflect and Light Screen."
|
||||||
|
},
|
||||||
|
"gMaxStunShock": {
|
||||||
|
name: "G-Max Stun Shock",
|
||||||
|
effect: "An Electric-type attack that Gigantamax Toxtricity use. This move poisons or paralyzes opponents."
|
||||||
|
},
|
||||||
|
"gMaxFinale": {
|
||||||
|
name: "G-Max Finale",
|
||||||
|
effect: "A Fairy-type attack that Gigantamax Alcremie use. This move heals the HP of allies."
|
||||||
|
},
|
||||||
|
"gMaxDepletion": {
|
||||||
|
name: "G-Max Depletion",
|
||||||
|
effect: "A Dragon-type attack that Gigantamax Duraludon use. Reduces the PP of the last move used."
|
||||||
|
},
|
||||||
|
"gMaxGravitas": {
|
||||||
|
name: "G-Max Gravitas",
|
||||||
|
effect: "A Psychic-type attack that Gigantamax Orbeetle use. This move changes gravity for five turns."
|
||||||
|
},
|
||||||
|
"gMaxVolcalith": {
|
||||||
|
name: "G-Max Volcalith",
|
||||||
|
effect: "A Rock-type attack that Gigantamax Coalossal use. This move continues to deal damage to opponents for four turns."
|
||||||
|
},
|
||||||
|
"gMaxSandblast": {
|
||||||
|
name: "G-Max Sandblast",
|
||||||
|
effect: "A Ground-type attack that Gigantamax Sandaconda use. Opponents are trapped in a raging sandstorm for four to five turns."
|
||||||
|
},
|
||||||
|
"gMaxSnooze": {
|
||||||
|
name: "G-Max Snooze",
|
||||||
|
effect: "A Dark-type attack that Gigantamax Grimmsnarl use. The user lets loose a huge yawn that lulls the targets into falling asleep on the next turn."
|
||||||
|
},
|
||||||
|
"gMaxTartness": {
|
||||||
|
name: "G-Max Tartness",
|
||||||
|
effect: "A Grass-type attack that Gigantamax Flapple use. This move reduces the opponents' evasiveness."
|
||||||
|
},
|
||||||
|
"gMaxSweetness": {
|
||||||
|
name: "G-Max Sweetness",
|
||||||
|
effect: "A Grass-type attack that Gigantamax Appletun use. This move heals the status conditions of allies."
|
||||||
|
},
|
||||||
|
"gMaxSmite": {
|
||||||
|
name: "G-Max Smite",
|
||||||
|
effect: "A Fairy-type attack that Gigantamax Hatterene use. This move confuses opponents."
|
||||||
|
},
|
||||||
|
"gMaxSteelsurge": {
|
||||||
|
name: "G-Max Steelsurge",
|
||||||
|
effect: "A Steel-type attack that Gigantamax Copperajah use. This move scatters sharp spikes around the field."
|
||||||
|
},
|
||||||
|
"gMaxMeltdown": {
|
||||||
|
name: "G-Max Meltdown",
|
||||||
|
effect: "A Steel-type attack that Gigantamax Melmetal use. This move makes opponents incapable of using the same move twice in a row."
|
||||||
|
},
|
||||||
|
"gMaxFoamBurst": {
|
||||||
|
name: "G-Max Foam Burst",
|
||||||
|
effect: "A Water-type attack that Gigantamax Kingler use. This move harshly lowers the Speed of opponents."
|
||||||
|
},
|
||||||
|
"gMaxCentiferno": {
|
||||||
|
name: "G-Max Centiferno",
|
||||||
|
effect: "A Fire-type attack that Gigantamax Centiskorch use. This move traps opponents in flames for four to five turns."
|
||||||
|
},
|
||||||
|
"gMaxVineLash": {
|
||||||
|
name: "G-Max Vine Lash",
|
||||||
|
effect: "A Grass-type attack that Gigantamax Venusaur use. This move continues to deal damage to opponents for four turns."
|
||||||
|
},
|
||||||
|
"gMaxCannonade": {
|
||||||
|
name: "G-Max Cannonade",
|
||||||
|
effect: "A Water-type attack that Gigantamax Blastoise use. This move continues to deal damage to opponents for four turns."
|
||||||
|
},
|
||||||
|
"gMaxDrumSolo": {
|
||||||
|
name: "G-Max Drum Solo",
|
||||||
|
effect: "A Grass-type attack that Gigantamax Rillaboom use. This move can be used on the target regardless of its Abilities."
|
||||||
|
},
|
||||||
|
"gMaxFireball": {
|
||||||
|
name: "G-Max Fireball",
|
||||||
|
effect: "A Fire-type attack that Gigantamax Cinderace use. This move can be used on the target regardless of its Abilities."
|
||||||
|
},
|
||||||
|
"gMaxHydrosnipe": {
|
||||||
|
name: "G-Max Hydrosnipe",
|
||||||
|
effect: "A Water-type attack that Gigantamax Inteleon use. This move can be used on the target regardless of its Abilities."
|
||||||
|
},
|
||||||
|
"gMaxOneBlow": {
|
||||||
|
name: "G-Max One Blow",
|
||||||
|
effect: "A Dark-type attack that Gigantamax Urshifu use. This single-strike move can ignore Max Guard."
|
||||||
|
},
|
||||||
|
"gMaxRapidFlow": {
|
||||||
|
name: "G-Max Rapid Flow",
|
||||||
|
effect: "A Water-type attack that Gigantamax Urshifu use. This rapid-strike move can ignore Max Guard."
|
||||||
|
},
|
||||||
"teraBlast": {
|
"teraBlast": {
|
||||||
name: "Tera Blast",
|
name: "Tera Blast",
|
||||||
effect: "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."
|
effect: "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."
|
||||||
|
39
src/locales/fr/menu.ts
Normal file
39
src/locales/fr/menu.ts
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
export const menu = {
|
||||||
|
"cancel": "Annuler",
|
||||||
|
"continue": "Continuer",
|
||||||
|
"dailyRun": "Défi du jour (Bêta)",
|
||||||
|
"loadGame": "Charger la partie",
|
||||||
|
"newGame": "Nouvelle partie",
|
||||||
|
"selectGameMode": "Sélectionnez un mode de jeu.",
|
||||||
|
"logInOrCreateAccount": "Connectez-vous ou créez un compte pour commencer. Aucun e-mail requis !",
|
||||||
|
"failedToLoadSaveData": "Échec du chargement des données. Veuillez recharger la page.\nSi cela continue, veuillez contacter l'administrateur.",
|
||||||
|
"sessionSuccess": "Session chargée avec succès.",
|
||||||
|
"failedToLoadSession": "Vos données de session n'ont pas pu être chargées.\nElles pourraient être corrompues.",
|
||||||
|
"boyOrGirl": "Es-tu un garçon ou une fille ?",
|
||||||
|
"boy": "Garçon",
|
||||||
|
"girl": "Fille",
|
||||||
|
"bossAppeared": "Un {{bossName}} est apparaît.",
|
||||||
|
"trainerAppeared": "Un combat est lancé\npar {{trainerName}} !",
|
||||||
|
"singleWildAppeared": "Un {{pokemonName}} sauvage apparaît!",
|
||||||
|
"multiWildAppeared": "Un {{pokemonName1}} et un {{pokemonName2}}\nsauvages apparaissent !",
|
||||||
|
"playerComeBack": "{{pokemonName}}, on change!\nReviens !",
|
||||||
|
"trainerComeBack": "{{trainerName}} retire {{pokemonName}} !",
|
||||||
|
"playerGo": "{{pokemonName}} ! Go !",
|
||||||
|
"trainerGo": "{{pokemonName}} est envoyé par\n{{trainerName}} !",
|
||||||
|
"switchQuestion": "Voulez-vous changer\n{{pokemonName}} ?",
|
||||||
|
"pokemon": "Pokémon",
|
||||||
|
"sendOutPokemon": "{{pokemonName}} ! Go !",
|
||||||
|
"levelCapUp": "La limite de niveau\na été augmentée à {{levelCap}} !",
|
||||||
|
"moveNotImplemented": "{{moveName}} n'est pas encore implémenté et ne peut pas être sélectionné.",
|
||||||
|
"moveDisabled": "{{moveName}} est désactivé !",
|
||||||
|
"noPokeballForce": "Une force mystérieuse\nempêche l'utilisation des Poké Balls.",
|
||||||
|
"noPokeballTrainer": "Le Dresseur détourne la Ball\nVoler, c'est mal !",
|
||||||
|
"noPokeballMulti": "Impossible ! On ne peut pas viser\nquand il y a deux Pokémon!",
|
||||||
|
"noPokeballStrong": "Le Pokémon est trop fort pour être capturé !\nVous devez d'abord l'affaiblir !",
|
||||||
|
"noEscapeForce": "Une force mystérieuse\nempêche la fuite.",
|
||||||
|
"noEscapeTrainer": "On ne s'enfuit pas d'un\ncombat de Dresseurs !",
|
||||||
|
"noEscapePokemon": "{{moveName}} de {{pokemonName}}\nempêche {{escapeVerb}} !",
|
||||||
|
"escapeVerbSwitch": "le changement",
|
||||||
|
"escapeVerbFlee": "la fuite",
|
||||||
|
"notDisabled": "{{moveName}} n'est plus désactivé !",
|
||||||
|
} as const;
|
File diff suppressed because it is too large
Load Diff
@ -400,7 +400,7 @@ export class AttackTypeBoosterModifierType extends PokemonHeldItemModifierType i
|
|||||||
public boostPercent: integer;
|
public boostPercent: integer;
|
||||||
|
|
||||||
constructor(moveType: Type, boostPercent: integer) {
|
constructor(moveType: Type, boostPercent: integer) {
|
||||||
super(getAttackTypeBoosterItemName(moveType), `Inceases the power of a Pokémon's ${Utils.toReadableString(Type[moveType])}-type moves by 20%`,
|
super(getAttackTypeBoosterItemName(moveType), `Increases the power of a Pokémon's ${Utils.toReadableString(Type[moveType])}-type moves by 20%`,
|
||||||
(_type, args) => new Modifiers.AttackTypeBoosterModifier(this, (args[0] as Pokemon).id, moveType, boostPercent),
|
(_type, args) => new Modifiers.AttackTypeBoosterModifier(this, (args[0] as Pokemon).id, moveType, boostPercent),
|
||||||
`${getAttackTypeBoosterItemName(moveType).replace(/[ \-]/g, '_').toLowerCase()}`);
|
`${getAttackTypeBoosterItemName(moveType).replace(/[ \-]/g, '_').toLowerCase()}`);
|
||||||
|
|
||||||
|
@ -742,6 +742,7 @@ export class EncounterPhase extends BattlePhase {
|
|||||||
this.scene.ui.setMode(Mode.MESSAGE).then(() => {
|
this.scene.ui.setMode(Mode.MESSAGE).then(() => {
|
||||||
if (!this.loaded) {
|
if (!this.loaded) {
|
||||||
this.scene.gameData.saveSystem().then(success => {
|
this.scene.gameData.saveSystem().then(success => {
|
||||||
|
this.scene.disableMenu = false;
|
||||||
if (!success)
|
if (!success)
|
||||||
return this.scene.reset(true);
|
return this.scene.reset(true);
|
||||||
this.scene.gameData.saveSession(this.scene, true).then(() => this.doEncounter());
|
this.scene.gameData.saveSession(this.scene, true).then(() => this.doEncounter());
|
||||||
@ -2140,10 +2141,8 @@ export class MovePhase extends BattlePhase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!this.followUp) {
|
if (!this.followUp) {
|
||||||
const abilityEffectsIgnored = new Utils.BooleanHolder(false);
|
if (this.move.getMove().checkFlag(MoveFlags.IGNORE_ABILITIES, this.pokemon, null))
|
||||||
this.scene.getField(true).map(p => applyAbAttrs(MoveAbilityBypassAbAttr, p, abilityEffectsIgnored));
|
this.scene.arena.setIgnoreAbilities();
|
||||||
if (abilityEffectsIgnored.value)
|
|
||||||
this.scene.arena.setIgnoreAbilities(true);
|
|
||||||
} else {
|
} else {
|
||||||
this.pokemon.turnData.hitsLeft = undefined;
|
this.pokemon.turnData.hitsLeft = undefined;
|
||||||
this.pokemon.turnData.hitCount = undefined;
|
this.pokemon.turnData.hitCount = undefined;
|
||||||
@ -3220,6 +3219,8 @@ export class TrainerVictoryPhase extends BattlePhase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
|
this.scene.disableMenu = true;
|
||||||
|
|
||||||
this.scene.playBgm(this.scene.currentBattle.trainer.config.victoryBgm);
|
this.scene.playBgm(this.scene.currentBattle.trainer.config.victoryBgm);
|
||||||
|
|
||||||
this.scene.unshiftPhase(new MoneyRewardPhase(this.scene, this.scene.currentBattle.trainer.config.moneyMultiplier));
|
this.scene.unshiftPhase(new MoneyRewardPhase(this.scene, this.scene.currentBattle.trainer.config.moneyMultiplier));
|
||||||
@ -3540,12 +3541,17 @@ export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase {
|
|||||||
this.scene.unshiftPhase(new HidePartyExpBarPhase(this.scene));
|
this.scene.unshiftPhase(new HidePartyExpBarPhase(this.scene));
|
||||||
pokemon.updateInfo();
|
pokemon.updateInfo();
|
||||||
|
|
||||||
|
if (this.scene.expGainsSpeed < 3) {
|
||||||
this.scene.partyExpBar.showPokemonExp(pokemon, exp.value).then(() => {
|
this.scene.partyExpBar.showPokemonExp(pokemon, exp.value).then(() => {
|
||||||
if (newLevel > lastLevel)
|
if (newLevel > lastLevel)
|
||||||
this.end();
|
this.end();
|
||||||
else
|
else
|
||||||
setTimeout(() => this.end(), 500);
|
setTimeout(() => this.end(), 500 / Math.pow(2, this.scene.expGainsSpeed));
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
this.end();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,10 +1,20 @@
|
|||||||
import i18next from 'i18next';
|
import i18next from 'i18next';
|
||||||
import { menu as enMenu } from '../locales/en/menu';
|
import { menu as enMenu } from '../locales/en/menu';
|
||||||
import { menu as itMenu } from '../locales/it/menu';
|
import { menu as itMenu } from '../locales/it/menu';
|
||||||
|
import { menu as frMenu } from '../locales/fr/menu';
|
||||||
|
|
||||||
import { move as enMove } from '../locales/en/move';
|
import { move as enMove } from '../locales/en/move';
|
||||||
import { move as frMove } from '../locales/fr/move';
|
import { move as frMove } from '../locales/fr/move';
|
||||||
|
|
||||||
|
export interface MoveTranslationEntry {
|
||||||
|
name: string,
|
||||||
|
effect: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MoveTranslations {
|
||||||
|
[key: string]: MoveTranslationEntry
|
||||||
|
}
|
||||||
|
|
||||||
const DEFAULT_LANGUAGE_OVERRIDE = '';
|
const DEFAULT_LANGUAGE_OVERRIDE = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -35,6 +45,7 @@ i18next.init({
|
|||||||
menu: itMenu,
|
menu: itMenu,
|
||||||
},
|
},
|
||||||
fr: {
|
fr: {
|
||||||
|
menu: frMenu,
|
||||||
move: frMove,
|
move: frMove,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -16,6 +16,7 @@ export enum Setting {
|
|||||||
Sprite_Set = "SPRITE_SET",
|
Sprite_Set = "SPRITE_SET",
|
||||||
Move_Animations = "MOVE_ANIMATIONS",
|
Move_Animations = "MOVE_ANIMATIONS",
|
||||||
Show_Stats_on_Level_Up = "SHOW_LEVEL_UP_STATS",
|
Show_Stats_on_Level_Up = "SHOW_LEVEL_UP_STATS",
|
||||||
|
EXP_Gains_Speed = "EXP_GAINS_SPEED",
|
||||||
HP_Bar_Speed = "HP_BAR_SPEED",
|
HP_Bar_Speed = "HP_BAR_SPEED",
|
||||||
Fusion_Palette_Swaps = "FUSION_PALETTE_SWAPS",
|
Fusion_Palette_Swaps = "FUSION_PALETTE_SWAPS",
|
||||||
Player_Gender = "PLAYER_GENDER",
|
Player_Gender = "PLAYER_GENDER",
|
||||||
@ -45,6 +46,7 @@ export const settingOptions: SettingOptions = {
|
|||||||
[Setting.Sprite_Set]: [ 'Consistent', 'Prioritize Animation' ],
|
[Setting.Sprite_Set]: [ 'Consistent', 'Prioritize Animation' ],
|
||||||
[Setting.Move_Animations]: [ 'Off', 'On' ],
|
[Setting.Move_Animations]: [ 'Off', 'On' ],
|
||||||
[Setting.Show_Stats_on_Level_Up]: [ 'Off', 'On' ],
|
[Setting.Show_Stats_on_Level_Up]: [ 'Off', 'On' ],
|
||||||
|
[Setting.EXP_Gains_Speed]: [ 'Normal', 'Fast', 'Faster', 'Skip' ],
|
||||||
[Setting.HP_Bar_Speed]: [ 'Normal', 'Fast', 'Faster', 'Instant' ],
|
[Setting.HP_Bar_Speed]: [ 'Normal', 'Fast', 'Faster', 'Instant' ],
|
||||||
[Setting.Fusion_Palette_Swaps]: [ 'Off', 'On' ],
|
[Setting.Fusion_Palette_Swaps]: [ 'Off', 'On' ],
|
||||||
[Setting.Player_Gender]: [ 'Boy', 'Girl' ],
|
[Setting.Player_Gender]: [ 'Boy', 'Girl' ],
|
||||||
@ -66,6 +68,7 @@ export const settingDefaults: SettingDefaults = {
|
|||||||
[Setting.Sprite_Set]: 0,
|
[Setting.Sprite_Set]: 0,
|
||||||
[Setting.Move_Animations]: 1,
|
[Setting.Move_Animations]: 1,
|
||||||
[Setting.Show_Stats_on_Level_Up]: 1,
|
[Setting.Show_Stats_on_Level_Up]: 1,
|
||||||
|
[Setting.EXP_Gains_Speed]: 0,
|
||||||
[Setting.HP_Bar_Speed]: 0,
|
[Setting.HP_Bar_Speed]: 0,
|
||||||
[Setting.Fusion_Palette_Swaps]: 1,
|
[Setting.Fusion_Palette_Swaps]: 1,
|
||||||
[Setting.Player_Gender]: 0,
|
[Setting.Player_Gender]: 0,
|
||||||
@ -119,6 +122,9 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer)
|
|||||||
case Setting.Show_Stats_on_Level_Up:
|
case Setting.Show_Stats_on_Level_Up:
|
||||||
scene.showLevelUpStats = settingOptions[setting][value] === 'On';
|
scene.showLevelUpStats = settingOptions[setting][value] === 'On';
|
||||||
break;
|
break;
|
||||||
|
case Setting.EXP_Gains_Speed:
|
||||||
|
scene.expGainsSpeed = value;
|
||||||
|
break;
|
||||||
case Setting.HP_Bar_Speed:
|
case Setting.HP_Bar_Speed:
|
||||||
scene.hpBarSpeed = value;
|
scene.hpBarSpeed = value;
|
||||||
break;
|
break;
|
||||||
|
@ -28,7 +28,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler {
|
|||||||
abstract getFields(): string[];
|
abstract getFields(): string[];
|
||||||
|
|
||||||
getHeight(config?: ModalConfig): number {
|
getHeight(config?: ModalConfig): number {
|
||||||
return 20 * this.getFields().length + (this.getModalTitle() ? 26 : 0) + ((config as FormModalConfig)?.errorMessage ? 12 : 0) + 28;
|
return 20 * this.getFields().length + (this.getModalTitle() ? 26 : 0) + ((config as FormModalConfig)?.errorMessage ? 12 : 0) + this.getButtonTopMargin() + 28;
|
||||||
}
|
}
|
||||||
|
|
||||||
getReadableErrorMessage(error: string): string {
|
getReadableErrorMessage(error: string): string {
|
||||||
@ -67,7 +67,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler {
|
|||||||
this.inputs.push(input);
|
this.inputs.push(input);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.errorMessage = addTextObject(this.scene, 10, (hasTitle ? 31 : 5) + 20 * (fields.length - 1) + 16, '', TextStyle.TOOLTIP_CONTENT);
|
this.errorMessage = addTextObject(this.scene, 10, (hasTitle ? 31 : 5) + 20 * (fields.length - 1) + 16 + this.getButtonTopMargin(), '', TextStyle.TOOLTIP_CONTENT);
|
||||||
this.errorMessage.setColor(this.getTextColor(TextStyle.SUMMARY_PINK));
|
this.errorMessage.setColor(this.getTextColor(TextStyle.SUMMARY_PINK));
|
||||||
this.errorMessage.setShadowColor(this.getTextColor(TextStyle.SUMMARY_PINK, true));
|
this.errorMessage.setShadowColor(this.getTextColor(TextStyle.SUMMARY_PINK, true));
|
||||||
this.errorMessage.setVisible(false);
|
this.errorMessage.setVisible(false);
|
||||||
|
@ -58,7 +58,11 @@ export default class LoginFormUiHandler extends FormModalUiHandler {
|
|||||||
};
|
};
|
||||||
if (!this.inputs[0].text)
|
if (!this.inputs[0].text)
|
||||||
return onFail('Username must not be empty');
|
return onFail('Username must not be empty');
|
||||||
Utils.apiPost('account/login', JSON.stringify({ username: this.inputs[0].text, password: this.inputs[1].text }))
|
const contentType = 'application/x-www-form-urlencoded';
|
||||||
|
const headers = {
|
||||||
|
'Content-Type': contentType,
|
||||||
|
};
|
||||||
|
fetch(`${Utils.apiUrl}/account/login`, { method: 'POST', headers: headers, body: `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}` })
|
||||||
.then(response => {
|
.then(response => {
|
||||||
if (!response.ok)
|
if (!response.ok)
|
||||||
return response.text();
|
return response.text();
|
||||||
|
@ -32,6 +32,10 @@ export abstract class ModalUiHandler extends UiHandler {
|
|||||||
|
|
||||||
abstract getButtonLabels(config?: ModalConfig): string[];
|
abstract getButtonLabels(config?: ModalConfig): string[];
|
||||||
|
|
||||||
|
getButtonTopMargin(): number {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
const ui = this.getUi();
|
const ui = this.getUi();
|
||||||
|
|
||||||
@ -52,6 +56,8 @@ export abstract class ModalUiHandler extends UiHandler {
|
|||||||
|
|
||||||
const buttonLabels = this.getButtonLabels();
|
const buttonLabels = this.getButtonLabels();
|
||||||
|
|
||||||
|
const buttonTopMargin = this.getButtonTopMargin();
|
||||||
|
|
||||||
for (let label of buttonLabels) {
|
for (let label of buttonLabels) {
|
||||||
const buttonLabel = addTextObject(this.scene, 0, 8, label, TextStyle.TOOLTIP_CONTENT);
|
const buttonLabel = addTextObject(this.scene, 0, 8, label, TextStyle.TOOLTIP_CONTENT);
|
||||||
buttonLabel.setOrigin(0.5, 0.5);
|
buttonLabel.setOrigin(0.5, 0.5);
|
||||||
@ -60,7 +66,7 @@ export abstract class ModalUiHandler extends UiHandler {
|
|||||||
buttonBg.setOrigin(0.5, 0);
|
buttonBg.setOrigin(0.5, 0);
|
||||||
buttonBg.setInteractive(new Phaser.Geom.Rectangle(0, 0, buttonBg.width, buttonBg.height), Phaser.Geom.Rectangle.Contains);
|
buttonBg.setInteractive(new Phaser.Geom.Rectangle(0, 0, buttonBg.width, buttonBg.height), Phaser.Geom.Rectangle.Contains);
|
||||||
|
|
||||||
const buttonContainer = this.scene.add.container(0, 0);
|
const buttonContainer = this.scene.add.container(0, buttonTopMargin);
|
||||||
|
|
||||||
this.buttonBgs.push(buttonBg);
|
this.buttonBgs.push(buttonBg);
|
||||||
this.buttonContainers.push(buttonContainer);
|
this.buttonContainers.push(buttonContainer);
|
||||||
|
@ -51,7 +51,7 @@ export default class PartyExpBar extends Phaser.GameObjects.Container {
|
|||||||
this.tween = this.scene.tweens.add({
|
this.tween = this.scene.tweens.add({
|
||||||
targets: this,
|
targets: this,
|
||||||
x: (this.scene.game.canvas.width / 6) - (this.bg.width - 5),
|
x: (this.scene.game.canvas.width / 6) - (this.bg.width - 5),
|
||||||
duration: 500,
|
duration: 500 / Math.pow(2, pokemon.scene.expGainsSpeed),
|
||||||
ease: 'Sine.easeOut',
|
ease: 'Sine.easeOut',
|
||||||
onComplete: () => {
|
onComplete: () => {
|
||||||
this.tween = null;
|
this.tween = null;
|
||||||
|
@ -2,6 +2,7 @@ import { FormModalUiHandler } from "./form-modal-ui-handler";
|
|||||||
import { ModalConfig } from "./modal-ui-handler";
|
import { ModalConfig } from "./modal-ui-handler";
|
||||||
import * as Utils from "../utils";
|
import * as Utils from "../utils";
|
||||||
import { Mode } from "./ui";
|
import { Mode } from "./ui";
|
||||||
|
import { TextStyle, addTextObject } from "./text";
|
||||||
|
|
||||||
export default class RegistrationFormUiHandler extends FormModalUiHandler {
|
export default class RegistrationFormUiHandler extends FormModalUiHandler {
|
||||||
getModalTitle(config?: ModalConfig): string {
|
getModalTitle(config?: ModalConfig): string {
|
||||||
@ -20,6 +21,10 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler {
|
|||||||
return [ 0, 0, 48, 0 ];
|
return [ 0, 0, 48, 0 ];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getButtonTopMargin(): number {
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
||||||
getButtonLabels(config?: ModalConfig): string[] {
|
getButtonLabels(config?: ModalConfig): string[] {
|
||||||
return [ 'Register', 'Back to Login' ];
|
return [ 'Register', 'Back to Login' ];
|
||||||
}
|
}
|
||||||
@ -40,6 +45,14 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler {
|
|||||||
return super.getReadableErrorMessage(error);
|
return super.getReadableErrorMessage(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setup(): void {
|
||||||
|
super.setup();
|
||||||
|
|
||||||
|
const label = addTextObject(this.scene, 10, 87, 'By registering, you confirm you are of 13 years of age or older.', TextStyle.TOOLTIP_CONTENT, { fontSize: '42px' });
|
||||||
|
|
||||||
|
this.modalContainer.add(label);
|
||||||
|
}
|
||||||
|
|
||||||
show(args: any[]): boolean {
|
show(args: any[]): boolean {
|
||||||
if (super.show(args)) {
|
if (super.show(args)) {
|
||||||
const config = args[0] as ModalConfig;
|
const config = args[0] as ModalConfig;
|
||||||
@ -60,11 +73,15 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler {
|
|||||||
return onFail(this.getReadableErrorMessage('invalid password'));
|
return onFail(this.getReadableErrorMessage('invalid password'));
|
||||||
if (this.inputs[1].text !== this.inputs[2].text)
|
if (this.inputs[1].text !== this.inputs[2].text)
|
||||||
return onFail('Password must match confirm password');
|
return onFail('Password must match confirm password');
|
||||||
Utils.apiPost('account/register', JSON.stringify({ username: this.inputs[0].text, password: this.inputs[1].text }))
|
const contentType = 'application/x-www-form-urlencoded';
|
||||||
|
const headers = {
|
||||||
|
'Content-Type': contentType,
|
||||||
|
};
|
||||||
|
fetch(`${Utils.apiUrl}/account/register`, { method: 'POST', headers: headers, body: `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}` })
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(response => {
|
.then(response => {
|
||||||
if (!response) {
|
if (!response) {
|
||||||
Utils.apiPost('account/login', JSON.stringify({ username: this.inputs[0].text, password: this.inputs[1].text }))
|
fetch(`${Utils.apiUrl}/account/login`, { method: 'POST', headers: headers, body: `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}` })
|
||||||
.then(response => {
|
.then(response => {
|
||||||
if (!response.ok)
|
if (!response.ok)
|
||||||
return response.text();
|
return response.text();
|
||||||
|
@ -170,6 +170,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
private starterSelectCallback: StarterSelectCallback;
|
private starterSelectCallback: StarterSelectCallback;
|
||||||
private gameMode: GameModes;
|
private gameMode: GameModes;
|
||||||
|
|
||||||
|
protected blockInput: boolean = false;
|
||||||
|
|
||||||
constructor(scene: BattleScene) {
|
constructor(scene: BattleScene) {
|
||||||
super(scene, Mode.STARTER_SELECT);
|
super(scene, Mode.STARTER_SELECT);
|
||||||
}
|
}
|
||||||
@ -614,6 +616,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
processInput(button: Button): boolean {
|
processInput(button: Button): boolean {
|
||||||
|
if (this.blockInput)
|
||||||
|
return false;
|
||||||
|
|
||||||
const ui = this.getUi();
|
const ui = this.getUi();
|
||||||
|
|
||||||
let success = false;
|
let success = false;
|
||||||
@ -633,6 +638,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
success = true;
|
success = true;
|
||||||
this.updateInstructions();
|
this.updateInstructions();
|
||||||
} else {
|
} else {
|
||||||
|
this.blockInput = true;
|
||||||
this.scene.clearPhaseQueue();
|
this.scene.clearPhaseQueue();
|
||||||
this.scene.pushPhase(new TitlePhase(this.scene));
|
this.scene.pushPhase(new TitlePhase(this.scene));
|
||||||
this.scene.getCurrentPhase().end();
|
this.scene.getCurrentPhase().end();
|
||||||
@ -1631,6 +1637,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
super.clear();
|
super.clear();
|
||||||
this.cursor = -1;
|
this.cursor = -1;
|
||||||
this.starterSelectContainer.setVisible(false);
|
this.starterSelectContainer.setVisible(false);
|
||||||
|
this.blockInput = false;
|
||||||
|
|
||||||
while (this.starterCursors.length)
|
while (this.starterCursors.length)
|
||||||
this.popStarter();
|
this.popStarter();
|
||||||
|
Loading…
Reference in New Issue
Block a user