Merge branch 'pagefaultgames:main' into main

This commit is contained in:
Justin Gourlay 2024-04-30 11:30:52 -04:00 committed by GitHub
commit 1fdbe39758
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with 3279 additions and 3158 deletions

1
.gitignore vendored
View File

@ -33,5 +33,6 @@ public/images/pokemon/icons/input/output/*
public/images/character/*/ public/images/character/*/
src/data/battle-anim-raw-data*.ts src/data/battle-anim-raw-data*.ts
src/data/battle-anim-data.ts src/data/battle-anim-data.ts
src/overrides.ts
coverage coverage

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -60,25 +60,10 @@ import { SceneBase } from './scene-base';
import CandyBar from './ui/candy-bar'; import CandyBar from './ui/candy-bar';
import { Variant, variantData } from './data/variant'; import { Variant, variantData } from './data/variant';
import { Localizable } from './plugins/i18n'; import { Localizable } from './plugins/i18n';
import { STARTING_WAVE_OVERRIDE, OPP_SPECIES_OVERRIDE, SEED_OVERRIDE, STARTING_BIOME_OVERRIDE } from './overrides';
export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1"; export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1";
export const SEED_OVERRIDE = '';
export const STARTER_SPECIES_OVERRIDE = 0;
export const STARTER_FORM_OVERRIDE = 0;
export const STARTING_LEVEL_OVERRIDE = 0;
export const STARTING_WAVE_OVERRIDE = 0;
export const STARTING_BIOME_OVERRIDE = Biome.TOWN;
export const STARTING_MONEY_OVERRIDE = 0;
export const ABILITY_OVERRIDE = Abilities.NONE;
export const MOVE_OVERRIDE = Moves.NONE;
export const OPP_SPECIES_OVERRIDE = 0;
export const OPP_ABILITY_OVERRIDE = Abilities.NONE;
export const OPP_MOVE_OVERRIDE = Moves.NONE;
export const OPP_SHINY_OVERRIDE = false;
export const OPP_VARIANT_OVERRIDE = 0;
const DEBUG_RNG = false; const DEBUG_RNG = false;
export const startingWave = STARTING_WAVE_OVERRIDE || 1; export const startingWave = STARTING_WAVE_OVERRIDE || 1;
@ -1056,6 +1041,8 @@ export default class BattleScene extends SceneBase {
case Species.BASCULIN: case Species.BASCULIN:
case Species.DEERLING: case Species.DEERLING:
case Species.SAWSBUCK: case Species.SAWSBUCK:
case Species.FROAKIE:
case Species.FROGADIER:
case Species.VIVILLON: case Species.VIVILLON:
case Species.FLABEBE: case Species.FLABEBE:
case Species.FLOETTE: case Species.FLOETTE:
@ -1066,6 +1053,10 @@ export default class BattleScene extends SceneBase {
case Species.TATSUGIRI: case Species.TATSUGIRI:
case Species.PALDEA_TAUROS: case Species.PALDEA_TAUROS:
return Utils.randSeedInt(species.forms.length); return Utils.randSeedInt(species.forms.length);
case Species.GRENINJA:
return Utils.randSeedInt(2);
case Species.ZYGARDE:
return Utils.randSeedInt(3);
case Species.MINIOR: case Species.MINIOR:
return Utils.randSeedInt(6); return Utils.randSeedInt(6);
case Species.ALCREMIE: case Species.ALCREMIE:

View File

@ -1148,6 +1148,26 @@ class PostVictoryStatChangeAbAttr extends PostVictoryAbAttr {
} }
} }
export class PostVictoryFormChangeAbAttr extends PostVictoryAbAttr {
private formFunc: (p: Pokemon) => integer;
constructor(formFunc: ((p: Pokemon) => integer)) {
super(true);
this.formFunc = formFunc;
}
applyPostVictory(pokemon: Pokemon, passive: boolean, args: any[]): boolean | Promise<boolean> {
const formIndex = this.formFunc(pokemon);
if (formIndex !== pokemon.formIndex) {
pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false);
return true;
}
return false;
}
}
export class PostKnockOutAbAttr extends AbAttr { export class PostKnockOutAbAttr extends AbAttr {
applyPostKnockOut(pokemon: Pokemon, passive: boolean, knockedOut: Pokemon, args: any[]): boolean | Promise<boolean> { applyPostKnockOut(pokemon: Pokemon, passive: boolean, knockedOut: Pokemon, args: any[]): boolean | Promise<boolean> {
return false; return false;
@ -3067,17 +3087,21 @@ export function initAbilities() {
.ignorable() .ignorable()
.partial(), .partial(),
new Ability(Abilities.BATTLE_BOND, 7) new Ability(Abilities.BATTLE_BOND, 7)
.attr(PostVictoryFormChangeAbAttr, p => p.getFormKey() ? 2 : 1)
.attr(UncopiableAbilityAbAttr) .attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr) .attr(UnswappableAbilityAbAttr)
.attr(UnsuppressableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr)
.attr(NoFusionAbilityAbAttr) .attr(NoFusionAbilityAbAttr)
.unimplemented(), .partial(),
new Ability(Abilities.POWER_CONSTRUCT, 7) new Ability(Abilities.POWER_CONSTRUCT, 7) // TODO: 10% Power Construct Zygarde isn't accounted for yet. If changed, update Zygarde's getSpeciesFormIndex entry accordingly
.attr(PostBattleInitFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
.attr(PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
.attr(PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
.attr(UncopiableAbilityAbAttr) .attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr) .attr(UnswappableAbilityAbAttr)
.attr(UnsuppressableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr)
.attr(NoFusionAbilityAbAttr) .attr(NoFusionAbilityAbAttr)
.unimplemented(), .partial(),
new Ability(Abilities.CORROSION, 7) new Ability(Abilities.CORROSION, 7)
.unimplemented(), .unimplemented(),
new Ability(Abilities.COMATOSE, 7) new Ability(Abilities.COMATOSE, 7)

View File

@ -62,7 +62,7 @@ export const speciesEggMoves = {
[Species.MAGIKARP]: [ Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.LIQUIDATION, Moves.DRAGON_ASCENT ], [Species.MAGIKARP]: [ Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.LIQUIDATION, Moves.DRAGON_ASCENT ],
[Species.LAPRAS]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.CHILLY_RECEPTION, Moves.BOOMBURST ], [Species.LAPRAS]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.CHILLY_RECEPTION, Moves.BOOMBURST ],
[Species.DITTO]: [ Moves.MIMIC, Moves.COPYCAT, Moves.ME_FIRST, Moves.METRONOME ], [Species.DITTO]: [ Moves.MIMIC, Moves.COPYCAT, Moves.ME_FIRST, Moves.METRONOME ],
[Species.EEVEE]: [ Moves.WISH, Moves.REVELATION_DANCE, Moves.SIZZLY_SLIDE, Moves.NO_RETREAT ], [Species.EEVEE]: [ Moves.WISH, Moves.REVELATION_DANCE, Moves.TRI_ATTACK, Moves.NO_RETREAT ],
[Species.PORYGON]: [ Moves.BUZZY_BUZZ, Moves.AURA_SPHERE, Moves.TOPSY_TURVY, Moves.TECHNO_BLAST ], [Species.PORYGON]: [ Moves.BUZZY_BUZZ, Moves.AURA_SPHERE, Moves.TOPSY_TURVY, Moves.TECHNO_BLAST ],
[Species.OMANYTE]: [ Moves.SCALD, Moves.EARTH_POWER, Moves.POWER_GEM, Moves.STRENGTH_SAP ], [Species.OMANYTE]: [ Moves.SCALD, Moves.EARTH_POWER, Moves.POWER_GEM, Moves.STRENGTH_SAP ],
[Species.KABUTO]: [ Moves.CEASELESS_EDGE, Moves.DRILL_RUN, Moves.AQUA_CUTTER, Moves.MIGHTY_CLEAVE ], [Species.KABUTO]: [ Moves.CEASELESS_EDGE, Moves.DRILL_RUN, Moves.AQUA_CUTTER, Moves.MIGHTY_CLEAVE ],
@ -81,7 +81,7 @@ export const speciesEggMoves = {
[Species.LEDYBA]: [ Moves.POLLEN_PUFF, Moves.THIEF, Moves.PARTING_SHOT, Moves.SPORE ], [Species.LEDYBA]: [ Moves.POLLEN_PUFF, Moves.THIEF, Moves.PARTING_SHOT, Moves.SPORE ],
[Species.SPINARAK]: [ Moves.PARTING_SHOT, Moves.MEGAHORN, Moves.SILK_TRAP, Moves.STRENGTH_SAP ], [Species.SPINARAK]: [ Moves.PARTING_SHOT, Moves.MEGAHORN, Moves.SILK_TRAP, Moves.STRENGTH_SAP ],
[Species.CHINCHOU]: [ Moves.THUNDERCLAP, Moves.BOUNCY_BUBBLE, Moves.VOLT_SWITCH, Moves.TAIL_GLOW ], [Species.CHINCHOU]: [ Moves.THUNDERCLAP, Moves.BOUNCY_BUBBLE, Moves.VOLT_SWITCH, Moves.TAIL_GLOW ],
[Species.PICHU]: [ Moves.PIKA_PAPOW, Moves.SPLISHY_SPLASH, Moves.FLOATY_FALL, Moves.ZIPPY_ZAP ], [Species.PICHU]: [ Moves.THUNDERCLAP, Moves.SPLISHY_SPLASH, Moves.FLOATY_FALL, Moves.THUNDER_CAGE ],
[Species.CLEFFA]: [ Moves.TAKE_HEART, Moves.POWER_GEM, Moves.WISH, Moves.LIGHT_OF_RUIN ], [Species.CLEFFA]: [ Moves.TAKE_HEART, Moves.POWER_GEM, Moves.WISH, Moves.LIGHT_OF_RUIN ],
[Species.IGGLYBUFF]: [ Moves.MOONBLAST, Moves.APPLE_ACID, Moves.WISH, Moves.BOOMBURST ], [Species.IGGLYBUFF]: [ Moves.MOONBLAST, Moves.APPLE_ACID, Moves.WISH, Moves.BOOMBURST ],
[Species.TOGEPI]: [ Moves.SCORCHING_SANDS, Moves.ROOST, Moves.MOONBLAST, Moves.FIERY_DANCE ], [Species.TOGEPI]: [ Moves.SCORCHING_SANDS, Moves.ROOST, Moves.MOONBLAST, Moves.FIERY_DANCE ],

View File

@ -542,11 +542,21 @@ export const pokemonFormChanges: PokemonFormChanges = {
new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangePostMoveTrigger(Moves.RELIC_SONG), true), new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangePostMoveTrigger(Moves.RELIC_SONG), true),
new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangeActiveTrigger(false), true) new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangeActiveTrigger(false), true)
], ],
[Species.GRENINJA]: [
new SpeciesFormChange(Species.GRENINJA, 'battle-bond', 'ash', new SpeciesFormChangeManualTrigger(), true),
new SpeciesFormChange(Species.GRENINJA, 'ash', 'battle-bond', new SpeciesFormChangeManualTrigger(), true)
],
[Species.AEGISLASH]: [ [Species.AEGISLASH]: [
new SpeciesFormChange(Species.AEGISLASH, 'blade', 'shield', new SpeciesFormChangePreMoveTrigger(Moves.KINGS_SHIELD), true, new SpeciesFormChangeCondition(p => p.hasAbility(Abilities.STANCE_CHANGE))), new SpeciesFormChange(Species.AEGISLASH, 'blade', 'shield', new SpeciesFormChangePreMoveTrigger(Moves.KINGS_SHIELD), true, new SpeciesFormChangeCondition(p => p.hasAbility(Abilities.STANCE_CHANGE))),
new SpeciesFormChange(Species.AEGISLASH, 'shield', 'blade', new SpeciesFormChangePreMoveTrigger(m => allMoves[m].category !== MoveCategory.STATUS), true, new SpeciesFormChangeCondition(p => p.hasAbility(Abilities.STANCE_CHANGE))), new SpeciesFormChange(Species.AEGISLASH, 'shield', 'blade', new SpeciesFormChangePreMoveTrigger(m => allMoves[m].category !== MoveCategory.STATUS), true, new SpeciesFormChangeCondition(p => p.hasAbility(Abilities.STANCE_CHANGE))),
new SpeciesFormChange(Species.AEGISLASH, 'blade', 'shield', new SpeciesFormChangeActiveTrigger(false), true) new SpeciesFormChange(Species.AEGISLASH, 'blade', 'shield', new SpeciesFormChangeActiveTrigger(false), true)
], ],
[Species.ZYGARDE]: [
new SpeciesFormChange(Species.ZYGARDE, '50-pc', 'complete', new SpeciesFormChangeManualTrigger(), true),
new SpeciesFormChange(Species.ZYGARDE, 'complete', '50-pc', new SpeciesFormChangeManualTrigger(), true),
new SpeciesFormChange(Species.ZYGARDE, '10-pc', 'complete', new SpeciesFormChangeManualTrigger(), true),
new SpeciesFormChange(Species.ZYGARDE, 'complete', '10-pc', new SpeciesFormChangeManualTrigger(), true)
],
[Species.DIANCIE]: [ [Species.DIANCIE]: [
new SpeciesFormChange(Species.DIANCIE, '', SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.DIANCITE)) new SpeciesFormChange(Species.DIANCIE, '', SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.DIANCITE))
], ],

View File

@ -396,9 +396,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 36, Moves.THUNDERBOLT ], [ 36, Moves.THUNDERBOLT ],
[ 40, Moves.LIGHT_SCREEN ], [ 40, Moves.LIGHT_SCREEN ],
[ 44, Moves.THUNDER ], [ 44, Moves.THUNDER ],
[ 48, Moves.PIKA_PAPOW ],
], ],
[Species.RAICHU]: [ [Species.RAICHU]: [
[ 0, Moves.THUNDER_PUNCH ], [ 0, Moves.ZIPPY_ZAP ],
[ 1, Moves.TAIL_WHIP ], [ 1, Moves.TAIL_WHIP ],
[ 1, Moves.GROWL ], [ 1, Moves.GROWL ],
[ 1, Moves.THUNDER_SHOCK ], [ 1, Moves.THUNDER_SHOCK ],
@ -418,7 +419,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.ELECTRO_BALL ], [ 1, Moves.ELECTRO_BALL ],
[ 1, Moves.PLAY_NICE ], [ 1, Moves.PLAY_NICE ],
[ 1, Moves.NUZZLE ], [ 1, Moves.NUZZLE ],
[ 1, Moves.THUNDER_PUNCH ],
[ 5, Moves.THUNDERBOLT ], [ 5, Moves.THUNDERBOLT ],
[ 50, Moves.PIKA_PAPOW ],
], ],
[Species.SANDSHREW]: [ [Species.SANDSHREW]: [
[ 1, Moves.SCRATCH ], [ 1, Moves.SCRATCH ],
@ -2231,9 +2234,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 45, Moves.CHARM ], [ 45, Moves.CHARM ],
[ 50, Moves.DOUBLE_EDGE ], [ 50, Moves.DOUBLE_EDGE ],
[ 55, Moves.LAST_RESORT ], [ 55, Moves.LAST_RESORT ],
[ 60, Moves.VEEVEE_VOLLEY ],
], ],
[Species.VAPOREON]: [ [Species.VAPOREON]: [
[ 0, Moves.WATER_GUN ], [ 0, Moves.BOUNCY_BUBBLE ],
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ], [ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ], [ 1, Moves.DOUBLE_EDGE ],
@ -2247,19 +2251,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ], [ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ], [ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ], [ 5, Moves.SAND_ATTACK ],
[ 10, Moves.QUICK_ATTACK ], [ 10, Moves.WATER_GUN ],
[ 15, Moves.BABY_DOLL_EYES ], [ 15, Moves.QUICK_ATTACK ],
[ 20, Moves.HAZE ], [ 20, Moves.BABY_DOLL_EYES ],
[ 25, Moves.WATER_PULSE ], [ 25, Moves.HAZE ],
[ 30, Moves.AURORA_BEAM ], [ 30, Moves.WATER_PULSE ],
[ 35, Moves.AQUA_RING ], [ 35, Moves.AURORA_BEAM ],
[ 40, Moves.MUDDY_WATER ], [ 40, Moves.AQUA_RING ],
[ 45, Moves.ACID_ARMOR ], [ 45, Moves.MUDDY_WATER ],
[ 50, Moves.HYDRO_PUMP ], [ 50, Moves.ACID_ARMOR ],
[ 55, Moves.LAST_RESORT ], [ 55, Moves.HYDRO_PUMP ],
[ 60, Moves.LAST_RESORT ],
], ],
[Species.JOLTEON]: [ [Species.JOLTEON]: [
[ 0, Moves.THUNDER_SHOCK ], [ 0, Moves.BUZZY_BUZZ ],
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ], [ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ], [ 1, Moves.DOUBLE_EDGE ],
@ -2273,19 +2278,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ], [ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ], [ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ], [ 5, Moves.SAND_ATTACK ],
[ 10, Moves.QUICK_ATTACK ], [ 10, Moves.THUNDER_SHOCK ],
[ 15, Moves.BABY_DOLL_EYES ], [ 15, Moves.QUICK_ATTACK ],
[ 20, Moves.THUNDER_WAVE ], [ 20, Moves.BABY_DOLL_EYES ],
[ 25, Moves.DOUBLE_KICK ], [ 25, Moves.THUNDER_WAVE ],
[ 30, Moves.THUNDER_FANG ], [ 30, Moves.DOUBLE_KICK ],
[ 35, Moves.PIN_MISSILE ], [ 35, Moves.THUNDER_FANG ],
[ 40, Moves.DISCHARGE ], [ 40, Moves.PIN_MISSILE ],
[ 45, Moves.AGILITY ], [ 45, Moves.DISCHARGE ],
[ 50, Moves.THUNDER ], [ 50, Moves.AGILITY ],
[ 55, Moves.LAST_RESORT ], [ 55, Moves.THUNDER ],
[ 60, Moves.LAST_RESORT ],
], ],
[Species.FLAREON]: [ [Species.FLAREON]: [
[ 0, Moves.EMBER ], [ 0, Moves.SIZZLY_SLIDE ],
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ], [ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ], [ 1, Moves.DOUBLE_EDGE ],
@ -2298,16 +2304,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ], [ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ], [ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ], [ 5, Moves.SAND_ATTACK ],
[ 10, Moves.QUICK_ATTACK ], [ 10, Moves.EMBER ],
[ 15, Moves.BABY_DOLL_EYES ], [ 15, Moves.QUICK_ATTACK ],
[ 20, Moves.SMOG ], [ 20, Moves.BABY_DOLL_EYES ],
[ 25, Moves.BITE ], [ 25, Moves.SMOG ],
[ 30, Moves.FIRE_FANG ], [ 30, Moves.BITE ],
[ 35, Moves.FIRE_SPIN ], [ 35, Moves.FIRE_FANG ],
[ 40, Moves.LAVA_PLUME ], [ 40, Moves.FIRE_SPIN ],
[ 45, Moves.SCARY_FACE ], [ 45, Moves.LAVA_PLUME ],
[ 50, Moves.FLARE_BLITZ ], [ 50, Moves.SCARY_FACE ],
[ 55, Moves.LAST_RESORT ], [ 55, Moves.FLARE_BLITZ ],
[ 60, Moves.LAST_RESORT ],
], ],
[Species.PORYGON]: [ [Species.PORYGON]: [
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
@ -3325,7 +3332,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 52, Moves.EARTHQUAKE ], [ 52, Moves.EARTHQUAKE ],
], ],
[Species.ESPEON]: [ [Species.ESPEON]: [
[ 0, Moves.CONFUSION ], [ 0, Moves.GLITZY_GLOW ],
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ], [ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ], [ 1, Moves.DOUBLE_EDGE ],
@ -3338,19 +3345,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ], [ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ], [ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ], [ 5, Moves.SAND_ATTACK ],
[ 10, Moves.QUICK_ATTACK ], [ 10, Moves.CONFUSION ],
[ 15, Moves.BABY_DOLL_EYES ], [ 15, Moves.QUICK_ATTACK ],
[ 20, Moves.SWIFT ], [ 20, Moves.BABY_DOLL_EYES ],
[ 25, Moves.PSYBEAM ], [ 25, Moves.SWIFT ],
[ 30, Moves.MORNING_SUN ], [ 30, Moves.PSYBEAM ],
[ 35, Moves.POWER_SWAP ], [ 35, Moves.MORNING_SUN ],
[ 40, Moves.PSYCHIC ], [ 40, Moves.POWER_SWAP ],
[ 45, Moves.PSYCH_UP ], [ 45, Moves.PSYCHIC ],
[ 50, Moves.FUTURE_SIGHT ], [ 50, Moves.PSYCH_UP ],
[ 55, Moves.LAST_RESORT ], [ 55, Moves.FUTURE_SIGHT ],
[ 60, Moves.LAST_RESORT ],
], ],
[Species.UMBREON]: [ [Species.UMBREON]: [
[ 0, Moves.SNARL ], [ 0, Moves.BADDY_BAD ],
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ], [ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ], [ 1, Moves.DOUBLE_EDGE ],
@ -3364,16 +3372,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ], [ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ], [ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ], [ 5, Moves.SAND_ATTACK ],
[ 10, Moves.QUICK_ATTACK ], [ 10, Moves.SNARL ],
[ 15, Moves.BABY_DOLL_EYES ], [ 15, Moves.QUICK_ATTACK ],
[ 20, Moves.CONFUSE_RAY ], [ 20, Moves.BABY_DOLL_EYES ],
[ 25, Moves.ASSURANCE ], [ 25, Moves.CONFUSE_RAY ],
[ 30, Moves.MOONLIGHT ], [ 30, Moves.ASSURANCE ],
[ 35, Moves.GUARD_SWAP ], [ 35, Moves.MOONLIGHT ],
[ 40, Moves.DARK_PULSE ], [ 40, Moves.GUARD_SWAP ],
[ 45, Moves.SCREECH ], [ 45, Moves.DARK_PULSE ],
[ 50, Moves.MEAN_LOOK ], [ 50, Moves.SCREECH ],
[ 55, Moves.LAST_RESORT ], [ 55, Moves.MEAN_LOOK ],
[ 60, Moves.LAST_RESORT ],
], ],
[Species.MURKROW]: [ [Species.MURKROW]: [
[ 1, Moves.PECK ], [ 1, Moves.PECK ],
@ -5586,7 +5595,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[Species.SPINDA]: [ [Species.SPINDA]: [
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
[ 5, Moves.COPYCAT ], [ 5, Moves.COPYCAT ],
[ 10, Moves.TEETER_DANCE ], [ 10, Moves.DIZZY_PUNCH ],
[ 14, Moves.PSYBEAM ], [ 14, Moves.PSYBEAM ],
[ 19, Moves.HYPNOSIS ], [ 19, Moves.HYPNOSIS ],
[ 23, Moves.BODY_SLAM ], [ 23, Moves.BODY_SLAM ],
@ -7932,7 +7941,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 49, Moves.U_TURN ], [ 49, Moves.U_TURN ],
], ],
[Species.LEAFEON]: [ [Species.LEAFEON]: [
[ 0, Moves.RAZOR_LEAF ], [ 0, Moves.SAPPY_SEED ],
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ], [ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ], [ 1, Moves.DOUBLE_EDGE ],
@ -7946,19 +7955,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ], [ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ], [ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ], [ 5, Moves.SAND_ATTACK ],
[ 10, Moves.QUICK_ATTACK ], [ 10, Moves.RAZOR_LEAF ],
[ 15, Moves.BABY_DOLL_EYES ], [ 15, Moves.QUICK_ATTACK ],
[ 20, Moves.LEECH_SEED ], [ 20, Moves.BABY_DOLL_EYES ],
[ 25, Moves.MAGICAL_LEAF ], [ 25, Moves.LEECH_SEED ],
[ 30, Moves.SYNTHESIS ], [ 30, Moves.MAGICAL_LEAF ],
[ 35, Moves.SUNNY_DAY ], [ 35, Moves.SYNTHESIS ],
[ 40, Moves.GIGA_DRAIN ], [ 40, Moves.SUNNY_DAY ],
[ 45, Moves.SWORDS_DANCE ], [ 45, Moves.GIGA_DRAIN ],
[ 50, Moves.LEAF_BLADE ], [ 50, Moves.SWORDS_DANCE ],
[ 55, Moves.LAST_RESORT ], [ 55, Moves.LEAF_BLADE ],
[ 60, Moves.LAST_RESORT ],
], ],
[Species.GLACEON]: [ [Species.GLACEON]: [
[ 0, Moves.ICY_WIND ], [ 0, Moves.FREEZY_FROST ],
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ], [ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ], [ 1, Moves.DOUBLE_EDGE ],
@ -7971,16 +7981,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ], [ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ], [ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ], [ 5, Moves.SAND_ATTACK ],
[ 10, Moves.QUICK_ATTACK ], [ 10, Moves.ICY_WIND ],
[ 15, Moves.BABY_DOLL_EYES ], [ 15, Moves.QUICK_ATTACK ],
[ 20, Moves.ICE_SHARD ], [ 20, Moves.BABY_DOLL_EYES ],
[ 25, Moves.BITE ], [ 25, Moves.ICE_SHARD ],
[ 30, Moves.ICE_FANG ], [ 30, Moves.BITE ],
[ 35, Moves.SNOWSCAPE ], [ 35, Moves.ICE_FANG ],
[ 40, Moves.FREEZE_DRY ], [ 40, Moves.SNOWSCAPE ],
[ 45, Moves.MIRROR_COAT ], [ 45, Moves.FREEZE_DRY ],
[ 50, Moves.BLIZZARD ], [ 50, Moves.MIRROR_COAT ],
[ 55, Moves.LAST_RESORT ], [ 55, Moves.BLIZZARD ],
[ 60, Moves.LAST_RESORT ],
], ],
[Species.GLISCOR]: [ [Species.GLISCOR]: [
[ 1, Moves.SAND_ATTACK ], [ 1, Moves.SAND_ATTACK ],
@ -11822,7 +11833,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 66, Moves.HYPER_BEAM ], [ 66, Moves.HYPER_BEAM ],
], ],
[Species.SYLVEON]: [ [Species.SYLVEON]: [
[ 0, Moves.DISARMING_VOICE ], [ 0, Moves.SPARKLY_SWIRL ],
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ], [ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ], [ 1, Moves.DOUBLE_EDGE ],
@ -11835,16 +11846,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ], [ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ], [ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ], [ 5, Moves.SAND_ATTACK ],
[ 10, Moves.QUICK_ATTACK ], [ 10, Moves.DISARMING_VOICE ],
[ 15, Moves.BABY_DOLL_EYES ], [ 15, Moves.QUICK_ATTACK ],
[ 20, Moves.SWIFT ], [ 20, Moves.BABY_DOLL_EYES ],
[ 25, Moves.LIGHT_SCREEN ], [ 25, Moves.SWIFT ],
[ 30, Moves.DRAINING_KISS ], [ 30, Moves.LIGHT_SCREEN ],
[ 35, Moves.MISTY_TERRAIN ], [ 35, Moves.DRAINING_KISS ],
[ 40, Moves.SKILL_SWAP ], [ 40, Moves.MISTY_TERRAIN ],
[ 45, Moves.PSYCH_UP ], [ 45, Moves.SKILL_SWAP ],
[ 50, Moves.MOONBLAST ], [ 50, Moves.PSYCH_UP ],
[ 55, Moves.LAST_RESORT ], [ 55, Moves.MOONBLAST ],
[ 60, Moves.LAST_RESORT ],
], ],
[Species.HAWLUCHA]: [ [Species.HAWLUCHA]: [
[ 1, Moves.TACKLE ], [ 1, Moves.TACKLE ],
@ -17237,6 +17249,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
], ],
[Species.ALOLA_RAICHU]: [ [Species.ALOLA_RAICHU]: [
[ 0, Moves.PSYCHIC ], [ 0, Moves.PSYCHIC ],
[ 0, Moves.ZIPPY_ZAP ],
[ 1, Moves.TAIL_WHIP ], [ 1, Moves.TAIL_WHIP ],
[ 1, Moves.GROWL ], [ 1, Moves.GROWL ],
[ 1, Moves.THUNDER_SHOCK ], [ 1, Moves.THUNDER_SHOCK ],
@ -17257,6 +17270,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.PLAY_NICE ], [ 1, Moves.PLAY_NICE ],
[ 1, Moves.NUZZLE ], [ 1, Moves.NUZZLE ],
[ 5, Moves.THUNDERBOLT ], [ 5, Moves.THUNDERBOLT ],
[ 50, Moves.PIKA_PAPOW ],
], ],
[Species.ALOLA_SANDSHREW]: [ [Species.ALOLA_SANDSHREW]: [
[ 1, Moves.SCRATCH ], [ 1, Moves.SCRATCH ],

View File

@ -1748,8 +1748,14 @@ export function initSpecies() {
new PokemonSpecies(Species.FENNEKIN, 6, false, false, false, "Fox Pokémon", Type.FIRE, null, 0.4, 9.4, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 307, 40, 45, 40, 62, 60, 60, 45, 70, 61, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.FENNEKIN, 6, false, false, false, "Fox Pokémon", Type.FIRE, null, 0.4, 9.4, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 307, 40, 45, 40, 62, 60, 60, 45, 70, 61, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.BRAIXEN, 6, false, false, false, "Fox Pokémon", Type.FIRE, null, 1, 14.5, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 409, 59, 59, 58, 90, 70, 73, 45, 70, 143, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.BRAIXEN, 6, false, false, false, "Fox Pokémon", Type.FIRE, null, 1, 14.5, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 409, 59, 59, 58, 90, 70, 73, 45, 70, 143, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.DELPHOX, 6, false, false, false, "Fox Pokémon", Type.FIRE, Type.PSYCHIC, 1.5, 39, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.DELPHOX, 6, false, false, false, "Fox Pokémon", Type.FIRE, Type.PSYCHIC, 1.5, 39, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false),
new PokemonSpecies(Species.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonSpecies(Species.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, GrowthRate.MEDIUM_SLOW, 87.5, false, false,
new PokemonSpecies(Species.FROGADIER, 6, false, false, false, "Bubble Frog Pokémon", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false), new PokemonForm("Normal", "", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63),
new PokemonForm("Battle Bond", "battle-bond", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, ""),
),
new PokemonSpecies(Species.FROGADIER, 6, false, false, false, "Bubble Frog Pokémon", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, GrowthRate.MEDIUM_SLOW, 87.5, false, false,
new PokemonForm("Normal", "", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142),
new PokemonForm("Battle Bond", "battle-bond", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, ""),
),
new PokemonSpecies(Species.GRENINJA, 6, false, false, false, "Ninja Pokémon", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, GrowthRate.MEDIUM_SLOW, 87.5, false, false, new PokemonSpecies(Species.GRENINJA, 6, false, false, false, "Ninja Pokémon", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, GrowthRate.MEDIUM_SLOW, 87.5, false, false,
new PokemonForm("Normal", "", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239), new PokemonForm("Normal", "", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239),
new PokemonForm("Battle Bond", "battle-bond", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, false, ""), new PokemonForm("Battle Bond", "battle-bond", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, false, ""),

View File

@ -97,7 +97,7 @@ export const trainerNamePools = {
[TrainerType.MAID]: ["Belinda","Sophie","Emily","Elena","Clare","Alica","Tanya","Tammy"], [TrainerType.MAID]: ["Belinda","Sophie","Emily","Elena","Clare","Alica","Tanya","Tammy"],
[TrainerType.MUSICIAN]: ["Boris","Preston","Charles","Clyde","Vincent","Dalton","Kirk","Shawn","Fabian","Fernando","Joseph","Marcos","Arturo","Jerry","Lonnie","Tony"], [TrainerType.MUSICIAN]: ["Boris","Preston","Charles","Clyde","Vincent","Dalton","Kirk","Shawn","Fabian","Fernando","Joseph","Marcos","Arturo","Jerry","Lonnie","Tony"],
[TrainerType.NURSERY_AIDE]: ["Autumn","Briana","Leah","Miho","Ethel","Hollie","Ilse","June","Kimya","Rosalyn"], [TrainerType.NURSERY_AIDE]: ["Autumn","Briana","Leah","Miho","Ethel","Hollie","Ilse","June","Kimya","Rosalyn"],
[TrainerType.OFFICER]: ["Dirk","Keith","Alex","Bobby","Caleb","Danny","Dylan","Thomas","Daniel","Jeff","Braven","Dell","Neagle","Haruki","Mitchell","Sheriff","Raymond"], [TrainerType.OFFICER]: ["Dirk","Keith","Alex","Bobby","Caleb","Danny","Dylan","Thomas","Daniel","Jeff","Braven","Dell","Neagle","Haruki","Mitchell","Raymond"],
[TrainerType.PARASOL_LADY]: ["Angelica","Clarissa","Madeline","Akari","Annabell","Kayley","Rachel","Alexa","Sabrina","April","Gwyneth","Laura","Lumi","Mariah","Melita","Nicole","Tihana","Ingrid","Tyra"], [TrainerType.PARASOL_LADY]: ["Angelica","Clarissa","Madeline","Akari","Annabell","Kayley","Rachel","Alexa","Sabrina","April","Gwyneth","Laura","Lumi","Mariah","Melita","Nicole","Tihana","Ingrid","Tyra"],
[TrainerType.PILOT]: ["Chase","Leonard","Ted","Elron","Ewing","Flynn","Winslow"], [TrainerType.PILOT]: ["Chase","Leonard","Ted","Elron","Ewing","Flynn","Winslow"],
[TrainerType.POKEFAN]: [["Alex","Allan","Brandon","Carter","Colin","Derek","Jeremy","Joshua","Rex","Robert","Trevor","William","Colton","Miguel","Francisco","Kaleb","Leonard","Boone","Elliot","Jude","Norbert","Corey","Gabe","Baxter"],["Beverly","Georgia","Jaime","Ruth","Isabel","Marissa","Vanessa","Annika","Bethany","Kimberly","Meredith","Rebekah","Eleanor","Darcy","Lydia","Sachiko","Abigail","Agnes","Lydie","Roisin","Tara","Carmen","Janet"]], [TrainerType.POKEFAN]: [["Alex","Allan","Brandon","Carter","Colin","Derek","Jeremy","Joshua","Rex","Robert","Trevor","William","Colton","Miguel","Francisco","Kaleb","Leonard","Boone","Elliot","Jude","Norbert","Corey","Gabe","Baxter"],["Beverly","Georgia","Jaime","Ruth","Isabel","Marissa","Vanessa","Annika","Bethany","Kimberly","Meredith","Rebekah","Eleanor","Darcy","Lydia","Sachiko","Abigail","Agnes","Lydie","Roisin","Tara","Carmen","Janet"]],

View File

@ -18,8 +18,7 @@ import { TimeOfDay } from "../data/enums/time-of-day";
import { Terrain, TerrainType } from "../data/terrain"; import { Terrain, TerrainType } from "../data/terrain";
import { PostTerrainChangeAbAttr, PostWeatherChangeAbAttr, applyPostTerrainChangeAbAttrs, applyPostWeatherChangeAbAttrs } from "../data/ability"; import { PostTerrainChangeAbAttr, PostWeatherChangeAbAttr, applyPostTerrainChangeAbAttrs, applyPostWeatherChangeAbAttrs } from "../data/ability";
import Pokemon from "./pokemon"; import Pokemon from "./pokemon";
import { WEATHER_OVERRIDE } from '../overrides';
const WEATHER_OVERRIDE = WeatherType.NONE;
export class Arena { export class Arena {
public scene: BattleScene; public scene: BattleScene;

View File

@ -1,5 +1,5 @@
import Phaser from 'phaser'; import Phaser from 'phaser';
import BattleScene, { ABILITY_OVERRIDE, AnySound, MOVE_OVERRIDE, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE, OPP_SHINY_OVERRIDE, OPP_VARIANT_OVERRIDE } from '../battle-scene'; import BattleScene, { AnySound } from '../battle-scene';
import { Variant, VariantSet, variantColorCache } from '#app/data/variant'; import { Variant, VariantSet, variantColorCache } from '#app/data/variant';
import { variantData } from '#app/data/variant'; import { variantData } from '#app/data/variant';
import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from '../ui/battle-info'; import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from '../ui/battle-info';
@ -43,6 +43,7 @@ import { Nature, getNatureStatMultiplier } from '../data/nature';
import { SpeciesFormChange, SpeciesFormChangeActiveTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangeStatusEffectTrigger } from '../data/pokemon-forms'; import { SpeciesFormChange, SpeciesFormChangeActiveTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangeStatusEffectTrigger } from '../data/pokemon-forms';
import { TerrainType } from '../data/terrain'; import { TerrainType } from '../data/terrain';
import { TrainerSlot } from '../data/trainer-config'; import { TrainerSlot } from '../data/trainer-config';
import { ABILITY_OVERRIDE, MOVE_OVERRIDE, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE, OPP_SHINY_OVERRIDE, OPP_VARIANT_OVERRIDE } from '../overrides';
export enum FieldPosition { export enum FieldPosition {
CENTER, CENTER,

View File

@ -1,10 +1,11 @@
import { fixedBattles } from "./battle"; import { fixedBattles } from "./battle";
import BattleScene, { STARTING_BIOME_OVERRIDE, STARTING_LEVEL_OVERRIDE, STARTING_MONEY_OVERRIDE } from "./battle-scene"; import BattleScene from "./battle-scene";
import { Biome } from "./data/enums/biome"; import { Biome } from "./data/enums/biome";
import { Species } from "./data/enums/species"; import { Species } from "./data/enums/species";
import PokemonSpecies, { allSpecies } from "./data/pokemon-species"; import PokemonSpecies, { allSpecies } from "./data/pokemon-species";
import { Arena } from "./field/arena"; import { Arena } from "./field/arena";
import * as Utils from "./utils"; import * as Utils from "./utils";
import { STARTING_BIOME_OVERRIDE, STARTING_LEVEL_OVERRIDE, STARTING_MONEY_OVERRIDE } from './overrides';
export enum GameModes { export enum GameModes {
CLASSIC, CLASSIC,

View File

@ -59,4 +59,9 @@ export const menu: SimpleTranslationEntries = {
"escapeVerbSwitch": "auswechseln", "escapeVerbSwitch": "auswechseln",
"escapeVerbFlee": "flucht", "escapeVerbFlee": "flucht",
"notDisabled": "{{moveName}} ist\nnicht mehr deaktiviert!", "notDisabled": "{{moveName}} ist\nnicht mehr deaktiviert!",
"rankings": "Rankings",
"dailyRankings": "Daily Rankings",
"noRankings": "No Rankings",
"loading": "Loading…",
"playersOnline": "Players Online"
} as const; } as const;

View File

@ -78,4 +78,9 @@ export const menu: SimpleTranslationEntries = {
"skipItemQuestion": "Are you sure you want to skip taking an item?", "skipItemQuestion": "Are you sure you want to skip taking an item?",
"eggHatching": "Oh?", "eggHatching": "Oh?",
"ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?", "ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?",
"rankings": "Rankings",
"dailyRankings": "Daily Rankings",
"noRankings": "No Rankings",
"loading": "Loading…",
"playersOnline": "Players Online"
} as const; } as const;

View File

@ -61,5 +61,10 @@ export const menu: SimpleTranslationEntries = {
"notDisabled": "¡El movimiento {{moveName}}\nya no está anulado!", "notDisabled": "¡El movimiento {{moveName}}\nya no está anulado!",
"skipItemQuestion": "¿Estás seguro de que no quieres coger un objeto?", "skipItemQuestion": "¿Estás seguro de que no quieres coger un objeto?",
"eggHatching": "¿Y esto?", "eggHatching": "¿Y esto?",
"ivScannerUseQuestion": "¿Quieres usar el Escáner de IVs en {{pokemonName}}?" "ivScannerUseQuestion": "¿Quieres usar el Escáner de IVs en {{pokemonName}}?",
"rankings": "Rankings",
"dailyRankings": "Daily Rankings",
"noRankings": "No Rankings",
"loading": "Loading…",
"playersOnline": "Players Online"
} as const; } as const;

View File

@ -73,4 +73,9 @@ export const menu: SimpleTranslationEntries = {
"skipItemQuestion": "Êtes-vous sûr·e de ne pas vouloir prendre dobjet ?", "skipItemQuestion": "Êtes-vous sûr·e de ne pas vouloir prendre dobjet ?",
"eggHatching": "Oh ?", "eggHatching": "Oh ?",
"ivScannerUseQuestion": "Utiliser le Scanner dIV sur {{pokemonName}} ?", "ivScannerUseQuestion": "Utiliser le Scanner dIV sur {{pokemonName}} ?",
"rankings": "Rankings",
"dailyRankings": "Daily Rankings",
"noRankings": "No Rankings",
"loading": "Loading…",
"playersOnline": "Players Online"
} as const; } as const;

View File

@ -6,5 +6,10 @@ export const menu: SimpleTranslationEntries = {
"newGame": "Nuova Partita", "newGame": "Nuova Partita",
"loadGame": "Carica Partita", "loadGame": "Carica Partita",
"dailyRun": "Corsa Giornaliera (Beta)", "dailyRun": "Corsa Giornaliera (Beta)",
"selectGameMode": "Seleziona una modalità di gioco." "selectGameMode": "Seleziona una modalità di gioco.",
"rankings": "Rankings",
"dailyRankings": "Daily Rankings",
"noRankings": "No Rankings",
"loading": "Loading…",
"playersOnline": "Players Online"
} as const; } as const;

23
src/overrides.ts Normal file
View File

@ -0,0 +1,23 @@
import { Species } from './data/enums/species';
import { Abilities } from "./data/enums/abilities";
import { Biome } from "./data/enums/biome";
import { Moves } from "./data/enums/moves";
import { WeatherType } from "./data/weather";
export const SEED_OVERRIDE = '';
export const STARTER_SPECIES_OVERRIDE = 0;
export const STARTER_FORM_OVERRIDE = 0;
export const STARTING_LEVEL_OVERRIDE = 0;
export const STARTING_WAVE_OVERRIDE = 0;
export const STARTING_BIOME_OVERRIDE = Biome.TOWN;
export const STARTING_MONEY_OVERRIDE = 0;
export const WEATHER_OVERRIDE = WeatherType.NONE;
export const ABILITY_OVERRIDE = Abilities.NONE;
export const MOVE_OVERRIDE = Moves.NONE;
export const OPP_SPECIES_OVERRIDE = 0;
export const OPP_ABILITY_OVERRIDE = Abilities.NONE;
export const OPP_MOVE_OVERRIDE = Moves.NONE;
export const OPP_SHINY_OVERRIDE = false;
export const OPP_VARIANT_OVERRIDE = 0;

View File

@ -1,8 +1,8 @@
import BattleScene, { STARTER_FORM_OVERRIDE, STARTER_SPECIES_OVERRIDE, bypassLogin, startingWave } from "./battle-scene"; import BattleScene, { bypassLogin, startingWave } from "./battle-scene";
import { default as Pokemon, PlayerPokemon, EnemyPokemon, PokemonMove, MoveResult, DamageResult, FieldPosition, HitResult, TurnMove } from "./field/pokemon"; import { default as Pokemon, PlayerPokemon, EnemyPokemon, PokemonMove, MoveResult, DamageResult, FieldPosition, HitResult, TurnMove } from "./field/pokemon";
import * as Utils from './utils'; import * as Utils from './utils';
import { Moves } from "./data/enums/moves"; import { Moves } from "./data/enums/moves";
import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMoveAttrs, HitsTagAttr, MissEffectAttr, MoveAttr, MoveEffectAttr, MoveFlags, MultiHitAttr, OverrideMoveEffectAttr, VariableAccuracyAttr, MoveTarget, OneHitKOAttr, getMoveTargets, MoveTargetSet, MoveEffectTrigger, CopyMoveAttr, AttackMove, SelfStatusMove, DelayedAttackAttr, RechargeAttr, PreMoveMessageAttr, HealStatusEffectAttr, IgnoreOpponentStatChangesAttr, NoEffectAttr, FixedDamageAttr, OneHitKOAccuracyAttr } from "./data/move"; import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMoveAttrs, HitsTagAttr, MissEffectAttr, MoveAttr, MoveEffectAttr, MoveFlags, MultiHitAttr, OverrideMoveEffectAttr, VariableAccuracyAttr, MoveTarget, OneHitKOAttr, getMoveTargets, MoveTargetSet, MoveEffectTrigger, CopyMoveAttr, AttackMove, SelfStatusMove, DelayedAttackAttr, RechargeAttr, PreMoveMessageAttr, HealStatusEffectAttr, IgnoreOpponentStatChangesAttr, NoEffectAttr, FixedDamageAttr, OneHitKOAccuracyAttr, ForceSwitchOutAttr } from "./data/move";
import { Mode } from './ui/ui'; import { Mode } from './ui/ui';
import { Command } from "./ui/command-ui-handler"; import { Command } from "./ui/command-ui-handler";
import { Stat } from "./data/pokemon-stat"; import { Stat } from "./data/pokemon-stat";
@ -57,6 +57,7 @@ import { fetchDailyRunSeed, getDailyRunStarters } from "./data/daily-run";
import { GameModes, gameModes } from "./game-mode"; import { GameModes, gameModes } from "./game-mode";
import { getPokemonSpecies, speciesStarters } from "./data/pokemon-species"; import { getPokemonSpecies, speciesStarters } from "./data/pokemon-species";
import i18next from './plugins/i18n'; import i18next from './plugins/i18n';
import { STARTER_FORM_OVERRIDE, STARTER_SPECIES_OVERRIDE } from './overrides';
export class LoginPhase extends Phase { export class LoginPhase extends Phase {
private showText: boolean; private showText: boolean;
@ -1420,9 +1421,11 @@ export class SwitchSummonPhase extends SummonPhase {
super.onEnd(); super.onEnd();
const pokemon = this.getPokemon(); const pokemon = this.getPokemon();
const moveId = pokemon.scene.currentBattle.turnCommands[this.fieldIndex]?.move?.move;
const lastUsedMove = moveId ? allMoves[moveId] : undefined;
// Compensate for turn spent summoning // Compensate for turn spent summoning
if (pokemon.scene.currentBattle.turnCommands[this.fieldIndex]?.command === Command.POKEMON) if (pokemon.scene.currentBattle.turnCommands[this.fieldIndex]?.command === Command.POKEMON || !!lastUsedMove?.findAttr(attr => attr instanceof ForceSwitchOutAttr)) //check if hard switch OR pivot move was used
pokemon.battleSummonData.turnCount--; pokemon.battleSummonData.turnCount--;
if (this.batonPass && pokemon) if (this.batonPass && pokemon)

View File

@ -2,6 +2,7 @@ import BattleScene from "../battle-scene";
import { TextStyle, addTextObject } from "./text"; import { TextStyle, addTextObject } from "./text";
import { WindowVariant, addWindow } from "./ui-theme"; import { WindowVariant, addWindow } from "./ui-theme";
import * as Utils from "../utils"; import * as Utils from "../utils";
import i18next from "i18next";
interface RankingEntry { interface RankingEntry {
rank: integer, rank: integer,
@ -39,7 +40,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container {
const titleWindow = addWindow(this.scene, 0, 0, 114, 18, false, false, null, null, WindowVariant.THIN); const titleWindow = addWindow(this.scene, 0, 0, 114, 18, false, false, null, null, WindowVariant.THIN);
this.add(titleWindow); this.add(titleWindow);
this.titleLabel = addTextObject(this.scene, titleWindow.displayWidth / 2, titleWindow.displayHeight / 2, 'Daily Rankings', TextStyle.WINDOW, { fontSize: '64px' }); this.titleLabel = addTextObject(this.scene, titleWindow.displayWidth / 2, titleWindow.displayHeight / 2, i18next.t('menu:dailyRankings'), TextStyle.WINDOW, { fontSize: '64px' });
this.titleLabel.setOrigin(0.5, 0.5); this.titleLabel.setOrigin(0.5, 0.5);
this.add(this.titleLabel); this.add(this.titleLabel);
@ -141,7 +142,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container {
update(category: ScoreboardCategory = this.category, page: integer = this.page) { update(category: ScoreboardCategory = this.category, page: integer = this.page) {
this.rankingsContainer.removeAll(true); this.rankingsContainer.removeAll(true);
this.loadingLabel.setText('Loading…'); this.loadingLabel.setText(i18next.t('menu:loading'));
this.loadingLabel.setVisible(true); this.loadingLabel.setVisible(true);
if (category !== this.category) if (category !== this.category)
@ -155,7 +156,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container {
.then(jsonResponse => { .then(jsonResponse => {
this.page = page; this.page = page;
this.category = category; this.category = category;
this.titleLabel.setText(`${Utils.toReadableString(ScoreboardCategory[category])} Rankings`); this.titleLabel.setText(`${Utils.toReadableString(ScoreboardCategory[category])} ${i18next.t("menu:rankings")}`);
this.prevPageButton.setAlpha(page > 1 ? 1 : 0.5); this.prevPageButton.setAlpha(page > 1 ? 1 : 0.5);
this.nextPageButton.setAlpha(page < this.pageCount ? 1 : 0.5); this.nextPageButton.setAlpha(page < this.pageCount ? 1 : 0.5);
this.pageNumberLabel.setText(page.toString()); this.pageNumberLabel.setText(page.toString());
@ -163,7 +164,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container {
this.loadingLabel.setVisible(false); this.loadingLabel.setVisible(false);
this.updateRankings(jsonResponse); this.updateRankings(jsonResponse);
} else } else
this.loadingLabel.setText('No Rankings'); this.loadingLabel.setText(i18next.t('menu:noRankings'));
}); });
}); });
} }

View File

@ -5,6 +5,7 @@ import { Mode } from "./ui";
import * as Utils from "../utils"; import * as Utils from "../utils";
import { TextStyle, addTextObject } from "./text"; import { TextStyle, addTextObject } from "./text";
import { battleCountSplashMessage, splashMessages } from "../data/splash-messages"; import { battleCountSplashMessage, splashMessages } from "../data/splash-messages";
import i18next from "i18next";
export default class TitleUiHandler extends OptionSelectUiHandler { export default class TitleUiHandler extends OptionSelectUiHandler {
private titleContainer: Phaser.GameObjects.Container; private titleContainer: Phaser.GameObjects.Container;
@ -37,7 +38,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler {
this.titleContainer.add(this.dailyRunScoreboard); this.titleContainer.add(this.dailyRunScoreboard);
this.playerCountLabel = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - 90, '? Players Online', TextStyle.MESSAGE, { fontSize: '54px' }); this.playerCountLabel = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - 90, `? ${i18next.t("menu:playersOnline")}`, TextStyle.MESSAGE, { fontSize: '54px' });
this.playerCountLabel.setOrigin(1, 0); this.playerCountLabel.setOrigin(1, 0);
this.titleContainer.add(this.playerCountLabel); this.titleContainer.add(this.playerCountLabel);
@ -61,7 +62,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler {
Utils.apiFetch(`game/titlestats`) Utils.apiFetch(`game/titlestats`)
.then(request => request.json()) .then(request => request.json())
.then(stats => { .then(stats => {
this.playerCountLabel.setText(`${stats.playerCount} Players Online`); this.playerCountLabel.setText(`${stats.playerCount} ${i18next.t("menu:playersOnline")}`);
if (this.splashMessage === battleCountSplashMessage) if (this.splashMessage === battleCountSplashMessage)
this.splashMessageText.setText(battleCountSplashMessage.replace('{COUNT}', stats.battleCount.toLocaleString('en-US'))); this.splashMessageText.setText(battleCountSplashMessage.replace('{COUNT}', stats.battleCount.toLocaleString('en-US')));
}); });