From d50521755e8bd2d027d4979e94630719c84b37fd Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Thu, 11 Apr 2024 16:30:29 -0400 Subject: [PATCH 01/27] Fix fusion move merge happening after wave end --- src/field/pokemon.ts | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 946c10e82bd..209713adc29 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -2319,25 +2319,24 @@ export class PlayerPokemon extends Pokemon { this.generateName(); this.calculateStats(); this.generateCompatibleTms(); - this.updateInfo(true).then(() => { - const fusedPartyMemberIndex = this.scene.getParty().indexOf(pokemon); - let partyMemberIndex = this.scene.getParty().indexOf(this); - if (partyMemberIndex > fusedPartyMemberIndex) - partyMemberIndex--; - pokemon.getMoveset(true).map(m => this.scene.unshiftPhase(new LearnMovePhase(this.scene, partyMemberIndex, m.getMove().id))); - const fusedPartyMemberHeldModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier - && (m as PokemonHeldItemModifier).pokemonId === pokemon.id, true) as PokemonHeldItemModifier[]; - const transferModifiers: Promise[] = []; - for (let modifier of fusedPartyMemberHeldModifiers) - transferModifiers.push(this.scene.tryTransferHeldItemModifier(modifier, this, true, false, true, true)); - Promise.allSettled(transferModifiers).then(() => { - this.scene.updateModifiers(true, true).then(() => { - this.scene.removePartyMemberModifiers(fusedPartyMemberIndex); - this.scene.getParty().splice(fusedPartyMemberIndex, 1)[0]; - pokemon.destroy(); - this.updateFusionPalette(); - resolve(); - }); + this.updateInfo(true); + const fusedPartyMemberIndex = this.scene.getParty().indexOf(pokemon); + let partyMemberIndex = this.scene.getParty().indexOf(this); + if (partyMemberIndex > fusedPartyMemberIndex) + partyMemberIndex--; + pokemon.getMoveset(true).map(m => this.scene.unshiftPhase(new LearnMovePhase(this.scene, partyMemberIndex, m.getMove().id))); + const fusedPartyMemberHeldModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + && (m as PokemonHeldItemModifier).pokemonId === pokemon.id, true) as PokemonHeldItemModifier[]; + const transferModifiers: Promise[] = []; + for (let modifier of fusedPartyMemberHeldModifiers) + transferModifiers.push(this.scene.tryTransferHeldItemModifier(modifier, this, true, false, true, true)); + Promise.allSettled(transferModifiers).then(() => { + this.scene.updateModifiers(true, true).then(() => { + this.scene.removePartyMemberModifiers(fusedPartyMemberIndex); + this.scene.getParty().splice(fusedPartyMemberIndex, 1)[0]; + pokemon.destroy(); + this.updateFusionPalette(); + resolve(); }); }); }); From 716388c92b2d0a76749d7e44c9a9eaf17b2567dd Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Thu, 11 Apr 2024 18:33:58 -0400 Subject: [PATCH 02/27] Fix Pupitar losing hidden ability --- src/data/pokemon-species.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 452518bfc12..7147f314f0b 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -1044,7 +1044,7 @@ export function initSpecies() { new PokemonSpecies(Species.ENTEI, "Entei", 2, true, false, false, "Volcano Pokémon", Type.FIRE, null, 2.1, 198, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 115, 115, 85, 90, 75, 100, 3, 35, 290, GrowthRate.SLOW, null, false), new PokemonSpecies(Species.SUICUNE, "Suicune", 2, true, false, false, "Aurora Pokémon", Type.WATER, null, 2, 187, Abilities.PRESSURE, Abilities.NONE, Abilities.INNER_FOCUS, 580, 100, 75, 115, 90, 115, 85, 3, 35, 290, GrowthRate.SLOW, null, false), new PokemonSpecies(Species.LARVITAR, "Larvitar", 2, false, false, false, "Rock Skin Pokémon", Type.ROCK, Type.GROUND, 0.6, 72, Abilities.GUTS, Abilities.NONE, Abilities.SAND_VEIL, 300, 50, 64, 50, 45, 50, 41, 45, 35, 60, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.PUPITAR, "Pupitar", 2, false, false, false, "Hard Shell Pokémon", Type.ROCK, Type.GROUND, 1.2, 152, Abilities.SHED_SKIN, Abilities.NONE, Abilities.NONE, 410, 70, 84, 70, 65, 70, 51, 45, 35, 144, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.PUPITAR, "Pupitar", 2, false, false, false, "Hard Shell Pokémon", Type.ROCK, Type.GROUND, 1.2, 152, Abilities.SHED_SKIN, Abilities.NONE, Abilities.SHED_SKIN, 410, 70, 84, 70, 65, 70, 51, 45, 35, 144, GrowthRate.SLOW, 50, false), new PokemonSpecies(Species.TYRANITAR, "Tyranitar", 2, false, false, false, "Armor Pokémon", Type.ROCK, Type.DARK, 2, 202, Abilities.SAND_STREAM, Abilities.NONE, Abilities.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300, GrowthRate.SLOW, 50, false, true, new PokemonForm("Normal", "", Type.ROCK, Type.DARK, 2, 202, Abilities.SAND_STREAM, Abilities.NONE, Abilities.UNNERVE, 600, 100, 134, 110, 95, 100, 61, 45, 35, 300), new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.ROCK, Type.DARK, 2.5, 255, Abilities.SAND_STREAM, Abilities.NONE, Abilities.SAND_STREAM, 700, 100, 164, 150, 95, 120, 71, 45, 35, 300), From 49f2a5d3eb516b6d268efb09af745f59b8dbfeef Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Thu, 11 Apr 2024 18:53:03 -0400 Subject: [PATCH 03/27] Unimplemented moves cannot be selected by the play --- src/phases.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/phases.ts b/src/phases.ts index 2dccbe3a364..ccc9318f84c 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -1568,7 +1568,17 @@ export class CommandPhase extends FieldPhase { const moveId = !useStruggle ? cursor > -1 ? playerPokemon.getMoveset()[cursor].moveId : Moves.NONE : Moves.STRUGGLE; const turnCommand: TurnCommand = { command: Command.FIGHT, cursor: cursor, move: { move: moveId, targets: [], ignorePP: args[0] }, args: args }; const moveTargets: MoveTargetSet = args.length < 3 ? getMoveTargets(playerPokemon, moveId) : args[2]; - if (!moveId) + if (moveId) { + const move = playerPokemon.getMoveset()[cursor]; + if (move.getName().endsWith(' (N)')) { + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(`${move.getName().slice(0, -4)} is not yet implemented and cannot be selected.`, null, () => { + this.scene.ui.clearText(); + this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex); + }, null, true); + return; + } + } else turnCommand.targets = [ this.fieldIndex ]; console.log(moveTargets, playerPokemon.name); if (moveTargets.targets.length <= 1 || moveTargets.multiple) From eaf993e76f2a79b69fcbad3360dd3c6fe4fa40bf Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Thu, 11 Apr 2024 19:10:56 -0400 Subject: [PATCH 04/27] Fix starter select types not respecting form --- src/ui/starter-select-ui-handler.ts | 35 +++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index b21b5a1199b..24e9f11cbb7 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -1011,13 +1011,6 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonGrowthRateText.setColor(getGrowthRateColor(species.growthRate)); this.pokemonGrowthRateText.setShadowColor(getGrowthRateColor(species.growthRate, true)); this.pokemonGrowthRateLabelText.setVisible(true); - this.type1Icon.setFrame(Type[species.type1].toLowerCase()); - this.type1Icon.setVisible(true); - if (species.type2) { - this.type2Icon.setFrame(Type[species.type2].toLowerCase()); - this.type2Icon.setVisible(true); - } else - this.type2Icon.setVisible(false); this.pokemonUncaughtText.setVisible(false); this.pokemonAbilityLabelText.setVisible(true); this.pokemonNatureLabelText.setVisible(true); @@ -1037,16 +1030,22 @@ export default class StarterSelectUiHandler extends MessageUiHandler { return true; }); + let props: DexAttrProps; + if (starterIndex > -1) { - const props = this.scene.gameData.getSpeciesDexAttrProps(species, this.starterAttr[starterIndex]); + props = this.scene.gameData.getSpeciesDexAttrProps(species, this.starterAttr[starterIndex]); this.setSpeciesDetails(species, props.shiny, props.formIndex, props.female, props.abilityIndex, this.starterNatures[starterIndex]); } else { const defaultDexAttr = this.scene.gameData.getSpeciesDefaultDexAttr(species); const defaultNature = this.scene.gameData.getSpeciesDefaultNature(species); - const props = this.scene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); + props = this.scene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); this.setSpeciesDetails(species, props.shiny, props.formIndex, props.female, props.abilityIndex, defaultNature); } + + const speciesForm = getPokemonSpeciesForm(species.speciesId, props.formIndex); + this.setTypeIcons(speciesForm.type1, speciesForm.type2); + this.pokemonSprite.clearTint(); if (this.pokerusCursors.find((cursor: integer, i: integer) => cursor === this.cursor && this.pokerusGens[i] === this.genCursor)) handleTutorial(this.scene, Tutorial.Pokerus); @@ -1212,9 +1211,13 @@ export default class StarterSelectUiHandler extends MessageUiHandler { // Consolidate move data if it contains an incompatible move if (this.starterMoveset.length < 4 && this.starterMoveset.length < availableStarterMoves.length) this.starterMoveset.push(...availableStarterMoves.filter(sm => this.starterMoveset.indexOf(sm) === -1).slice(0, 4 - this.starterMoveset.length)); + + const speciesForm = getPokemonSpeciesForm(species.speciesId, formIndex); + this.setTypeIcons(speciesForm.type1, speciesForm.type2); } else { this.pokemonAbilityText.setText(''); this.pokemonNatureText.setText(''); + this.setTypeIcons(null, null); } } else { this.shinyOverlay.setVisible(false); @@ -1223,6 +1226,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonGenderText.setText(''); this.pokemonAbilityText.setText(''); this.pokemonNatureText.setText(''); + this.setTypeIcons(null, null); } if (!this.starterMoveset) @@ -1252,6 +1256,19 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.updateInstructions(); } + setTypeIcons(type1: Type, type2: Type): void { + if (type1 !== null) { + this.type1Icon.setVisible(true); + this.type1Icon.setFrame(Type[type1].toLowerCase()); + } else + this.type1Icon.setVisible(false); + if (type2 !== null) { + this.type2Icon.setVisible(true); + this.type2Icon.setFrame(Type[type2].toLowerCase()); + } else + this.type2Icon.setVisible(false); + } + popStarter(): void { this.starterGens.pop(); this.starterCursors.pop(); From 3e9fdc2d0ac1f309c57e9a985ec303910027990a Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Thu, 11 Apr 2024 20:01:43 -0400 Subject: [PATCH 05/27] Fix rest not overriding status --- src/data/move.ts | 2 +- src/field/pokemon.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index a9f84dd4130..1d6b40c69f2 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -3416,7 +3416,7 @@ export function initMoves() { new SelfStatusMove(Moves.REST, "Rest", Type.PSYCHIC, -1, 5, "The user goes to sleep for two turns. This fully restores the user's HP and heals any status conditions.", -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP, true, 3, true) .attr(HealAttr, 1, true) - .condition((user, target, move) => user.getHpRatio() < 1 && user.canSetStatus(StatusEffect.SLEEP, true)) + .condition((user, target, move) => user.getHpRatio() < 1 && user.canSetStatus(StatusEffect.SLEEP, true, true)) .triageMove(), new AttackMove(Moves.ROCK_SLIDE, "Rock Slide", Type.ROCK, MoveCategory.PHYSICAL, 75, 90, 10, "Large boulders are hurled at opposing Pokémon to inflict damage. This may also make the opposing Pokémon flinch.", 30, 0, 1) .attr(FlinchAttr) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 209713adc29..06ff004b1f3 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1688,9 +1688,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.gender !== Gender.GENDERLESS && pokemon.gender === (this.gender === Gender.MALE ? Gender.FEMALE : Gender.MALE); } - canSetStatus(effect: StatusEffect, quiet: boolean = false): boolean { + canSetStatus(effect: StatusEffect, quiet: boolean = false, overrideStatus: boolean = false): boolean { if (effect !== StatusEffect.FAINT) { - if (this.status) + if (overrideStatus ? this.status?.effect === effect : this.status) return false; if (this.isGrounded() && this.scene.arena.terrain?.terrainType === TerrainType.MISTY) return false; From 3961550f62cb652ad0e33a33893f969828fbebf3 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Thu, 11 Apr 2024 20:40:16 -0400 Subject: [PATCH 06/27] Fix fusion move learning bug and inaccurate HP in battle info --- src/battle-scene.ts | 10 +++++++--- src/field/pokemon.ts | 9 ++++++--- src/modifier/modifier.ts | 10 +++++----- src/phases.ts | 14 ++++++++++---- src/ui/battle-info.ts | 4 ++-- 5 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 27166347039..12d7d5d1dd8 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1558,6 +1558,7 @@ export default class BattleScene extends SceneBase { const soundName = modifier.type.soundName; this.validateAchvs(ModifierAchv, modifier); const modifiersToRemove: PersistentModifier[] = []; + const modifierPromises: Promise[] = []; if (modifier instanceof PersistentModifier) { if (modifier instanceof TerastallizeModifier) modifiersToRemove.push(...(this.findModifiers(m => m instanceof TerastallizeModifier && m.pokemonId === modifier.pokemonId))); @@ -1596,11 +1597,14 @@ export default class BattleScene extends SceneBase { } else if (modifier instanceof FusePokemonModifier) args.push(this.getPokemonById(modifier.fusePokemonId) as PlayerPokemon); - if (modifier.shouldApply(args)) - modifier.apply(args); + if (modifier.shouldApply(args)) { + const result = modifier.apply(args); + if (result instanceof Promise) + modifierPromises.push(result); + } } - return Promise.allSettled(this.party.map(p => p.updateInfo(instant))).then(() => resolve()); + return Promise.allSettled([this.party.map(p => p.updateInfo(instant)), ...modifierPromises]).then(() => resolve()); } else { const args = [ this ]; if (modifier.shouldApply(args)) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 06ff004b1f3..9dc560d8000 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -601,8 +601,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.getMaxHp() - this.hp; } - getHpRatio(): number { - return Math.floor((this.hp / this.getMaxHp()) * 100) / 100; + getHpRatio(precise: boolean = false): number { + return precise + ? this.hp / this.getMaxHp() + : ((this.hp / this.getMaxHp()) * 100) / 100; } generateGender(): void { @@ -2324,7 +2326,6 @@ export class PlayerPokemon extends Pokemon { let partyMemberIndex = this.scene.getParty().indexOf(this); if (partyMemberIndex > fusedPartyMemberIndex) partyMemberIndex--; - pokemon.getMoveset(true).map(m => this.scene.unshiftPhase(new LearnMovePhase(this.scene, partyMemberIndex, m.getMove().id))); const fusedPartyMemberHeldModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === pokemon.id, true) as PokemonHeldItemModifier[]; const transferModifiers: Promise[] = []; @@ -2334,6 +2335,8 @@ export class PlayerPokemon extends Pokemon { this.scene.updateModifiers(true, true).then(() => { this.scene.removePartyMemberModifiers(fusedPartyMemberIndex); this.scene.getParty().splice(fusedPartyMemberIndex, 1)[0]; + const newPartyMemberIndex = this.scene.getParty().indexOf(this); + pokemon.getMoveset(true).map(m => this.scene.unshiftPhase(new LearnMovePhase(this.scene, newPartyMemberIndex, m.getMove().id))); pokemon.destroy(); this.updateFusionPalette(); resolve(); diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 115273db744..de4477a3e68 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -109,7 +109,7 @@ export abstract class Modifier { return true; } - abstract apply(args: any[]): boolean; + abstract apply(args: any[]): boolean | Promise; } export abstract class PersistentModifier extends Modifier { @@ -1203,10 +1203,10 @@ export class FusePokemonModifier extends ConsumablePokemonModifier { return super.shouldApply(args) && args[1] instanceof PlayerPokemon && this.fusePokemonId === (args[1] as PlayerPokemon).id; } - apply(args: any[]): boolean { - (args[0] as PlayerPokemon).fuse(args[1] as PlayerPokemon); - - return true; + apply(args: any[]): Promise { + return new Promise(resolve => { + (args[0] as PlayerPokemon).fuse(args[1] as PlayerPokemon).then(() => resolve(true)); + }); } } diff --git a/src/phases.ts b/src/phases.ts index ccc9318f84c..015c487f50f 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -4102,16 +4102,22 @@ export class SelectModifierPhase extends BattlePhase { } const applyModifier = (modifier: Modifier, playSound: boolean = false) => { - this.scene.addModifier(modifier, false, playSound); + const result = this.scene.addModifier(modifier, false, playSound); if (cost) { this.scene.money -= cost; this.scene.updateMoneyText(); this.scene.playSound('buy'); (this.scene.ui.getHandler() as ModifierSelectUiHandler).updateCostText(); } else { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.MESSAGE); - super.end(); + const doEnd = () => { + this.scene.ui.clearText(); + this.scene.ui.setMode(Mode.MESSAGE); + super.end(); + }; + if (result instanceof Promise) + result.then(() => doEnd()); + else + doEnd(); } }; diff --git a/src/ui/battle-info.ts b/src/ui/battle-info.ts index ce6c101f159..71f04831034 100644 --- a/src/ui/battle-info.ts +++ b/src/ui/battle-info.ts @@ -193,7 +193,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.updateBossSegmentDividers(pokemon as EnemyPokemon); } - this.hpBar.setScale(pokemon.getHpRatio(), 1); + this.hpBar.setScale(pokemon.getHpRatio(true), 1); this.lastHpFrame = this.hpBar.scaleX > 0.5 ? 'high' : this.hpBar.scaleX > 0.25 ? 'medium' : 'low'; this.hpBar.setFrame(this.lastHpFrame); if (this.player) @@ -356,7 +356,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.scene.tweens.add({ targets: this.hpBar, ease: 'Sine.easeOut', - scaleX: pokemon.getHpRatio(), + scaleX: pokemon.getHpRatio(true), duration: duration, onUpdate: () => { if (this.player && this.lastHp !== pokemon.hp) { From 747a039a2e375eb69499973f3fb00b5673f1236c Mon Sep 17 00:00:00 2001 From: Xavion3 Date: Fri, 12 Apr 2024 10:47:59 +1000 Subject: [PATCH 07/27] Add support for strength sap --- src/data/move.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/data/move.ts b/src/data/move.ts index 1d6b40c69f2..38395fd8fd4 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -813,6 +813,19 @@ export class HitHealAttr extends MoveEffectAttr { } } +export class StrengthSapHealAttr extends MoveEffectAttr { + constructor() { + super(true, MoveEffectTrigger.HIT); + } + + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + user.scene.unshiftPhase(new PokemonHealPhase(user.scene, user.getBattlerIndex(), + target.stats[Stat.ATK] * (Math.max(2, 2 + target.summonData.battleStats[BattleStat.ATK]) / Math.max(2, 2 - target.summonData.battleStats[BattleStat.ATK])), + getPokemonMessage(user, ` regained\nhealth!`), false, true)); + return true; + } +} + export class MultiHitAttr extends MoveAttr { private multiHitType: MultiHitType; @@ -4617,8 +4630,10 @@ export function initMoves() { .attr(HealAttr, 0.5, true, false) .triageMove(), new AttackMove(Moves.HIGH_HORSEPOWER, "High Horsepower", Type.GROUND, MoveCategory.PHYSICAL, 95, 95, 10, "The user fiercely attacks the target using its entire body.", -1, 0, 7), - new StatusMove(Moves.STRENGTH_SAP, "Strength Sap (P)", Type.GRASS, 100, 10, "The user restores its HP by the same amount as the target's Attack stat. It also lowers the target's Attack stat.", 100, 0, 7) + new StatusMove(Moves.STRENGTH_SAP, "Strength Sap", Type.GRASS, 100, 10, "The user restores its HP by the same amount as the target's Attack stat. It also lowers the target's Attack stat.", 100, 0, 7) + .attr(StrengthSapHealAttr) .attr(StatChangeAttr, BattleStat.ATK, -1) + .condition((user, target, move) => target.summonData.battleStats[BattleStat.ATK] > -6) .triageMove(), new AttackMove(Moves.SOLAR_BLADE, "Solar Blade", Type.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, "In this two-turn attack, the user gathers light and fills a blade with the light's energy, attacking the target on the next turn.", -1, 0, 7) .attr(SunlightChargeAttr, ChargeAnim.SOLAR_BLADE_CHARGING, "is glowing!") From a793aedd290dd53a2ee7546b8ebb97d2a6aa5f07 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Thu, 11 Apr 2024 20:58:24 -0400 Subject: [PATCH 08/27] Don't transfer baton item if target is already holding one --- src/phases.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/phases.ts b/src/phases.ts index 015c487f50f..480c6c9a3f9 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -1294,7 +1294,7 @@ export class SwitchSummonPhase extends SummonPhase { if (!this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === switchedPokemon.id)) { const batonPassModifier = this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === this.lastPokemon.id) as SwitchEffectTransferModifier; - if (batonPassModifier) + if (batonPassModifier && !this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === switchedPokemon.id)) this.scene.tryTransferHeldItemModifier(batonPassModifier, switchedPokemon, false, false); } } From 58ef8f5aecc761e6b8888e651e1caf65636f6877 Mon Sep 17 00:00:00 2001 From: Jason Halvorson <47071224+JasonHalvorson@users.noreply.github.com> Date: Thu, 11 Apr 2024 20:16:27 -0700 Subject: [PATCH 09/27] Fix the logo not appearing when installed as a PWA I think I initially had manifest.json in `src/`, but moved it to the root dir and forgot to update the src property.. --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 434cf75a5fd..18b9f83874c 100644 --- a/manifest.json +++ b/manifest.json @@ -8,7 +8,7 @@ "theme_color": "#8c8c8c", "icons": [ { - "src": "../logo.png", + "src": "./logo.png", "sizes": "128x128", "type": "image/png" } From 07ff22e53dee86a467e91a0958ce5959f7c8c49a Mon Sep 17 00:00:00 2001 From: spongario Date: Thu, 11 Apr 2024 23:04:17 -0400 Subject: [PATCH 10/27] fix for Psychic Terrain blocking Protect Moves --- src/data/terrain.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/data/terrain.ts b/src/data/terrain.ts index c5af86240bd..606a3914bc5 100644 --- a/src/data/terrain.ts +++ b/src/data/terrain.ts @@ -3,6 +3,7 @@ import Move from "./move"; import { Type } from "./type"; import * as Utils from "../utils"; import { IncrementMovePriorityAbAttr, applyAbAttrs } from "./ability"; +import { ProtectAttr } from "./move"; export enum TerrainType { NONE, @@ -50,9 +51,12 @@ export class Terrain { isMoveTerrainCancelled(user: Pokemon, move: Move): boolean { switch (this.terrainType) { case TerrainType.PSYCHIC: - const priority = new Utils.IntegerHolder(move.priority); - applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority); - return priority.value > 0; + if (!move.getAttrs(ProtectAttr).length ) + { + const priority = new Utils.IntegerHolder(move.priority); + applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority); + return priority.value > 0; + } } return false; From d06003d22c6be49189f5d2a8d55c0400efe1e2b6 Mon Sep 17 00:00:00 2001 From: spongario Date: Thu, 11 Apr 2024 23:12:34 -0400 Subject: [PATCH 11/27] fix formatting --- src/data/terrain.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/data/terrain.ts b/src/data/terrain.ts index 606a3914bc5..48ffc1c680c 100644 --- a/src/data/terrain.ts +++ b/src/data/terrain.ts @@ -51,8 +51,7 @@ export class Terrain { isMoveTerrainCancelled(user: Pokemon, move: Move): boolean { switch (this.terrainType) { case TerrainType.PSYCHIC: - if (!move.getAttrs(ProtectAttr).length ) - { + if (!move.getAttrs(ProtectAttr).length){ const priority = new Utils.IntegerHolder(move.priority); applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority); return priority.value > 0; From b44ee956102ba403e82689fd15bb4c31b64ed1ea Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 11 Apr 2024 23:27:59 -0400 Subject: [PATCH 12/27] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 299cd9b84cf..513bee8c09d 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Check out our [Trello Board](https://trello.com/b/z10B703R/pokerogue-board) to s - Squip (Paid Commissions) - Contributions by Someonealive-QN -### UI +### 🎨 UI - GAMEFREAK - LJ Birdman @@ -94,5 +94,5 @@ Check out our [Trello Board](https://trello.com/b/z10B703R/pokerogue-board) to s - mangalos810 - Involuntary-Twitch -### Move Animations +### 🎨 Move Animations - Pokémon Reborn From 73c9625df11a53a74753db6c88e618ffdf93d33e Mon Sep 17 00:00:00 2001 From: James Lin Date: Thu, 11 Apr 2024 20:47:03 -0700 Subject: [PATCH 13/27] Add i18next framework to enable further contributions (#96) * prototype * Update with comments and type safety --- package-lock.json | 31 +++++++++++++++++++++++++++---- package.json | 1 + src/locales/en/menu.ts | 13 +++++++++++++ src/locales/it/menu.ts | 8 ++++++++ src/phases.ts | 13 +++++++------ src/plugins/i18n.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 src/locales/en/menu.ts create mode 100644 src/locales/it/menu.ts create mode 100644 src/plugins/i18n.ts diff --git a/package-lock.json b/package-lock.json index b21f00438f0..b93e2b2c6a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@material/material-color-utilities": "^0.2.7", "crypto-js": "^4.2.0", + "i18next": "^23.11.1", "json-stable-stringify": "^1.1.0", "phaser": "^3.70.0", "phaser3-rex-plugins": "^1.1.84" @@ -2750,9 +2751,9 @@ } }, "node_modules/i18next": { - "version": "22.5.1", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz", - "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==", + "version": "23.11.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.1.tgz", + "integrity": "sha512-mXw4A24BiPZKRsbb9ewgSvjYd6fxFCNwJyfK6nYfSTIAX2GkCWcb598m3DFkDZmqADatvuASrKo6qwORz3VwTQ==", "funding": [ { "type": "individual", @@ -2768,7 +2769,7 @@ } ], "dependencies": { - "@babel/runtime": "^7.20.6" + "@babel/runtime": "^7.23.2" } }, "node_modules/i18next-http-backend": { @@ -3819,6 +3820,28 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" }, + "node_modules/phaser3-rex-plugins/node_modules/i18next": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz", + "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.20.6" + } + }, "node_modules/phaser3spectorjs": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/phaser3spectorjs/-/phaser3spectorjs-0.0.8.tgz", diff --git a/package.json b/package.json index 9065bc17a55..fd189fd4d89 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "dependencies": { "@material/material-color-utilities": "^0.2.7", "crypto-js": "^4.2.0", + "i18next": "^23.11.1", "json-stable-stringify": "^1.1.0", "phaser": "^3.70.0", "phaser3-rex-plugins": "^1.1.84" diff --git a/src/locales/en/menu.ts b/src/locales/en/menu.ts new file mode 100644 index 00000000000..1cdafac5d71 --- /dev/null +++ b/src/locales/en/menu.ts @@ -0,0 +1,13 @@ +/** + * The menu namespace holds most miscellaneous text that isn't directly part of the game's + * contents or directly related to Pokemon. This includes menu navigation, settings, + * account interactions, etc. + */ +export const menu = { + "cancel": "Cancel", + "continue": "Continue", + "dailyRun": "Daily Run (Beta)", + "loadGame": "Load Game", + "newGame": "New Game", + "selectGameMode": "Select a game mode." +} as const; \ No newline at end of file diff --git a/src/locales/it/menu.ts b/src/locales/it/menu.ts new file mode 100644 index 00000000000..6c6b6ba468c --- /dev/null +++ b/src/locales/it/menu.ts @@ -0,0 +1,8 @@ +export const menu = { + "cancel": "Annulla", + "continue": "Continua", + "newGame": "Nuova Partita", + "loadGame": "Carica Partita", + "dailyRun": "Corsa Giornaliera (Beta)", + "selectGameMode": "Seleziona una modalità di gioco." +} as const; \ No newline at end of file diff --git a/src/phases.ts b/src/phases.ts index 480c6c9a3f9..09d0de7f686 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -57,6 +57,7 @@ import { SaveSlotUiMode } from "./ui/save-slot-select-ui-handler"; import { fetchDailyRunSeed, getDailyRunStarters } from "./data/daily-run"; import { GameModes, gameModes } from "./game-mode"; import { getPokemonSpecies, speciesStarters } from "./data/pokemon-species"; +import i18next from './plugins/i18n'; export class LoginPhase extends Phase { private showText: boolean; @@ -173,12 +174,12 @@ export class TitlePhase extends Phase { const options: OptionSelectItem[] = []; if (loggedInUser.lastSessionSlot > -1) { options.push({ - label: 'Continue', + label: i18next.t('menu:continue'), handler: () => this.loadSaveSlot(this.lastSessionData ? -1 : loggedInUser.lastSessionSlot) }); } options.push({ - label: 'New Game', + label: i18next.t('menu:newGame'), handler: () => { const setModeAndEnd = (gameMode: GameModes) => { this.gameMode = gameMode; @@ -204,14 +205,14 @@ export class TitlePhase extends Phase { }); } options.push({ - label: 'Cancel', + label: i18next.t('menu:cancel'), handler: () => { this.scene.clearPhaseQueue(); this.scene.pushPhase(new TitlePhase(this.scene)); super.end(); } }); - this.scene.ui.showText('Select a game mode.', null, () => this.scene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: options })); + this.scene.ui.showText(i18next.t("menu:selectGameMode"), null, () => this.scene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: options })); } else { this.gameMode = GameModes.CLASSIC; this.scene.ui.setMode(Mode.MESSAGE); @@ -221,7 +222,7 @@ export class TitlePhase extends Phase { } }, { - label: 'Load Game', + label: i18next.t('menu:loadGame'), handler: () => this.scene.ui.setOverlayMode(Mode.SAVE_SLOT, SaveSlotUiMode.LOAD, (slotId: integer) => { if (slotId === -1) @@ -231,7 +232,7 @@ export class TitlePhase extends Phase { ) }, { - label: 'Daily Run (Beta)', + label: i18next.t('menu:dailyRun'), handler: () => this.initDailyRun(), keepOpen: true }); diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts new file mode 100644 index 00000000000..95ba54007e1 --- /dev/null +++ b/src/plugins/i18n.ts @@ -0,0 +1,42 @@ +import i18next from 'i18next'; +import { menu as enMenu } from '../locales/en/menu'; +import { menu as itMenu } from '../locales/it/menu'; + +const DEFAULT_LANGUAGE_OVERRIDE = ''; + +/** + * i18next is a localization library for maintaining and using translation resources. + * + * Q: How do I add a new language? + * A: To add a new language, create a new folder in the locales directory with the language code. + * Each language folder should contain a file for each namespace (ex. menu.ts) with the translations. + * + * Q: How do I add a new namespace? + * A: To add a new namespace, create a new file in each language folder with the translations. + * Then update the `resources` field in the init() call and the CustomTypeOptions interface. + */ + +i18next.init({ + lng: DEFAULT_LANGUAGE_OVERRIDE ? DEFAULT_LANGUAGE_OVERRIDE : 'en', + fallbackLng: 'en', + debug: true, + resources: { + en: { + menu: enMenu, + }, + it: { + menu: itMenu, + } + }, +}); + +// Module declared to make referencing keys in the localization files type-safe. +declare module 'i18next' { + interface CustomTypeOptions { + resources: { + menu: typeof enMenu; + }; + } +} + +export default i18next; From 20b6612cd19e1a231eb19fed3c994206c93119bb Mon Sep 17 00:00:00 2001 From: Xavion3 Date: Fri, 12 Apr 2024 15:43:09 +1000 Subject: [PATCH 14/27] Add support for hidden power --- src/data/move.ts | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/data/move.ts b/src/data/move.ts index 38395fd8fd4..6f5917180f4 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -2044,6 +2044,27 @@ export class WeatherBallTypeAttr extends VariableMoveTypeAttr { } } +export class HiddenPowerTypeAttr extends VariableMoveTypeAttr { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + const type = (args[0] as Utils.IntegerHolder); + + const iv_val = Math.floor(((user.ivs[Stat.HP] & 1) + +(user.ivs[Stat.ATK] & 1) * 2 + +(user.ivs[Stat.DEF] & 1) * 4 + +(user.ivs[Stat.SPD] & 1) * 8 + +(user.ivs[Stat.SPATK] & 1) * 16 + +(user.ivs[Stat.SPDEF] & 1) * 32) * 15/63); + + type.value = [ + Type.FIGHTING, Type.FLYING, Type.POISON, Type.GROUND, + Type.ROCK, Type.BUG, Type.GHOST, Type.STEEL, + Type.FIRE, Type.WATER, Type.GRASS, Type.ELECTRIC, + Type.PSYCHIC, Type.ICE, Type.DRAGON, Type.DARK][iv_val]; + + return true; + } +} + export class VariableMoveTypeMultiplierAttr extends MoveAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { return false; @@ -3647,7 +3668,8 @@ export function initMoves() { new SelfStatusMove(Moves.MOONLIGHT, "Moonlight", Type.FAIRY, -1, 5, "The user restores its own HP. The amount of HP regained varies with the weather.", -1, 0, 2) .attr(PlantHealAttr) .triageMove(), - new AttackMove(Moves.HIDDEN_POWER, "Hidden Power (P)", Type.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, "A unique attack that varies in type depending on the Pokémon using it.", -1, 0, 2), + new AttackMove(Moves.HIDDEN_POWER, "Hidden Power", Type.NORMAL, MoveCategory.SPECIAL, 60, 100, 15, "A unique attack that varies in type depending on the Pokémon using it.", -1, 0, 2) + .attr(HiddenPowerTypeAttr), new AttackMove(Moves.CROSS_CHOP, "Cross Chop", Type.FIGHTING, MoveCategory.PHYSICAL, 100, 80, 5, "The user delivers a double chop with its forearms crossed. Critical hits land more easily.", -1, 0, 2) .attr(HighCritAttr), new AttackMove(Moves.TWISTER, "Twister", Type.DRAGON, MoveCategory.SPECIAL, 40, 100, 20, "The user whips up a vicious tornado to tear at opposing Pokémon. This may also make them flinch.", 20, 0, 2) From fba98ffa0ce157905677805b8edb9182dd6dee63 Mon Sep 17 00:00:00 2001 From: EmoUsedHM01 <131687820+EmoUsedHM01@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:32:06 +0100 Subject: [PATCH 15/27] Updated ForceSwitchOutAttr (#90) * Updated ForceSwitchOutAttr Should fix issue #83 * Removed the additional indents * Updated the import and fixed the ForceSwitchOutAttr coding errors * Removed the rest of the indents * Updated formatting --- src/data/move.ts | 113 +++++++++++++++++++++++++++-------------------- 1 file changed, 64 insertions(+), 49 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 6f5917180f4..ddc9563554b 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -12,7 +12,7 @@ import * as Utils from "../utils"; import { WeatherType } from "./weather"; import { ArenaTagSide, ArenaTrapTag } from "./arena-tag"; import { ArenaTagType } from "./enums/arena-tag-type"; -import { ProtectAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr } from "./ability"; +import { ProtectAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr, applyPostDefendAbAttrs, PostDefendContactApplyStatusEffectAbAttr } from "./ability"; import { Abilities } from "./enums/abilities"; import { PokemonHeldItemModifier } from "../modifier/modifier"; import { BattlerIndex } from "../battle"; @@ -2500,61 +2500,76 @@ export class AddArenaTrapTagAttr extends AddArenaTagAttr { export class ForceSwitchOutAttr extends MoveEffectAttr { private user: boolean; private batonPass: boolean; - + constructor(user?: boolean, batonPass?: boolean) { super(false, MoveEffectTrigger.HIT, true); - this.user = !!user; this.batonPass = !!batonPass; } - + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { return new Promise(resolve => { - if (move.category !== MoveCategory.STATUS && !this.getSwitchOutCondition()(user, target, move)) - return resolve(false); - const switchOutTarget = this.user ? user : target; - if (switchOutTarget instanceof PlayerPokemon) { - if (switchOutTarget.hp) { - applyPreSwitchOutAbAttrs(PreSwitchOutAbAttr, switchOutTarget); - (switchOutTarget as PlayerPokemon).switchOut(this.batonPass, true).then(() => resolve(true)); - } - else - resolve(false); - return; - } else if (user.scene.currentBattle.battleType) { - switchOutTarget.resetTurnData(); - switchOutTarget.resetSummonData(); - switchOutTarget.hideInfo(); - switchOutTarget.setVisible(false); - switchOutTarget.scene.field.remove(switchOutTarget); - user.scene.triggerPokemonFormChange(switchOutTarget, SpeciesFormChangeActiveTrigger, true); - - if (switchOutTarget.hp) - user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, switchOutTarget.getFieldIndex(), user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot), false, this.batonPass, false)); - } else { - switchOutTarget.setVisible(false); - - if (switchOutTarget.hp) { - switchOutTarget.hideInfo().then(() => switchOutTarget.destroy()); - switchOutTarget.scene.field.remove(switchOutTarget); - user.scene.queueMessage(getPokemonMessage(switchOutTarget, ' fled!'), null, true, 500); - } - - if (!switchOutTarget.getAlly()?.isActive(true)) { - user.scene.clearEnemyHeldItemModifiers(); - - if (switchOutTarget.hp) { - user.scene.pushPhase(new BattleEndPhase(user.scene)); - user.scene.pushPhase(new NewBattlePhase(user.scene)); - } - } - } - - resolve(true); - }); - } - - getCondition(): MoveConditionFunc { + // Check if the move category is not STATUS or if the switch out condition is not met + if (move.category !== MoveCategory.STATUS && !this.getSwitchOutCondition()(user, target, move)) { + //Apply effects that need to be executed before switch out + //For example, applying poison or any other status condition + applyPostDefendAbAttrs(PostDefendContactApplyStatusEffectAbAttr, target, user, move); + //Resolve the Promise after the switch out is complete + return resolve(false); + } + + // Move the switch out logic inside the conditional block + // This ensures that the switch out only happens when the conditions are met + const switchOutTarget = this.user ? user : target; + if (switchOutTarget instanceof PlayerPokemon) { + // Switch out logic for PlayerPokemon + // This includes applying any necessary effects before switching out + if (switchOutTarget.hp) { + applyPreSwitchOutAbAttrs(PreSwitchOutAbAttr, switchOutTarget); + (switchOutTarget as PlayerPokemon).switchOut(this.batonPass, true).then(() => resolve(true)); + } + else { + resolve(false); + } + return; + } + else if (user.scene.currentBattle.battleType) { + // Switch out logic for the battle type + switchOutTarget.resetTurnData(); + switchOutTarget.resetSummonData(); + switchOutTarget.hideInfo(); + switchOutTarget.setVisible(false); + switchOutTarget.scene.field.remove(switchOutTarget); + user.scene.triggerPokemonFormChange(switchOutTarget, SpeciesFormChangeActiveTrigger, true); + + if (switchOutTarget.hp) + user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, switchOutTarget.getFieldIndex(), user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot), false, this.batonPass, false)); + } + else { + // Switch out logic for everything else + switchOutTarget.setVisible(false); + + if (switchOutTarget.hp) { + switchOutTarget.hideInfo().then(() => switchOutTarget.destroy()); + switchOutTarget.scene.field.remove(switchOutTarget); + user.scene.queueMessage(getPokemonMessage(switchOutTarget, ' fled!'), null, true, 500); + } + + if (!switchOutTarget.getAlly()?.isActive(true)) { + user.scene.clearEnemyHeldItemModifiers(); + + if (switchOutTarget.hp) { + user.scene.pushPhase(new BattleEndPhase(user.scene)); + user.scene.pushPhase(new NewBattlePhase(user.scene)); + } + } + } + + resolve(true); + }); + } + + getCondition(): MoveConditionFunc { return (user, target, move) => move.category !== MoveCategory.STATUS || this.getSwitchOutCondition()(user, target, move); } From d2ebb499d8790d8610dd63e67b2dd901eb85d7eb Mon Sep 17 00:00:00 2001 From: Matthew Olker Date: Fri, 12 Apr 2024 07:44:45 -0400 Subject: [PATCH 16/27] Fix broken call in force switch out --- src/data/move.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index ddc9563554b..a0f1a93118a 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -2511,10 +2511,8 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { return new Promise(resolve => { // Check if the move category is not STATUS or if the switch out condition is not met if (move.category !== MoveCategory.STATUS && !this.getSwitchOutCondition()(user, target, move)) { - //Apply effects that need to be executed before switch out - //For example, applying poison or any other status condition - applyPostDefendAbAttrs(PostDefendContactApplyStatusEffectAbAttr, target, user, move); - //Resolve the Promise after the switch out is complete + //Apply effects before switch out i.e. poison point, flame body, etc + applyPostDefendAbAttrs(PostDefendContactApplyStatusEffectAbAttr, target, user, new PokemonMove(move.id), null); return resolve(false); } @@ -2522,8 +2520,6 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { // This ensures that the switch out only happens when the conditions are met const switchOutTarget = this.user ? user : target; if (switchOutTarget instanceof PlayerPokemon) { - // Switch out logic for PlayerPokemon - // This includes applying any necessary effects before switching out if (switchOutTarget.hp) { applyPreSwitchOutAbAttrs(PreSwitchOutAbAttr, switchOutTarget); (switchOutTarget as PlayerPokemon).switchOut(this.batonPass, true).then(() => resolve(true)); @@ -2546,7 +2542,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, switchOutTarget.getFieldIndex(), user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot), false, this.batonPass, false)); } else { - // Switch out logic for everything else + // Switch out logic for everything else switchOutTarget.setVisible(false); if (switchOutTarget.hp) { From 0de816cbfb5d685fdbad09eda4149e172e38973b Mon Sep 17 00:00:00 2001 From: joao-m-santos Date: Fri, 12 Apr 2024 18:13:40 +0200 Subject: [PATCH 17/27] Fix PWA on Chromium browsers --- logo512.png | Bin 0 -> 6198 bytes manifest.json | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 logo512.png diff --git a/logo512.png b/logo512.png new file mode 100644 index 0000000000000000000000000000000000000000..7fdde1f6b829693f13355b8bdd4c8f05439f3443 GIT binary patch literal 6198 zcmb7I2~<PM0B|#Vis}2w$ltSf`hQ0R zAl(IktOEdyPsthpAlV&&!AJmB6aZkq=R(8AmB>G=cLc6og?y18y5=-14=biqAL7_6|cdAJvl{58eftR!HUIx#|mLNz%j3zk1yZ zOmA~@4iMScZ3$?sSV6=rJu7qD{iRa2WVegb{*rjX*Pr=r?1|YU6p+yHDzbyL{Q^;>R>!Up z)lhy5euaYrE4>4#iz(!7jUr9XzWhCXM1iX^I&)+<-|t0hfd$CQngqZH{s`h(zg1Z* zPmyFGd#t0F^)$Ht6b)EcRQF@!S#Z-X#wNcXF5D)G+omD`oCkofFA~^E%U)A}om**H zfxv`u8*NrG?<}a&%UD+K4$aDU?K>K7l_M~*@Xa~3Ls~=h4MUYaF)_95iyx)S+!r)M z?@ql*whCsm=_EBvJj67Y>#a_#F)MO9aI4TB-wYq02EQKS8_lwQs=%bvY8gHymsZ>( zJY5(&vy$3aSFLbS-nxFD)sJy^fQFrRAQXIy?OWL5B#v1+v%c_*R!Y~LF6Ov1yPI?p z8MDh&=50LIf3(R`(txwL*d&ze4V@%cikAJsY`S+!Dj&N$z7z-NmE8tlu}Mot4EN6X`tRrk|l7jsy2sH5vTmqGA#LZ1{T055f~ zWN#QW?x_ebX04h5Ki{o__4;LZU+P}VW(+j-6LJ^N8HmEETVXljjCM_(07?m&&U;1q zbXPRLFE!5ILQ^eQB|l0~@ZcVj);gIIXU?x-z{l!Jeq%I~w{xDVlZ}=q z&dvIpG2_%JPlq0w?b=l;9(Fy&JmvV50P3*sHZ}A7;u}X1@{hMNm z8L6H$JXRW1_s5Q1b=v#z74i4=n%`-fQ*o7D zii65v^|fNC5SzKS!z{?AEsf=B1&M(odoG38;*JJnMYee~^dsgpDN}f`_Nz+*lR9N@ z8~1TSNFPre?i5D!7Dq?!TJpIxBSi||XeBQUpPQq~y-|p;GfMY5ad$K;8V6U^+6GlO z-Df_cn7ME6qz2_Z5KQVZC9y{pi6?#OkN;->+iP&q=(DT`2a>{0nnZoEC*g)Zxew5j zU`QldM;X)iLKI=I)?2J+WNFd@A0^>i8}}6HYCiml0QU{nxdU|#na+mmn3@2)FL|N3Vl5|cs|O$z@Ua)7t6Kbc}_xCMvV2-AMGa~hI6 zX5H%2K*4GoQgzcVChNmsb)vlo0Ml|1QMLFG83aqmFM3Frchz|r4$dI9m@>kwA5zTu zA$&)8TlW)+N$;3NljWXF)ccEk_PBqp3i33q@4hr#x_ZpS%I}qtD>P6Al@3VN$hC?y zxBbiNubtl>VH;_SkcOwz@>FV8rCx>`D#>ngi*<{F^4GlaJjrU%4V^2s`QStq-P}cp zPyax32PH$BKNrt$#HdR{$@#UI#bwlo*cB@ap*8I2B&r7oLrYCg`Y21g5HdeCCy3y! zeAj6g&>T*|W(|>UT^L`RdXD!*=d+5`Cl#&}Ouf!3#=)aq3j>S;p91$7v;@&6n@aiw z^OXAoZO){S)NrM)7vE{oOWjdl4tuN8#KEmrS2Zm=F?OS4W=?yyjTxHmhd0-g8_MLH zF1)u_g*PGJ6j><_5aoMy7`5zFR;Tl)z>r5LEZzFvsYaj>SJH9fO0N84D?sx=0h!#q zhexAApFMlTgwy!4oUdppzVoSN9s%o^xMzmwv+G#AR#iqQ-_Lm=dfT}4hE(f;ltyCq z$H2iI9ebRI$0p5`?n%JcxLI8jK=q{X7C-(n9z98hC5&8q83sJ~az>V9I6>4)6qise zMOsDHcb9O!QI|gVExe@^T9n}QnXg)z5d})26dlA@I4HxmMWNWu6R=b3a#NaJiWn@0 z&sy*_T0ZtBIGemJS1RlY5Qlqjx*LTO^9n@%GNrI4i1G0ooP{yFz*A;#KfbacP0!fZ z#NnK;7XB|dJ*)wxW&EHUH*&g1%F4V08X1AQ$pv4Zt^Rmt&c0){6;;SM zz)j;xh}^YvUxir(eZsRVYD17LlbX!?%utgHQ=njpY>@oDY$7AmoJM6vONF8scjVxH zx%#*aQ%0F&7eObA=&yY{hBwFdKcJXF`aWo=6x#!I-;ubtFVzY%Z=b34 z3h5AFO+BrLR`k}*($-iH#P{eLq?s>_2p@%QNkrz3m}*|{U);z|T)P+@+B_t?FTt)8 z9rs$~sytY-KfqfmrnhUWT>?KXt@HFeqct4Q=cm+J&t~b#l7DPvL3dX^~L+a7)xb$XuAi~H&Rm@ zB{yBoTdKd)RaJY4nq}^r`R(_*{SJ?)$pC4X!p@Y zQ3Z)3CT6zFck!&Z7N{hpWn4-+0LxyCwq`HGAGm~eVM{cvM!pn)xx3JJk>L!kZfOvB z?Vk~^($o~nju{$#3SSu%%5G^o84;eZQ2tD0nEy72w(!L&F0L=E_n{Wna-cvo_~T{B z+Y0u-3@U`W9-+p;MZC7q8GNa@*egD-Ubq@k;cxb6=CA)$5S{3XH3a=b7AGp~i9u0? z@$qzGwgoWs8?T>0-O2K}bl@J;*PNOzCk>RW(`ln`+=mQNO=xQ?H|YDCP&h4CJi0gi`R3fj)(5S0Z521P z6MpH(j5U1f^aCm&2RH)K40Ib44~?6 zy5aCI+SlpUW9xpDQsL?Fo6}d!I+F62Tmoi1~wb?eFzh%w_iLakOK!`Jcl=DO_{K{5JAsPjgW? z{F6}Sq6mn@-4&OfJG66UYf_i|DLS)lQmNl<12-mninK4S> z?5U7%Dqc;}{eBlurpMtpAMbt2v)cn<&gnd6qJ%A2=>y`loGyu1CY^6pys?Cu#3qvX zHZF%zP?R$?j$Dpp);t_7^1HE=N$)h|aXJf!TLG0quJPgF;|3|+=)`dTDW)%^FO;AC z>giST!a;%}dTDz&7xqaEcO2F|kD`e!f!pzSYj&5aU6{V8r?}rTIqez{dBT=@azi5l z53(*#`&$+&I!D%0dWJo0L|1=qJB)MCybxnijdBfOc*=1G4_W9j0~7yabvZ0QxQWR8 zVsh^dgQOT5>8P^8n{BWVLW^vP-rEmP7Qm5v39W@FM`K=egP?R<=JP)&FaBIbfa?}Q zD)q@yo6ojOnr-j)4slPRrk5up6dAENQlt^u)n^K(p~-FCZ0&2yC9tS3o?kIbm+KFe z9$vZe3AW*~d`?T?0*;ULwUoSg5WdIUyNO@6d}Bg$LtZVjy5A<<)M%$fx~|is!b_|| zRLicdvIxGL$Zjf)VkI8wd(aa}d2k}ctjF(8rc6T9w5wQPQhjw|`Q1!HLPJxxK&7%x zO?$44KUKHJUh?O?d!>hgA79Ixj-o?*3v+TitAhdE*5ASPZBegG$}A~|h0~Gr$RsWA z(#-$Yw@AU0N(j>~I$=!24%fIJqCso>)Ws1lrlFZ&EMOwJA-+fU#Es=PV=R9-MQ-fT zOmh)+#lz2zTvak%cWRSu!PH;=ra*f$4)lfGCbzsqG30Vwu*?U?^?2w+o74}u(O0J;X;L&JZRq>GP9)b_1=zf zF=4}f#Sj)aOqwWq_YtNPZPqX{Bifw7A#{tjYy=1Xj5DORJ=UgXmFy%kEeZW8Fy3K~ zKpaIe(#a^Wf?qpk1ysJ)Mcj4W*kEsX2c?cLuxW$RV+QzDJhw-aGyj=7>b*YL*bPol zPm+mPF!)~Lt?M#%jaWo-uktxutXoRzu~X5gM7bbyrtf?llyWn5#p!yp%_HO2+e&ce z6==n27J%~CRxM*oQT44d+^VP)19Ev&-&N_&lArf3*55($(UHHD8p%JGPstv3**j)< z#T2sX>dTj%rK6r(eK!1oCiq0OCk7RLf+b#f>q7%uE?TXInDygNcnN3en3keiNc}tN z+)llrTTLZme$iHh`{l4^jlI0aUWR}9yF^Mamd^pK_OitKO8K05F3R^7ZpPuWzNxGX zqbI7?@%=tqn5+_1o+3*%(=5^^qwm0Uwl&B~c_4@i+uyYWjS%wIS9E{bw%)|7*XS;d zaT|velXJN$`1}-JDJz<1ck@tr7;5os3IJ)V2jk4FdVO6nR8_`YN0&0P)}SM~f-FtX zWXZp2cZPhpjT#++_9(&+&urwv4}!BXxr<=kh0033;34v8Q&9Ec1O3Wbi%|5+p#gsl z6 Date: Fri, 12 Apr 2024 14:40:14 -0500 Subject: [PATCH 18/27] Update Gen 4 & 9 egg moves --- src/data/ability.ts | 2 +- src/data/egg-moves.ts | 268 +++++++++++++++++++++--------------------- 2 files changed, 135 insertions(+), 135 deletions(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index c9217e17ac5..b8c19ef9fb5 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -2091,7 +2091,7 @@ export function initAbilities() { .bypassFaint() .ignorable(), new Ability(Abilities.SHED_SKIN, "Shed Skin", "The Pokémon may heal its own status conditions by shedding its skin.", 3) - .conditionalAttr(pokemon => !Utils.randSeedInt(3), PostTurnResetStatusAbAttr), + .conditionalAttr(pokemon => !Utils.randSeedInt(3), PostTurnResetStatusAbAttr), new Ability(Abilities.GUTS, "Guts", "It's so gutsy that having a status condition boosts the Pokémon's Attack stat.", 3) .attr(BypassBurnDamageReductionAbAttr) .conditionalAttr(pokemon => !!pokemon.status, BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5), diff --git a/src/data/egg-moves.ts b/src/data/egg-moves.ts index 1413bc4bf41..63067b61658 100644 --- a/src/data/egg-moves.ts +++ b/src/data/egg-moves.ts @@ -26,7 +26,7 @@ export const speciesEggMoves = { [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.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.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 ], @@ -41,7 +41,7 @@ export const speciesEggMoves = { [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.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.DROWZEE]: [ Moves.DREAM_EATER, Moves.METRONOME, Moves.NIGHTMARE, Moves.SYNCHRONOISE ], [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.MEWTWO]: [ Moves.PSYBLADE, Moves.POLTERGEIST, Moves.ARMOR_CANNON, Moves.PSYCHO_BOOST ], [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.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 ], @@ -149,7 +149,7 @@ export const speciesEggMoves = { [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.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.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 ], @@ -198,66 +198,66 @@ export const speciesEggMoves = { [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.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.CHIMCHAR]: [ Moves.RAGING_FURY, Moves.BURN_UP, Moves.WORK_UP, Moves.WICKED_BLOW ], - [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.FLIP_TURN, Moves.NOBLE_ROAR, Moves.SUNSTEEL_STRIKE ], - [Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.OUTRAGE, Moves.FLAME_CHARGE, Moves.COLLISION_COURSE ], - [Species.BIDOOF]: [ Moves.SUPER_FANG, Moves.LIQUIDATION, Moves.BODY_PRESS, Moves.NO_RETREAT ], - [Species.KRICKETOT]: [ Moves.BOOMBURST, Moves.ALLURING_VOICE, Moves.SPARKLING_ARIA, Moves.QUIVER_DANCE ], - [Species.SHINX]: [ Moves.PSYCHIC_FANGS, Moves.JAW_LOCK, Moves.FACADE, Moves.VOLT_TACKLE ], - [Species.BUDEW]: [ Moves.FLORAL_HEALING, Moves.ACID_SPRAY, Moves.SPORE, Moves.SEED_FLARE ], - [Species.CRANIDOS]: [ Moves.STONE_AXE, Moves.DRAGON_RUSH, Moves.SUPERPOWER, Moves.ROCK_WRECKER ], - [Species.SHIELDON]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BASH ], - [Species.BURMY]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.RECOVER, Moves.SHELTER ], - [Species.COMBEE]: [ Moves.TWINEEDLE, Moves.AIR_SLASH, Moves.KINGS_SHIELD, Moves.SPORE ], - [Species.PACHIRISU]: [ Moves.SUPER_FANG, Moves.EXTREME_SPEED, Moves.SUPERPOWER, Moves.VOLT_TACKLE ], - [Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.ICE_PUNCH, Moves.HIGH_HORSEPOWER, Moves.SURGING_STRIKES ], - [Species.CHERUBI]: [ Moves.FLOWER_SHIELD, Moves.GRASSY_TERRAIN, Moves.GRASSY_GLIDE, Moves.SPORE ], - [Species.SHELLOS]: [ Moves.LIFE_DEW, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.FREEZY_FROST ], - [Species.DRIFLOON]: [ Moves.THIEF, Moves.ACUPRESSURE, Moves.WILL_O_WISP, Moves.HURRICANE ], - [Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.TROP_KICK, Moves.FAKE_OUT, Moves.SWORDS_DANCE ], - [Species.GLAMEOW]: [ Moves.U_TURN, Moves.STOMPING_TANTRUM, Moves.COVET, Moves.WICKED_BLOW ], - [Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.BOOMBURST, Moves.TORCH_SONG, Moves.EERIE_SPELL ], - [Species.STUNKY]: [ Moves.CORROSIVE_GAS, Moves.BURNING_JEALOUSY, Moves.SUPER_FANG, Moves.WICKED_BLOW ], - [Species.BRONZOR]: [ Moves.PSYSHIELD_BASH, Moves.COSMIC_POWER, Moves.MIRROR_COAT, Moves.TACHYON_CUTTER ], - [Species.BONSLY]: [ Moves.INGRAIN, Moves.GRASSY_GLIDE, Moves.EXTREME_SPEED, Moves.HEAD_SMASH ], - [Species.MIME_JR]: [ Moves.CALM_MIND, Moves.ATTRACT, Moves.TAUNT, Moves.GLITZY_GLOW ], - [Species.HAPPINY]: [ Moves.HAPPY_HOUR, Moves.SEISMIC_TOSS, Moves.STEALTH_ROCK, Moves.INSTRUCT ], - [Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.BOOMBURST, Moves.TAUNT, Moves.TORCH_SONG ], - [Species.SPIRITOMB]: [ Moves.POLTERGEIST, Moves.PAIN_SPLIT, Moves.BURNING_JEALOUSY, Moves.MAKE_IT_RAIN ], - [Species.GIBLE]: [ Moves.DRAGON_HAMMER, Moves.AQUA_JET, Moves.POISON_FANG, Moves.GLAIVE_RUSH ], - [Species.MUNCHLAX]: [ Moves.TEATIME, Moves.BODY_PRESS, Moves.HEAVY_SLAM, Moves.SLACK_OFF ], - [Species.RIOLU]: [ Moves.UPPER_HAND, Moves.ARM_THRUST, Moves.ICE_PUNCH, Moves.PLAY_ROUGH ], - [Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.HARD_PRESS, Moves.SCORCHING_SANDS, Moves.LANDS_WRATH ], - [Species.SKORUPI]: [ Moves.COIL, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], - [Species.CROAGUNK]: [ Moves.GUNK_SHOT, Moves.LASH_OUT, Moves.MACH_PUNCH, Moves.SWORDS_DANCE ], - [Species.CARNIVINE]: [ Moves.SNAP_TRAP, Moves.JAW_LOCK, Moves.RAGE_POWDER, Moves.FLOWER_TRICK ], - [Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.MOONBLAST, Moves.MOONGEIST_BEAM ], - [Species.MANTYKE]: [ Moves.BOUNCY_BUBBLE, Moves.ICY_WIND, Moves.TAILWIND, Moves.RECOVER ], - [Species.SNOVER]: [ Moves.DRUM_BEATING, Moves.ICE_HAMMER, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ], - [Species.ROTOM]: [ Moves.FREEZE_DRY, Moves.FLAME_BURST, Moves.WATER_PULSE, Moves.AIR_SLASH ], - [Species.UXIE]: [ Moves.REVELATION_DANCE, Moves.TEETER_DANCE, Moves.DARK_PULSE, Moves.PRISMATIC_LASER ], - [Species.MESPRIT]: [ Moves.REVELATION_DANCE, Moves.LUNAR_DANCE, Moves.MOONBLAST, Moves.PRISMATIC_LASER ], - [Species.AZELF]: [ Moves.REVELATION_DANCE, Moves.DRAGON_DANCE, Moves.PHANTOM_FORCE, Moves.PRISMATIC_LASER ], - [Species.DIALGA]: [ Moves.SPACIAL_REND, Moves.EXTREME_SPEED, Moves.GEAR_GRIND, Moves.FREEZING_GLARE ], - [Species.PALKIA]: [ Moves.ROAR_OF_TIME, Moves.LIQUIDATION, Moves.AQUA_CUTTER, Moves.DRAGON_ENERGY ], - [Species.HEATRAN]: [ Moves.FIRE_LASH, Moves.HEAVY_SLAM, Moves.FIERY_DANCE, Moves.BEHEMOTH_BASH ], - [Species.REGIGIGAS]: [ Moves.MIGHTY_CLEAVE, Moves.PRECIPICE_BLADES, Moves.EXTREME_SPEED, Moves.SKILL_SWAP ], - [Species.GIRATINA]: [ Moves.DRAGON_HAMMER, Moves.SPACIAL_REND, Moves.SPIRIT_SHACKLE, Moves.ASTRAL_BARRAGE ], - [Species.CRESSELIA]: [ Moves.MIST_BALL, Moves.LUMINA_CRASH, Moves.INFERNAL_PARADE, Moves.HYPERSPACE_HOLE ], - [Species.PHIONE]: [ Moves.SPARKLING_ARIA, Moves.MAKE_IT_RAIN, Moves.TAIL_GLOW, Moves.LIGHT_OF_RUIN ], - [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.RECOVER, Moves.MOONBLAST, Moves.QUIVER_DANCE ], - [Species.DARKRAI]: [ Moves.NIGHT_DAZE, Moves.KNOCK_OFF, Moves.BITTER_MALICE, Moves.SHADOW_FORCE ], - [Species.SHAYMIN]: [ Moves.FLOWER_SHIELD, Moves.FLOWER_TRICK, Moves.CHLOROBLAST, Moves.FLEUR_CANNON ], - [Species.ARCEUS]: [ Moves.SKETCH, Moves.ROAR_OF_TIME, Moves.SPACIAL_REND, Moves.GEOMANCY ], + [Species.TURTWIG]: [ Moves.STONE_AXE, Moves.SHELTER, Moves.BODY_PRESS, Moves.SHELL_SMASH ], + [Species.CHIMCHAR]: [ Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.ICE_PUNCH, Moves.SACRED_FIRE ], + [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.SPIKES, Moves.ROOST, Moves.STEAM_ERUPTION ], + [Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.HIGH_JUMP_KICK ], + [Species.BIDOOF]: [ Moves.EXTREME_SPEED, Moves.NO_RETREAT, Moves.BODY_PRESS, Moves.SURGING_STRIKES ], + [Species.KRICKETOT]: [ Moves.BONEMERANG, Moves.ROOST, Moves.ROCK_BLAST, Moves.VICTORY_DANCE ], + [Species.SHINX]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.FACADE, Moves.BOLT_STRIKE ], + [Species.BUDEW]: [ Moves.PARTING_SHOT, Moves.SPIKES, Moves.SPORE, Moves.MALIGNANT_CHAIN ], + [Species.CRANIDOS]: [ Moves.STONE_AXE, Moves.ACCELEROCK, Moves.HEADLONG_RUSH, Moves.DRAGON_DANCE ], + [Species.SHIELDON]: [ Moves.PAIN_SPLIT, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.DIAMOND_STORM ], + [Species.BURMY]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.RECOVER, Moves.DEFEND_ORDER ], + [Species.COMBEE]: [ Moves.SPORE, Moves.MYSTICAL_FIRE, Moves.KINGS_SHIELD, Moves.QUIVER_DANCE ], + [Species.PACHIRISU]: [ Moves.BADDY_BAD, Moves.BUZZY_BUZZ, Moves.U_TURN, Moves.SIZZLY_SLIDE ], + [Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.TRIPLE_AXEL, Moves.THUNDER_PUNCH, Moves.SURGING_STRIKES ], + [Species.CHERUBI]: [ Moves.SPORE, Moves.STRENGTH_SAP, Moves.APPLE_ACID, Moves.FIERY_DANCE ], + [Species.SHELLOS]: [ Moves.SHORE_UP, Moves.SPIKES, Moves.FREEZE_DRY, Moves.BOUNCY_BUBBLE ], + [Species.DRIFLOON]: [ Moves.WILL_O_WISP, Moves.SHADOW_BONE, Moves.CALM_MIND, Moves.OBLIVION_WING ], + [Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.MULTI_ATTACK ], + [Species.GLAMEOW]: [ Moves.U_TURN, Moves.STOMPING_TANTRUM, Moves.BULK_UP, Moves.RAGING_BULL ], + [Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.COSMIC_POWER, Moves.TORCH_SONG, Moves.LUMINA_CRASH ], + [Species.STUNKY]: [ Moves.SPIKES, Moves.KNOCK_OFF, Moves.RECOVER, Moves.DIRE_CLAW ], + [Species.BRONZOR]: [ Moves.RECOVER, Moves.COSMIC_POWER, Moves.SPIKES, Moves.TACHYON_CUTTER ], + [Species.BONSLY]: [ Moves.STONE_AXE, Moves.LEAF_BLADE, Moves.STRENGTH_SAP, Moves.HEAD_SMASH ], + [Species.MIME_JR]: [ Moves.CALM_MIND, Moves.NONE, Moves.WILL_O_WISP, Moves.TWIN_BEAM ], + [Species.HAPPINY]: [ Moves.IRON_DEFENSE, Moves.SEISMIC_TOSS, Moves.STEALTH_ROCK, Moves.SIZZLY_SLIDE ], + [Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.TORCH_SONG, Moves.BATON_PASS, Moves.BOOMBURST ], + [Species.SPIRITOMB]: [ Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.RECOVER, Moves.POLTERGEIST ], + [Species.GIBLE]: [ Moves.DRAGON_HAMMER, Moves.LANDS_WRATH, Moves.SHORE_UP, Moves.BITTER_BLADE ], + [Species.MUNCHLAX]: [ Moves.IRON_DEFENSE, Moves.BODY_PRESS, Moves.HEAVY_SLAM, Moves.SLACK_OFF ], + [Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.FLASH_CANNON, Moves.TRIPLE_AXEL, Moves.DOUBLE_IRON_BASH ], + [Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.STONE_AXE, Moves.SALT_CURE, Moves.IRON_DEFENSE ], + [Species.SKORUPI]: [ Moves.CEASELESS_EDGE, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], + [Species.CROAGUNK]: [ Moves.DIRE_CLAW, Moves.ICE_PUNCH, Moves.THUNDEROUS_KICK, Moves.VICTORY_DANCE ], + [Species.CARNIVINE]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.MIGHTY_CLEAVE, Moves.FLOWER_TRICK ], + [Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ], + [Species.MANTYKE]: [ Moves.BOUNCY_BUBBLE, Moves.SPIKES, Moves.ROOST, Moves.STEAM_ERUPTION ], + [Species.SNOVER]: [ Moves.STOMPING_TANTRUM, Moves.ICE_HAMMER, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ], + [Species.ROTOM]: [ Moves.RECOVER, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.ELECTRO_DRIFT ], + [Species.UXIE]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.RECOVER, Moves.LUMINA_CRASH ], + [Species.MESPRIT]: [ Moves.QUIVER_DANCE, Moves.AURA_SPHERE, Moves.RECOVER, Moves.LUMINA_CRASH ], + [Species.AZELF]: [ Moves.PHOTON_GEYSER, Moves.DRAGON_DANCE, Moves.RECOVER, Moves.LUMINA_CRASH ], + [Species.DIALGA]: [ Moves.CORE_ENFORCER, Moves.CALM_MIND, Moves.RECOVER, Moves.MAKE_IT_RAIN ], + [Species.PALKIA]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.WATER_SPOUT, Moves.DRAGON_ENERGY ], + [Species.HEATRAN]: [ Moves.TORCH_SONG, Moves.SPIKES, Moves.FLASH_CANNON, Moves.RECOVER ], + [Species.REGIGIGAS]: [ Moves.MIGHTY_CLEAVE, Moves.SHORE_UP, Moves.EXTREME_SPEED, Moves.SKILL_SWAP ], + [Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.ASTRAL_BARRAGE ], + [Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.SECRET_SWORD, Moves.INFERNAL_PARADE, Moves.LUMINA_CRASH ], + [Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ], + [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ], + [Species.DARKRAI]: [ Moves.FIERY_WRATH, Moves.NONE, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN ], + [Species.SHAYMIN]: [ Moves.SEARING_SHOT, Moves.HURRICANE, Moves.MATCHA_GOTCHA, Moves.CHLOROBLAST ], + [Species.ARCEUS]: [ Moves.QUIVER_DANCE, Moves.MULTI_ATTACK, Moves.VICTORY_DANCE, Moves.COLLISION_COURSE ], [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.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.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.PURRLOIN]: [ Moves.THIEF, Moves.SWORDS_DANCE, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], - [Species.PANSAGE]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.STRENGTH_SAP, Moves.FRENZY_PLANT ], + [Species.PURRLOIN]: [ Moves.PSYCHIC_FANGS, Moves.SWORDS_DANCE, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], + [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.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 ], @@ -312,7 +312,7 @@ export const speciesEggMoves = { [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.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.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 ], @@ -471,78 +471,78 @@ export const speciesEggMoves = { [Species.SPECTRIER]: [ Moves.EARTH_POWER, Moves.PSYCHIC, Moves.GLARE, Moves.ASTRAL_BARRAGE ], [Species.CALYREX]: [ Moves.POWER_GEM, Moves.ICE_BEAM, Moves.SHADOW_BALL, Moves.MALIGNANT_CHAIN ], [Species.ENAMORUS]: [ Moves.SPIRIT_BREAK, Moves.TAKE_HEART, Moves.STORED_POWER, Moves.OVERHEAT ], - [Species.SPRIGATITO]: [ Moves.PETAL_BLIZZARD, Moves.COPYCAT, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], - [Species.FUECOCO]: [ Moves.EARTHQUAKE, Moves.SLACK_OFF, Moves.INFERNAL_PARADE, Moves.SEARING_SHOT ], - [Species.QUAXLY]: [ Moves.HIGH_JUMP_KICK, Moves.ROOST, Moves.REVELATION_DANCE, Moves.SURGING_STRIKES ], - [Species.LECHONK]: [ Moves.PLUCK, Moves.RECYCLE, Moves.POWER_TRIP, Moves.FILLET_AWAY ], - [Species.TAROUNTULA]: [ Moves.STEAMROLLER, Moves.LUNGE, Moves.SUCKER_PUNCH, Moves.FIRST_IMPRESSION ], - [Species.NYMBLE]: [ Moves.POWER_UP_PUNCH, Moves.KNOCK_OFF, Moves.LEECH_LIFE, Moves.WICKED_BLOW ], - [Species.PAWMI]: [ Moves.DRAIN_PUNCH, Moves.WISH, Moves.HELPING_HAND, Moves.VOLT_TACKLE ], - [Species.TANDEMAUS]: [ Moves.BITE, Moves.FEINT, Moves.BARRAGE, Moves.BOOMBURST ], - [Species.FIDOUGH]: [ Moves.COPYCAT, Moves.WISH, Moves.COVET, Moves.MAGICAL_TORQUE ], - [Species.SMOLIV]: [ Moves.STRENGTH_SAP, Moves.SYNTHESIS, Moves.WEATHER_BALL, Moves.CHLOROBLAST ], - [Species.SQUAWKABILLY]: [ Moves.PARTING_SHOT, Moves.FINAL_GAMBIT, Moves.DOUBLE_EDGE, Moves.BOOMBURST ], - [Species.NACLI]: [ Moves.BODY_PRESS, Moves.POWER_GEM, Moves.EXPLOSION, Moves.PRECIPICE_BLADES ], - [Species.CHARCADET]: [ Moves.DISABLE, Moves.FLASH_CANNON, Moves.THIEF, Moves.SPECTRAL_THIEF ], - [Species.TADBULB]: [ Moves.MUDDY_WATER, Moves.PARABOLIC_CHARGE, Moves.NUZZLE, Moves.SURF ], - [Species.WATTREL]: [ Moves.FEATHER_DANCE, Moves.WEATHER_BALL, Moves.ENDEAVOR, Moves.BOLT_BEAK ], - [Species.MASCHIFF]: [ Moves.BADDY_BAD, Moves.RETALIATE, Moves.ENDEAVOR, Moves.PLAY_ROUGH ], - [Species.SHROODLE]: [ Moves.COPYCAT, Moves.SUPER_FANG, Moves.TOXIC, Moves.SKETCH ], - [Species.BRAMBLIN]: [ Moves.SHADOW_SNEAK, Moves.STRENGTH_SAP, Moves.POLTERGEIST, Moves.SAPPY_SEED ], - [Species.TOEDSCOOL]: [ Moves.RAPID_SPIN, Moves.KNOCK_OFF, Moves.TOXIC, Moves.NOXIOUS_TORQUE ], - [Species.KLAWF]: [ Moves.ANCIENT_POWER, Moves.KNOCK_OFF, Moves.CRABHAMMER, Moves.DIRE_CLAW ], - [Species.CAPSAKID]: [ Moves.RAGE_POWDER, Moves.ROLLOUT, Moves.LEECH_SEED, Moves.FIERY_DANCE ], - [Species.RELLOR]: [ Moves.COSMIC_POWER, Moves.RECOVER, Moves.WEATHER_BALL, Moves.GLITZY_GLOW ], - [Species.FLITTLE]: [ Moves.GLITZY_GLOW, Moves.HYPNOSIS, Moves.ROOST, Moves.OBLIVION_WING ], - [Species.TINKATINK]: [ Moves.FALSE_SURRENDER, Moves.DRAIN_PUNCH, Moves.ICE_HAMMER, Moves.NO_RETREAT ], - [Species.WIGLETT]: [ Moves.FINAL_GAMBIT, Moves.THIEF, Moves.IRON_HEAD, Moves.SURGING_STRIKES ], - [Species.BOMBIRDIER]: [ Moves.SKY_ATTACK, Moves.POWER_TRIP, Moves.SUCKER_PUNCH, Moves.POPULATION_BOMB ], - [Species.FINIZEN]: [ Moves.BOUNCE, Moves.DRAIN_PUNCH, Moves.COUNTER, Moves.BOOMBURST ], - [Species.VAROOM]: [ Moves.TOXIC, Moves.GEAR_GRIND, Moves.BLAZING_TORQUE, Moves.NOXIOUS_TORQUE ], - [Species.CYCLIZAR]: [ Moves.AQUA_TAIL, Moves.IRON_TAIL, Moves.POWER_WHIP, Moves.DRAGON_DANCE ], - [Species.ORTHWORM]: [ Moves.METAL_BURST, Moves.COIL, Moves.BODY_PRESS, Moves.DRAGON_HAMMER ], - [Species.GLIMMET]: [ Moves.PURIFY, Moves.MOONBLAST, Moves.FLASH_CANNON, Moves.BANEFUL_BUNKER ], - [Species.GREAVARD]: [ Moves.SHADOW_SNEAK, Moves.DISABLE, Moves.YAWN, Moves.SHADOW_FORCE ], - [Species.FLAMIGO]: [ Moves.DOUBLE_TEAM, Moves.SKY_ATTACK, Moves.VICTORY_DANCE, Moves.HIGH_JUMP_KICK ], - [Species.CETODDLE]: [ Moves.ICICLE_CRASH, Moves.SUPERPOWER, Moves.ENTRAINMENT, Moves.BELLY_DRUM ], - [Species.VELUZA]: [ Moves.RECOVER, Moves.THRASH, Moves.KOWTOW_CLEAVE, Moves.PSYBLADE ], - [Species.DONDOZO]: [ Moves.OUTRAGE, Moves.YAWN, Moves.HEAVY_SLAM, Moves.FISHIOUS_REND ], - [Species.TATSUGIRI]: [ Moves.RAPID_SPIN, Moves.BATON_PASS, Moves.MIMIC, Moves.COUNTER ], - [Species.GREAT_TUSK]: [ Moves.HIGH_HORSEPOWER, Moves.DRILL_RUN, Moves.SUPERPOWER, Moves.BEHEMOTH_BASH ], - [Species.SCREAM_TAIL]: [ Moves.PSYCHIC, Moves.MOONBLAST, Moves.MOONLIGHT, Moves.LIGHT_OF_RUIN ], - [Species.BRUTE_BONNET]: [ Moves.CRUNCH, Moves.SAPPY_SEED, Moves.FRENZY_PLANT, Moves.STRENGTH_SAP ], - [Species.FLUTTER_MANE]: [ Moves.MOONLIGHT, Moves.SNARL, Moves.EARTH_POWER, Moves.MOONGEIST_BEAM ], - [Species.SLITHER_WING]: [ Moves.DRAIN_PUNCH, Moves.VICTORY_DANCE, Moves.SIZZLY_SLIDE, Moves.COLLISION_COURSE ], - [Species.SANDY_SHOCKS]: [ Moves.PARABOLIC_CHARGE, Moves.SCORCHING_SANDS, Moves.CALM_MIND, Moves.ELECTRO_SHOT ], - [Species.IRON_TREADS]: [ Moves.SUPERCELL_SLAM, Moves.BULK_UP, Moves.HEAD_SMASH, Moves.COLLISION_COURSE ], - [Species.IRON_BUNDLE]: [ Moves.PARABOLIC_CHARGE, Moves.SCALD, Moves.NASTY_PLOT, Moves.GLACIATE ], - [Species.IRON_HANDS]: [ Moves.MACH_PUNCH, Moves.HIGH_HORSEPOWER, Moves.MAT_BLOCK, Moves.PLASMA_FISTS ], - [Species.IRON_JUGULIS]: [ Moves.FIERY_WRATH, Moves.FLAMETHROWER, Moves.NASTY_PLOT, Moves.OBLIVION_WING ], - [Species.IRON_MOTH]: [ Moves.PARABOLIC_CHARGE, Moves.QUIVER_DANCE, Moves.FLASH_CANNON, Moves.TORCH_SONG ], - [Species.IRON_THORNS]: [ Moves.DRAIN_PUNCH, Moves.SUPERPOWER, Moves.SHIFT_GEAR, Moves.FUSION_BOLT ], - [Species.FRIGIBAX]: [ Moves.ICICLE_SPEAR, Moves.AQUA_TAIL, Moves.FREEZE_DRY, Moves.DRAGON_RUSH ], - [Species.GIMMIGHOUL]: [ Moves.PAY_DAY, Moves.HAPPY_HOUR, Moves.MIRROR_COAT, Moves.TECHNO_BLAST ], - [Species.WO_CHIEN]: [ Moves.POLLEN_PUFF, Moves.FORESTS_CURSE, Moves.FOLLOW_ME, Moves.SPORE ], - [Species.CHIEN_PAO]: [ Moves.STOMPING_TANTRUM, Moves.WATERFALL, Moves.CHILLY_RECEPTION, Moves.BEHEMOTH_BLADE ], - [Species.TING_LU]: [ Moves.HEAT_CRASH, Moves.IRON_HEAD, Moves.HORN_LEECH, Moves.STRENGTH_SAP ], - [Species.CHI_YU]: [ Moves.ENERGY_BALL, Moves.STORED_POWER, Moves.SCALD, Moves.BLUE_FLARE ], - [Species.ROARING_MOON]: [ Moves.RAGING_FURY, Moves.FLOATY_FALL, Moves.OBSTRUCT, Moves.COLLISION_COURSE ], - [Species.IRON_VALIANT]: [ Moves.SECRET_SWORD, Moves.PLAY_ROUGH, Moves.QUIVER_DANCE, Moves.ELECTRO_DRIFT ], - [Species.KORAIDON]: [ Moves.HEAD_SMASH, Moves.BULK_UP, Moves.IRON_HEAD, Moves.CLANGOROUS_SOUL ], - [Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.CALM_MIND, Moves.FLASH_CANNON, Moves.CLANGOROUS_SOUL ], - [Species.WALKING_WAKE]: [ Moves.THUNDERCLAP, Moves.FLASH_CANNON, Moves.ALLURING_VOICE, Moves.ELECTRO_DRIFT ], - [Species.IRON_LEAVES]: [ Moves.MIGHTY_CLEAVE, Moves.TACHYON_CUTTER, Moves.SPIRIT_BREAK, Moves.COLLISION_COURSE ], - [Species.POLTCHAGEIST]: [ Moves.TEATIME, Moves.AROMATHERAPY, Moves.STRENGTH_SAP, Moves.MILK_DRINK ], - [Species.OKIDOGI]: [ Moves.JAW_LOCK, Moves.OBSTRUCT, Moves.DIRE_CLAW, Moves.MALIGNANT_CHAIN ], - [Species.MUNKIDORI]: [ Moves.PSYSTRIKE, Moves.MYSTICAL_FIRE, Moves.WILL_O_WISP, Moves.MALIGNANT_CHAIN ], - [Species.FEZANDIPITI]: [ Moves.DUAL_WINGBEAT, Moves.DRAINING_KISS, Moves.TRIPLE_AXEL, Moves.MALIGNANT_CHAIN ], - [Species.OGERPON]: [ Moves.JUNGLE_HEALING, Moves.NUZZLE, Moves.TRIPLE_AXEL, Moves.GIGATON_HAMMER ], - [Species.GOUGING_FIRE]: [ Moves.PLAY_ROUGH, Moves.HORN_LEECH, Moves.HYDRO_STEAM, Moves.ELECTRO_DRIFT ], - [Species.RAGING_BOLT]: [ Moves.HYDRO_STEAM, Moves.FLASH_CANNON, Moves.PARABOLIC_CHARGE, Moves.ELECTRO_DRIFT ], - [Species.IRON_BOULDER]: [ Moves.PSYBLADE, Moves.TACHYON_CUTTER, Moves.LEAF_BLADE, Moves.COLLISION_COURSE ], - [Species.IRON_CROWN]: [ Moves.MIGHTY_CLEAVE, Moves.PSYBLADE, Moves.AQUA_CUTTER, Moves.COLLISION_COURSE ], - [Species.TERAPAGOS]: [ Moves.EARTH_POWER, Moves.BOOMBURST, Moves.ICE_BEAM, Moves.DIAMOND_STORM ], - [Species.PECHARUNT]: [ Moves.VENOSHOCK, Moves.VENOM_DRENCH, Moves.HEX, Moves.BANEFUL_BUNKER ], + [Species.SPRIGATITO]: [ Moves.FIRE_LASH, Moves.STRENGTH_SAP, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], + [Species.FUECOCO]: [ Moves.COSMIC_POWER, Moves.SLACK_OFF, Moves.INFERNAL_PARADE, Moves.MOONGEIST_BEAM ], + [Species.QUAXLY]: [ Moves.THUNDEROUS_KICK, Moves.ROOST, Moves.TROP_KICK, Moves.DRAGON_DANCE ], + [Species.LECHONK]: [ Moves.MILK_DRINK, Moves.BLAZING_TORQUE, Moves.NONE, Moves.HEAD_CHARGE ], + [Species.TAROUNTULA]: [ Moves.STRENGTH_SAP, Moves.LEECH_LIFE, Moves.PARTING_SHOT, Moves.STONE_AXE ], + [Species.NYMBLE]: [ Moves.CEASELESS_EDGE, Moves.KNOCK_OFF, Moves.LEECH_LIFE, Moves.NONE ], + [Species.PAWMI]: [ Moves.ICE_SPINNER, Moves.WISH, Moves.PARTING_SHOT, Moves.PLASMA_FISTS ], + [Species.TANDEMAUS]: [ Moves.BATON_PASS, Moves.HEALING_WISH, Moves.NUZZLE, Moves.WICKED_BLOW ], + [Species.FIDOUGH]: [ Moves.MILK_DRINK, Moves.SIZZLY_SLIDE, Moves.PARTING_SHOT, Moves.MAGICAL_TORQUE ], + [Species.SMOLIV]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.BOOMBURST ], + [Species.SQUAWKABILLY]: [ Moves.PARTING_SHOT, Moves.BULK_UP, Moves.TEMPER_FLARE, Moves.HEAD_CHARGE ], + [Species.NACLI]: [ Moves.BODY_PRESS, Moves.SPIKES, Moves.CURSE, Moves.DIAMOND_STORM ], + [Species.CHARCADET]: [ Moves.SACRED_SWORD, Moves.NONE, Moves.PHOTON_GEYSER, Moves.SPECTRAL_THIEF ], + [Species.TADBULB]: [ Moves.SLACK_OFF, Moves.MUDDY_WATER, Moves.EARTH_POWER, Moves.ELECTRO_SHOT ], + [Species.WATTREL]: [ Moves.NASTY_PLOT, Moves.TAILWIND, Moves.HEAT_WAVE, Moves.ELECTRO_DRIFT ], + [Species.MASCHIFF]: [ Moves.PARTING_SHOT, Moves.DARKEST_LARIAT, Moves.NUZZLE, Moves.COLLISION_COURSE ], + [Species.SHROODLE]: [ Moves.BLAZING_TORQUE, Moves.RAGING_BULL, Moves.TOXIC_SPIKES, Moves.TIDY_UP ], + [Species.BRAMBLIN]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.CEASELESS_EDGE, Moves.POLTERGEIST ], + [Species.TOEDSCOOL]: [ Moves.STRENGTH_SAP, Moves.SCALD, Moves.PARTING_SHOT, Moves.SAPPY_SEED ], + [Species.KLAWF]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE, Moves.SHELL_SMASH ], + [Species.CAPSAKID]: [ Moves.STRENGTH_SAP, Moves.NONE, Moves.ICE_SPINNER, Moves.TORCH_SONG ], + [Species.RELLOR]: [ Moves.GLITZY_GLOW, Moves.RECOVER, Moves.MYSTICAL_FIRE, Moves.LUMINA_CRASH ], + [Species.FLITTLE]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.ROOST, Moves.SEARING_SHOT ], + [Species.TINKATINK]: [ Moves.NUZZLE, Moves.SHIFT_GEAR, Moves.ICE_HAMMER, Moves.PYRO_BALL ], + [Species.WIGLETT]: [ Moves.SHELL_SMASH, Moves.ICICLE_CRASH, Moves.SEED_BOMB, Moves.SURGING_STRIKES ], + [Species.BOMBIRDIER]: [ Moves.STONE_AXE, Moves.SWORDS_DANCE, Moves.SUCKER_PUNCH, Moves.MIGHTY_CLEAVE ], + [Species.FINIZEN]: [ Moves.ICE_SPINNER, Moves.DRAIN_PUNCH, Moves.LEAF_BLADE, Moves.RECOVER ], + [Species.VAROOM]: [ Moves.COMBAT_TORQUE, Moves.GEAR_GRIND, Moves.BLAZING_TORQUE, Moves.NOXIOUS_TORQUE ], + [Species.CYCLIZAR]: [ Moves.BATON_PASS, Moves.BLAZING_TORQUE, Moves.RAGING_BULL, Moves.CLANGOROUS_SOUL ], + [Species.ORTHWORM]: [ Moves.STONE_AXE, Moves.CURSE, Moves.BODY_PRESS, Moves.SHORE_UP ], + [Species.GLIMMET]: [ Moves.CALM_MIND, Moves.SHORE_UP, Moves.PARTING_SHOT, Moves.FIERY_DANCE ], + [Species.GREAVARD]: [ Moves.BULK_UP, Moves.AGILITY, Moves.RECOVER, Moves.COLLISION_COURSE ], + [Species.FLAMIGO]: [ Moves.SKY_UPPERCUT, Moves.TRIPLE_AXEL, Moves.THUNDER_PUNCH, Moves.VICTORY_DANCE ], + [Species.CETODDLE]: [ Moves.ICICLE_CRASH, Moves.TIDY_UP, Moves.RECOVER, Moves.COLLISION_COURSE ], + [Species.VELUZA]: [ Moves.RECOVER, Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.PHOTON_GEYSER ], + [Species.DONDOZO]: [ Moves.RECOVER, Moves.ICE_SPINNER, Moves.CURSE, Moves.WOOD_HAMMER ], + [Species.TATSUGIRI]: [ Moves.ICE_BEAM, Moves.BATON_PASS, Moves.SCALD, Moves.NONE ], + [Species.GREAT_TUSK]: [ Moves.STONE_AXE, Moves.CEASELESS_EDGE, Moves.DRAGON_DANCE, Moves.COLLISION_COURSE ], + [Species.SCREAM_TAIL]: [ Moves.COSMIC_POWER, Moves.LUMINA_CRASH, Moves.MOONLIGHT, Moves.SHED_TAIL ], + [Species.BRUTE_BONNET]: [ Moves.DARKEST_LARIAT, Moves.STRENGTH_SAP, Moves.EARTHQUAKE, Moves.SAPPY_SEED ], + [Species.FLUTTER_MANE]: [ Moves.MOONLIGHT, Moves.FLAMETHROWER, Moves.EARTH_POWER, Moves.ASTRAL_BARRAGE ], + [Species.SLITHER_WING]: [ Moves.KNOCK_OFF, Moves.VICTORY_DANCE, Moves.SIZZLY_SLIDE, Moves.FLYING_PRESS ], + [Species.SANDY_SHOCKS]: [ Moves.SHORE_UP, Moves.ICE_BEAM, Moves.NASTY_PLOT, Moves.BUZZY_BUZZ ], + [Species.IRON_TREADS]: [ Moves.AURA_WHEEL, Moves.BULK_UP, Moves.SPIKES, Moves.DOUBLE_IRON_BASH ], + [Species.IRON_BUNDLE]: [ Moves.EARTH_POWER, Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.WATER_SPOUT ], + [Species.IRON_HANDS]: [ Moves.HAMMER_ARM, Moves.PLASMA_FISTS, Moves.CURSE, Moves.RECOVER ], + [Species.IRON_JUGULIS]: [ Moves.FIERY_WRATH, Moves.ROOST, Moves.NASTY_PLOT, Moves.OBLIVION_WING ], + [Species.IRON_MOTH]: [ Moves.EARTH_POWER, Moves.SEARING_SHOT, Moves.QUIVER_DANCE, Moves.MALIGNANT_CHAIN ], + [Species.IRON_THORNS]: [ Moves.MIGHTY_CLEAVE, Moves.SHORE_UP, Moves.SHIFT_GEAR, Moves.AURA_WHEEL ], + [Species.FRIGIBAX]: [ Moves.DRAGON_HAMMER, Moves.BULK_UP, Moves.SHORE_UP, Moves.GLACIAL_LANCE ], + [Species.GIMMIGHOUL]: [ Moves.COSMIC_POWER, Moves.STORED_POWER, Moves.MIRROR_COAT, Moves.ASTRAL_BARRAGE ], + [Species.WO_CHIEN]: [ Moves.SPORE, Moves.SPIKES, Moves.SAPPY_SEED, Moves.JUNGLE_HEALING ], + [Species.CHIEN_PAO]: [ Moves.NONE, Moves.PARTING_SHOT, Moves.BITTER_BLADE, Moves.GLACIAL_LANCE ], + [Species.TING_LU]: [ Moves.SHORE_UP, Moves.CURSE, Moves.LEECH_SEED, Moves.THOUSAND_ARROWS ], + [Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.HYDRO_STEAM, Moves.ERUPTION, Moves.TORCH_SONG ], + [Species.ROARING_MOON]: [ Moves.SIZZLY_SLIDE, Moves.DRAGON_HAMMER, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], + [Species.IRON_VALIANT]: [ Moves.PLASMA_FISTS, Moves.VICTORY_DANCE, Moves.QUIVER_DANCE, Moves.MAGICAL_TORQUE ], + [Species.KORAIDON]: [ Moves.MIGHTY_CLEAVE, Moves.RECOVER, Moves.GLAIVE_RUSH, Moves.CLANGOROUS_SOUL ], + [Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.RECOVER, Moves.RISING_VOLTAGE, Moves.DRAGON_ENERGY ], + [Species.WALKING_WAKE]: [ Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.DRAGON_ENERGY ], + [Species.IRON_LEAVES]: [ Moves.SPORE, Moves.BLAZING_TORQUE, Moves.SAPPY_SEED, Moves.PHOTON_GEYSER ], + [Species.POLTCHAGEIST]: [ Moves.COSMIC_POWER, Moves.INFERNAL_PARADE, Moves.LEECH_SEED, Moves.FOLLOW_ME ], + [Species.OKIDOGI]: [ Moves.MORNING_SUN, Moves.OBSTRUCT, Moves.DIRE_CLAW, Moves.COLLISION_COURSE ], + [Species.MUNKIDORI]: [ Moves.PSYSTRIKE, Moves.SEARING_SHOT, Moves.EARTH_POWER, Moves.MALIGNANT_CHAIN ], + [Species.FEZANDIPITI]: [ Moves.BATON_PASS, Moves.COSMIC_POWER, Moves.SIZZLY_SLIDE, Moves.MALIGNANT_CHAIN ], + [Species.OGERPON]: [ Moves.JUNGLE_HEALING, Moves.STONE_AXE, Moves.TRIPLE_AXEL, Moves.GIGATON_HAMMER ], + [Species.GOUGING_FIRE]: [ Moves.SUPERCELL_SLAM, Moves.BULK_UP, Moves.SACRED_FIRE, Moves.GLAIVE_RUSH ], + [Species.RAGING_BOLT]: [ Moves.NASTY_PLOT, Moves.FLAMETHROWER, Moves.PARABOLIC_CHARGE, Moves.ELECTRO_DRIFT ], + [Species.IRON_BOULDER]: [ Moves.PSYBLADE, Moves.TACHYON_CUTTER, Moves.STONE_AXE, Moves.V_CREATE ], + [Species.IRON_CROWN]: [ Moves.NONE, Moves.SECRET_SWORD, Moves.PHOTON_GEYSER, Moves.ELECTRO_DRIFT ], + [Species.TERAPAGOS]: [ Moves.EARTH_POWER, Moves.BOOMBURST, Moves.ICE_BEAM, Moves.RECOVER ], + [Species.PECHARUNT]: [ Moves.TOXIC_SPIKES, Moves.BODY_PRESS, Moves.HEX, Moves.BANEFUL_BUNKER ], [Species.ALOLA_RATTATA]: [ Moves.STUFF_CHEEKS, Moves.BADDY_BAD, Moves.FLAME_WHEEL, Moves.RECYCLE ], [Species.ALOLA_SANDSHREW]: [ Moves.SPIKY_SHIELD, Moves.ICE_SHARD, Moves.CRUSH_CLAW, Moves.SPIN_OUT ], [Species.ALOLA_VULPIX]: [ Moves.MOONBLAST, Moves.HYPNOSIS, Moves.CHILLING_WATER, Moves.FREEZY_FROST ], @@ -568,9 +568,9 @@ export const speciesEggMoves = { [Species.HISUI_QWILFISH]: [ Moves.NUZZLE, Moves.SCALE_SHOT, Moves.SUPERSONIC, Moves.PARTING_SHOT ], [Species.HISUI_SNEASEL]: [ Moves.DRAIN_PUNCH, Moves.BULLET_PUNCH, Moves.FAKE_OUT, Moves.VICTORY_DANCE ], [Species.HISUI_ZORUA]: [ Moves.ALLURING_VOICE, Moves.GLARE, Moves.TORCH_SONG, Moves.TRANSFORM ], - [Species.PALDEA_TAUROS]: [ Moves.HEAD_CHARGE, Moves.BLAZE_KICK, Moves.AQUA_STEP, Moves.NO_RETREAT ], - [Species.PALDEA_WOOPER]: [ Moves.RECOVER, Moves.DOUBLE_KICK, Moves.ANCIENT_POWER, Moves.VENOM_DRENCH ], - [Species.BLOODMOON_URSALUNA]: [ Moves.GLARE, Moves.SCORCHING_SANDS, Moves.CALM_MIND, Moves.BOOMBURST ] + [Species.PALDEA_TAUROS]: [ Moves.THUNDEROUS_KICK, Moves.BLAZING_TORQUE, Moves.AQUA_STEP, Moves.NO_RETREAT ], + [Species.PALDEA_WOOPER]: [ Moves.RECOVER, Moves.STONE_AXE, Moves.LEECH_SEED, Moves.BANEFUL_BUNKER ], + [Species.BLOODMOON_URSALUNA]: [ Moves.GLARE, Moves.OBSTRUCT, Moves.PARTING_SHOT, Moves.BOOMBURST ] }; function parseEggMoves(content: string): void { From dcb4688c76a470eec6edfa767084c03f97b08c2d Mon Sep 17 00:00:00 2001 From: Madmadness65 Date: Fri, 12 Apr 2024 14:54:01 -0500 Subject: [PATCH 19/27] Revert "Update Gen 4 & 9 egg moves" This reverts commit eef83432ab360ef2c7356f45761923a69a2f2297. --- src/data/ability.ts | 2 +- src/data/egg-moves.ts | 268 +++++++++++++++++++++--------------------- 2 files changed, 135 insertions(+), 135 deletions(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index b8c19ef9fb5..c9217e17ac5 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -2091,7 +2091,7 @@ export function initAbilities() { .bypassFaint() .ignorable(), new Ability(Abilities.SHED_SKIN, "Shed Skin", "The Pokémon may heal its own status conditions by shedding its skin.", 3) - .conditionalAttr(pokemon => !Utils.randSeedInt(3), PostTurnResetStatusAbAttr), + .conditionalAttr(pokemon => !Utils.randSeedInt(3), PostTurnResetStatusAbAttr), new Ability(Abilities.GUTS, "Guts", "It's so gutsy that having a status condition boosts the Pokémon's Attack stat.", 3) .attr(BypassBurnDamageReductionAbAttr) .conditionalAttr(pokemon => !!pokemon.status, BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5), diff --git a/src/data/egg-moves.ts b/src/data/egg-moves.ts index 63067b61658..1413bc4bf41 100644 --- a/src/data/egg-moves.ts +++ b/src/data/egg-moves.ts @@ -26,7 +26,7 @@ export const speciesEggMoves = { [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.MANKEY]: [ Moves.BEAT_UP, Moves.PLAY_ROUGH, Moves.TAUNT, Moves.CLOSE_COMBAT ], - [Species.GROWLITHE]: [ Moves.TRAILBLAZE, Moves.U_TURN, Moves.MORNING_SUN, Moves.V_CREATE ], + [Species.GROWLITHE]: [ Moves.THUNDER_FANG, Moves.HYPER_VOICE, Moves.NOBLE_ROAR, Moves.RAGING_FURY ], [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.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.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.GASTLY]: [ Moves.CLEAR_SMOG, Moves.NIGHT_DAZE, Moves.NASTY_PLOT, Moves.SPECTRAL_THIEF ], + [Species.GASTLY]: [ Moves.CLEAR_SMOG, Moves.THIEF, Moves.NASTY_PLOT, Moves.SPECTRAL_THIEF ], [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.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.MEWTWO]: [ Moves.PSYBLADE, Moves.POLTERGEIST, Moves.ARMOR_CANNON, Moves.PSYCHO_BOOST ], [Species.MEW]: [ Moves.PSYSTRIKE, Moves.DECORATE, Moves.REVIVAL_BLESSING, Moves.SKETCH ], - [Species.CHIKORITA]: [ Moves.ROCK_SLIDE, Moves.PLAY_ROUGH, Moves.DRAGON_DANCE, Moves.SAPPY_SEED ], + [Species.CHIKORITA]: [ Moves.ROCK_SLIDE, Moves.LUNGE, Moves.DRAGON_DANCE, Moves.SAPPY_SEED ], [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.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.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.ELECTRIKE]: [ Moves.NUZZLE, Moves.TEMPER_FLARE, Moves.TRAILBLAZE, Moves.WILDBOLT_STORM ], + [Species.ELECTRIKE]: [ Moves.NUZZLE, Moves.JAW_LOCK, Moves.FLAME_CHARGE, Moves.WILDBOLT_STORM ], [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.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.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.TURTWIG]: [ Moves.STONE_AXE, Moves.SHELTER, Moves.BODY_PRESS, Moves.SHELL_SMASH ], - [Species.CHIMCHAR]: [ Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.ICE_PUNCH, Moves.SACRED_FIRE ], - [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.SPIKES, Moves.ROOST, Moves.STEAM_ERUPTION ], - [Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.HIGH_JUMP_KICK ], - [Species.BIDOOF]: [ Moves.EXTREME_SPEED, Moves.NO_RETREAT, Moves.BODY_PRESS, Moves.SURGING_STRIKES ], - [Species.KRICKETOT]: [ Moves.BONEMERANG, Moves.ROOST, Moves.ROCK_BLAST, Moves.VICTORY_DANCE ], - [Species.SHINX]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.FACADE, Moves.BOLT_STRIKE ], - [Species.BUDEW]: [ Moves.PARTING_SHOT, Moves.SPIKES, Moves.SPORE, Moves.MALIGNANT_CHAIN ], - [Species.CRANIDOS]: [ Moves.STONE_AXE, Moves.ACCELEROCK, Moves.HEADLONG_RUSH, Moves.DRAGON_DANCE ], - [Species.SHIELDON]: [ Moves.PAIN_SPLIT, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.DIAMOND_STORM ], - [Species.BURMY]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.RECOVER, Moves.DEFEND_ORDER ], - [Species.COMBEE]: [ Moves.SPORE, Moves.MYSTICAL_FIRE, Moves.KINGS_SHIELD, Moves.QUIVER_DANCE ], - [Species.PACHIRISU]: [ Moves.BADDY_BAD, Moves.BUZZY_BUZZ, Moves.U_TURN, Moves.SIZZLY_SLIDE ], - [Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.TRIPLE_AXEL, Moves.THUNDER_PUNCH, Moves.SURGING_STRIKES ], - [Species.CHERUBI]: [ Moves.SPORE, Moves.STRENGTH_SAP, Moves.APPLE_ACID, Moves.FIERY_DANCE ], - [Species.SHELLOS]: [ Moves.SHORE_UP, Moves.SPIKES, Moves.FREEZE_DRY, Moves.BOUNCY_BUBBLE ], - [Species.DRIFLOON]: [ Moves.WILL_O_WISP, Moves.SHADOW_BONE, Moves.CALM_MIND, Moves.OBLIVION_WING ], - [Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.MULTI_ATTACK ], - [Species.GLAMEOW]: [ Moves.U_TURN, Moves.STOMPING_TANTRUM, Moves.BULK_UP, Moves.RAGING_BULL ], - [Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.COSMIC_POWER, Moves.TORCH_SONG, Moves.LUMINA_CRASH ], - [Species.STUNKY]: [ Moves.SPIKES, Moves.KNOCK_OFF, Moves.RECOVER, Moves.DIRE_CLAW ], - [Species.BRONZOR]: [ Moves.RECOVER, Moves.COSMIC_POWER, Moves.SPIKES, Moves.TACHYON_CUTTER ], - [Species.BONSLY]: [ Moves.STONE_AXE, Moves.LEAF_BLADE, Moves.STRENGTH_SAP, Moves.HEAD_SMASH ], - [Species.MIME_JR]: [ Moves.CALM_MIND, Moves.NONE, Moves.WILL_O_WISP, Moves.TWIN_BEAM ], - [Species.HAPPINY]: [ Moves.IRON_DEFENSE, Moves.SEISMIC_TOSS, Moves.STEALTH_ROCK, Moves.SIZZLY_SLIDE ], - [Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.TORCH_SONG, Moves.BATON_PASS, Moves.BOOMBURST ], - [Species.SPIRITOMB]: [ Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.RECOVER, Moves.POLTERGEIST ], - [Species.GIBLE]: [ Moves.DRAGON_HAMMER, Moves.LANDS_WRATH, Moves.SHORE_UP, Moves.BITTER_BLADE ], - [Species.MUNCHLAX]: [ Moves.IRON_DEFENSE, Moves.BODY_PRESS, Moves.HEAVY_SLAM, Moves.SLACK_OFF ], - [Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.FLASH_CANNON, Moves.TRIPLE_AXEL, Moves.DOUBLE_IRON_BASH ], - [Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.STONE_AXE, Moves.SALT_CURE, Moves.IRON_DEFENSE ], - [Species.SKORUPI]: [ Moves.CEASELESS_EDGE, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], - [Species.CROAGUNK]: [ Moves.DIRE_CLAW, Moves.ICE_PUNCH, Moves.THUNDEROUS_KICK, Moves.VICTORY_DANCE ], - [Species.CARNIVINE]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.MIGHTY_CLEAVE, Moves.FLOWER_TRICK ], - [Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ], - [Species.MANTYKE]: [ Moves.BOUNCY_BUBBLE, Moves.SPIKES, Moves.ROOST, Moves.STEAM_ERUPTION ], - [Species.SNOVER]: [ Moves.STOMPING_TANTRUM, Moves.ICE_HAMMER, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ], - [Species.ROTOM]: [ Moves.RECOVER, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.ELECTRO_DRIFT ], - [Species.UXIE]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.RECOVER, Moves.LUMINA_CRASH ], - [Species.MESPRIT]: [ Moves.QUIVER_DANCE, Moves.AURA_SPHERE, Moves.RECOVER, Moves.LUMINA_CRASH ], - [Species.AZELF]: [ Moves.PHOTON_GEYSER, Moves.DRAGON_DANCE, Moves.RECOVER, Moves.LUMINA_CRASH ], - [Species.DIALGA]: [ Moves.CORE_ENFORCER, Moves.CALM_MIND, Moves.RECOVER, Moves.MAKE_IT_RAIN ], - [Species.PALKIA]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.WATER_SPOUT, Moves.DRAGON_ENERGY ], - [Species.HEATRAN]: [ Moves.TORCH_SONG, Moves.SPIKES, Moves.FLASH_CANNON, Moves.RECOVER ], - [Species.REGIGIGAS]: [ Moves.MIGHTY_CLEAVE, Moves.SHORE_UP, Moves.EXTREME_SPEED, Moves.SKILL_SWAP ], - [Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.ASTRAL_BARRAGE ], - [Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.SECRET_SWORD, Moves.INFERNAL_PARADE, Moves.LUMINA_CRASH ], - [Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ], - [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ], - [Species.DARKRAI]: [ Moves.FIERY_WRATH, Moves.NONE, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN ], - [Species.SHAYMIN]: [ Moves.SEARING_SHOT, Moves.HURRICANE, Moves.MATCHA_GOTCHA, Moves.CHLOROBLAST ], - [Species.ARCEUS]: [ Moves.QUIVER_DANCE, Moves.MULTI_ATTACK, Moves.VICTORY_DANCE, Moves.COLLISION_COURSE ], + [Species.TURTWIG]: [ Moves.HEADLONG_RUSH, Moves.SHELTER, Moves.BODY_PRESS, Moves.FRENZY_PLANT ], + [Species.CHIMCHAR]: [ Moves.RAGING_FURY, Moves.BURN_UP, Moves.WORK_UP, Moves.WICKED_BLOW ], + [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.FLIP_TURN, Moves.NOBLE_ROAR, Moves.SUNSTEEL_STRIKE ], + [Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.OUTRAGE, Moves.FLAME_CHARGE, Moves.COLLISION_COURSE ], + [Species.BIDOOF]: [ Moves.SUPER_FANG, Moves.LIQUIDATION, Moves.BODY_PRESS, Moves.NO_RETREAT ], + [Species.KRICKETOT]: [ Moves.BOOMBURST, Moves.ALLURING_VOICE, Moves.SPARKLING_ARIA, Moves.QUIVER_DANCE ], + [Species.SHINX]: [ Moves.PSYCHIC_FANGS, Moves.JAW_LOCK, Moves.FACADE, Moves.VOLT_TACKLE ], + [Species.BUDEW]: [ Moves.FLORAL_HEALING, Moves.ACID_SPRAY, Moves.SPORE, Moves.SEED_FLARE ], + [Species.CRANIDOS]: [ Moves.STONE_AXE, Moves.DRAGON_RUSH, Moves.SUPERPOWER, Moves.ROCK_WRECKER ], + [Species.SHIELDON]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BASH ], + [Species.BURMY]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.RECOVER, Moves.SHELTER ], + [Species.COMBEE]: [ Moves.TWINEEDLE, Moves.AIR_SLASH, Moves.KINGS_SHIELD, Moves.SPORE ], + [Species.PACHIRISU]: [ Moves.SUPER_FANG, Moves.EXTREME_SPEED, Moves.SUPERPOWER, Moves.VOLT_TACKLE ], + [Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.ICE_PUNCH, Moves.HIGH_HORSEPOWER, Moves.SURGING_STRIKES ], + [Species.CHERUBI]: [ Moves.FLOWER_SHIELD, Moves.GRASSY_TERRAIN, Moves.GRASSY_GLIDE, Moves.SPORE ], + [Species.SHELLOS]: [ Moves.LIFE_DEW, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.FREEZY_FROST ], + [Species.DRIFLOON]: [ Moves.THIEF, Moves.ACUPRESSURE, Moves.WILL_O_WISP, Moves.HURRICANE ], + [Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.TROP_KICK, Moves.FAKE_OUT, Moves.SWORDS_DANCE ], + [Species.GLAMEOW]: [ Moves.U_TURN, Moves.STOMPING_TANTRUM, Moves.COVET, Moves.WICKED_BLOW ], + [Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.BOOMBURST, Moves.TORCH_SONG, Moves.EERIE_SPELL ], + [Species.STUNKY]: [ Moves.CORROSIVE_GAS, Moves.BURNING_JEALOUSY, Moves.SUPER_FANG, Moves.WICKED_BLOW ], + [Species.BRONZOR]: [ Moves.PSYSHIELD_BASH, Moves.COSMIC_POWER, Moves.MIRROR_COAT, Moves.TACHYON_CUTTER ], + [Species.BONSLY]: [ Moves.INGRAIN, Moves.GRASSY_GLIDE, Moves.EXTREME_SPEED, Moves.HEAD_SMASH ], + [Species.MIME_JR]: [ Moves.CALM_MIND, Moves.ATTRACT, Moves.TAUNT, Moves.GLITZY_GLOW ], + [Species.HAPPINY]: [ Moves.HAPPY_HOUR, Moves.SEISMIC_TOSS, Moves.STEALTH_ROCK, Moves.INSTRUCT ], + [Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.BOOMBURST, Moves.TAUNT, Moves.TORCH_SONG ], + [Species.SPIRITOMB]: [ Moves.POLTERGEIST, Moves.PAIN_SPLIT, Moves.BURNING_JEALOUSY, Moves.MAKE_IT_RAIN ], + [Species.GIBLE]: [ Moves.DRAGON_HAMMER, Moves.AQUA_JET, Moves.POISON_FANG, Moves.GLAIVE_RUSH ], + [Species.MUNCHLAX]: [ Moves.TEATIME, Moves.BODY_PRESS, Moves.HEAVY_SLAM, Moves.SLACK_OFF ], + [Species.RIOLU]: [ Moves.UPPER_HAND, Moves.ARM_THRUST, Moves.ICE_PUNCH, Moves.PLAY_ROUGH ], + [Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.HARD_PRESS, Moves.SCORCHING_SANDS, Moves.LANDS_WRATH ], + [Species.SKORUPI]: [ Moves.COIL, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], + [Species.CROAGUNK]: [ Moves.GUNK_SHOT, Moves.LASH_OUT, Moves.MACH_PUNCH, Moves.SWORDS_DANCE ], + [Species.CARNIVINE]: [ Moves.SNAP_TRAP, Moves.JAW_LOCK, Moves.RAGE_POWDER, Moves.FLOWER_TRICK ], + [Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.MOONBLAST, Moves.MOONGEIST_BEAM ], + [Species.MANTYKE]: [ Moves.BOUNCY_BUBBLE, Moves.ICY_WIND, Moves.TAILWIND, Moves.RECOVER ], + [Species.SNOVER]: [ Moves.DRUM_BEATING, Moves.ICE_HAMMER, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ], + [Species.ROTOM]: [ Moves.FREEZE_DRY, Moves.FLAME_BURST, Moves.WATER_PULSE, Moves.AIR_SLASH ], + [Species.UXIE]: [ Moves.REVELATION_DANCE, Moves.TEETER_DANCE, Moves.DARK_PULSE, Moves.PRISMATIC_LASER ], + [Species.MESPRIT]: [ Moves.REVELATION_DANCE, Moves.LUNAR_DANCE, Moves.MOONBLAST, Moves.PRISMATIC_LASER ], + [Species.AZELF]: [ Moves.REVELATION_DANCE, Moves.DRAGON_DANCE, Moves.PHANTOM_FORCE, Moves.PRISMATIC_LASER ], + [Species.DIALGA]: [ Moves.SPACIAL_REND, Moves.EXTREME_SPEED, Moves.GEAR_GRIND, Moves.FREEZING_GLARE ], + [Species.PALKIA]: [ Moves.ROAR_OF_TIME, Moves.LIQUIDATION, Moves.AQUA_CUTTER, Moves.DRAGON_ENERGY ], + [Species.HEATRAN]: [ Moves.FIRE_LASH, Moves.HEAVY_SLAM, Moves.FIERY_DANCE, Moves.BEHEMOTH_BASH ], + [Species.REGIGIGAS]: [ Moves.MIGHTY_CLEAVE, Moves.PRECIPICE_BLADES, Moves.EXTREME_SPEED, Moves.SKILL_SWAP ], + [Species.GIRATINA]: [ Moves.DRAGON_HAMMER, Moves.SPACIAL_REND, Moves.SPIRIT_SHACKLE, Moves.ASTRAL_BARRAGE ], + [Species.CRESSELIA]: [ Moves.MIST_BALL, Moves.LUMINA_CRASH, Moves.INFERNAL_PARADE, Moves.HYPERSPACE_HOLE ], + [Species.PHIONE]: [ Moves.SPARKLING_ARIA, Moves.MAKE_IT_RAIN, Moves.TAIL_GLOW, Moves.LIGHT_OF_RUIN ], + [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.RECOVER, Moves.MOONBLAST, Moves.QUIVER_DANCE ], + [Species.DARKRAI]: [ Moves.NIGHT_DAZE, Moves.KNOCK_OFF, Moves.BITTER_MALICE, Moves.SHADOW_FORCE ], + [Species.SHAYMIN]: [ Moves.FLOWER_SHIELD, Moves.FLOWER_TRICK, Moves.CHLOROBLAST, Moves.FLEUR_CANNON ], + [Species.ARCEUS]: [ Moves.SKETCH, Moves.ROAR_OF_TIME, Moves.SPACIAL_REND, Moves.GEOMANCY ], [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.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.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.PURRLOIN]: [ Moves.PSYCHIC_FANGS, Moves.SWORDS_DANCE, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], - [Species.PANSAGE]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.TRAILBLAZE, Moves.FRENZY_PLANT ], + [Species.PURRLOIN]: [ Moves.THIEF, Moves.SWORDS_DANCE, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], + [Species.PANSAGE]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.STRENGTH_SAP, Moves.FRENZY_PLANT ], [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.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.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.PAWNIARD]: [ Moves.SUCKER_PUNCH, Moves.CEASELESS_EDGE, Moves.AQUA_CUTTER, Moves.PSYBLADE ], + [Species.PAWNIARD]: [ Moves.ATTACK_ORDER, Moves.CEASELESS_EDGE, Moves.AQUA_CUTTER, Moves.PSYBLADE ], [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.VULLABY]: [ Moves.RUINATION, Moves.BODY_PRESS, Moves.ROOST, Moves.BADDY_BAD ], @@ -471,78 +471,78 @@ export const speciesEggMoves = { [Species.SPECTRIER]: [ Moves.EARTH_POWER, Moves.PSYCHIC, Moves.GLARE, Moves.ASTRAL_BARRAGE ], [Species.CALYREX]: [ Moves.POWER_GEM, Moves.ICE_BEAM, Moves.SHADOW_BALL, Moves.MALIGNANT_CHAIN ], [Species.ENAMORUS]: [ Moves.SPIRIT_BREAK, Moves.TAKE_HEART, Moves.STORED_POWER, Moves.OVERHEAT ], - [Species.SPRIGATITO]: [ Moves.FIRE_LASH, Moves.STRENGTH_SAP, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], - [Species.FUECOCO]: [ Moves.COSMIC_POWER, Moves.SLACK_OFF, Moves.INFERNAL_PARADE, Moves.MOONGEIST_BEAM ], - [Species.QUAXLY]: [ Moves.THUNDEROUS_KICK, Moves.ROOST, Moves.TROP_KICK, Moves.DRAGON_DANCE ], - [Species.LECHONK]: [ Moves.MILK_DRINK, Moves.BLAZING_TORQUE, Moves.NONE, Moves.HEAD_CHARGE ], - [Species.TAROUNTULA]: [ Moves.STRENGTH_SAP, Moves.LEECH_LIFE, Moves.PARTING_SHOT, Moves.STONE_AXE ], - [Species.NYMBLE]: [ Moves.CEASELESS_EDGE, Moves.KNOCK_OFF, Moves.LEECH_LIFE, Moves.NONE ], - [Species.PAWMI]: [ Moves.ICE_SPINNER, Moves.WISH, Moves.PARTING_SHOT, Moves.PLASMA_FISTS ], - [Species.TANDEMAUS]: [ Moves.BATON_PASS, Moves.HEALING_WISH, Moves.NUZZLE, Moves.WICKED_BLOW ], - [Species.FIDOUGH]: [ Moves.MILK_DRINK, Moves.SIZZLY_SLIDE, Moves.PARTING_SHOT, Moves.MAGICAL_TORQUE ], - [Species.SMOLIV]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.BOOMBURST ], - [Species.SQUAWKABILLY]: [ Moves.PARTING_SHOT, Moves.BULK_UP, Moves.TEMPER_FLARE, Moves.HEAD_CHARGE ], - [Species.NACLI]: [ Moves.BODY_PRESS, Moves.SPIKES, Moves.CURSE, Moves.DIAMOND_STORM ], - [Species.CHARCADET]: [ Moves.SACRED_SWORD, Moves.NONE, Moves.PHOTON_GEYSER, Moves.SPECTRAL_THIEF ], - [Species.TADBULB]: [ Moves.SLACK_OFF, Moves.MUDDY_WATER, Moves.EARTH_POWER, Moves.ELECTRO_SHOT ], - [Species.WATTREL]: [ Moves.NASTY_PLOT, Moves.TAILWIND, Moves.HEAT_WAVE, Moves.ELECTRO_DRIFT ], - [Species.MASCHIFF]: [ Moves.PARTING_SHOT, Moves.DARKEST_LARIAT, Moves.NUZZLE, Moves.COLLISION_COURSE ], - [Species.SHROODLE]: [ Moves.BLAZING_TORQUE, Moves.RAGING_BULL, Moves.TOXIC_SPIKES, Moves.TIDY_UP ], - [Species.BRAMBLIN]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.CEASELESS_EDGE, Moves.POLTERGEIST ], - [Species.TOEDSCOOL]: [ Moves.STRENGTH_SAP, Moves.SCALD, Moves.PARTING_SHOT, Moves.SAPPY_SEED ], - [Species.KLAWF]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE, Moves.SHELL_SMASH ], - [Species.CAPSAKID]: [ Moves.STRENGTH_SAP, Moves.NONE, Moves.ICE_SPINNER, Moves.TORCH_SONG ], - [Species.RELLOR]: [ Moves.GLITZY_GLOW, Moves.RECOVER, Moves.MYSTICAL_FIRE, Moves.LUMINA_CRASH ], - [Species.FLITTLE]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.ROOST, Moves.SEARING_SHOT ], - [Species.TINKATINK]: [ Moves.NUZZLE, Moves.SHIFT_GEAR, Moves.ICE_HAMMER, Moves.PYRO_BALL ], - [Species.WIGLETT]: [ Moves.SHELL_SMASH, Moves.ICICLE_CRASH, Moves.SEED_BOMB, Moves.SURGING_STRIKES ], - [Species.BOMBIRDIER]: [ Moves.STONE_AXE, Moves.SWORDS_DANCE, Moves.SUCKER_PUNCH, Moves.MIGHTY_CLEAVE ], - [Species.FINIZEN]: [ Moves.ICE_SPINNER, Moves.DRAIN_PUNCH, Moves.LEAF_BLADE, Moves.RECOVER ], - [Species.VAROOM]: [ Moves.COMBAT_TORQUE, Moves.GEAR_GRIND, Moves.BLAZING_TORQUE, Moves.NOXIOUS_TORQUE ], - [Species.CYCLIZAR]: [ Moves.BATON_PASS, Moves.BLAZING_TORQUE, Moves.RAGING_BULL, Moves.CLANGOROUS_SOUL ], - [Species.ORTHWORM]: [ Moves.STONE_AXE, Moves.CURSE, Moves.BODY_PRESS, Moves.SHORE_UP ], - [Species.GLIMMET]: [ Moves.CALM_MIND, Moves.SHORE_UP, Moves.PARTING_SHOT, Moves.FIERY_DANCE ], - [Species.GREAVARD]: [ Moves.BULK_UP, Moves.AGILITY, Moves.RECOVER, Moves.COLLISION_COURSE ], - [Species.FLAMIGO]: [ Moves.SKY_UPPERCUT, Moves.TRIPLE_AXEL, Moves.THUNDER_PUNCH, Moves.VICTORY_DANCE ], - [Species.CETODDLE]: [ Moves.ICICLE_CRASH, Moves.TIDY_UP, Moves.RECOVER, Moves.COLLISION_COURSE ], - [Species.VELUZA]: [ Moves.RECOVER, Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.PHOTON_GEYSER ], - [Species.DONDOZO]: [ Moves.RECOVER, Moves.ICE_SPINNER, Moves.CURSE, Moves.WOOD_HAMMER ], - [Species.TATSUGIRI]: [ Moves.ICE_BEAM, Moves.BATON_PASS, Moves.SCALD, Moves.NONE ], - [Species.GREAT_TUSK]: [ Moves.STONE_AXE, Moves.CEASELESS_EDGE, Moves.DRAGON_DANCE, Moves.COLLISION_COURSE ], - [Species.SCREAM_TAIL]: [ Moves.COSMIC_POWER, Moves.LUMINA_CRASH, Moves.MOONLIGHT, Moves.SHED_TAIL ], - [Species.BRUTE_BONNET]: [ Moves.DARKEST_LARIAT, Moves.STRENGTH_SAP, Moves.EARTHQUAKE, Moves.SAPPY_SEED ], - [Species.FLUTTER_MANE]: [ Moves.MOONLIGHT, Moves.FLAMETHROWER, Moves.EARTH_POWER, Moves.ASTRAL_BARRAGE ], - [Species.SLITHER_WING]: [ Moves.KNOCK_OFF, Moves.VICTORY_DANCE, Moves.SIZZLY_SLIDE, Moves.FLYING_PRESS ], - [Species.SANDY_SHOCKS]: [ Moves.SHORE_UP, Moves.ICE_BEAM, Moves.NASTY_PLOT, Moves.BUZZY_BUZZ ], - [Species.IRON_TREADS]: [ Moves.AURA_WHEEL, Moves.BULK_UP, Moves.SPIKES, Moves.DOUBLE_IRON_BASH ], - [Species.IRON_BUNDLE]: [ Moves.EARTH_POWER, Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.WATER_SPOUT ], - [Species.IRON_HANDS]: [ Moves.HAMMER_ARM, Moves.PLASMA_FISTS, Moves.CURSE, Moves.RECOVER ], - [Species.IRON_JUGULIS]: [ Moves.FIERY_WRATH, Moves.ROOST, Moves.NASTY_PLOT, Moves.OBLIVION_WING ], - [Species.IRON_MOTH]: [ Moves.EARTH_POWER, Moves.SEARING_SHOT, Moves.QUIVER_DANCE, Moves.MALIGNANT_CHAIN ], - [Species.IRON_THORNS]: [ Moves.MIGHTY_CLEAVE, Moves.SHORE_UP, Moves.SHIFT_GEAR, Moves.AURA_WHEEL ], - [Species.FRIGIBAX]: [ Moves.DRAGON_HAMMER, Moves.BULK_UP, Moves.SHORE_UP, Moves.GLACIAL_LANCE ], - [Species.GIMMIGHOUL]: [ Moves.COSMIC_POWER, Moves.STORED_POWER, Moves.MIRROR_COAT, Moves.ASTRAL_BARRAGE ], - [Species.WO_CHIEN]: [ Moves.SPORE, Moves.SPIKES, Moves.SAPPY_SEED, Moves.JUNGLE_HEALING ], - [Species.CHIEN_PAO]: [ Moves.NONE, Moves.PARTING_SHOT, Moves.BITTER_BLADE, Moves.GLACIAL_LANCE ], - [Species.TING_LU]: [ Moves.SHORE_UP, Moves.CURSE, Moves.LEECH_SEED, Moves.THOUSAND_ARROWS ], - [Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.HYDRO_STEAM, Moves.ERUPTION, Moves.TORCH_SONG ], - [Species.ROARING_MOON]: [ Moves.SIZZLY_SLIDE, Moves.DRAGON_HAMMER, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], - [Species.IRON_VALIANT]: [ Moves.PLASMA_FISTS, Moves.VICTORY_DANCE, Moves.QUIVER_DANCE, Moves.MAGICAL_TORQUE ], - [Species.KORAIDON]: [ Moves.MIGHTY_CLEAVE, Moves.RECOVER, Moves.GLAIVE_RUSH, Moves.CLANGOROUS_SOUL ], - [Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.RECOVER, Moves.RISING_VOLTAGE, Moves.DRAGON_ENERGY ], - [Species.WALKING_WAKE]: [ Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.DRAGON_ENERGY ], - [Species.IRON_LEAVES]: [ Moves.SPORE, Moves.BLAZING_TORQUE, Moves.SAPPY_SEED, Moves.PHOTON_GEYSER ], - [Species.POLTCHAGEIST]: [ Moves.COSMIC_POWER, Moves.INFERNAL_PARADE, Moves.LEECH_SEED, Moves.FOLLOW_ME ], - [Species.OKIDOGI]: [ Moves.MORNING_SUN, Moves.OBSTRUCT, Moves.DIRE_CLAW, Moves.COLLISION_COURSE ], - [Species.MUNKIDORI]: [ Moves.PSYSTRIKE, Moves.SEARING_SHOT, Moves.EARTH_POWER, Moves.MALIGNANT_CHAIN ], - [Species.FEZANDIPITI]: [ Moves.BATON_PASS, Moves.COSMIC_POWER, Moves.SIZZLY_SLIDE, Moves.MALIGNANT_CHAIN ], - [Species.OGERPON]: [ Moves.JUNGLE_HEALING, Moves.STONE_AXE, Moves.TRIPLE_AXEL, Moves.GIGATON_HAMMER ], - [Species.GOUGING_FIRE]: [ Moves.SUPERCELL_SLAM, Moves.BULK_UP, Moves.SACRED_FIRE, Moves.GLAIVE_RUSH ], - [Species.RAGING_BOLT]: [ Moves.NASTY_PLOT, Moves.FLAMETHROWER, Moves.PARABOLIC_CHARGE, Moves.ELECTRO_DRIFT ], - [Species.IRON_BOULDER]: [ Moves.PSYBLADE, Moves.TACHYON_CUTTER, Moves.STONE_AXE, Moves.V_CREATE ], - [Species.IRON_CROWN]: [ Moves.NONE, Moves.SECRET_SWORD, Moves.PHOTON_GEYSER, Moves.ELECTRO_DRIFT ], - [Species.TERAPAGOS]: [ Moves.EARTH_POWER, Moves.BOOMBURST, Moves.ICE_BEAM, Moves.RECOVER ], - [Species.PECHARUNT]: [ Moves.TOXIC_SPIKES, Moves.BODY_PRESS, Moves.HEX, Moves.BANEFUL_BUNKER ], + [Species.SPRIGATITO]: [ Moves.PETAL_BLIZZARD, Moves.COPYCAT, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], + [Species.FUECOCO]: [ Moves.EARTHQUAKE, Moves.SLACK_OFF, Moves.INFERNAL_PARADE, Moves.SEARING_SHOT ], + [Species.QUAXLY]: [ Moves.HIGH_JUMP_KICK, Moves.ROOST, Moves.REVELATION_DANCE, Moves.SURGING_STRIKES ], + [Species.LECHONK]: [ Moves.PLUCK, Moves.RECYCLE, Moves.POWER_TRIP, Moves.FILLET_AWAY ], + [Species.TAROUNTULA]: [ Moves.STEAMROLLER, Moves.LUNGE, Moves.SUCKER_PUNCH, Moves.FIRST_IMPRESSION ], + [Species.NYMBLE]: [ Moves.POWER_UP_PUNCH, Moves.KNOCK_OFF, Moves.LEECH_LIFE, Moves.WICKED_BLOW ], + [Species.PAWMI]: [ Moves.DRAIN_PUNCH, Moves.WISH, Moves.HELPING_HAND, Moves.VOLT_TACKLE ], + [Species.TANDEMAUS]: [ Moves.BITE, Moves.FEINT, Moves.BARRAGE, Moves.BOOMBURST ], + [Species.FIDOUGH]: [ Moves.COPYCAT, Moves.WISH, Moves.COVET, Moves.MAGICAL_TORQUE ], + [Species.SMOLIV]: [ Moves.STRENGTH_SAP, Moves.SYNTHESIS, Moves.WEATHER_BALL, Moves.CHLOROBLAST ], + [Species.SQUAWKABILLY]: [ Moves.PARTING_SHOT, Moves.FINAL_GAMBIT, Moves.DOUBLE_EDGE, Moves.BOOMBURST ], + [Species.NACLI]: [ Moves.BODY_PRESS, Moves.POWER_GEM, Moves.EXPLOSION, Moves.PRECIPICE_BLADES ], + [Species.CHARCADET]: [ Moves.DISABLE, Moves.FLASH_CANNON, Moves.THIEF, Moves.SPECTRAL_THIEF ], + [Species.TADBULB]: [ Moves.MUDDY_WATER, Moves.PARABOLIC_CHARGE, Moves.NUZZLE, Moves.SURF ], + [Species.WATTREL]: [ Moves.FEATHER_DANCE, Moves.WEATHER_BALL, Moves.ENDEAVOR, Moves.BOLT_BEAK ], + [Species.MASCHIFF]: [ Moves.BADDY_BAD, Moves.RETALIATE, Moves.ENDEAVOR, Moves.PLAY_ROUGH ], + [Species.SHROODLE]: [ Moves.COPYCAT, Moves.SUPER_FANG, Moves.TOXIC, Moves.SKETCH ], + [Species.BRAMBLIN]: [ Moves.SHADOW_SNEAK, Moves.STRENGTH_SAP, Moves.POLTERGEIST, Moves.SAPPY_SEED ], + [Species.TOEDSCOOL]: [ Moves.RAPID_SPIN, Moves.KNOCK_OFF, Moves.TOXIC, Moves.NOXIOUS_TORQUE ], + [Species.KLAWF]: [ Moves.ANCIENT_POWER, Moves.KNOCK_OFF, Moves.CRABHAMMER, Moves.DIRE_CLAW ], + [Species.CAPSAKID]: [ Moves.RAGE_POWDER, Moves.ROLLOUT, Moves.LEECH_SEED, Moves.FIERY_DANCE ], + [Species.RELLOR]: [ Moves.COSMIC_POWER, Moves.RECOVER, Moves.WEATHER_BALL, Moves.GLITZY_GLOW ], + [Species.FLITTLE]: [ Moves.GLITZY_GLOW, Moves.HYPNOSIS, Moves.ROOST, Moves.OBLIVION_WING ], + [Species.TINKATINK]: [ Moves.FALSE_SURRENDER, Moves.DRAIN_PUNCH, Moves.ICE_HAMMER, Moves.NO_RETREAT ], + [Species.WIGLETT]: [ Moves.FINAL_GAMBIT, Moves.THIEF, Moves.IRON_HEAD, Moves.SURGING_STRIKES ], + [Species.BOMBIRDIER]: [ Moves.SKY_ATTACK, Moves.POWER_TRIP, Moves.SUCKER_PUNCH, Moves.POPULATION_BOMB ], + [Species.FINIZEN]: [ Moves.BOUNCE, Moves.DRAIN_PUNCH, Moves.COUNTER, Moves.BOOMBURST ], + [Species.VAROOM]: [ Moves.TOXIC, Moves.GEAR_GRIND, Moves.BLAZING_TORQUE, Moves.NOXIOUS_TORQUE ], + [Species.CYCLIZAR]: [ Moves.AQUA_TAIL, Moves.IRON_TAIL, Moves.POWER_WHIP, Moves.DRAGON_DANCE ], + [Species.ORTHWORM]: [ Moves.METAL_BURST, Moves.COIL, Moves.BODY_PRESS, Moves.DRAGON_HAMMER ], + [Species.GLIMMET]: [ Moves.PURIFY, Moves.MOONBLAST, Moves.FLASH_CANNON, Moves.BANEFUL_BUNKER ], + [Species.GREAVARD]: [ Moves.SHADOW_SNEAK, Moves.DISABLE, Moves.YAWN, Moves.SHADOW_FORCE ], + [Species.FLAMIGO]: [ Moves.DOUBLE_TEAM, Moves.SKY_ATTACK, Moves.VICTORY_DANCE, Moves.HIGH_JUMP_KICK ], + [Species.CETODDLE]: [ Moves.ICICLE_CRASH, Moves.SUPERPOWER, Moves.ENTRAINMENT, Moves.BELLY_DRUM ], + [Species.VELUZA]: [ Moves.RECOVER, Moves.THRASH, Moves.KOWTOW_CLEAVE, Moves.PSYBLADE ], + [Species.DONDOZO]: [ Moves.OUTRAGE, Moves.YAWN, Moves.HEAVY_SLAM, Moves.FISHIOUS_REND ], + [Species.TATSUGIRI]: [ Moves.RAPID_SPIN, Moves.BATON_PASS, Moves.MIMIC, Moves.COUNTER ], + [Species.GREAT_TUSK]: [ Moves.HIGH_HORSEPOWER, Moves.DRILL_RUN, Moves.SUPERPOWER, Moves.BEHEMOTH_BASH ], + [Species.SCREAM_TAIL]: [ Moves.PSYCHIC, Moves.MOONBLAST, Moves.MOONLIGHT, Moves.LIGHT_OF_RUIN ], + [Species.BRUTE_BONNET]: [ Moves.CRUNCH, Moves.SAPPY_SEED, Moves.FRENZY_PLANT, Moves.STRENGTH_SAP ], + [Species.FLUTTER_MANE]: [ Moves.MOONLIGHT, Moves.SNARL, Moves.EARTH_POWER, Moves.MOONGEIST_BEAM ], + [Species.SLITHER_WING]: [ Moves.DRAIN_PUNCH, Moves.VICTORY_DANCE, Moves.SIZZLY_SLIDE, Moves.COLLISION_COURSE ], + [Species.SANDY_SHOCKS]: [ Moves.PARABOLIC_CHARGE, Moves.SCORCHING_SANDS, Moves.CALM_MIND, Moves.ELECTRO_SHOT ], + [Species.IRON_TREADS]: [ Moves.SUPERCELL_SLAM, Moves.BULK_UP, Moves.HEAD_SMASH, Moves.COLLISION_COURSE ], + [Species.IRON_BUNDLE]: [ Moves.PARABOLIC_CHARGE, Moves.SCALD, Moves.NASTY_PLOT, Moves.GLACIATE ], + [Species.IRON_HANDS]: [ Moves.MACH_PUNCH, Moves.HIGH_HORSEPOWER, Moves.MAT_BLOCK, Moves.PLASMA_FISTS ], + [Species.IRON_JUGULIS]: [ Moves.FIERY_WRATH, Moves.FLAMETHROWER, Moves.NASTY_PLOT, Moves.OBLIVION_WING ], + [Species.IRON_MOTH]: [ Moves.PARABOLIC_CHARGE, Moves.QUIVER_DANCE, Moves.FLASH_CANNON, Moves.TORCH_SONG ], + [Species.IRON_THORNS]: [ Moves.DRAIN_PUNCH, Moves.SUPERPOWER, Moves.SHIFT_GEAR, Moves.FUSION_BOLT ], + [Species.FRIGIBAX]: [ Moves.ICICLE_SPEAR, Moves.AQUA_TAIL, Moves.FREEZE_DRY, Moves.DRAGON_RUSH ], + [Species.GIMMIGHOUL]: [ Moves.PAY_DAY, Moves.HAPPY_HOUR, Moves.MIRROR_COAT, Moves.TECHNO_BLAST ], + [Species.WO_CHIEN]: [ Moves.POLLEN_PUFF, Moves.FORESTS_CURSE, Moves.FOLLOW_ME, Moves.SPORE ], + [Species.CHIEN_PAO]: [ Moves.STOMPING_TANTRUM, Moves.WATERFALL, Moves.CHILLY_RECEPTION, Moves.BEHEMOTH_BLADE ], + [Species.TING_LU]: [ Moves.HEAT_CRASH, Moves.IRON_HEAD, Moves.HORN_LEECH, Moves.STRENGTH_SAP ], + [Species.CHI_YU]: [ Moves.ENERGY_BALL, Moves.STORED_POWER, Moves.SCALD, Moves.BLUE_FLARE ], + [Species.ROARING_MOON]: [ Moves.RAGING_FURY, Moves.FLOATY_FALL, Moves.OBSTRUCT, Moves.COLLISION_COURSE ], + [Species.IRON_VALIANT]: [ Moves.SECRET_SWORD, Moves.PLAY_ROUGH, Moves.QUIVER_DANCE, Moves.ELECTRO_DRIFT ], + [Species.KORAIDON]: [ Moves.HEAD_SMASH, Moves.BULK_UP, Moves.IRON_HEAD, Moves.CLANGOROUS_SOUL ], + [Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.CALM_MIND, Moves.FLASH_CANNON, Moves.CLANGOROUS_SOUL ], + [Species.WALKING_WAKE]: [ Moves.THUNDERCLAP, Moves.FLASH_CANNON, Moves.ALLURING_VOICE, Moves.ELECTRO_DRIFT ], + [Species.IRON_LEAVES]: [ Moves.MIGHTY_CLEAVE, Moves.TACHYON_CUTTER, Moves.SPIRIT_BREAK, Moves.COLLISION_COURSE ], + [Species.POLTCHAGEIST]: [ Moves.TEATIME, Moves.AROMATHERAPY, Moves.STRENGTH_SAP, Moves.MILK_DRINK ], + [Species.OKIDOGI]: [ Moves.JAW_LOCK, Moves.OBSTRUCT, Moves.DIRE_CLAW, Moves.MALIGNANT_CHAIN ], + [Species.MUNKIDORI]: [ Moves.PSYSTRIKE, Moves.MYSTICAL_FIRE, Moves.WILL_O_WISP, Moves.MALIGNANT_CHAIN ], + [Species.FEZANDIPITI]: [ Moves.DUAL_WINGBEAT, Moves.DRAINING_KISS, Moves.TRIPLE_AXEL, Moves.MALIGNANT_CHAIN ], + [Species.OGERPON]: [ Moves.JUNGLE_HEALING, Moves.NUZZLE, Moves.TRIPLE_AXEL, Moves.GIGATON_HAMMER ], + [Species.GOUGING_FIRE]: [ Moves.PLAY_ROUGH, Moves.HORN_LEECH, Moves.HYDRO_STEAM, Moves.ELECTRO_DRIFT ], + [Species.RAGING_BOLT]: [ Moves.HYDRO_STEAM, Moves.FLASH_CANNON, Moves.PARABOLIC_CHARGE, Moves.ELECTRO_DRIFT ], + [Species.IRON_BOULDER]: [ Moves.PSYBLADE, Moves.TACHYON_CUTTER, Moves.LEAF_BLADE, Moves.COLLISION_COURSE ], + [Species.IRON_CROWN]: [ Moves.MIGHTY_CLEAVE, Moves.PSYBLADE, Moves.AQUA_CUTTER, Moves.COLLISION_COURSE ], + [Species.TERAPAGOS]: [ Moves.EARTH_POWER, Moves.BOOMBURST, Moves.ICE_BEAM, Moves.DIAMOND_STORM ], + [Species.PECHARUNT]: [ Moves.VENOSHOCK, Moves.VENOM_DRENCH, Moves.HEX, Moves.BANEFUL_BUNKER ], [Species.ALOLA_RATTATA]: [ Moves.STUFF_CHEEKS, Moves.BADDY_BAD, Moves.FLAME_WHEEL, Moves.RECYCLE ], [Species.ALOLA_SANDSHREW]: [ Moves.SPIKY_SHIELD, Moves.ICE_SHARD, Moves.CRUSH_CLAW, Moves.SPIN_OUT ], [Species.ALOLA_VULPIX]: [ Moves.MOONBLAST, Moves.HYPNOSIS, Moves.CHILLING_WATER, Moves.FREEZY_FROST ], @@ -568,9 +568,9 @@ export const speciesEggMoves = { [Species.HISUI_QWILFISH]: [ Moves.NUZZLE, Moves.SCALE_SHOT, Moves.SUPERSONIC, Moves.PARTING_SHOT ], [Species.HISUI_SNEASEL]: [ Moves.DRAIN_PUNCH, Moves.BULLET_PUNCH, Moves.FAKE_OUT, Moves.VICTORY_DANCE ], [Species.HISUI_ZORUA]: [ Moves.ALLURING_VOICE, Moves.GLARE, Moves.TORCH_SONG, Moves.TRANSFORM ], - [Species.PALDEA_TAUROS]: [ Moves.THUNDEROUS_KICK, Moves.BLAZING_TORQUE, Moves.AQUA_STEP, Moves.NO_RETREAT ], - [Species.PALDEA_WOOPER]: [ Moves.RECOVER, Moves.STONE_AXE, Moves.LEECH_SEED, Moves.BANEFUL_BUNKER ], - [Species.BLOODMOON_URSALUNA]: [ Moves.GLARE, Moves.OBSTRUCT, Moves.PARTING_SHOT, Moves.BOOMBURST ] + [Species.PALDEA_TAUROS]: [ Moves.HEAD_CHARGE, Moves.BLAZE_KICK, Moves.AQUA_STEP, Moves.NO_RETREAT ], + [Species.PALDEA_WOOPER]: [ Moves.RECOVER, Moves.DOUBLE_KICK, Moves.ANCIENT_POWER, Moves.VENOM_DRENCH ], + [Species.BLOODMOON_URSALUNA]: [ Moves.GLARE, Moves.SCORCHING_SANDS, Moves.CALM_MIND, Moves.BOOMBURST ] }; function parseEggMoves(content: string): void { From 930c14fa62b0362736a70cdb05c1a76889f93358 Mon Sep 17 00:00:00 2001 From: EmoUsedHM01 <131687820+EmoUsedHM01@users.noreply.github.com> Date: Fri, 12 Apr 2024 21:05:32 +0100 Subject: [PATCH 20/27] Laser Focus support, with the added BattlerTagTypes to support it (#103) * Added a new BattlerTagType and support for Laser Focus BattlerTagType.ALWAYS_CRIT * Updated battler-tags to support ALWAYS_CRIT * Added ALWAYS_CRIT = "ALWAYS_CRIT", for the updated battler-tag-type * Updated the crit formula to include the new critAlways * Updated crit logic to include critAlways, fixed indents --- src/data/battler-tags.ts | 8 ++++++++ src/data/enums/battler-tag-type.ts | 1 + src/data/move.ts | 19 ++++++++++++++++++- src/field/pokemon.ts | 5 +++-- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 1244d8697e6..d182a4c45a5 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -956,6 +956,12 @@ export class CritBoostTag extends BattlerTag { } } +export class AlwaysCritTag extends BattlerTag { + constructor(sourceMove: Moves) { + super(BattlerTagType.ALWAYS_CRIT, BattlerTagLapseType.TURN_END, 2, sourceMove); + } +} + export class IgnoreAccuracyTag extends BattlerTag { constructor(sourceMove: Moves) { super(BattlerTagType.IGNORE_ACCURACY, BattlerTagLapseType.TURN_END, 2, sourceMove); @@ -1077,6 +1083,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc return new TypeBoostTag(tagType, sourceMove, Type.FIRE); case BattlerTagType.CRIT_BOOST: return new CritBoostTag(tagType, sourceMove); + case BattlerTagType.ALWAYS_CRIT: + return new AlwaysCritTag(tagType, sourceMove); case BattlerTagType.NO_CRIT: return new BattlerTag(tagType, BattlerTagLapseType.AFTER_MOVE, turnCount, sourceMove); case BattlerTagType.IGNORE_ACCURACY: diff --git a/src/data/enums/battler-tag-type.ts b/src/data/enums/battler-tag-type.ts index 4aecd5195db..85f00753457 100644 --- a/src/data/enums/battler-tag-type.ts +++ b/src/data/enums/battler-tag-type.ts @@ -41,6 +41,7 @@ export enum BattlerTagType { HIDDEN = "HIDDEN", FIRE_BOOST = "FIRE_BOOST", CRIT_BOOST = "CRIT_BOOST", + ALWAYS_CRIT = "ALWAYS_CRIT", NO_CRIT = "NO_CRIT", IGNORE_ACCURACY = "IGNORE_ACCURACY", BYPASS_SLEEP = "BYPASS_SLEEP", diff --git a/src/data/move.ts b/src/data/move.ts index a0f1a93118a..e0535ed6746 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -2300,6 +2300,7 @@ export class AddBattlerTagAttr extends MoveEffectAttr { case BattlerTagType.PROTECTED: case BattlerTagType.FLYING: case BattlerTagType.CRIT_BOOST: + case BattlerTagType.ALWAYS_CRIT: return 5; } } @@ -2421,6 +2422,21 @@ export class IgnoreAccuracyAttr extends AddBattlerTagAttr { } } +export class AlwaysCritsAttr extends AddBattlerTagAttr { + constructor() { + super(BattlerTagType.ALWAYS_CRIT, true, false, 2); + } + + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + if (!super.apply(user, target, move, args)) + return false; + + user.scene.queueMessage(getPokemonMessage(user, ` took aim\nat ${target.name}!`)); + + return true; + } +} + export class FaintCountdownAttr extends AddBattlerTagAttr { constructor() { super(BattlerTagType.PERISH_SONG, false, true, 4); @@ -4678,7 +4694,8 @@ export function initMoves() { new StatusMove(Moves.TOXIC_THREAD, "Toxic Thread", Type.POISON, 100, 20, "The user shoots poisonous threads to poison the target and lower the target's Speed stat.", 100, 0, 7) .attr(StatusEffectAttr, StatusEffect.POISON) .attr(StatChangeAttr, BattleStat.SPD, -1), - new SelfStatusMove(Moves.LASER_FOCUS, "Laser Focus (N)", Type.NORMAL, -1, 30, "The user concentrates intensely. The attack on the next turn always results in a critical hit.", -1, 0, 7), + new SelfStatusMove(Moves.LASER_FOCUS, "Laser Focus", Type.NORMAL, -1, 30, "The user concentrates intensely. The attack on the next turn always results in a critical hit.", -1, 0, 7) + .attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_CRIT, true, false), new StatusMove(Moves.GEAR_UP, "Gear Up", Type.STEEL, -1, 20, "The user engages its gears to raise the Attack and Sp. Atk stats of ally Pokémon with the Plus or Minus Ability.", -1, 0, 7) .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], 1, false, (user, target, move) => [ Abilities.PLUS, Abilities.MINUS ].includes(target.getAbility().id) || (target.canApplyPassive() && [ Abilities.PLUS, Abilities.MINUS ].includes(target.getPassiveAbility().id))) .target(MoveTarget.USER_AND_ALLIES) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 9dc560d8000..5631a39fed3 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1174,8 +1174,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { power.value *= 1.5; let isCritical: boolean; const critOnly = new Utils.BooleanHolder(false); + const critAlways = source.getTag(BattlerTagType.ALWAYS_CRIT); applyMoveAttrs(CritOnlyAttr, source, this, move, critOnly); - if (critOnly.value) + if (critOnly.value || critAlways) isCritical = true; else { const critLevel = new Utils.IntegerHolder(0); @@ -2879,4 +2880,4 @@ export class PokemonMove { getName(): string { return this.getMove().name; } -} \ No newline at end of file +} From 389278a1b0ba4216a287d71ae62fc689a7794506 Mon Sep 17 00:00:00 2001 From: William Burleson <72857839+Admiral-Billy@users.noreply.github.com> Date: Fri, 12 Apr 2024 16:08:04 -0400 Subject: [PATCH 21/27] Implement download (#99) * Implement Download * Fix formatting --- src/data/ability.ts | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index c9217e17ac5..ddf92724070 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -941,6 +941,34 @@ export class PostSummonStatChangeAbAttr extends PostSummonAbAttr { } } +export class DownloadAbAttr extends PostSummonAbAttr { + private enemyDef: integer; + private enemySpDef: integer; + private stats: BattleStat[]; + + applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean { + this.enemyDef = 0; + this.enemySpDef = 0; + + for (let opponent of pokemon.getOpponents()) { + this.enemyDef += opponent.stats[BattleStat.DEF]; + this.enemySpDef += opponent.stats[BattleStat.SPDEF]; + } + + if (this.enemyDef < this.enemySpDef) + this.stats = [BattleStat.ATK]; + else + this.stats = [BattleStat.SPATK]; + + if (this.enemyDef > 0 && this.enemySpDef > 0) { // only activate if there's actually an enemy to download from + pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), false, this.stats, 1)); + return true; + } + + return false; + } +} + export class PostSummonWeatherChangeAbAttr extends PostSummonAbAttr { private weatherType: WeatherType; @@ -2159,8 +2187,9 @@ export function initAbilities() { .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 1.25) .attr(TypeImmunityHealAbAttr, Type.WATER) .ignorable(), - new Ability(Abilities.DOWNLOAD, "Download (N)", "Compares an opposing Pokémon's Defense and Sp. Def stats before raising its own Attack or Sp. Atk stat—whichever will be more effective.", 4), - new Ability(Abilities.IRON_FIST, "Iron Fist", "Powers up punching moves.", 4) + new Ability(Abilities.DOWNLOAD, "Download", "Compares an opposing Pokémon's Defense and Sp. Def stats before raising its own Attack or Sp. Atk stat—whichever will be more effective.", 4) + .attr(DownloadAbAttr), + new Ability(Abilities.IRON_FIST, "Iron Fist", "Powers up punching moves.", 4) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.PUNCHING_MOVE), 1.2), new Ability(Abilities.POISON_HEAL, "Poison Heal (N)", "Restores HP if the Pokémon is poisoned instead of losing HP.", 4), new Ability(Abilities.ADAPTABILITY, "Adaptability", "Powers up moves of the same type as the Pokémon.", 4) From eb791747fe4836fb8c9be217ba1bc6c21e18acda Mon Sep 17 00:00:00 2001 From: Dovie Shalev Date: Fri, 12 Apr 2024 16:16:08 -0400 Subject: [PATCH 22/27] Last respects Fully Implemented (#105) * Last Respects fully implemented * Fixed Last Respects * Last Respects Fully Implemented * Last Respects Fully Implemented --------- Co-authored-by: dshalev --- src/data/move.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/data/move.ts b/src/data/move.ts index e0535ed6746..cd7e2e2a6bc 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -5185,7 +5185,11 @@ export function initMoves() { new AttackMove(Moves.AXE_KICK, "Axe Kick", Type.FIGHTING, MoveCategory.PHYSICAL, 120, 90, 10, "The user attacks by kicking up into the air and slamming its heel down upon the target. This may also confuse the target. If it misses, the user takes damage instead.", 30, 0, 9) .attr(MissEffectAttr, halveHpMissEffectFunc) .attr(ConfuseAttr), - new AttackMove(Moves.LAST_RESPECTS, "Last Respects (P)", Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, "The user attacks to avenge its allies. The more defeated allies there are in the user's party, the greater the move's power.", -1, 0, 9) + new AttackMove(Moves.LAST_RESPECTS, "Last Respects", Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, "The user attacks to avenge its allies. The more defeated allies there are in the user's party, the greater the move's power.", -1, 0, 9) + .attr(MovePowerMultiplierAttr, (user, target, move) => { + return user.scene.getParty().reduce((acc, pokemonInParty) => acc + (pokemonInParty.status?.effect == StatusEffect.FAINT ? 1 : 0), + 1,) + }) .makesContact(false), new AttackMove(Moves.LUMINA_CRASH, "Lumina Crash", Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, "The user attacks by unleashing a peculiar light that even affects the mind. This also harshly lowers the target's Sp. Def stat.", 100, 0, 9) .attr(StatChangeAttr, BattleStat.SPDEF, -2), From cabba43598b9e7fead7b79bb4e4f21834621d029 Mon Sep 17 00:00:00 2001 From: EmoUsedHM01 <131687820+EmoUsedHM01@users.noreply.github.com> Date: Fri, 12 Apr 2024 22:21:56 +0100 Subject: [PATCH 23/27] Added support for Super Luck with BonusCritAbAttr (#106) * Fixed Super Luck, and added a new BonusCritAbAttr * Added crit clause for BonusCritAbAttr ( Super Luck ) * Changed it to +1 like it should be --- src/data/ability.ts | 12 ++++++++++-- src/field/pokemon.ts | 7 ++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index ddf92724070..66d286a8f36 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -1179,6 +1179,13 @@ export class BlockCritAbAttr extends AbAttr { } } +export class BonusCritAbAttr extends AbAttr { + apply(pokemon: Pokemon, cancelled: Utils.BooleanHolder, args: any[]): boolean { + (args[0] as Utils.BooleanHolder).value = true; + return true; + } +} + export class BlockNonDirectDamageAbAttr extends AbAttr { apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { cancelled.value = true; @@ -2189,7 +2196,7 @@ export function initAbilities() { .ignorable(), new Ability(Abilities.DOWNLOAD, "Download", "Compares an opposing Pokémon's Defense and Sp. Def stats before raising its own Attack or Sp. Atk stat—whichever will be more effective.", 4) .attr(DownloadAbAttr), - new Ability(Abilities.IRON_FIST, "Iron Fist", "Powers up punching moves.", 4) + new Ability(Abilities.IRON_FIST, "Iron Fist", "Powers up punching moves.", 4) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.PUNCHING_MOVE), 1.2), new Ability(Abilities.POISON_HEAL, "Poison Heal (N)", "Restores HP if the Pokémon is poisoned instead of losing HP.", 4), new Ability(Abilities.ADAPTABILITY, "Adaptability", "Powers up moves of the same type as the Pokémon.", 4) @@ -2220,7 +2227,8 @@ export function initAbilities() { new Ability(Abilities.MOLD_BREAKER, "Mold Breaker", "Moves can be used on the target regardless of its Abilities.", 4) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' breaks the mold!')) .attr(MoveAbilityBypassAbAttr), - new Ability(Abilities.SUPER_LUCK, "Super Luck (N)", "The Pokémon is so lucky that the critical-hit ratios of its moves are boosted.", 4), + new Ability(Abilities.SUPER_LUCK, "Super Luck (P)", "The Pokémon is so lucky that the critical-hit ratios of its moves are boosted.", 4) + .attr(BonusCritAbAttr), new Ability(Abilities.AFTERMATH, "Aftermath", "Damages the attacker if it contacts the Pokémon with a finishing hit.", 4) .attr(PostFaintContactDamageAbAttr,4) .bypassFaint(), diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 5631a39fed3..e0b351b9082 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -25,7 +25,7 @@ import { TempBattleStat } from '../data/temp-battle-stat'; import { ArenaTagSide, WeakenMoveScreenTag, WeakenMoveTypeTag } from '../data/arena-tag'; import { ArenaTagType } from "../data/enums/arena-tag-type"; import { Biome } from "../data/enums/biome"; -import { Ability, BattleStatMultiplierAbAttr, BlockCritAbAttr, BypassBurnDamageReductionAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs } from '../data/ability'; +import { Ability, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs } from '../data/ability'; import { Abilities } from "#app/data/enums/abilities"; import PokemonData from '../system/pokemon-data'; import { BattlerIndex } from '../battle'; @@ -1182,6 +1182,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const critLevel = new Utils.IntegerHolder(0); applyMoveAttrs(HighCritAttr, source, this, move, critLevel); this.scene.applyModifiers(TempBattleStatBoosterModifier, source.isPlayer(), TempBattleStat.CRIT, critLevel); + const bonusCrit = new Utils.BooleanHolder(false); + if (applyAbAttrs(BonusCritAbAttr, this, null, bonusCrit)) { + if (bonusCrit.value) + critLevel.value += 1; + } if (source.getTag(BattlerTagType.CRIT_BOOST)) critLevel.value += 2; const critChance = Math.ceil(16 / Math.pow(2, critLevel.value)); From 086c64b8f8228ec844ef607455c6b60741ca9d12 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 12 Apr 2024 18:44:20 -0400 Subject: [PATCH 24/27] Fix invalid constructor arguments to always crit tag --- src/data/battler-tags.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index d182a4c45a5..20946c784cb 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -1084,7 +1084,7 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc case BattlerTagType.CRIT_BOOST: return new CritBoostTag(tagType, sourceMove); case BattlerTagType.ALWAYS_CRIT: - return new AlwaysCritTag(tagType, sourceMove); + return new AlwaysCritTag(sourceMove); case BattlerTagType.NO_CRIT: return new BattlerTag(tagType, BattlerTagLapseType.AFTER_MOVE, turnCount, sourceMove); case BattlerTagType.IGNORE_ACCURACY: From f6770b83b589a6769a84a41ae4dadb57034f311e Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Fri, 12 Apr 2024 19:31:08 -0400 Subject: [PATCH 25/27] Add missing passive parameter to BonusCritAbAttr --- src/data/ability.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index 66d286a8f36..7478026380c 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -1180,7 +1180,7 @@ export class BlockCritAbAttr extends AbAttr { } export class BonusCritAbAttr extends AbAttr { - apply(pokemon: Pokemon, cancelled: Utils.BooleanHolder, args: any[]): boolean { + apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { (args[0] as Utils.BooleanHolder).value = true; return true; } From 40cdd6ace298c89b48f47b0c453df4f2095d6367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Santos?= Date: Sat, 13 Apr 2024 00:11:44 +0200 Subject: [PATCH 26/27] Fix PWA setup --- index.html | 6 ++++-- logo.png => public/logo128.png | Bin logo512.png => public/logo512.png | Bin manifest.json => public/manifest.webmanifest | 13 +++---------- 4 files changed, 7 insertions(+), 12 deletions(-) rename logo.png => public/logo128.png (100%) rename logo512.png => public/logo512.png (100%) rename manifest.json => public/manifest.webmanifest (68%) diff --git a/index.html b/index.html index 4d3fe513570..40b52ffe739 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,9 @@ - + + + - +