mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-08-15 03:49:33 +02:00
Compare commits
No commits in common. "8a0eaa000912dc09fc3dc2fafb60c41d74e122b4" and "dd40c8caa2124284d0d09a61e1b9d4023e269ff1" have entirely different histories.
8a0eaa0009
...
dd40c8caa2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1745,27 +1745,27 @@
|
|||||||
1
|
1
|
||||||
],
|
],
|
||||||
"641-incarnate": [
|
"641-incarnate": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
"641-therian": [
|
"641-therian": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
"642-incarnate": [
|
"642-incarnate": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
"642-therian": [
|
"642-therian": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
"645-incarnate": [
|
"645-incarnate": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
@ -4608,32 +4608,32 @@
|
|||||||
1
|
1
|
||||||
],
|
],
|
||||||
"641-incarnate": [
|
"641-incarnate": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
"641-therian": [
|
"641-therian": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
"642-incarnate": [
|
"642-incarnate": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
"642-therian": [
|
"642-therian": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
"645-incarnate": [
|
"645-incarnate": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
"645-therian": [
|
"645-therian": [
|
||||||
0,
|
1,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
|
@ -234,7 +234,6 @@ export default class BattleScene extends SceneBase {
|
|||||||
public rngSeedOverride: string = "";
|
public rngSeedOverride: string = "";
|
||||||
public rngOffset: integer = 0;
|
public rngOffset: integer = 0;
|
||||||
|
|
||||||
public inputMethod: string;
|
|
||||||
private infoToggles: InfoToggle[] = [];
|
private infoToggles: InfoToggle[] = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1680,64 +1679,34 @@ export default class BattleScene extends SceneBase {
|
|||||||
|
|
||||||
getBgmLoopPoint(bgmName: string): number {
|
getBgmLoopPoint(bgmName: string): number {
|
||||||
switch (bgmName) {
|
switch (bgmName) {
|
||||||
case "battle_kanto_champion": //B2W2 Kanto Champion Battle
|
case "battle_kanto_champion":
|
||||||
return 13.950;
|
return 13.950;
|
||||||
case "battle_johto_champion": //B2W2 Johto Champion Battle
|
case "battle_johto_champion":
|
||||||
return 23.498;
|
return 23.498;
|
||||||
case "battle_hoenn_champion": //B2W2 Hoenn Champion Battle
|
case "battle_hoenn_champion":
|
||||||
return 11.328;
|
return 11.328;
|
||||||
case "battle_sinnoh_champion": //B2W2 Sinnoh Champion Battle
|
case "battle_sinnoh_champion":
|
||||||
return 12.235;
|
return 12.235;
|
||||||
case "battle_champion_alder": //BW Unova Champion Battle
|
case "battle_champion_alder":
|
||||||
return 27.653;
|
return 27.653;
|
||||||
case "battle_champion_iris": //B2W2 Unova Champion Battle
|
case "battle_champion_iris":
|
||||||
return 10.145;
|
return 10.145;
|
||||||
case "battle_kalos_champion": //XY Kalos Champion Battle
|
case "battle_elite":
|
||||||
return 10.380;
|
|
||||||
case "battle_alola_champion": //USUM Alola Champion Battle
|
|
||||||
return 13.025;
|
|
||||||
case "battle_galar_champion": //SWSH Galar Champion Battle
|
|
||||||
return 61.635;
|
|
||||||
case "battle_champion_geeta": //SV Champion Geeta Battle
|
|
||||||
return 37.447;
|
|
||||||
case "battle_champion_nemona": //SV Champion Nemona Battle
|
|
||||||
return 14.914;
|
|
||||||
case "battle_champion_kieran": //SV Champion Kieran Battle
|
|
||||||
return 7.206;
|
|
||||||
case "battle_hoenn_elite": //ORAS Elite Four Battle
|
|
||||||
return 11.350;
|
|
||||||
case "battle_unova_elite": //BW Elite Four Battle
|
|
||||||
return 17.730;
|
return 17.730;
|
||||||
case "battle_kalos_elite": //XY Elite Four Battle
|
case "battle_final_encounter":
|
||||||
return 12.340;
|
|
||||||
case "battle_alola_elite": //SM Elite Four Battle
|
|
||||||
return 19.212;
|
|
||||||
case "battle_galar_elite": //SWSH League Tournament Battle
|
|
||||||
return 164.069;
|
|
||||||
case "battle_paldea_elite": //SV Elite Four Battle
|
|
||||||
return 12.770;
|
|
||||||
case "battle_bb_elite": //SV BB League Elite Four Battle
|
|
||||||
return 19.434;
|
|
||||||
case "battle_final_encounter": //PMD RTDX Rayquaza's Domain
|
|
||||||
return 19.159;
|
return 19.159;
|
||||||
case "battle_final": //BW Ghetsis Battle
|
case "battle_final":
|
||||||
return 16.453;
|
return 16.453;
|
||||||
case "battle_kanto_gym": //B2W2 Kanto Gym Battle
|
case "battle_kanto_gym":
|
||||||
return 13.857;
|
return 13.857;
|
||||||
case "battle_johto_gym": //B2W2 Johto Gym Battle
|
case "battle_johto_gym":
|
||||||
return 12.911;
|
return 12.911;
|
||||||
case "battle_hoenn_gym": //B2W2 Hoenn Gym Battle
|
case "battle_hoenn_gym":
|
||||||
return 12.379;
|
return 12.379;
|
||||||
case "battle_sinnoh_gym": //B2W2 Sinnoh Gym Battle
|
case "battle_sinnoh_gym":
|
||||||
return 13.122;
|
return 13.122;
|
||||||
case "battle_unova_gym": //BW Unova Gym Battle
|
case "battle_unova_gym":
|
||||||
return 19.145;
|
return 19.145;
|
||||||
case "battle_kalos_gym": //XY Kalos Gym Battle
|
|
||||||
return 44.810;
|
|
||||||
case "battle_galar_gym": //SWSH Galar Gym Battle
|
|
||||||
return 171.262;
|
|
||||||
case "battle_paldea_gym": //SV Paldea Gym Battle
|
|
||||||
return 127.489;
|
|
||||||
case "battle_legendary_kanto": //XY Kanto Legendary Battle
|
case "battle_legendary_kanto": //XY Kanto Legendary Battle
|
||||||
return 32.966;
|
return 32.966;
|
||||||
case "battle_legendary_raikou": //HGSS Raikou Battle
|
case "battle_legendary_raikou": //HGSS Raikou Battle
|
||||||
@ -1806,19 +1775,19 @@ export default class BattleScene extends SceneBase {
|
|||||||
return 24.377;
|
return 24.377;
|
||||||
case "battle_legendary_pecharunt": //SV Pecharunt Battle
|
case "battle_legendary_pecharunt": //SV Pecharunt Battle
|
||||||
return 6.508;
|
return 6.508;
|
||||||
case "battle_rival": //BW Rival Battle
|
case "battle_rival":
|
||||||
return 13.689;
|
return 13.689;
|
||||||
case "battle_rival_2": //BW N Battle
|
case "battle_rival_2":
|
||||||
return 17.714;
|
return 17.714;
|
||||||
case "battle_rival_3": //BW Final N Battle
|
case "battle_rival_3":
|
||||||
return 17.586;
|
return 17.586;
|
||||||
case "battle_trainer": //BW Trainer Battle
|
case "battle_trainer":
|
||||||
return 13.686;
|
return 13.686;
|
||||||
case "battle_wild": //BW Wild Battle
|
case "battle_wild":
|
||||||
return 12.703;
|
return 12.703;
|
||||||
case "battle_wild_strong": //BW Strong Wild Battle
|
case "battle_wild_strong":
|
||||||
return 13.940;
|
return 13.940;
|
||||||
case "end_summit": //PMD RTDX Sky Tower Summit
|
case "end_summit":
|
||||||
return 30.025;
|
return 30.025;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,11 +197,7 @@ export default class Battle {
|
|||||||
if (!this.started && this.trainer.config.encounterBgm && this.trainer.getEncounterMessages()?.length) {
|
if (!this.started && this.trainer.config.encounterBgm && this.trainer.getEncounterMessages()?.length) {
|
||||||
return `encounter_${this.trainer.getEncounterBgm()}`;
|
return `encounter_${this.trainer.getEncounterBgm()}`;
|
||||||
}
|
}
|
||||||
if (scene.musicPreference === 0) {
|
|
||||||
return this.trainer.getBattleBgm();
|
return this.trainer.getBattleBgm();
|
||||||
} else {
|
|
||||||
return this.trainer.getMixedBattleBgm();
|
|
||||||
}
|
|
||||||
} else if (this.gameMode.isClassic && this.waveIndex > 195 && this.battleSpec !== BattleSpec.FINAL_BOSS) {
|
} else if (this.gameMode.isClassic && this.waveIndex > 195 && this.battleSpec !== BattleSpec.FINAL_BOSS) {
|
||||||
return "end_summit";
|
return "end_summit";
|
||||||
}
|
}
|
||||||
@ -438,13 +434,13 @@ export const classicFixedBattles: FixedBattleConfigs = {
|
|||||||
[145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
[145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_5, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_5, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||||
[182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
[182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, [ TrainerType.HALA, TrainerType.MOLAYNE ], TrainerType.MARNIE_ELITE, TrainerType.RIKA, TrainerType.CRISPIN ])),
|
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, [ TrainerType.HALA, TrainerType.MOLAYNE ],TrainerType.MARNIE_ELITE, TrainerType.RIKA, TrainerType.CRISPIN ])),
|
||||||
[184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
[184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY, TrainerType.AMARYS ])),
|
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY, TrainerType.AMARYS ])),
|
||||||
[186]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
[186]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, [ TrainerType.BEA_ELITE, TrainerType.ALLISTER_ELITE ], TrainerType.LARRY_ELITE, TrainerType.LACEY ])),
|
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, [TrainerType.BEA_ELITE,TrainerType.ALLISTER_ELITE], TrainerType.LARRY_ELITE, TrainerType.LACEY ])),
|
||||||
[188]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
[188]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.RAIHAN_ELITE, TrainerType.HASSEL, TrainerType.DRAYTON ])),
|
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI,TrainerType.RAIHAN_ELITE, TrainerType.HASSEL, TrainerType.DRAYTON ])),
|
||||||
[190]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
[190]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, TrainerType.HAU, TrainerType.LEON, [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN ])),
|
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, TrainerType.HAU, TrainerType.LEON, [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN ])),
|
||||||
[195]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
[195]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||||
|
@ -267,18 +267,11 @@ export class SingleGenerationChallenge extends Challenge {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* We have special code below for victini because it is classed as a generation 4 pokemon in the code
|
|
||||||
* despite being a generation 5 pokemon. This is due to UI constraints, the starter select screen has
|
|
||||||
* no more room for pokemon so victini is put in the gen 4 section instead. This code just overrides the
|
|
||||||
* normal generation check to correctly treat victini as gen 5.
|
|
||||||
*/
|
|
||||||
switch (challengeType) {
|
switch (challengeType) {
|
||||||
case ChallengeType.STARTER_CHOICE:
|
case ChallengeType.STARTER_CHOICE:
|
||||||
const species = args[0] as PokemonSpecies;
|
const species = args[0] as PokemonSpecies;
|
||||||
const isValidStarter = args[1] as Utils.BooleanHolder;
|
const isValidStarter = args[1] as Utils.BooleanHolder;
|
||||||
const starterGeneration = species.speciesId === Species.VICTINI ? 5 : species.generation;
|
if (species.generation !== this.value) {
|
||||||
if (starterGeneration !== this.value) {
|
|
||||||
isValidStarter.value = false;
|
isValidStarter.value = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -286,9 +279,7 @@ export class SingleGenerationChallenge extends Challenge {
|
|||||||
case ChallengeType.POKEMON_IN_BATTLE:
|
case ChallengeType.POKEMON_IN_BATTLE:
|
||||||
const pokemon = args[0] as Pokemon;
|
const pokemon = args[0] as Pokemon;
|
||||||
const isValidPokemon = args[1] as Utils.BooleanHolder;
|
const isValidPokemon = args[1] as Utils.BooleanHolder;
|
||||||
const baseGeneration = pokemon.species.speciesId === Species.VICTINI ? 5 : getPokemonSpecies(pokemon.species.speciesId).generation;
|
if (pokemon.isPlayer() && ((pokemon.species.formIndex === 0 ? pokemon.species : getPokemonSpecies(pokemon.species.speciesId)).generation !== this.value || (pokemon.isFusion() && (pokemon.fusionSpecies.formIndex === 0 ? pokemon.fusionSpecies : getPokemonSpecies(pokemon.fusionSpecies.speciesId)).generation !== this.value))) {
|
||||||
const fusionGeneration = pokemon.isFusion() ? pokemon.fusionSpecies.speciesId === Species.VICTINI ? 5 : getPokemonSpecies(pokemon.fusionSpecies.speciesId).generation : 0;
|
|
||||||
if (pokemon.isPlayer() && (baseGeneration !== this.value || (pokemon.isFusion() && fusionGeneration !== this.value))) {
|
|
||||||
isValidPokemon.value = false;
|
isValidPokemon.value = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1467,7 +1467,7 @@ export class HitHealAttr extends MoveEffectAttr {
|
|||||||
message = i18next.t("battle:drainMessage", {pokemonName: target.name});
|
message = i18next.t("battle:drainMessage", {pokemonName: target.name});
|
||||||
} else {
|
} else {
|
||||||
// Default healing formula used by draining moves like Absorb, Draining Kiss, Bitter Blade, etc.
|
// Default healing formula used by draining moves like Absorb, Draining Kiss, Bitter Blade, etc.
|
||||||
healAmount = Math.max(Math.floor(user.turnData.currDamageDealt * this.healRatio), 1);
|
healAmount = Math.max(Math.floor(user.turnData.damageDealt * this.healRatio), 1);
|
||||||
message = i18next.t("battle:regainHealth", {pokemonName: user.name});
|
message = i18next.t("battle:regainHealth", {pokemonName: user.name});
|
||||||
}
|
}
|
||||||
if (reverseDrain) {
|
if (reverseDrain) {
|
||||||
@ -4416,7 +4416,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const party = player ? user.scene.getParty() : user.scene.getEnemyParty();
|
const party = player ? user.scene.getParty() : user.scene.getEnemyParty();
|
||||||
return (!player && !user.scene.currentBattle.battleType) || party.filter(p => p.isAllowedInBattle() && (player || (p as EnemyPokemon).trainerSlot === (switchOutTarget as EnemyPokemon).trainerSlot)).length > user.scene.currentBattle.getBattlerCount();
|
return (!player && !user.scene.currentBattle.battleType) || party.filter(p => !p.isFainted() && (player || (p as EnemyPokemon).trainerSlot === (switchOutTarget as EnemyPokemon).trainerSlot)).length > user.scene.currentBattle.getBattlerCount();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,7 +187,6 @@ export class TrainerConfig {
|
|||||||
public isBoss: boolean = false;
|
public isBoss: boolean = false;
|
||||||
public hasStaticParty: boolean = false;
|
public hasStaticParty: boolean = false;
|
||||||
public useSameSeedForAllMembers: boolean = false;
|
public useSameSeedForAllMembers: boolean = false;
|
||||||
public mixedBattleBgm: string;
|
|
||||||
public battleBgm: string;
|
public battleBgm: string;
|
||||||
public encounterBgm: string;
|
public encounterBgm: string;
|
||||||
public femaleEncounterBgm: string;
|
public femaleEncounterBgm: string;
|
||||||
@ -441,11 +440,6 @@ export class TrainerConfig {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
setMixedBattleBgm(mixedBattleBgm: string): TrainerConfig {
|
|
||||||
this.mixedBattleBgm = mixedBattleBgm;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
setBattleBgm(battleBgm: string): TrainerConfig {
|
setBattleBgm(battleBgm: string): TrainerConfig {
|
||||||
this.battleBgm = battleBgm;
|
this.battleBgm = battleBgm;
|
||||||
return this;
|
return this;
|
||||||
@ -611,7 +605,7 @@ export class TrainerConfig {
|
|||||||
this.setMoneyMultiplier(3.25);
|
this.setMoneyMultiplier(3.25);
|
||||||
this.setBoss();
|
this.setBoss();
|
||||||
this.setStaticParty();
|
this.setStaticParty();
|
||||||
this.setBattleBgm("battle_unova_elite");
|
this.setBattleBgm("battle_elite");
|
||||||
this.setVictoryBgm("victory_gym");
|
this.setVictoryBgm("victory_gym");
|
||||||
this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 2, specialtyTypes.length ? specialtyTypes : null));
|
this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 2, specialtyTypes.length ? specialtyTypes : null));
|
||||||
|
|
||||||
@ -1148,76 +1142,76 @@ export const trainerConfigs: TrainerConfigs = {
|
|||||||
[TrainerType.BRYCEN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRYCEN"],true, Type.ICE),
|
[TrainerType.BRYCEN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRYCEN"],true, Type.ICE),
|
||||||
[TrainerType.DRAYDEN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["DRAYDEN"],true, Type.DRAGON),
|
[TrainerType.DRAYDEN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["DRAYDEN"],true, Type.DRAGON),
|
||||||
[TrainerType.MARLON]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MARLON"],true, Type.WATER),
|
[TrainerType.MARLON]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MARLON"],true, Type.WATER),
|
||||||
[TrainerType.VIOLA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VIOLA"],false, Type.BUG).setMixedBattleBgm("battle_kalos_gym"),
|
[TrainerType.VIOLA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VIOLA"],false, Type.BUG),
|
||||||
[TrainerType.GRANT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRANT"],true, Type.ROCK).setMixedBattleBgm("battle_kalos_gym"),
|
[TrainerType.GRANT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRANT"],true, Type.ROCK),
|
||||||
[TrainerType.KORRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KORRINA"],false, Type.FIGHTING).setMixedBattleBgm("battle_kalos_gym"),
|
[TrainerType.KORRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KORRINA"],false, Type.FIGHTING),
|
||||||
[TrainerType.RAMOS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RAMOS"],true, Type.GRASS).setMixedBattleBgm("battle_kalos_gym"),
|
[TrainerType.RAMOS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RAMOS"],true, Type.GRASS),
|
||||||
[TrainerType.CLEMONT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CLEMONT"],true, Type.ELECTRIC).setMixedBattleBgm("battle_kalos_gym"),
|
[TrainerType.CLEMONT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CLEMONT"],true, Type.ELECTRIC),
|
||||||
[TrainerType.VALERIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VALERIE"],false, Type.FAIRY).setMixedBattleBgm("battle_kalos_gym"),
|
[TrainerType.VALERIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VALERIE"],false, Type.FAIRY),
|
||||||
[TrainerType.OLYMPIA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OLYMPIA"],false, Type.PSYCHIC).setMixedBattleBgm("battle_kalos_gym"),
|
[TrainerType.OLYMPIA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OLYMPIA"],false, Type.PSYCHIC),
|
||||||
[TrainerType.WULFRIC]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WULFRIC"],true, Type.ICE).setMixedBattleBgm("battle_kalos_gym"),
|
[TrainerType.WULFRIC]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WULFRIC"],true, Type.ICE),
|
||||||
[TrainerType.MILO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MILO"],true, Type.GRASS).setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.MILO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MILO"],true, Type.GRASS),
|
||||||
[TrainerType.NESSA]: new TrainerConfig(++t).setName("Nessa").initForGymLeader(signatureSpecies["NESSA"],false, Type.WATER).setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.NESSA]: new TrainerConfig(++t).setName("Nessa").initForGymLeader(signatureSpecies["NESSA"],false, Type.WATER),
|
||||||
[TrainerType.KABU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KABU"],true, Type.FIRE).setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.KABU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KABU"],true, Type.FIRE),
|
||||||
[TrainerType.BEA]: new TrainerConfig(++t).setName("Bea").initForGymLeader(signatureSpecies["BEA"],false, Type.FIGHTING).setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.BEA]: new TrainerConfig(++t).setName("Bea").initForGymLeader(signatureSpecies["BEA"],false, Type.FIGHTING),
|
||||||
[TrainerType.ALLISTER]: new TrainerConfig(++t).setName("Allister").initForGymLeader(signatureSpecies["ALLISTER"],true, Type.GHOST).setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.ALLISTER]: new TrainerConfig(++t).setName("Allister").initForGymLeader(signatureSpecies["ALLISTER"],true, Type.GHOST),
|
||||||
[TrainerType.OPAL]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OPAL"],false, Type.FAIRY).setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.OPAL]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OPAL"],false, Type.FAIRY),
|
||||||
[TrainerType.BEDE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BEDE"],true, Type.FAIRY).setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.BEDE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BEDE"],true, Type.FAIRY),
|
||||||
[TrainerType.GORDIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GORDIE"],true, Type.ROCK).setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.GORDIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GORDIE"],true, Type.ROCK),
|
||||||
[TrainerType.MELONY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MELONY"],false, Type.ICE).setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.MELONY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MELONY"],false, Type.ICE),
|
||||||
[TrainerType.PIERS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["PIERS"],true, Type.DARK).setHasDouble("piers_marnie_double").setDoubleTrainerType(TrainerType.MARNIE).setDoubleTitle("gym_leader_double").setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.PIERS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["PIERS"],true, Type.DARK).setHasDouble("piers_marnie_double").setDoubleTrainerType(TrainerType.MARNIE).setDoubleTitle("gym_leader_double"),
|
||||||
[TrainerType.MARNIE]: new TrainerConfig(++t).setName("Marnie").initForGymLeader(signatureSpecies["MARNIE"],false, Type.DARK).setHasDouble("marnie_piers_double").setDoubleTrainerType(TrainerType.PIERS).setDoubleTitle("gym_leader_double").setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.MARNIE]: new TrainerConfig(++t).setName("Marnie").initForGymLeader(signatureSpecies["MARNIE"],false, Type.DARK).setHasDouble("marnie_piers_double").setDoubleTrainerType(TrainerType.PIERS).setDoubleTitle("gym_leader_double"),
|
||||||
[TrainerType.RAIHAN]: new TrainerConfig(++t).setName("Raihan").initForGymLeader(signatureSpecies["RAIHAN"],true, Type.DRAGON).setMixedBattleBgm("battle_galar_gym"),
|
[TrainerType.RAIHAN]: new TrainerConfig(++t).setName("Raihan").initForGymLeader(signatureSpecies["RAIHAN"],true, Type.DRAGON),
|
||||||
[TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KATY"],false, Type.BUG).setMixedBattleBgm("battle_paldea_gym"),
|
[TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KATY"],false, Type.BUG),
|
||||||
[TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRASSIUS"],true, Type.GRASS).setMixedBattleBgm("battle_paldea_gym"),
|
[TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRASSIUS"],true, Type.GRASS),
|
||||||
[TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["IONO"],false, Type.ELECTRIC).setMixedBattleBgm("battle_paldea_gym"),
|
[TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["IONO"],false, Type.ELECTRIC),
|
||||||
[TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOFU"],true, Type.WATER).setMixedBattleBgm("battle_paldea_gym"),
|
[TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOFU"],true, Type.WATER),
|
||||||
[TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader(signatureSpecies["LARRY"],true, Type.NORMAL).setMixedBattleBgm("battle_paldea_gym"),
|
[TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader(signatureSpecies["LARRY"],true, Type.NORMAL),
|
||||||
[TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RYME"],false, Type.GHOST).setMixedBattleBgm("battle_paldea_gym"),
|
[TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RYME"],false, Type.GHOST),
|
||||||
[TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TULIP"],false, Type.PSYCHIC).setMixedBattleBgm("battle_paldea_gym"),
|
[TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TULIP"],false, Type.PSYCHIC),
|
||||||
[TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRUSHA"],true, Type.ICE).setMixedBattleBgm("battle_paldea_gym"),
|
[TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRUSHA"],true, Type.ICE),
|
||||||
|
|
||||||
[TrainerType.LORELEI]: new TrainerConfig((t = TrainerType.LORELEI)).initForEliteFour(signatureSpecies["LORELEI"],false, Type.ICE).setBattleBgm("battle_kanto_gym"),
|
[TrainerType.LORELEI]: new TrainerConfig((t = TrainerType.LORELEI)).initForEliteFour(signatureSpecies["LORELEI"],false, Type.ICE),
|
||||||
[TrainerType.BRUNO]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BRUNO"], true, Type.FIGHTING).setBattleBgm("battle_kanto_gym"),
|
[TrainerType.BRUNO]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BRUNO"], true, Type.FIGHTING),
|
||||||
[TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AGATHA"], false,Type.GHOST).setBattleBgm("battle_kanto_gym"),
|
[TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AGATHA"], false,Type.GHOST),
|
||||||
[TrainerType.LANCE]: new TrainerConfig(++t).setName("Lance").initForEliteFour(signatureSpecies["LANCE"],true, Type.DRAGON).setBattleBgm("battle_kanto_gym"),
|
[TrainerType.LANCE]: new TrainerConfig(++t).setName("Lance").initForEliteFour(signatureSpecies["LANCE"],true, Type.DRAGON),
|
||||||
[TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WILL"],true, Type.PSYCHIC).setBattleBgm("battle_johto_gym"),
|
[TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WILL"],true, Type.PSYCHIC),
|
||||||
[TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KOGA"], true, Type.POISON).setBattleBgm("battle_johto_gym"),
|
[TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KOGA"], true, Type.POISON),
|
||||||
[TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAREN"],false, Type.DARK).setBattleBgm("battle_johto_gym"),
|
[TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAREN"],false, Type.DARK),
|
||||||
[TrainerType.SIDNEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIDNEY"],true, Type.DARK).setMixedBattleBgm("battle_hoenn_elite"),
|
[TrainerType.SIDNEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIDNEY"],true, Type.DARK),
|
||||||
[TrainerType.PHOEBE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["PHOEBE"],false, Type.GHOST).setMixedBattleBgm("battle_hoenn_elite"),
|
[TrainerType.PHOEBE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["PHOEBE"],false, Type.GHOST),
|
||||||
[TrainerType.GLACIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GLACIA"],false, Type.ICE).setMixedBattleBgm("battle_hoenn_elite"),
|
[TrainerType.GLACIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GLACIA"],false, Type.ICE),
|
||||||
[TrainerType.DRAKE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAKE"],true, Type.DRAGON).setMixedBattleBgm("battle_hoenn_elite"),
|
[TrainerType.DRAKE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAKE"],true, Type.DRAGON),
|
||||||
[TrainerType.AARON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AARON"],true, Type.BUG).setBattleBgm("battle_sinnoh_gym"),
|
[TrainerType.AARON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AARON"],true, Type.BUG),
|
||||||
[TrainerType.BERTHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BERTHA"],false, Type.GROUND).setBattleBgm("battle_sinnoh_gym"),
|
[TrainerType.BERTHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BERTHA"],false, Type.GROUND),
|
||||||
[TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["FLINT"],true, Type.FIRE).setBattleBgm("battle_sinnoh_gym"),
|
[TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["FLINT"],true, Type.FIRE),
|
||||||
[TrainerType.LUCIAN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LUCIAN"], true,Type.PSYCHIC).setBattleBgm("battle_sinnoh_gym"),
|
[TrainerType.LUCIAN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LUCIAN"], true,Type.PSYCHIC),
|
||||||
[TrainerType.SHAUNTAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SHAUNTAL"],false, Type.GHOST),
|
[TrainerType.SHAUNTAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SHAUNTAL"],false, Type.GHOST),
|
||||||
[TrainerType.MARSHAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MARSHAL"],true, Type.FIGHTING),
|
[TrainerType.MARSHAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MARSHAL"],true, Type.FIGHTING),
|
||||||
[TrainerType.GRIMSLEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GRIMSLEY"],true, Type.DARK),
|
[TrainerType.GRIMSLEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GRIMSLEY"],true, Type.DARK),
|
||||||
[TrainerType.CAITLIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CAITLIN"],false, Type.PSYCHIC),
|
[TrainerType.CAITLIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CAITLIN"],false, Type.PSYCHIC),
|
||||||
[TrainerType.MALVA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MALVA"], false,Type.FIRE).setMixedBattleBgm("battle_kalos_elite"),
|
[TrainerType.MALVA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MALVA"], false,Type.FIRE),
|
||||||
[TrainerType.SIEBOLD]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIEBOLD"], true,Type.WATER).setMixedBattleBgm("battle_kalos_elite"),
|
[TrainerType.SIEBOLD]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIEBOLD"], true,Type.WATER),
|
||||||
[TrainerType.WIKSTROM]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WIKSTROM"],true, Type.STEEL).setMixedBattleBgm("battle_kalos_elite"),
|
[TrainerType.WIKSTROM]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WIKSTROM"],true, Type.STEEL),
|
||||||
[TrainerType.DRASNA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRASNA"],false, Type.DRAGON).setMixedBattleBgm("battle_kalos_elite"),
|
[TrainerType.DRASNA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRASNA"],false, Type.DRAGON),
|
||||||
[TrainerType.HALA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HALA"],true, Type.FIGHTING).setMixedBattleBgm("battle_alola_elite"),
|
[TrainerType.HALA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HALA"],true, Type.FIGHTING),
|
||||||
[TrainerType.MOLAYNE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MOLAYNE"],true, Type.STEEL).setMixedBattleBgm("battle_alola_elite"),
|
[TrainerType.MOLAYNE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MOLAYNE"],true, Type.STEEL),
|
||||||
[TrainerType.OLIVIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["OLIVIA"],false, Type.ROCK).setMixedBattleBgm("battle_alola_elite"),
|
[TrainerType.OLIVIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["OLIVIA"],false, Type.ROCK),
|
||||||
[TrainerType.ACEROLA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["ACEROLA"],false, Type.GHOST).setMixedBattleBgm("battle_alola_elite"),
|
[TrainerType.ACEROLA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["ACEROLA"],false, Type.GHOST),
|
||||||
[TrainerType.KAHILI]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAHILI"],false, Type.FLYING).setMixedBattleBgm("battle_alola_elite"),
|
[TrainerType.KAHILI]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAHILI"],false, Type.FLYING),
|
||||||
[TrainerType.MARNIE_ELITE]: new TrainerConfig(++t).setName("Marnie").initForEliteFour(signatureSpecies["MARNIE_ELITE"],false, Type.DARK).setMixedBattleBgm("battle_galar_elite"),
|
[TrainerType.MARNIE_ELITE]: new TrainerConfig(++t).setName("Marnie").initForEliteFour(signatureSpecies["MARNIE_ELITE"],false, Type.DARK),
|
||||||
[TrainerType.NESSA_ELITE]: new TrainerConfig(++t).setName("Nessa").initForEliteFour(signatureSpecies["NESSA_ELITE"],false, Type.WATER).setMixedBattleBgm("battle_galar_elite"),
|
[TrainerType.NESSA_ELITE]: new TrainerConfig(++t).setName("Nessa").initForEliteFour(signatureSpecies["NESSA_ELITE"],false, Type.WATER),
|
||||||
[TrainerType.BEA_ELITE]: new TrainerConfig(++t).setName("Bea").initForEliteFour(signatureSpecies["BEA_ELITE"],false, Type.FIGHTING).setMixedBattleBgm("battle_galar_elite"),
|
[TrainerType.BEA_ELITE]: new TrainerConfig(++t).setName("Bea").initForEliteFour(signatureSpecies["BEA_ELITE"],false, Type.FIGHTING),
|
||||||
[TrainerType.ALLISTER_ELITE]: new TrainerConfig(++t).setName("Allister").initForEliteFour(signatureSpecies["ALLISTER_ELITE"],true, Type.GHOST).setMixedBattleBgm("battle_galar_elite"),
|
[TrainerType.ALLISTER_ELITE]: new TrainerConfig(++t).setName("Allister").initForEliteFour(signatureSpecies["ALLISTER_ELITE"],true, Type.GHOST),
|
||||||
[TrainerType.RAIHAN_ELITE]: new TrainerConfig(++t).setName("Raihan").initForEliteFour(signatureSpecies["RAIHAN_ELITE"],true, Type.DRAGON).setMixedBattleBgm("battle_galar_elite"),
|
[TrainerType.RAIHAN_ELITE]: new TrainerConfig(++t).setName("Raihan").initForEliteFour(signatureSpecies["RAIHAN_ELITE"],true, Type.DRAGON),
|
||||||
[TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["RIKA"],false, Type.GROUND).setMixedBattleBgm("battle_paldea_elite"),
|
[TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["RIKA"],false, Type.GROUND),
|
||||||
[TrainerType.POPPY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["POPPY"],false, Type.STEEL).setMixedBattleBgm("battle_paldea_elite"),
|
[TrainerType.POPPY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["POPPY"],false, Type.STEEL),
|
||||||
[TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName("Larry").initForEliteFour(signatureSpecies["LARRY_ELITE"],true, Type.NORMAL, Type.FLYING).setMixedBattleBgm("battle_paldea_elite"),
|
[TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName("Larry").initForEliteFour(signatureSpecies["LARRY_ELITE"],true, Type.NORMAL, Type.FLYING),
|
||||||
[TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HASSEL"],true, Type.DRAGON).setMixedBattleBgm("battle_paldea_elite"),
|
[TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HASSEL"],true, Type.DRAGON),
|
||||||
[TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CRISPIN"],true, Type.FIRE).setMixedBattleBgm("battle_bb_elite"),
|
[TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CRISPIN"],true, Type.FIRE),
|
||||||
[TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AMARYS"],false, Type.STEEL).setMixedBattleBgm("battle_bb_elite"),
|
[TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AMARYS"],false, Type.STEEL),
|
||||||
[TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"],false, Type.FAIRY).setMixedBattleBgm("battle_bb_elite"),
|
[TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"],false, Type.FAIRY),
|
||||||
[TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAYTON"],true, Type.DRAGON).setMixedBattleBgm("battle_bb_elite"),
|
[TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAYTON"],true, Type.DRAGON),
|
||||||
|
|
||||||
[TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion(signatureSpecies["BLUE"],true).setBattleBgm("battle_kanto_champion").setHasDouble("blue_red_double").setDoubleTrainerType(TrainerType.RED).setDoubleTitle("champion_double")
|
[TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion(signatureSpecies["BLUE"],true).setBattleBgm("battle_kanto_champion").setHasDouble("blue_red_double").setDoubleTrainerType(TrainerType.RED).setDoubleTitle("champion_double")
|
||||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALAKAZAM], TrainerSlot.TRAINER, true, p => {
|
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALAKAZAM], TrainerSlot.TRAINER, true, p => {
|
||||||
@ -1281,7 +1275,7 @@ export const trainerConfigs: TrainerConfigs = {
|
|||||||
p.formIndex = 1;
|
p.formIndex = 1;
|
||||||
p.generateAndPopulateMoveset();
|
p.generateAndPopulateMoveset();
|
||||||
})),
|
})),
|
||||||
[TrainerType.DIANTHA]: new TrainerConfig(++t).initForChampion(signatureSpecies["DIANTHA"],false).setMixedBattleBgm("battle_kalos_champion")
|
[TrainerType.DIANTHA]: new TrainerConfig(++t).initForChampion(signatureSpecies["DIANTHA"],false)
|
||||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.GOURGEIST], TrainerSlot.TRAINER, true, p => {
|
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.GOURGEIST], TrainerSlot.TRAINER, true, p => {
|
||||||
p.generateAndPopulateMoveset();
|
p.generateAndPopulateMoveset();
|
||||||
}))
|
}))
|
||||||
@ -1289,11 +1283,11 @@ export const trainerConfigs: TrainerConfigs = {
|
|||||||
p.formIndex = 1;
|
p.formIndex = 1;
|
||||||
p.generateAndPopulateMoveset();
|
p.generateAndPopulateMoveset();
|
||||||
})),
|
})),
|
||||||
[TrainerType.HAU]: new TrainerConfig(++t).initForChampion(signatureSpecies["HAU"],true).setMixedBattleBgm("battle_alola_champion")
|
[TrainerType.HAU]: new TrainerConfig(++t).initForChampion(signatureSpecies["HAU"],true)
|
||||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALOLA_RAICHU], TrainerSlot.TRAINER, true, p => {
|
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALOLA_RAICHU], TrainerSlot.TRAINER, true, p => {
|
||||||
p.generateAndPopulateMoveset();
|
p.generateAndPopulateMoveset();
|
||||||
})),
|
})),
|
||||||
[TrainerType.LEON]: new TrainerConfig(++t).initForChampion(signatureSpecies["LEON"],true).setMixedBattleBgm("battle_galar_champion")
|
[TrainerType.LEON]: new TrainerConfig(++t).initForChampion(signatureSpecies["LEON"],true)
|
||||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.RILLABOOM, Species.CINDERACE, Species.INTELEON], TrainerSlot.TRAINER, true, p => {
|
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.RILLABOOM, Species.CINDERACE, Species.INTELEON], TrainerSlot.TRAINER, true, p => {
|
||||||
p.generateAndPopulateMoveset();
|
p.generateAndPopulateMoveset();
|
||||||
}))
|
}))
|
||||||
@ -1301,15 +1295,15 @@ export const trainerConfigs: TrainerConfigs = {
|
|||||||
p.formIndex = 3;
|
p.formIndex = 3;
|
||||||
p.generateAndPopulateMoveset();
|
p.generateAndPopulateMoveset();
|
||||||
})),
|
})),
|
||||||
[TrainerType.GEETA]: new TrainerConfig(++t).initForChampion(signatureSpecies["GEETA"],false).setMixedBattleBgm("battle_champion_geeta")
|
[TrainerType.GEETA]: new TrainerConfig(++t).initForChampion(signatureSpecies["GEETA"],false)
|
||||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.GLIMMORA], TrainerSlot.TRAINER, true, p => {
|
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.GLIMMORA], TrainerSlot.TRAINER, true, p => {
|
||||||
p.generateAndPopulateMoveset();
|
p.generateAndPopulateMoveset();
|
||||||
})),
|
})),
|
||||||
[TrainerType.NEMONA]: new TrainerConfig(++t).initForChampion(signatureSpecies["NEMONA"],false).setMixedBattleBgm("battle_champion_nemona")
|
[TrainerType.NEMONA]: new TrainerConfig(++t).initForChampion(signatureSpecies["NEMONA"],false)
|
||||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.LYCANROC], TrainerSlot.TRAINER, true, p => {
|
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.LYCANROC], TrainerSlot.TRAINER, true, p => {
|
||||||
p.generateAndPopulateMoveset();
|
p.generateAndPopulateMoveset();
|
||||||
})),
|
})),
|
||||||
[TrainerType.KIERAN]: new TrainerConfig(++t).initForChampion(signatureSpecies["KIERAN"],true).setMixedBattleBgm("battle_champion_kieran")
|
[TrainerType.KIERAN]: new TrainerConfig(++t).initForChampion(signatureSpecies["KIERAN"],true)
|
||||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.POLIWRATH, Species.POLITOED], TrainerSlot.TRAINER, true, p => {
|
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.POLIWRATH, Species.POLITOED], TrainerSlot.TRAINER, true, p => {
|
||||||
p.generateAndPopulateMoveset();
|
p.generateAndPopulateMoveset();
|
||||||
})),
|
})),
|
||||||
|
@ -857,11 +857,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
if (!ignoreOverride && this.summonData?.types) {
|
if (!ignoreOverride && this.summonData?.types) {
|
||||||
this.summonData.types.forEach(t => types.push(t));
|
this.summonData.types.forEach(t => types.push(t));
|
||||||
} else {
|
} else {
|
||||||
const speciesForm = this.getSpeciesForm(ignoreOverride);
|
const speciesForm = this.getSpeciesForm();
|
||||||
|
|
||||||
types.push(speciesForm.type1);
|
types.push(speciesForm.type1);
|
||||||
|
|
||||||
const fusionSpeciesForm = this.getFusionSpeciesForm(ignoreOverride);
|
const fusionSpeciesForm = this.getFusionSpeciesForm();
|
||||||
if (fusionSpeciesForm) {
|
if (fusionSpeciesForm) {
|
||||||
if (fusionSpeciesForm.type2 !== null && fusionSpeciesForm.type2 !== speciesForm.type1) {
|
if (fusionSpeciesForm.type2 !== null && fusionSpeciesForm.type2 !== speciesForm.type1) {
|
||||||
types.push(fusionSpeciesForm.type2);
|
types.push(fusionSpeciesForm.type2);
|
||||||
|
@ -166,10 +166,6 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
|||||||
return this.config.doubleOnly || this.variant === TrainerVariant.DOUBLE;
|
return this.config.doubleOnly || this.variant === TrainerVariant.DOUBLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
getMixedBattleBgm(): string {
|
|
||||||
return this.config.mixedBattleBgm;
|
|
||||||
}
|
|
||||||
|
|
||||||
getBattleBgm(): string {
|
getBattleBgm(): string {
|
||||||
return this.config.battleBgm;
|
return this.config.battleBgm;
|
||||||
}
|
}
|
||||||
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
|||||||
"selectMoveSwapWith": "Select a move to swap with",
|
"selectMoveSwapWith": "Select a move to swap with",
|
||||||
"unlockPassive": "Unlock Passive",
|
"unlockPassive": "Unlock Passive",
|
||||||
"reduceCost": "Reduce Cost",
|
"reduceCost": "Reduce Cost",
|
||||||
"cycleShiny": ": Cycle Shiny",
|
"cycleShiny": "R: Cycle Shiny",
|
||||||
"cycleForm": ": Cycle Form",
|
"cycleForm": "F: Cycle Form",
|
||||||
"cycleGender": ": Cycle Gender",
|
"cycleGender": "G: Cycle Gender",
|
||||||
"cycleAbility": ": Cycle Ability",
|
"cycleAbility": "E: Cycle Ability",
|
||||||
"cycleNature": ": Cycle Nature",
|
"cycleNature": "N: Cycle Nature",
|
||||||
"cycleVariant": ": Cycle Variant",
|
"cycleVariant": "V: Cycle Variant",
|
||||||
"enablePassive": "Enable Passive",
|
"enablePassive": "Enable Passive",
|
||||||
"disablePassive": "Disable Passive",
|
"disablePassive": "Disable Passive",
|
||||||
"locked": "Locked",
|
"locked": "Locked",
|
||||||
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
|||||||
"selectMoveSwapWith": "Elige el movimiento que sustituirá a",
|
"selectMoveSwapWith": "Elige el movimiento que sustituirá a",
|
||||||
"unlockPassive": "Añadir Pasiva",
|
"unlockPassive": "Añadir Pasiva",
|
||||||
"reduceCost": "Reducir Coste",
|
"reduceCost": "Reducir Coste",
|
||||||
"cycleShiny": ": Cambiar Shiny",
|
"cycleShiny": "R: Cambiar Shiny",
|
||||||
"cycleForm": ": Cambiar Forma",
|
"cycleForm": "F: Cambiar Forma",
|
||||||
"cycleGender": ": Cambiar Género",
|
"cycleGender": "G: Cambiar Género",
|
||||||
"cycleAbility": ": Cambiar Habilidad",
|
"cycleAbility": "E: Cambiar Habilidad",
|
||||||
"cycleNature": ": Cambiar Naturaleza",
|
"cycleNature": "N: Cambiar Naturaleza",
|
||||||
"cycleVariant": ": Cambiar Variante",
|
"cycleVariant": "V: Cambiar Variante",
|
||||||
"enablePassive": "Activar Pasiva",
|
"enablePassive": "Activar Pasiva",
|
||||||
"disablePassive": "Desactivar Pasiva",
|
"disablePassive": "Desactivar Pasiva",
|
||||||
"locked": "Bloqueado",
|
"locked": "Bloqueado",
|
||||||
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
|||||||
"selectMoveSwapWith": "Sélectionnez laquelle échanger avec",
|
"selectMoveSwapWith": "Sélectionnez laquelle échanger avec",
|
||||||
"unlockPassive": "Débloquer Passif",
|
"unlockPassive": "Débloquer Passif",
|
||||||
"reduceCost": "Diminuer le cout",
|
"reduceCost": "Diminuer le cout",
|
||||||
"cycleShiny": ": » Chromatiques",
|
"cycleShiny": "R: » Chromatiques",
|
||||||
"cycleForm": ": » Formes",
|
"cycleForm": "F: » Formes",
|
||||||
"cycleGender": ": » Sexes",
|
"cycleGender": "G: » Sexes",
|
||||||
"cycleAbility": ": » Talents",
|
"cycleAbility": "E: » Talents",
|
||||||
"cycleNature": ": » Natures",
|
"cycleNature": "N: » Natures",
|
||||||
"cycleVariant": ": » Variants",
|
"cycleVariant": "V: » Variants",
|
||||||
"enablePassive": "Activer Passif",
|
"enablePassive": "Activer Passif",
|
||||||
"disablePassive": "Désactiver Passif",
|
"disablePassive": "Désactiver Passif",
|
||||||
"locked": "Verrouillé",
|
"locked": "Verrouillé",
|
||||||
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
|||||||
"selectMoveSwapWith": "Seleziona una mossa da scambiare con",
|
"selectMoveSwapWith": "Seleziona una mossa da scambiare con",
|
||||||
"unlockPassive": "Sblocca Passiva",
|
"unlockPassive": "Sblocca Passiva",
|
||||||
"reduceCost": "Riduci Costo",
|
"reduceCost": "Riduci Costo",
|
||||||
"cycleShiny": ": Alterna Shiny",
|
"cycleShiny": "R: Alterna Shiny",
|
||||||
"cycleForm": ": Alterna Forma",
|
"cycleForm": "F: Alterna Forma",
|
||||||
"cycleGender": ": Alterna Sesso",
|
"cycleGender": "G: Alterna Sesso",
|
||||||
"cycleAbility": ": Alterna Abilità",
|
"cycleAbility": "E: Alterna Abilità",
|
||||||
"cycleNature": ": Alterna Natura",
|
"cycleNature": "N: Alterna Natura",
|
||||||
"cycleVariant": ": Alterna Variante",
|
"cycleVariant": "V: Alterna Variante",
|
||||||
"enablePassive": "Attiva Passiva",
|
"enablePassive": "Attiva Passiva",
|
||||||
"disablePassive": "Disattiva Passiva",
|
"disablePassive": "Disattiva Passiva",
|
||||||
"locked": "Bloccato",
|
"locked": "Bloccato",
|
||||||
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
|||||||
"selectMoveSwapWith": "교체될 기술을 선택해주세요. 대상:",
|
"selectMoveSwapWith": "교체될 기술을 선택해주세요. 대상:",
|
||||||
"unlockPassive": "패시브 해금",
|
"unlockPassive": "패시브 해금",
|
||||||
"reduceCost": "코스트 줄이기",
|
"reduceCost": "코스트 줄이기",
|
||||||
"cycleShiny": ": 특별한 색",
|
"cycleShiny": "R: 특별한 색",
|
||||||
"cycleForm": ": 폼 체인지",
|
"cycleForm": "F: 폼 체인지",
|
||||||
"cycleGender": ": 암수 전환",
|
"cycleGender": "G: 암수 전환",
|
||||||
"cycleAbility": ": 특성 전환",
|
"cycleAbility": "E: 특성 전환",
|
||||||
"cycleNature": ": 성격 전환",
|
"cycleNature": "N: 성격 전환",
|
||||||
"cycleVariant": ": 색상 전환",
|
"cycleVariant": "V: 색상 전환",
|
||||||
"enablePassive": "패시브 활성화",
|
"enablePassive": "패시브 활성화",
|
||||||
"disablePassive": "패시브 비활성화",
|
"disablePassive": "패시브 비활성화",
|
||||||
"locked": "잠김",
|
"locked": "잠김",
|
||||||
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
|||||||
"selectMoveSwapWith": "Escolha o movimento que substituirá",
|
"selectMoveSwapWith": "Escolha o movimento que substituirá",
|
||||||
"unlockPassive": "Aprender Passiva",
|
"unlockPassive": "Aprender Passiva",
|
||||||
"reduceCost": "Reduzir Custo",
|
"reduceCost": "Reduzir Custo",
|
||||||
"cycleShiny": ": » Shiny",
|
"cycleShiny": "R: » Shiny",
|
||||||
"cycleForm": ": » Forma",
|
"cycleForm": "F: » Forma",
|
||||||
"cycleGender": ": » Gênero",
|
"cycleGender": "G: » Gênero",
|
||||||
"cycleAbility": ": » Habilidade",
|
"cycleAbility": "E: » Habilidade",
|
||||||
"cycleNature": ": » Natureza",
|
"cycleNature": "N: » Natureza",
|
||||||
"cycleVariant": ": » Variante",
|
"cycleVariant": "V: » Variante",
|
||||||
"enablePassive": "Ativar Passiva",
|
"enablePassive": "Ativar Passiva",
|
||||||
"disablePassive": "Desativar Passiva",
|
"disablePassive": "Desativar Passiva",
|
||||||
"locked": "Bloqueada",
|
"locked": "Bloqueada",
|
||||||
|
@ -1,67 +1,67 @@
|
|||||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||||
|
|
||||||
export const challenges: SimpleTranslationEntries = {
|
export const challenges: SimpleTranslationEntries = {
|
||||||
"title": "适用挑战条件",
|
"title": "Challenge Modifiers",
|
||||||
"points": "Bad Ideas",
|
"points": "Bad Ideas",
|
||||||
"confirm_start": "要执行这些挑战吗?",
|
"confirm_start": "Proceed with these challenges?",
|
||||||
"singleGeneration.name": "单一世代",
|
"singleGeneration.name": "Mono Gen",
|
||||||
"singleGeneration.value.0": "关闭",
|
"singleGeneration.value.0": "Off",
|
||||||
"singleGeneration.desc.0": "你只能使用所选世代的宝可梦",
|
"singleGeneration.desc.0": "You can only use pokemon from the chosen generation.",
|
||||||
"singleGeneration.value.1": "第一世代",
|
"singleGeneration.value.1": "Gen 1",
|
||||||
"singleGeneration.desc.1": "你只能使用第一世代的宝可梦",
|
"singleGeneration.desc.1": "You can only use pokemon from generation one.",
|
||||||
"singleGeneration.value.2": "第二世代",
|
"singleGeneration.value.2": "Gen 2",
|
||||||
"singleGeneration.desc.2": "你只能使用第二世代的宝可梦",
|
"singleGeneration.desc.2": "You can only use pokemon from generation two.",
|
||||||
"singleGeneration.value.3": "第三世代",
|
"singleGeneration.value.3": "Gen 3",
|
||||||
"singleGeneration.desc.3": "你只能使用第三世代的宝可梦",
|
"singleGeneration.desc.3": "You can only use pokemon from generation three.",
|
||||||
"singleGeneration.value.4": "第四世代",
|
"singleGeneration.value.4": "Gen 4",
|
||||||
"singleGeneration.desc.4": "你只能使用第四世代的宝可梦",
|
"singleGeneration.desc.4": "You can only use pokemon from generation four.",
|
||||||
"singleGeneration.value.5": "第五世代",
|
"singleGeneration.value.5": "Gen 5",
|
||||||
"singleGeneration.desc.5": "你只能使用第五世代的宝可梦",
|
"singleGeneration.desc.5": "You can only use pokemon from generation five.",
|
||||||
"singleGeneration.value.6": "第六世代",
|
"singleGeneration.value.6": "Gen 6",
|
||||||
"singleGeneration.desc.6": "你只能使用第六世代的宝可梦",
|
"singleGeneration.desc.6": "You can only use pokemon from generation six.",
|
||||||
"singleGeneration.value.7": "第七世代",
|
"singleGeneration.value.7": "Gen 7",
|
||||||
"singleGeneration.desc.7": "你只能使用第七世代的宝可梦",
|
"singleGeneration.desc.7": "You can only use pokemon from generation seven.",
|
||||||
"singleGeneration.value.8": "第八世代",
|
"singleGeneration.value.8": "Gen 8",
|
||||||
"singleGeneration.desc.8": "你只能使用第八世代的宝可梦",
|
"singleGeneration.desc.8": "You can only use pokemon from generation eight.",
|
||||||
"singleGeneration.value.9": "第久世代",
|
"singleGeneration.value.9": "Gen 9",
|
||||||
"singleGeneration.desc.9": "你只能使用第九世代的宝可梦",
|
"singleGeneration.desc.9": "You can only use pokemon from generation nine.",
|
||||||
"singleType.name": "单属性",
|
"singleType.name": "Mono Type",
|
||||||
"singleType.value.0": "关闭",
|
"singleType.value.0": "Off",
|
||||||
"singleType.desc.0": "你只能使用所选属性的宝可梦",
|
"singleType.desc.0": "You can only use pokemon of the chosen type.",
|
||||||
"singleType.value.1": "普通",
|
"singleType.value.1": "Normal",
|
||||||
"singleType.desc.1": "你只能使用普通属性的宝可梦",
|
"singleType.desc.1": "You can only use pokemon with the Normal type.",
|
||||||
"singleType.value.2": "格斗",
|
"singleType.value.2": "Fighting",
|
||||||
"singleType.desc.2": "你只能使用格斗属性的宝可梦",
|
"singleType.desc.2": "You can only use pokemon with the Fighting type.",
|
||||||
"singleType.value.3": "飞行",
|
"singleType.value.3": "Flying",
|
||||||
"singleType.desc.3": "你只能使用飞行属性的宝可梦",
|
"singleType.desc.3": "You can only use pokemon with the Flying type.",
|
||||||
"singleType.value.4": "毒",
|
"singleType.value.4": "Poison",
|
||||||
"singleType.desc.4": "你只能使用毒属性的宝可梦",
|
"singleType.desc.4": "You can only use pokemon with the Poison type.",
|
||||||
"singleType.value.5": "地面",
|
"singleType.value.5": "Ground",
|
||||||
"singleType.desc.5": "你只能使用地面属性的宝可梦",
|
"singleType.desc.5": "You can only use pokemon with the Ground type.",
|
||||||
"singleType.value.6": "岩石",
|
"singleType.value.6": "Rock",
|
||||||
"singleType.desc.6": "你只能使用所选属性的宝可梦",
|
"singleType.desc.6": "You can only use pokemon with the Rock type.",
|
||||||
"singleType.value.7": "虫",
|
"singleType.value.7": "Bug",
|
||||||
"singleType.desc.7": "你只能使用虫属性的宝可梦",
|
"singleType.desc.7": "You can only use pokemon with the Bug type.",
|
||||||
"singleType.value.8": "幽灵",
|
"singleType.value.8": "Ghost",
|
||||||
"singleType.desc.8": "你只能使用幽灵属性的宝可梦",
|
"singleType.desc.8": "You can only use pokemon with the Ghost type.",
|
||||||
"singleType.value.9": "钢",
|
"singleType.value.9": "Steel",
|
||||||
"singleType.desc.9": "你只能使用钢属性的宝可梦",
|
"singleType.desc.9": "You can only use pokemon with the Steel type.",
|
||||||
"singleType.value.10": "火",
|
"singleType.value.10": "Fire",
|
||||||
"singleType.desc.10": "你只能使用火属性的宝可梦",
|
"singleType.desc.10": "You can only use pokemon with the Fire type.",
|
||||||
"singleType.value.11": "水",
|
"singleType.value.11": "Water",
|
||||||
"singleType.desc.11": "你只能使用水属性的宝可梦",
|
"singleType.desc.11": "You can only use pokemon with the Water type.",
|
||||||
"singleType.value.12": "草",
|
"singleType.value.12": "Grass",
|
||||||
"singleType.desc.12": "你只能使用草属性的宝可梦",
|
"singleType.desc.12": "You can only use pokemon with the Grass type.",
|
||||||
"singleType.value.13": "电",
|
"singleType.value.13": "Electric",
|
||||||
"singleType.desc.13": "你只能使用电属性的宝可梦",
|
"singleType.desc.13": "You can only use pokemon with the Electric type.",
|
||||||
"singleType.value.14": "超能",
|
"singleType.value.14": "Psychic",
|
||||||
"singleType.desc.14": "你只能使用超能属性的宝可梦",
|
"singleType.desc.14": "You can only use pokemon with the Psychic type.",
|
||||||
"singleType.value.15": "冰",
|
"singleType.value.15": "Ice",
|
||||||
"singleType.desc.15": "你只能使用冰属性的宝可梦",
|
"singleType.desc.15": "You can only use pokemon with the Ice type.",
|
||||||
"singleType.value.16": "龙",
|
"singleType.value.16": "Dragon",
|
||||||
"singleType.desc.16": "你只能使用龙属性的宝可梦",
|
"singleType.desc.16": "You can only use pokemon with the Dragon type.",
|
||||||
"singleType.value.17": "恶",
|
"singleType.value.17": "Dark",
|
||||||
"singleType.desc.17": "你只能使用恶属性的宝可梦",
|
"singleType.desc.17": "You can only use pokemon with the Dark type.",
|
||||||
"singleType.value.18": "妖精",
|
"singleType.value.18": "Fairy",
|
||||||
"singleType.desc.18": "你只能使用妖精属性的宝可梦",
|
"singleType.desc.18": "You can only use pokemon with the Fairy type.",
|
||||||
} as const;
|
} as const;
|
||||||
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
|||||||
"selectMoveSwapWith": "选择要替换成的招式",
|
"selectMoveSwapWith": "选择要替换成的招式",
|
||||||
"unlockPassive": "解锁被动",
|
"unlockPassive": "解锁被动",
|
||||||
"reduceCost": "降低花费",
|
"reduceCost": "降低花费",
|
||||||
"cycleShiny": ": 切换闪光",
|
"cycleShiny": "R: 切换闪光",
|
||||||
"cycleForm": ": 切换形态",
|
"cycleForm": "F: 切换形态",
|
||||||
"cycleGender": ": 切换性别",
|
"cycleGender": "G: 切换性别",
|
||||||
"cycleAbility": ": 切换特性",
|
"cycleAbility": "E: 切换特性",
|
||||||
"cycleNature": ": 切换性格",
|
"cycleNature": "N: 切换性格",
|
||||||
"cycleVariant": ": 切换变种",
|
"cycleVariant": "V: 切换变种",
|
||||||
"enablePassive": "启用被动",
|
"enablePassive": "启用被动",
|
||||||
"disablePassive": "禁用被动",
|
"disablePassive": "禁用被动",
|
||||||
"locked": "未解锁",
|
"locked": "未解锁",
|
||||||
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
|||||||
"selectMoveSwapWith": "選擇想要替換成的招式",
|
"selectMoveSwapWith": "選擇想要替換成的招式",
|
||||||
"unlockPassive": "解鎖被動",
|
"unlockPassive": "解鎖被動",
|
||||||
"reduceCost": "降低花費",
|
"reduceCost": "降低花費",
|
||||||
"cycleShiny": ": 切換閃光",
|
"cycleShiny": "R: 切換閃光",
|
||||||
"cycleForm": ": 切換形態",
|
"cycleForm": "F: 切換形態",
|
||||||
"cycleGender": ": 切換性別",
|
"cycleGender": "G: 切換性別",
|
||||||
"cycleAbility": ": 切換特性",
|
"cycleAbility": "E: 切換特性",
|
||||||
"cycleNature": ": 切換性格",
|
"cycleNature": "N: 切換性格",
|
||||||
"cycleVariant": ": 切換變種",
|
"cycleVariant": "V: 切換變種",
|
||||||
"enablePassive": "啟用被動",
|
"enablePassive": "啟用被動",
|
||||||
"disablePassive": "禁用被動",
|
"disablePassive": "禁用被動",
|
||||||
"locked": "未解鎖",
|
"locked": "未解鎖",
|
||||||
|
@ -70,14 +70,12 @@ function simulateKeyboardEvent(eventType: string, key: string, events: EventEmit
|
|||||||
events.emit("input_down", {
|
events.emit("input_down", {
|
||||||
controller_type: "keyboard",
|
controller_type: "keyboard",
|
||||||
button: button,
|
button: button,
|
||||||
isTouch: true
|
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "keyup":
|
case "keyup":
|
||||||
events.emit("input_up", {
|
events.emit("input_up", {
|
||||||
controller_type: "keyboard",
|
controller_type: "keyboard",
|
||||||
button: button,
|
button: button,
|
||||||
isTouch: true
|
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -30,23 +30,8 @@ export class UiInputs {
|
|||||||
this.listenInputs();
|
this.listenInputs();
|
||||||
}
|
}
|
||||||
|
|
||||||
detectInputMethod(evt): void {
|
|
||||||
if (evt.controller_type === "keyboard") {
|
|
||||||
//if the touch property is present and defined, then this is a simulated keyboard event from the touch screen
|
|
||||||
if (evt.hasOwnProperty("isTouch") && evt.isTouch) {
|
|
||||||
this.scene.inputMethod = "touch";
|
|
||||||
} else {
|
|
||||||
this.scene.inputMethod = "keyboard";
|
|
||||||
}
|
|
||||||
} else if (evt.controller_type === "gamepad") {
|
|
||||||
this.scene.inputMethod = "gamepad";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
listenInputs(): void {
|
listenInputs(): void {
|
||||||
this.events.on("input_down", (event) => {
|
this.events.on("input_down", (event) => {
|
||||||
this.detectInputMethod(event);
|
|
||||||
|
|
||||||
const actions = this.getActionsKeyDown();
|
const actions = this.getActionsKeyDown();
|
||||||
if (!actions.hasOwnProperty(event.button)) {
|
if (!actions.hasOwnProperty(event.button)) {
|
||||||
return;
|
return;
|
||||||
|
@ -31,8 +31,6 @@ import { StatsContainer } from "./stats-container";
|
|||||||
import { TextStyle, addBBCodeTextObject, addTextObject } from "./text";
|
import { TextStyle, addBBCodeTextObject, addTextObject } from "./text";
|
||||||
import { Mode } from "./ui";
|
import { Mode } from "./ui";
|
||||||
import { addWindow } from "./ui-theme";
|
import { addWindow } from "./ui-theme";
|
||||||
import {SettingKeyboard} from "#app/system/settings/settings-keyboard";
|
|
||||||
import {Device} from "#app/enums/devices";
|
|
||||||
import * as Challenge from "../data/challenge";
|
import * as Challenge from "../data/challenge";
|
||||||
import MoveInfoOverlay from "./move-info-overlay";
|
import MoveInfoOverlay from "./move-info-overlay";
|
||||||
|
|
||||||
@ -58,7 +56,7 @@ interface LanguageSetting {
|
|||||||
const languageSettings: { [key: string]: LanguageSetting } = {
|
const languageSettings: { [key: string]: LanguageSetting } = {
|
||||||
"en":{
|
"en":{
|
||||||
starterInfoTextSize: "56px",
|
starterInfoTextSize: "56px",
|
||||||
instructionTextSize: "38px",
|
instructionTextSize: "42px",
|
||||||
},
|
},
|
||||||
"de":{
|
"de":{
|
||||||
starterInfoTextSize: "56px",
|
starterInfoTextSize: "56px",
|
||||||
@ -191,7 +189,6 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
private pokemonCaughtCountText: Phaser.GameObjects.Text;
|
private pokemonCaughtCountText: Phaser.GameObjects.Text;
|
||||||
private pokemonHatchedCountText: Phaser.GameObjects.Text;
|
private pokemonHatchedCountText: Phaser.GameObjects.Text;
|
||||||
private genOptionsText: Phaser.GameObjects.Text;
|
private genOptionsText: Phaser.GameObjects.Text;
|
||||||
private instructionsContainer: Phaser.GameObjects.Container;
|
|
||||||
private instructionsText: Phaser.GameObjects.Text;
|
private instructionsText: Phaser.GameObjects.Text;
|
||||||
private starterSelectMessageBox: Phaser.GameObjects.NineSlice;
|
private starterSelectMessageBox: Phaser.GameObjects.NineSlice;
|
||||||
private starterSelectMessageBoxContainer: Phaser.GameObjects.Container;
|
private starterSelectMessageBoxContainer: Phaser.GameObjects.Container;
|
||||||
@ -248,11 +245,6 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
|
|
||||||
private iconAnimHandler: PokemonIconAnimHandler;
|
private iconAnimHandler: PokemonIconAnimHandler;
|
||||||
|
|
||||||
//variables to keep track of the dynamically rendered list of instruction prompts for starter select
|
|
||||||
private instructionRowX = 0;
|
|
||||||
private instructionRowY = 0;
|
|
||||||
private instructionRowTextOffset = 12;
|
|
||||||
|
|
||||||
private starterSelectCallback: StarterSelectCallback;
|
private starterSelectCallback: StarterSelectCallback;
|
||||||
|
|
||||||
protected blockInput: boolean = false;
|
protected blockInput: boolean = false;
|
||||||
@ -654,9 +646,10 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
this.starterSelectContainer.add(this.pokemonEggMovesContainer);
|
this.starterSelectContainer.add(this.pokemonEggMovesContainer);
|
||||||
|
|
||||||
// The font size should be set per language
|
// The font size should be set per language
|
||||||
this.instructionsContainer = this.scene.add.container(4, 156);
|
const instructionTextSize = textSettings.instructionTextSize;
|
||||||
this.instructionsContainer.setVisible(true);
|
|
||||||
this.starterSelectContainer.add(this.instructionsContainer);
|
this.instructionsText = addTextObject(this.scene, 4, 156, "", TextStyle.PARTY, { fontSize: instructionTextSize });
|
||||||
|
this.starterSelectContainer.add(this.instructionsText);
|
||||||
|
|
||||||
this.starterSelectMessageBoxContainer = this.scene.add.container(0, this.scene.game.canvas.height / 6);
|
this.starterSelectMessageBoxContainer = this.scene.add.container(0, this.scene.game.canvas.height / 6);
|
||||||
this.starterSelectMessageBoxContainer.setVisible(false);
|
this.starterSelectMessageBoxContainer.setVisible(false);
|
||||||
@ -1492,84 +1485,45 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
this.setSpeciesDetails(this.lastSpecies, undefined, undefined, undefined, undefined, undefined, undefined, false);
|
this.setSpeciesDetails(this.lastSpecies, undefined, undefined, undefined, undefined, undefined, undefined, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
createButtonFromIconText(iconSetting, gamepadType, translatedText, instructionTextSize): void {
|
|
||||||
let iconPath;
|
|
||||||
// touch controls cannot be rebound as is, and are just emulating a keyboard event.
|
|
||||||
// Additionally, since keyboard controls can be rebound (and will be displayed when they are), we need to have special handling for the touch controls
|
|
||||||
if (gamepadType === "touch") {
|
|
||||||
gamepadType = "keyboard";
|
|
||||||
switch (iconSetting) {
|
|
||||||
case SettingKeyboard.Button_Cycle_Shiny:
|
|
||||||
iconPath = "R.png";
|
|
||||||
break;
|
|
||||||
case SettingKeyboard.Button_Cycle_Form:
|
|
||||||
iconPath = "F.png";
|
|
||||||
break;
|
|
||||||
case SettingKeyboard.Button_Cycle_Gender:
|
|
||||||
iconPath = "G.png";
|
|
||||||
break;
|
|
||||||
case SettingKeyboard.Button_Cycle_Ability:
|
|
||||||
iconPath = "E.png";
|
|
||||||
break;
|
|
||||||
case SettingKeyboard.Button_Cycle_Nature:
|
|
||||||
iconPath = "N.png";
|
|
||||||
break;
|
|
||||||
case SettingKeyboard.Button_Cycle_Variant:
|
|
||||||
iconPath = "V.png";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
iconPath = this.scene.inputController?.getIconForLatestInputRecorded(iconSetting);
|
|
||||||
}
|
|
||||||
const iconElement = this.scene.add.sprite(this.instructionRowX, this.instructionRowY, gamepadType, iconPath);
|
|
||||||
iconElement.setScale(0.675);
|
|
||||||
iconElement.setOrigin(0.0, 0.0);
|
|
||||||
const controlLabel = addTextObject(this.scene, this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, translatedText, TextStyle.PARTY, { fontSize: instructionTextSize });
|
|
||||||
this.instructionsContainer.add([iconElement, controlLabel]);
|
|
||||||
this.instructionRowY += 8;
|
|
||||||
if (this.instructionRowY >= 24) {
|
|
||||||
this.instructionRowY = 0;
|
|
||||||
this.instructionRowX += 50;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateInstructions(): void {
|
updateInstructions(): void {
|
||||||
const currentLanguage = i18next.resolvedLanguage;
|
const instructionLines = [ ];
|
||||||
const langSettingKey = Object.keys(languageSettings).find(lang => currentLanguage.includes(lang));
|
const cycleInstructionLines = [];
|
||||||
const textSettings = languageSettings[langSettingKey];
|
|
||||||
const instructionTextSize = textSettings.instructionTextSize;
|
|
||||||
this.instructionRowX = 0;
|
|
||||||
this.instructionRowY = 0;
|
|
||||||
this.instructionsContainer.removeAll();
|
|
||||||
let gamepadType;
|
|
||||||
if (this.scene.inputMethod === "gamepad") {
|
|
||||||
gamepadType = this.scene.inputController.getConfig(this.scene.inputController.selectedDevice[Device.GAMEPAD]).padType;
|
|
||||||
} else {
|
|
||||||
gamepadType = this.scene.inputMethod;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.speciesStarterDexEntry?.caughtAttr) {
|
if (this.speciesStarterDexEntry?.caughtAttr) {
|
||||||
if (this.canCycleShiny) {
|
if (this.canCycleShiny) {
|
||||||
this.createButtonFromIconText(SettingKeyboard.Button_Cycle_Shiny, gamepadType, i18next.t("starterSelectUiHandler:cycleShiny"), instructionTextSize);
|
cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleShiny"));
|
||||||
}
|
}
|
||||||
if (this.canCycleForm) {
|
if (this.canCycleForm) {
|
||||||
this.createButtonFromIconText(SettingKeyboard.Button_Cycle_Form, gamepadType, i18next.t("starterSelectUiHandler:cycleForm"), instructionTextSize);
|
cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleForm"));
|
||||||
}
|
}
|
||||||
if (this.canCycleGender) {
|
if (this.canCycleGender) {
|
||||||
this.createButtonFromIconText(SettingKeyboard.Button_Cycle_Gender, gamepadType, i18next.t("starterSelectUiHandler:cycleGender"), instructionTextSize);
|
cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleGender"));
|
||||||
}
|
}
|
||||||
if (this.canCycleAbility) {
|
if (this.canCycleAbility) {
|
||||||
this.createButtonFromIconText(SettingKeyboard.Button_Cycle_Ability, gamepadType, i18next.t("starterSelectUiHandler:cycleAbility"), instructionTextSize);
|
cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleAbility"));
|
||||||
}
|
}
|
||||||
if (this.canCycleNature) {
|
if (this.canCycleNature) {
|
||||||
this.createButtonFromIconText(SettingKeyboard.Button_Cycle_Nature, gamepadType, i18next.t("starterSelectUiHandler:cycleNature"), instructionTextSize);
|
cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleNature"));
|
||||||
}
|
}
|
||||||
if (this.canCycleVariant) {
|
if (this.canCycleVariant) {
|
||||||
this.createButtonFromIconText(SettingKeyboard.Button_Cycle_Variant, gamepadType, i18next.t("starterSelectUiHandler:cycleVariant"), instructionTextSize);
|
cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleVariant"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cycleInstructionLines.length > 2) {
|
||||||
|
cycleInstructionLines[0] += " | " + cycleInstructionLines.splice(1, 1);
|
||||||
|
if (cycleInstructionLines.length > 2) {
|
||||||
|
cycleInstructionLines[1] += " | " + cycleInstructionLines.splice(2, 1);
|
||||||
|
}
|
||||||
|
if (cycleInstructionLines.length > 2) {
|
||||||
|
cycleInstructionLines[2] += " | " + cycleInstructionLines.splice(3, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const cil of cycleInstructionLines) {
|
||||||
|
instructionLines.push(cil);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.instructionsText.setText(instructionLines.join("\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
getValueLimit(): integer {
|
getValueLimit(): integer {
|
||||||
|
@ -296,7 +296,7 @@ export let isLocalServerConnected = true;
|
|||||||
export function setCookie(cName: string, cValue: string): void {
|
export function setCookie(cName: string, cValue: string): void {
|
||||||
const expiration = new Date();
|
const expiration = new Date();
|
||||||
expiration.setTime(new Date().getTime() + 3600000 * 24 * 30 * 3/*7*/);
|
expiration.setTime(new Date().getTime() + 3600000 * 24 * 30 * 3/*7*/);
|
||||||
document.cookie = `${cName}=${cValue};Secure;SameSite=Strict;Path=/;Expires=${expiration.toUTCString()}`;
|
document.cookie = `${cName}=${cValue};SameSite=Strict;path=/;expires=${expiration.toUTCString()}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getCookie(cName: string): string {
|
export function getCookie(cName: string): string {
|
||||||
|
Loading…
Reference in New Issue
Block a user