mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-06 08:22:16 +02:00
Compare commits
No commits in common. "5d698b6d38dcbbf3b075b39e6ba43c2c554e79b9" and "389c47982587f0a948932755ffc85f7fe64978f8" have entirely different histories.
5d698b6d38
...
389c479825
@ -46,14 +46,7 @@ Check out [Github Issues](https://github.com/pagefaultgames/pokerogue/issues) to
|
||||
- Keisuke Ito
|
||||
- Arata Iiyoshi
|
||||
- Atsuhiro Ishizuna
|
||||
- Pokémon HeartGold/SoulSilver
|
||||
- Pokémon Black/White 2
|
||||
- Pokémon X/Y
|
||||
- Pokémon Omega Ruby/Alpha Sapphire
|
||||
- Pokémon Sun/Moon
|
||||
- Pokémon Ultra Sun/Ultra Moon
|
||||
- Pokémon Sword/Shield
|
||||
- Pokémon Scarlet/Violet
|
||||
- Firel (Custom Metropolis and Laboratory biome music)
|
||||
- Lmz (Custom Jungle biome music)
|
||||
|
||||
|
@ -11,7 +11,6 @@
|
||||
"test": "vitest run",
|
||||
"test:cov": "vitest run --coverage",
|
||||
"test:watch": "vitest watch --coverage",
|
||||
"test:silent": "vitest run --silent",
|
||||
"eslint": "eslint --fix .",
|
||||
"eslint-ci": "eslint .",
|
||||
"docs": "typedoc"
|
||||
|
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.
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.
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
|
||||
],
|
||||
"641-incarnate": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"641-therian": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"642-incarnate": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"642-therian": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"645-incarnate": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
@ -4608,32 +4608,32 @@
|
||||
1
|
||||
],
|
||||
"641-incarnate": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"641-therian": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"642-incarnate": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"642-therian": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"645-incarnate": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"645-therian": [
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
|
@ -20,8 +20,8 @@ import { ModifierPoolType, getDefaultModifierTypeForTier, getEnemyModifierTypesF
|
||||
import AbilityBar from "./ui/ability-bar";
|
||||
import { BlockItemTheftAbAttr, DoubleBattleChanceAbAttr, IncrementMovePriorityAbAttr, PostBattleInitAbAttr, applyAbAttrs, applyPostBattleInitAbAttrs } from "./data/ability";
|
||||
import { allAbilities } from "./data/ability";
|
||||
import Battle, { BattleType, FixedBattleConfig } from "./battle";
|
||||
import { GameMode, GameModes, getGameMode } from "./game-mode";
|
||||
import Battle, { BattleType, FixedBattleConfig, fixedBattles } from "./battle";
|
||||
import { GameMode, GameModes, gameModes } from "./game-mode";
|
||||
import FieldSpritePipeline from "./pipelines/field-sprite";
|
||||
import SpritePipeline from "./pipelines/sprite";
|
||||
import PartyExpBar from "./ui/party-exp-bar";
|
||||
@ -126,7 +126,6 @@ export default class BattleScene extends SceneBase {
|
||||
public uiTheme: UiTheme = UiTheme.DEFAULT;
|
||||
public windowType: integer = 0;
|
||||
public experimentalSprites: boolean = false;
|
||||
public musicPreference: integer = 0;
|
||||
public moveAnimations: boolean = true;
|
||||
public expGainsSpeed: integer = 0;
|
||||
public skipSeenDialogues: boolean = false;
|
||||
@ -155,13 +154,6 @@ export default class BattleScene extends SceneBase {
|
||||
*/
|
||||
public battleStyle: integer = 0;
|
||||
|
||||
/**
|
||||
* Defines whether or not to show type effectiveness hints
|
||||
* - true: No hints
|
||||
* - false: Show hints for moves
|
||||
*/
|
||||
public typeHints: boolean = false;
|
||||
|
||||
public disableMenu: boolean = false;
|
||||
|
||||
public gameData: GameData;
|
||||
@ -234,7 +226,6 @@ export default class BattleScene extends SceneBase {
|
||||
public rngSeedOverride: string = "";
|
||||
public rngOffset: integer = 0;
|
||||
|
||||
public inputMethod: string;
|
||||
private infoToggles: InfoToggle[] = [];
|
||||
|
||||
/**
|
||||
@ -861,7 +852,7 @@ export default class BattleScene extends SceneBase {
|
||||
this.gameData = new GameData(this);
|
||||
}
|
||||
|
||||
this.gameMode = getGameMode(GameModes.CLASSIC);
|
||||
this.gameMode = gameModes[GameModes.CLASSIC];
|
||||
|
||||
this.setSeed(Overrides.SEED_OVERRIDE || Utils.randomString(24));
|
||||
console.log("Seed:", this.seed);
|
||||
@ -969,8 +960,8 @@ export default class BattleScene extends SceneBase {
|
||||
|
||||
const playerField = this.getPlayerField();
|
||||
|
||||
if (this.gameMode.isFixedBattle(newWaveIndex) && trainerData === undefined) {
|
||||
battleConfig = this.gameMode.getFixedBattle(newWaveIndex);
|
||||
if (this.gameMode.hasFixedBattles && fixedBattles.hasOwnProperty(newWaveIndex) && trainerData === undefined) {
|
||||
battleConfig = fixedBattles[newWaveIndex];
|
||||
newDouble = battleConfig.double;
|
||||
newBattleType = battleConfig.battleType;
|
||||
this.executeWithSeedOffset(() => newTrainer = battleConfig.getTrainer(this), (battleConfig.seedOffsetWaveIndex || newWaveIndex) << 8);
|
||||
@ -1018,8 +1009,7 @@ export default class BattleScene extends SceneBase {
|
||||
if (Overrides.DOUBLE_BATTLE_OVERRIDE) {
|
||||
newDouble = true;
|
||||
}
|
||||
/* Override battles into single only if not fighting with trainers */
|
||||
if (newBattleType !== BattleType.TRAINER && Overrides.SINGLE_BATTLE_OVERRIDE) {
|
||||
if (Overrides.SINGLE_BATTLE_OVERRIDE) {
|
||||
newDouble = false;
|
||||
}
|
||||
|
||||
@ -1391,7 +1381,8 @@ export default class BattleScene extends SceneBase {
|
||||
if (this.money === undefined) {
|
||||
return;
|
||||
}
|
||||
const formattedMoney = Utils.formatMoney(this.moneyFormat, this.money);
|
||||
const formattedMoney =
|
||||
this.moneyFormat === MoneyFormat.ABBREVIATED ? Utils.formatFancyLargeNumber(this.money, 3) : this.money.toLocaleString();
|
||||
this.moneyText.setText(`₽${formattedMoney}`);
|
||||
this.fieldUI.moveAbove(this.moneyText, this.luckText);
|
||||
if (forceVisible) {
|
||||
@ -1680,145 +1671,55 @@ export default class BattleScene extends SceneBase {
|
||||
|
||||
getBgmLoopPoint(bgmName: string): number {
|
||||
switch (bgmName) {
|
||||
case "battle_kanto_champion": //B2W2 Kanto Champion Battle
|
||||
case "battle_kanto_champion":
|
||||
return 13.950;
|
||||
case "battle_johto_champion": //B2W2 Johto Champion Battle
|
||||
case "battle_johto_champion":
|
||||
return 23.498;
|
||||
case "battle_hoenn_champion": //B2W2 Hoenn Champion Battle
|
||||
case "battle_hoenn_champion":
|
||||
return 11.328;
|
||||
case "battle_sinnoh_champion": //B2W2 Sinnoh Champion Battle
|
||||
case "battle_sinnoh_champion":
|
||||
return 12.235;
|
||||
case "battle_champion_alder": //BW Unova Champion Battle
|
||||
case "battle_champion_alder":
|
||||
return 27.653;
|
||||
case "battle_champion_iris": //B2W2 Unova Champion Battle
|
||||
case "battle_champion_iris":
|
||||
return 10.145;
|
||||
case "battle_kalos_champion": //XY Kalos Champion Battle
|
||||
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
|
||||
case "battle_elite":
|
||||
return 17.730;
|
||||
case "battle_kalos_elite": //XY Elite Four Battle
|
||||
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
|
||||
case "battle_final_encounter":
|
||||
return 19.159;
|
||||
case "battle_final": //BW Ghetsis Battle
|
||||
case "battle_final":
|
||||
return 16.453;
|
||||
case "battle_kanto_gym": //B2W2 Kanto Gym Battle
|
||||
case "battle_kanto_gym":
|
||||
return 13.857;
|
||||
case "battle_johto_gym": //B2W2 Johto Gym Battle
|
||||
case "battle_johto_gym":
|
||||
return 12.911;
|
||||
case "battle_hoenn_gym": //B2W2 Hoenn Gym Battle
|
||||
case "battle_hoenn_gym":
|
||||
return 12.379;
|
||||
case "battle_sinnoh_gym": //B2W2 Sinnoh Gym Battle
|
||||
case "battle_sinnoh_gym":
|
||||
return 13.122;
|
||||
case "battle_unova_gym": //BW Unova Gym Battle
|
||||
case "battle_unova_gym":
|
||||
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
|
||||
return 32.966;
|
||||
case "battle_legendary_raikou": //HGSS Raikou Battle
|
||||
return 12.632;
|
||||
case "battle_legendary_entei": //HGSS Entei Battle
|
||||
return 2.905;
|
||||
case "battle_legendary_suicune": //HGSS Suicune Battle
|
||||
return 12.636;
|
||||
case "battle_legendary_lugia": //HGSS Lugia Battle
|
||||
return 19.770;
|
||||
case "battle_legendary_ho_oh": //HGSS Ho-oh Battle
|
||||
return 17.668;
|
||||
case "battle_legendary_regis_g5": //B2W2 Legendary Titan Battle
|
||||
case "battle_legendary_regis": //B2W2 Legendary Titan Battle
|
||||
return 49.500;
|
||||
case "battle_legendary_regis_g6": //ORAS Legendary Titan Battle
|
||||
return 21.130;
|
||||
case "battle_legendary_gro_kyo": //ORAS Groudon & Kyogre Battle
|
||||
return 10.547;
|
||||
case "battle_legendary_rayquaza": //ORAS Rayquaza Battle
|
||||
return 10.495;
|
||||
case "battle_legendary_deoxys": //ORAS Deoxys Battle
|
||||
return 13.333;
|
||||
case "battle_legendary_lake_trio": //ORAS Lake Guardians Battle
|
||||
return 16.887;
|
||||
case "battle_legendary_sinnoh": //ORAS Sinnoh Legendary Battle
|
||||
return 22.770;
|
||||
case "battle_legendary_dia_pal": //ORAS Dialga & Palkia Battle
|
||||
return 16.009;
|
||||
case "battle_legendary_giratina": //ORAS Giratina Battle
|
||||
return 10.451;
|
||||
case "battle_legendary_arceus": //HGSS Arceus Battle
|
||||
return 9.595;
|
||||
case "battle_legendary_unova": //BW Unova Legendary Battle
|
||||
return 13.855;
|
||||
case "battle_legendary_kyurem": //BW Kyurem Battle
|
||||
return 18.314;
|
||||
case "battle_legendary_res_zek": //BW Reshiram & Zekrom Battle
|
||||
return 18.329;
|
||||
case "battle_legendary_xern_yvel": //XY Xerneas & Yveltal Battle
|
||||
return 26.468;
|
||||
case "battle_legendary_tapu": //SM Tapu Battle
|
||||
return 0.000;
|
||||
case "battle_legendary_sol_lun": //SM Solgaleo & Lunala Battle
|
||||
return 6.525;
|
||||
case "battle_legendary_ub": //SM Ultra Beast Battle
|
||||
return 9.818;
|
||||
case "battle_legendary_dusk_dawn": //USUM Dusk Mane & Dawn Wings Necrozma Battle
|
||||
return 5.211;
|
||||
case "battle_legendary_ultra_nec": //USUM Ultra Necrozma Battle
|
||||
return 10.344;
|
||||
case "battle_legendary_zac_zam": //SWSH Zacian & Zamazenta Battle
|
||||
return 11.424;
|
||||
case "battle_legendary_glas_spec": //SWSH Glastrier & Spectrier Battle
|
||||
return 12.503;
|
||||
case "battle_legendary_calyrex": //SWSH Calyrex Battle
|
||||
return 50.641;
|
||||
case "battle_legendary_birds_galar": //SWSH Galarian Legendary Birds Battle
|
||||
return 0.175;
|
||||
case "battle_legendary_ruinous": //SV Treasures of Ruin Battle
|
||||
return 6.333;
|
||||
case "battle_legendary_loyal_three": //SV Loyal Three Battle
|
||||
return 6.500;
|
||||
case "battle_legendary_ogerpon": //SV Ogerpon Battle
|
||||
return 14.335;
|
||||
case "battle_legendary_terapagos": //SV Terapagos Battle
|
||||
return 24.377;
|
||||
case "battle_legendary_pecharunt": //SV Pecharunt Battle
|
||||
return 6.508;
|
||||
case "battle_rival": //BW Rival Battle
|
||||
case "battle_rival":
|
||||
return 13.689;
|
||||
case "battle_rival_2": //BW N Battle
|
||||
case "battle_rival_2":
|
||||
return 17.714;
|
||||
case "battle_rival_3": //BW Final N Battle
|
||||
case "battle_rival_3":
|
||||
return 17.586;
|
||||
case "battle_trainer": //BW Trainer Battle
|
||||
case "battle_trainer":
|
||||
return 13.686;
|
||||
case "battle_wild": //BW Wild Battle
|
||||
case "battle_wild":
|
||||
return 12.703;
|
||||
case "battle_wild_strong": //BW Strong Wild Battle
|
||||
case "battle_wild_strong":
|
||||
return 13.940;
|
||||
case "end_summit": //PMD RTDX Sky Tower Summit
|
||||
case "end_summit":
|
||||
return 30.025;
|
||||
}
|
||||
|
||||
|
138
src/battle.ts
138
src/battle.ts
@ -197,11 +197,7 @@ export default class Battle {
|
||||
if (!this.started && this.trainer.config.encounterBgm && this.trainer.getEncounterMessages()?.length) {
|
||||
return `encounter_${this.trainer.getEncounterBgm()}`;
|
||||
}
|
||||
if (scene.musicPreference === 0) {
|
||||
return this.trainer.getBattleBgm();
|
||||
} else {
|
||||
return this.trainer.getMixedBattleBgm();
|
||||
}
|
||||
return this.trainer.getBattleBgm();
|
||||
} else if (this.gameMode.isClassic && this.waveIndex > 195 && this.battleSpec !== BattleSpec.FINAL_BOSS) {
|
||||
return "end_summit";
|
||||
}
|
||||
@ -213,116 +209,22 @@ export default class Battle {
|
||||
return "battle_final_encounter";
|
||||
}
|
||||
if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) {
|
||||
if (scene.musicPreference === 0) {
|
||||
if (pokemon.species.speciesId === Species.REGIROCK || pokemon.species.speciesId === Species.REGICE || pokemon.species.speciesId === Species.REGISTEEL || pokemon.species.speciesId === Species.REGIGIGAS || pokemon.species.speciesId === Species.REGIELEKI || pokemon.species.speciesId === Species.REGIDRAGO) {
|
||||
return "battle_legendary_regis_g5";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.COBALION || pokemon.species.speciesId === Species.TERRAKION || pokemon.species.speciesId === Species.VIRIZION || pokemon.species.speciesId === Species.TORNADUS || pokemon.species.speciesId === Species.THUNDURUS || pokemon.species.speciesId === Species.LANDORUS || pokemon.species.speciesId === Species.KELDEO || pokemon.species.speciesId === Species.MELOETTA || pokemon.species.speciesId === Species.GENESECT) {
|
||||
return "battle_legendary_unova";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.KYUREM) {
|
||||
return "battle_legendary_kyurem";
|
||||
}
|
||||
if (pokemon.species.legendary) {
|
||||
return "battle_legendary_res_zek";
|
||||
}
|
||||
return "battle_legendary_unova";
|
||||
} else {
|
||||
if (pokemon.species.speciesId === Species.ARTICUNO || pokemon.species.speciesId === Species.ZAPDOS || pokemon.species.speciesId === Species.MOLTRES || pokemon.species.speciesId === Species.MEWTWO || pokemon.species.speciesId === Species.MEW) {
|
||||
return "battle_legendary_kanto";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.RAIKOU) {
|
||||
return "battle_legendary_raikou";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.ENTEI) {
|
||||
return "battle_legendary_entei";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.SUICUNE) {
|
||||
return "battle_legendary_suicune";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.LUGIA) {
|
||||
return "battle_legendary_lugia";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.HO_OH) {
|
||||
return "battle_legendary_ho_oh";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.REGIROCK || pokemon.species.speciesId === Species.REGICE || pokemon.species.speciesId === Species.REGISTEEL || pokemon.species.speciesId === Species.REGIGIGAS || pokemon.species.speciesId === Species.REGIELEKI || pokemon.species.speciesId === Species.REGIDRAGO) {
|
||||
return "battle_legendary_regis_g6";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.GROUDON || pokemon.species.speciesId === Species.KYOGRE) {
|
||||
return "battle_legendary_gro_kyo";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.RAYQUAZA) {
|
||||
return "battle_legendary_rayquaza";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.DEOXYS) {
|
||||
return "battle_legendary_deoxys";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.UXIE || pokemon.species.speciesId === Species.MESPRIT || pokemon.species.speciesId === Species.AZELF) {
|
||||
return "battle_legendary_lake_trio";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.HEATRAN || pokemon.species.speciesId === Species.CRESSELIA || pokemon.species.speciesId === Species.DARKRAI || pokemon.species.speciesId === Species.SHAYMIN) {
|
||||
return "battle_legendary_sinnoh";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.DIALGA || pokemon.species.speciesId === Species.PALKIA) {
|
||||
return "battle_legendary_dia_pal";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.GIRATINA) {
|
||||
return "battle_legendary_giratina";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.ARCEUS) {
|
||||
return "battle_legendary_arceus";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.COBALION || pokemon.species.speciesId === Species.TERRAKION || pokemon.species.speciesId === Species.VIRIZION || pokemon.species.speciesId === Species.TORNADUS || pokemon.species.speciesId === Species.THUNDURUS || pokemon.species.speciesId === Species.LANDORUS || pokemon.species.speciesId === Species.KELDEO || pokemon.species.speciesId === Species.MELOETTA || pokemon.species.speciesId === Species.GENESECT) {
|
||||
return "battle_legendary_unova";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.KYUREM) {
|
||||
return "battle_legendary_kyurem";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.XERNEAS || pokemon.species.speciesId === Species.YVELTAL || pokemon.species.speciesId === Species.ZYGARDE) {
|
||||
return "battle_legendary_xern_yvel";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.TAPU_KOKO || pokemon.species.speciesId === Species.TAPU_LELE || pokemon.species.speciesId === Species.TAPU_BULU || pokemon.species.speciesId === Species.TAPU_FINI) {
|
||||
return "battle_legendary_tapu";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.COSMOG || pokemon.species.speciesId === Species.COSMOEM || pokemon.species.speciesId === Species.SOLGALEO || pokemon.species.speciesId === Species.LUNALA || pokemon.species.speciesId === Species.NECROZMA) {
|
||||
return "battle_legendary_sol_lun";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.NIHILEGO || pokemon.species.speciesId === Species.BUZZWOLE || pokemon.species.speciesId === Species.PHEROMOSA || pokemon.species.speciesId === Species.XURKITREE || pokemon.species.speciesId === Species.CELESTEELA || pokemon.species.speciesId === Species.KARTANA || pokemon.species.speciesId === Species.GUZZLORD || pokemon.species.speciesId === Species.POIPOLE || pokemon.species.speciesId === Species.NAGANADEL || pokemon.species.speciesId === Species.STAKATAKA || pokemon.species.speciesId === Species.BLACEPHALON) {
|
||||
return "battle_legendary_ub";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.ZACIAN || pokemon.species.speciesId === Species.ZAMAZENTA) {
|
||||
return "battle_legendary_zac_zam";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.GLASTRIER || pokemon.species.speciesId === Species.SPECTRIER) {
|
||||
return "battle_legendary_glas_spec";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.CALYREX) {
|
||||
return "battle_legendary_calyrex";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.GALAR_ARTICUNO || pokemon.species.speciesId === Species.GALAR_ZAPDOS || pokemon.species.speciesId === Species.GALAR_MOLTRES) {
|
||||
return "battle_legendary_birds_galar";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.WO_CHIEN || pokemon.species.speciesId === Species.CHIEN_PAO || pokemon.species.speciesId === Species.TING_LU || pokemon.species.speciesId === Species.CHI_YU) {
|
||||
return "battle_legendary_ruinous";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.OKIDOGI || pokemon.species.speciesId === Species.MUNKIDORI || pokemon.species.speciesId === Species.FEZANDIPITI) {
|
||||
return "battle_legendary_loyal_three";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.OGERPON) {
|
||||
return "battle_legendary_ogerpon";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.TERAPAGOS) {
|
||||
return "battle_legendary_terapagos";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.PECHARUNT) {
|
||||
return "battle_legendary_pecharunt";
|
||||
}
|
||||
if (pokemon.species.legendary) {
|
||||
return "battle_legendary_res_zek";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.REGIROCK || pokemon.species.speciesId === Species.REGICE || pokemon.species.speciesId === Species.REGISTEEL || pokemon.species.speciesId === Species.REGIGIGAS || pokemon.species.speciesId === Species.REGIELEKI || pokemon.species.speciesId === Species.REGIDRAGO) {
|
||||
return "battle_legendary_regis";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.COBALION || pokemon.species.speciesId === Species.TERRAKION || pokemon.species.speciesId === Species.VIRIZION || pokemon.species.speciesId === Species.TORNADUS || pokemon.species.speciesId === Species.THUNDURUS || pokemon.species.speciesId === Species.LANDORUS || pokemon.species.speciesId === Species.KELDEO || pokemon.species.speciesId === Species.MELOETTA || pokemon.species.speciesId === Species.GENESECT) {
|
||||
return "battle_legendary_unova";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.RESHIRAM || pokemon.species.speciesId === Species.ZEKROM) {
|
||||
return "battle_legendary_res_zek";
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.KYUREM) {
|
||||
return "battle_legendary_kyurem";
|
||||
}
|
||||
if (pokemon.species.legendary) {
|
||||
return "battle_legendary_res_zek";
|
||||
}
|
||||
return "battle_legendary_unova";
|
||||
}
|
||||
}
|
||||
|
||||
@ -420,11 +322,11 @@ function getRandomTrainerFunc(trainerPool: (TrainerType | TrainerType[])[]): Get
|
||||
};
|
||||
}
|
||||
|
||||
export interface FixedBattleConfigs {
|
||||
interface FixedBattleConfigs {
|
||||
[key: integer]: FixedBattleConfig
|
||||
}
|
||||
|
||||
export const classicFixedBattles: FixedBattleConfigs = {
|
||||
export const fixedBattles: FixedBattleConfigs = {
|
||||
[5]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.YOUNGSTER, Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[8]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
@ -438,13 +340,13 @@ export const classicFixedBattles: FixedBattleConfigs = {
|
||||
[145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_5, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[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)
|
||||
.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)
|
||||
.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)
|
||||
.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)
|
||||
.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)
|
||||
|
@ -2949,7 +2949,6 @@ export class ArenaTrapAbAttr extends CheckTrappedAbAttr {
|
||||
/**
|
||||
* Checks if enemy Pokemon is trapped by an Arena Trap-esque ability
|
||||
* If the enemy is a Ghost type, it is not trapped
|
||||
* If the enemy has the ability Run Away, it is not trapped.
|
||||
* If the user has Magnet Pull and the enemy is not a Steel type, it is not trapped.
|
||||
* If the user has Arena Trap and the enemy is not grounded, it is not trapped.
|
||||
* @param pokemon The {@link Pokemon} with this {@link AbAttr}
|
||||
@ -2964,9 +2963,6 @@ export class ArenaTrapAbAttr extends CheckTrappedAbAttr {
|
||||
if (otherPokemon.getTypes(true).includes(Type.GHOST) || (otherPokemon.getTypes(true).includes(Type.STELLAR) && otherPokemon.getTypes().includes(Type.GHOST))) {
|
||||
trapped.value = false;
|
||||
return false;
|
||||
} else if (otherPokemon.hasAbility(Abilities.RUN_AWAY)) {
|
||||
trapped.value = false;
|
||||
return false;
|
||||
}
|
||||
trapped.value = true;
|
||||
return true;
|
||||
|
@ -1,577 +0,0 @@
|
||||
import * as Utils from "../utils";
|
||||
import { Challenges } from "./enums/challenges";
|
||||
import i18next from "#app/plugins/i18n.js";
|
||||
import { GameData } from "#app/system/game-data.js";
|
||||
import PokemonSpecies, { getPokemonSpecies, speciesStarters } from "./pokemon-species";
|
||||
import Pokemon from "#app/field/pokemon.js";
|
||||
import { BattleType, FixedBattleConfig } from "#app/battle.js";
|
||||
import { TrainerType } from "./enums/trainer-type";
|
||||
import Trainer, { TrainerVariant } from "#app/field/trainer.js";
|
||||
import { GameMode } from "#app/game-mode.js";
|
||||
import { Species } from "./enums/species";
|
||||
import { Type } from "./type";
|
||||
|
||||
/**
|
||||
* An enum for all the challenge types. The parameter entries on these describe the
|
||||
* parameters to use when calling the applyChallenges function.
|
||||
*/
|
||||
export enum ChallengeType {
|
||||
/**
|
||||
* Challenges which modify what starters you can choose
|
||||
* @param args [0] {@link PokemonSpecies} The species to check
|
||||
* [1] {@link Utils.BooleanHolder} Sets to false if illegal, pass in true.
|
||||
*/
|
||||
STARTER_CHOICE,
|
||||
/**
|
||||
* Challenges which modify how many starter points you have
|
||||
* @param args [0] {@link Utils.NumberHolder} The amount of starter points you have
|
||||
*/
|
||||
STARTER_POINTS,
|
||||
/**
|
||||
* Challenges which modify your starters in some way
|
||||
* Not Fully Implemented
|
||||
*/
|
||||
STARTER_MODIFY,
|
||||
/**
|
||||
* Challenges which limit which pokemon you can have in battle.
|
||||
* @param args [0] {@link Pokemon} The pokemon to check
|
||||
* [1] {@link Utils.BooleanHolder} Sets to false if illegal, pass in true.
|
||||
*/
|
||||
POKEMON_IN_BATTLE,
|
||||
/**
|
||||
* Adds or modifies the fixed battles in a run
|
||||
* @param args [0] integer The wave to get a battle for
|
||||
* [1] {@link FixedBattleConfig} A new fixed battle. It'll be modified if a battle exists.
|
||||
*/
|
||||
FIXED_BATTLES,
|
||||
}
|
||||
|
||||
/**
|
||||
* A challenge object. Exists only to serve as a base class.
|
||||
*/
|
||||
export abstract class Challenge {
|
||||
public id: Challenges; // The id of the challenge
|
||||
|
||||
public value: integer; // The "strength" of the challenge, all challenges have a numerical value.
|
||||
public maxValue: integer; // The maximum strength of the challenge.
|
||||
public severity: integer; // The current severity of the challenge. Some challenges have multiple severities in addition to strength.
|
||||
public maxSeverity: integer; // The maximum severity of the challenge.
|
||||
|
||||
public conditions: ChallengeCondition[];
|
||||
public challengeTypes: ChallengeType[];
|
||||
|
||||
/**
|
||||
* @param {Challenges} id The enum value for the challenge
|
||||
*/
|
||||
constructor(id: Challenges, maxValue: integer = Number.MAX_SAFE_INTEGER) {
|
||||
this.id = id;
|
||||
|
||||
this.value = 0;
|
||||
this.maxValue = maxValue;
|
||||
this.severity = 0;
|
||||
this.maxSeverity = 0;
|
||||
this.conditions = [];
|
||||
this.challengeTypes = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the challenge to a base state.
|
||||
*/
|
||||
reset(): void {
|
||||
this.value = 0;
|
||||
this.severity = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the localisation key for the challenge
|
||||
* @returns The i18n key for this challenge
|
||||
*/
|
||||
geti18nKey(): string {
|
||||
return Challenges[this.id].split("_").map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for unlockable challenges to check if they're unlocked.
|
||||
* @param {GameData} data The save data.
|
||||
* @returns {boolean} Whether this challenge is unlocked.
|
||||
*/
|
||||
isUnlocked(data: GameData): boolean {
|
||||
return this.conditions.every(f => f(data));
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an unlock condition to this challenge.
|
||||
* @param {ChallengeCondition} condition The condition to add.
|
||||
* @returns {Challenge} This challenge
|
||||
*/
|
||||
condition(condition: ChallengeCondition): Challenge {
|
||||
this.conditions.push(condition);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* If this challenge is of a particular type
|
||||
* @param {ChallengeType} challengeType The challenge type to check.
|
||||
* @returns {Challenge} This challenge
|
||||
*/
|
||||
isOfType(challengeType: ChallengeType): boolean {
|
||||
return this.challengeTypes.some(c => c === challengeType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a challenge type to this challenge.
|
||||
* @param {ChallengeType} challengeType The challenge type to add.
|
||||
* @returns {Challenge} This challenge
|
||||
*/
|
||||
addChallengeType(challengeType: ChallengeType): Challenge {
|
||||
this.challengeTypes.push(challengeType);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string} The localised name of this challenge.
|
||||
*/
|
||||
getName(): string {
|
||||
return i18next.t(`challenges:${this.geti18nKey()}.name`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the textual representation of a challenge's current value.
|
||||
* @param {value} overrideValue The value to check for. If undefined, gets the current value.
|
||||
* @returns {string} The localised name for the current value.
|
||||
*/
|
||||
getValue(overrideValue?: integer): string {
|
||||
if (overrideValue === undefined) {
|
||||
overrideValue = this.value;
|
||||
}
|
||||
return i18next.t(`challenges:${this.geti18nKey()}.value.${this.value}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the description of a challenge's current value.
|
||||
* @param {value} overrideValue The value to check for. If undefined, gets the current value.
|
||||
* @returns {string} The localised description for the current value.
|
||||
*/
|
||||
getDescription(overrideValue?: integer): string {
|
||||
if (overrideValue === undefined) {
|
||||
overrideValue = this.value;
|
||||
}
|
||||
return i18next.t(`challenges:${this.geti18nKey()}.desc.${this.value}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Increase the value of the challenge
|
||||
* @returns {boolean} Returns true if the value changed
|
||||
*/
|
||||
increaseValue(): boolean {
|
||||
if (this.value < this.maxValue) {
|
||||
this.value = Math.min(this.value + 1, this.maxValue);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrease the value of the challenge
|
||||
* @returns {boolean} Returns true if the value changed
|
||||
*/
|
||||
decreaseValue(): boolean {
|
||||
if (this.value > 0) {
|
||||
this.value = Math.max(this.value - 1, 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether to allow choosing this challenge's severity.
|
||||
*/
|
||||
hasSeverity(): boolean {
|
||||
return this.value !== 0 && this.maxSeverity > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrease the severity of the challenge
|
||||
* @returns {boolean} Returns true if the value changed
|
||||
*/
|
||||
decreaseSeverity(): boolean {
|
||||
if (this.severity > 0) {
|
||||
this.severity = Math.max(this.severity - 1, 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Increase the severity of the challenge
|
||||
* @returns {boolean} Returns true if the value changed
|
||||
*/
|
||||
increaseSeverity(): boolean {
|
||||
if (this.severity < this.maxSeverity) {
|
||||
this.severity = Math.min(this.severity + 1, this.maxSeverity);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the "difficulty" value of this challenge.
|
||||
* @returns {integer} The difficulty value.
|
||||
*/
|
||||
getDifficulty(): integer {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the minimum difficulty added by this challenge.
|
||||
* @returns {integer} The difficulty value.
|
||||
*/
|
||||
getMinDifficulty(): integer {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Modifies the data or game state in some way to apply the challenge.
|
||||
* @param {ChallengeType} challengeType Which challenge type this is being applied for.
|
||||
* @param args Irrelevant. See the specific challenge's apply function for additional information.
|
||||
*/
|
||||
abstract apply(challengeType: ChallengeType, args: any[]): boolean;
|
||||
|
||||
/**
|
||||
* Clones a challenge, either from another challenge or json. Chainable.
|
||||
* @param {Challenge | any} source The source challenge of json.
|
||||
* @returns {Challenge} This challenge.
|
||||
*/
|
||||
static loadChallenge(source: Challenge | any): Challenge {
|
||||
throw new Error("Method not implemented! Use derived class");
|
||||
}
|
||||
}
|
||||
|
||||
type ChallengeCondition = (data: GameData) => boolean;
|
||||
|
||||
/**
|
||||
* Implements a mono generation challenge.
|
||||
*/
|
||||
export class SingleGenerationChallenge extends Challenge {
|
||||
constructor() {
|
||||
super(Challenges.SINGLE_GENERATION, 9);
|
||||
this.addChallengeType(ChallengeType.STARTER_CHOICE);
|
||||
this.addChallengeType(ChallengeType.POKEMON_IN_BATTLE);
|
||||
this.addChallengeType(ChallengeType.FIXED_BATTLES);
|
||||
}
|
||||
|
||||
apply(challengeType: ChallengeType, args: any[]): boolean {
|
||||
if (this.value === 0) {
|
||||
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) {
|
||||
case ChallengeType.STARTER_CHOICE:
|
||||
const species = args[0] as PokemonSpecies;
|
||||
const isValidStarter = args[1] as Utils.BooleanHolder;
|
||||
const starterGeneration = species.speciesId === Species.VICTINI ? 5 : species.generation;
|
||||
if (starterGeneration !== this.value) {
|
||||
isValidStarter.value = false;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case ChallengeType.POKEMON_IN_BATTLE:
|
||||
const pokemon = args[0] as Pokemon;
|
||||
const isValidPokemon = args[1] as Utils.BooleanHolder;
|
||||
const baseGeneration = pokemon.species.speciesId === Species.VICTINI ? 5 : getPokemonSpecies(pokemon.species.speciesId).generation;
|
||||
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;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case ChallengeType.FIXED_BATTLES:
|
||||
const waveIndex = args[0] as integer;
|
||||
const battleConfig = args[1] as FixedBattleConfig;
|
||||
let trainerTypes: TrainerType[] = [];
|
||||
switch (waveIndex) {
|
||||
case 182:
|
||||
trainerTypes = [ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, Utils.randSeedItem([ TrainerType.HALA, TrainerType.MOLAYNE ]),TrainerType.MARNIE_ELITE, TrainerType.RIKA ];
|
||||
break;
|
||||
case 184:
|
||||
trainerTypes = [ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY ];
|
||||
break;
|
||||
case 186:
|
||||
trainerTypes = [ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, Utils.randSeedItem([TrainerType.BEA_ELITE,TrainerType.ALLISTER_ELITE]), TrainerType.LARRY_ELITE ];
|
||||
break;
|
||||
case 188:
|
||||
trainerTypes = [ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.RAIHAN_ELITE, TrainerType.HASSEL ];
|
||||
break;
|
||||
case 190:
|
||||
trainerTypes = [ TrainerType.BLUE, Utils.randSeedItem([ TrainerType.RED, TrainerType.LANCE_CHAMPION ]), Utils.randSeedItem([ TrainerType.STEVEN, TrainerType.WALLACE ]), TrainerType.CYNTHIA, Utils.randSeedItem([ TrainerType.ALDER, TrainerType.IRIS ]), TrainerType.DIANTHA, TrainerType.HAU, TrainerType.LEON, Utils.randSeedItem([ TrainerType.GEETA, TrainerType.NEMONA ]) ];
|
||||
break;
|
||||
}
|
||||
if (trainerTypes.length === 0) {
|
||||
return false;
|
||||
} else {
|
||||
battleConfig.setBattleType(BattleType.TRAINER).setGetTrainerFunc(scene => new Trainer(scene, trainerTypes[this.value - 1], TrainerVariant.DEFAULT));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @overrides
|
||||
*/
|
||||
getDifficulty(): number {
|
||||
return this.value > 0 ? 1 : 0;
|
||||
}
|
||||
|
||||
static loadChallenge(source: SingleGenerationChallenge | any): SingleGenerationChallenge {
|
||||
const newChallenge = new SingleGenerationChallenge();
|
||||
newChallenge.value = source.value;
|
||||
newChallenge.severity = source.severity;
|
||||
return newChallenge;
|
||||
}
|
||||
}
|
||||
|
||||
interface monotypeOverride {
|
||||
/** The species to override */
|
||||
species: Species;
|
||||
/** The type to count as */
|
||||
type: Type;
|
||||
/** If part of a fusion, should we check the fused species instead of the base species? */
|
||||
fusion: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements a mono type challenge.
|
||||
*/
|
||||
export class SingleTypeChallenge extends Challenge {
|
||||
private static TYPE_OVERRIDES: monotypeOverride[] = [
|
||||
{species: Species.MELOETTA, type: Type.PSYCHIC, fusion: true},
|
||||
{species: Species.CASTFORM, type: Type.NORMAL, fusion: false},
|
||||
];
|
||||
|
||||
constructor() {
|
||||
super(Challenges.SINGLE_TYPE, 18);
|
||||
this.addChallengeType(ChallengeType.STARTER_CHOICE);
|
||||
this.addChallengeType(ChallengeType.POKEMON_IN_BATTLE);
|
||||
}
|
||||
|
||||
apply(challengeType: ChallengeType, args: any[]): boolean {
|
||||
if (this.value === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (challengeType) {
|
||||
case ChallengeType.STARTER_CHOICE:
|
||||
const species = args[0] as PokemonSpecies;
|
||||
const isValidStarter = args[1] as Utils.BooleanHolder;
|
||||
if (!species.isOfType(this.value - 1)) {
|
||||
isValidStarter.value = false;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case ChallengeType.POKEMON_IN_BATTLE:
|
||||
const pokemon = args[0] as Pokemon;
|
||||
const isValidPokemon = args[1] as Utils.BooleanHolder;
|
||||
if (pokemon.isPlayer() && !pokemon.isOfType(this.value - 1, false, false, true)
|
||||
&& !SingleTypeChallenge.TYPE_OVERRIDES.some(o => o.type === (this.value - 1) && (pokemon.isFusion() && o.fusion ? pokemon.fusionSpecies : pokemon.species).speciesId === o.species)) {
|
||||
isValidPokemon.value = false;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @overrides
|
||||
*/
|
||||
getDifficulty(): number {
|
||||
return this.value > 0 ? 1 : 0;
|
||||
}
|
||||
|
||||
static loadChallenge(source: SingleTypeChallenge | any): SingleTypeChallenge {
|
||||
const newChallenge = new SingleTypeChallenge();
|
||||
newChallenge.value = source.value;
|
||||
newChallenge.severity = source.severity;
|
||||
return newChallenge;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements a fresh start challenge.
|
||||
*/
|
||||
export class FreshStartChallenge extends Challenge {
|
||||
constructor() {
|
||||
super(Challenges.FRESH_START, 1);
|
||||
this.addChallengeType(ChallengeType.STARTER_CHOICE);
|
||||
this.addChallengeType(ChallengeType.STARTER_MODIFY);
|
||||
}
|
||||
|
||||
apply(challengeType: ChallengeType, args: any[]): boolean {
|
||||
if (this.value === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (challengeType) {
|
||||
case ChallengeType.STARTER_CHOICE:
|
||||
const species = args[0] as PokemonSpecies;
|
||||
const isValidStarter = args[1] as Utils.BooleanHolder;
|
||||
if (species) {
|
||||
isValidStarter.value = false;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @overrides
|
||||
*/
|
||||
getDifficulty(): number {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static loadChallenge(source: FreshStartChallenge | any): FreshStartChallenge {
|
||||
const newChallenge = new FreshStartChallenge();
|
||||
newChallenge.value = source.value;
|
||||
newChallenge.severity = source.severity;
|
||||
return newChallenge;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lowers the amount of starter points available.
|
||||
*/
|
||||
export class LowerStarterMaxCostChallenge extends Challenge {
|
||||
constructor() {
|
||||
super(Challenges.LOWER_MAX_STARTER_COST, 9);
|
||||
this.addChallengeType(ChallengeType.STARTER_CHOICE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
getValue(overrideValue?: integer): string {
|
||||
if (overrideValue === undefined) {
|
||||
overrideValue = this.value;
|
||||
}
|
||||
return (10 - overrideValue).toString();
|
||||
}
|
||||
|
||||
apply(challengeType: ChallengeType, args: any[]): boolean {
|
||||
if (this.value === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (challengeType) {
|
||||
case ChallengeType.STARTER_CHOICE:
|
||||
const species = args[0] as PokemonSpecies;
|
||||
const isValid = args[1] as Utils.BooleanHolder;
|
||||
if (speciesStarters[species.speciesId] > 10 - this.value) {
|
||||
isValid.value = false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static loadChallenge(source: LowerStarterMaxCostChallenge | any): LowerStarterMaxCostChallenge {
|
||||
const newChallenge = new LowerStarterMaxCostChallenge();
|
||||
newChallenge.value = source.value;
|
||||
newChallenge.severity = source.severity;
|
||||
return newChallenge;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lowers the maximum cost of starters available.
|
||||
*/
|
||||
export class LowerStarterPointsChallenge extends Challenge {
|
||||
constructor() {
|
||||
super(Challenges.LOWER_STARTER_POINTS, 9);
|
||||
this.addChallengeType(ChallengeType.STARTER_POINTS);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
getValue(overrideValue?: integer): string {
|
||||
if (overrideValue === undefined) {
|
||||
overrideValue = this.value;
|
||||
}
|
||||
return (10 - overrideValue).toString();
|
||||
}
|
||||
|
||||
apply(challengeType: ChallengeType, args: any[]): boolean {
|
||||
if (this.value === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (challengeType) {
|
||||
case ChallengeType.STARTER_POINTS:
|
||||
const points = args[0] as Utils.NumberHolder;
|
||||
points.value -= this.value;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static loadChallenge(source: LowerStarterPointsChallenge | any): LowerStarterPointsChallenge {
|
||||
const newChallenge = new LowerStarterPointsChallenge();
|
||||
newChallenge.value = source.value;
|
||||
newChallenge.severity = source.severity;
|
||||
return newChallenge;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply all challenges of a given challenge type.
|
||||
* @param {BattleScene} scene The current scene
|
||||
* @param {ChallengeType} challengeType What challenge type to apply
|
||||
* @param {any[]} args Any args for that challenge type
|
||||
* @returns {boolean} True if any challenge was successfully applied.
|
||||
*/
|
||||
export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType, ...args: any[]): boolean {
|
||||
let ret = false;
|
||||
gameMode.challenges.forEach(v => {
|
||||
if (v.isOfType(challengeType)) {
|
||||
ret ||= v.apply(challengeType, args);
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
|
||||
export function copyChallenge(source: Challenge | any): Challenge {
|
||||
switch (source.id) {
|
||||
case Challenges.SINGLE_GENERATION:
|
||||
return SingleGenerationChallenge.loadChallenge(source);
|
||||
case Challenges.SINGLE_TYPE:
|
||||
return SingleTypeChallenge.loadChallenge(source);
|
||||
case Challenges.LOWER_MAX_STARTER_COST:
|
||||
return LowerStarterMaxCostChallenge.loadChallenge(source);
|
||||
case Challenges.LOWER_STARTER_POINTS:
|
||||
return LowerStarterPointsChallenge.loadChallenge(source);
|
||||
}
|
||||
throw new Error("Unknown challenge copied");
|
||||
}
|
||||
|
||||
export const allChallenges: Challenge[] = [];
|
||||
|
||||
export function initChallenges() {
|
||||
allChallenges.push(
|
||||
new SingleGenerationChallenge(),
|
||||
new SingleTypeChallenge(),
|
||||
// new LowerStarterMaxCostChallenge(),
|
||||
// new LowerStarterPointsChallenge(),
|
||||
// new FreshStartChallenge()
|
||||
);
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import { PlayerPokemon } from "../field/pokemon";
|
||||
import { GameModes, gameModes } from "../game-mode";
|
||||
import { Starter } from "../ui/starter-select-ui-handler";
|
||||
import * as Utils from "../utils";
|
||||
import { Species } from "./enums/species";
|
||||
@ -28,7 +29,7 @@ export function getDailyRunStarters(scene: BattleScene, seed: string): Starter[]
|
||||
const starters: Starter[] = [];
|
||||
|
||||
scene.executeWithSeedOffset(() => {
|
||||
const startingLevel = scene.gameMode.getStartingLevel();
|
||||
const startingLevel = gameModes[GameModes.DAILY].getStartingLevel();
|
||||
|
||||
if (/\d{18}$/.test(seed)) {
|
||||
for (let s = 0; s < 3; s++) {
|
||||
|
@ -1,7 +0,0 @@
|
||||
export enum Challenges {
|
||||
SINGLE_GENERATION,
|
||||
SINGLE_TYPE,
|
||||
LOWER_MAX_STARTER_COST,
|
||||
LOWER_STARTER_POINTS,
|
||||
FRESH_START
|
||||
}
|
@ -3323,10 +3323,65 @@ export class VariableMoveTypeAttr extends MoveAttr {
|
||||
|
||||
export class FormChangeItemTypeAttr extends VariableMoveTypeAttr {
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
if ([user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.ARCEUS) || [user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.SILVALLY)) {
|
||||
if ([user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.ARCEUS && Species.SILVALLY)) {
|
||||
const form = user.species.speciesId === Species.ARCEUS || user.species.speciesId === Species.SILVALLY ? user.formIndex : user.fusionSpecies.formIndex;
|
||||
|
||||
move.type = Type[Type[form]];
|
||||
switch (form) {
|
||||
case 1: // Fist Plate / Fighting Memory
|
||||
move.type = Type.FIGHTING;
|
||||
break;
|
||||
case 2: // Sky Plate / Flying Memory
|
||||
move.type = Type.FLYING;
|
||||
break;
|
||||
case 3: // Toxic Plate / Poison Memory
|
||||
move.type = Type.POISON;
|
||||
break;
|
||||
case 4: // Earth Plate / Ground Memory
|
||||
move.type = Type.GROUND;
|
||||
break;
|
||||
case 5: // Stone Plate / Rock Memory
|
||||
move.type = Type.ROCK;
|
||||
break;
|
||||
case 6: // Insect Plate / Bug Memory
|
||||
move.type = Type.BUG;
|
||||
break;
|
||||
case 7: // Spooky Plate / Ghost Memory
|
||||
move.type = Type.GHOST;
|
||||
break;
|
||||
case 8: // Iron Plate / Steel Memory
|
||||
move.type = Type.STEEL;
|
||||
break;
|
||||
case 9: // Flame Plate / Fire Memory
|
||||
move.type = Type.FIRE;
|
||||
break;
|
||||
case 10: // Splash Plate / Water Memory
|
||||
move.type = Type.WATER;
|
||||
break;
|
||||
case 11: // Meadow Plate / Grass Memory
|
||||
move.type = Type.GRASS;
|
||||
break;
|
||||
case 12: // Zap Plate / Electric Memory
|
||||
move.type = Type.ELECTRIC;
|
||||
break;
|
||||
case 13: // Mind Plate / Psychic Memory
|
||||
move.type = Type.PSYCHIC;
|
||||
break;
|
||||
case 14: // Icicle Plate / Ice Memory
|
||||
move.type = Type.ICE;
|
||||
break;
|
||||
case 15: // Draco Plate / Dragon Memory
|
||||
move.type = Type.DRAGON;
|
||||
break;
|
||||
case 16: // Dread Plate / Dark Memory
|
||||
move.type = Type.DARK;
|
||||
break;
|
||||
case 17: // Pixie Plate / Fairy Memory
|
||||
move.type = Type.FAIRY;
|
||||
break;
|
||||
default:
|
||||
move.type = Type.NORMAL;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -4429,7 +4484,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
|
||||
}
|
||||
|
||||
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();
|
||||
};
|
||||
}
|
||||
|
||||
@ -6018,7 +6073,7 @@ export function initMoves() {
|
||||
], true)
|
||||
.attr(RemoveArenaTrapAttr),
|
||||
new StatusMove(Moves.SWEET_SCENT, Type.NORMAL, 100, 20, -1, 0, 2)
|
||||
.attr(StatChangeAttr, BattleStat.EVA, -2)
|
||||
.attr(StatChangeAttr, BattleStat.EVA, -1)
|
||||
.target(MoveTarget.ALL_NEAR_ENEMIES),
|
||||
new AttackMove(Moves.IRON_TAIL, Type.STEEL, MoveCategory.PHYSICAL, 100, 75, 15, 30, 0, 2)
|
||||
.attr(StatChangeAttr, BattleStat.DEF, -1),
|
||||
|
@ -187,7 +187,6 @@ export class TrainerConfig {
|
||||
public isBoss: boolean = false;
|
||||
public hasStaticParty: boolean = false;
|
||||
public useSameSeedForAllMembers: boolean = false;
|
||||
public mixedBattleBgm: string;
|
||||
public battleBgm: string;
|
||||
public encounterBgm: string;
|
||||
public femaleEncounterBgm: string;
|
||||
@ -441,11 +440,6 @@ export class TrainerConfig {
|
||||
return this;
|
||||
}
|
||||
|
||||
setMixedBattleBgm(mixedBattleBgm: string): TrainerConfig {
|
||||
this.mixedBattleBgm = mixedBattleBgm;
|
||||
return this;
|
||||
}
|
||||
|
||||
setBattleBgm(battleBgm: string): TrainerConfig {
|
||||
this.battleBgm = battleBgm;
|
||||
return this;
|
||||
@ -611,7 +605,7 @@ export class TrainerConfig {
|
||||
this.setMoneyMultiplier(3.25);
|
||||
this.setBoss();
|
||||
this.setStaticParty();
|
||||
this.setBattleBgm("battle_unova_elite");
|
||||
this.setBattleBgm("battle_elite");
|
||||
this.setVictoryBgm("victory_gym");
|
||||
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.DRAYDEN]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["DRAYDEN"],true, Type.DRAGON),
|
||||
[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.GRANT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRANT"],true, Type.ROCK).setMixedBattleBgm("battle_kalos_gym"),
|
||||
[TrainerType.KORRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KORRINA"],false, Type.FIGHTING).setMixedBattleBgm("battle_kalos_gym"),
|
||||
[TrainerType.RAMOS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RAMOS"],true, Type.GRASS).setMixedBattleBgm("battle_kalos_gym"),
|
||||
[TrainerType.CLEMONT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CLEMONT"],true, Type.ELECTRIC).setMixedBattleBgm("battle_kalos_gym"),
|
||||
[TrainerType.VALERIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VALERIE"],false, Type.FAIRY).setMixedBattleBgm("battle_kalos_gym"),
|
||||
[TrainerType.OLYMPIA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OLYMPIA"],false, Type.PSYCHIC).setMixedBattleBgm("battle_kalos_gym"),
|
||||
[TrainerType.WULFRIC]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WULFRIC"],true, Type.ICE).setMixedBattleBgm("battle_kalos_gym"),
|
||||
[TrainerType.MILO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MILO"],true, Type.GRASS).setMixedBattleBgm("battle_galar_gym"),
|
||||
[TrainerType.NESSA]: new TrainerConfig(++t).setName("Nessa").initForGymLeader(signatureSpecies["NESSA"],false, Type.WATER).setMixedBattleBgm("battle_galar_gym"),
|
||||
[TrainerType.KABU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KABU"],true, Type.FIRE).setMixedBattleBgm("battle_galar_gym"),
|
||||
[TrainerType.BEA]: new TrainerConfig(++t).setName("Bea").initForGymLeader(signatureSpecies["BEA"],false, Type.FIGHTING).setMixedBattleBgm("battle_galar_gym"),
|
||||
[TrainerType.ALLISTER]: new TrainerConfig(++t).setName("Allister").initForGymLeader(signatureSpecies["ALLISTER"],true, Type.GHOST).setMixedBattleBgm("battle_galar_gym"),
|
||||
[TrainerType.OPAL]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OPAL"],false, Type.FAIRY).setMixedBattleBgm("battle_galar_gym"),
|
||||
[TrainerType.BEDE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BEDE"],true, Type.FAIRY).setMixedBattleBgm("battle_galar_gym"),
|
||||
[TrainerType.GORDIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GORDIE"],true, Type.ROCK).setMixedBattleBgm("battle_galar_gym"),
|
||||
[TrainerType.MELONY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MELONY"],false, Type.ICE).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").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").setMixedBattleBgm("battle_galar_gym"),
|
||||
[TrainerType.RAIHAN]: new TrainerConfig(++t).setName("Raihan").initForGymLeader(signatureSpecies["RAIHAN"],true, Type.DRAGON).setMixedBattleBgm("battle_galar_gym"),
|
||||
[TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KATY"],false, Type.BUG).setMixedBattleBgm("battle_paldea_gym"),
|
||||
[TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRASSIUS"],true, Type.GRASS).setMixedBattleBgm("battle_paldea_gym"),
|
||||
[TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["IONO"],false, Type.ELECTRIC).setMixedBattleBgm("battle_paldea_gym"),
|
||||
[TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOFU"],true, Type.WATER).setMixedBattleBgm("battle_paldea_gym"),
|
||||
[TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader(signatureSpecies["LARRY"],true, Type.NORMAL).setMixedBattleBgm("battle_paldea_gym"),
|
||||
[TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RYME"],false, Type.GHOST).setMixedBattleBgm("battle_paldea_gym"),
|
||||
[TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TULIP"],false, Type.PSYCHIC).setMixedBattleBgm("battle_paldea_gym"),
|
||||
[TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRUSHA"],true, Type.ICE).setMixedBattleBgm("battle_paldea_gym"),
|
||||
[TrainerType.VIOLA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VIOLA"],false, Type.BUG),
|
||||
[TrainerType.GRANT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GRANT"],true, Type.ROCK),
|
||||
[TrainerType.KORRINA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KORRINA"],false, Type.FIGHTING),
|
||||
[TrainerType.RAMOS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RAMOS"],true, Type.GRASS),
|
||||
[TrainerType.CLEMONT]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["CLEMONT"],true, Type.ELECTRIC),
|
||||
[TrainerType.VALERIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["VALERIE"],false, Type.FAIRY),
|
||||
[TrainerType.OLYMPIA]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OLYMPIA"],false, Type.PSYCHIC),
|
||||
[TrainerType.WULFRIC]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["WULFRIC"],true, Type.ICE),
|
||||
[TrainerType.MILO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["MILO"],true, Type.GRASS),
|
||||
[TrainerType.NESSA]: new TrainerConfig(++t).setName("Nessa").initForGymLeader(signatureSpecies["NESSA"],false, Type.WATER),
|
||||
[TrainerType.KABU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KABU"],true, Type.FIRE),
|
||||
[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),
|
||||
[TrainerType.OPAL]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["OPAL"],false, Type.FAIRY),
|
||||
[TrainerType.BEDE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BEDE"],true, Type.FAIRY),
|
||||
[TrainerType.GORDIE]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["GORDIE"],true, Type.ROCK),
|
||||
[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"),
|
||||
[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),
|
||||
[TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KATY"],false, Type.BUG),
|
||||
[TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["BRASSIUS"],true, Type.GRASS),
|
||||
[TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["IONO"],false, Type.ELECTRIC),
|
||||
[TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["KOFU"],true, Type.WATER),
|
||||
[TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader(signatureSpecies["LARRY"],true, Type.NORMAL),
|
||||
[TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["RYME"],false, Type.GHOST),
|
||||
[TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader(signatureSpecies["TULIP"],false, Type.PSYCHIC),
|
||||
[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.BRUNO]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BRUNO"], true, Type.FIGHTING).setBattleBgm("battle_kanto_gym"),
|
||||
[TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AGATHA"], false,Type.GHOST).setBattleBgm("battle_kanto_gym"),
|
||||
[TrainerType.LANCE]: new TrainerConfig(++t).setName("Lance").initForEliteFour(signatureSpecies["LANCE"],true, Type.DRAGON).setBattleBgm("battle_kanto_gym"),
|
||||
[TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WILL"],true, Type.PSYCHIC).setBattleBgm("battle_johto_gym"),
|
||||
[TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KOGA"], true, Type.POISON).setBattleBgm("battle_johto_gym"),
|
||||
[TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAREN"],false, Type.DARK).setBattleBgm("battle_johto_gym"),
|
||||
[TrainerType.SIDNEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIDNEY"],true, Type.DARK).setMixedBattleBgm("battle_hoenn_elite"),
|
||||
[TrainerType.PHOEBE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["PHOEBE"],false, Type.GHOST).setMixedBattleBgm("battle_hoenn_elite"),
|
||||
[TrainerType.GLACIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GLACIA"],false, Type.ICE).setMixedBattleBgm("battle_hoenn_elite"),
|
||||
[TrainerType.DRAKE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAKE"],true, Type.DRAGON).setMixedBattleBgm("battle_hoenn_elite"),
|
||||
[TrainerType.AARON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AARON"],true, Type.BUG).setBattleBgm("battle_sinnoh_gym"),
|
||||
[TrainerType.BERTHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BERTHA"],false, Type.GROUND).setBattleBgm("battle_sinnoh_gym"),
|
||||
[TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["FLINT"],true, Type.FIRE).setBattleBgm("battle_sinnoh_gym"),
|
||||
[TrainerType.LUCIAN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LUCIAN"], true,Type.PSYCHIC).setBattleBgm("battle_sinnoh_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),
|
||||
[TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AGATHA"], false,Type.GHOST),
|
||||
[TrainerType.LANCE]: new TrainerConfig(++t).setName("Lance").initForEliteFour(signatureSpecies["LANCE"],true, Type.DRAGON),
|
||||
[TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WILL"],true, Type.PSYCHIC),
|
||||
[TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KOGA"], true, Type.POISON),
|
||||
[TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAREN"],false, Type.DARK),
|
||||
[TrainerType.SIDNEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIDNEY"],true, Type.DARK),
|
||||
[TrainerType.PHOEBE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["PHOEBE"],false, Type.GHOST),
|
||||
[TrainerType.GLACIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GLACIA"],false, Type.ICE),
|
||||
[TrainerType.DRAKE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAKE"],true, Type.DRAGON),
|
||||
[TrainerType.AARON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AARON"],true, Type.BUG),
|
||||
[TrainerType.BERTHA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["BERTHA"],false, Type.GROUND),
|
||||
[TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["FLINT"],true, Type.FIRE),
|
||||
[TrainerType.LUCIAN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LUCIAN"], true,Type.PSYCHIC),
|
||||
[TrainerType.SHAUNTAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SHAUNTAL"],false, Type.GHOST),
|
||||
[TrainerType.MARSHAL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MARSHAL"],true, Type.FIGHTING),
|
||||
[TrainerType.GRIMSLEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["GRIMSLEY"],true, Type.DARK),
|
||||
[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.SIEBOLD]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIEBOLD"], true,Type.WATER).setMixedBattleBgm("battle_kalos_elite"),
|
||||
[TrainerType.WIKSTROM]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WIKSTROM"],true, Type.STEEL).setMixedBattleBgm("battle_kalos_elite"),
|
||||
[TrainerType.DRASNA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRASNA"],false, Type.DRAGON).setMixedBattleBgm("battle_kalos_elite"),
|
||||
[TrainerType.HALA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HALA"],true, Type.FIGHTING).setMixedBattleBgm("battle_alola_elite"),
|
||||
[TrainerType.MOLAYNE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MOLAYNE"],true, Type.STEEL).setMixedBattleBgm("battle_alola_elite"),
|
||||
[TrainerType.OLIVIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["OLIVIA"],false, Type.ROCK).setMixedBattleBgm("battle_alola_elite"),
|
||||
[TrainerType.ACEROLA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["ACEROLA"],false, Type.GHOST).setMixedBattleBgm("battle_alola_elite"),
|
||||
[TrainerType.KAHILI]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["KAHILI"],false, Type.FLYING).setMixedBattleBgm("battle_alola_elite"),
|
||||
[TrainerType.MARNIE_ELITE]: new TrainerConfig(++t).setName("Marnie").initForEliteFour(signatureSpecies["MARNIE_ELITE"],false, Type.DARK).setMixedBattleBgm("battle_galar_elite"),
|
||||
[TrainerType.NESSA_ELITE]: new TrainerConfig(++t).setName("Nessa").initForEliteFour(signatureSpecies["NESSA_ELITE"],false, Type.WATER).setMixedBattleBgm("battle_galar_elite"),
|
||||
[TrainerType.BEA_ELITE]: new TrainerConfig(++t).setName("Bea").initForEliteFour(signatureSpecies["BEA_ELITE"],false, Type.FIGHTING).setMixedBattleBgm("battle_galar_elite"),
|
||||
[TrainerType.ALLISTER_ELITE]: new TrainerConfig(++t).setName("Allister").initForEliteFour(signatureSpecies["ALLISTER_ELITE"],true, Type.GHOST).setMixedBattleBgm("battle_galar_elite"),
|
||||
[TrainerType.RAIHAN_ELITE]: new TrainerConfig(++t).setName("Raihan").initForEliteFour(signatureSpecies["RAIHAN_ELITE"],true, Type.DRAGON).setMixedBattleBgm("battle_galar_elite"),
|
||||
[TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["RIKA"],false, Type.GROUND).setMixedBattleBgm("battle_paldea_elite"),
|
||||
[TrainerType.POPPY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["POPPY"],false, Type.STEEL).setMixedBattleBgm("battle_paldea_elite"),
|
||||
[TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName("Larry").initForEliteFour(signatureSpecies["LARRY_ELITE"],true, Type.NORMAL, Type.FLYING).setMixedBattleBgm("battle_paldea_elite"),
|
||||
[TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HASSEL"],true, Type.DRAGON).setMixedBattleBgm("battle_paldea_elite"),
|
||||
[TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CRISPIN"],true, Type.FIRE).setMixedBattleBgm("battle_bb_elite"),
|
||||
[TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AMARYS"],false, Type.STEEL).setMixedBattleBgm("battle_bb_elite"),
|
||||
[TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"],false, Type.FAIRY).setMixedBattleBgm("battle_bb_elite"),
|
||||
[TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRAYTON"],true, Type.DRAGON).setMixedBattleBgm("battle_bb_elite"),
|
||||
[TrainerType.MALVA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MALVA"], false,Type.FIRE),
|
||||
[TrainerType.SIEBOLD]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["SIEBOLD"], true,Type.WATER),
|
||||
[TrainerType.WIKSTROM]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["WIKSTROM"],true, Type.STEEL),
|
||||
[TrainerType.DRASNA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["DRASNA"],false, Type.DRAGON),
|
||||
[TrainerType.HALA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HALA"],true, Type.FIGHTING),
|
||||
[TrainerType.MOLAYNE]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["MOLAYNE"],true, Type.STEEL),
|
||||
[TrainerType.OLIVIA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["OLIVIA"],false, Type.ROCK),
|
||||
[TrainerType.ACEROLA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["ACEROLA"],false, Type.GHOST),
|
||||
[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),
|
||||
[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),
|
||||
[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),
|
||||
[TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["RIKA"],false, Type.GROUND),
|
||||
[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),
|
||||
[TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["HASSEL"],true, Type.DRAGON),
|
||||
[TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["CRISPIN"],true, Type.FIRE),
|
||||
[TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["AMARYS"],false, Type.STEEL),
|
||||
[TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour(signatureSpecies["LACEY"],false, Type.FAIRY),
|
||||
[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")
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.ALAKAZAM], TrainerSlot.TRAINER, true, p => {
|
||||
@ -1281,7 +1275,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
p.formIndex = 1;
|
||||
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 => {
|
||||
p.generateAndPopulateMoveset();
|
||||
}))
|
||||
@ -1289,11 +1283,11 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
p.formIndex = 1;
|
||||
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 => {
|
||||
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 => {
|
||||
p.generateAndPopulateMoveset();
|
||||
}))
|
||||
@ -1301,15 +1295,15 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
p.formIndex = 3;
|
||||
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 => {
|
||||
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 => {
|
||||
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 => {
|
||||
p.generateAndPopulateMoveset();
|
||||
})),
|
||||
|
@ -501,52 +501,6 @@ export function getTypeDamageMultiplier(attackType: integer, defType: integer):
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the color corresponding to a specific damage multiplier
|
||||
* @returns A color or undefined if the default color should be used
|
||||
*/
|
||||
export function getTypeDamageMultiplierColor(multiplier: TypeDamageMultiplier, side: "defense" | "offense"): string | undefined {
|
||||
if (side === "offense") {
|
||||
switch (multiplier) {
|
||||
case 0:
|
||||
return "#929292";
|
||||
case 0.125:
|
||||
return "#FF5500";
|
||||
case 0.25:
|
||||
return "#FF7400";
|
||||
case 0.5:
|
||||
return "#FE8E00";
|
||||
case 1:
|
||||
return undefined;
|
||||
case 2:
|
||||
return "#4AA500";
|
||||
case 4:
|
||||
return "#4BB400";
|
||||
case 8:
|
||||
return "#52C200";
|
||||
}
|
||||
} else if (side === "defense") {
|
||||
switch (multiplier) {
|
||||
case 0:
|
||||
return "#B1B100";
|
||||
case 0.125:
|
||||
return "#2DB4FF";
|
||||
case 0.25:
|
||||
return "#00A4FF";
|
||||
case 0.5:
|
||||
return "#0093FF";
|
||||
case 1:
|
||||
return undefined;
|
||||
case 2:
|
||||
return "#FE8E00";
|
||||
case 4:
|
||||
return "#FF7400";
|
||||
case 8:
|
||||
return "#FF5500";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function getTypeRgb(type: Type): [ integer, integer, integer ] {
|
||||
switch (type) {
|
||||
case Type.NORMAL:
|
||||
|
@ -531,11 +531,6 @@ export class EvolutionPhase extends Phase {
|
||||
}
|
||||
|
||||
export class EndEvolutionPhase extends Phase {
|
||||
|
||||
constructor(scene: BattleScene) {
|
||||
super(scene);
|
||||
}
|
||||
|
||||
start() {
|
||||
super.start();
|
||||
|
||||
|
@ -48,7 +48,6 @@ import { BerryType } from "../data/enums/berry-type";
|
||||
import i18next from "../plugins/i18n";
|
||||
import { speciesEggMoves } from "../data/egg-moves";
|
||||
import { ModifierTier } from "../modifier/modifier-tier";
|
||||
import { applyChallenges, ChallengeType } from "#app/data/challenge.js";
|
||||
|
||||
export enum FieldPosition {
|
||||
CENTER,
|
||||
@ -267,22 +266,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
return !this.hp && (!checkStatus || this.status?.effect === StatusEffect.FAINT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if this pokemon is both not fainted and allowed to be in battle.
|
||||
* This is frequently a better alternative to {@link isFainted}
|
||||
* @returns {boolean} True if pokemon is allowed in battle
|
||||
*/
|
||||
isAllowedInBattle(): boolean {
|
||||
const challengeAllowed = new Utils.BooleanHolder(true);
|
||||
applyChallenges(this.scene.gameMode, ChallengeType.POKEMON_IN_BATTLE, this, challengeAllowed);
|
||||
return !this.isFainted() && challengeAllowed.value;
|
||||
}
|
||||
|
||||
isActive(onField?: boolean): boolean {
|
||||
if (!this.scene) {
|
||||
return false;
|
||||
}
|
||||
return this.isAllowedInBattle() && !!this.scene && (!onField || this.isOnField());
|
||||
return !this.isFainted() && !!this.scene && (!onField || this.isOnField());
|
||||
}
|
||||
|
||||
getDexAttr(): bigint {
|
||||
@ -857,11 +845,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
if (!ignoreOverride && this.summonData?.types) {
|
||||
this.summonData.types.forEach(t => types.push(t));
|
||||
} else {
|
||||
const speciesForm = this.getSpeciesForm(ignoreOverride);
|
||||
const speciesForm = this.getSpeciesForm();
|
||||
|
||||
types.push(speciesForm.type1);
|
||||
|
||||
const fusionSpeciesForm = this.getFusionSpeciesForm(ignoreOverride);
|
||||
const fusionSpeciesForm = this.getFusionSpeciesForm();
|
||||
if (fusionSpeciesForm) {
|
||||
if (fusionSpeciesForm.type2 !== null && fusionSpeciesForm.type2 !== speciesForm.type1) {
|
||||
types.push(fusionSpeciesForm.type2);
|
||||
@ -897,8 +885,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
return types;
|
||||
}
|
||||
|
||||
isOfType(type: Type, includeTeraType: boolean = true, forDefend: boolean = false, ignoreOverride?: boolean): boolean {
|
||||
return !!this.getTypes(includeTeraType, forDefend, ignoreOverride).some(t => t === type);
|
||||
isOfType(type: Type, forDefend: boolean = false): boolean {
|
||||
return !!this.getTypes(true, forDefend).find(t => t === type);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1066,18 +1054,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
}
|
||||
|
||||
isGrounded(): boolean {
|
||||
return !this.isOfType(Type.FLYING, true, true) && !this.hasAbility(Abilities.LEVITATE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns The type damage multiplier or undefined if it's a status move
|
||||
*/
|
||||
getMoveEffectiveness(source: Pokemon, move: PokemonMove): TypeDamageMultiplier | undefined {
|
||||
if (move.getMove().category === MoveCategory.STATUS) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return this.getAttackMoveEffectiveness(source, move);
|
||||
return !this.isOfType(Type.FLYING, true) && !this.hasAbility(Abilities.LEVITATE);
|
||||
}
|
||||
|
||||
getAttackMoveEffectiveness(source: Pokemon, pokemonMove: PokemonMove): TypeDamageMultiplier {
|
||||
@ -1599,20 +1576,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
return this.battleInfo.updateInfo(this, instant);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show or hide the type effectiveness multiplier window
|
||||
* Passing undefined will hide the window
|
||||
*/
|
||||
updateEffectiveness(effectiveness?: string) {
|
||||
this.battleInfo.updateEffectiveness(effectiveness);
|
||||
}
|
||||
|
||||
toggleStats(visible: boolean): void {
|
||||
this.battleInfo.toggleStats(visible);
|
||||
}
|
||||
|
||||
toggleFlyout(visible: boolean): void {
|
||||
this.battleInfo.toggleFlyout(visible);
|
||||
this.battleInfo.flyoutMenu?.toggleFlyout(visible);
|
||||
}
|
||||
|
||||
addExp(exp: integer) {
|
||||
|
@ -166,10 +166,6 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
||||
return this.config.doubleOnly || this.variant === TrainerVariant.DOUBLE;
|
||||
}
|
||||
|
||||
getMixedBattleBgm(): string {
|
||||
return this.config.mixedBattleBgm;
|
||||
}
|
||||
|
||||
getBattleBgm(): string {
|
||||
return this.config.battleBgm;
|
||||
}
|
||||
|
@ -1,20 +1,17 @@
|
||||
import i18next from "i18next";
|
||||
import { classicFixedBattles, FixedBattleConfig, FixedBattleConfigs } from "./battle";
|
||||
import { fixedBattles } from "./battle";
|
||||
import BattleScene from "./battle-scene";
|
||||
import { allChallenges, applyChallenges, Challenge, ChallengeType, copyChallenge } from "./data/challenge";
|
||||
import { Biome } from "./data/enums/biome";
|
||||
import { Species } from "./data/enums/species";
|
||||
import PokemonSpecies, { allSpecies } from "./data/pokemon-species";
|
||||
import { Arena } from "./field/arena";
|
||||
import * as Overrides from "./overrides";
|
||||
import * as Utils from "./utils";
|
||||
import * as Overrides from "./overrides";
|
||||
|
||||
export enum GameModes {
|
||||
CLASSIC,
|
||||
ENDLESS,
|
||||
SPLICED_ENDLESS,
|
||||
DAILY,
|
||||
CHALLENGE
|
||||
DAILY
|
||||
}
|
||||
|
||||
interface GameModeConfig {
|
||||
@ -22,12 +19,12 @@ interface GameModeConfig {
|
||||
isEndless?: boolean;
|
||||
isDaily?: boolean;
|
||||
hasTrainers?: boolean;
|
||||
hasFixedBattles?: boolean;
|
||||
hasNoShop?: boolean;
|
||||
hasShortBiomes?: boolean;
|
||||
hasRandomBiomes?: boolean;
|
||||
hasRandomBosses?: boolean;
|
||||
isSplicedOnly?: boolean;
|
||||
isChallenge?: boolean;
|
||||
}
|
||||
|
||||
export class GameMode implements GameModeConfig {
|
||||
@ -36,23 +33,16 @@ export class GameMode implements GameModeConfig {
|
||||
public isEndless: boolean;
|
||||
public isDaily: boolean;
|
||||
public hasTrainers: boolean;
|
||||
public hasFixedBattles: boolean;
|
||||
public hasNoShop: boolean;
|
||||
public hasShortBiomes: boolean;
|
||||
public hasRandomBiomes: boolean;
|
||||
public hasRandomBosses: boolean;
|
||||
public isSplicedOnly: boolean;
|
||||
public isChallenge: boolean;
|
||||
public challenges: Challenge[];
|
||||
public battleConfig: FixedBattleConfigs;
|
||||
|
||||
constructor(modeId: GameModes, config: GameModeConfig, battleConfig?: FixedBattleConfigs) {
|
||||
constructor(modeId: GameModes, config: GameModeConfig) {
|
||||
this.modeId = modeId;
|
||||
this.challenges = [];
|
||||
Object.assign(this, config);
|
||||
if (this.isChallenge) {
|
||||
this.challenges = allChallenges.map(c => copyChallenge(c));
|
||||
}
|
||||
this.battleConfig = battleConfig || {};
|
||||
}
|
||||
|
||||
/**
|
||||
@ -122,7 +112,7 @@ export class GameMode implements GameModeConfig {
|
||||
if (w === waveIndex) {
|
||||
continue;
|
||||
}
|
||||
if ((w % 30) === (arena.scene.offsetGym ? 0 : 20) || this.isFixedBattle(waveIndex)) {
|
||||
if ((w % 30) === (arena.scene.offsetGym ? 0 : 20) || fixedBattles.hasOwnProperty(w)) {
|
||||
allowTrainerBattle = false;
|
||||
break;
|
||||
} else if (w < waveIndex) {
|
||||
@ -171,7 +161,6 @@ export class GameMode implements GameModeConfig {
|
||||
isWaveFinal(waveIndex: integer, modeId: GameModes = this.modeId): boolean {
|
||||
switch (modeId) {
|
||||
case GameModes.CLASSIC:
|
||||
case GameModes.CHALLENGE:
|
||||
return waveIndex === 200;
|
||||
case GameModes.ENDLESS:
|
||||
case GameModes.SPLICED_ENDLESS:
|
||||
@ -219,36 +208,10 @@ export class GameMode implements GameModeConfig {
|
||||
(this.modeId === GameModes.ENDLESS || this.modeId === GameModes.SPLICED_ENDLESS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether there is a fixed battle on this gamemode on a given wave.
|
||||
* @param {integer} waveIndex The wave to check.
|
||||
* @returns {boolean} If this game mode has a fixed battle on this wave
|
||||
*/
|
||||
isFixedBattle(waveIndex: integer): boolean {
|
||||
const dummyConfig = new FixedBattleConfig();
|
||||
return this.battleConfig.hasOwnProperty(waveIndex) || applyChallenges(this, ChallengeType.FIXED_BATTLES, waveIndex, dummyConfig);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the config for the fixed battle for a particular wave.
|
||||
* @param {integer} waveIndex The wave to check.
|
||||
* @returns {boolean} The fixed battle for this wave.
|
||||
*/
|
||||
getFixedBattle(waveIndex: integer): FixedBattleConfig {
|
||||
const challengeConfig = new FixedBattleConfig();
|
||||
if (applyChallenges(this, ChallengeType.FIXED_BATTLES, waveIndex, challengeConfig)) {
|
||||
return challengeConfig;
|
||||
} else {
|
||||
return this.battleConfig[waveIndex];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
getClearScoreBonus(): integer {
|
||||
switch (this.modeId) {
|
||||
case GameModes.CLASSIC:
|
||||
case GameModes.CHALLENGE:
|
||||
return 5000;
|
||||
case GameModes.DAILY:
|
||||
return 2500;
|
||||
@ -258,7 +221,6 @@ export class GameMode implements GameModeConfig {
|
||||
getEnemyModifierChance(isBoss: boolean): integer {
|
||||
switch (this.modeId) {
|
||||
case GameModes.CLASSIC:
|
||||
case GameModes.CHALLENGE:
|
||||
case GameModes.DAILY:
|
||||
return !isBoss ? 18 : 6;
|
||||
case GameModes.ENDLESS:
|
||||
@ -270,45 +232,20 @@ export class GameMode implements GameModeConfig {
|
||||
getName(): string {
|
||||
switch (this.modeId) {
|
||||
case GameModes.CLASSIC:
|
||||
return i18next.t("gameMode:classic");
|
||||
return "Classic";
|
||||
case GameModes.ENDLESS:
|
||||
return i18next.t("gameMode:endless");
|
||||
return "Endless";
|
||||
case GameModes.SPLICED_ENDLESS:
|
||||
return i18next.t("gameMode:endlessSpliced");
|
||||
return "Endless (Spliced)";
|
||||
case GameModes.DAILY:
|
||||
return i18next.t("gameMode:dailyRun");
|
||||
case GameModes.CHALLENGE:
|
||||
return i18next.t("gameMode:challenge");
|
||||
}
|
||||
}
|
||||
|
||||
static getModeName(modeId: GameModes): string {
|
||||
switch (modeId) {
|
||||
case GameModes.CLASSIC:
|
||||
return i18next.t("gameMode:classic");
|
||||
case GameModes.ENDLESS:
|
||||
return i18next.t("gameMode:endless");
|
||||
case GameModes.SPLICED_ENDLESS:
|
||||
return i18next.t("gameMode:endlessSpliced");
|
||||
case GameModes.DAILY:
|
||||
return i18next.t("gameMode:dailyRun");
|
||||
case GameModes.CHALLENGE:
|
||||
return i18next.t("gameMode:challenge");
|
||||
return "Daily Run";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function getGameMode(gameMode: GameModes): GameMode {
|
||||
switch (gameMode) {
|
||||
case GameModes.CLASSIC:
|
||||
return new GameMode(GameModes.CLASSIC, { isClassic: true, hasTrainers: true }, classicFixedBattles);
|
||||
case GameModes.ENDLESS:
|
||||
return new GameMode(GameModes.ENDLESS, { isEndless: true, hasShortBiomes: true, hasRandomBosses: true });
|
||||
case GameModes.SPLICED_ENDLESS:
|
||||
return new GameMode(GameModes.SPLICED_ENDLESS, { isEndless: true, hasShortBiomes: true, hasRandomBosses: true, isSplicedOnly: true });
|
||||
case GameModes.DAILY:
|
||||
return new GameMode(GameModes.DAILY, { isDaily: true, hasTrainers: true, hasNoShop: true });
|
||||
case GameModes.CHALLENGE:
|
||||
return new GameMode(GameModes.CHALLENGE, { isClassic: true, hasTrainers: true, isChallenge: true }, classicFixedBattles);
|
||||
}
|
||||
}
|
||||
export const gameModes = Object.freeze({
|
||||
[GameModes.CLASSIC]: new GameMode(GameModes.CLASSIC, { isClassic: true, hasTrainers: true, hasFixedBattles: true }),
|
||||
[GameModes.ENDLESS]: new GameMode(GameModes.ENDLESS, { isEndless: true, hasShortBiomes: true, hasRandomBosses: true }),
|
||||
[GameModes.SPLICED_ENDLESS]: new GameMode(GameModes.SPLICED_ENDLESS, { isEndless: true, hasShortBiomes: true, hasRandomBosses: true, isSplicedOnly: true }),
|
||||
[GameModes.DAILY]: new GameMode(GameModes.DAILY, { isDaily: true, hasTrainers: true, hasNoShop: true })
|
||||
});
|
||||
|
@ -18,10 +18,8 @@ import {initMoves} from "#app/data/move";
|
||||
import {initAbilities} from "#app/data/ability";
|
||||
import {initAchievements} from "#app/system/achv";
|
||||
import {initTrainerTypeDialogue} from "#app/data/dialogue";
|
||||
import { initChallenges } from "./data/challenge";
|
||||
import i18next from "i18next";
|
||||
import { initStatsKeys } from "./ui/game-stats-ui-handler";
|
||||
import { initVouchers } from "./system/voucher";
|
||||
|
||||
export class LoadingScene extends SceneBase {
|
||||
constructor() {
|
||||
@ -331,7 +329,6 @@ export class LoadingScene extends SceneBase {
|
||||
|
||||
this.loadLoadingScreen();
|
||||
|
||||
initVouchers();
|
||||
initAchievements();
|
||||
initStatsKeys();
|
||||
initPokemonPrevolutions();
|
||||
@ -342,7 +339,6 @@ export class LoadingScene extends SceneBase {
|
||||
initSpecies();
|
||||
initMoves();
|
||||
initAbilities();
|
||||
initChallenges();
|
||||
}
|
||||
|
||||
loadLoadingScreen() {
|
||||
@ -436,7 +432,7 @@ export class LoadingScene extends SceneBase {
|
||||
});
|
||||
|
||||
this.load.on("fileprogress", file => {
|
||||
assetText.setText(i18next.t("menu:loadingAsset", { assetName: file.key }));
|
||||
assetText.setText(`Loading asset: ${file.key}`);
|
||||
});
|
||||
|
||||
loadingGraphics.push(bg, graphics, progressBar, progressBox, logo, percentText, assetText);
|
||||
|
@ -1,67 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const challenges: SimpleTranslationEntries = {
|
||||
"title": "Challenge Modifiers",
|
||||
"points": "Bad Ideas",
|
||||
"confirm_start": "Proceed with these challenges?",
|
||||
"singleGeneration.name": "Mono Gen",
|
||||
"singleGeneration.value.0": "Off",
|
||||
"singleGeneration.desc.0": "You can only use pokemon from the chosen generation.",
|
||||
"singleGeneration.value.1": "Gen 1",
|
||||
"singleGeneration.desc.1": "You can only use pokemon from generation one.",
|
||||
"singleGeneration.value.2": "Gen 2",
|
||||
"singleGeneration.desc.2": "You can only use pokemon from generation two.",
|
||||
"singleGeneration.value.3": "Gen 3",
|
||||
"singleGeneration.desc.3": "You can only use pokemon from generation three.",
|
||||
"singleGeneration.value.4": "Gen 4",
|
||||
"singleGeneration.desc.4": "You can only use pokemon from generation four.",
|
||||
"singleGeneration.value.5": "Gen 5",
|
||||
"singleGeneration.desc.5": "You can only use pokemon from generation five.",
|
||||
"singleGeneration.value.6": "Gen 6",
|
||||
"singleGeneration.desc.6": "You can only use pokemon from generation six.",
|
||||
"singleGeneration.value.7": "Gen 7",
|
||||
"singleGeneration.desc.7": "You can only use pokemon from generation seven.",
|
||||
"singleGeneration.value.8": "Gen 8",
|
||||
"singleGeneration.desc.8": "You can only use pokemon from generation eight.",
|
||||
"singleGeneration.value.9": "Gen 9",
|
||||
"singleGeneration.desc.9": "You can only use pokemon from generation nine.",
|
||||
"singleType.name": "Mono Type",
|
||||
"singleType.value.0": "Off",
|
||||
"singleType.desc.0": "You can only use pokemon of the chosen type.",
|
||||
"singleType.value.1": "Normal",
|
||||
"singleType.desc.1": "You can only use pokemon with the Normal type.",
|
||||
"singleType.value.2": "Fighting",
|
||||
"singleType.desc.2": "You can only use pokemon with the Fighting type.",
|
||||
"singleType.value.3": "Flying",
|
||||
"singleType.desc.3": "You can only use pokemon with the Flying type.",
|
||||
"singleType.value.4": "Poison",
|
||||
"singleType.desc.4": "You can only use pokemon with the Poison type.",
|
||||
"singleType.value.5": "Ground",
|
||||
"singleType.desc.5": "You can only use pokemon with the Ground type.",
|
||||
"singleType.value.6": "Rock",
|
||||
"singleType.desc.6": "You can only use pokemon with the Rock type.",
|
||||
"singleType.value.7": "Bug",
|
||||
"singleType.desc.7": "You can only use pokemon with the Bug type.",
|
||||
"singleType.value.8": "Ghost",
|
||||
"singleType.desc.8": "You can only use pokemon with the Ghost type.",
|
||||
"singleType.value.9": "Steel",
|
||||
"singleType.desc.9": "You can only use pokemon with the Steel type.",
|
||||
"singleType.value.10": "Fire",
|
||||
"singleType.desc.10": "You can only use pokemon with the Fire type.",
|
||||
"singleType.value.11": "Water",
|
||||
"singleType.desc.11": "You can only use pokemon with the Water type.",
|
||||
"singleType.value.12": "Grass",
|
||||
"singleType.desc.12": "You can only use pokemon with the Grass type.",
|
||||
"singleType.value.13": "Electric",
|
||||
"singleType.desc.13": "You can only use pokemon with the Electric type.",
|
||||
"singleType.value.14": "Psychic",
|
||||
"singleType.desc.14": "You can only use pokemon with the Psychic type.",
|
||||
"singleType.value.15": "Ice",
|
||||
"singleType.desc.15": "You can only use pokemon with the Ice type.",
|
||||
"singleType.value.16": "Dragon",
|
||||
"singleType.desc.16": "You can only use pokemon with the Dragon type.",
|
||||
"singleType.value.17": "Dark",
|
||||
"singleType.desc.17": "You can only use pokemon with the Dark type.",
|
||||
"singleType.value.18": "Fairy",
|
||||
"singleType.desc.18": "You can only use pokemon with the Fairy type.",
|
||||
} as const;
|
@ -5,7 +5,6 @@ import { battle } from "./battle";
|
||||
import { battleMessageUiHandler } from "./battle-message-ui-handler";
|
||||
import { berry } from "./berry";
|
||||
import { biome } from "./biome";
|
||||
import { challenges } from "./challenges";
|
||||
import { commandUiHandler } from "./command-ui-handler";
|
||||
import {
|
||||
PGFbattleSpecDialogue,
|
||||
@ -19,7 +18,6 @@ import {
|
||||
} from "./dialogue";
|
||||
import { egg } from "./egg";
|
||||
import { fightUiHandler } from "./fight-ui-handler";
|
||||
import { gameMode } from "./game-mode";
|
||||
import { gameStatsUiHandler } from "./game-stats-ui-handler";
|
||||
import { growth } from "./growth";
|
||||
import { menu } from "./menu";
|
||||
@ -31,7 +29,6 @@ import { pokeball } from "./pokeball";
|
||||
import { pokemon } from "./pokemon";
|
||||
import { pokemonInfo } from "./pokemon-info";
|
||||
import { pokemonInfoContainer } from "./pokemon-info-container";
|
||||
import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler";
|
||||
import { splashMessages } from "./splash-messages";
|
||||
import { starterSelectUiHandler } from "./starter-select-ui-handler";
|
||||
import { titles, trainerClasses, trainerNames } from "./trainers";
|
||||
@ -48,7 +45,6 @@ export const deConfig = {
|
||||
battleMessageUiHandler: battleMessageUiHandler,
|
||||
berry: berry,
|
||||
biome: biome,
|
||||
challenges: challenges,
|
||||
commandUiHandler: commandUiHandler,
|
||||
PGMdialogue: PGMdialogue,
|
||||
PGFdialogue: PGFdialogue,
|
||||
@ -60,7 +56,6 @@ export const deConfig = {
|
||||
PGFdoubleBattleDialogue: PGFdoubleBattleDialogue,
|
||||
egg: egg,
|
||||
fightUiHandler: fightUiHandler,
|
||||
gameMode: gameMode,
|
||||
gameStatsUiHandler: gameStatsUiHandler,
|
||||
growth: growth,
|
||||
menu: menu,
|
||||
@ -72,7 +67,6 @@ export const deConfig = {
|
||||
pokemon: pokemon,
|
||||
pokemonInfo: pokemonInfo,
|
||||
pokemonInfoContainer: pokemonInfoContainer,
|
||||
saveSlotSelectUiHandler: saveSlotSelectUiHandler,
|
||||
splashMessages: splashMessages,
|
||||
starterSelectUiHandler: starterSelectUiHandler,
|
||||
titles: titles,
|
||||
|
@ -1,10 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const gameMode: SimpleTranslationEntries = {
|
||||
"classic": "Klassik",
|
||||
"endless": "Endlos",
|
||||
"endlessSpliced": "Endlos (Fusion)",
|
||||
"dailyRun": "Täglicher Run",
|
||||
"unknown": "Unbekannt",
|
||||
"challenge": "Challenge",
|
||||
} as const;
|
@ -45,8 +45,8 @@ export const menu: SimpleTranslationEntries = {
|
||||
"weeklyRankings": "Wöchentliche Rangliste",
|
||||
"noRankings": "Keine Rangliste",
|
||||
"loading": "Lade…",
|
||||
"loadingAsset": "Loading asset: {{assetName}}",
|
||||
"playersOnline": "Spieler Online",
|
||||
"empty":"Leer",
|
||||
"yes":"Ja",
|
||||
"no":"Nein",
|
||||
"disclaimer": "DISCLAIMER",
|
||||
|
@ -1,9 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const saveSlotSelectUiHandler: SimpleTranslationEntries = {
|
||||
"overwriteData": "Den ausgewählten Speicherstand überschreiben?",
|
||||
"loading": "Läd...",
|
||||
"wave": "Welle",
|
||||
"lv": "Lvl",
|
||||
"empty": "Leer",
|
||||
} as const;
|
@ -168,99 +168,4 @@ export const achv: AchievementTranslationEntries = {
|
||||
name: "Undefeated",
|
||||
description: "Beat the game in classic mode",
|
||||
},
|
||||
|
||||
"MONO_GEN_ONE": {
|
||||
name: "The Original Rival",
|
||||
description: "Complete the generation one only challenge.",
|
||||
},
|
||||
"MONO_GEN_TWO": {
|
||||
name: "Generation 1.5",
|
||||
description: "Complete the generation two only challenge.",
|
||||
},
|
||||
"MONO_GEN_THREE": {
|
||||
name: "Too much water?",
|
||||
description: "Complete the generation three only challenge.",
|
||||
},
|
||||
"MONO_GEN_FOUR": {
|
||||
name: "Is she really the hardest?",
|
||||
description: "Complete the generation four only challenge.",
|
||||
},
|
||||
"MONO_GEN_FIVE": {
|
||||
name: "All Original",
|
||||
description: "Complete the generation five only challenge.",
|
||||
},
|
||||
"MONO_GEN_SIX": {
|
||||
name: "Almost Royalty",
|
||||
description: "Complete the generation six only challenge.",
|
||||
},
|
||||
"MONO_GEN_SEVEN": {
|
||||
name: "Only Technically",
|
||||
description: "Complete the generation seven only challenge.",
|
||||
},
|
||||
"MONO_GEN_EIGHT": {
|
||||
name: "A Champion Time!",
|
||||
description: "Complete the generation eight only challenge.",
|
||||
},
|
||||
"MONO_GEN_NINE": {
|
||||
name: "She was going easy on you",
|
||||
description: "Complete the generation nine only challenge.",
|
||||
},
|
||||
|
||||
"MonoType": {
|
||||
description: "Complete the {{type}} monotype challenge.",
|
||||
},
|
||||
"MONO_NORMAL": {
|
||||
name: "Mono NORMAL",
|
||||
},
|
||||
"MONO_FIGHTING": {
|
||||
name: "I Know Kung Fu",
|
||||
},
|
||||
"MONO_FLYING": {
|
||||
name: "Mono FLYING",
|
||||
},
|
||||
"MONO_POISON": {
|
||||
name: "Kanto's Favourite",
|
||||
},
|
||||
"MONO_GROUND": {
|
||||
name: "Mono GROUND",
|
||||
},
|
||||
"MONO_ROCK": {
|
||||
name: "Brock Hard",
|
||||
},
|
||||
"MONO_BUG": {
|
||||
name: "Sting Like A Beedrill",
|
||||
},
|
||||
"MONO_GHOST": {
|
||||
name: "Who you gonna call?",
|
||||
},
|
||||
"MONO_STEEL": {
|
||||
name: "Mono STEEL",
|
||||
},
|
||||
"MONO_FIRE": {
|
||||
name: "Mono FIRE",
|
||||
},
|
||||
"MONO_WATER": {
|
||||
name: "When It Rains, It Pours",
|
||||
},
|
||||
"MONO_GRASS": {
|
||||
name: "Mono GRASS",
|
||||
},
|
||||
"MONO_ELECTRIC": {
|
||||
name: "Mono ELECTRIC",
|
||||
},
|
||||
"MONO_PSYCHIC": {
|
||||
name: "Mono PSYCHIC",
|
||||
},
|
||||
"MONO_ICE": {
|
||||
name: "Mono ICE",
|
||||
},
|
||||
"MONO_DRAGON": {
|
||||
name: "Mono DRAGON",
|
||||
},
|
||||
"MONO_DARK": {
|
||||
name: "It's just a phase",
|
||||
},
|
||||
"MONO_FAIRY": {
|
||||
name: "Mono FAIRY",
|
||||
},
|
||||
} as const;
|
||||
|
@ -1,67 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const challenges: SimpleTranslationEntries = {
|
||||
"title": "Challenge Modifiers",
|
||||
"start": "Start",
|
||||
"illegalEvolution": "{{pokemon}} changed into an ineligble pokemon\nfor this challenge!",
|
||||
"singleGeneration.name": "Mono Gen",
|
||||
"singleGeneration.value.0": "Off",
|
||||
"singleGeneration.desc.0": "You can only use pokemon from the chosen generation.",
|
||||
"singleGeneration.value.1": "Gen 1",
|
||||
"singleGeneration.desc.1": "You can only use pokemon from generation one.",
|
||||
"singleGeneration.value.2": "Gen 2",
|
||||
"singleGeneration.desc.2": "You can only use pokemon from generation two.",
|
||||
"singleGeneration.value.3": "Gen 3",
|
||||
"singleGeneration.desc.3": "You can only use pokemon from generation three.",
|
||||
"singleGeneration.value.4": "Gen 4",
|
||||
"singleGeneration.desc.4": "You can only use pokemon from generation four.",
|
||||
"singleGeneration.value.5": "Gen 5",
|
||||
"singleGeneration.desc.5": "You can only use pokemon from generation five.",
|
||||
"singleGeneration.value.6": "Gen 6",
|
||||
"singleGeneration.desc.6": "You can only use pokemon from generation six.",
|
||||
"singleGeneration.value.7": "Gen 7",
|
||||
"singleGeneration.desc.7": "You can only use pokemon from generation seven.",
|
||||
"singleGeneration.value.8": "Gen 8",
|
||||
"singleGeneration.desc.8": "You can only use pokemon from generation eight.",
|
||||
"singleGeneration.value.9": "Gen 9",
|
||||
"singleGeneration.desc.9": "You can only use pokemon from generation nine.",
|
||||
"singleType.name": "Mono Type",
|
||||
"singleType.value.0": "Off",
|
||||
"singleType.desc.0": "You can only use pokemon of the chosen type.",
|
||||
"singleType.value.1": "Normal",
|
||||
"singleType.desc.1": "You can only use pokemon with the Normal type.",
|
||||
"singleType.value.2": "Fighting",
|
||||
"singleType.desc.2": "You can only use pokemon with the Fighting type.",
|
||||
"singleType.value.3": "Flying",
|
||||
"singleType.desc.3": "You can only use pokemon with the Flying type.",
|
||||
"singleType.value.4": "Poison",
|
||||
"singleType.desc.4": "You can only use pokemon with the Poison type.",
|
||||
"singleType.value.5": "Ground",
|
||||
"singleType.desc.5": "You can only use pokemon with the Ground type.",
|
||||
"singleType.value.6": "Rock",
|
||||
"singleType.desc.6": "You can only use pokemon with the Rock type.",
|
||||
"singleType.value.7": "Bug",
|
||||
"singleType.desc.7": "You can only use pokemon with the Bug type.",
|
||||
"singleType.value.8": "Ghost",
|
||||
"singleType.desc.8": "You can only use pokemon with the Ghost type.",
|
||||
"singleType.value.9": "Steel",
|
||||
"singleType.desc.9": "You can only use pokemon with the Steel type.",
|
||||
"singleType.value.10": "Fire",
|
||||
"singleType.desc.10": "You can only use pokemon with the Fire type.",
|
||||
"singleType.value.11": "Water",
|
||||
"singleType.desc.11": "You can only use pokemon with the Water type.",
|
||||
"singleType.value.12": "Grass",
|
||||
"singleType.desc.12": "You can only use pokemon with the Grass type.",
|
||||
"singleType.value.13": "Electric",
|
||||
"singleType.desc.13": "You can only use pokemon with the Electric type.",
|
||||
"singleType.value.14": "Psychic",
|
||||
"singleType.desc.14": "You can only use pokemon with the Psychic type.",
|
||||
"singleType.value.15": "Ice",
|
||||
"singleType.desc.15": "You can only use pokemon with the Ice type.",
|
||||
"singleType.value.16": "Dragon",
|
||||
"singleType.desc.16": "You can only use pokemon with the Dragon type.",
|
||||
"singleType.value.17": "Dark",
|
||||
"singleType.desc.17": "You can only use pokemon with the Dark type.",
|
||||
"singleType.value.18": "Fairy",
|
||||
"singleType.desc.18": "You can only use pokemon with the Fairy type.",
|
||||
} as const;
|
@ -5,7 +5,6 @@ import { battle } from "./battle";
|
||||
import { battleMessageUiHandler } from "./battle-message-ui-handler";
|
||||
import { berry } from "./berry";
|
||||
import { biome } from "./biome";
|
||||
import { challenges } from "./challenges";
|
||||
import { commandUiHandler } from "./command-ui-handler";
|
||||
import {
|
||||
PGFbattleSpecDialogue,
|
||||
@ -19,7 +18,6 @@ import {
|
||||
} from "./dialogue";
|
||||
import { egg } from "./egg";
|
||||
import { fightUiHandler } from "./fight-ui-handler";
|
||||
import { gameMode } from "./game-mode";
|
||||
import { gameStatsUiHandler } from "./game-stats-ui-handler";
|
||||
import { growth } from "./growth";
|
||||
import { menu } from "./menu";
|
||||
@ -31,7 +29,6 @@ import { pokeball } from "./pokeball";
|
||||
import { pokemon } from "./pokemon";
|
||||
import { pokemonInfo } from "./pokemon-info";
|
||||
import { pokemonInfoContainer } from "./pokemon-info-container";
|
||||
import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler";
|
||||
import { splashMessages } from "./splash-messages";
|
||||
import { starterSelectUiHandler } from "./starter-select-ui-handler";
|
||||
import { titles, trainerClasses, trainerNames } from "./trainers";
|
||||
@ -48,7 +45,6 @@ export const enConfig = {
|
||||
battleMessageUiHandler: battleMessageUiHandler,
|
||||
berry: berry,
|
||||
biome: biome,
|
||||
challenges: challenges,
|
||||
commandUiHandler: commandUiHandler,
|
||||
PGMdialogue: PGMdialogue,
|
||||
PGFdialogue: PGFdialogue,
|
||||
@ -60,7 +56,6 @@ export const enConfig = {
|
||||
PGFdoubleBattleDialogue: PGFdoubleBattleDialogue,
|
||||
egg: egg,
|
||||
fightUiHandler: fightUiHandler,
|
||||
gameMode: gameMode,
|
||||
gameStatsUiHandler: gameStatsUiHandler,
|
||||
growth: growth,
|
||||
menu: menu,
|
||||
@ -72,7 +67,6 @@ export const enConfig = {
|
||||
pokemon: pokemon,
|
||||
pokemonInfo: pokemonInfo,
|
||||
pokemonInfoContainer: pokemonInfoContainer,
|
||||
saveSlotSelectUiHandler: saveSlotSelectUiHandler,
|
||||
splashMessages: splashMessages,
|
||||
starterSelectUiHandler: starterSelectUiHandler,
|
||||
titles: titles,
|
||||
|
@ -2372,7 +2372,7 @@ export const PGMdoubleBattleDialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"tate_liza_double": {
|
||||
"encounter": {
|
||||
1: `Tate: Are you surprised?
|
||||
1: `Tate: Are you suprised?
|
||||
$Liza: We are two gym leaders at once!
|
||||
$Tate: We are twins!
|
||||
$Liza: We dont need to talk to understand each other!
|
||||
@ -2386,7 +2386,7 @@ export const PGMdoubleBattleDialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"liza_tate_double": {
|
||||
"encounter": {
|
||||
1: `Liza: Hihihi... Are you surprised?
|
||||
1: `Liza: Hihihi... Are you suprised?
|
||||
$Tate: Yes, we are really two gym leaders at once!
|
||||
$Liza: This is my twin brother Tate!
|
||||
$Tate: And this is my twin sister Liza!
|
||||
|
@ -1,10 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const gameMode: SimpleTranslationEntries = {
|
||||
"classic": "Classic",
|
||||
"endless": "Endless",
|
||||
"endlessSpliced": "Endless (Spliced)",
|
||||
"dailyRun": "Daily Run",
|
||||
"unknown": "Unknown",
|
||||
"challenge": "Challenge",
|
||||
} as const;
|
@ -45,8 +45,8 @@ export const menu: SimpleTranslationEntries = {
|
||||
"weeklyRankings": "Weekly Rankings",
|
||||
"noRankings": "No Rankings",
|
||||
"loading": "Loading…",
|
||||
"loadingAsset": "Loading asset: {{assetName}}",
|
||||
"playersOnline": "Players Online",
|
||||
"empty":"Empty",
|
||||
"yes":"Yes",
|
||||
"no":"No",
|
||||
"disclaimer": "DISCLAIMER",
|
||||
|
@ -1,9 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const saveSlotSelectUiHandler: SimpleTranslationEntries = {
|
||||
"overwriteData": "Overwrite the data in the selected slot?",
|
||||
"loading": "Loading...",
|
||||
"wave": "Wave",
|
||||
"lv": "Lv",
|
||||
"empty": "Empty",
|
||||
} as const;
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
||||
"selectMoveSwapWith": "Select a move to swap with",
|
||||
"unlockPassive": "Unlock Passive",
|
||||
"reduceCost": "Reduce Cost",
|
||||
"cycleShiny": ": Cycle Shiny",
|
||||
"cycleForm": ": Cycle Form",
|
||||
"cycleGender": ": Cycle Gender",
|
||||
"cycleAbility": ": Cycle Ability",
|
||||
"cycleNature": ": Cycle Nature",
|
||||
"cycleVariant": ": Cycle Variant",
|
||||
"cycleShiny": "R: Cycle Shiny",
|
||||
"cycleForm": "F: Cycle Form",
|
||||
"cycleGender": "G: Cycle Gender",
|
||||
"cycleAbility": "E: Cycle Ability",
|
||||
"cycleNature": "N: Cycle Nature",
|
||||
"cycleVariant": "V: Cycle Variant",
|
||||
"enablePassive": "Enable Passive",
|
||||
"disablePassive": "Disable Passive",
|
||||
"locked": "Locked",
|
||||
|
@ -18,11 +18,11 @@ export const battle: SimpleTranslationEntries = {
|
||||
"partyFull": "Tu equipo esta completo.\n¿Quieres liberar un Pokémon para meter a {{pokemonName}}?",
|
||||
"pokemon": "Pokémon",
|
||||
"sendOutPokemon": "¡Adelante, {{pokemonName}}!",
|
||||
"hitResultCriticalHit": "¡Un golpe crítico!",
|
||||
"hitResultSuperEffective": "¡Es supereficaz!",
|
||||
"hitResultCriticalHit": "!Un golpe crítico!",
|
||||
"hitResultSuperEffective": "!Es supereficaz!",
|
||||
"hitResultNotVeryEffective": "No es muy eficaz…",
|
||||
"hitResultNoEffect": "No afecta a {{pokemonName}}!",
|
||||
"hitResultOneHitKO": "¡KO en 1 golpe!",
|
||||
"hitResultOneHitKO": "!KO en 1 golpe!",
|
||||
"attackFailed": "¡Pero ha fallado!",
|
||||
"attackHitsCount": "N.º de golpes: {{count}}.",
|
||||
"expGain": "{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.",
|
||||
@ -56,9 +56,9 @@ export const battle: SimpleTranslationEntries = {
|
||||
"skipItemQuestion": "¿Estás seguro de que no quieres coger un objeto?",
|
||||
"eggHatching": "¿Y esto?",
|
||||
"ivScannerUseQuestion": "¿Quieres usar el Escáner de IVs en {{pokemonName}}?",
|
||||
"wildPokemonWithAffix": "El {{pokemonName}} salvaje",
|
||||
"foePokemonWithAffix": "El {{pokemonName}} enemigo",
|
||||
"useMove": "¡{{pokemonNameWithAffix}} usó {{moveName}}!",
|
||||
"drainMessage": "¡{{pokemonName}} tuvo su\nenergía absorbida!",
|
||||
"regainHealth": "¡{{pokemonName}} recuperó\nPS!"
|
||||
"wildPokemonWithAffix": "Wild {{pokemonName}}",
|
||||
"foePokemonWithAffix": "Foe {{pokemonName}}",
|
||||
"useMove": "{{pokemonNameWithAffix}} used {{moveName}}!",
|
||||
"drainMessage": "{{pokemonName}} had its\nenergy drained!",
|
||||
"regainHealth": "{{pokemonName}} regained\nhealth!"
|
||||
} as const;
|
||||
|
@ -1,67 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const challenges: SimpleTranslationEntries = {
|
||||
"title": "Parámetros de Desafíos",
|
||||
"points": "Malas Ideas",
|
||||
"confirm_start": "¿Continuar con estos desafíos?",
|
||||
"singleGeneration.name": "Monogeneración",
|
||||
"singleGeneration.value.0": "No",
|
||||
"singleGeneration.desc.0": "Solo puedes usar Pokémon de la generación elegida.",
|
||||
"singleGeneration.value.1": "Gen 1",
|
||||
"singleGeneration.desc.1": "Solo puedes usar Pokémon de primera generación.",
|
||||
"singleGeneration.value.2": "Gen 2",
|
||||
"singleGeneration.desc.2": "Solo puedes usar Pokémon de segunda generación.",
|
||||
"singleGeneration.value.3": "Gen 3",
|
||||
"singleGeneration.desc.3": "Solo puedes usar Pokémon de tercera generación.",
|
||||
"singleGeneration.value.4": "Gen 4",
|
||||
"singleGeneration.desc.4": "Solo puedes usar Pokémon de cuarta generación.",
|
||||
"singleGeneration.value.5": "Gen 5",
|
||||
"singleGeneration.desc.5": "Solo puedes usar Pokémon de quinta generación.",
|
||||
"singleGeneration.value.6": "Gen 6",
|
||||
"singleGeneration.desc.6": "Solo puedes usar Pokémon de sexta generación.",
|
||||
"singleGeneration.value.7": "Gen 7",
|
||||
"singleGeneration.desc.7": "Solo puedes usar Pokémon de séptima generación.",
|
||||
"singleGeneration.value.8": "Gen 8",
|
||||
"singleGeneration.desc.8": "Solo puedes usar Pokémon de octava generación.",
|
||||
"singleGeneration.value.9": "Gen 9",
|
||||
"singleGeneration.desc.9": "Solo puedes usar Pokémon de novena generación.",
|
||||
"singleType.name": "Monotipo",
|
||||
"singleType.value.0": "No",
|
||||
"singleType.desc.0": "Solo puedes usar Pokémon del tipo elegido",
|
||||
"singleType.value.1": "Normal",
|
||||
"singleType.desc.1": "Solo puedes usar Pokémon de tipo Normal.",
|
||||
"singleType.value.2": "Lucha",
|
||||
"singleType.desc.2": "Solo puedes usar Pokémon de tipo Lucha.",
|
||||
"singleType.value.3": "Volador",
|
||||
"singleType.desc.3": "Solo puedes usar Pokémon de tipo Volador.",
|
||||
"singleType.value.4": "Veneno",
|
||||
"singleType.desc.4": "Solo puedes usar Pokémon de tipo Veneno.",
|
||||
"singleType.value.5": "Tierra",
|
||||
"singleType.desc.5": "Solo puedes usar Pokémon de tipo Tierra.",
|
||||
"singleType.value.6": "Roca",
|
||||
"singleType.desc.6": "Solo puedes usar Pokémon de tipo Roca.",
|
||||
"singleType.value.7": "Bicho",
|
||||
"singleType.desc.7": "Solo puedes usar Pokémon de tipo Bicho.",
|
||||
"singleType.value.8": "Fantasma",
|
||||
"singleType.desc.8": "Solo puedes usar Pokémon de tipo Fantasma.",
|
||||
"singleType.value.9": "Acero",
|
||||
"singleType.desc.9": "Solo puedes usar Pokémon de tipo Acero.",
|
||||
"singleType.value.10": "Fuego",
|
||||
"singleType.desc.10": "Solo puedes usar Pokémon de tipo Fuego.",
|
||||
"singleType.value.11": "Agua",
|
||||
"singleType.desc.11": "Solo puedes usar Pokémon de tipo Agua.",
|
||||
"singleType.value.12": "Planta",
|
||||
"singleType.desc.12": "Solo puedes usar Pokémon de tipo Planta.",
|
||||
"singleType.value.13": "Eléctrico",
|
||||
"singleType.desc.13": "Solo puedes usar Pokémon de tipo Eléctrico.",
|
||||
"singleType.value.14": "Psíquico",
|
||||
"singleType.desc.14": "Solo puedes usar Pokémon de tipo Psíquico.",
|
||||
"singleType.value.15": "Hielo",
|
||||
"singleType.desc.15": "Solo puedes usar Pokémon de tipo Hielo.",
|
||||
"singleType.value.16": "Dragón",
|
||||
"singleType.desc.16": "Solo puedes usar Pokémon de tipo Dragón.",
|
||||
"singleType.value.17": "Siniestro",
|
||||
"singleType.desc.17": "Solo puedes usar Pokémon de tipo Siniestro.",
|
||||
"singleType.value.18": "Hada",
|
||||
"singleType.desc.18": "Solo puedes usar Pokémon de tipo Hada.",
|
||||
} as const;
|
@ -5,7 +5,6 @@ import { battle } from "./battle";
|
||||
import { battleMessageUiHandler } from "./battle-message-ui-handler";
|
||||
import { berry } from "./berry";
|
||||
import { biome } from "./biome";
|
||||
import { challenges } from "./challenges";
|
||||
import { commandUiHandler } from "./command-ui-handler";
|
||||
import {
|
||||
PGFbattleSpecDialogue,
|
||||
@ -19,7 +18,6 @@ import {
|
||||
} from "./dialogue";
|
||||
import { egg } from "./egg";
|
||||
import { fightUiHandler } from "./fight-ui-handler";
|
||||
import { gameMode } from "./game-mode";
|
||||
import { gameStatsUiHandler } from "./game-stats-ui-handler";
|
||||
import { growth } from "./growth";
|
||||
import { menu } from "./menu";
|
||||
@ -31,7 +29,6 @@ import { pokeball } from "./pokeball";
|
||||
import { pokemon } from "./pokemon";
|
||||
import { pokemonInfo } from "./pokemon-info";
|
||||
import { pokemonInfoContainer } from "./pokemon-info-container";
|
||||
import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler";
|
||||
import { splashMessages } from "./splash-messages";
|
||||
import { starterSelectUiHandler } from "./starter-select-ui-handler";
|
||||
import { titles, trainerClasses, trainerNames } from "./trainers";
|
||||
@ -48,7 +45,6 @@ export const esConfig = {
|
||||
battleMessageUiHandler: battleMessageUiHandler,
|
||||
berry: berry,
|
||||
biome: biome,
|
||||
challenges: challenges,
|
||||
commandUiHandler: commandUiHandler,
|
||||
PGMdialogue: PGMdialogue,
|
||||
PGFdialogue: PGFdialogue,
|
||||
@ -60,7 +56,6 @@ export const esConfig = {
|
||||
PGFdoubleBattleDialogue: PGFdoubleBattleDialogue,
|
||||
egg: egg,
|
||||
fightUiHandler: fightUiHandler,
|
||||
gameMode: gameMode,
|
||||
gameStatsUiHandler: gameStatsUiHandler,
|
||||
growth: growth,
|
||||
menu: menu,
|
||||
@ -72,7 +67,6 @@ export const esConfig = {
|
||||
pokemon: pokemon,
|
||||
pokemonInfo: pokemonInfo,
|
||||
pokemonInfoContainer: pokemonInfoContainer,
|
||||
saveSlotSelectUiHandler: saveSlotSelectUiHandler,
|
||||
splashMessages: splashMessages,
|
||||
starterSelectUiHandler: starterSelectUiHandler,
|
||||
titles: titles,
|
||||
|
@ -1,10 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const gameMode: SimpleTranslationEntries = {
|
||||
"classic": "Clásica",
|
||||
"endless": "Infinita",
|
||||
"endlessSpliced": "Infinita (Fusión)",
|
||||
"dailyRun": "Diaria",
|
||||
"unknown": "Desconicido",
|
||||
"challenge": "Desafío",
|
||||
} as const;
|
@ -45,10 +45,10 @@ export const menu: SimpleTranslationEntries = {
|
||||
"weeklyRankings": "Rankings Semanales",
|
||||
"noRankings": "Sin Rankings",
|
||||
"loading": "Cargando…",
|
||||
"loadingAsset": "Cargando recurso: {{assetName}}",
|
||||
"playersOnline": "Jugadores en Línea",
|
||||
"empty":"Vacío",
|
||||
"yes":"Sí",
|
||||
"no":"No",
|
||||
"disclaimer": "AVISO",
|
||||
"disclaimerDescription": "Este juego es un producto inacabado; puede tener problemas de jugabilidad (incluyendo la posible pérdida de datos de guardado),\ncambiar sin avisar, y puede o no puede ser actualizado hasta ser completado."
|
||||
"disclaimer": "DISCLAIMER",
|
||||
"disclaimerDescription": "This game is an unfinished product; it might have playability issues (including the potential loss of save data),\n change without notice, and may or may not be updated further or completed."
|
||||
} as const;
|
||||
|
@ -130,7 +130,7 @@ export const modifierType: ModifierTypeTranslationEntries = {
|
||||
},
|
||||
|
||||
"RARE_CANDY": { name: "Carameloraro" },
|
||||
"RARER_CANDY": { name: "Caramelorarísimo" },
|
||||
"RARER_CANDY": { name: "Rarer Candy" },
|
||||
|
||||
"MEGA_BRACELET": { name: "Mega-aro", description: "Las Megapiedras están disponibles" },
|
||||
"DYNAMAX_BAND": { name: "Maximuñequera", description: "Las Maxisetas están disponibles" },
|
||||
@ -162,14 +162,14 @@ export const modifierType: ModifierTypeTranslationEntries = {
|
||||
"PP_UP": { name: "Más PP" },
|
||||
"PP_MAX": { name: "Máx PP" },
|
||||
|
||||
"LURE": { name: "Incienso" },
|
||||
"SUPER_LURE": { name: "Superincienso" },
|
||||
"MAX_LURE": { name: "Incienso Máximo" },
|
||||
"LURE": { name: "Lure" },
|
||||
"SUPER_LURE": { name: "Super Lure" },
|
||||
"MAX_LURE": { name: "Max Lure" },
|
||||
|
||||
"MEMORY_MUSHROOM": { name: "Seta Recuerdo", description: "Recuerda un movimiento olvidado de un Pokémon." },
|
||||
"MEMORY_MUSHROOM": { name: "Memory Mushroom", description: "Recall one Pokémon's forgotten move" },
|
||||
|
||||
"EXP_SHARE": { name: "Repartir EXP", description: "Los que no combatan reciben el 20% de la EXP" },
|
||||
"EXP_BALANCE": { name: "Equilibrar EXP", description: "Da mayor parte de la EXP recibida a los miembros del equipo que tengan menos nivel" },
|
||||
"EXP_BALANCE": { name: "EXP. Balance", description: "Da mayor parte de la EXP recibida a los miembros del equipo que tengan menos nivel" },
|
||||
|
||||
"OVAL_CHARM": { name: "Amuleto Oval", description: "Cada Pokémon combatiente recibe un 10% adicional de la EXP total" },
|
||||
|
||||
@ -197,7 +197,7 @@ export const modifierType: ModifierTypeTranslationEntries = {
|
||||
"GRIP_CLAW": { name: "Garra Garfio" },
|
||||
"WIDE_LENS": { name: "Lupa" },
|
||||
|
||||
"MULTI_LENS": { name: "Multilupa" },
|
||||
"MULTI_LENS": { name: "Multi Lens" },
|
||||
|
||||
"HEALING_CHARM": { name: "Amuleto curación", description: "Aumenta la efectividad de los movimientos y objetos de curacion de PS en un 10% (excepto revivir)" },
|
||||
"CANDY_JAR": { name: "Candy Jar", description: "Aumenta en 1 el número de niveles añadidos por los carameloraros" },
|
||||
@ -216,7 +216,7 @@ export const modifierType: ModifierTypeTranslationEntries = {
|
||||
"TOXIC_ORB": { name: "Toxiesfera", description: "Extraña esfera que envenena gravemente a quien la usa en combate" },
|
||||
"FLAME_ORB": { name: "Llamasfera", description: "Extraña esfera que causa quemaduras a quien la usa en combate" },
|
||||
|
||||
"BATON": { name: "Relevo", description: "Permite pasar los efectos al cambiar de Pokémon, también evita las trampas" },
|
||||
"BATON": { name: "Baton", description: "Permite pasar los efectos al cambiar de Pokémon, también evita las trampas" },
|
||||
|
||||
"SHINY_CHARM": { name: "Amuleto Iris", description: "Aumenta drásticamente la posibilidad de que un Pokémon salvaje sea Shiny" },
|
||||
"ABILITY_CHARM": { name: "Amuleto Habilidad", description: "Aumenta drásticamente la posibilidad de que un Pokémon salvaje tenga una habilidad oculta" },
|
||||
@ -229,15 +229,15 @@ export const modifierType: ModifierTypeTranslationEntries = {
|
||||
|
||||
"GOLDEN_POKEBALL": { name: "Poké Ball Dorada", description: "Agrega 1 opción de objeto extra al final de cada combate" },
|
||||
|
||||
"ENEMY_DAMAGE_BOOSTER": { name: "Ficha Daño", description: "Aumenta el daño en un 5%" },
|
||||
"ENEMY_DAMAGE_REDUCTION": { name: "Ficha Protección", description: "Reduce el daño recibido en un 2,5%" },
|
||||
"ENEMY_HEAL": { name: "Ficha Curación", description: "Cura el 2% de los PS máximo en cada turno" },
|
||||
"ENEMY_ATTACK_POISON_CHANCE": { name: "Ficha Veneno" },
|
||||
"ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Ficha Parálisis" },
|
||||
"ENEMY_ATTACK_BURN_CHANCE": { name: "Ficha Quemadura" },
|
||||
"ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Ficha Cura Total", description: "Agrega un 2.5% de probabilidad cada turno de curar un problema de estado" },
|
||||
"ENEMY_ENDURE_CHANCE": { name: "Ficha Aguante" },
|
||||
"ENEMY_FUSED_CHANCE": { name: "Ficha Fusión", description: "Agrega un 1% de probabilidad de que un Pokémon salvaje sea una fusión" },
|
||||
"ENEMY_DAMAGE_BOOSTER": { name: "Damage Token", description: "Aumenta el daño en un 5%" },
|
||||
"ENEMY_DAMAGE_REDUCTION": { name: "Protection Token", description: "Reduce el daño recibido en un 2,5%" },
|
||||
"ENEMY_HEAL": { name: "Recovery Token", description: "Cura el 2% de los PS máximo en cada turno" },
|
||||
"ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" },
|
||||
"ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" },
|
||||
"ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" },
|
||||
"ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Agrega un 2.5% de probabilidad cada turno de curar un problema de estado" },
|
||||
"ENEMY_ENDURE_CHANCE": { name: "Endure Token" },
|
||||
"ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Agrega un 1% de probabilidad de que un Pokémon salvaje sea una fusión" },
|
||||
},
|
||||
TempBattleStatBoosterItem: {
|
||||
"x_attack": "Ataque X",
|
||||
|
@ -1,9 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const saveSlotSelectUiHandler: SimpleTranslationEntries = {
|
||||
"overwriteData": "¿Sobrescribir los datos en la ranura seleccionada?",
|
||||
"loading": "Cargando...",
|
||||
"wave": "Oleada",
|
||||
"lv": "Nv",
|
||||
"empty": "Vacío",
|
||||
} as const;
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
||||
"selectMoveSwapWith": "Elige el movimiento que sustituirá a",
|
||||
"unlockPassive": "Añadir Pasiva",
|
||||
"reduceCost": "Reducir Coste",
|
||||
"cycleShiny": ": Cambiar Shiny",
|
||||
"cycleForm": ": Cambiar Forma",
|
||||
"cycleGender": ": Cambiar Género",
|
||||
"cycleAbility": ": Cambiar Habilidad",
|
||||
"cycleNature": ": Cambiar Naturaleza",
|
||||
"cycleVariant": ": Cambiar Variante",
|
||||
"cycleShiny": "R: Cambiar Shiny",
|
||||
"cycleForm": "F: Cambiar Forma",
|
||||
"cycleGender": "G: Cambiar Género",
|
||||
"cycleAbility": "E: Cambiar Habilidad",
|
||||
"cycleNature": "N: Cambiar Naturaleza",
|
||||
"cycleVariant": "V: Cambiar Variante",
|
||||
"enablePassive": "Activar Pasiva",
|
||||
"disablePassive": "Desactivar Pasiva",
|
||||
"locked": "Bloqueado",
|
||||
|
@ -1,67 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const challenges: SimpleTranslationEntries = {
|
||||
"title": "Paramètres du Challenge",
|
||||
"points": "Bad Ideas",
|
||||
"confirm_start": "Continuer avec ces paramètres ?",
|
||||
"singleGeneration.name": "Mono-génération",
|
||||
"singleGeneration.value.0": "Désactivé",
|
||||
"singleGeneration.desc.0": "Vous ne pouvez choisir que des Pokémon de la génération sélectionnée.",
|
||||
"singleGeneration.value.1": "1G",
|
||||
"singleGeneration.desc.1": "Vous ne pouvez choisir que des Pokémon de 1re génération.",
|
||||
"singleGeneration.value.2": "2G",
|
||||
"singleGeneration.desc.2": "Vous ne pouvez choisir que des Pokémon de 2e génération.",
|
||||
"singleGeneration.value.3": "3G",
|
||||
"singleGeneration.desc.3": "Vous ne pouvez choisir que des Pokémon de 3e génération.",
|
||||
"singleGeneration.value.4": "4G",
|
||||
"singleGeneration.desc.4": "Vous ne pouvez choisir que des Pokémon de 4e génération.",
|
||||
"singleGeneration.value.5": "5G",
|
||||
"singleGeneration.desc.5": "Vous ne pouvez choisir que des Pokémon de 5e génération.",
|
||||
"singleGeneration.value.6": "6G",
|
||||
"singleGeneration.desc.6": "Vous ne pouvez choisir que des Pokémon de 6e génération.",
|
||||
"singleGeneration.value.7": "7G",
|
||||
"singleGeneration.desc.7": "Vous ne pouvez choisir que des Pokémon de 7e génération.",
|
||||
"singleGeneration.value.8": "8G",
|
||||
"singleGeneration.desc.8": "Vous ne pouvez choisir que des Pokémon de 8e génération.",
|
||||
"singleGeneration.value.9": "9G",
|
||||
"singleGeneration.desc.9": "Vous ne pouvez choisir que des Pokémon de 9e génération.",
|
||||
"singleType.name": "Mono-type",
|
||||
"singleType.value.0": "Désactivé",
|
||||
"singleType.desc.0": "Vous ne pouvez choisir que des Pokémon du type sélectionné.",
|
||||
"singleType.value.1": "Normal",
|
||||
"singleType.desc.1": "Vous ne pouvez choisir que des Pokémon de type Normal.",
|
||||
"singleType.value.2": "Combat",
|
||||
"singleType.desc.2": "Vous ne pouvez choisir que des Pokémon de type Combat.",
|
||||
"singleType.value.3": "Vol",
|
||||
"singleType.desc.3": "Vous ne pouvez choisir que des Pokémon de type Vol.",
|
||||
"singleType.value.4": "Poison",
|
||||
"singleType.desc.4": "Vous ne pouvez choisir que des Pokémon de type Poison.",
|
||||
"singleType.value.5": "Sol",
|
||||
"singleType.desc.5": "Vous ne pouvez choisir que des Pokémon de type Sol.",
|
||||
"singleType.value.6": "Roche",
|
||||
"singleType.desc.6": "Vous ne pouvez choisir que des Pokémon de type Roche.",
|
||||
"singleType.value.7": "Insecte",
|
||||
"singleType.desc.7": "Vous ne pouvez choisir que des Pokémon de type Insecte.",
|
||||
"singleType.value.8": "Spectre",
|
||||
"singleType.desc.8": "Vous ne pouvez choisir que des Pokémon de type Spectre.",
|
||||
"singleType.value.9": "Acier",
|
||||
"singleType.desc.9": "Vous ne pouvez choisir que des Pokémon de type Acier.",
|
||||
"singleType.value.10": "Feu",
|
||||
"singleType.desc.10": "Vous ne pouvez choisir que des Pokémon de type Feu.",
|
||||
"singleType.value.11": "Eau",
|
||||
"singleType.desc.11": "Vous ne pouvez choisir que des Pokémon de type Eau.",
|
||||
"singleType.value.12": "Plante",
|
||||
"singleType.desc.12": "Vous ne pouvez choisir que des Pokémon de type Plante.",
|
||||
"singleType.value.13": "Électrik",
|
||||
"singleType.desc.13": "Vous ne pouvez choisir que des Pokémon de type Électrik.",
|
||||
"singleType.value.14": "Psy",
|
||||
"singleType.desc.14": "Vous ne pouvez choisir que des Pokémon de type Psy.",
|
||||
"singleType.value.15": "Glace",
|
||||
"singleType.desc.15": "Vous ne pouvez choisir que des Pokémon de type Glace.",
|
||||
"singleType.value.16": "Dragon",
|
||||
"singleType.desc.16": "Vous ne pouvez choisir que des Pokémon de type Dragon.",
|
||||
"singleType.value.17": "Ténèbres",
|
||||
"singleType.desc.17": "Vous ne pouvez choisir que des Pokémon de type Ténèbres.",
|
||||
"singleType.value.18": "Fée",
|
||||
"singleType.desc.18": "Vous ne pouvez choisir que des Pokémon de type Fée.",
|
||||
} as const;
|
@ -5,7 +5,6 @@ import { battle } from "./battle";
|
||||
import { battleMessageUiHandler } from "./battle-message-ui-handler";
|
||||
import { berry } from "./berry";
|
||||
import { biome } from "./biome";
|
||||
import { challenges } from "./challenges";
|
||||
import { commandUiHandler } from "./command-ui-handler";
|
||||
import {
|
||||
PGFbattleSpecDialogue,
|
||||
@ -19,7 +18,6 @@ import {
|
||||
} from "./dialogue";
|
||||
import { egg } from "./egg";
|
||||
import { fightUiHandler } from "./fight-ui-handler";
|
||||
import { gameMode } from "./game-mode";
|
||||
import { gameStatsUiHandler } from "./game-stats-ui-handler";
|
||||
import { growth } from "./growth";
|
||||
import { menu } from "./menu";
|
||||
@ -31,7 +29,6 @@ import { pokeball } from "./pokeball";
|
||||
import { pokemon } from "./pokemon";
|
||||
import { pokemonInfo } from "./pokemon-info";
|
||||
import { pokemonInfoContainer } from "./pokemon-info-container";
|
||||
import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler";
|
||||
import { splashMessages } from "./splash-messages";
|
||||
import { starterSelectUiHandler } from "./starter-select-ui-handler";
|
||||
import { titles, trainerClasses, trainerNames } from "./trainers";
|
||||
@ -48,7 +45,6 @@ export const frConfig = {
|
||||
battleMessageUiHandler: battleMessageUiHandler,
|
||||
berry: berry,
|
||||
biome: biome,
|
||||
challenges: challenges,
|
||||
commandUiHandler: commandUiHandler,
|
||||
PGMdialogue: PGMdialogue,
|
||||
PGFdialogue: PGFdialogue,
|
||||
@ -60,7 +56,6 @@ export const frConfig = {
|
||||
PGFdoubleBattleDialogue: PGFdoubleBattleDialogue,
|
||||
egg: egg,
|
||||
fightUiHandler: fightUiHandler,
|
||||
gameMode: gameMode,
|
||||
gameStatsUiHandler: gameStatsUiHandler,
|
||||
growth: growth,
|
||||
menu: menu,
|
||||
@ -72,7 +67,6 @@ export const frConfig = {
|
||||
pokemon: pokemon,
|
||||
pokemonInfo: pokemonInfo,
|
||||
pokemonInfoContainer: pokemonInfoContainer,
|
||||
saveSlotSelectUiHandler: saveSlotSelectUiHandler,
|
||||
splashMessages: splashMessages,
|
||||
starterSelectUiHandler: starterSelectUiHandler,
|
||||
titles: titles,
|
||||
|
@ -1,10 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const gameMode: SimpleTranslationEntries = {
|
||||
"classic": "Classique",
|
||||
"endless": "Infini",
|
||||
"endlessSpliced": "Infini (Fusions)",
|
||||
"dailyRun": "Défi du jour",
|
||||
"unknown": "Inconnu",
|
||||
"challenge": "Challenge",
|
||||
} as const;
|
@ -40,10 +40,10 @@ export const menu: SimpleTranslationEntries = {
|
||||
"weeklyRankings": "Classement de la Semaine",
|
||||
"noRankings": "Pas de Classement",
|
||||
"loading": "Chargement…",
|
||||
"loadingAsset": "Loading asset: {{assetName}}",
|
||||
"playersOnline": "Joueurs Connectés",
|
||||
"empty":"Vide",
|
||||
"yes":"Oui",
|
||||
"no":"Non",
|
||||
"disclaimer": "AVERTISSEMENT",
|
||||
"disclaimerDescription": "Ce jeu n’est pas un produit fini et peut contenir des problèmes de jouabilité, dont de possibles pertes de sauvegardes,\ndes modifications sans avertissement et pourrait ou non encore être mis à jour ou terminé."
|
||||
"disclaimer": "DISCLAIMER",
|
||||
"disclaimerDescription": "This game is an unfinished product; it might have playability issues (including the potential loss of save data),\n change without notice, and may or may not be updated further or completed."
|
||||
} as const;
|
||||
|
@ -1,9 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const saveSlotSelectUiHandler: SimpleTranslationEntries = {
|
||||
"overwriteData": "Effacer les données de l’emplacement sélectionné ?",
|
||||
"loading": "Chargement…",
|
||||
"wave": "Vague",
|
||||
"lv": "N.",
|
||||
"empty": "Vide",
|
||||
} as const;
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
||||
"selectMoveSwapWith": "Sélectionnez laquelle échanger avec",
|
||||
"unlockPassive": "Débloquer Passif",
|
||||
"reduceCost": "Diminuer le cout",
|
||||
"cycleShiny": ": » Chromatiques",
|
||||
"cycleForm": ": » Formes",
|
||||
"cycleGender": ": » Sexes",
|
||||
"cycleAbility": ": » Talents",
|
||||
"cycleNature": ": » Natures",
|
||||
"cycleVariant": ": » Variants",
|
||||
"cycleShiny": "R: » Chromatiques",
|
||||
"cycleForm": "F: » Formes",
|
||||
"cycleGender": "G: » Sexes",
|
||||
"cycleAbility": "E: » Talents",
|
||||
"cycleNature": "N: » Natures",
|
||||
"cycleVariant": "V: » Variants",
|
||||
"enablePassive": "Activer Passif",
|
||||
"disablePassive": "Désactiver Passif",
|
||||
"locked": "Verrouillé",
|
||||
|
@ -1,67 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const challenges: SimpleTranslationEntries = {
|
||||
"title": "Challenge Modifiers",
|
||||
"points": "Bad Ideas",
|
||||
"confirm_start": "Proceed with these challenges?",
|
||||
"singleGeneration.name": "Mono Gen",
|
||||
"singleGeneration.value.0": "Off",
|
||||
"singleGeneration.desc.0": "You can only use pokemon from the chosen generation.",
|
||||
"singleGeneration.value.1": "Gen 1",
|
||||
"singleGeneration.desc.1": "You can only use pokemon from generation one.",
|
||||
"singleGeneration.value.2": "Gen 2",
|
||||
"singleGeneration.desc.2": "You can only use pokemon from generation two.",
|
||||
"singleGeneration.value.3": "Gen 3",
|
||||
"singleGeneration.desc.3": "You can only use pokemon from generation three.",
|
||||
"singleGeneration.value.4": "Gen 4",
|
||||
"singleGeneration.desc.4": "You can only use pokemon from generation four.",
|
||||
"singleGeneration.value.5": "Gen 5",
|
||||
"singleGeneration.desc.5": "You can only use pokemon from generation five.",
|
||||
"singleGeneration.value.6": "Gen 6",
|
||||
"singleGeneration.desc.6": "You can only use pokemon from generation six.",
|
||||
"singleGeneration.value.7": "Gen 7",
|
||||
"singleGeneration.desc.7": "You can only use pokemon from generation seven.",
|
||||
"singleGeneration.value.8": "Gen 8",
|
||||
"singleGeneration.desc.8": "You can only use pokemon from generation eight.",
|
||||
"singleGeneration.value.9": "Gen 9",
|
||||
"singleGeneration.desc.9": "You can only use pokemon from generation nine.",
|
||||
"singleType.name": "Mono Type",
|
||||
"singleType.value.0": "Off",
|
||||
"singleType.desc.0": "You can only use pokemon of the chosen type.",
|
||||
"singleType.value.1": "Normal",
|
||||
"singleType.desc.1": "You can only use pokemon with the Normal type.",
|
||||
"singleType.value.2": "Fighting",
|
||||
"singleType.desc.2": "You can only use pokemon with the Fighting type.",
|
||||
"singleType.value.3": "Flying",
|
||||
"singleType.desc.3": "You can only use pokemon with the Flying type.",
|
||||
"singleType.value.4": "Poison",
|
||||
"singleType.desc.4": "You can only use pokemon with the Poison type.",
|
||||
"singleType.value.5": "Ground",
|
||||
"singleType.desc.5": "You can only use pokemon with the Ground type.",
|
||||
"singleType.value.6": "Rock",
|
||||
"singleType.desc.6": "You can only use pokemon with the Rock type.",
|
||||
"singleType.value.7": "Bug",
|
||||
"singleType.desc.7": "You can only use pokemon with the Bug type.",
|
||||
"singleType.value.8": "Ghost",
|
||||
"singleType.desc.8": "You can only use pokemon with the Ghost type.",
|
||||
"singleType.value.9": "Steel",
|
||||
"singleType.desc.9": "You can only use pokemon with the Steel type.",
|
||||
"singleType.value.10": "Fire",
|
||||
"singleType.desc.10": "You can only use pokemon with the Fire type.",
|
||||
"singleType.value.11": "Water",
|
||||
"singleType.desc.11": "You can only use pokemon with the Water type.",
|
||||
"singleType.value.12": "Grass",
|
||||
"singleType.desc.12": "You can only use pokemon with the Grass type.",
|
||||
"singleType.value.13": "Electric",
|
||||
"singleType.desc.13": "You can only use pokemon with the Electric type.",
|
||||
"singleType.value.14": "Psychic",
|
||||
"singleType.desc.14": "You can only use pokemon with the Psychic type.",
|
||||
"singleType.value.15": "Ice",
|
||||
"singleType.desc.15": "You can only use pokemon with the Ice type.",
|
||||
"singleType.value.16": "Dragon",
|
||||
"singleType.desc.16": "You can only use pokemon with the Dragon type.",
|
||||
"singleType.value.17": "Dark",
|
||||
"singleType.desc.17": "You can only use pokemon with the Dark type.",
|
||||
"singleType.value.18": "Fairy",
|
||||
"singleType.desc.18": "You can only use pokemon with the Fairy type.",
|
||||
} as const;
|
@ -5,7 +5,6 @@ import { battle } from "./battle";
|
||||
import { battleMessageUiHandler } from "./battle-message-ui-handler";
|
||||
import { berry } from "./berry";
|
||||
import { biome } from "./biome";
|
||||
import { challenges } from "./challenges";
|
||||
import { commandUiHandler } from "./command-ui-handler";
|
||||
import {
|
||||
PGFbattleSpecDialogue,
|
||||
@ -19,7 +18,6 @@ import {
|
||||
} from "./dialogue";
|
||||
import { egg } from "./egg";
|
||||
import { fightUiHandler } from "./fight-ui-handler";
|
||||
import { gameMode } from "./game-mode";
|
||||
import { gameStatsUiHandler } from "./game-stats-ui-handler";
|
||||
import { growth } from "./growth";
|
||||
import { menu } from "./menu";
|
||||
@ -31,7 +29,6 @@ import { pokeball } from "./pokeball";
|
||||
import { pokemon } from "./pokemon";
|
||||
import { pokemonInfo } from "./pokemon-info";
|
||||
import { pokemonInfoContainer } from "./pokemon-info-container";
|
||||
import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler";
|
||||
import { splashMessages } from "./splash-messages";
|
||||
import { starterSelectUiHandler } from "./starter-select-ui-handler";
|
||||
import { titles, trainerClasses, trainerNames } from "./trainers";
|
||||
@ -48,7 +45,6 @@ export const itConfig = {
|
||||
battleMessageUiHandler: battleMessageUiHandler,
|
||||
berry: berry,
|
||||
biome: biome,
|
||||
challenges: challenges,
|
||||
commandUiHandler: commandUiHandler,
|
||||
PGMdialogue: PGMdialogue,
|
||||
PGFdialogue: PGFdialogue,
|
||||
@ -60,7 +56,6 @@ export const itConfig = {
|
||||
PGFdoubleBattleDialogue: PGFdoubleBattleDialogue,
|
||||
egg: egg,
|
||||
fightUiHandler: fightUiHandler,
|
||||
gameMode: gameMode,
|
||||
gameStatsUiHandler: gameStatsUiHandler,
|
||||
growth: growth,
|
||||
menu: menu,
|
||||
@ -72,7 +67,6 @@ export const itConfig = {
|
||||
pokemon: pokemon,
|
||||
pokemonInfo: pokemonInfo,
|
||||
pokemonInfoContainer: pokemonInfoContainer,
|
||||
saveSlotSelectUiHandler: saveSlotSelectUiHandler,
|
||||
splashMessages: splashMessages,
|
||||
starterSelectUiHandler: starterSelectUiHandler,
|
||||
titles: titles,
|
||||
|
@ -1,10 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const gameMode: SimpleTranslationEntries = {
|
||||
"classic": "Classic",
|
||||
"endless": "Endless",
|
||||
"endlessSpliced": "Endless (Spliced)",
|
||||
"dailyRun": "Daily Run",
|
||||
"unknown": "Unknown",
|
||||
"challenge": "Challenge",
|
||||
} as const;
|
@ -40,13 +40,13 @@ export const menu: SimpleTranslationEntries = {
|
||||
"weeklyRankings": "Classifica Settimanale",
|
||||
"noRankings": "Nessuna Classifica",
|
||||
"loading": "Caricamento…",
|
||||
"loadingAsset": "Loading asset: {{assetName}}",
|
||||
"playersOnline": "Giocatori Online",
|
||||
"evolving": "Cosa?\n{{pokemonName}} si evolvendo!",
|
||||
"stoppedEvolving": "{{pokemonName}} ha smesso di evolversi.",
|
||||
"pauseEvolutionsQuestion": "Vuoi sospendere le evoluzioni per {{pokemonName}}?\nLe evoluzioni possono essere riattivate dalla schermata del party.",
|
||||
"evolutionsPaused": "Le evoluzioni sono state sospese per {{pokemonName}}.",
|
||||
"evolutionDone": "Congratulazioni!\n{{pokemonName}} si è evoluto in {{evolvedPokemonName}}!",
|
||||
"empty":"Vuoto",
|
||||
"yes":"Si",
|
||||
"no":"No",
|
||||
"disclaimer": "DISCLAIMER",
|
||||
|
@ -1,9 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const saveSlotSelectUiHandler: SimpleTranslationEntries = {
|
||||
"overwriteData": "Overwrite the data in the selected slot?",
|
||||
"loading": "Loading...",
|
||||
"wave": "Wave",
|
||||
"lv": "Lv",
|
||||
"empty": "Vuoto",
|
||||
} as const;
|
@ -30,12 +30,12 @@ export const starterSelectUiHandler: SimpleTranslationEntries = {
|
||||
"selectMoveSwapWith": "Seleziona una mossa da scambiare con",
|
||||
"unlockPassive": "Sblocca Passiva",
|
||||
"reduceCost": "Riduci Costo",
|
||||
"cycleShiny": ": Alterna Shiny",
|
||||
"cycleForm": ": Alterna Forma",
|
||||
"cycleGender": ": Alterna Sesso",
|
||||
"cycleAbility": ": Alterna Abilità",
|
||||
"cycleNature": ": Alterna Natura",
|
||||
"cycleVariant": ": Alterna Variante",
|
||||
"cycleShiny": "R: Alterna Shiny",
|
||||
"cycleForm": "F: Alterna Forma",
|
||||
"cycleGender": "G: Alterna Sesso",
|
||||
"cycleAbility": "E: Alterna Abilità",
|
||||
"cycleNature": "N: Alterna Natura",
|
||||
"cycleVariant": "V: Alterna Variante",
|
||||
"enablePassive": "Attiva Passiva",
|
||||
"disablePassive": "Disattiva Passiva",
|
||||
"locked": "Bloccato",
|
||||
|
@ -1,67 +0,0 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const challenges: SimpleTranslationEntries = {
|
||||
"title": "챌린지 조건 설정",
|
||||
"points": "Bad Ideas",
|
||||
"confirm_start": "이 조건으로 챌린지를 진행하시겠습니까?",
|
||||
"singleGeneration.name": "단일 세대",
|
||||
"singleGeneration.value.0": "설정 안함",
|
||||
"singleGeneration.desc.0": "선택한 세대의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleGeneration.value.1": "1세대",
|
||||
"singleGeneration.desc.1": "1세대의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleGeneration.value.2": "2세대",
|
||||
"singleGeneration.desc.2": "2세대의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleGeneration.value.3": "3세대",
|
||||
"singleGeneration.desc.3": "3세대의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleGeneration.value.4": "4세대",
|
||||
"singleGeneration.desc.4": "4세대의 포켓몬만 사용할 수 있습니다r",
|
||||
"singleGeneration.value.5": "5세대",
|
||||
"singleGeneration.desc.5": "5세대의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleGeneration.value.6": "6세대",
|
||||
"singleGeneration.desc.6": "6세대의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleGeneration.value.7": "7세대",
|
||||
"singleGeneration.desc.7": "7세대의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleGeneration.value.8": "8세대",
|
||||
"singleGeneration.desc.8": "8세대의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleGeneration.value.9": "9세대",
|
||||
"singleGeneration.desc.9": "9세대의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.name": "단일 타입",
|
||||
"singleType.value.0": "설정 안함",
|
||||
"singleType.desc.0": "선택한 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.1": "노말",
|
||||
"singleType.desc.1": "노말 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.2": "격투",
|
||||
"singleType.desc.2": "격투 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.3": "비행",
|
||||
"singleType.desc.3": "비행 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.4": "독",
|
||||
"singleType.desc.4": "독 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.5": "땅",
|
||||
"singleType.desc.5": "땅 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.6": "바위 ",
|
||||
"singleType.desc.6": "바위 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.7": "벌레",
|
||||
"singleType.desc.7": "벌레 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.8": "고스트",
|
||||
"singleType.desc.8": "고스트 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.9": "강철",
|
||||
"singleType.desc.9": "강철 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.10": "불꽃",
|
||||
"singleType.desc.10": "불꽃 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.11": "물",
|
||||
"singleType.desc.11": "물 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.12": "풀",
|
||||
"singleType.desc.12": "풀 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.13": "전기",
|
||||
"singleType.desc.13": "전기 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.14": "에스퍼",
|
||||
"singleType.desc.14": "에스퍼 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.15": "얼음",
|
||||
"singleType.desc.15": "얼음 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.16": "드래곤",
|
||||
"singleType.desc.16": "드래곤 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.17": "악",
|
||||
"singleType.desc.17": "악 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
"singleType.value.18": "페어리",
|
||||
"singleType.desc.18": "페어리 타입의 포켓몬만 사용할 수 있습니다.",
|
||||
} as const;
|
@ -5,7 +5,6 @@ import { battle } from "./battle";
|
||||
import { battleMessageUiHandler } from "./battle-message-ui-handler";
|
||||
import { berry } from "./berry";
|
||||
import { biome } from "./biome";
|
||||
import { challenges } from "./challenges";
|
||||
import { commandUiHandler } from "./command-ui-handler";
|
||||
import {
|
||||
PGFbattleSpecDialogue,
|
||||
@ -19,7 +18,6 @@ import {
|
||||
} from "./dialogue";
|
||||
import { egg } from "./egg";
|
||||
import { fightUiHandler } from "./fight-ui-handler";
|
||||
import { gameMode } from "./game-mode";
|
||||
import { gameStatsUiHandler } from "./game-stats-ui-handler";
|
||||
import { growth } from "./growth";
|
||||
import { menu } from "./menu";
|
||||
@ -31,7 +29,6 @@ import { pokeball } from "./pokeball";
|
||||
import { pokemon } from "./pokemon";
|
||||
import { pokemonInfo } from "./pokemon-info";
|
||||
import { pokemonInfoContainer } from "./pokemon-info-container";
|
||||
import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler";
|
||||
import { splashMessages } from "./splash-messages";
|
||||
import { starterSelectUiHandler } from "./starter-select-ui-handler";
|
||||
import { titles, trainerClasses, trainerNames } from "./trainers";
|
||||
@ -48,7 +45,6 @@ export const koConfig = {
|
||||
battleMessageUiHandler: battleMessageUiHandler,
|
||||
berry: berry,
|
||||
biome: biome,
|
||||
challenges: challenges,
|
||||
commandUiHandler: commandUiHandler,
|
||||
PGMdialogue: PGMdialogue,
|
||||
PGFdialogue: PGFdialogue,
|
||||
@ -60,7 +56,6 @@ export const koConfig = {
|
||||
PGFdoubleBattleDialogue: PGFdoubleBattleDialogue,
|
||||
egg: egg,
|
||||
fightUiHandler: fightUiHandler,
|
||||
gameMode: gameMode,
|
||||
gameStatsUiHandler: gameStatsUiHandler,
|
||||
growth: growth,
|
||||
menu: menu,
|
||||
@ -72,7 +67,6 @@ export const koConfig = {
|
||||
pokemon: pokemon,
|
||||
pokemonInfo: pokemonInfo,
|
||||
pokemonInfoContainer: pokemonInfoContainer,
|
||||
saveSlotSelectUiHandler: saveSlotSelectUiHandler,
|
||||
splashMessages: splashMessages,
|
||||
starterSelectUiHandler: starterSelectUiHandler,
|
||||
titles: titles,
|
||||
|
@ -697,19 +697,19 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"falkner": {
|
||||
"encounter": {
|
||||
1: "넓은 하늘을 화려하게 나는 새 포켓몬의 진정한 강함을 알게 해주겠다!",
|
||||
2: "바람이여, 나에게 오라!",
|
||||
3: "아버지, 내 시합을 하늘에서도 봐줘!"
|
||||
1: "I'll show you the real power of the magnificent bird Pokémon!",
|
||||
2: "Winds, stay with me!",
|
||||
3: "Dad! I hope you're watching me battle from above!"
|
||||
},
|
||||
"victory": {
|
||||
1: "알았다… 미련없이 땅에 내려가지.",
|
||||
2: "패배는 패배니까. 넌 정말 강하군.",
|
||||
3: "…큭! 그래, 내가 졌다."
|
||||
1: "I understand… I'll bow out gracefully.",
|
||||
2: "A defeat is a defeat. You are strong indeed.",
|
||||
3: "…Shoot! Yeah, I lost."
|
||||
},
|
||||
"defeat": {
|
||||
1: "아버지! 소중히 여기던 새 포켓몬으로 이겼어…",
|
||||
2: "언제나 새 포켓몬이 최강이다!",
|
||||
3: "아버지를 따라 잡은 기분이군!"
|
||||
1: "Dad! I won with your cherished bird Pokémon…",
|
||||
2: "Bird Pokémon are the best after all!",
|
||||
3: "Feels like I'm catching up to my dad!"
|
||||
}
|
||||
},
|
||||
"nessa": {
|
||||
@ -874,83 +874,83 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"morty": {
|
||||
"encounter": {
|
||||
1: `조금만 더 노력하면, 내가 전설의 포켓몬을 만나는 미래가 보여.
|
||||
$내가 그 수준에 도달할 수 있게 도와줘!`,
|
||||
2: `커다란 무지개색 포켓몬은 진정한 강함을 가진 트레이너 앞에 나타난다는 이야기가 있어.
|
||||
$난 그 이야기를 믿고, 줄곧 이 곳에서 몰래 수행하고 있어. 그 결과로, 다른 사람들은 볼 수 없는 것을 볼 수 있게 됐지.
|
||||
$내겐 그 포켓몬을 나타나게 할 사람의 그림자가 보이거든.
|
||||
$난 그게 나라고 믿어! 넌 내가 그 수준에 올라갈 수 있도록 도와줘야겠어!`,
|
||||
3: "네가 믿든 믿지 않든, 불가사의한 힘은 존재해.",
|
||||
4: "넌 내 수련의 결실을 보게 될 거야.",
|
||||
5: "포켓몬과 너의 영혼을 하나로 만들어야 해. 가능하겠어?",
|
||||
6: "저기, 너 내 수행의 일부분이 되고 싶은거지?"
|
||||
1: `With a little more, I could see a future in which I meet the legendary Pokémon.
|
||||
$You're going to help me reach that level!`,
|
||||
2: `It's said that a rainbow-hued Pokémon will come down to appear before a truly powerful Trainer.
|
||||
$I believed that tale, so I have secretly trained here all my life. As a result, I can now see what others cannot.
|
||||
$I see a shadow of the person who will make the Pokémon appear.
|
||||
$I believe that person is me! You're going to help me reach that level!`,
|
||||
3: "Whether you choose to believe or not, mystic power does exist.",
|
||||
4: "You can bear witness to the fruits of my training.",
|
||||
5: "You must make your soul one with that of Pokémon. Can you do this?",
|
||||
6: "Say, do you want to be part of my training?"
|
||||
},
|
||||
"victory": {
|
||||
1: "나는 아직 멀었구나…",
|
||||
2: `그래… 여행으로 먼 곳을 돌아다니면서, 나보다 훨씬 많은 것을 봐왔구나.
|
||||
$네가 조금 부럽네…`,
|
||||
3: "이게 어떻게 가능한 거지…",
|
||||
4: `우리의 잠재력은 그렇게 다르진 않은 것 같아.
|
||||
$그치만 넌 그것과 다른 무언가를 많이 갖고 있는 것 같네… 흐음.`,
|
||||
5: "수련이 더 필요하겠군.",
|
||||
6: "안타깝게 됐네."
|
||||
1: "I'm not good enough yet…",
|
||||
2: `I see… Your journey has taken you to far-away places and you have witnessed much more than I.
|
||||
$I envy you for that…`,
|
||||
3: "How is this possible…",
|
||||
4: `I don't think our potentials are so different.
|
||||
$But you seem to have something more than that… So be it.`,
|
||||
5: "Guess I need more training.",
|
||||
6: "That's a shame."
|
||||
},
|
||||
"defeat": {
|
||||
1: "내가…다시 한 발짝 앞섰어.",
|
||||
2: "후후훗…",
|
||||
3: "뭐-뭐야?! 이럴 수가! 그것도 부족해?",
|
||||
4: "정말 단단한 바위를 뚫고 나온 기분인데!",
|
||||
5: "아하하하하!",
|
||||
6: "내가 이길 줄 알았어!"
|
||||
1: "I moved… one step ahead again.",
|
||||
2: "Fufufu…",
|
||||
3: "Wh-what?! It can't be! Even that wasn't enough?",
|
||||
4: "I feel like I just smashed through a really stubborn boulder!",
|
||||
5: "Ahahahah!",
|
||||
6: "I knew I would win!"
|
||||
}
|
||||
},
|
||||
"crispin": {
|
||||
"encounter": {
|
||||
1: "이기고 싶으니까 이기고 말겠어!",
|
||||
2: "싸우고 싶으면 싸운다! 이거면 충분하지 않아!?"
|
||||
1: "I wanna win, so that's exactly what I'll do!",
|
||||
2: "I battle because I wanna battle! And you know what? That's how it should be!"
|
||||
},
|
||||
"victory": {
|
||||
1: "이기고 싶었는데…졌잖아!",
|
||||
2: "이기지 못해서…지고 말았어!"
|
||||
1: "I wanted to win…but I lost!",
|
||||
2: "I lost…'cause I couldn't win!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "잠시만. 나 지금 이긴거지? 이긴 거 맞지! 기분 좋은데!",
|
||||
2: "우와아! 이거 굉장한데!"
|
||||
1: "Hey, wait a sec. Did I just win? I think I just won! Talk about satisfying!",
|
||||
2: "Wooo! That was amazing!"
|
||||
}
|
||||
},
|
||||
"amarys": {
|
||||
"encounter": {
|
||||
1: `네리네는 그 사람을 구원하고 싶습니다. 그렇기에 패배는 용납되지 않습니다.
|
||||
$… 승부를 시작합니다.`,
|
||||
1: `I want to be the one to help a certain person. That being the case, I cannot afford to lose.
|
||||
$… Our battle starts now.`,
|
||||
},
|
||||
"victory": {
|
||||
1: "네리네는… 안 된다는 건가요."
|
||||
1: "I am… not enough, I see."
|
||||
},
|
||||
"defeat": {
|
||||
1: "네리네가 승리했습니다. 수고하셨습니다."
|
||||
1: "Victory belongs to me. Well fought."
|
||||
}
|
||||
},
|
||||
"lacey": {
|
||||
"encounter": {
|
||||
1: "이번에는 사천왕으로서 승부하는 거니까 평소 사용하는 아이들로 상대해 드릴게요!"
|
||||
1: "I'll be facing you with my usual party as a member of the Elite Four."
|
||||
},
|
||||
"victory": {
|
||||
1: "멋진 포켓몬 배틀이었어요!"
|
||||
1: "That was a great battle!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "당신의 포켓몬의 노력에 박수를 보내주세요!"
|
||||
1: "Let's give your Pokémon a nice round of applause for their efforts!"
|
||||
}
|
||||
},
|
||||
"drayton": {
|
||||
"encounter": {
|
||||
1: `의자는 좋은 거야. 너도 그렇게 생각해? 정말 고마운 물건이지.
|
||||
$왜 다들 앉지 않는 걸까. 서 있는 건 힘들잖아!`,
|
||||
1: `Man, I love chairs. Don't you love chairs? What lifesavers.
|
||||
$I don't get why everyone doesn't just sit all the time. Standing up's tiring work!`,
|
||||
},
|
||||
"victory": {
|
||||
1: "전보다 더 강해질 줄이야!"
|
||||
1: "Guess I should've expected that!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "헤헤헷! 내 승리야. 분한 건 알겠지만 카지처럼 나가떨어지지마, 응?"
|
||||
1: "Heh heh! Don't mind me, just scooping up a W over here. I get it if you're upset, but don't go full Kieran on me, OK?"
|
||||
}
|
||||
},
|
||||
"ramos": {
|
||||
@ -1146,26 +1146,26 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"lorelei": {
|
||||
"encounter": {
|
||||
1: `얼음포켓몬을 내보내면 대적할 사람이 없지! 상대를 얼린다는 건 매우 강력한 공격이야.
|
||||
$네 포켓몬이 꽁꽁 얼면 그때부턴 내 손바닥 위거든! 아하하! 준비됐어?`,
|
||||
1: `No one can best me when it comes to icy Pokémon! Freezing moves are powerful!
|
||||
$Your Pokémon will be at my mercy when they are frozen solid! Hahaha! Are you ready?`,
|
||||
},
|
||||
"victory": {
|
||||
1: "어떻게 감히!"
|
||||
1: "How dare you!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "얼어붙은 넌 아무것도 할 수 없어."
|
||||
1: "There's nothing you can do once you're frozen."
|
||||
}
|
||||
},
|
||||
"will": {
|
||||
"encounter": {
|
||||
1: `나는 전세계를 돌아다니며, 강한 에스퍼 포켓몬을 만들도록 수행해왔다.
|
||||
$계속 더 정진하겠다! 패배는 선택지에 없어!`,
|
||||
1: `I have trained all around the world, making my psychic Pokémon powerful.
|
||||
$I can only keep getting better! Losing is not an option!`,
|
||||
},
|
||||
"victory": {
|
||||
1: "이… 내가… 믿을수 없어…"
|
||||
1: "I… I can't… believe it…"
|
||||
},
|
||||
"defeat": {
|
||||
1: "근소한 차이였다. 네게 부족한 것이 무엇인지 궁금하군."
|
||||
1: "That was close. I wonder what it is that you lack."
|
||||
}
|
||||
},
|
||||
"malva": {
|
||||
@ -1216,35 +1216,35 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"bruno": {
|
||||
"encounter": {
|
||||
1: "우월한 힘으로 너를 부숴주지! 우! 하~앗!"
|
||||
1: "We will grind you down with our superior power! Hoo hah!"
|
||||
},
|
||||
"victory": {
|
||||
1: "하? 어떻게 내가 진 거지?"
|
||||
1: "Why? How could I lose?"
|
||||
},
|
||||
"defeat": {
|
||||
1: "얼마든지 내게 도전 할 수 있지만, 결과는 절대 바뀌지 않을 거다!"
|
||||
1: "You can challenge me all you like, but the results will never change!"
|
||||
}
|
||||
},
|
||||
"bugsy": {
|
||||
"encounter": {
|
||||
1: "내 이름은 호일! 벌레 포켓몬에 대해서라면 누구에게도 지지 않아!"
|
||||
1: "I'm Bugsy! I never lose when it comes to bug Pokémon!"
|
||||
},
|
||||
"victory": {
|
||||
1: "우와, 대단해! 넌 포켓몬 전문가구나!\n내 연구는 아직 안 끝났네. 응, 네가 이겼어."
|
||||
1: "Whoa, amazing! You're an expert on Pokémon!\nMy research isn't complete yet. OK, you win."
|
||||
},
|
||||
"defeat": {
|
||||
1: "고마워! 방금 승부 덕분에, 내 연구도 진전을 이룬 것 같아!"
|
||||
1: "Thanks! Thanks to our battle, I was also able to make progress in my research!"
|
||||
}
|
||||
},
|
||||
"koga": {
|
||||
"encounter": {
|
||||
1: "후하하하! 포켓몬은 딘순히 강한 것만이 아니다--곧 알려주지!"
|
||||
1: "Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!"
|
||||
},
|
||||
"victory": {
|
||||
1: "하! 스스로 증명해냈군!"
|
||||
1: "Ah! You've proven your worth!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "인술을 피하는 방법을 배워보겠나?"
|
||||
1: "Have you learned to fear the techniques of the ninja?"
|
||||
}
|
||||
},
|
||||
"bertha": {
|
||||
@ -1319,13 +1319,13 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"agatha": {
|
||||
"encounter": {
|
||||
1: "포켓몬은 싸우게 하려고 있는 것이야! 진정한 싸움이라는 것을 보여주겠다!"
|
||||
1: "Pokémon are for battling! I'll show you how a real Trainer battles!"
|
||||
},
|
||||
"victory": {
|
||||
1: "이런! 넌 무언가 특별하구나, 꼬마야!"
|
||||
1: "Oh my! You're something special, child!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "바하하하. 제대로 된 승부는 이렇게 하는거다!"
|
||||
1: "Bahaha. That's how a proper battle's done!"
|
||||
}
|
||||
},
|
||||
"flint": {
|
||||
@ -1414,33 +1414,33 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"lance": {
|
||||
"encounter": {
|
||||
1: "널 기다리고 있었다. 그 실력을 시험해보겠어.",
|
||||
2: "여기까지 올 수 있을거라고 생각했다. 슬슬 시작해볼까."
|
||||
1: "I've been waiting for you. Allow me to test your skill.",
|
||||
2: "I thought that you would be able to get this far. Let's get this started."
|
||||
},
|
||||
"victory": {
|
||||
1: "날 따라잡았군. 훌륭해!",
|
||||
2: "다른 트레이너가 날 이길 거라곤 생각 못했는데… 놀랍군."
|
||||
1: "You got me. You are magnificent!",
|
||||
2: "I never expected another trainer to beat me… I'm surprised."
|
||||
},
|
||||
"defeat": {
|
||||
1: "근소하군. 다시 해볼까?",
|
||||
2: "네가 약해서가 아니다. 신경쓰지 말도록."
|
||||
1: "That was close. Want to try again?",
|
||||
2: "It's not that you are weak. Don't let it bother you."
|
||||
}
|
||||
},
|
||||
"karen": {
|
||||
"encounter": {
|
||||
1: "난 카렌! 내 악 타입 포켓몬과의 승부를 원하니?",
|
||||
2: "난 네가 이전에 만났던 트레이너들과는 달라.",
|
||||
3: "강한 포켓몬, 약한 포켓몬, 그런 건 사람이 멋대로 정하는 것."
|
||||
1: "I am Karen. Would you care for a showdown with my Dark-type Pokémon?",
|
||||
2: "I am unlike those you've already met.",
|
||||
3: "You've assembled a charming team. Our battle should be a good one."
|
||||
},
|
||||
"victory": {
|
||||
1: "좋아하는 마음이 전해진다면 포켓몬도 답할거야. 그렇게 강해지는 거지",
|
||||
2: "난 내가 선택한 길을 걸어갈거야.",
|
||||
3: "챔피언이 너를 기다리고 있어."
|
||||
1: "No! I can't win. How did you become so strong?",
|
||||
2: "I will not stray from my chosen path.",
|
||||
3: "The Champion is looking forward to meeting you."
|
||||
},
|
||||
"defeat": {
|
||||
1: "정말 강한 트레이너라면 좋아하는 포켓몬으로 이길 수 있도록 열심히 해야 해.",
|
||||
2: "뭐, 비교적 재밌었어.",
|
||||
3: "언제라도 다시 찾아와, 상대해줄게."
|
||||
1: "That's about what I expected.",
|
||||
2: "Well, that was relatively entertaining.",
|
||||
3: "Come visit me anytime."
|
||||
}
|
||||
},
|
||||
"milo": {
|
||||
@ -1507,13 +1507,13 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"blue": {
|
||||
"encounter": {
|
||||
1: "여기까지 왔다니, 실력이 꽤 봐줄만 할 것 같은데."
|
||||
1: "You must be pretty good to get this far."
|
||||
},
|
||||
"victory": {
|
||||
1: "그 녀석한테만 지는 줄 알았는데… 누구냐고? 하, 하…"
|
||||
1: "I've only lost to him and now to you… Him? Hee, hee…"
|
||||
},
|
||||
"defeat": {
|
||||
1: "봤지? 여기까지 온 내 실력."
|
||||
1: "See? My power is what got me here."
|
||||
}
|
||||
},
|
||||
"piers": {
|
||||
@ -1540,24 +1540,24 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"jasmine": {
|
||||
"encounter": {
|
||||
1: "와… 당신의 포켓몬은 인상적이네요. 재미있을 것 같아요."
|
||||
1: "Oh… Your Pokémon are impressive. I think I will enjoy this."
|
||||
},
|
||||
"victory": {
|
||||
1: "당신은 정말 강하네요. 저도 더 열심히 노력해야겠어요."
|
||||
1: "You are truly strong. I'll have to try much harder, too."
|
||||
},
|
||||
"defeat": {
|
||||
1: "이길 줄은 몰랐어요."
|
||||
1: "I never expected to win."
|
||||
}
|
||||
},
|
||||
"lance_champion": {
|
||||
"encounter": {
|
||||
1: "여전히 난 챔피언이다. 더이상 주저할 게 없군."
|
||||
1: "I am still the Champion. I won't hold anything back."
|
||||
},
|
||||
"victory": {
|
||||
1: "새로운 챔피언의 등장이군."
|
||||
1: "This is the emergence of a new Champion."
|
||||
},
|
||||
"defeat": {
|
||||
1: "성공적으로 챔피언 자리를 지켜냈다."
|
||||
1: "I successfully defended my Championship."
|
||||
}
|
||||
},
|
||||
"steven": {
|
||||
@ -1652,24 +1652,24 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"whitney": {
|
||||
"encounter": {
|
||||
1: "있지! 포켓몬들 말이야, 정말 너무 귀엽지?"
|
||||
1: "Hey! Don't you think Pokémon are, like, super cute?"
|
||||
},
|
||||
"victory": {
|
||||
1: "흑! 으아앙! 너무해!"
|
||||
1: "Waaah! Waaah! You're so mean!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "이걸로 끝!"
|
||||
1: "And that's that!"
|
||||
}
|
||||
},
|
||||
"chuck": {
|
||||
"encounter": {
|
||||
1: "하! 나에게 도전하겠다고? 용감한 거냐, 아니면 그냥 무모한 거냐?"
|
||||
1: "Hah! You want to challenge me? Are you brave or just ignorant?"
|
||||
},
|
||||
"victory": {
|
||||
1: "자네 강하군! 나를 제자로 삼아주겠나?"
|
||||
1: "You're strong! Would you please make me your apprentice?"
|
||||
},
|
||||
"defeat": {
|
||||
1: "자. 내가 자네보다 얼마나 더 강력한지 깨달았겠지?"
|
||||
1: "There. Do you realize how much more powerful I am than you?"
|
||||
}
|
||||
},
|
||||
"katy": {
|
||||
@ -1685,24 +1685,24 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"pryce": {
|
||||
"encounter": {
|
||||
1: "젊음만으로는 승리를 보장할 수 없다! 중요한 것은 경험이다."
|
||||
1: "Youth alone does not ensure victory! Experience is what counts."
|
||||
},
|
||||
"victory": {
|
||||
1: "특출하군! 완벽해. 지금 이 느낌을 잊지 말도록."
|
||||
1: "Outstanding! That was perfect. Try not to forget what you feel now."
|
||||
},
|
||||
"defeat": {
|
||||
1: "내가 예상했던 그대로군."
|
||||
1: "Just as I envisioned."
|
||||
}
|
||||
},
|
||||
"clair": {
|
||||
"encounter": {
|
||||
1: "내가 누군지 알지? 그런데도 감히 내게 도전해?"
|
||||
1: "Do you know who I am? And you still dare to challenge me?"
|
||||
},
|
||||
"victory": {
|
||||
1: "네 실력이 어디까지 올라갈 수 있는지 궁금하네. 아주 흥미진진하겠어."
|
||||
1: "I wonder how far you can get with your skill level. This should be fascinating."
|
||||
},
|
||||
"defeat": {
|
||||
1: "끝이다."
|
||||
1: "That's that."
|
||||
}
|
||||
},
|
||||
"maylene": {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user