first round with eslint --fix .

This commit is contained in:
Greenlamp 2024-05-22 01:10:40 +02:00
parent 8eb6f8a2e6
commit 77a88e0895
308 changed files with 53947 additions and 53947 deletions

View File

@ -1,5 +1,5 @@
import { bypassLogin } from "./battle-scene";
import * as Utils from "./utils";
import { bypassLogin } from './battle-scene';
import * as Utils from './utils';
export interface UserInfo {
username: string;

View File

@ -9,19 +9,19 @@ import { PokeballType } from './data/pokeball';
import { initCommonAnims, initMoveAnim, loadCommonAnimAssets, loadMoveAnimAssets, populateAnims } from './data/battle-anims';
import { Phase } from './phase';
import { initGameSpeed } from './system/game-speed';
import { Biome } from "./data/enums/biome";
import { Biome } from './data/enums/biome';
import { Arena, ArenaBase } from './field/arena';
import { GameData, PlayerGender } from './system/game-data';
import StarterSelectUiHandler from './ui/starter-select-ui-handler';
import { TextStyle, addTextObject } from './ui/text';
import { Moves } from "./data/enums/moves";
import { allMoves } from "./data/move";
import { Moves } from './data/enums/moves';
import { allMoves } from './data/move';
import { initMoves } from './data/move';
import { ModifierPoolType, getDefaultModifierTypeForTier, getEnemyModifierTypesForWave, getLuckString, getLuckTextTint, getModifierPoolForType, getPartyLuckValue } from './modifier/modifier-type';
import AbilityBar from './ui/ability-bar';
import { BlockItemTheftAbAttr, DoubleBattleChanceAbAttr, IncrementMovePriorityAbAttr, applyAbAttrs, initAbilities } from './data/ability';
import { Abilities } from "./data/enums/abilities";
import { allAbilities } from "./data/ability";
import { Abilities } from './data/enums/abilities';
import { allAbilities } from './data/ability';
import Battle, { BattleType, FixedBattleConfig, fixedBattles } from './battle';
import { GameMode, GameModes, gameModes } from './game-mode';
import FieldSpritePipeline from './pipelines/field-sprite';
@ -60,10 +60,10 @@ import CandyBar from './ui/candy-bar';
import { Variant, variantData } from './data/variant';
import { Localizable } from './plugins/i18n';
import * as Overrides from './overrides';
import {InputsController} from "./inputs-controller";
import {UiInputs} from "./ui-inputs";
import {InputsController} from './inputs-controller';
import {UiInputs} from './ui-inputs';
export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1";
export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === '1';
const DEBUG_RNG = false;
@ -95,7 +95,7 @@ export default class BattleScene extends SceneBase {
public gameSpeed: integer = 1;
public damageNumbersMode: integer = 0;
public showLevelUpStats: boolean = true;
public enableTutorials: boolean = import.meta.env.VITE_BYPASS_TUTORIAL === "1";
public enableTutorials: boolean = import.meta.env.VITE_BYPASS_TUTORIAL === '1';
public enableRetries: boolean = false;
public uiTheme: UiTheme = UiTheme.DEFAULT;
public windowType: integer = 0;
@ -175,7 +175,7 @@ export default class BattleScene extends SceneBase {
public waveCycleOffset: integer;
public offsetGym: boolean;
public damageNumberHandler: DamageNumberHandler
public damageNumberHandler: DamageNumberHandler;
private spriteSparkleHandler: PokemonSpriteSparkleHandler;
public fieldSpritePipeline: FieldSpritePipeline;
@ -207,7 +207,7 @@ export default class BattleScene extends SceneBase {
loadPokemonAtlas(key: string, atlasPath: string, experimental?: boolean) {
if (experimental === undefined)
experimental = this.experimentalSprites;
let variant = atlasPath.includes('variant/') || /_[0-3]$/.test(atlasPath);
const variant = atlasPath.includes('variant/') || /_[0-3]$/.test(atlasPath);
if (experimental)
experimental = this.hasExpSprite(key);
if (variant)
@ -385,7 +385,7 @@ export default class BattleScene extends SceneBase {
this.party = [];
let loadPokemonAssets = [];
const loadPokemonAssets = [];
this.arenaPlayer = new ArenaBase(this, true);
this.arenaPlayerTransition = new ArenaBase(this, true);
@ -654,7 +654,7 @@ export default class BattleScene extends SceneBase {
icon.setFrame(pokemon.getIconId(true));
// Temporary fix to show pokemon's default icon if variant icon doesn't exist
if (icon.frame.name != pokemon.getIconId(true)) {
console.log(`${pokemon.name}'s variant icon does not exist. Replacing with default.`)
console.log(`${pokemon.name}'s variant icon does not exist. Replacing with default.`);
const temp = pokemon.shiny;
pokemon.shiny = false;
icon.setTexture(pokemon.getIconAtlasKey(ignoreOverride));
@ -667,7 +667,7 @@ export default class BattleScene extends SceneBase {
if (pokemon.isFusion()) {
const fusionIcon = this.add.sprite(0, 0, pokemon.getFusionIconAtlasKey(ignoreOverride));
fusionIcon.setOrigin(0.5, 0)
fusionIcon.setOrigin(0.5, 0);
fusionIcon.setFrame(pokemon.getFusionIconId(true));
const originalWidth = icon.width;
@ -755,10 +755,10 @@ export default class BattleScene extends SceneBase {
this.modifierBar.removeAll(true);
this.enemyModifierBar.removeAll(true);
for (let p of this.getParty())
for (const p of this.getParty())
p.destroy();
this.party = [];
for (let p of this.getEnemyParty())
for (const p of this.getEnemyParty())
p.destroy();
this.currentBattle = null;
@ -799,7 +799,7 @@ export default class BattleScene extends SceneBase {
...allAbilities,
...Utils.getEnumValues(ModifierPoolType).map(mpt => getModifierPoolForType(mpt)).map(mp => Object.values(mp).flat().map(mt => mt.modifierType).filter(mt => 'localize' in mt).map(lpb => lpb as unknown as Localizable)).flat()
];
for (let item of localizable)
for (const item of localizable)
item.localize();
}
@ -825,7 +825,7 @@ export default class BattleScene extends SceneBase {
}
newBattle(waveIndex?: integer, battleType?: BattleType, trainerData?: TrainerData, double?: boolean): Battle {
let newWaveIndex = waveIndex || ((this.currentBattle?.waveIndex || (startingWave - 1)) + 1);
const newWaveIndex = waveIndex || ((this.currentBattle?.waveIndex || (startingWave - 1)) + 1);
let newDouble: boolean;
let newBattleType: BattleType;
let newTrainer: Trainer;
@ -928,7 +928,7 @@ export default class BattleScene extends SceneBase {
playerField.forEach((_, p) => this.unshiftPhase(new ReturnPhase(this, p)));
this.unshiftPhase(new ShowTrainerPhase(this));
}
for (let pokemon of this.getParty()) {
for (const pokemon of this.getParty()) {
if (pokemon) {
if (resetArenaState)
pokemon.resetBattleData();
@ -1213,7 +1213,7 @@ export default class BattleScene extends SceneBase {
labels.map(t => {
t.setAlpha(0);
t.setVisible(true);
})
});
const luckValue = getPartyLuckValue(this.getParty());
this.luckText.setText(getLuckString(luckValue));
if (luckValue < 14)
@ -1290,14 +1290,14 @@ export default class BattleScene extends SceneBase {
.map((_, i: integer) => ((1 - Math.min(Math.abs((i / (maxDepth - 1)) - (relWave / 250)) + 0.25, 1)) / 0.75) * 250);
const biomeThresholds: integer[] = [];
let totalWeight = 0;
for (let biome of biomes) {
for (const biome of biomes) {
totalWeight += Math.ceil(depthWeights[biomeDepths[biome][0] - 1] / biomeDepths[biome][1]);
biomeThresholds.push(totalWeight);
}
const randInt = Utils.randSeedInt(totalWeight);
for (let biome of biomes) {
for (const biome of biomes) {
if (randInt < biomeThresholds[biome])
return biome;
}
@ -1379,7 +1379,7 @@ export default class BattleScene extends SceneBase {
updateSoundVolume(): void {
if (this.sound) {
for (let sound of this.sound.getAllPlaying())
for (const sound of this.sound.getAllPlaying())
(sound as AnySound).setVolume(this.masterVolume * (this.bgmCache.has(sound.key) ? this.bgmVolume : this.seVolume));
}
}
@ -1640,7 +1640,7 @@ export default class BattleScene extends SceneBase {
return this.addModifier(defaultModifierType.newModifier(), ignoreUpdate, playSound, false, instant).then(success => resolve(success));
}
for (let rm of modifiersToRemove)
for (const rm of modifiersToRemove)
this.removeModifier(rm);
if (!ignoreUpdate && !virtual)
@ -1650,7 +1650,7 @@ export default class BattleScene extends SceneBase {
this.playSound(soundName);
if (modifier instanceof ConsumablePokemonModifier) {
for (let p in this.party) {
for (const p in this.party) {
const pokemon = this.party[p];
const args: any[] = [ pokemon ];
@ -1698,7 +1698,7 @@ export default class BattleScene extends SceneBase {
if ((modifier as PersistentModifier).add(this.enemyModifiers, false, this)) {
if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier)
modifier.apply([ this.getPokemonById(modifier.pokemonId), true ]);
for (let rm of modifiersToRemove)
for (const rm of modifiersToRemove)
this.removeModifier(rm, true);
}
if (!ignoreUpdate)
@ -1757,7 +1757,7 @@ export default class BattleScene extends SceneBase {
return new Promise(resolve => {
const pokemonId = this.getParty()[partyMemberIndex].id;
const modifiersToRemove = this.modifiers.filter(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === pokemonId);
for (let m of modifiersToRemove)
for (const m of modifiersToRemove)
this.modifiers.splice(this.modifiers.indexOf(m), 1);
this.updateModifiers().then(() => resolve());
});
@ -1777,7 +1777,7 @@ export default class BattleScene extends SceneBase {
if (this.currentBattle.trainer) {
const modifiers = this.currentBattle.trainer.genModifiers(party);
for (let modifier of modifiers)
for (const modifier of modifiers)
this.addEnemyModifier(modifier, true, true);
}
@ -1812,7 +1812,7 @@ export default class BattleScene extends SceneBase {
*/
clearEnemyModifiers(): void {
const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PersistentModifier);
for (let m of modifiersToRemove)
for (const m of modifiersToRemove)
this.enemyModifiers.splice(this.enemyModifiers.indexOf(m), 1);
this.updateModifiers(false).then(() => this.updateUIPositions());
}
@ -1822,7 +1822,7 @@ export default class BattleScene extends SceneBase {
*/
clearEnemyHeldItemModifiers(): void {
const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PokemonHeldItemModifier);
for (let m of modifiersToRemove)
for (const m of modifiersToRemove)
this.enemyModifiers.splice(this.enemyModifiers.indexOf(m), 1);
this.updateModifiers(false).then(() => this.updateUIPositions());
}
@ -1841,13 +1841,13 @@ export default class BattleScene extends SceneBase {
if (modifier instanceof PokemonHeldItemModifier && !this.getPokemonById((modifier as PokemonHeldItemModifier).pokemonId))
modifiers.splice(m--, 1);
}
for (let modifier of modifiers) {
for (const modifier of modifiers) {
if (modifier instanceof PersistentModifier)
(modifier as PersistentModifier).virtualStackCount = 0;
}
const modifiersClone = modifiers.slice(0);
for (let modifier of modifiersClone) {
for (const modifier of modifiersClone) {
if (!modifier.getStackCount())
modifiers.splice(modifiers.indexOf(modifier), 1);
}
@ -1917,7 +1917,7 @@ export default class BattleScene extends SceneBase {
applyModifiersInternal(modifiers: PersistentModifier[], player: boolean, args: any[]): PersistentModifier[] {
const appliedModifiers: PersistentModifier[] = [];
for (let modifier of modifiers) {
for (const modifier of modifiers) {
if (modifier.apply(args)) {
console.log('Applied', modifier.type.name, !player ? '(enemy)' : '');
appliedModifiers.push(modifier);
@ -1929,7 +1929,7 @@ export default class BattleScene extends SceneBase {
applyModifier(modifierType: { new(...args: any[]): Modifier }, player: boolean = true, ...args: any[]): PersistentModifier {
const modifiers = (player ? this.modifiers : this.enemyModifiers).filter(m => m instanceof modifierType && m.shouldApply(args));
for (let modifier of modifiers) {
for (const modifier of modifiers) {
if (modifier.apply(args)) {
console.log('Applied', modifier.type.name, !player ? '(enemy)' : '');
return modifier;
@ -1963,7 +1963,7 @@ export default class BattleScene extends SceneBase {
validateAchvs(achvType: { new(...args: any[]): Achv }, ...args: any[]): void {
const filteredAchvs = Object.values(achvs).filter(a => a instanceof achvType);
for (let achv of filteredAchvs)
for (const achv of filteredAchvs)
this.validateAchv(achv, args);
}

View File

@ -1,17 +1,17 @@
import BattleScene from "./battle-scene";
import { EnemyPokemon, PlayerPokemon, QueuedMove } from "./field/pokemon";
import { Command } from "./ui/command-ui-handler";
import * as Utils from "./utils";
import Trainer, { TrainerVariant } from "./field/trainer";
import { Species } from "./data/enums/species";
import { Moves } from "./data/enums/moves";
import { TrainerType } from "./data/enums/trainer-type";
import { GameMode } from "./game-mode";
import { BattleSpec } from "./enums/battle-spec";
import { PlayerGender } from "./system/game-data";
import { MoneyMultiplierModifier, PokemonHeldItemModifier } from "./modifier/modifier";
import { MoneyAchv } from "./system/achv";
import { PokeballType } from "./data/pokeball";
import BattleScene from './battle-scene';
import { EnemyPokemon, PlayerPokemon, QueuedMove } from './field/pokemon';
import { Command } from './ui/command-ui-handler';
import * as Utils from './utils';
import Trainer, { TrainerVariant } from './field/trainer';
import { Species } from './data/enums/species';
import { Moves } from './data/enums/moves';
import { TrainerType } from './data/enums/trainer-type';
import { GameMode } from './game-mode';
import { BattleSpec } from './enums/battle-spec';
import { PlayerGender } from './system/game-data';
import { MoneyMultiplierModifier, PokemonHeldItemModifier } from './modifier/modifier';
import { MoneyAchv } from './system/achv';
import { PokeballType } from './data/pokeball';
export enum BattleType {
WILD,
@ -34,7 +34,7 @@ export interface TurnCommand {
targets?: BattlerIndex[];
skip?: boolean;
args?: any[];
};
}
interface TurnCommands {
[key: integer]: TurnCommand
@ -101,8 +101,8 @@ export default class Battle {
}
private getLevelForWave(): integer {
let levelWaveIndex = this.gameMode.getWaveForDifficulty(this.waveIndex);
let baseLevel = 1 + levelWaveIndex / 2 + Math.pow(levelWaveIndex / 25, 2);
const levelWaveIndex = this.gameMode.getWaveForDifficulty(this.waveIndex);
const baseLevel = 1 + levelWaveIndex / 2 + Math.pow(levelWaveIndex / 25, 2);
const bossMultiplier = 1.2;
if (!(this.waveIndex % 10)) {
@ -171,7 +171,7 @@ export default class Battle {
let partyMemberTurnMultiplier = scene.getEnemyParty().length / 2 + 0.5;
if (this.double)
partyMemberTurnMultiplier /= 1.5;
for (let p of scene.getEnemyParty()) {
for (const p of scene.getEnemyParty()) {
if (p.isBoss())
partyMemberTurnMultiplier *= (p.bossSegments / 1.5) / scene.getEnemyParty().length;
}
@ -191,7 +191,7 @@ export default class Battle {
return this.trainer.getBattleBgm();
} else if (this.gameMode.isClassic && this.waveIndex > 195 && this.battleSpec !== BattleSpec.FINAL_BOSS)
return 'end_summit';
for (let pokemon of battlers) {
for (const pokemon of battlers) {
if (this.battleSpec === BattleSpec.FINAL_BOSS) {
if (pokemon.formIndex)
return 'battle_final';
@ -290,7 +290,7 @@ function getRandomTrainerFunc(trainerPool: (TrainerType | TrainerType[])[]): Get
return (scene: BattleScene) => {
const rand = Utils.randSeedInt(trainerPool.length);
const trainerTypes: TrainerType[] = [];
for (let trainerPoolEntry of trainerPool) {
for (const trainerPoolEntry of trainerPool) {
const trainerType = Array.isArray(trainerPoolEntry)
? Utils.randSeedItem(trainerPoolEntry)
: trainerPoolEntry;

View File

@ -1,28 +1,28 @@
import Pokemon, { HitResult, PokemonMove } from "../field/pokemon";
import { Type } from "./type";
import * as Utils from "../utils";
import { BattleStat, getBattleStatName } from "./battle-stat";
import { PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../phases";
import { getPokemonMessage, getPokemonPrefix } from "../messages";
import { Weather, WeatherType } from "./weather";
import { BattlerTag } from "./battler-tags";
import { BattlerTagType } from "./enums/battler-tag-type";
import { StatusEffect, getStatusEffectDescriptor, getStatusEffectHealText } from "./status-effect";
import { Gender } from "./gender";
import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, FlinchAttr, OneHitKOAttr, HitHealAttr, StrengthSapHealAttr, allMoves, StatusMove, VariablePowerAttr, applyMoveAttrs, IncrementMovePriorityAttr } from "./move";
import { ArenaTagSide, ArenaTrapTag } from "./arena-tag";
import { ArenaTagType } from "./enums/arena-tag-type";
import { Stat } from "./pokemon-stat";
import { PokemonHeldItemModifier } from "../modifier/modifier";
import { Moves } from "./enums/moves";
import { TerrainType } from "./terrain";
import { SpeciesFormChangeManualTrigger } from "./pokemon-forms";
import { Abilities } from "./enums/abilities";
import i18next, { Localizable } from "#app/plugins/i18n.js";
import { Command } from "../ui/command-ui-handler";
import Battle from "#app/battle.js";
import { ability } from "#app/locales/en/ability.js";
import { PokeballType, getPokeballName } from "./pokeball";
import Pokemon, { HitResult, PokemonMove } from '../field/pokemon';
import { Type } from './type';
import * as Utils from '../utils';
import { BattleStat, getBattleStatName } from './battle-stat';
import { PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from '../phases';
import { getPokemonMessage, getPokemonPrefix } from '../messages';
import { Weather, WeatherType } from './weather';
import { BattlerTag } from './battler-tags';
import { BattlerTagType } from './enums/battler-tag-type';
import { StatusEffect, getStatusEffectDescriptor, getStatusEffectHealText } from './status-effect';
import { Gender } from './gender';
import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, FlinchAttr, OneHitKOAttr, HitHealAttr, StrengthSapHealAttr, allMoves, StatusMove, VariablePowerAttr, applyMoveAttrs, IncrementMovePriorityAttr } from './move';
import { ArenaTagSide, ArenaTrapTag } from './arena-tag';
import { ArenaTagType } from './enums/arena-tag-type';
import { Stat } from './pokemon-stat';
import { PokemonHeldItemModifier } from '../modifier/modifier';
import { Moves } from './enums/moves';
import { TerrainType } from './terrain';
import { SpeciesFormChangeManualTrigger } from './pokemon-forms';
import { Abilities } from './enums/abilities';
import i18next, { Localizable } from '#app/plugins/i18n.js';
import { Command } from '../ui/command-ui-handler';
import Battle from '#app/battle.js';
import { ability } from '#app/locales/en/ability.js';
import { PokeballType, getPokeballName } from './pokeball';
export class Ability implements Localizable {
public id: Abilities;
@ -206,11 +206,11 @@ export class PostBattleInitStatChangeAbAttr extends PostBattleInitAbAttr {
if (this.selfTarget)
statChangePhases.push(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.levels));
else {
for (let opponent of pokemon.getOpponents())
for (const opponent of pokemon.getOpponents())
statChangePhases.push(new StatChangePhase(pokemon.scene, opponent.getBattlerIndex(), false, this.stats, this.levels));
}
for (let statChangePhase of statChangePhases) {
for (const statChangePhase of statChangePhases) {
if (!this.selfTarget && !statChangePhase.getPokemon().summonData)
pokemon.scene.pushPhase(statChangePhase); // TODO: This causes the ability bar to be shown at the wrong time
else
@ -256,7 +256,7 @@ export class PreDefendFullHpEndureAbAttr extends PreDefendAbAttr {
return pokemon.addTag(BattlerTagType.STURDY, 1);
}
return false
return false;
}
}
@ -547,7 +547,7 @@ export class MoveImmunityStatChangeAbAttr extends MoveImmunityAbAttr {
}
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
const ret = super.applyPreDefend(pokemon, passive, attacker, move, cancelled, args)
const ret = super.applyPreDefend(pokemon, passive, attacker, move, cancelled, args);
if (ret) {
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ this.stat ], this.levels));
}
@ -559,7 +559,7 @@ export class MoveImmunityStatChangeAbAttr extends MoveImmunityAbAttr {
export class ReverseDrainAbAttr extends PostDefendAbAttr {
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
if (!!move.getMove().getAttrs(HitHealAttr).length || !!move.getMove().getAttrs(StrengthSapHealAttr).length ) {
pokemon.scene.queueMessage(getPokemonMessage(attacker, ` sucked up the liquid ooze!`));
pokemon.scene.queueMessage(getPokemonMessage(attacker, ' sucked up the liquid ooze!'));
return true;
}
return false;
@ -586,8 +586,8 @@ export class PostDefendStatChangeAbAttr extends PostDefendAbAttr {
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
if (this.condition(pokemon, attacker, move.getMove())) {
if (this.allOthers) {
let otherPokemon = pokemon.getAlly() ? pokemon.getOpponents().concat([ pokemon.getAlly() ]) : pokemon.getOpponents();
for (let other of otherPokemon) {
const otherPokemon = pokemon.getAlly() ? pokemon.getOpponents().concat([ pokemon.getAlly() ]) : pokemon.getOpponents();
for (const other of otherPokemon) {
other.scene.unshiftPhase(new StatChangePhase(other.scene, (other).getBattlerIndex(), false, [ this.stat ], this.levels));
}
return true;
@ -618,8 +618,8 @@ export class PostDefendHpGatedStatChangeAbAttr extends PostDefendAbAttr {
}
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
const hpGateFlat: integer = Math.ceil(pokemon.getMaxHp() * this.hpGate)
const lastAttackReceived = pokemon.turnData.attacksReceived[pokemon.turnData.attacksReceived.length - 1]
const hpGateFlat: integer = Math.ceil(pokemon.getMaxHp() * this.hpGate);
const lastAttackReceived = pokemon.turnData.attacksReceived[pokemon.turnData.attacksReceived.length - 1];
if (this.condition(pokemon, attacker, move.getMove()) && (pokemon.hp <= hpGateFlat && (pokemon.hp + lastAttackReceived.damage) > hpGateFlat)) {
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, (this.selfTarget ? pokemon : attacker).getBattlerIndex(), true, this.stats, this.levels));
return true;
@ -842,7 +842,7 @@ export class PostDefendAbilitySwapAbAttr extends PostDefendAbAttr {
}
getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string {
return getPokemonMessage(pokemon, ` swapped\nabilities with its target!`);
return getPokemonMessage(pokemon, ' swapped\nabilities with its target!');
}
}
@ -1378,10 +1378,10 @@ export class PostIntimidateStatChangeAbAttr extends AbAttr {
private overwrites: boolean;
constructor(stats: BattleStat[], levels: integer, overwrites?: boolean) {
super(true)
this.stats = stats
this.levels = levels
this.overwrites = !!overwrites
super(true);
this.stats = stats;
this.levels = levels;
this.overwrites = !!overwrites;
}
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
@ -1469,8 +1469,8 @@ export class PostSummonStatChangeAbAttr extends PostSummonAbAttr {
pokemon.scene.pushPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.levels));
return true;
}
for (let opponent of pokemon.getOpponents()) {
const cancelled = new Utils.BooleanHolder(false)
for (const opponent of pokemon.getOpponents()) {
const cancelled = new Utils.BooleanHolder(false);
if (this.intimidate) {
applyAbAttrs(IntimidateImmunityAbAttr, opponent, cancelled);
applyAbAttrs(PostIntimidateStatChangeAbAttr, opponent, cancelled);
@ -1526,7 +1526,7 @@ export class PostSummonClearAllyStatsAbAttr extends PostSummonAbAttr {
for (let s = 0; s < target.summonData.battleStats.length; s++)
target.summonData.battleStats[s] = 0;
target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere removed!`));
target.scene.queueMessage(getPokemonMessage(target, '\'s stat changes\nwere removed!'));
return true;
}
@ -1544,7 +1544,7 @@ export class DownloadAbAttr extends PostSummonAbAttr {
this.enemyDef = 0;
this.enemySpDef = 0;
for (let opponent of pokemon.getOpponents()) {
for (const opponent of pokemon.getOpponents()) {
this.enemyDef += opponent.stats[BattleStat.DEF];
this.enemySpDef += opponent.stats[BattleStat.SPDEF];
}
@ -1950,8 +1950,8 @@ function getWeatherCondition(...weatherTypes: WeatherType[]): AbAttrCondition {
function getAnticipationCondition(): AbAttrCondition {
return (pokemon: Pokemon) => {
for (let opponent of pokemon.getOpponents()) {
for (let move of opponent.moveset) {
for (const opponent of pokemon.getOpponents()) {
for (const move of opponent.moveset) {
// move is super effective
if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type, opponent) >= 2) {
return true;
@ -1995,7 +1995,7 @@ function getAnticipationCondition(): AbAttrCondition {
function getOncePerBattleCondition(ability: Abilities): AbAttrCondition {
return (pokemon: Pokemon) => {
return !pokemon.battleData?.abilitiesApplied.includes(ability);
}
};
}
export class ForewarnAbAttr extends PostSummonAbAttr {
@ -2005,10 +2005,10 @@ export class ForewarnAbAttr extends PostSummonAbAttr {
applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
let maxPowerSeen = 0;
let maxMove = "";
let maxMove = '';
let movePower = 0;
for (let opponent of pokemon.getOpponents()) {
for (let move of opponent.moveset) {
for (const opponent of pokemon.getOpponents()) {
for (const move of opponent.moveset) {
if (move.getMove() instanceof StatusMove) {
movePower = 1;
} else if (move.getMove().findAttr(attr => attr instanceof OneHitKOAttr)) {
@ -2027,7 +2027,7 @@ export class ForewarnAbAttr extends PostSummonAbAttr {
}
}
}
pokemon.scene.queueMessage(getPokemonMessage(pokemon, " was forewarned about " + maxMove + "!"));
pokemon.scene.queueMessage(getPokemonMessage(pokemon, ' was forewarned about ' + maxMove + '!'));
return true;
}
}
@ -2038,8 +2038,8 @@ export class FriskAbAttr extends PostSummonAbAttr {
}
applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
for (let opponent of pokemon.getOpponents()) {
pokemon.scene.queueMessage(getPokemonMessage(pokemon, " frisked " + opponent.name + "\'s " + opponent.getAbility().name + "!"));
for (const opponent of pokemon.getOpponents()) {
pokemon.scene.queueMessage(getPokemonMessage(pokemon, ' frisked ' + opponent.name + '\'s ' + opponent.getAbility().name + '!'));
}
return true;
}
@ -2212,17 +2212,17 @@ export class MoodyAbAttr extends PostTurnAbAttr {
}
applyPostTurn(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
let selectableStats = [BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD];
let increaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] < 6);
const selectableStats = [BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD];
const increaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] < 6);
let decreaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] > -6);
if (increaseStatArray.length > 0) {
let increaseStat = increaseStatArray[Utils.randInt(increaseStatArray.length)];
const increaseStat = increaseStatArray[Utils.randInt(increaseStatArray.length)];
decreaseStatArray = decreaseStatArray.filter(s => s !== increaseStat);
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [increaseStat], 2));
}
if (decreaseStatArray.length > 0) {
let decreaseStat = selectableStats[Utils.randInt(selectableStats.length)];
const decreaseStat = selectableStats[Utils.randInt(selectableStats.length)];
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [decreaseStat], -1));
}
return true;
@ -2297,7 +2297,7 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr {
*/
applyPostTurn(pokemon: Pokemon, passive: boolean, args: any[]): boolean | Promise<boolean> {
let hadEffect: boolean = false;
for(let opp of pokemon.getOpponents()) {
for(const opp of pokemon.getOpponents()) {
if(opp.status !== undefined && opp.status.effect === StatusEffect.SLEEP) {
opp.damageAndUpdate(Math.floor(Math.max(1, opp.getMaxHp() / 8)), HitResult.OTHER);
pokemon.scene.queueMessage(i18next.t('abilityTriggers:badDreams', {pokemonName: `${getPokemonPrefix(opp)}${opp.name}`}));
@ -2326,7 +2326,7 @@ export class FetchBallAbAttr extends PostTurnAbAttr {
* @returns true if player has used a pokeball and this pokemon is owned by the player
*/
applyPostTurn(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
let lastUsed = pokemon.scene.currentBattle.lastUsedPokeball;
const lastUsed = pokemon.scene.currentBattle.lastUsedPokeball;
if(lastUsed != null && pokemon.isPlayer) {
pokemon.scene.pokeballCounts[lastUsed]++;
pokemon.scene.currentBattle.lastUsedPokeball = null;
@ -2526,7 +2526,7 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr {
applyPostFaint(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
if (move.getMove().checkFlag(MoveFlags.MAKES_CONTACT, attacker, pokemon)) {
const cancelled = new Utils.BooleanHolder(false);
pokemon.scene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled))
pokemon.scene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled));
if (cancelled) {
return false;
}
@ -3217,7 +3217,7 @@ export function initAbilities() {
.ignorable(),
new Ability(Abilities.AIR_LOCK, 3)
.attr(SuppressWeatherEffectAbAttr, true)
.attr(PostSummonUnnamedMessageAbAttr, "The effects of the weather disappeared."),
.attr(PostSummonUnnamedMessageAbAttr, 'The effects of the weather disappeared.'),
new Ability(Abilities.TANGLED_FEET, 4)
.conditionalAttr(pokemon => !!pokemon.getTag(BattlerTagType.CONFUSED), BattleStatMultiplierAbAttr, BattleStat.EVA, 2)
.ignorable(),
@ -3288,7 +3288,7 @@ export function initAbilities() {
.attr(MovePowerBoostAbAttr, (user, target, move) => {
const power = new Utils.NumberHolder(move.power);
applyMoveAttrs(VariablePowerAttr, user, target, move, power);
return power.value <= 60
return power.value <= 60;
}, 1.5),
new Ability(Abilities.LEAF_GUARD, 4)
.attr(StatusEffectImmunityAbAttr)

View File

@ -6,7 +6,7 @@ import PokemonSpecies, { PokemonForm, SpeciesFormKey, allSpecies } from './pokem
import { GrowthRate } from './exp';
import { Type } from './type';
import { allAbilities } from './ability';
import { Abilities } from "./enums/abilities";
import { Abilities } from './enums/abilities';
import { Species } from './enums/species';
import { pokemonFormLevelMoves } from './pokemon-level-moves';
import { tmSpecies } from './tms';
@ -93,16 +93,16 @@ export async function printPokemon() {
const useExistingTmList = true;
let enumStr = `export enum Species {\n`;
let pokemonSpeciesStr = `\tallSpecies.push(\n`;
let enumStr = 'export enum Species {\n';
let pokemonSpeciesStr = '\tallSpecies.push(\n';
const speciesLevelMoves: SpeciesLevelMoves = {};
const speciesFormLevelMoves: SpeciesFormLevelMoves = {};
const moveTmSpecies: TmSpecies = {};
let pokemonArr: NamedAPIResource[] = [];
let offset = 0;
let pokemonResponse = await api.pokemon.listPokemons(offset, 2000)
const offset = 0;
const pokemonResponse = await api.pokemon.listPokemons(offset, 2000);
pokemonArr = pokemonResponse.results;
@ -111,7 +111,7 @@ export async function printPokemon() {
const pokemonSpeciesList: PokemonSpecies[] = [];
for (let p of pokemonArr) {
for (const p of pokemonArr) {
const pokemon = await api.pokemon.getPokemonByName(p.name);
let region: string = '';
@ -133,7 +133,7 @@ export async function printPokemon() {
if (ignoredForms.filter(f => formName.indexOf(f) > -1).length)
continue;
let shortFormName = formName.indexOf('-') > -1
const shortFormName = formName.indexOf('-') > -1
? formName.slice(0, formName.indexOf('-'))
: formName;
@ -143,7 +143,7 @@ export async function printPokemon() {
const formBaseStats: integer[] = [];
let formBaseTotal = 0;
// Assume correct stat order in API result
for (let stat of pokemon.stats) {
for (const stat of pokemon.stats) {
formBaseStats.push(stat.base_stat);
formBaseTotal += stat.base_stat;
}
@ -168,7 +168,7 @@ export async function printPokemon() {
speciesFormLevelMoves[speciesKey] = [];
speciesFormLevelMoves[speciesKey][pokemonForm.formIndex] = [];
for (let version of versions) {
for (const version of versions) {
if (pokemon.moves.find(m => m.version_group_details.find(v => v.version_group.name === version && v.move_learn_method.name === 'level-up'))) {
moveVer = version;
break;
@ -235,7 +235,7 @@ export async function printPokemon() {
const baseStats: integer[] = [];
let baseTotal = 0;
// Assume correct stat order in API result
for (let stat of pokemon.stats) {
for (const stat of pokemon.stats) {
baseStats.push(stat.base_stat);
baseTotal += stat.base_stat;
}
@ -262,7 +262,7 @@ export async function printPokemon() {
speciesLevelMoves[speciesKey] = [];
for (let version of versions) {
for (const version of versions) {
if (pokemon.moves.find(m => m.version_group_details.find(v => v.version_group.name === version && v.move_learn_method.name === 'level-up'))) {
moveVer = version;
break;
@ -298,7 +298,7 @@ export async function printPokemon() {
});
}
for (let f of pokemon.forms) {
for (const f of pokemon.forms) {
const form = await api.pokemon.getPokemonFormByName(f.name);
const formIndex = pokemonSpecies.forms.length;
@ -321,7 +321,7 @@ export async function printPokemon() {
pokemonForm.generation = pokemonSpecies.generation;
if (!pokemonForm.formIndex && speciesTmMoves.length) {
for (let moveId of speciesTmMoves) {
for (const moveId of speciesTmMoves) {
const speciesIndex = moveTmSpecies[moveId].findIndex(s => s === speciesKey);
moveTmSpecies[moveId][speciesIndex] = [
speciesKey,
@ -336,25 +336,25 @@ export async function printPokemon() {
console.log(pokemonSpecies.name, pokemonSpecies);
}
for (let pokemonSpecies of pokemonSpeciesList) {
for (const pokemonSpecies of pokemonSpeciesList) {
const speciesKey = (pokemonSpecies as any).key as string;
enumStr += ` ${speciesKey}${pokemonSpecies.speciesId >= 2000 ? ` = ${pokemonSpecies.speciesId}` : ''},\n`;
pokemonSpeciesStr += ` new PokemonSpecies(Species.${speciesKey}, "${pokemonSpecies.name}", ${pokemonSpecies.generation}, ${pokemonSpecies.subLegendary}, ${pokemonSpecies.legendary}, ${pokemonSpecies.mythical}, "${pokemonSpecies.species}", Type.${Type[pokemonSpecies.type1]}, ${pokemonSpecies.type2 ? `Type.${Type[pokemonSpecies.type2]}` : 'null'}, ${pokemonSpecies.height}, ${pokemonSpecies.weight}, Abilities.${Abilities[pokemonSpecies.ability1]}, Abilities.${Abilities[pokemonSpecies.ability2]}, Abilities.${Abilities[pokemonSpecies.abilityHidden]}, ${pokemonSpecies.baseTotal}, ${pokemonSpecies.baseStats[0]}, ${pokemonSpecies.baseStats[1]}, ${pokemonSpecies.baseStats[2]}, ${pokemonSpecies.baseStats[3]}, ${pokemonSpecies.baseStats[4]}, ${pokemonSpecies.baseStats[5]}, ${pokemonSpecies.catchRate}, ${pokemonSpecies.baseFriendship}, ${pokemonSpecies.baseExp}, GrowthRate.${GrowthRate[pokemonSpecies.growthRate]}, ${pokemonSpecies.malePercent}, ${pokemonSpecies.genderDiffs}`;
if (pokemonSpecies.forms.length > 1) {
pokemonSpeciesStr += `, ${pokemonSpecies.canChangeForm},`;
for (let form of pokemonSpecies.forms)
for (const form of pokemonSpecies.forms)
pokemonSpeciesStr += `\n new PokemonForm("${form.formName}", "${form.formName}", Type.${Type[form.type1]}, ${form.type2 ? `Type.${Type[form.type2]}` : 'null'}, ${form.height}, ${form.weight}, Abilities.${Abilities[form.ability1]}, Abilities.${Abilities[form.ability2]}, Abilities.${Abilities[form.abilityHidden]}, ${form.baseTotal}, ${form.baseStats[0]}, ${form.baseStats[1]}, ${form.baseStats[2]}, ${form.baseStats[3]}, ${form.baseStats[4]}, ${form.baseStats[5]}, ${form.catchRate}, ${form.baseFriendship}, ${form.baseExp}${form.genderDiffs ? ', true' : ''}),`;
pokemonSpeciesStr += '\n ';
}
pokemonSpeciesStr += `),\n`;
pokemonSpeciesStr += '),\n';
}
let speciesLevelMovesStr = `export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {\n`;
let speciesFormLevelMovesStr = `export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = {\n`;
let tmSpeciesStr = `export const tmSpecies: TmSpecies = {\n`;
let speciesLevelMovesStr = 'export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {\n';
let speciesFormLevelMovesStr = 'export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = {\n';
let tmSpeciesStr = 'export const tmSpecies: TmSpecies = {\n';
for (let species of Object.keys(speciesLevelMoves)) {
for (const species of Object.keys(speciesLevelMoves)) {
speciesLevelMovesStr += ` [Species.${species}]: [\n`;
const orderedLevelMoves = speciesLevelMoves[species].sort((a: LevelMove, b: LevelMove) => {
@ -363,16 +363,16 @@ export async function printPokemon() {
return a[1] < b[1] ? -1 : 1;
});
for (let lm of orderedLevelMoves)
for (const lm of orderedLevelMoves)
speciesLevelMovesStr += ` [ ${lm[0]}, Moves.${Moves[lm[1]]} ],\n`;
speciesLevelMovesStr += ` ],\n`;
speciesLevelMovesStr += ' ],\n';
}
for (let species of Object.keys(speciesFormLevelMoves)) {
for (const species of Object.keys(speciesFormLevelMoves)) {
speciesFormLevelMovesStr += ` [Species.${species}]: {\n`;
for (let f of Object.keys(speciesFormLevelMoves[species])) {
for (const f of Object.keys(speciesFormLevelMoves[species])) {
speciesFormLevelMovesStr += ` ${f}: [\n`;
const orderedLevelMoves = speciesFormLevelMoves[species][f].sort((a: LevelMove, b: LevelMove) => {
@ -381,18 +381,18 @@ export async function printPokemon() {
return a[1] < b[1] ? -1 : 1;
});
for (let lm of orderedLevelMoves)
for (const lm of orderedLevelMoves)
speciesFormLevelMovesStr += ` [ ${lm[0]}, Moves.${Moves[lm[1]]} ],\n`;
speciesFormLevelMovesStr += ` ],\n`;
speciesFormLevelMovesStr += ' ],\n';
}
speciesFormLevelMovesStr += ` },\n`;
speciesFormLevelMovesStr += ' },\n';
}
for (let moveId of Object.keys(moveTmSpecies)) {
for (const moveId of Object.keys(moveTmSpecies)) {
tmSpeciesStr += ` [Moves.${Moves[parseInt(moveId)]}]: [\n`;
for (let species of moveTmSpecies[moveId]) {
for (const species of moveTmSpecies[moveId]) {
if (typeof species === 'string')
tmSpeciesStr += ` Species.${species},\n`;
else {
@ -402,20 +402,20 @@ export async function printPokemon() {
tmSpeciesStr += ` Species.${species[0]},\n`;
else {
tmSpeciesStr += ` [\n Species.${species[0]},\n`;
for (let form of forms)
for (const form of forms)
tmSpeciesStr += ` '${form}',\n`;
tmSpeciesStr += ` ],\n`;
tmSpeciesStr += ' ],\n';
}
}
}
tmSpeciesStr += ` ],\n`;
tmSpeciesStr += ' ],\n';
}
enumStr += `\n};`;
pokemonSpeciesStr += ` );`;
speciesLevelMovesStr += `\n};`;
speciesFormLevelMovesStr += `\n};`;
tmSpeciesStr += `\n};`;
enumStr += '\n};';
pokemonSpeciesStr += ' );';
speciesLevelMovesStr += '\n};';
speciesFormLevelMovesStr += '\n};';
tmSpeciesStr += '\n};';
console.log(enumStr);
console.log(pokemonSpeciesStr);
@ -423,7 +423,7 @@ export async function printPokemon() {
console.log(speciesFormLevelMovesStr);
console.log(tmSpeciesStr);
console.log(moveTmSpecies)
console.log(moveTmSpecies);
}
export async function printAbilities() {
@ -433,17 +433,17 @@ export async function printAbilities() {
const api = new MainClient();
let enumStr = `export enum Abilities {\n NONE,`;
let enumStr = 'export enum Abilities {\n NONE,';
let abilityStr = ' allAbilities.push(';
abilityContent = abilityContent.slice(abilityContent.indexOf(abilityStr));
let abilities: NamedAPIResource[] = [];
let offset = 0;
let abilitiesResponse = await api.pokemon.listAbilities(offset, 2000);
const offset = 0;
const abilitiesResponse = await api.pokemon.listAbilities(offset, 2000);
abilities = abilitiesResponse.results;
for (let a of abilities) {
for (const a of abilities) {
const ability = await api.pokemon.getAbilityByName(a.name);
const abilityEnumName = ability.name.toUpperCase().replace(/\_/g, '').replace(/\-/g, '_');
enumStr += `\n ${abilityEnumName},`;
@ -465,7 +465,7 @@ export async function printAbilities() {
let flavorText: string;
if (!matchingLine || replaceText) {
for (let version of versions) {
for (const version of versions) {
if ((flavorText = ability.flavor_text_entries.find(fte => fte.language.name === 'en' && fte.version_group.name === version)?.flavor_text) || '') {
if (flavorText.indexOf('forgotten') > -1)
continue;
@ -483,8 +483,8 @@ export async function printAbilities() {
abilityStr += ',';
}
enumStr += `\n};`;
abilityStr += `\n);`;
enumStr += '\n};';
abilityStr += '\n);';
console.log(enumStr);
console.log(abilityStr);
@ -497,19 +497,19 @@ export async function printMoves() {
const api = new MainClient();
let enumStr = `export enum Moves {\n NONE,`;
let enumStr = 'export enum Moves {\n NONE,';
let moveStr = ' allMoves.push(';
moveContent = moveContent.slice(moveContent.indexOf(moveStr));
let moves: NamedAPIResource[] = [];
let offset = 0;
let movesResponse = await api.move.listMoves(offset, 2000);
const offset = 0;
const movesResponse = await api.move.listMoves(offset, 2000);
moves = movesResponse.results;
console.log(moves);
for (let m of moves) {
for (const m of moves) {
const move = await api.move.getMoveByName(m.name);
const moveEnumName = move.name.toUpperCase().replace(/\_/g, '').replace(/\-/g, '_');
enumStr += `\n ${moveEnumName},`;
@ -531,7 +531,7 @@ export async function printMoves() {
let flavorText: string;
if (!matchingLine || replaceText) {
for (let version of versions) {
for (const version of versions) {
if ((flavorText = move.flavor_text_entries.find(fte => fte.language.name === 'en' && fte.version_group.name === version)?.flavor_text) || '') {
if (flavorText.indexOf('forgotten') > -1)
continue;
@ -546,7 +546,7 @@ export async function printMoves() {
if (matchingLine && matchingLine.length > 1) {
const newLineIndex = matchingLine.indexOf('\n');
if (newLineIndex > -1) {
console.log(matchingLine.slice(newLineIndex).replace(/(?:\r)?\n[ \t]+.target\(.*?\)/g, ''), newLineIndex)
console.log(matchingLine.slice(newLineIndex).replace(/(?:\r)?\n[ \t]+.target\(.*?\)/g, ''), newLineIndex);
moveStr += matchingLine.slice(newLineIndex).replace(/(?:\r)?\n[ \t]+.target\(.*?\)/g, '');
}
}
@ -555,8 +555,8 @@ export async function printMoves() {
moveStr += ',';
}
enumStr += `\n};`;
moveStr += `\n);`;
enumStr += '\n};';
moveStr += '\n);';
console.log(enumStr);
console.log(moveStr);
@ -569,17 +569,17 @@ export async function printTmSpecies() {
const moveIds = Object.keys(tmSpecies).map(k => parseInt(k) as Moves);
for (let moveId of moveIds) {
for (const moveId of moveIds) {
const move = await api.move.getMoveById(moveId);
moveTmSpecies[moveId] = [];
for (let species of move.learned_by_pokemon) {
for (const species of move.learned_by_pokemon) {
const dexIdMatch = /\/(\d+)\//.exec(species.url);
if (!dexIdMatch)
continue;
let dexId = parseInt(dexIdMatch[1]);
const dexId = parseInt(dexIdMatch[1]);
let matchingSpecies: PokemonSpecies;
let formKey = '';
@ -629,11 +629,11 @@ export async function printTmSpecies() {
}
}
let tmSpeciesStr = `export const tmSpecies: TmSpecies = {\n`;
let tmSpeciesStr = 'export const tmSpecies: TmSpecies = {\n';
for (let moveId of Object.keys(moveTmSpecies)) {
for (const moveId of Object.keys(moveTmSpecies)) {
tmSpeciesStr += ` [Moves.${Moves[parseInt(moveId)]}]: [\n`;
for (let species of moveTmSpecies[moveId]) {
for (const species of moveTmSpecies[moveId]) {
if (typeof species === 'string')
tmSpeciesStr += ` Species.${species},\n`;
else {
@ -643,16 +643,16 @@ export async function printTmSpecies() {
tmSpeciesStr += ` Species.${species[0]},\n`;
else {
tmSpeciesStr += ` [\n Species.${species[0]},\n`;
for (let form of forms)
for (const form of forms)
tmSpeciesStr += ` '${form}',\n`;
tmSpeciesStr += ` ],\n`;
tmSpeciesStr += ' ],\n';
}
}
}
tmSpeciesStr += ` ],\n`;
tmSpeciesStr += ' ],\n';
}
tmSpeciesStr += `\n};`;
tmSpeciesStr += '\n};';
console.log(tmSpeciesStr);
}

View File

@ -1,16 +1,16 @@
import { Arena } from "../field/arena";
import { Type } from "./type";
import * as Utils from "../utils";
import { MoveCategory, allMoves } from "./move";
import { getPokemonMessage } from "../messages";
import Pokemon, { HitResult, PokemonMove } from "../field/pokemon";
import { MoveEffectPhase, PokemonHealPhase, StatChangePhase} from "../phases";
import { StatusEffect } from "./status-effect";
import { BattlerIndex } from "../battle";
import { Moves } from "./enums/moves";
import { ArenaTagType } from "./enums/arena-tag-type";
import { BlockNonDirectDamageAbAttr, ProtectStatAbAttr, applyAbAttrs } from "./ability";
import { BattleStat } from "./battle-stat";
import { Arena } from '../field/arena';
import { Type } from './type';
import * as Utils from '../utils';
import { MoveCategory, allMoves } from './move';
import { getPokemonMessage } from '../messages';
import Pokemon, { HitResult, PokemonMove } from '../field/pokemon';
import { MoveEffectPhase, PokemonHealPhase, StatChangePhase} from '../phases';
import { StatusEffect } from './status-effect';
import { BattlerIndex } from '../battle';
import { Moves } from './enums/moves';
import { ArenaTagType } from './enums/arena-tag-type';
import { BlockNonDirectDamageAbAttr, ProtectStatAbAttr, applyAbAttrs } from './ability';
import { BattleStat } from './battle-stat';
export enum ArenaTagSide {
BOTH,
@ -65,7 +65,7 @@ export class MistTag extends ArenaTag {
super.onAdd(arena);
const source = arena.scene.getPokemonById(this.sourceId);
arena.scene.queueMessage(getPokemonMessage(source, `'s team became\nshrouded in mist!`));
arena.scene.queueMessage(getPokemonMessage(source, '\'s team became\nshrouded in mist!'));
}
apply(arena: Arena, args: any[]): boolean {

View File

@ -1,12 +1,12 @@
//import { battleAnimRawData } from "./battle-anim-raw-data";
import BattleScene from "../battle-scene";
import { AttackMove, ChargeAttr, DelayedAttackAttr, MoveFlags, SelfStatusMove, allMoves } from "./move";
import Pokemon from "../field/pokemon";
import * as Utils from "../utils";
import { BattlerIndex } from "../battle";
import stringify, { Element } from "json-stable-stringify";
import { Moves } from "./enums/moves";
import { getTypeRgb } from "./type";
import BattleScene from '../battle-scene';
import { AttackMove, ChargeAttr, DelayedAttackAttr, MoveFlags, SelfStatusMove, allMoves } from './move';
import Pokemon from '../field/pokemon';
import * as Utils from '../utils';
import { BattlerIndex } from '../battle';
import stringify, { Element } from 'json-stable-stringify';
import { Moves } from './enums/moves';
import { getTypeRgb } from './type';
//import fs from 'vite-plugin-fs/browser';
export enum AnimFrameTarget {
@ -125,9 +125,9 @@ export class AnimConfig {
this.frames = frames;
const frameTimedEvents = source.frameTimedEvents;
for (let fte of Object.keys(frameTimedEvents)) {
for (const fte of Object.keys(frameTimedEvents)) {
const timedEvents: AnimTimedEvent[] = [];
for (let te of frameTimedEvents[fte]) {
for (const te of frameTimedEvents[fte]) {
let timedEvent: AnimTimedEvent;
switch (te.eventType) {
case 'AnimTimedSoundEvent':
@ -154,8 +154,8 @@ export class AnimConfig {
getSoundResourceNames(): string[] {
const sounds = new Set<string>();
for (let ftes of this.frameTimedEvents.values()) {
for (let fte of ftes) {
for (const ftes of this.frameTimedEvents.values()) {
for (const fte of ftes) {
if (fte instanceof AnimTimedSoundEvent && fte.resourceName)
sounds.add(fte.resourceName);
}
@ -167,8 +167,8 @@ export class AnimConfig {
getBackgroundResourceNames(): string[] {
const backgrounds = new Set<string>();
for (let ftes of this.frameTimedEvents.values()) {
for (let fte of ftes) {
for (const ftes of this.frameTimedEvents.values()) {
for (const fte of ftes) {
if (fte instanceof AnimTimedAddBgEvent && fte.resourceName)
backgrounds.add(fte.resourceName);
}
@ -445,7 +445,7 @@ export function initMoveAnim(scene: BattleScene, move: Moves): Promise<void> {
if (moveAnims.get(move) !== null)
resolve();
else {
let loadedCheckTimer = setInterval(() => {
const loadedCheckTimer = setInterval(() => {
if (moveAnims.get(move) !== null) {
const chargeAttr = allMoves[move].getAttrs(ChargeAttr).find(() => true) as ChargeAttr || allMoves[move].getAttrs(DelayedAttackAttr).find(() => true) as DelayedAttackAttr;
if (chargeAttr && chargeAnims.get(chargeAttr.chargeAnim) === null)
@ -493,7 +493,7 @@ export function initMoveChargeAnim(scene: BattleScene, chargeAnim: ChargeAnim):
if (chargeAnims.get(chargeAnim) !== null)
resolve();
else {
let loadedCheckTimer = setInterval(() => {
const loadedCheckTimer = setInterval(() => {
if (chargeAnims.get(chargeAnim) !== null) {
clearInterval(loadedCheckTimer);
resolve();
@ -543,7 +543,7 @@ export function loadCommonAnimAssets(scene: BattleScene, startLoad?: boolean): P
export function loadMoveAnimAssets(scene: BattleScene, moveIds: Moves[], startLoad?: boolean): Promise<void> {
return new Promise(resolve => {
const moveAnimations = moveIds.map(m => moveAnims.get(m) as AnimConfig).flat();
for (let moveId of moveIds) {
for (const moveId of moveIds) {
const chargeAttr = allMoves[moveId].getAttrs(ChargeAttr).find(() => true) as ChargeAttr || allMoves[moveId].getAttrs(DelayedAttackAttr).find(() => true) as DelayedAttackAttr;
if (chargeAttr) {
const moveChargeAnims = chargeAnims.get(chargeAttr.chargeAnim);
@ -560,21 +560,21 @@ function loadAnimAssets(scene: BattleScene, anims: AnimConfig[], startLoad?: boo
return new Promise(resolve => {
const backgrounds = new Set<string>();
const sounds = new Set<string>();
for (let a of anims) {
for (const a of anims) {
if (!a.frames?.length)
continue;
const animSounds = a.getSoundResourceNames();
for (let ms of animSounds)
for (const ms of animSounds)
sounds.add(ms);
const animBackgrounds = a.getBackgroundResourceNames();
for (let abg of animBackgrounds)
for (const abg of animBackgrounds)
backgrounds.add(abg);
if (a.graphic)
scene.loadSpritesheet(a.graphic, 'battle_anims', 96);
}
for (let bg of backgrounds)
for (const bg of backgrounds)
scene.loadImage(bg, 'battle_anims');
for (let s of sounds)
for (const s of sounds)
scene.loadSe(s, 'battle_anims', s);
if (startLoad) {
scene.load.once(Phaser.Loader.Events.COMPLETE, () => resolve());
@ -680,11 +680,11 @@ export abstract class BattleAnim {
let u = 0;
let t = 0;
for (let frame of frames) {
for (const frame of frames) {
let x = frame.x + 106;
let y = frame.y + 116;
let scaleX = (frame.zoomX / 100) * (!frame.mirror ? 1 : -1);
let scaleY = (frame.zoomY / 100);
const scaleY = (frame.zoomY / 100);
switch (frame.focus) {
case AnimFocus.TARGET:
x += targetInitialX - targetFocusX;
@ -747,7 +747,7 @@ export abstract class BattleAnim {
userSprite.setVisible(true);
if (!this.isHideTarget() && (targetSprite !== userSprite || !this.isHideUser()))
targetSprite.setVisible(true);
for (let ms of Object.values(spriteCache).flat()) {
for (const ms of Object.values(spriteCache).flat()) {
if (ms)
ms.destroy();
}
@ -787,7 +787,7 @@ export abstract class BattleAnim {
let u = 0;
let t = 0;
let g = 0;
for (let frame of spriteFrames) {
for (const frame of spriteFrames) {
if (frame.target !== AnimFrameTarget.GRAPHIC) {
const isUser = frame.target === AnimFrameTarget.USER;
if (isUser && target === user)
@ -824,7 +824,7 @@ export abstract class BattleAnim {
} else {
const sprites = spriteCache[AnimFrameTarget.GRAPHIC];
if (g === sprites.length) {
let newSprite: Phaser.GameObjects.Sprite = scene.addFieldSprite(0, 0, anim.graphic, 1);
const newSprite: Phaser.GameObjects.Sprite = scene.addFieldSprite(0, 0, anim.graphic, 1);
sprites.push(newSprite);
scene.field.add(newSprite);
spritePriorities.push(1);
@ -891,15 +891,15 @@ export abstract class BattleAnim {
}
}
if (anim.frameTimedEvents.has(f)) {
for (let event of anim.frameTimedEvents.get(f))
for (const event of anim.frameTimedEvents.get(f))
r = Math.max((anim.frames.length - f) + event.execute(scene, this), r);
}
const targets = Utils.getEnumValues(AnimFrameTarget);
for (let i of targets) {
for (const i of targets) {
const count = i === AnimFrameTarget.GRAPHIC ? g : i === AnimFrameTarget.USER ? u : t;
if (count < spriteCache[i].length) {
const spritesToRemove = spriteCache[i].slice(count, spriteCache[i].length);
for (let rs of spritesToRemove) {
for (const rs of spritesToRemove) {
if (!rs.getData('locked') as boolean) {
const spriteCacheIndex = spriteCache[i].indexOf(rs);
spriteCache[i].splice(spriteCacheIndex, 1);
@ -914,7 +914,7 @@ export abstract class BattleAnim {
r--;
},
onComplete: () => {
for (let ms of Object.values(spriteCache).flat()) {
for (const ms of Object.values(spriteCache).flat()) {
if (ms && !ms.getData('locked'))
ms.destroy();
}
@ -1005,7 +1005,7 @@ export async function populateAnims() {
const chargeAnimIds = Utils.getEnumValues(ChargeAnim) as ChargeAnim[];
const commonNamePattern = /name: (?:Common:)?(Opp )?(.*)/;
const moveNameToId = {};
for (let move of Utils.getEnumValues(Moves).slice(1)) {
for (const move of Utils.getEnumValues(Moves).slice(1)) {
const moveName = Moves[move].toUpperCase().replace(/\_/g, '');
moveNameToId[moveName] = move;
}
@ -1035,7 +1035,7 @@ export async function populateAnims() {
const animName = nameField.slice(nameIndex, nameField.indexOf('\n', nameIndex));
if (!moveNameToId.hasOwnProperty(animName) && !commonAnimId && !chargeAnimId)
continue;
let anim = commonAnimId || chargeAnimId ? new AnimConfig() : new AnimConfig();
const anim = commonAnimId || chargeAnimId ? new AnimConfig() : new AnimConfig();
if (anim instanceof AnimConfig)
(anim as AnimConfig).id = moveNameToId[animName];
if (commonAnimId)
@ -1066,7 +1066,7 @@ export async function populateAnims() {
}
break;
case 'graphic':
const graphic = fieldData !== "''" ? fieldData : '';
const graphic = fieldData !== '\'\'' ? fieldData : '';
anim.graphic = graphic.indexOf('.') > -1
? graphic.slice(0, fieldData.indexOf('.'))
: graphic;
@ -1077,7 +1077,7 @@ export async function populateAnims() {
const timingData = timingEntries[t].replace(/\n/g, ' ').replace(/[ ]{2,}/g, ' ').replace(/[a-z]+: ! '', /ig, '').replace(/name: (.*?),/, 'name: "$1",')
.replace(/flashColor: !ruby\/object:Color { alpha: ([\d\.]+), blue: ([\d\.]+), green: ([\d\.]+), red: ([\d\.]+)}/, 'flashRed: $4, flashGreen: $3, flashBlue: $2, flashAlpha: $1');
const frameIndex = parseInt(/frame: (\d+)/.exec(timingData)[1]);
let resourceName = /name: "(.*?)"/.exec(timingData)[1].replace("''", '');
let resourceName = /name: "(.*?)"/.exec(timingData)[1].replace('\'\'', '');
const timingType = parseInt(/timingType: (\d)/.exec(timingData)[1]);
let timedEvent: AnimTimedEvent;
switch (timingType) {
@ -1167,13 +1167,13 @@ export async function populateAnims() {
const animComparator = (a: Element, b: Element) => {
let props: string[];
let p = 0;
const p = 0;
for (let p = 0; p < propSets.length; p++) {
props = propSets[p];
let ai = props.indexOf(a.key);
const ai = props.indexOf(a.key);
if (ai === -1)
continue;
let bi = props.indexOf(b.key);
const bi = props.indexOf(b.key);
return ai < bi ? -1 : ai > bi ? 1 : 0;
}

View File

@ -1,20 +1,20 @@
import { CommonAnim, CommonBattleAnim } from "./battle-anims";
import { CommonAnimPhase, MoveEffectPhase, MovePhase, PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../phases";
import { getPokemonMessage, getPokemonPrefix } from "../messages";
import Pokemon, { MoveResult, HitResult } from "../field/pokemon";
import { Stat, getStatName } from "./pokemon-stat";
import { StatusEffect } from "./status-effect";
import * as Utils from "../utils";
import { Moves } from "./enums/moves";
import { ChargeAttr, MoveFlags, allMoves } from "./move";
import { Type } from "./type";
import { BlockNonDirectDamageAbAttr, FlinchEffectAbAttr, ReverseDrainAbAttr, applyAbAttrs } from "./ability";
import { Abilities } from "./enums/abilities";
import { BattlerTagType } from "./enums/battler-tag-type";
import { TerrainType } from "./terrain";
import { WeatherType } from "./weather";
import { BattleStat } from "./battle-stat";
import { allAbilities } from "./ability";
import { CommonAnim, CommonBattleAnim } from './battle-anims';
import { CommonAnimPhase, MoveEffectPhase, MovePhase, PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from '../phases';
import { getPokemonMessage, getPokemonPrefix } from '../messages';
import Pokemon, { MoveResult, HitResult } from '../field/pokemon';
import { Stat, getStatName } from './pokemon-stat';
import { StatusEffect } from './status-effect';
import * as Utils from '../utils';
import { Moves } from './enums/moves';
import { ChargeAttr, MoveFlags, allMoves } from './move';
import { Type } from './type';
import { BlockNonDirectDamageAbAttr, FlinchEffectAbAttr, ReverseDrainAbAttr, applyAbAttrs } from './ability';
import { Abilities } from './enums/abilities';
import { BattlerTagType } from './enums/battler-tag-type';
import { TerrainType } from './terrain';
import { WeatherType } from './weather';
import { BattleStat } from './battle-stat';
import { allAbilities } from './ability';
export enum BattlerTagLapseType {
FAINT,
@ -97,7 +97,7 @@ export class RechargingTag extends BattlerTag {
onAdd(pokemon: Pokemon): void {
super.onAdd(pokemon);
pokemon.getMoveQueue().push({ move: Moves.NONE, targets: [] })
pokemon.getMoveQueue().push({ move: Moves.NONE, targets: [] });
}
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
@ -179,24 +179,24 @@ export class FlinchedTag extends BattlerTag {
export class InterruptedTag extends BattlerTag {
constructor(sourceMove: Moves){
super(BattlerTagType.INTERRUPTED, BattlerTagLapseType.PRE_MOVE, 0, sourceMove)
super(BattlerTagType.INTERRUPTED, BattlerTagLapseType.PRE_MOVE, 0, sourceMove);
}
canAdd(pokemon: Pokemon): boolean {
return !!pokemon.getTag(BattlerTagType.FLYING)
return !!pokemon.getTag(BattlerTagType.FLYING);
}
onAdd(pokemon: Pokemon): void {
super.onAdd(pokemon);
pokemon.getMoveQueue().shift()
pokemon.pushMoveHistory({move: Moves.NONE, result: MoveResult.OTHER})
pokemon.getMoveQueue().shift();
pokemon.pushMoveHistory({move: Moves.NONE, result: MoveResult.OTHER});
}
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
super.lapse(pokemon, lapseType);
(pokemon.scene.getCurrentPhase() as MovePhase).cancel();
return true
return true;
}
}
@ -526,7 +526,7 @@ export class IngrainTag extends TrappedTag {
if (ret)
pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(), Math.floor(pokemon.getMaxHp() / 16),
getPokemonMessage(pokemon, ` absorbed\nnutrients with its roots!`), true));
getPokemonMessage(pokemon, ' absorbed\nnutrients with its roots!'), true));
return ret;
}
@ -579,7 +579,7 @@ export class MinimizeTag extends BattlerTag {
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
//If a pokemon dynamaxes they lose minimized status
if(pokemon.isMax()){
return false
return false;
}
return lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType);
}
@ -651,7 +651,7 @@ export abstract class DamagingTrapTag extends TrappedTag {
applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled);
if (!cancelled.value)
pokemon.damageAndUpdate(Math.ceil(pokemon.getMaxHp() / 8))
pokemon.damageAndUpdate(Math.ceil(pokemon.getMaxHp() / 8));
}
return ret;
@ -726,7 +726,7 @@ export class MagmaStormTag extends DamagingTrapTag {
}
getTrapMessage(pokemon: Pokemon): string {
return getPokemonMessage(pokemon, ` became trapped\nby swirling magma!`);
return getPokemonMessage(pokemon, ' became trapped\nby swirling magma!');
}
}
@ -736,7 +736,7 @@ export class SnapTrapTag extends DamagingTrapTag {
}
getTrapMessage(pokemon: Pokemon): string {
return getPokemonMessage(pokemon, ` got trapped\nby a snap trap!`);
return getPokemonMessage(pokemon, ' got trapped\nby a snap trap!');
}
}

View File

@ -1,12 +1,12 @@
import { PokemonHealPhase, StatChangePhase } from "../phases";
import { getPokemonMessage } from "../messages";
import Pokemon, { HitResult } from "../field/pokemon";
import { getBattleStatName } from "./battle-stat";
import { BattleStat } from "./battle-stat";
import { BattlerTagType } from "./enums/battler-tag-type";
import { getStatusEffectHealText } from "./status-effect";
import * as Utils from "../utils";
import { DoubleBerryEffectAbAttr, ReduceBerryUseThresholdAbAttr, applyAbAttrs } from "./ability";
import { PokemonHealPhase, StatChangePhase } from '../phases';
import { getPokemonMessage } from '../messages';
import Pokemon, { HitResult } from '../field/pokemon';
import { getBattleStatName } from './battle-stat';
import { BattleStat } from './battle-stat';
import { BattlerTagType } from './enums/battler-tag-type';
import { getStatusEffectHealText } from './status-effect';
import * as Utils from '../utils';
import { DoubleBerryEffectAbAttr, ReduceBerryUseThresholdAbAttr, applyAbAttrs } from './ability';
import i18next from '../plugins/i18n';
export enum BerryType {

View File

@ -1,11 +1,11 @@
import { Species } from "./enums/species";
import { Species } from './enums/species';
import { Type } from './type';
import * as Utils from '../utils';
import beautify from 'json-beautify';
import { TrainerType } from "./enums/trainer-type";
import { TimeOfDay } from "./enums/time-of-day";
import { Biome } from "./enums/biome";
import { SpeciesFormEvolution } from "./pokemon-evolutions";
import { TrainerType } from './enums/trainer-type';
import { TimeOfDay } from './enums/time-of-day';
import { Biome } from './enums/biome';
import { SpeciesFormEvolution } from './pokemon-evolutions';
export function getBiomeName(biome: Biome | -1) {
if (biome === -1)
@ -83,7 +83,7 @@ export enum BiomePoolTier {
BOSS_RARE,
BOSS_SUPER_RARE,
BOSS_ULTRA_RARE
};
}
export const uncatchableSpecies: Species[] = [];
@ -7659,7 +7659,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
const linkedBiomes: (Biome | [ Biome, integer ])[] = Array.isArray(biomeLinks[biome])
? biomeLinks[biome] as (Biome | [ Biome, integer ])[]
: [ biomeLinks[biome] as Biome ];
for (let linkedBiomeEntry of linkedBiomes) {
for (const linkedBiomeEntry of linkedBiomes) {
const linkedBiome = !Array.isArray(linkedBiomeEntry)
? linkedBiomeEntry as Biome
: linkedBiomeEntry[0];
@ -7678,20 +7678,20 @@ export const biomeTrainerPools: BiomeTrainerPools = {
import('./pokemon-evolutions').then(pe => {
const pokemonEvolutions = pe.pokemonEvolutions;
for (let biome of Utils.getEnumValues(Biome)) {
for (const biome of Utils.getEnumValues(Biome)) {
biomePokemonPools[biome] = {};
biomeTrainerPools[biome] = {};
for (let tier of Utils.getEnumValues(BiomePoolTier)) {
for (const tier of Utils.getEnumValues(BiomePoolTier)) {
biomePokemonPools[biome][tier] = {};
biomeTrainerPools[biome][tier] = [];
for (let tod of Utils.getEnumValues(TimeOfDay))
for (const tod of Utils.getEnumValues(TimeOfDay))
biomePokemonPools[biome][tier][tod] = [];
}
}
for (let pb of pokemonBiomes) {
for (const pb of pokemonBiomes) {
const speciesId = pb[0] as Species;
const biomeEntries = pb[3] as (Biome | BiomePoolTier)[][];
@ -7702,7 +7702,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
if (!biomeEntries.filter(b => b[0] !== Biome.END).length && !speciesEvolutions.filter(es => !!((pokemonBiomes.find(p => p[0] === es.speciesId))[3] as any[]).filter(b => b[0] !== Biome.END).length).length)
uncatchableSpecies.push(speciesId);
for (let b of biomeEntries) {
for (const b of biomeEntries) {
const biome = b[0];
const tier = b[1];
const timesOfDay = b.length > 2
@ -7711,7 +7711,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
: [ b[2] ]
: [ TimeOfDay.ALL ];
for (let tod of timesOfDay) {
for (const tod of timesOfDay) {
if (!biomePokemonPools.hasOwnProperty(biome) || !biomePokemonPools[biome].hasOwnProperty(tier) || !biomePokemonPools[biome][tier].hasOwnProperty(tod))
continue;
@ -7746,10 +7746,10 @@ export const biomeTrainerPools: BiomeTrainerPools = {
}
}
for (let b of Object.keys(biomePokemonPools)) {
for (let t of Object.keys(biomePokemonPools[b])) {
for (const b of Object.keys(biomePokemonPools)) {
for (const t of Object.keys(biomePokemonPools[b])) {
const tier = parseInt(t) as BiomePoolTier;
for (let tod of Object.keys(biomePokemonPools[b][t])) {
for (const tod of Object.keys(biomePokemonPools[b][t])) {
const biomeTierTimePool = biomePokemonPools[b][t][tod];
for (let e = 0; e < biomeTierTimePool.length; e++) {
const entry = biomeTierTimePool[e];
@ -7775,11 +7775,11 @@ export const biomeTrainerPools: BiomeTrainerPools = {
}
}
for (let tb of trainerBiomes) {
for (const tb of trainerBiomes) {
const trainerType = tb[0] as TrainerType;
const biomeEntries = tb[1] as BiomePoolTier[][];
for (let b of biomeEntries) {
for (const b of biomeEntries) {
const biome = b[0];
const tier = b[1];
@ -7798,28 +7798,28 @@ export const biomeTrainerPools: BiomeTrainerPools = {
const pokemonOutput = {};
const trainerOutput = {};
for (let b of Object.keys(biomePokemonPools)) {
for (const b of Object.keys(biomePokemonPools)) {
const biome = Biome[b];
pokemonOutput[biome] = {};
trainerOutput[biome] = {};
for (let t of Object.keys(biomePokemonPools[b])) {
for (const t of Object.keys(biomePokemonPools[b])) {
const tier = BiomePoolTier[t];
pokemonOutput[biome][tier] = {};
for (let tod of Object.keys(biomePokemonPools[b][t])) {
for (const tod of Object.keys(biomePokemonPools[b][t])) {
const timeOfDay = TimeOfDay[tod];
pokemonOutput[biome][tier][timeOfDay] = [];
for (let f of biomePokemonPools[b][t][tod]) {
for (const f of biomePokemonPools[b][t][tod]) {
if (typeof f === 'number')
pokemonOutput[biome][tier][timeOfDay].push(Species[f]);
else {
const tree = {};
for (let l of Object.keys(f)) {
for (const l of Object.keys(f)) {
tree[l] = f[l].map(s => Species[s]);
}
@ -7830,12 +7830,12 @@ export const biomeTrainerPools: BiomeTrainerPools = {
}
}
for (let t of Object.keys(biomeTrainerPools[b])) {
for (const t of Object.keys(biomeTrainerPools[b])) {
const tier = BiomePoolTier[t];
trainerOutput[biome][tier] = [];
for (let f of biomeTrainerPools[b][t])
for (const f of biomeTrainerPools[b][t])
trainerOutput[biome][tier].push(TrainerType[f]);
}
}

View File

@ -1,11 +1,11 @@
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";
import PokemonSpecies, { PokemonSpeciesForm, getPokemonSpecies, getPokemonSpeciesForm, speciesStarters } from "./pokemon-species";
import { PartyMemberStrength } from "./enums/party-member-strength";
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';
import PokemonSpecies, { PokemonSpeciesForm, getPokemonSpecies, getPokemonSpeciesForm, speciesStarters } from './pokemon-species';
import { PartyMemberStrength } from './enums/party-member-strength';
export interface DailyRunConfig {
seed: integer;

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
import { Moves } from "./enums/moves";
import { Species } from "./enums/species";
import { allMoves } from "./move";
import * as Utils from "../utils";
import { Moves } from './enums/moves';
import { Species } from './enums/species';
import { allMoves } from './move';
import * as Utils from '../utils';
export const speciesEggMoves = {
@ -588,7 +588,7 @@ function parseEggMoves(content: string): void {
const enumSpeciesName = cols[0].toUpperCase().replace(/[ -]/g, '_');
const species = speciesValues[speciesNames.findIndex(s => s === enumSpeciesName)];
let eggMoves: Moves[] = [];
const eggMoves: Moves[] = [];
for (let m = 0; m < 4; m++) {
const moveName = cols[m + 1].trim();
@ -606,7 +606,7 @@ function parseEggMoves(content: string): void {
console.log(output);
}
const eggMovesStr = ``;
const eggMovesStr = '';
if (eggMovesStr) {
setTimeout(() => {
parseEggMoves(eggMovesStr);

View File

@ -1,9 +1,9 @@
import { Type } from "./type";
import * as Utils from "../utils";
import BattleScene from "../battle-scene";
import { Species } from "./enums/species";
import { getPokemonSpecies, speciesStarters } from "./pokemon-species";
import { EggTier } from "./enums/egg-type";
import { Type } from './type';
import * as Utils from '../utils';
import BattleScene from '../battle-scene';
import { Species } from './enums/species';
import { getPokemonSpecies, speciesStarters } from './pokemon-species';
import { EggTier } from './enums/egg-type';
import i18next from '../plugins/i18n';
export const EGG_SEED = 1073741824;
@ -101,7 +101,7 @@ export function getLegendaryGachaSpeciesForTimestamp(scene: BattleScene, timesta
const dayDate = new Date(Date.UTC(timeDate.getUTCFullYear(), timeDate.getUTCMonth(), timeDate.getUTCDate()));
const dayTimestamp = timeDate.getTime(); // Timestamp of current week
const offset = Math.floor(Math.floor(dayTimestamp / 86400000) / legendarySpecies.length); // Cycle number
const index = Math.floor(dayTimestamp / 86400000) % legendarySpecies.length // Index within cycle
const index = Math.floor(dayTimestamp / 86400000) % legendarySpecies.length; // Index within cycle
scene.executeWithSeedOffset(() => {
ret = Phaser.Math.RND.shuffle(legendarySpecies)[index];

View File

@ -1,20 +1,20 @@
export enum ArenaTagType {
NONE = "NONE",
MUD_SPORT = "MUD_SPORT",
WATER_SPORT = "WATER_SPORT",
SPIKES = "SPIKES",
TOXIC_SPIKES = "TOXIC_SPIKES",
MIST = "MIST",
FUTURE_SIGHT = "FUTURE_SIGHT",
DOOM_DESIRE = "DOOM_DESIRE",
WISH = "WISH",
STEALTH_ROCK = "STEALTH_ROCK",
STICKY_WEB = "STICKY_WEB",
TRICK_ROOM = "TRICK_ROOM",
GRAVITY = "GRAVITY",
REFLECT = "REFLECT",
LIGHT_SCREEN = "LIGHT_SCREEN",
AURORA_VEIL = "AURORA_VEIL",
TAILWIND = "TAILWIND"
NONE = 'NONE',
MUD_SPORT = 'MUD_SPORT',
WATER_SPORT = 'WATER_SPORT',
SPIKES = 'SPIKES',
TOXIC_SPIKES = 'TOXIC_SPIKES',
MIST = 'MIST',
FUTURE_SIGHT = 'FUTURE_SIGHT',
DOOM_DESIRE = 'DOOM_DESIRE',
WISH = 'WISH',
STEALTH_ROCK = 'STEALTH_ROCK',
STICKY_WEB = 'STICKY_WEB',
TRICK_ROOM = 'TRICK_ROOM',
GRAVITY = 'GRAVITY',
REFLECT = 'REFLECT',
LIGHT_SCREEN = 'LIGHT_SCREEN',
AURORA_VEIL = 'AURORA_VEIL',
TAILWIND = 'TAILWIND'
}

View File

@ -1,60 +1,60 @@
export enum BattlerTagType {
NONE = "NONE",
RECHARGING = "RECHARGING",
FLINCHED = "FLINCHED",
INTERRUPTED = "INTERRUPTED",
CONFUSED = "CONFUSED",
INFATUATED = "INFATUATED",
SEEDED = "SEEDED",
NIGHTMARE = "NIGHTMARE",
FRENZY = "FRENZY",
CHARGING = "CHARGING",
ENCORE = "ENCORE",
HELPING_HAND = "HELPING_HAND",
INGRAIN = "INGRAIN",
AQUA_RING = "AQUA_RING",
DROWSY = "DROWSY",
TRAPPED = "TRAPPED",
BIND = "BIND",
WRAP = "WRAP",
FIRE_SPIN = "FIRE_SPIN",
WHIRLPOOL = "WHIRLPOOL",
CLAMP = "CLAMP",
SAND_TOMB = "SAND_TOMB",
MAGMA_STORM = "MAGMA_STORM",
SNAP_TRAP = "SNAP_TRAP",
THUNDER_CAGE = "THUNDER_CAGE",
INFESTATION = "INFESTATION",
PROTECTED = "PROTECTED",
SPIKY_SHIELD = "SPIKY_SHIELD",
KINGS_SHIELD = "KINGS_SHIELD",
OBSTRUCT = "OBSTRUCT",
SILK_TRAP = "SILK_TRAP",
BANEFUL_BUNKER = "BANEFUL_BUNKER",
BURNING_BULWARK = "BURNING_BULWARK",
ENDURING = "ENDURING",
STURDY = "STURDY",
PERISH_SONG = "PERISH_SONG",
TRUANT = "TRUANT",
SLOW_START = "SLOW_START",
PROTOSYNTHESIS = "PROTOSYNTHESIS",
QUARK_DRIVE = "QUARK_DRIVE",
FLYING = "FLYING",
UNDERGROUND = "UNDERGROUND",
UNDERWATER = "UNDERWATER",
HIDDEN = "HIDDEN",
FIRE_BOOST = "FIRE_BOOST",
CRIT_BOOST = "CRIT_BOOST",
ALWAYS_CRIT = "ALWAYS_CRIT",
NO_CRIT = "NO_CRIT",
IGNORE_ACCURACY = "IGNORE_ACCURACY",
BYPASS_SLEEP = "BYPASS_SLEEP",
IGNORE_FLYING = "IGNORE_FLYING",
SALT_CURED = "SALT_CURED",
CURSED = "CURSED",
CHARGED = "CHARGED",
GROUNDED = "GROUNDED",
MAGNET_RISEN = "MAGNET_RISEN",
MINIMIZED = "MINIMIZED"
NONE = 'NONE',
RECHARGING = 'RECHARGING',
FLINCHED = 'FLINCHED',
INTERRUPTED = 'INTERRUPTED',
CONFUSED = 'CONFUSED',
INFATUATED = 'INFATUATED',
SEEDED = 'SEEDED',
NIGHTMARE = 'NIGHTMARE',
FRENZY = 'FRENZY',
CHARGING = 'CHARGING',
ENCORE = 'ENCORE',
HELPING_HAND = 'HELPING_HAND',
INGRAIN = 'INGRAIN',
AQUA_RING = 'AQUA_RING',
DROWSY = 'DROWSY',
TRAPPED = 'TRAPPED',
BIND = 'BIND',
WRAP = 'WRAP',
FIRE_SPIN = 'FIRE_SPIN',
WHIRLPOOL = 'WHIRLPOOL',
CLAMP = 'CLAMP',
SAND_TOMB = 'SAND_TOMB',
MAGMA_STORM = 'MAGMA_STORM',
SNAP_TRAP = 'SNAP_TRAP',
THUNDER_CAGE = 'THUNDER_CAGE',
INFESTATION = 'INFESTATION',
PROTECTED = 'PROTECTED',
SPIKY_SHIELD = 'SPIKY_SHIELD',
KINGS_SHIELD = 'KINGS_SHIELD',
OBSTRUCT = 'OBSTRUCT',
SILK_TRAP = 'SILK_TRAP',
BANEFUL_BUNKER = 'BANEFUL_BUNKER',
BURNING_BULWARK = 'BURNING_BULWARK',
ENDURING = 'ENDURING',
STURDY = 'STURDY',
PERISH_SONG = 'PERISH_SONG',
TRUANT = 'TRUANT',
SLOW_START = 'SLOW_START',
PROTOSYNTHESIS = 'PROTOSYNTHESIS',
QUARK_DRIVE = 'QUARK_DRIVE',
FLYING = 'FLYING',
UNDERGROUND = 'UNDERGROUND',
UNDERWATER = 'UNDERWATER',
HIDDEN = 'HIDDEN',
FIRE_BOOST = 'FIRE_BOOST',
CRIT_BOOST = 'CRIT_BOOST',
ALWAYS_CRIT = 'ALWAYS_CRIT',
NO_CRIT = 'NO_CRIT',
IGNORE_ACCURACY = 'IGNORE_ACCURACY',
BYPASS_SLEEP = 'BYPASS_SLEEP',
IGNORE_FLYING = 'IGNORE_FLYING',
SALT_CURED = 'SALT_CURED',
CURSED = 'CURSED',
CHARGED = 'CHARGED',
GROUNDED = 'GROUNDED',
MAGNET_RISEN = 'MAGNET_RISEN',
MINIMIZED = 'MINIMIZED'
}

View File

@ -1872,4 +1872,4 @@ export enum Moves {
UPPER_HAND,
/**{@link https://bulbapedia.bulbagarden.net/wiki/Malignant_Chain_(move) | Source} */
MALIGNANT_CHAIN,
};
}

View File

@ -2163,7 +2163,7 @@ export enum Species {
PALDEA_WOOPER = 8194,
/**{@link https://bulbapedia.bulbagarden.net/wiki/Ursaluna_(Pokémon) | Source} */
BLOODMOON_URSALUNA = 8901,
};
}
export const defaultStarterSpecies: Species[] = [
Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE,

View File

@ -5,7 +5,7 @@ export enum GrowthRate {
MEDIUM_SLOW,
SLOW,
FLUCTUATING
};
}
const expLevels = [
[ 0, 15, 52, 122, 237, 406, 637, 942, 1326, 1800, 2369, 3041, 3822, 4719, 5737, 6881, 8155, 9564, 11111, 12800, 14632, 16610, 18737, 21012, 23437, 26012, 28737, 31610, 34632, 37800, 41111, 44564, 48155, 51881, 55737, 59719, 63822, 68041, 72369, 76800, 81326, 85942, 90637, 95406, 100237, 105122, 110052, 115015, 120001, 125000, 131324, 137795, 144410, 151165, 158056, 165079, 172229, 179503, 186894, 194400, 202013, 209728, 217540, 225443, 233431, 241496, 249633, 257834, 267406, 276458, 286328, 296358, 305767, 316074, 326531, 336255, 346965, 357812, 367807, 378880, 390077, 400293, 411686, 423190, 433572, 445239, 457001, 467489, 479378, 491346, 501878, 513934, 526049, 536557, 548720, 560922, 571333, 583539, 591882, 600000 ],

View File

@ -1,29 +1,29 @@
import { Moves } from "./enums/moves";
import { ChargeAnim, MoveChargeAnim, initMoveAnim, loadMoveAnimAssets } from "./battle-anims";
import { BattleEndPhase, MoveEffectPhase, MovePhase, NewBattlePhase, PartyStatusCurePhase, PokemonHealPhase, StatChangePhase, SwitchSummonPhase, ToggleDoublePositionPhase } from "../phases";
import { BattleStat, getBattleStatName } from "./battle-stat";
import { EncoreTag } from "./battler-tags";
import { BattlerTagType } from "./enums/battler-tag-type";
import { getPokemonMessage } from "../messages";
import Pokemon, { AttackMoveResult, EnemyPokemon, HitResult, MoveResult, PlayerPokemon, PokemonMove, TurnMove } from "../field/pokemon";
import { StatusEffect, getStatusEffectHealText } from "./status-effect";
import { Type } from "./type";
import * as Utils from "../utils";
import { WeatherType } from "./weather";
import { ArenaTagSide, ArenaTrapTag } from "./arena-tag";
import { ArenaTagType } from "./enums/arena-tag-type";
import { UnswappableAbilityAbAttr, UncopiableAbilityAbAttr, UnsuppressableAbilityAbAttr, NoTransformAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr, applyPostDefendAbAttrs, PostDefendContactApplyStatusEffectAbAttr, MoveAbilityBypassAbAttr, ReverseDrainAbAttr, FieldPreventExplosiveMovesAbAttr, ForceSwitchOutImmunityAbAttr, PreventBerryUseAbAttr, BlockItemTheftAbAttr } from "./ability";
import { Abilities } from "./enums/abilities";
import { Moves } from './enums/moves';
import { ChargeAnim, MoveChargeAnim, initMoveAnim, loadMoveAnimAssets } from './battle-anims';
import { BattleEndPhase, MoveEffectPhase, MovePhase, NewBattlePhase, PartyStatusCurePhase, PokemonHealPhase, StatChangePhase, SwitchSummonPhase, ToggleDoublePositionPhase } from '../phases';
import { BattleStat, getBattleStatName } from './battle-stat';
import { EncoreTag } from './battler-tags';
import { BattlerTagType } from './enums/battler-tag-type';
import { getPokemonMessage } from '../messages';
import Pokemon, { AttackMoveResult, EnemyPokemon, HitResult, MoveResult, PlayerPokemon, PokemonMove, TurnMove } from '../field/pokemon';
import { StatusEffect, getStatusEffectHealText } from './status-effect';
import { Type } from './type';
import * as Utils from '../utils';
import { WeatherType } from './weather';
import { ArenaTagSide, ArenaTrapTag } from './arena-tag';
import { ArenaTagType } from './enums/arena-tag-type';
import { UnswappableAbilityAbAttr, UncopiableAbilityAbAttr, UnsuppressableAbilityAbAttr, NoTransformAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr, applyPostDefendAbAttrs, PostDefendContactApplyStatusEffectAbAttr, MoveAbilityBypassAbAttr, ReverseDrainAbAttr, FieldPreventExplosiveMovesAbAttr, ForceSwitchOutImmunityAbAttr, PreventBerryUseAbAttr, BlockItemTheftAbAttr } from './ability';
import { Abilities } from './enums/abilities';
import { allAbilities } from './ability';
import { PokemonHeldItemModifier, BerryModifier, PreserveBerryModifier } from "../modifier/modifier";
import { BattlerIndex } from "../battle";
import { Stat } from "./pokemon-stat";
import { TerrainType } from "./terrain";
import { SpeciesFormChangeActiveTrigger } from "./pokemon-forms";
import { Species } from "./enums/species";
import { ModifierPoolType } from "#app/modifier/modifier-type";
import { Command } from "../ui/command-ui-handler";
import { Biome } from "./enums/biome";
import { PokemonHeldItemModifier, BerryModifier, PreserveBerryModifier } from '../modifier/modifier';
import { BattlerIndex } from '../battle';
import { Stat } from './pokemon-stat';
import { TerrainType } from './terrain';
import { SpeciesFormChangeActiveTrigger } from './pokemon-forms';
import { Species } from './enums/species';
import { ModifierPoolType } from '#app/modifier/modifier-type';
import { Command } from '../ui/command-ui-handler';
import { Biome } from './enums/biome';
import i18next, { Localizable } from '../plugins/i18n';
import { BerryType, BerryEffectFunc, getBerryEffectFunc } from './berry';
@ -345,7 +345,7 @@ export default class Move implements Localizable {
}
applyConditions(user: Pokemon, target: Pokemon, move: Move): boolean {
for (let condition of this.conditions) {
for (const condition of this.conditions) {
if (!condition.apply(user, target, move))
return false;
}
@ -354,8 +354,8 @@ export default class Move implements Localizable {
}
getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null {
for (let attr of this.attrs) {
let failedText = attr.getFailedText(user, target, move, cancelled);
for (const attr of this.attrs) {
const failedText = attr.getFailedText(user, target, move, cancelled);
if (failedText !== null)
return failedText;
}
@ -365,10 +365,10 @@ export default class Move implements Localizable {
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
let score = 0;
for (let attr of this.attrs)
for (const attr of this.attrs)
score += attr.getUserBenefitScore(user, target, move);
for (let condition of this.conditions)
for (const condition of this.conditions)
score += condition.getUserBenefitScore(user, target, move);
return score;
@ -377,7 +377,7 @@ export default class Move implements Localizable {
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
let score = 0;
for (let attr of this.attrs)
for (const attr of this.attrs)
score += attr.getTargetBenefitScore(user, !attr.selfTarget ? target : user, move) * (target !== user && attr.selfTarget ? -1 : 1);
return score;
@ -954,7 +954,7 @@ export class HealAttr extends MoveEffectAttr {
}
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
let score = ((1 - (this.selfTarget ? user : target).getHpRatio()) * 20) - this.healRatio * 10;
const score = ((1 - (this.selfTarget ? user : target).getHpRatio()) * 20) - this.healRatio * 10;
return Math.round(score / (1 - this.healRatio / 2));
}
}
@ -1143,7 +1143,7 @@ export class HitHealAttr extends MoveEffectAttr {
const reverseDrain = user.hasAbilityWithAttr(ReverseDrainAbAttr);
user.scene.unshiftPhase(new PokemonHealPhase(user.scene, user.getBattlerIndex(),
!reverseDrain ? healAmount : healAmount * -1,
!reverseDrain ? getPokemonMessage(target, ` had its\nenergy drained!`) : undefined,
!reverseDrain ? getPokemonMessage(target, ' had its\nenergy drained!') : undefined,
false, true));
if (reverseDrain) user.turnData.damageTaken += healAmount;
return true;
@ -1164,7 +1164,7 @@ export class StrengthSapHealAttr extends MoveEffectAttr {
const reverseDrain = user.hasAbilityWithAttr(ReverseDrainAbAttr);
user.scene.unshiftPhase(new PokemonHealPhase(user.scene, user.getBattlerIndex(),
!reverseDrain ? healAmount : healAmount * -1,
!reverseDrain ? getPokemonMessage(user, ` regained\nhealth!`) : undefined,
!reverseDrain ? getPokemonMessage(user, ' regained\nhealth!') : undefined,
false, true));
return true;
}
@ -1217,8 +1217,8 @@ export class MultiHitAttr extends MoveAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
let hitTimes: integer;
const hitType = new Utils.IntegerHolder(this.multiHitType)
applyMoveAttrs(ChangeMultiHitTypeAttr, user, target, move, hitType)
const hitType = new Utils.IntegerHolder(this.multiHitType);
applyMoveAttrs(ChangeMultiHitTypeAttr, user, target, move, hitType);
switch (hitType.value) {
case MultiHitType._2_TO_5:
{
@ -1275,7 +1275,7 @@ export class MultiHitAttr extends MoveAttr {
case MultiHitType.BEAT_UP:
// No status means the ally pokemon can contribute to Beat Up
hitTimes = user.scene.getParty().reduce((total, pokemon) => {
return total + (pokemon.id === user.id ? 1 : pokemon?.status && pokemon.status.effect !== StatusEffect.NONE ? 0 : 1)
return total + (pokemon.id === user.id ? 1 : pokemon?.status && pokemon.status.effect !== StatusEffect.NONE ? 0 : 1);
}, 0);
}
(args[0] as Utils.IntegerHolder).value = hitTimes;
@ -1297,7 +1297,7 @@ export class ChangeMultiHitTypeAttr extends MoveAttr {
export class WaterShurikenMultiHitTypeAttr extends ChangeMultiHitTypeAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
if (user.species.speciesId == Species.GRENINJA && user.hasAbility(Abilities.BATTLE_BOND) && user.formIndex == 2) {
(args[0] as Utils.IntegerHolder).value = MultiHitType._3
(args[0] as Utils.IntegerHolder).value = MultiHitType._3;
return true;
}
return false;
@ -1369,7 +1369,7 @@ export class PsychoShiftEffectAttr extends MoveEffectAttr {
return false;
}
if (!target.status || (target.status.effect === statusToApply && move.chance < 0)) {
var statusAfflictResult = target.trySetStatus(statusToApply, true, user);
const statusAfflictResult = target.trySetStatus(statusToApply, true, user);
if (statusAfflictResult) {
user.scene.queueMessage(getPokemonMessage(user, getStatusEffectHealText(user.status.effect)));
user.resetStatus();
@ -1718,7 +1718,7 @@ export class OneHitKOAttr extends MoveAttr {
const cancelled = new Utils.BooleanHolder(false);
applyAbAttrs(BlockOneHitKOAbAttr, target, cancelled);
return !cancelled.value && user.level >= target.level;
}
};
}
}
@ -1901,8 +1901,8 @@ export class StatChangeAttr extends MoveEffectAttr {
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
let ret = 0;
let moveLevels = this.getLevels(user);
for (let stat of this.stats) {
const moveLevels = this.getLevels(user);
for (const stat of this.stats) {
let levels = moveLevels;
if (levels > 0)
levels = Math.min(target.summonData.battleStats[stat] + levels, 6) - target.summonData.battleStats[stat];
@ -1967,7 +1967,7 @@ export class AcupressureStatChangeAttr extends MoveEffectAttr {
let randStats = [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD, BattleStat.ACC, BattleStat.EVA ];
randStats = randStats.filter(s => target.summonData.battleStats[s] < 6);
if (randStats.length > 0) {
let boostStat = [randStats[Utils.randInt(randStats.length)]];
const boostStat = [randStats[Utils.randInt(randStats.length)]];
user.scene.unshiftPhase(new StatChangePhase(user.scene, target.getBattlerIndex(), this.selfTarget, boostStat, 2));
return true;
}
@ -2055,7 +2055,7 @@ export class CopyStatsAttr extends MoveEffectAttr {
target.updateInfo();
user.updateInfo();
target.scene.queueMessage(getPokemonMessage(user, ' copied\n') + getPokemonMessage(target, `'s stat changes!`));
target.scene.queueMessage(getPokemonMessage(user, ' copied\n') + getPokemonMessage(target, '\'s stat changes!'));
return true;
}
@ -2071,7 +2071,7 @@ export class InvertStatsAttr extends MoveEffectAttr {
target.updateInfo();
user.updateInfo();
target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere all reversed!`));
target.scene.queueMessage(getPokemonMessage(target, '\'s stat changes\nwere all reversed!'));
return true;
}
@ -2087,7 +2087,7 @@ export class ResetStatsAttr extends MoveEffectAttr {
target.updateInfo();
user.updateInfo();
target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere eliminated!`));
target.scene.queueMessage(getPokemonMessage(target, '\'s stat changes\nwere eliminated!'));
return true;
}
@ -2178,7 +2178,7 @@ export class LessPPMorePowerAttr extends VariablePowerAttr {
*/
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
const ppMax = move.pp;
let ppUsed = user.moveset.find((m) => m.moveId === move.id).ppUsed;
const ppUsed = user.moveset.find((m) => m.moveId === move.id).ppUsed;
let ppRemains = ppMax - ppUsed;
/** Reduce to 0 to avoid negative numbers if user has 1PP before attack and target has Ability.PRESSURE */
@ -2243,7 +2243,7 @@ const beatUpFunc = (user: Pokemon, allyIndex: number): number => {
}
return (pokemon.species.getBaseStat(Stat.ATK) / 10) + 5;
}
}
};
export class BeatUpAttr extends VariablePowerAttr {
@ -2266,7 +2266,7 @@ export class BeatUpAttr extends VariablePowerAttr {
const doublePowerChanceMessageFunc = (user: Pokemon, target: Pokemon, move: Move) => {
let message: string = null;
user.scene.executeWithSeedOffset(() => {
let rand = Utils.randSeedInt(100);
const rand = Utils.randSeedInt(100);
if (rand < move.chance)
message = getPokemonMessage(user, ' is going all out for this attack!');
}, user.scene.currentBattle.turn << 6, user.scene.waveSeed);
@ -2644,7 +2644,7 @@ export class KnockOffPowerAttr extends VariablePowerAttr {
export class WaterShurikenPowerAttr extends VariablePowerAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
if (user.species.speciesId == Species.GRENINJA && user.hasAbility(Abilities.BATTLE_BOND) && user.formIndex == 2) {
(args[0] as Utils.IntegerHolder).value = 20
(args[0] as Utils.IntegerHolder).value = 20;
return true;
}
return false;
@ -2751,7 +2751,7 @@ export class MinimizeAccuracyAttr extends VariableAccuracyAttr {
*/
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
if (target.getTag(BattlerTagType.MINIMIZED)){
const accuracy = args[0] as Utils.NumberHolder
const accuracy = args[0] as Utils.NumberHolder;
accuracy.value = -1;
return true;
@ -3405,7 +3405,7 @@ export class CurseAttr extends MoveEffectAttr {
user.scene.queueMessage('But it failed!');
return false;
}
let curseRecoilDamage = Math.max(1, Math.floor(user.getMaxHp() / 2));
const curseRecoilDamage = Math.max(1, Math.floor(user.getMaxHp() / 2));
user.damageAndUpdate(curseRecoilDamage, HitResult.OTHER, false, true, true);
user.scene.queueMessage(getPokemonMessage(user, ` cut its own HP\nand laid a curse on the ${target.name}!`));
target.addTag(BattlerTagType.CURSED, 0, move.id, user.id);
@ -3431,7 +3431,7 @@ export class LapseBattlerTagAttr extends MoveEffectAttr {
if (!super.apply(user, target, move, args))
return false;
for (let tagType of this.tagTypes)
for (const tagType of this.tagTypes)
(this.selfTarget ? user : target).lapseTag(tagType);
return true;
@ -3451,7 +3451,7 @@ export class RemoveBattlerTagAttr extends MoveEffectAttr {
if (!super.apply(user, target, move, args))
return false;
for (let tagType of this.tagTypes)
for (const tagType of this.tagTypes)
(this.selfTarget ? user : target).removeTag(tagType);
return true;
@ -3718,7 +3718,7 @@ export class RevivalBlessingAttr extends MoveEffectAttr {
if(user instanceof PlayerPokemon
&& user.scene.getParty().findIndex(p => p.isFainted())>-1) {
(user as PlayerPokemon).revivalBlessing().then(() => {
resolve(true)
resolve(true);
});
// If user is enemy, checks that it is a trainer, and it has fainted non-boss pokemon in party
} else if(user instanceof EnemyPokemon
@ -3742,10 +3742,10 @@ export class RevivalBlessingAttr extends MoveEffectAttr {
}
resolve(true);
} else {
user.scene.queueMessage(`But it failed!`);
user.scene.queueMessage('But it failed!');
resolve(false);
}
})
});
}
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
@ -3830,7 +3830,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null {
const blockedByAbility = new Utils.BooleanHolder(false);
applyAbAttrs(ForceSwitchOutImmunityAbAttr, target, blockedByAbility);
return blockedByAbility.value ? getPokemonMessage(target, ` can't be switched out!`) : null;
return blockedByAbility.value ? getPokemonMessage(target, ' can\'t be switched out!') : null;
}
getSwitchOutCondition(): MoveConditionFunc {
@ -3885,7 +3885,7 @@ export class RemoveTypeAttr extends MoveEffectAttr {
if(user.isTerastallized && user.getTeraType() == this.removedType) // active tera types cannot be removed
return false;
const userTypes = user.getTypes(true)
const userTypes = user.getTypes(true);
const modifiedTypes = userTypes.filter(type => type !== this.removedType);
user.summonData.types = modifiedTypes;
user.updateInfo();
@ -3998,7 +3998,7 @@ export class FirstMoveTypeAttr extends MoveEffectAttr {
if (!super.apply(user, target, move, args))
return false;
const firstMoveType = target.getMoveset()[0].getMove().type
const firstMoveType = target.getMoveset()[0].getMove().type;
user.summonData.types = [ firstMoveType ];
@ -4081,7 +4081,7 @@ export class RandomMoveAttr extends OverrideMoveEffectAttr {
export class NaturePowerAttr extends OverrideMoveEffectAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise<boolean> {
return new Promise(resolve => {
var moveId;
let moveId;
switch (user.scene.arena.getTerrainType()) {
// this allows terrains to 'override' the biome move
case TerrainType.NONE:
@ -4432,11 +4432,11 @@ export class AbilityCopyAttr extends MoveEffectAttr {
user.summonData.ability = target.getAbility().id;
user.scene.queueMessage(getPokemonMessage(user, ` copied the `) + getPokemonMessage(target, `'s\n${allAbilities[target.getAbility().id].name}!`));
user.scene.queueMessage(getPokemonMessage(user, ' copied the ') + getPokemonMessage(target, `'s\n${allAbilities[target.getAbility().id].name}!`));
if (this.copyToPartner && user.scene.currentBattle?.double && user.getAlly().hp) {
user.getAlly().summonData.ability = target.getAbility().id;
user.getAlly().scene.queueMessage(getPokemonMessage(user.getAlly(), ` copied the `) + getPokemonMessage(target, `'s\n${allAbilities[target.getAbility().id].name}!`));
user.getAlly().scene.queueMessage(getPokemonMessage(user.getAlly(), ' copied the ') + getPokemonMessage(target, `'s\n${allAbilities[target.getAbility().id].name}!`));
}
return true;
@ -4486,7 +4486,7 @@ export class SwitchAbilitiesAttr extends MoveEffectAttr {
user.summonData.ability = target.getAbility().id;
target.summonData.ability = tempAbilityId;
user.scene.queueMessage(getPokemonMessage(user, ` swapped\nabilities with its target!`));
user.scene.queueMessage(getPokemonMessage(user, ' swapped\nabilities with its target!'));
return true;
}
@ -4503,7 +4503,7 @@ export class SuppressAbilitiesAttr extends MoveEffectAttr {
target.summonData.abilitySuppressed = true;
target.scene.queueMessage(getPokemonMessage(target, ` ability\nwas suppressed!`));
target.scene.queueMessage(getPokemonMessage(target, ' ability\nwas suppressed!'));
return true;
}
@ -4559,7 +4559,7 @@ export class MoneyAttr extends MoveEffectAttr {
apply(user: Pokemon, target: Pokemon, move: Move): boolean {
user.scene.currentBattle.moneyScattered += user.scene.getWaveMoneyAmount(0.2);
user.scene.queueMessage("Coins were scattered everywhere!")
user.scene.queueMessage('Coins were scattered everywhere!');
return true;
}
}
@ -4607,7 +4607,7 @@ const failIfDampCondition: MoveConditionFunc = (user, target, move) => {
if (cancelled.value)
user.scene.queueMessage(getPokemonMessage(user, ` cannot use ${move.name}!`));
return !cancelled.value;
}
};
export type MoveAttrFilter = (attr: MoveAttr) => boolean;
@ -4615,7 +4615,7 @@ function applyMoveAttrsInternal(attrFilter: MoveAttrFilter, user: Pokemon, targe
return new Promise(resolve => {
const attrPromises: Promise<boolean>[] = [];
const moveAttrs = move.attrs.filter(a => attrFilter(a));
for (let attr of moveAttrs) {
for (const attr of moveAttrs) {
const result = attr.apply(user, target, move, args);
if (result instanceof Promise)
attrPromises.push(result);
@ -4674,7 +4674,7 @@ const unknownTypeCondition: MoveConditionFunc = (user, target, move) => !user.ge
export type MoveTargetSet = {
targets: BattlerIndex[];
multiple: boolean;
}
};
export function getMoveTargets(user: Pokemon, move: Moves): MoveTargetSet {
const variableTarget = new Utils.NumberHolder(0);
@ -4696,7 +4696,7 @@ export function getMoveTargets(user: Pokemon, move: Moves): MoveTargetSet {
case MoveTarget.ALL_NEAR_OTHERS:
case MoveTarget.ALL_OTHERS:
set = (opponents.concat([ user.getAlly() ]));
multiple = moveTarget === MoveTarget.ALL_NEAR_OTHERS || moveTarget === MoveTarget.ALL_OTHERS
multiple = moveTarget === MoveTarget.ALL_NEAR_OTHERS || moveTarget === MoveTarget.ALL_OTHERS;
break;
case MoveTarget.NEAR_ENEMY:
case MoveTarget.ALL_NEAR_ENEMIES:
@ -5323,7 +5323,7 @@ export function initMoves() {
.condition((user, target, move) => user.status?.effect === StatusEffect.SLEEP)
.ignoresVirtual(),
new StatusMove(Moves.HEAL_BELL, Type.NORMAL, -1, 5, -1, 0, 2)
.attr(PartyStatusCureAttr, "A bell chimed!", Abilities.SOUNDPROOF)
.attr(PartyStatusCureAttr, 'A bell chimed!', Abilities.SOUNDPROOF)
.soundBased()
.target(MoveTarget.PARTY),
new AttackMove(Moves.RETURN, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2)
@ -5598,7 +5598,7 @@ export function initMoves() {
.attr(MovePowerMultiplierAttr, (user, target, move) => [WeatherType.SUNNY, WeatherType.RAIN, WeatherType.SANDSTORM, WeatherType.HAIL, WeatherType.SNOW, WeatherType.FOG, WeatherType.HEAVY_RAIN, WeatherType.HARSH_SUN].includes(user.scene.arena.weather?.weatherType) && !user.scene.arena.weather?.isEffectSuppressed(user.scene) ? 2 : 1)
.ballBombMove(),
new StatusMove(Moves.AROMATHERAPY, Type.GRASS, -1, 5, -1, 0, 3)
.attr(PartyStatusCureAttr, "A soothing aroma wafted through the area!", Abilities.SAP_SIPPER)
.attr(PartyStatusCureAttr, 'A soothing aroma wafted through the area!', Abilities.SAP_SIPPER)
.target(MoveTarget.PARTY),
new StatusMove(Moves.FAKE_TEARS, Type.DARK, 100, 20, -1, 0, 3)
.attr(StatChangeAttr, BattleStat.SPDEF, -2),
@ -6396,7 +6396,7 @@ export function initMoves() {
.powderMove()
.unimplemented(),
new SelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6)
.attr(ChargeAttr, ChargeAnim.GEOMANCY_CHARGING, "is charging its power!")
.attr(ChargeAttr, ChargeAnim.GEOMANCY_CHARGING, 'is charging its power!')
.attr(StatChangeAttr, [ BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 2, true)
.ignoresVirtual(),
new StatusMove(Moves.MAGNETIC_FLUX, Type.ELECTRIC, -1, 20, -1, 0, 6)
@ -6599,7 +6599,7 @@ export function initMoves() {
.condition((user, target, move) => target.summonData.battleStats[BattleStat.ATK] > -6)
.triageMove(),
new AttackMove(Moves.SOLAR_BLADE, Type.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7)
.attr(SunlightChargeAttr, ChargeAnim.SOLAR_BLADE_CHARGING, "is glowing!")
.attr(SunlightChargeAttr, ChargeAnim.SOLAR_BLADE_CHARGING, 'is glowing!')
.attr(AntiSunlightPowerDecreaseAttr)
.slicingMove(),
new AttackMove(Moves.LEAFAGE, Type.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 7)
@ -6638,7 +6638,7 @@ export function initMoves() {
})
.attr(HealStatusEffectAttr, true, StatusEffect.FREEZE)
.attr(RemoveTypeAttr, Type.FIRE, (user) => {
user.scene.queueMessage(getPokemonMessage(user, ` burned itself out!`));
user.scene.queueMessage(getPokemonMessage(user, ' burned itself out!'));
}),
new StatusMove(Moves.SPEED_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 7)
.unimplemented(),
@ -6657,7 +6657,7 @@ export function initMoves() {
new StatusMove(Moves.INSTRUCT, Type.PSYCHIC, -1, 15, -1, 0, 7)
.unimplemented(),
new AttackMove(Moves.BEAK_BLAST, Type.FLYING, MoveCategory.PHYSICAL, 100, 100, 15, -1, 5, 7)
.attr(ChargeAttr, ChargeAnim.BEAK_BLAST_CHARGING, "started\nheating up its beak!", undefined, false, true, -3)
.attr(ChargeAttr, ChargeAnim.BEAK_BLAST_CHARGING, 'started\nheating up its beak!', undefined, false, true, -3)
.ballBombMove()
.makesContact(false)
.partial(),
@ -7271,7 +7271,7 @@ export function initMoves() {
new AttackMove(Moves.LAST_RESPECTS, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9)
.attr(MovePowerMultiplierAttr, (user, target, move) => {
return user.scene.getParty().reduce((acc, pokemonInParty) => acc + (pokemonInParty.status?.effect == StatusEffect.FAINT ? 1 : 0),
1,)
1,);
})
.makesContact(false),
new AttackMove(Moves.LUMINA_CRASH, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9)
@ -7393,7 +7393,7 @@ export function initMoves() {
return userTypes.includes(Type.ELECTRIC);
})
.attr(RemoveTypeAttr, Type.ELECTRIC, (user) => {
user.scene.queueMessage(getPokemonMessage(user, ` used up all its electricity!`));
user.scene.queueMessage(getPokemonMessage(user, ' used up all its electricity!'));
}),
new AttackMove(Moves.GIGATON_HAMMER, Type.STEEL, MoveCategory.PHYSICAL, 160, 100, 5, -1, 0, 9)
.makesContact(false)

View File

@ -1,7 +1,7 @@
import { Stat, getStatName } from "./pokemon-stat";
import * as Utils from "../utils";
import { TextStyle, getBBCodeFrag } from "../ui/text";
import { UiTheme } from "#app/enums/ui-theme";
import { Stat, getStatName } from './pokemon-stat';
import * as Utils from '../utils';
import { TextStyle, getBBCodeFrag } from '../ui/text';
import { UiTheme } from '#app/enums/ui-theme';
import i18next from 'i18next';
export enum Nature {
@ -36,13 +36,13 @@ export function getNatureName(nature: Nature, includeStatEffects: boolean = fals
let ret = Utils.toReadableString(Nature[nature]);
//Translating nature
if(i18next.exists('nature:' + ret)){
ret = i18next.t('nature:' + ret as any)
ret = i18next.t('nature:' + ret as any);
}
if (includeStatEffects) {
const stats = Utils.getEnumValues(Stat).slice(1);
let increasedStat: Stat = null;
let decreasedStat: Stat = null;
for (let stat of stats) {
for (const stat of stats) {
const multiplier = getNatureStatMultiplier(nature, stat);
if (multiplier > 1)
increasedStat = stat;

View File

@ -1,4 +1,4 @@
import BattleScene from "../battle-scene";
import BattleScene from '../battle-scene';
import i18next from '../plugins/i18n';
export enum PokeballType {
@ -8,7 +8,7 @@ export enum PokeballType {
ROGUE_BALL,
MASTER_BALL,
LUXURY_BALL
};
}
export function getPokeballAtlasKey(type: PokeballType): string {
switch (type) {
@ -90,7 +90,7 @@ export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameOb
let bouncePower = 1;
let bounceYOffset = y1;
let bounceY = y2;
let yd = y2 - y1;
const yd = y2 - y1;
const doBounce = () => {
scene.tweens.add({

View File

@ -1,17 +1,17 @@
import { Gender } from "./gender";
import { AttackTypeBoosterModifier, FlinchChanceModifier } from "../modifier/modifier";
import { Moves } from "./enums/moves";
import { PokeballType } from "./pokeball";
import Pokemon from "../field/pokemon";
import { Stat } from "./pokemon-stat";
import { Species } from "./enums/species";
import { Type } from "./type";
import * as Utils from "../utils";
import { SpeciesFormKey } from "./pokemon-species";
import { WeatherType } from "./weather";
import { Biome } from "./enums/biome";
import { TimeOfDay } from "./enums/time-of-day";
import { Nature } from "./nature";
import { Gender } from './gender';
import { AttackTypeBoosterModifier, FlinchChanceModifier } from '../modifier/modifier';
import { Moves } from './enums/moves';
import { PokeballType } from './pokeball';
import Pokemon from '../field/pokemon';
import { Stat } from './pokemon-stat';
import { Species } from './enums/species';
import { Type } from './type';
import * as Utils from '../utils';
import { SpeciesFormKey } from './pokemon-species';
import { WeatherType } from './weather';
import { Biome } from './enums/biome';
import { TimeOfDay } from './enums/time-of-day';
import { Nature } from './nature';
export enum SpeciesWildEvolutionDelay {
NONE,
@ -1623,7 +1623,7 @@ export const pokemonPrevolutions: PokemonPrevolutions = {};
const prevolutionKeys = Object.keys(pokemonEvolutions);
prevolutionKeys.forEach(pk => {
const evolutions = pokemonEvolutions[pk];
for (let ev of evolutions) {
for (const ev of evolutions) {
if (ev.evoFormKey && megaFormKeys.indexOf(ev.evoFormKey) > -1)
continue;
pokemonPrevolutions[ev.speciesId] = parseInt(pk) as Species;

View File

@ -1,12 +1,12 @@
import { TimeOfDay } from "./enums/time-of-day";
import { PokemonFormChangeItemModifier } from "../modifier/modifier";
import Pokemon from "../field/pokemon";
import { Moves } from "./enums/moves";
import { SpeciesFormKey } from "./pokemon-species";
import { Species } from "./enums/species";
import { StatusEffect } from "./status-effect";
import { MoveCategory, allMoves } from "./move";
import { Abilities } from "./enums/abilities";
import { TimeOfDay } from './enums/time-of-day';
import { PokemonFormChangeItemModifier } from '../modifier/modifier';
import Pokemon from '../field/pokemon';
import { Moves } from './enums/moves';
import { SpeciesFormKey } from './pokemon-species';
import { Species } from './enums/species';
import { StatusEffect } from './status-effect';
import { MoveCategory, allMoves } from './move';
import { Abilities } from './enums/abilities';
export enum FormChangeItem {
NONE,
@ -123,7 +123,7 @@ export class SpeciesFormChange {
if (formKeys[pokemon.formIndex] === this.formKey)
return false;
for (let condition of this.conditions) {
for (const condition of this.conditions) {
if (!condition.predicate(pokemon))
return false;
}
@ -138,7 +138,7 @@ export class SpeciesFormChange {
if (!this.trigger.hasTriggerType(triggerType))
return null;
let trigger = this.trigger;
const trigger = this.trigger;
if (trigger instanceof SpeciesFormChangeCompoundTrigger)
return trigger.triggers.find(t => t.hasTriggerType(triggerType));
@ -181,7 +181,7 @@ export class SpeciesFormChangeCompoundTrigger {
}
canChange(pokemon: Pokemon): boolean {
for (let trigger of this.triggers) {
for (const trigger of this.triggers) {
if (!trigger.canChange(pokemon))
return false;
}
@ -719,8 +719,8 @@ export const pokemonFormChanges: PokemonFormChanges = {
const formChangeKeys = Object.keys(pokemonFormChanges);
formChangeKeys.forEach(pk => {
const formChanges = pokemonFormChanges[pk];
let newFormChanges: SpeciesFormChange[] = [];
for (let fc of formChanges) {
const newFormChanges: SpeciesFormChange[] = [];
for (const fc of formChanges) {
const itemTrigger = fc.findTrigger(SpeciesFormChangeItemTrigger) as SpeciesFormChangeItemTrigger;
if (itemTrigger && !formChanges.find(c => fc.formKey === c.preFormKey && fc.preFormKey === c.formKey))
newFormChanges.push(new SpeciesFormChange(fc.speciesId, fc.formKey, fc.preFormKey, new SpeciesFormChangeItemTrigger(itemTrigger.item, false)));

View File

@ -1,5 +1,5 @@
import { Moves } from "./enums/moves";
import { Species } from "./enums/species";
import { Moves } from './enums/moves';
import { Species } from './enums/species';
export type LevelMoves = ([integer, Moves])[];

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ export enum Stat {
SPATK,
SPDEF,
SPD
};
}
export function getStatName(stat: Stat, shorten: boolean = false) {
let ret: string;

View File

@ -1,4 +1,4 @@
import i18next from "../plugins/i18n";
import i18next from '../plugins/i18n';
export function getBattleCountSplashMessage(): string {
return `{COUNT} ${i18next.t('splashMessages:battlesWon')}`;
@ -41,5 +41,5 @@ export function getSplashMessages(): string[] {
i18next.t('splashMessages:ynoproject'),
]);
return splashMessages
return splashMessages;
}

View File

@ -1,4 +1,4 @@
import * as Utils from "../utils";
import * as Utils from '../utils';
export enum StatusEffect {
NONE,

View File

@ -1,4 +1,4 @@
import { BattleStat, getBattleStatName } from "./battle-stat";
import { BattleStat, getBattleStatName } from './battle-stat';
export enum TempBattleStat {
ATK,

View File

@ -1,10 +1,10 @@
import Pokemon from "../field/pokemon";
import Move from "./move";
import { Type } from "./type";
import * as Utils from "../utils";
import { IncrementMovePriorityAbAttr, applyAbAttrs } from "./ability";
import { ProtectAttr } from "./move";
import { BattlerIndex } from "#app/battle.js";
import Pokemon from '../field/pokemon';
import Move from './move';
import { Type } from './type';
import * as Utils from '../utils';
import { IncrementMovePriorityAbAttr, applyAbAttrs } from './ability';
import { ProtectAttr } from './move';
import { BattlerIndex } from '#app/battle.js';
export enum TerrainType {
NONE,

View File

@ -1,6 +1,6 @@
import { ModifierTier } from "../modifier/modifier-tier";
import { Moves } from "./enums/moves";
import { Species } from "./enums/species";
import { ModifierTier } from '../modifier/modifier-tier';
import { Moves } from './enums/moves';
import { Species } from './enums/species';
interface TmSpecies {
[key: integer]: Array<Species | Array<Species | string>>

View File

@ -1,21 +1,21 @@
import BattleScene, {startingWave} from "../battle-scene";
import {ModifierTypeFunc, modifierTypes} from "../modifier/modifier-type";
import {EnemyPokemon} from "../field/pokemon";
import * as Utils from "../utils";
import {TrainerType} from "./enums/trainer-type";
import {Moves} from "./enums/moves";
import {PokeballType} from "./pokeball";
import {pokemonEvolutions, pokemonPrevolutions} from "./pokemon-evolutions";
import PokemonSpecies, {PokemonSpeciesFilter, getPokemonSpecies} from "./pokemon-species";
import {Species} from "./enums/species";
import {tmSpecies} from "./tms";
import {Type} from "./type";
import {initTrainerTypeDialogue} from "./dialogue";
import {PersistentModifier} from "../modifier/modifier";
import {TrainerVariant} from "../field/trainer";
import {PartyMemberStrength} from "./enums/party-member-strength";
import i18next from "i18next";
import {getIsInitialized, initI18n} from "#app/plugins/i18n";
import BattleScene, {startingWave} from '../battle-scene';
import {ModifierTypeFunc, modifierTypes} from '../modifier/modifier-type';
import {EnemyPokemon} from '../field/pokemon';
import * as Utils from '../utils';
import {TrainerType} from './enums/trainer-type';
import {Moves} from './enums/moves';
import {PokeballType} from './pokeball';
import {pokemonEvolutions, pokemonPrevolutions} from './pokemon-evolutions';
import PokemonSpecies, {PokemonSpeciesFilter, getPokemonSpecies} from './pokemon-species';
import {Species} from './enums/species';
import {tmSpecies} from './tms';
import {Type} from './type';
import {initTrainerTypeDialogue} from './dialogue';
import {PersistentModifier} from '../modifier/modifier';
import {TrainerVariant} from '../field/trainer';
import {PartyMemberStrength} from './enums/party-member-strength';
import i18next from 'i18next';
import {getIsInitialized, initI18n} from '#app/plugins/i18n';
export enum TrainerPoolTier {
COMMON,
@ -74,7 +74,7 @@ export class TrainerPartyCompoundTemplate extends TrainerPartyTemplate {
getStrength(index: integer): PartyMemberStrength {
let t = 0;
for (let template of this.templates) {
for (const template of this.templates) {
if (t + template.size > index)
return template.getStrength(index - t);
t += template.size;
@ -85,7 +85,7 @@ export class TrainerPartyCompoundTemplate extends TrainerPartyTemplate {
isSameSpecies(index: integer): boolean {
let t = 0;
for (let template of this.templates) {
for (const template of this.templates) {
if (t + template.size > index)
return template.isSameSpecies(index - t);
t += template.size;
@ -96,7 +96,7 @@ export class TrainerPartyCompoundTemplate extends TrainerPartyTemplate {
isBalanced(index: integer): boolean {
let t = 0;
for (let template of this.templates) {
for (const template of this.templates) {
if (t + template.size > index)
return template.isBalanced(index - t);
t += template.size;
@ -569,7 +569,7 @@ export class TrainerConfig {
* @returns {string} - The title of the trainer.
**/
getTitle(trainerSlot: TrainerSlot = TrainerSlot.NONE, variant: TrainerVariant): string {
let ret = this.name;
const ret = this.name;
// Check if the variant is double and the name for double exists
if (!trainerSlot && variant === TrainerVariant.DOUBLE && this.nameDouble)
@ -591,7 +591,7 @@ export class TrainerConfig {
// Check if the female version exists in the i18n file
if (i18next.exists(`trainerClasses:${this.name.toLowerCase().replace()}`)) {
// If it does, return
return ret + "_female";
return ret + '_female';
} else {
// If it doesn't, we do not do anything and go to the normal return
// This is to prevent the game from displaying an error if a female version of the trainer does not exist in the localization
@ -615,9 +615,9 @@ export class TrainerConfig {
// Ignore warnings for missing frames, because there will be a lot
console.warn = () => {
};
const frameNames = scene.anims.generateFrameNames(trainerKey, {zeroPad: 4,suffix: ".png",start: 1,end: 128});
const frameNames = scene.anims.generateFrameNames(trainerKey, {zeroPad: 4,suffix: '.png',start: 1,end: 128});
const partnerFrameNames = isDouble
? scene.anims.generateFrameNames(partnerTrainerKey, {zeroPad: 4,suffix: ".png",start: 1,end: 128})
? scene.anims.generateFrameNames(partnerTrainerKey, {zeroPad: 4,suffix: '.png',start: 1,end: 128})
: null;
console.warn = originalWarn;
scene.anims.create({
@ -691,8 +691,8 @@ export const trainerConfigs: TrainerConfigs = {
.setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.THREE_WEAK_BALANCED, trainerPartyTemplates.FOUR_WEAK_BALANCED, trainerPartyTemplates.FIVE_WEAK_BALANCED, trainerPartyTemplates.SIX_WEAK_BALANCED)),
[TrainerType.ARTIST]: new TrainerConfig(++t).setEncounterBgm(TrainerType.RICH).setPartyTemplates(trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.THREE_AVG)
.setSpeciesPools([ Species.SMEARGLE ]),
[TrainerType.BACKERS]: new TrainerConfig(++t).setHasGenders("Backers").setDoubleOnly().setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.BACKPACKER]: new TrainerConfig(++t).setHasGenders("Backpacker Female").setHasDouble('Backpackers').setSpeciesFilter(s => s.isOfType(Type.FLYING) || s.isOfType(Type.ROCK)).setEncounterBgm(TrainerType.BACKPACKER)
[TrainerType.BACKERS]: new TrainerConfig(++t).setHasGenders('Backers').setDoubleOnly().setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.BACKPACKER]: new TrainerConfig(++t).setHasGenders('Backpacker Female').setHasDouble('Backpackers').setSpeciesFilter(s => s.isOfType(Type.FLYING) || s.isOfType(Type.ROCK)).setEncounterBgm(TrainerType.BACKPACKER)
.setPartyTemplates(trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.ONE_WEAK_ONE_STRONG, trainerPartyTemplates.ONE_AVG_ONE_STRONG)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.RHYHORN, Species.AIPOM, Species.MAKUHITA, Species.MAWILE, Species.NUMEL, Species.LILLIPUP, Species.SANDILE, Species.WOOLOO ],
@ -712,17 +712,17 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.SUPER_RARE]: [ Species.HITMONTOP, Species.INFERNAPE, Species.GALLADE, Species.HAWLUCHA, Species.HAKAMO_O ],
[TrainerPoolTier.ULTRA_RARE]: [ Species.KUBFU ]
}),
[TrainerType.BREEDER]: new TrainerConfig(++t).setMoneyMultiplier(1.325).setEncounterBgm(TrainerType.POKEFAN).setHasGenders("Breeder Female").setHasDouble('Breeders')
[TrainerType.BREEDER]: new TrainerConfig(++t).setMoneyMultiplier(1.325).setEncounterBgm(TrainerType.POKEFAN).setHasGenders('Breeder Female').setHasDouble('Breeders')
.setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.FOUR_WEAKER, trainerPartyTemplates.FIVE_WEAKER, trainerPartyTemplates.SIX_WEAKER))
.setSpeciesFilter(s => s.baseTotal < 450),
[TrainerType.CLERK]: new TrainerConfig(++t).setHasGenders("Clerk Female").setHasDouble('Colleagues').setEncounterBgm(TrainerType.CLERK)
[TrainerType.CLERK]: new TrainerConfig(++t).setHasGenders('Clerk Female').setHasDouble('Colleagues').setEncounterBgm(TrainerType.CLERK)
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_ONE_AVG)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.MEOWTH, Species.PSYDUCK, Species.BUDEW, Species.PIDOVE, Species.CINCCINO, Species.LITLEO ],
[TrainerPoolTier.UNCOMMON]: [ Species.JIGGLYPUFF, Species.MAGNEMITE, Species.MARILL, Species.COTTONEE, Species.SKIDDO ],
[TrainerPoolTier.RARE]: [ Species.BUIZEL, Species.SNEASEL, Species.KLEFKI, Species.INDEEDEE ]
}),
[TrainerType.CYCLIST]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setHasGenders("Cyclist Female").setHasDouble('Cyclists').setEncounterBgm(TrainerType.CYCLIST)
[TrainerType.CYCLIST]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setHasGenders('Cyclist Female').setHasDouble('Cyclists').setEncounterBgm(TrainerType.CYCLIST)
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.ONE_AVG)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.PICHU, Species.STARLY, Species.TAILLOW, Species.BOLTUND ],
@ -781,9 +781,9 @@ export const trainerConfigs: TrainerConfigs = {
}),
[TrainerType.PARASOL_LADY]: new TrainerConfig(++t).setMoneyMultiplier(1.55).setEncounterBgm(TrainerType.PARASOL_LADY).setSpeciesFilter(s => s.isOfType(Type.WATER)),
[TrainerType.PILOT]: new TrainerConfig(++t).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => tmSpecies[Moves.FLY].indexOf(s.speciesId) > -1),
[TrainerType.POKEFAN]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setName('PokéFan').setHasGenders("PokéFan Female").setHasDouble('PokéFan Family').setEncounterBgm(TrainerType.POKEFAN)
[TrainerType.POKEFAN]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setName('PokéFan').setHasGenders('PokéFan Female').setHasDouble('PokéFan Family').setEncounterBgm(TrainerType.POKEFAN)
.setPartyTemplates(trainerPartyTemplates.SIX_WEAKER, trainerPartyTemplates.FOUR_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.FOUR_WEAK_SAME, trainerPartyTemplates.FIVE_WEAK, trainerPartyTemplates.SIX_WEAKER_SAME),
[TrainerType.PRESCHOOLER]: new TrainerConfig(++t).setMoneyMultiplier(0.2).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders("Preschooler Female", 'lass').setHasDouble('Preschoolers')
[TrainerType.PRESCHOOLER]: new TrainerConfig(++t).setMoneyMultiplier(0.2).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders('Preschooler Female', 'lass').setHasDouble('Preschoolers')
.setPartyTemplates(trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.FOUR_WEAKER, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.FIVE_WEAKER)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.CATERPIE, Species.PICHU, Species.SANDSHREW, Species.LEDYBA, Species.BUDEW, Species.BURMY, Species.WOOLOO, Species.PAWMI, Species.SMOLIV ],
@ -791,7 +791,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.RARE]: [ Species.RALTS, Species.RIOLU, Species.JOLTIK, Species.TANDEMAUS ],
[TrainerPoolTier.SUPER_RARE]: [ Species.DARUMAKA, Species.TINKATINK ],
}),
[TrainerType.PSYCHIC]: new TrainerConfig(++t).setHasGenders("Psychic Female").setHasDouble('Psychics').setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.PSYCHIC)
[TrainerType.PSYCHIC]: new TrainerConfig(++t).setHasGenders('Psychic Female').setHasDouble('Psychics').setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.PSYCHIC)
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.TWO_WEAK_SAME_TWO_WEAK_SAME, trainerPartyTemplates.ONE_STRONGER)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.ABRA, Species.DROWZEE, Species.RALTS, Species.SPOINK, Species.GOTHITA, Species.SOLOSIS, Species.BLIPBUG, Species.ESPURR, Species.HATENNA ],
@ -799,7 +799,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.RARE]: [ Species.ELGYEM, Species.SIGILYPH, Species.BALTOY, Species.GIRAFARIG, Species.MEOWSTIC ],
[TrainerPoolTier.SUPER_RARE]: [ Species.BELDUM, Species.ESPEON, Species.STANTLER ],
}),
[TrainerType.RANGER]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setName('Pokémon Ranger').setEncounterBgm(TrainerType.BACKPACKER).setHasGenders("Pokémon Ranger Female").setHasDouble('Pokémon Rangers')
[TrainerType.RANGER]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setName('Pokémon Ranger').setEncounterBgm(TrainerType.BACKPACKER).setHasGenders('Pokémon Ranger Female').setHasDouble('Pokémon Rangers')
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.PICHU, Species.GROWLITHE, Species.PONYTA, Species.ZIGZAGOON, Species.SEEDOT, Species.BIDOOF, Species.RIOLU, Species.SEWADDLE, Species.SKIDDO, Species.SALANDIT, Species.YAMPER ],
[TrainerPoolTier.UNCOMMON]: [ Species.AZURILL, Species.TAUROS, Species.MAREEP, Species.FARFETCHD, Species.TEDDIURSA, Species.SHROOMISH, Species.ELECTRIKE, Species.BUDEW, Species.BUIZEL, Species.MUDBRAY, Species.STUFFUL ],
@ -809,7 +809,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.RICH]: new TrainerConfig(++t).setMoneyMultiplier(5).setName('Gentleman').setHasGenders('Madame').setHasDouble('Rich Couple'),
[TrainerType.RICH_KID]: new TrainerConfig(++t).setMoneyMultiplier(3.75).setName('Rich Boy').setHasGenders('Lady').setHasDouble('Rich Kids').setEncounterBgm(TrainerType.RICH),
[TrainerType.ROUGHNECK]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(Type.DARK)),
[TrainerType.SCIENTIST]: new TrainerConfig(++t).setHasGenders("Scientist Female").setHasDouble('Scientists').setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.SCIENTIST)
[TrainerType.SCIENTIST]: new TrainerConfig(++t).setHasGenders('Scientist Female').setHasDouble('Scientists').setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.SCIENTIST)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.MAGNEMITE, Species.GRIMER, Species.DROWZEE, Species.VOLTORB, Species.KOFFING ],
[TrainerPoolTier.UNCOMMON]: [ Species.BALTOY, Species.BRONZOR, Species.FERROSEED, Species.KLINK, Species.CHARJABUG, Species.BLIPBUG, Species.HELIOPTILE ],
@ -818,29 +818,29 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.ULTRA_RARE]: [ Species.ROTOM, Species.MELTAN ]
}),
[TrainerType.SMASHER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.SNOW_WORKER]: new TrainerConfig(++t).setName('Worker').setHasGenders("Worker Female").setHasDouble('Workers').setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => s.isOfType(Type.ICE) || s.isOfType(Type.STEEL)),
[TrainerType.SNOW_WORKER]: new TrainerConfig(++t).setName('Worker').setHasGenders('Worker Female').setHasDouble('Workers').setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => s.isOfType(Type.ICE) || s.isOfType(Type.STEEL)),
[TrainerType.STRIKER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.SCHOOL_KID]: new TrainerConfig(++t).setMoneyMultiplier(0.75).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders("School Kid Female", 'lass').setHasDouble('School Kids')
[TrainerType.SCHOOL_KID]: new TrainerConfig(++t).setMoneyMultiplier(0.75).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders('School Kid Female', 'lass').setHasDouble('School Kids')
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.ODDISH, Species.EXEGGCUTE, Species.TEDDIURSA, Species.WURMPLE, Species.RALTS, Species.SHROOMISH, Species.FLETCHLING ],
[TrainerPoolTier.UNCOMMON]: [ Species.VOLTORB, Species.WHISMUR, Species.MEDITITE, Species.MIME_JR, Species.NYMBLE ],
[TrainerPoolTier.RARE]: [ Species.TANGELA, Species.EEVEE, Species.YANMA ],
[TrainerPoolTier.SUPER_RARE]: [ Species.TADBULB ]
}),
[TrainerType.SWIMMER]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setEncounterBgm(TrainerType.PARASOL_LADY).setHasGenders("Swimmer Female").setHasDouble('Swimmers').setSpecialtyTypes(Type.WATER).setSpeciesFilter(s => s.isOfType(Type.WATER)),
[TrainerType.SWIMMER]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setEncounterBgm(TrainerType.PARASOL_LADY).setHasGenders('Swimmer Female').setHasDouble('Swimmers').setSpecialtyTypes(Type.WATER).setSpeciesFilter(s => s.isOfType(Type.WATER)),
[TrainerType.TWINS]: new TrainerConfig(++t).setDoubleOnly().setMoneyMultiplier(0.65).setUseSameSeedForAllMembers()
.setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_STRONG))
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.PLUSLE, Species.VOLBEAT, Species.PACHIRISU, Species.SILCOON, Species.METAPOD, Species.IGGLYBUFF, Species.PETILIL, Species.EEVEE ]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.MINUN, Species.ILLUMISE, Species.EMOLGA, Species.CASCOON, Species.KAKUNA, Species.CLEFFA, Species.COTTONEE, Species.EEVEE ], TrainerSlot.TRAINER_PARTNER))
.setEncounterBgm(TrainerType.TWINS),
[TrainerType.VETERAN]: new TrainerConfig(++t).setHasGenders("Veteran Female").setHasDouble('Veteran Duo').setMoneyMultiplier(2.5).setEncounterBgm(TrainerType.ACE_TRAINER).setSpeciesFilter(s => s.isOfType(Type.DRAGON)),
[TrainerType.VETERAN]: new TrainerConfig(++t).setHasGenders('Veteran Female').setHasDouble('Veteran Duo').setMoneyMultiplier(2.5).setEncounterBgm(TrainerType.ACE_TRAINER).setSpeciesFilter(s => s.isOfType(Type.DRAGON)),
[TrainerType.WAITER]: new TrainerConfig(++t).setHasGenders('Waitress').setHasDouble('Restaurant Staff').setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.CLERK)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.CLEFFA, Species.CHATOT, Species.PANSAGE, Species.PANSEAR, Species.PANPOUR, Species.MINCCINO ],
[TrainerPoolTier.UNCOMMON]: [ Species.TROPIUS, Species.PETILIL, Species.BOUNSWEET, Species.INDEEDEE ],
[TrainerPoolTier.RARE]: [ Species.APPLIN, Species.SINISTEA, Species.POLTCHAGEIST ]
}),
[TrainerType.WORKER]: new TrainerConfig(++t).setHasGenders("Worker Female").setHasDouble('Workers').setEncounterBgm(TrainerType.CLERK).setMoneyMultiplier(1.7).setSpeciesFilter(s => s.isOfType(Type.ROCK) || s.isOfType(Type.STEEL)),
[TrainerType.WORKER]: new TrainerConfig(++t).setHasGenders('Worker Female').setHasDouble('Workers').setEncounterBgm(TrainerType.CLERK).setMoneyMultiplier(1.7).setSpeciesFilter(s => s.isOfType(Type.ROCK) || s.isOfType(Type.STEEL)),
[TrainerType.YOUNGSTER]: new TrainerConfig(++t).setMoneyMultiplier(0.5).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders('Lass', 'lass').setHasDouble('Beginners').setPartyTemplates(trainerPartyTemplates.TWO_WEAKER)
.setSpeciesPools(
[ Species.CATERPIE, Species.WEEDLE, Species.RATTATA, Species.SENTRET, Species.POOCHYENA, Species.ZIGZAGOON, Species.WURMPLE, Species.BIDOOF, Species.PATRAT, Species.LILLIPUP ]
@ -915,7 +915,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader([ Species.SMOLIV, Species.SHROOMISH, Species.ODDISH ], Type.GRASS),
[TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader([ Species.TADBULB, Species.WATTREL, Species.VOLTORB ], Type.ELECTRIC),
[TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader([ Species.VELUZA, Species.WIGLETT, Species.WINGULL ], Type.WATER),
[TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader([ Species.STARLY, Species.DUNSPARCE, Species.KOMALA ], Type.NORMAL),
[TrainerType.LARRY]: new TrainerConfig(++t).setName('Larry').initForGymLeader([ Species.STARLY, Species.DUNSPARCE, Species.KOMALA ], Type.NORMAL),
[TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader([ Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU ], Type.GHOST),
[TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader([ Species.GIRAFARIG, Species.FLITTLE, Species.RALTS ], Type.PSYCHIC),
[TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader([ Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO ], Type.ICE),
@ -923,7 +923,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.LORELEI]: new TrainerConfig((t = TrainerType.LORELEI)).initForEliteFour([ Species.SLOWBRO, Species.LAPRAS, Species.DEWGONG, Species.ALOLA_SANDSLASH ], Type.ICE),
[TrainerType.BRUNO]: new TrainerConfig(++t).initForEliteFour([ Species.ONIX, Species.HITMONCHAN, Species.HITMONLEE, Species.ALOLA_GOLEM ], Type.FIGHTING),
[TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour([ Species.GENGAR, Species.ARBOK, Species.CROBAT, Species.ALOLA_MAROWAK ], Type.GHOST),
[TrainerType.LANCE]: new TrainerConfig(++t).setName("Lance").initForEliteFour([ Species.DRAGONITE, Species.GYARADOS, Species.AERODACTYL, Species.ALOLA_EXEGGUTOR ], Type.DRAGON),
[TrainerType.LANCE]: new TrainerConfig(++t).setName('Lance').initForEliteFour([ Species.DRAGONITE, Species.GYARADOS, Species.AERODACTYL, Species.ALOLA_EXEGGUTOR ], Type.DRAGON),
[TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour([ Species.XATU, Species.JYNX, Species.SLOWBRO, Species.EXEGGUTOR ], Type.PSYCHIC),
[TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour([ Species.WEEZING, Species.VENOMOTH, Species.CROBAT, Species.TENTACRUEL ], Type.POISON),
[TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour([ Species.UMBREON, Species.HONCHKROW, Species.HOUNDOOM, Species.WEAVILE ], Type.DARK),
@ -950,7 +950,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.KAHILI]: new TrainerConfig(++t).initForEliteFour([ Species.BRAVIARY, Species.HAWLUCHA, Species.ORICORIO, Species.TOUCANNON ], Type.FLYING),
[TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour([ Species. WHISCASH, Species.DONPHAN, Species.CAMERUPT, Species.CLODSIRE ], Type.GROUND),
[TrainerType.POPPY]: new TrainerConfig(++t).initForEliteFour([ Species.COPPERAJAH, Species.BRONZONG, Species.CORVIKNIGHT, Species.TINKATON ], Type.STEEL),
[TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName("Larry").initForEliteFour([ Species.STARAPTOR, Species.FLAMIGO, Species.ALTARIA, Species.TROPIUS ], Type.NORMAL, Type.FLYING),
[TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName('Larry').initForEliteFour([ Species.STARAPTOR, Species.FLAMIGO, Species.ALTARIA, Species.TROPIUS ], Type.NORMAL, Type.FLYING),
[TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour([ Species.NOIVERN, Species.HAXORUS, Species.DRAGALGE, Species.BAXCALIBUR ], Type.DRAGON),
[TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour([ Species.TALONFLAME, Species.CAMERUPT, Species.MAGMORTAR, Species.BLAZIKEN ], Type.FIRE),
[TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour([ Species.SKARMORY, Species.EMPOLEON, Species.SCIZOR, Species.METAGROSS ], Type.STEEL),
@ -959,7 +959,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion([ Species.GYARADOS, Species.MEWTWO, Species.ARCANINE, Species.ALAKAZAM, Species.PIDGEOT ]).setBattleBgm('battle_kanto_champion'),
[TrainerType.RED]: new TrainerConfig(++t).initForChampion([ Species.CHARIZARD, [ Species.LUGIA, Species.HO_OH ], Species.SNORLAX, Species.RAICHU, Species.ESPEON ]).setBattleBgm('battle_johto_champion'),
[TrainerType.LANCE_CHAMPION]: new TrainerConfig(++t).setName("Lance").initForChampion([ Species.DRAGONITE, Species.ZYGARDE, Species.AERODACTYL, Species.KINGDRA, Species.ALOLA_EXEGGUTOR ]).setBattleBgm('battle_johto_champion'),
[TrainerType.LANCE_CHAMPION]: new TrainerConfig(++t).setName('Lance').initForChampion([ Species.DRAGONITE, Species.ZYGARDE, Species.AERODACTYL, Species.KINGDRA, Species.ALOLA_EXEGGUTOR ]).setBattleBgm('battle_johto_champion'),
[TrainerType.STEVEN]: new TrainerConfig(++t).initForChampion([ Species.METAGROSS, [ Species.DIALGA, Species.PALKIA ], Species.SKARMORY, Species.AGGRON, Species.CARBINK ]).setBattleBgm('battle_hoenn_champion'),
[TrainerType.WALLACE]: new TrainerConfig(++t).initForChampion([ Species.MILOTIC, Species.KYOGRE, Species.WHISCASH, Species.WALREIN, Species.LUDICOLO ]).setBattleBgm('battle_hoenn_champion'),
[TrainerType.CYNTHIA]: new TrainerConfig(++t).initForChampion([ Species.SPIRITOMB, Species.GIRATINA, Species.GARCHOMP, Species.MILOTIC, Species.LUCARIO, Species.TOGEKISS ]).setBattleBgm('battle_sinnoh_champion'),

View File

@ -1,5 +1,5 @@
import { TrainerType } from "./enums/trainer-type";
import * as Utils from "../utils";
import { TrainerType } from './enums/trainer-type';
import * as Utils from '../utils';
class TrainerNameConfig {
public urls: string[];
@ -71,54 +71,54 @@ const trainerNameConfigs: TrainerNameConfigs = {
};
export const trainerNamePools = {
[TrainerType.ACE_TRAINER]: [["Aaron","Allen","Blake","Brian","Gaven","Jake","Kevin","Mike","Nick","Paul","Ryan","Sean","Darin","Albert","Berke","Clyde","Edgar","George","Leroy","Owen","Parker","Randall","Ruben","Samuel","Vincent","Warren","Wilton","Zane","Alfred","Braxton","Felix","Gerald","Jonathan","Leonel","Marcel","Mitchell","Quincy","Roderick","Colby","Rolando","Yuji","Abel","Anton","Arthur","Cesar","Dalton","Dennis","Ernest","Garrett","Graham","Henry","Isaiah","Jonah","Jose","Keenan","Micah","Omar","Quinn","Rodolfo","Saul","Sergio","Skylar","Stefan","Zachery","Alton","Arabella","Bonita","Cal","Cody","French","Kobe","Paulo","Shaye","Austin","Beckett","Charlie","Corky","David","Dwayne","Elmer","Jesse","Jared","Johan","Jordan","Kipp","Lou","Terry","Tom","Webster","Billy","Doyle","Enzio","Geoff","Grant","Kelsey","Miguel","Pierce","Ray","Santino","Shel","Adelbert","Bence","Emil","Evan","Mathis","Maxim","Neil","Rico","Robbie","Theo","Viktor","Benedict","Cornelius","Hisato","Leopold","Neville","Vito","Chase","Cole","Hiroshi","Jackson","Jim","Kekoa","Makana","Yuki","Elwood","Seth","Alvin","Arjun","Arnold","Cameron","Carl","Carlton","Christopher","Dave","Dax","Dominic","Edmund","Finn","Fred","Garret","Grayson","Jace","Jaxson","Jay","Jirard","Johnson","Kayden","Kite","Louis","Mac","Marty","Percy","Raymond","Ronnie","Satch","Tim","Zach","Conner","Vince","Bedro","Boda","Botan","Daras","Dury","Herton","Rewn","Stum","Tock","Trilo","Berki","Cruik","Dazon","Desid","Dillot","Farfin","Forgon","Hebel","Morfon","Moril","Shadd","Vanhub","Bardo","Carben","Degin","Gorps","Klept","Lask","Malex","Mopar","Niled","Noxon","Teslor","Tetil"],["Beth","Carol","Cybil","Emma","Fran","Gwen","Irene","Jenn","Joyce","Kate","Kelly","Lois","Lola","Megan","Quinn","Reena","Cara","Alexa","Brooke","Caroline","Elaine","Hope","Jennifer","Jody","Julie","Lori","Mary","Michelle","Shannon","Wendy","Alexia","Alicia","Athena","Carolina","Cristin","Darcy","Dianne","Halle","Jazmyn","Katelynn","Keira","Marley","Allyson","Kathleen","Naomi","Alyssa","Ariana","Brandi","Breanna","Brenda","Brenna","Catherine","Clarice","Dana","Deanna","Destiny","Jamie","Jasmin","Kassandra","Laura","Maria","Mariah","Maya","Meagan","Mikayla","Monique","Natasha","Olivia","Sandra","Savannah","Sydney","Moira","Piper","Salma","Allison","Beverly","Cathy","Cheyenne","Clara","Dara","Eileen","Glinda","Junko","Lena","Lucille","Mariana","Olwen","Shanta","Stella","Angi","Belle","Chandra","Cora","Eve","Jacqueline","Jeanne","Juliet","Kathrine","Layla","Lucca","Melina","Miki","Nina","Sable","Shelly","Summer","Trish","Vicki","Alanza","Cordelia","Hilde","Imelda","Michele","Mireille","Claudia","Constance","Harriet","Honor","Melba","Portia","Alexis","Angela","Karla","Lindsey","Tori","Sheri","Jada","Kailee","Amanda","Annie","Kindra","Kyla","Sofia","Yvette","Becky","Flora","Gloria","Buna","Ferda","Lehan","Liqui","Lomen","Neira","Atilo","Detta","Gilly","Gosney","Levens","Moden","Rask","Rateis","Rosno","Tynan","Veron","Zoel","Cida","Dibsin","Dodin","Ebson","Equin","Flostin","Gabsen","Halsion","Hileon","Quelor","Rapeel","Roze","Tensin"]],
[TrainerType.ARTIST]: [["Ismael","William","Horton","Pierre","Zach","Gough","Salvador","Vincent","Duncan"],["Georgia"]],
[TrainerType.BACKERS]: [["Alf & Fred","Hawk & Dar","Joe & Ross","Les & Web","Masa & Yas","Stu & Art"],["Ai & Ciel","Ami & Eira","Cam & Abby","Fey & Sue","Kat & Phae","Kay & Ali","Ava & Aya","Cleo & Rio","May & Mal"]],
[TrainerType.BACKPACKER]: [["Alexander","Carlos","Herman","Jerome","Keane","Kelsey","Kiyo","Michael","Nate","Peter","Sam","Stephen","Talon","Terrance","Toru","Waylon","Boone","Clifford","Ivan","Kendall","Lowell","Randall","Reece","Roland","Shane","Walt","Farid","Heike","Joren","Lane","Roderick","Darnell","Deon","Emory","Graeme","Grayson","Ashley","Mikiko","Kiana","Perdy","Maria","Yuho","Peren","Barbara","Diane","Ruth","Aitor","Alex","Arturo","Asier","Jaime","Jonathan","Julio","Kevin","Kosuke","Lander","Markel","Mateo","Nil","Pau","Samuel"],["Anna","Corin","Elaine","Emi","Jill","Kumiko","Liz","Lois","Lora","Molly","Patty","Ruth","Vicki","Annie","Blossom","Clara","Eileen","Mae","Myra","Rachel","Tami"]],
[TrainerType.BAKER]: ["Chris","Jenn","Lilly"],
[TrainerType.BEAUTY]: ["Cassie","Julia","Olivia","Samantha","Valerie","Victoria","Bridget","Connie","Jessica","Johanna","Melissa","Sheila","Shirley","Tiffany","Namiko","Thalia","Grace","Lola","Lori","Maura","Tamia","Cyndy","Devon","Gabriella","Harley","Lindsay","Nicola","Callie","Charlotte","Kassandra","December","Fleming","Nikola","Aimee","Anais","Brigitte","Cassandra","Andrea","Brittney","Carolyn","Krystal","Alexis","Alice","Aina","Anya","Arianna","Aubrey","Beverly","Camille","Beauty","Evette","Hansol","Haruka","Jill","Jo","Lana","Lois","Lucy","Mai","Nickie","Nicole","Prita","Rose","Shelly","Suzy","Tessa","Anita","Alissa","Rita","Cudsy","Eloff","Miru","Minot","Nevah","Niven","Ogoin"],
[TrainerType.BIKER]: ["Charles","Dwayne","Glenn","Harris","Joel","Riley","Zeke","Alex","Billy","Ernest","Gerald","Hideo","Isaac","Jared","Jaren","Jaxon","Jordy","Lao","Lukas","Malik","Nikolas","Ricardo","Ruben","Virgil","William","Aiden","Dale","Dan","Jacob","Markey","Reese","Teddy","Theron","Jeremy","Morgann","Phillip","Philip","Stanley","Dillon"],
[TrainerType.BLACK_BELT]: [["Kenji","Lao","Lung","Nob","Wai","Yoshi","Atsushi","Daisuke","Hideki","Hitoshi","Kiyo","Koichi","Koji","Yuji","Cristian","Rhett","Takao","Theodore","Zander","Aaron","Hugh","Mike","Nicolas","Shea","Takashi","Adam","Carl","Colby","Darren","David","Davon","Derek","Eddie","Gregory","Griffin","Jarrett","Jeffery","Kendal","Kyle","Luke","Miles","Nathaniel","Philip","Rafael","Ray","Ricky","Sean","Willie","Ander","Manford","Benjamin","Corey","Edward","Grant","Jay","Kendrew","Kentaro","Ryder","Teppei","Thomas","Tyrone","Andrey","Donny","Drago","Gordon","Grigor","Jeriel","Kenneth","Martell","Mathis","Rich","Rocky","Rodrigo","Wesley","Zachery","Alonzo","Cadoc","Gunnar","Igor","Killian","Markus","Ricardo","Yanis","Banting","Clayton","Duane","Earl","Greg","Roy","Terry","Tracy","Walter","Alvaro","Curtis","Francis","Ross","Brice","Cheng","Dudley","Eric","Kano","Masahiro","Randy","Ryuji","Steve","Tadashi","Wong","Yuen","Brian","Carter","Reece","Nick","Yang"],["Cora","Cyndy","Jill","Laura","Sadie","Tessa","Vivian","Aisha","Callie","Danielle","Helene","Jocelyn","Lilith","Paula","Reyna","Helen","Kelsey","Tyler","Amy","Chandra","Hillary","Janie","Lee","Maggie","Mikiko","Miriam","Sharon","Susie","Xiao","Alize","Azra","Brenda","Chalina","Chan","Glinda","Maki","Tia","Tiffany","Wendy","Andrea","Gabrielle","Gerardine","Hailey","Hedvig","Justine","Kinsey","Sigrid","Veronique","Tess"]],
[TrainerType.BREEDER]: [["Isaac","Myles","Salvadore","Albert","Kahlil","Eustace","Galen","Owen","Addison","Marcus","Foster","Cory","Glenn","Jay","Wesley","William","Adrian","Bradley","Jaime"],["Allison","Alize","Bethany","Lily","Lydia","Gabrielle","Jayden","Pat","Veronica","Amber","Jennifer","Kaylee","Adelaide","Brooke","Ethel","April","Irene","Magnolia","Amala","Mercy","Amanda","Ikue","Savannah","Yuka","Chloe","Debra","Denise","Elena"]],
[TrainerType.CLERK]: [["Chaz","Clemens","Doug","Fredric","Ivan","Isaac","Nelson","Wade","Warren","Augustin","Gilligan","Cody","Jeremy","Shane","Dugal","Royce","Ronald"],["Alberta","Ingrid","Katie","Piper","Trisha","Wren","Britney","Lana","Jessica","Kristen","Michelle","Gabrielle"]],
[TrainerType.CYCLIST]: [["Axel","James","John","Ryan","Hector","Jeremiah"],["Kayla","Megan","Nicole","Rachel","Krissa","Adelaide"]],
[TrainerType.DANCER]: ["Brian","Davey","Dirk","Edmond","Mickey","Raymond","Cara","Julia","Maika","Mireille","Ronda","Zoe"],
[TrainerType.DEPOT_AGENT]: ["Josh","Hank","Vincent"],
[TrainerType.DOCTOR]: [["Hank","Jerry","Jules","Logan","Wayne","Braid","Derek","Heath","Julius","Kit","Graham"],["Kirsten","Sachiko","Shery","Carol","Dixie","Mariah"]],
[TrainerType.FISHERMAN]: ["Andre","Arnold","Barney","Chris","Edgar","Henry","Jonah","Justin","Kyle","Martin","Marvin","Ralph","Raymond","Scott","Stephen","Wilton","Tully","Andrew","Barny","Carter","Claude","Dale","Elliot","Eugene","Ivan","Ned","Nolan","Roger","Ronald","Wade","Wayne","Darian","Kai","Chip","Hank","Kaden","Tommy","Tylor","Alec","Brett","Cameron","Cody","Cole","Cory","Erick","George","Joseph","Juan","Kenneth","Luc","Miguel","Travis","Walter","Zachary","Josh","Gideon","Kyler","Liam","Murphy","Bruce","Damon","Devon","Hubert","Jones","Lydon","Mick","Pete","Sean","Sid","Vince","Bucky","Dean","Eustace","Kenzo","Leroy","Mack","Ryder","Ewan","Finn","Murray","Seward","Shad","Wharton","Finley","Fisher","Fisk","River","Sheaffer","Timin","Carl","Ernest","Hal","Herbert","Hisato","Mike","Vernon","Harriet","Marina","Chase"],
[TrainerType.GUITARIST]: ["Anna","Beverly","January","Tina","Alicia","Claudia","Julia","Lidia","Mireia","Noelia","Sara","Sheila","Tatiana"],
[TrainerType.HARLEQUIN]: ["Charley","Ian","Jack","Kerry","Louis","Pat","Paul","Rick","Anders","Clarence","Gary"],
[TrainerType.HIKER]: ["Anthony","Bailey","Benjamin","Daniel","Erik","Jim","Kenny","Leonard","Michael","Parry","Phillip","Russell","Sidney","Tim","Timothy","Alan","Brice","Clark","Eric","Lenny","Lucas","Mike","Trent","Devan","Eli","Marc","Sawyer","Allen","Daryl","Dudley","Earl","Franklin","Jeremy","Marcos","Nob","Oliver","Wayne","Alexander","Damon","Jonathan","Justin","Kevin","Lorenzo","Louis","Maurice","Nicholas","Reginald","Robert","Theodore","Bruce","Clarke","Devin","Dwight","Edwin","Eoin","Noland","Russel","Andy","Bret","Darrell","Gene","Hardy","Hugh","Jebediah","Jeremiah","Kit","Neil","Terrell","Don","Doug","Hunter","Jared","Jerome","Keith","Manuel","Markus","Otto","Shelby","Stephen","Teppei","Tobias","Wade","Zaiem","Aaron","Alain","Bergin","Bernard","Brent","Corwin","Craig","Delmon","Dunstan","Orestes","Ross","Davian","Calhoun","David","Gabriel","Ryan","Thomas","Travis","Zachary","Anuhea","Barnaby","Claus","Collin","Colson","Dexter","Dillan","Eugine","Farkas","Hisato","Julius","Kenji","Irwin","Lionel","Paul","Richter","Valentino","Donald","Douglas","Kevyn","Angela","Carla","Celia","Daniela","Estela","Fatima","Helena","Leire","Lucia","Luna","Manuela","Mar","Marina","Miyu","Nancy","Nerea","Paula","Rocio","Yanira","Chester"],
[TrainerType.HOOLIGANS]: ["Jim & Cas","Rob & Sal"],
[TrainerType.HOOPSTER]: ["Bobby","John","Lamarcus","Derrick","Nicolas"],
[TrainerType.INFIELDER]: ["Alex","Connor","Todd"],
[TrainerType.JANITOR]: ["Caleb","Geoff","Brady","Felix","Orville","Melvin","Shawn"],
[TrainerType.LINEBACKER]: ["Bob","Dan","Jonah"],
[TrainerType.MAID]: ["Belinda","Sophie","Emily","Elena","Clare","Alica","Tanya","Tammy"],
[TrainerType.MUSICIAN]: ["Boris","Preston","Charles","Clyde","Vincent","Dalton","Kirk","Shawn","Fabian","Fernando","Joseph","Marcos","Arturo","Jerry","Lonnie","Tony"],
[TrainerType.NURSERY_AIDE]: ["Autumn","Briana","Leah","Miho","Ethel","Hollie","Ilse","June","Kimya","Rosalyn"],
[TrainerType.OFFICER]: ["Dirk","Keith","Alex","Bobby","Caleb","Danny","Dylan","Thomas","Daniel","Jeff","Braven","Dell","Neagle","Haruki","Mitchell","Raymond"],
[TrainerType.PARASOL_LADY]: ["Angelica","Clarissa","Madeline","Akari","Annabell","Kayley","Rachel","Alexa","Sabrina","April","Gwyneth","Laura","Lumi","Mariah","Melita","Nicole","Tihana","Ingrid","Tyra"],
[TrainerType.PILOT]: ["Chase","Leonard","Ted","Elron","Ewing","Flynn","Winslow"],
[TrainerType.POKEFAN]: [["Alex","Allan","Brandon","Carter","Colin","Derek","Jeremy","Joshua","Rex","Robert","Trevor","William","Colton","Miguel","Francisco","Kaleb","Leonard","Boone","Elliot","Jude","Norbert","Corey","Gabe","Baxter"],["Beverly","Georgia","Jaime","Ruth","Isabel","Marissa","Vanessa","Annika","Bethany","Kimberly","Meredith","Rebekah","Eleanor","Darcy","Lydia","Sachiko","Abigail","Agnes","Lydie","Roisin","Tara","Carmen","Janet"]],
[TrainerType.PRESCHOOLER]: [["Billy","Doyle","Evan","Homer","Tully","Albert","Buster","Greg","Ike","Jojo","Tyrone","Adrian","Oliver","Hayden","Hunter","Kaleb","Liam","Dylan"],["Juliet","Mia","Sarah","Wendy","Winter","Chrissy","Eva","Lin","Samantha","Ella","Lily","Natalie","Ailey","Hannah","Malia","Kindra","Nancy"]],
[TrainerType.PSYCHIC]: [["Fidel","Franklin","Gilbert","Greg","Herman","Jared","Mark","Nathan","Norman","Phil","Richard","Rodney","Cameron","Edward","Fritz","Joshua","Preston","Virgil","William","Alvaro","Blake","Cedric","Keenan","Nicholas","Dario","Johan","Lorenzo","Tyron","Bryce","Corbin","Deandre","Elijah","Kody","Landon","Maxwell","Mitchell","Sterling","Eli","Nelson","Vernon","Gaven","Gerard","Low","Micki","Perry","Rudolf","Tommy","Al","Nandor","Tully","Arthur","Emanuel","Franz","Harry","Paschal","Robert","Sayid","Angelo","Anton","Arin","Avery","Danny","Frasier","Harrison","Jaime","Ross","Rui","Vlad","Mason"],["Alexis","Hannah","Jacki","Jaclyn","Kayla","Maura","Samantha","Alix","Brandi","Edie","Macey","Mariella","Marlene","Laura","Rodette","Abigail","Brittney","Chelsey","Daisy","Desiree","Kendra","Lindsey","Rachael","Valencia","Belle","Cybil","Doreen","Dua","Future","Lin","Madhu","Alia","Ena","Joyce","Lynette","Olesia","Sarah"]],
[TrainerType.RANGER]: [["Carlos","Jackson","Sebastian","Gav","Lorenzo","Logan","Nicolas","Trenton","Deshawn","Dwayne","Jeffery","Kyler","Taylor","Alain","Claude","Crofton","Forrest","Harry","Jaden","Keith","Lewis","Miguel","Pedro","Ralph","Richard","Bret","Daryl","Eddie","Johan","Leaf","Louis","Maxwell","Parker","Rick","Steve","Bjorn","Chaise","Dean","Lee","Maurice","Nash","Ralf","Reed","Shinobu","Silas"],["Catherine","Jenna","Sophia","Merdith","Nora","Beth","Chelsea","Katelyn","Madeline","Allison","Ashlee","Felicia","Krista","Annie","Audra","Brenda","Chloris","Eliza","Heidi","Irene","Mary","Mylene","Shanti","Shelly","Thalia","Anja","Briana","Dianna","Elaine","Elle","Hillary","Katie","Lena","Lois","Malory","Melita","Mikiko","Naoko","Serenity","Ambre","Brooke","Clementine","Melina","Petra","Twiggy"]],
[TrainerType.RICH]: [["Alfred","Edward","Gregory","Preston","Thomas","Tucker","Walter","Clifford","Everett","Micah","Nate","Pierre","Terrance","Arthur","Brooks","Emanuel","Lamar","Jeremy","Leonardo","Milton","Frederic","Renaud","Robert","Yan","Daniel","Sheldon","Stonewall","Gerald","Ronald","Smith","Stanley","Reginald","Orson","Wilco","Caden","Glenn"],["Rebecca","Reina","Cassandra","Emilia","Grace","Marian","Elizabeth","Kathleen","Sayuri","Caroline","Judy"]],
[TrainerType.RICH_KID]: [["Garret","Winston","Dawson","Enrique","Jason","Roman","Trey","Liam","Anthony","Brad","Cody","Manuel","Martin","Pierce","Rolan","Keenan","Filbert","Antoin","Cyus","Diek","Dugo","Flitz","Jurek","Lond","Perd","Quint","Basto","Benit","Brot","Denc","Guyit","Marcon","Perc","Puros","Roex","Sainz","Symin","Tark","Venak"],["Anette","Brianna","Cindy","Colleen","Daphne","Elizabeth","Naomi","Sarah","Charlotte","Gillian","Jacki","Lady","Melissa","Celeste","Colette","Elizandra","Isabel","Lynette","Magnolia","Sophie","Lina","Dulcie","Auro","Brin","Caril","Eloos","Gwin","Illa","Kowly","Rima","Ristin","Vesey","Brena","Deasy","Denslon","Kylet","Nemi","Rene","Sanol","Stouner","Sturk","Talmen","Zoila"]],
[TrainerType.ROUGHNECK]: ["Camron","Corey","Gabriel","Isaiah","Jamal","Koji","Luke","Paxton","Raul","Zeek","Kirby","Chance","Dave","Fletcher","Johnny","Reese","Joey","Ricky","Silvester","Martin"],
[TrainerType.SCIENTIST]: [["Jed","Marc","Mitch","Rich","Ross","Beau","Braydon","Connor","Ed","Ivan","Jerry","Jose","Joshua","Parker","Rodney","Taylor","Ted","Travis","Zackery","Darrius","Emilio","Fredrick","Shaun","Stefano","Travon","Daniel","Garett","Gregg","Linden","Lowell","Trenton","Dudley","Luke","Markus","Nathan","Orville","Randall","Ron","Ronald","Simon","Steve","William","Franklin","Clarke","Jacques","Terrance","Ernst","Justus","Ikaika","Jayson","Kyle","Reid","Tyrone","Adam","Albert","Alphonse","Cory","Donnie","Elton","Francis","Gordon","Herbert","Humphrey","Jordan","Julian","Keaton","Levi","Melvin","Murray","West","Craig","Coren","Dubik","Kotan","Lethco","Mante","Mort","Myron","Odlow","Ribek","Roeck","Vogi","Vonder","Zogo","Doimo","Doton","Durel","Hildon","Kukla","Messa","Nanot","Platen","Raburn","Reman","Acrod","Coffy","Elrok","Foss","Hardig","Hombol","Hospel","Kaller","Klots","Krilok","Limar","Loket","Mesak","Morbit","Newin","Orill","Tabor","Tekot"],["Blythe","Chan","Kathrine","Marie","Maria","Naoko","Samantha","Satomi","Shannon","Athena","Caroline","Lumi","Lumina","Marissa","Sonia"]],
[TrainerType.SMASHER]: ["Aspen","Elena","Mari","Amy","Lizzy"],
[TrainerType.SNOW_WORKER]: [["Braden","Brendon","Colin","Conrad","Dillan","Gary","Gerardo","Holden","Jackson","Mason","Quentin","Willy","Noel","Arnold","Brady","Brand","Cairn","Cliff","Don","Eddie","Felix","Filipe","Glenn","Gus","Heath","Matthew","Patton","Rich","Rob","Ryan","Scott","Shelby","Sterling","Tyler","Victor","Zack","Friedrich","Herman","Isaac","Leo","Maynard","Mitchell","Morgann","Nathan","Niel","Pasqual","Paul","Tavarius","Tibor","Dimitri","Narek","Yusif","Frank","Jeff","Vaclav","Ovid","Francis","Keith","Russel","Sangon","Toway","Bomber","Chean","Demit","Hubor","Kebile","Laber","Ordo","Retay","Ronix","Wagel","Dobit","Kaster","Lobel","Releo","Saken","Rustix"],["Georgia","Sandra","Yvonne"]],
[TrainerType.STRIKER]: ["Marco","Roberto","Tony"],
[TrainerType.SCHOOL_KID]: [["Alan","Billy","Chad","Danny","Dudley","Jack","Joe","Johnny","Kipp","Nate","Ricky","Tommy","Jerry","Paul","Ted","Chance","Esteban","Forrest","Harrison","Connor","Sherman","Torin","Travis","Al","Carter","Edgar","Jem","Sammy","Shane","Shayne","Alvin","Keston","Neil","Seymour","William","Carson","Clark","Nolan"],["Georgia","Karen","Meiko","Christine","Mackenzie","Tiera","Ann","Gina","Lydia","Marsha","Millie","Sally","Serena","Silvia","Alberta","Cassie","Mara","Rita","Georgie","Meena","Nitzel"]],
[TrainerType.SWIMMER]: [["Berke","Cameron","Charlie","George","Harold","Jerome","Kirk","Mathew","Parker","Randall","Seth","Simon","Tucker","Austin","Barry","Chad","Cody","Darrin","David","Dean","Douglas","Franklin","Gilbert","Herman","Jack","Luis","Matthew","Reed","Richard","Rodney","Roland","Spencer","Stan","Tony","Clarence","Declan","Dominik","Harrison","Kevin","Leonardo","Nolen","Pete","Santiago","Axle","Braden","Finn","Garrett","Mymo","Reece","Samir","Toby","Adrian","Colton","Dillon","Erik","Evan","Francisco","Glenn","Kurt","Oscar","Ricardo","Sam","Sheltin","Troy","Vincent","Wade","Wesley","Duane","Elmo","Esteban","Frankie","Ronald","Tyson","Bart","Matt","Tim","Wright","Jeffery","Kyle","Alessandro","Estaban","Kieran","Ramses","Casey","Dakota","Jared","Kalani","Keoni","Lawrence","Logan","Robert","Roddy","Yasu","Derek","Jacob","Bruce","Clayton"],["Briana","Dawn","Denise","Diana","Elaine","Kara","Kaylee","Lori","Nicole","Nikki","Paula","Susie","Wendy","Alice","Beth","Beverly","Brenda","Dana","Debra","Grace","Jenny","Katie","Laurel","Linda","Missy","Sharon","Tanya","Tara","Tisha","Carlee","Imani","Isabelle","Kyla","Sienna","Abigail","Amara","Anya","Connie","Maria","Melissa","Nora","Shirley","Shania","Tiffany","Aubree","Cassandra","Claire","Crystal","Erica","Gabrielle","Haley","Jessica","Joanna","Lydia","Mallory","Mary","Miranda","Paige","Sophia","Vanessa","Chelan","Debbie","Joy","Kendra","Leona","Mina","Caroline","Joyce","Larissa","Rebecca","Tyra","Dara","Desiree","Kaoru","Ruth","Coral","Genevieve","Isla","Marissa","Romy","Sheryl","Alexandria","Alicia","Chelsea","Jade","Kelsie","Laura","Portia","Shelby","Sara","Tiare","Kyra","Natasha","Layla","Scarlett","Cora"]],
[TrainerType.TWINS]: ["Amy & May","Jo & Zoe","Meg & Peg","Ann & Anne","Lea & Pia","Amy & Liv","Gina & Mia","Miu & Yuki","Tori & Tia","Eli & Anne","Jen & Kira","Joy & Meg","Kiri & Jan","Miu & Mia","Emma & Lil","Liv & Liz","Teri & Tia","Amy & Mimi","Clea & Gil","Day & Dani","Kay & Tia","Tori & Til","Saya & Aya","Emy & Lin","Kumi & Amy","Mayo & May","Ally & Amy","Lia & Lily","Rae & Ula","Sola & Ana","Tara & Val","Faith & Joy","Nana & Nina"],
[TrainerType.VETERAN]: [["Armando","Brenden","Brian","Clayton","Edgar","Emanuel","Grant","Harlan","Terrell","Arlen","Chester","Hugo","Martell","Ray","Shaun","Abraham","Carter","Claude","Jerry","Lucius","Murphy","Rayne","Ron","Sinan","Sterling","Vincent","Zach","Gerard","Gilles","Louis","Timeo","Akira","Don","Eric","Harry","Leon","Roger","Angus","Aristo","Brone","Johnny"],["Julia","Karla","Kim","Sayuri","Tiffany","Cathy","Cecile","Chloris","Denae","Gina","Maya","Oriana","Portia","Rhona","Rosaline","Catrina","Inga","Trisha","Heather","Lynn","Sheri","Alonsa","Ella","Leticia","Kiara"]],
[TrainerType.WAITER]: [["Bert","Clint","Maxwell","Lou"],["Kati","Aurora","Bonita","Flo","Tia","Jan","Olwen","Paget","Paula","Talia"]],
[TrainerType.WORKER]: [["Braden","Brendon","Colin","Conrad","Dillan","Gary","Gerardo","Holden","Jackson","Mason","Quentin","Willy","Noel","Arnold","Brady","Brand","Cairn","Cliff","Don","Eddie","Felix","Filipe","Glenn","Gus","Heath","Matthew","Patton","Rich","Rob","Ryan","Scott","Shelby","Sterling","Tyler","Victor","Zack","Friedrich","Herman","Isaac","Leo","Maynard","Mitchell","Morgann","Nathan","Niel","Pasqual","Paul","Tavarius","Tibor","Dimitri","Narek","Yusif","Frank","Jeff","Vaclav","Ovid","Francis","Keith","Russel","Sangon","Toway","Bomber","Chean","Demit","Hubor","Kebile","Laber","Ordo","Retay","Ronix","Wagel","Dobit","Kaster","Lobel","Releo","Saken","Rustix"],["Georgia","Sandra","Yvonne"]],
[TrainerType.YOUNGSTER]: [["Albert","Gordon","Ian","Jason","Jimmy","Mikey","Owen","Samuel","Warren","Allen","Ben","Billy","Calvin","Dillion","Eddie","Joey","Josh","Neal","Timmy","Tommy","Breyden","Deandre","Demetrius","Dillon","Jaylen","Johnson","Shigenobu","Chad","Cole","Cordell","Dan","Dave","Destin","Nash","Tyler","Yasu","Austin","Dallas","Darius","Donny","Jonathon","Logan","Michael","Oliver","Sebastian","Tristan","Wayne","Norman","Roland","Regis","Abe","Astor","Keita","Kenneth","Kevin","Kyle","Lester","Masao","Nicholas","Parker","Wes","Zachary","Cody","Henley","Jaye","Karl","Kenny","Masahiro","Pedro","Petey","Sinclair","Terrell","Waylon","Aidan","Anthony","David","Jacob","Jayden","Cutler","Ham","Caleb","Kai","Honus","Kenway","Bret","Chris","Cid","Dennis","Easton","Ken","Robby","Ronny","Shawn","Benjamin","Jake","Travis","Adan","Aday","Beltran","Elian","Hernan","Julen","Luka","Roi","Bernie","Dustin","Jonathan","Wyatt"],["Alice","Bridget","Carrie","Connie","Dana","Ellen","Krise","Laura","Linda","Michelle","Shannon","Andrea","Crissy","Janice","Robin","Sally","Tiana","Haley","Ali","Ann","Dalia","Dawn","Iris","Joana","Julia","Kay","Lisa","Megan","Mikaela","Miriam","Paige","Reli","Blythe","Briana","Caroline","Cassidy","Kaitlin","Madeline","Molly","Natalie","Samantha","Sarah","Cathy","Dye","Eri","Eva","Fey","Kara","Lurleen","Maki","Mali","Maya","Miki","Sibyl","Daya","Diana","Flo","Helia","Henrietta","Isabel","Mai","Persephone","Serena","Anna","Charlotte","Elin","Elsa","Lise","Sara","Suzette","Audrey","Emmy","Isabella","Madison","Rika","Rylee","Salla","Ellie","Alexandra","Amy","Lass","Brittany","Chel","Cindy","Dianne","Emily","Emma","Evelyn","Hana","Harleen","Hazel","Jocelyn","Katrina","Kimberly","Lina","Marge","Mila","Mizuki","Rena","Sal","Satoko","Summer","Tomoe","Vicky","Yue","Yumi","Lauren","Rei","Riley","Lois","Nancy","Tammy","Terry"]],
[TrainerType.HEX_MANIAC]: ["Kindra","Patricia","Tammy","Tasha","Valerie","Alaina","Kathleen","Leah","Makie","Sylvia","Anina","Arachna","Carrie","Desdemona","Josette","Luna","Melanie","Osanna","Raziah"],
[TrainerType.ACE_TRAINER]: [['Aaron','Allen','Blake','Brian','Gaven','Jake','Kevin','Mike','Nick','Paul','Ryan','Sean','Darin','Albert','Berke','Clyde','Edgar','George','Leroy','Owen','Parker','Randall','Ruben','Samuel','Vincent','Warren','Wilton','Zane','Alfred','Braxton','Felix','Gerald','Jonathan','Leonel','Marcel','Mitchell','Quincy','Roderick','Colby','Rolando','Yuji','Abel','Anton','Arthur','Cesar','Dalton','Dennis','Ernest','Garrett','Graham','Henry','Isaiah','Jonah','Jose','Keenan','Micah','Omar','Quinn','Rodolfo','Saul','Sergio','Skylar','Stefan','Zachery','Alton','Arabella','Bonita','Cal','Cody','French','Kobe','Paulo','Shaye','Austin','Beckett','Charlie','Corky','David','Dwayne','Elmer','Jesse','Jared','Johan','Jordan','Kipp','Lou','Terry','Tom','Webster','Billy','Doyle','Enzio','Geoff','Grant','Kelsey','Miguel','Pierce','Ray','Santino','Shel','Adelbert','Bence','Emil','Evan','Mathis','Maxim','Neil','Rico','Robbie','Theo','Viktor','Benedict','Cornelius','Hisato','Leopold','Neville','Vito','Chase','Cole','Hiroshi','Jackson','Jim','Kekoa','Makana','Yuki','Elwood','Seth','Alvin','Arjun','Arnold','Cameron','Carl','Carlton','Christopher','Dave','Dax','Dominic','Edmund','Finn','Fred','Garret','Grayson','Jace','Jaxson','Jay','Jirard','Johnson','Kayden','Kite','Louis','Mac','Marty','Percy','Raymond','Ronnie','Satch','Tim','Zach','Conner','Vince','Bedro','Boda','Botan','Daras','Dury','Herton','Rewn','Stum','Tock','Trilo','Berki','Cruik','Dazon','Desid','Dillot','Farfin','Forgon','Hebel','Morfon','Moril','Shadd','Vanhub','Bardo','Carben','Degin','Gorps','Klept','Lask','Malex','Mopar','Niled','Noxon','Teslor','Tetil'],['Beth','Carol','Cybil','Emma','Fran','Gwen','Irene','Jenn','Joyce','Kate','Kelly','Lois','Lola','Megan','Quinn','Reena','Cara','Alexa','Brooke','Caroline','Elaine','Hope','Jennifer','Jody','Julie','Lori','Mary','Michelle','Shannon','Wendy','Alexia','Alicia','Athena','Carolina','Cristin','Darcy','Dianne','Halle','Jazmyn','Katelynn','Keira','Marley','Allyson','Kathleen','Naomi','Alyssa','Ariana','Brandi','Breanna','Brenda','Brenna','Catherine','Clarice','Dana','Deanna','Destiny','Jamie','Jasmin','Kassandra','Laura','Maria','Mariah','Maya','Meagan','Mikayla','Monique','Natasha','Olivia','Sandra','Savannah','Sydney','Moira','Piper','Salma','Allison','Beverly','Cathy','Cheyenne','Clara','Dara','Eileen','Glinda','Junko','Lena','Lucille','Mariana','Olwen','Shanta','Stella','Angi','Belle','Chandra','Cora','Eve','Jacqueline','Jeanne','Juliet','Kathrine','Layla','Lucca','Melina','Miki','Nina','Sable','Shelly','Summer','Trish','Vicki','Alanza','Cordelia','Hilde','Imelda','Michele','Mireille','Claudia','Constance','Harriet','Honor','Melba','Portia','Alexis','Angela','Karla','Lindsey','Tori','Sheri','Jada','Kailee','Amanda','Annie','Kindra','Kyla','Sofia','Yvette','Becky','Flora','Gloria','Buna','Ferda','Lehan','Liqui','Lomen','Neira','Atilo','Detta','Gilly','Gosney','Levens','Moden','Rask','Rateis','Rosno','Tynan','Veron','Zoel','Cida','Dibsin','Dodin','Ebson','Equin','Flostin','Gabsen','Halsion','Hileon','Quelor','Rapeel','Roze','Tensin']],
[TrainerType.ARTIST]: [['Ismael','William','Horton','Pierre','Zach','Gough','Salvador','Vincent','Duncan'],['Georgia']],
[TrainerType.BACKERS]: [['Alf & Fred','Hawk & Dar','Joe & Ross','Les & Web','Masa & Yas','Stu & Art'],['Ai & Ciel','Ami & Eira','Cam & Abby','Fey & Sue','Kat & Phae','Kay & Ali','Ava & Aya','Cleo & Rio','May & Mal']],
[TrainerType.BACKPACKER]: [['Alexander','Carlos','Herman','Jerome','Keane','Kelsey','Kiyo','Michael','Nate','Peter','Sam','Stephen','Talon','Terrance','Toru','Waylon','Boone','Clifford','Ivan','Kendall','Lowell','Randall','Reece','Roland','Shane','Walt','Farid','Heike','Joren','Lane','Roderick','Darnell','Deon','Emory','Graeme','Grayson','Ashley','Mikiko','Kiana','Perdy','Maria','Yuho','Peren','Barbara','Diane','Ruth','Aitor','Alex','Arturo','Asier','Jaime','Jonathan','Julio','Kevin','Kosuke','Lander','Markel','Mateo','Nil','Pau','Samuel'],['Anna','Corin','Elaine','Emi','Jill','Kumiko','Liz','Lois','Lora','Molly','Patty','Ruth','Vicki','Annie','Blossom','Clara','Eileen','Mae','Myra','Rachel','Tami']],
[TrainerType.BAKER]: ['Chris','Jenn','Lilly'],
[TrainerType.BEAUTY]: ['Cassie','Julia','Olivia','Samantha','Valerie','Victoria','Bridget','Connie','Jessica','Johanna','Melissa','Sheila','Shirley','Tiffany','Namiko','Thalia','Grace','Lola','Lori','Maura','Tamia','Cyndy','Devon','Gabriella','Harley','Lindsay','Nicola','Callie','Charlotte','Kassandra','December','Fleming','Nikola','Aimee','Anais','Brigitte','Cassandra','Andrea','Brittney','Carolyn','Krystal','Alexis','Alice','Aina','Anya','Arianna','Aubrey','Beverly','Camille','Beauty','Evette','Hansol','Haruka','Jill','Jo','Lana','Lois','Lucy','Mai','Nickie','Nicole','Prita','Rose','Shelly','Suzy','Tessa','Anita','Alissa','Rita','Cudsy','Eloff','Miru','Minot','Nevah','Niven','Ogoin'],
[TrainerType.BIKER]: ['Charles','Dwayne','Glenn','Harris','Joel','Riley','Zeke','Alex','Billy','Ernest','Gerald','Hideo','Isaac','Jared','Jaren','Jaxon','Jordy','Lao','Lukas','Malik','Nikolas','Ricardo','Ruben','Virgil','William','Aiden','Dale','Dan','Jacob','Markey','Reese','Teddy','Theron','Jeremy','Morgann','Phillip','Philip','Stanley','Dillon'],
[TrainerType.BLACK_BELT]: [['Kenji','Lao','Lung','Nob','Wai','Yoshi','Atsushi','Daisuke','Hideki','Hitoshi','Kiyo','Koichi','Koji','Yuji','Cristian','Rhett','Takao','Theodore','Zander','Aaron','Hugh','Mike','Nicolas','Shea','Takashi','Adam','Carl','Colby','Darren','David','Davon','Derek','Eddie','Gregory','Griffin','Jarrett','Jeffery','Kendal','Kyle','Luke','Miles','Nathaniel','Philip','Rafael','Ray','Ricky','Sean','Willie','Ander','Manford','Benjamin','Corey','Edward','Grant','Jay','Kendrew','Kentaro','Ryder','Teppei','Thomas','Tyrone','Andrey','Donny','Drago','Gordon','Grigor','Jeriel','Kenneth','Martell','Mathis','Rich','Rocky','Rodrigo','Wesley','Zachery','Alonzo','Cadoc','Gunnar','Igor','Killian','Markus','Ricardo','Yanis','Banting','Clayton','Duane','Earl','Greg','Roy','Terry','Tracy','Walter','Alvaro','Curtis','Francis','Ross','Brice','Cheng','Dudley','Eric','Kano','Masahiro','Randy','Ryuji','Steve','Tadashi','Wong','Yuen','Brian','Carter','Reece','Nick','Yang'],['Cora','Cyndy','Jill','Laura','Sadie','Tessa','Vivian','Aisha','Callie','Danielle','Helene','Jocelyn','Lilith','Paula','Reyna','Helen','Kelsey','Tyler','Amy','Chandra','Hillary','Janie','Lee','Maggie','Mikiko','Miriam','Sharon','Susie','Xiao','Alize','Azra','Brenda','Chalina','Chan','Glinda','Maki','Tia','Tiffany','Wendy','Andrea','Gabrielle','Gerardine','Hailey','Hedvig','Justine','Kinsey','Sigrid','Veronique','Tess']],
[TrainerType.BREEDER]: [['Isaac','Myles','Salvadore','Albert','Kahlil','Eustace','Galen','Owen','Addison','Marcus','Foster','Cory','Glenn','Jay','Wesley','William','Adrian','Bradley','Jaime'],['Allison','Alize','Bethany','Lily','Lydia','Gabrielle','Jayden','Pat','Veronica','Amber','Jennifer','Kaylee','Adelaide','Brooke','Ethel','April','Irene','Magnolia','Amala','Mercy','Amanda','Ikue','Savannah','Yuka','Chloe','Debra','Denise','Elena']],
[TrainerType.CLERK]: [['Chaz','Clemens','Doug','Fredric','Ivan','Isaac','Nelson','Wade','Warren','Augustin','Gilligan','Cody','Jeremy','Shane','Dugal','Royce','Ronald'],['Alberta','Ingrid','Katie','Piper','Trisha','Wren','Britney','Lana','Jessica','Kristen','Michelle','Gabrielle']],
[TrainerType.CYCLIST]: [['Axel','James','John','Ryan','Hector','Jeremiah'],['Kayla','Megan','Nicole','Rachel','Krissa','Adelaide']],
[TrainerType.DANCER]: ['Brian','Davey','Dirk','Edmond','Mickey','Raymond','Cara','Julia','Maika','Mireille','Ronda','Zoe'],
[TrainerType.DEPOT_AGENT]: ['Josh','Hank','Vincent'],
[TrainerType.DOCTOR]: [['Hank','Jerry','Jules','Logan','Wayne','Braid','Derek','Heath','Julius','Kit','Graham'],['Kirsten','Sachiko','Shery','Carol','Dixie','Mariah']],
[TrainerType.FISHERMAN]: ['Andre','Arnold','Barney','Chris','Edgar','Henry','Jonah','Justin','Kyle','Martin','Marvin','Ralph','Raymond','Scott','Stephen','Wilton','Tully','Andrew','Barny','Carter','Claude','Dale','Elliot','Eugene','Ivan','Ned','Nolan','Roger','Ronald','Wade','Wayne','Darian','Kai','Chip','Hank','Kaden','Tommy','Tylor','Alec','Brett','Cameron','Cody','Cole','Cory','Erick','George','Joseph','Juan','Kenneth','Luc','Miguel','Travis','Walter','Zachary','Josh','Gideon','Kyler','Liam','Murphy','Bruce','Damon','Devon','Hubert','Jones','Lydon','Mick','Pete','Sean','Sid','Vince','Bucky','Dean','Eustace','Kenzo','Leroy','Mack','Ryder','Ewan','Finn','Murray','Seward','Shad','Wharton','Finley','Fisher','Fisk','River','Sheaffer','Timin','Carl','Ernest','Hal','Herbert','Hisato','Mike','Vernon','Harriet','Marina','Chase'],
[TrainerType.GUITARIST]: ['Anna','Beverly','January','Tina','Alicia','Claudia','Julia','Lidia','Mireia','Noelia','Sara','Sheila','Tatiana'],
[TrainerType.HARLEQUIN]: ['Charley','Ian','Jack','Kerry','Louis','Pat','Paul','Rick','Anders','Clarence','Gary'],
[TrainerType.HIKER]: ['Anthony','Bailey','Benjamin','Daniel','Erik','Jim','Kenny','Leonard','Michael','Parry','Phillip','Russell','Sidney','Tim','Timothy','Alan','Brice','Clark','Eric','Lenny','Lucas','Mike','Trent','Devan','Eli','Marc','Sawyer','Allen','Daryl','Dudley','Earl','Franklin','Jeremy','Marcos','Nob','Oliver','Wayne','Alexander','Damon','Jonathan','Justin','Kevin','Lorenzo','Louis','Maurice','Nicholas','Reginald','Robert','Theodore','Bruce','Clarke','Devin','Dwight','Edwin','Eoin','Noland','Russel','Andy','Bret','Darrell','Gene','Hardy','Hugh','Jebediah','Jeremiah','Kit','Neil','Terrell','Don','Doug','Hunter','Jared','Jerome','Keith','Manuel','Markus','Otto','Shelby','Stephen','Teppei','Tobias','Wade','Zaiem','Aaron','Alain','Bergin','Bernard','Brent','Corwin','Craig','Delmon','Dunstan','Orestes','Ross','Davian','Calhoun','David','Gabriel','Ryan','Thomas','Travis','Zachary','Anuhea','Barnaby','Claus','Collin','Colson','Dexter','Dillan','Eugine','Farkas','Hisato','Julius','Kenji','Irwin','Lionel','Paul','Richter','Valentino','Donald','Douglas','Kevyn','Angela','Carla','Celia','Daniela','Estela','Fatima','Helena','Leire','Lucia','Luna','Manuela','Mar','Marina','Miyu','Nancy','Nerea','Paula','Rocio','Yanira','Chester'],
[TrainerType.HOOLIGANS]: ['Jim & Cas','Rob & Sal'],
[TrainerType.HOOPSTER]: ['Bobby','John','Lamarcus','Derrick','Nicolas'],
[TrainerType.INFIELDER]: ['Alex','Connor','Todd'],
[TrainerType.JANITOR]: ['Caleb','Geoff','Brady','Felix','Orville','Melvin','Shawn'],
[TrainerType.LINEBACKER]: ['Bob','Dan','Jonah'],
[TrainerType.MAID]: ['Belinda','Sophie','Emily','Elena','Clare','Alica','Tanya','Tammy'],
[TrainerType.MUSICIAN]: ['Boris','Preston','Charles','Clyde','Vincent','Dalton','Kirk','Shawn','Fabian','Fernando','Joseph','Marcos','Arturo','Jerry','Lonnie','Tony'],
[TrainerType.NURSERY_AIDE]: ['Autumn','Briana','Leah','Miho','Ethel','Hollie','Ilse','June','Kimya','Rosalyn'],
[TrainerType.OFFICER]: ['Dirk','Keith','Alex','Bobby','Caleb','Danny','Dylan','Thomas','Daniel','Jeff','Braven','Dell','Neagle','Haruki','Mitchell','Raymond'],
[TrainerType.PARASOL_LADY]: ['Angelica','Clarissa','Madeline','Akari','Annabell','Kayley','Rachel','Alexa','Sabrina','April','Gwyneth','Laura','Lumi','Mariah','Melita','Nicole','Tihana','Ingrid','Tyra'],
[TrainerType.PILOT]: ['Chase','Leonard','Ted','Elron','Ewing','Flynn','Winslow'],
[TrainerType.POKEFAN]: [['Alex','Allan','Brandon','Carter','Colin','Derek','Jeremy','Joshua','Rex','Robert','Trevor','William','Colton','Miguel','Francisco','Kaleb','Leonard','Boone','Elliot','Jude','Norbert','Corey','Gabe','Baxter'],['Beverly','Georgia','Jaime','Ruth','Isabel','Marissa','Vanessa','Annika','Bethany','Kimberly','Meredith','Rebekah','Eleanor','Darcy','Lydia','Sachiko','Abigail','Agnes','Lydie','Roisin','Tara','Carmen','Janet']],
[TrainerType.PRESCHOOLER]: [['Billy','Doyle','Evan','Homer','Tully','Albert','Buster','Greg','Ike','Jojo','Tyrone','Adrian','Oliver','Hayden','Hunter','Kaleb','Liam','Dylan'],['Juliet','Mia','Sarah','Wendy','Winter','Chrissy','Eva','Lin','Samantha','Ella','Lily','Natalie','Ailey','Hannah','Malia','Kindra','Nancy']],
[TrainerType.PSYCHIC]: [['Fidel','Franklin','Gilbert','Greg','Herman','Jared','Mark','Nathan','Norman','Phil','Richard','Rodney','Cameron','Edward','Fritz','Joshua','Preston','Virgil','William','Alvaro','Blake','Cedric','Keenan','Nicholas','Dario','Johan','Lorenzo','Tyron','Bryce','Corbin','Deandre','Elijah','Kody','Landon','Maxwell','Mitchell','Sterling','Eli','Nelson','Vernon','Gaven','Gerard','Low','Micki','Perry','Rudolf','Tommy','Al','Nandor','Tully','Arthur','Emanuel','Franz','Harry','Paschal','Robert','Sayid','Angelo','Anton','Arin','Avery','Danny','Frasier','Harrison','Jaime','Ross','Rui','Vlad','Mason'],['Alexis','Hannah','Jacki','Jaclyn','Kayla','Maura','Samantha','Alix','Brandi','Edie','Macey','Mariella','Marlene','Laura','Rodette','Abigail','Brittney','Chelsey','Daisy','Desiree','Kendra','Lindsey','Rachael','Valencia','Belle','Cybil','Doreen','Dua','Future','Lin','Madhu','Alia','Ena','Joyce','Lynette','Olesia','Sarah']],
[TrainerType.RANGER]: [['Carlos','Jackson','Sebastian','Gav','Lorenzo','Logan','Nicolas','Trenton','Deshawn','Dwayne','Jeffery','Kyler','Taylor','Alain','Claude','Crofton','Forrest','Harry','Jaden','Keith','Lewis','Miguel','Pedro','Ralph','Richard','Bret','Daryl','Eddie','Johan','Leaf','Louis','Maxwell','Parker','Rick','Steve','Bjorn','Chaise','Dean','Lee','Maurice','Nash','Ralf','Reed','Shinobu','Silas'],['Catherine','Jenna','Sophia','Merdith','Nora','Beth','Chelsea','Katelyn','Madeline','Allison','Ashlee','Felicia','Krista','Annie','Audra','Brenda','Chloris','Eliza','Heidi','Irene','Mary','Mylene','Shanti','Shelly','Thalia','Anja','Briana','Dianna','Elaine','Elle','Hillary','Katie','Lena','Lois','Malory','Melita','Mikiko','Naoko','Serenity','Ambre','Brooke','Clementine','Melina','Petra','Twiggy']],
[TrainerType.RICH]: [['Alfred','Edward','Gregory','Preston','Thomas','Tucker','Walter','Clifford','Everett','Micah','Nate','Pierre','Terrance','Arthur','Brooks','Emanuel','Lamar','Jeremy','Leonardo','Milton','Frederic','Renaud','Robert','Yan','Daniel','Sheldon','Stonewall','Gerald','Ronald','Smith','Stanley','Reginald','Orson','Wilco','Caden','Glenn'],['Rebecca','Reina','Cassandra','Emilia','Grace','Marian','Elizabeth','Kathleen','Sayuri','Caroline','Judy']],
[TrainerType.RICH_KID]: [['Garret','Winston','Dawson','Enrique','Jason','Roman','Trey','Liam','Anthony','Brad','Cody','Manuel','Martin','Pierce','Rolan','Keenan','Filbert','Antoin','Cyus','Diek','Dugo','Flitz','Jurek','Lond','Perd','Quint','Basto','Benit','Brot','Denc','Guyit','Marcon','Perc','Puros','Roex','Sainz','Symin','Tark','Venak'],['Anette','Brianna','Cindy','Colleen','Daphne','Elizabeth','Naomi','Sarah','Charlotte','Gillian','Jacki','Lady','Melissa','Celeste','Colette','Elizandra','Isabel','Lynette','Magnolia','Sophie','Lina','Dulcie','Auro','Brin','Caril','Eloos','Gwin','Illa','Kowly','Rima','Ristin','Vesey','Brena','Deasy','Denslon','Kylet','Nemi','Rene','Sanol','Stouner','Sturk','Talmen','Zoila']],
[TrainerType.ROUGHNECK]: ['Camron','Corey','Gabriel','Isaiah','Jamal','Koji','Luke','Paxton','Raul','Zeek','Kirby','Chance','Dave','Fletcher','Johnny','Reese','Joey','Ricky','Silvester','Martin'],
[TrainerType.SCIENTIST]: [['Jed','Marc','Mitch','Rich','Ross','Beau','Braydon','Connor','Ed','Ivan','Jerry','Jose','Joshua','Parker','Rodney','Taylor','Ted','Travis','Zackery','Darrius','Emilio','Fredrick','Shaun','Stefano','Travon','Daniel','Garett','Gregg','Linden','Lowell','Trenton','Dudley','Luke','Markus','Nathan','Orville','Randall','Ron','Ronald','Simon','Steve','William','Franklin','Clarke','Jacques','Terrance','Ernst','Justus','Ikaika','Jayson','Kyle','Reid','Tyrone','Adam','Albert','Alphonse','Cory','Donnie','Elton','Francis','Gordon','Herbert','Humphrey','Jordan','Julian','Keaton','Levi','Melvin','Murray','West','Craig','Coren','Dubik','Kotan','Lethco','Mante','Mort','Myron','Odlow','Ribek','Roeck','Vogi','Vonder','Zogo','Doimo','Doton','Durel','Hildon','Kukla','Messa','Nanot','Platen','Raburn','Reman','Acrod','Coffy','Elrok','Foss','Hardig','Hombol','Hospel','Kaller','Klots','Krilok','Limar','Loket','Mesak','Morbit','Newin','Orill','Tabor','Tekot'],['Blythe','Chan','Kathrine','Marie','Maria','Naoko','Samantha','Satomi','Shannon','Athena','Caroline','Lumi','Lumina','Marissa','Sonia']],
[TrainerType.SMASHER]: ['Aspen','Elena','Mari','Amy','Lizzy'],
[TrainerType.SNOW_WORKER]: [['Braden','Brendon','Colin','Conrad','Dillan','Gary','Gerardo','Holden','Jackson','Mason','Quentin','Willy','Noel','Arnold','Brady','Brand','Cairn','Cliff','Don','Eddie','Felix','Filipe','Glenn','Gus','Heath','Matthew','Patton','Rich','Rob','Ryan','Scott','Shelby','Sterling','Tyler','Victor','Zack','Friedrich','Herman','Isaac','Leo','Maynard','Mitchell','Morgann','Nathan','Niel','Pasqual','Paul','Tavarius','Tibor','Dimitri','Narek','Yusif','Frank','Jeff','Vaclav','Ovid','Francis','Keith','Russel','Sangon','Toway','Bomber','Chean','Demit','Hubor','Kebile','Laber','Ordo','Retay','Ronix','Wagel','Dobit','Kaster','Lobel','Releo','Saken','Rustix'],['Georgia','Sandra','Yvonne']],
[TrainerType.STRIKER]: ['Marco','Roberto','Tony'],
[TrainerType.SCHOOL_KID]: [['Alan','Billy','Chad','Danny','Dudley','Jack','Joe','Johnny','Kipp','Nate','Ricky','Tommy','Jerry','Paul','Ted','Chance','Esteban','Forrest','Harrison','Connor','Sherman','Torin','Travis','Al','Carter','Edgar','Jem','Sammy','Shane','Shayne','Alvin','Keston','Neil','Seymour','William','Carson','Clark','Nolan'],['Georgia','Karen','Meiko','Christine','Mackenzie','Tiera','Ann','Gina','Lydia','Marsha','Millie','Sally','Serena','Silvia','Alberta','Cassie','Mara','Rita','Georgie','Meena','Nitzel']],
[TrainerType.SWIMMER]: [['Berke','Cameron','Charlie','George','Harold','Jerome','Kirk','Mathew','Parker','Randall','Seth','Simon','Tucker','Austin','Barry','Chad','Cody','Darrin','David','Dean','Douglas','Franklin','Gilbert','Herman','Jack','Luis','Matthew','Reed','Richard','Rodney','Roland','Spencer','Stan','Tony','Clarence','Declan','Dominik','Harrison','Kevin','Leonardo','Nolen','Pete','Santiago','Axle','Braden','Finn','Garrett','Mymo','Reece','Samir','Toby','Adrian','Colton','Dillon','Erik','Evan','Francisco','Glenn','Kurt','Oscar','Ricardo','Sam','Sheltin','Troy','Vincent','Wade','Wesley','Duane','Elmo','Esteban','Frankie','Ronald','Tyson','Bart','Matt','Tim','Wright','Jeffery','Kyle','Alessandro','Estaban','Kieran','Ramses','Casey','Dakota','Jared','Kalani','Keoni','Lawrence','Logan','Robert','Roddy','Yasu','Derek','Jacob','Bruce','Clayton'],['Briana','Dawn','Denise','Diana','Elaine','Kara','Kaylee','Lori','Nicole','Nikki','Paula','Susie','Wendy','Alice','Beth','Beverly','Brenda','Dana','Debra','Grace','Jenny','Katie','Laurel','Linda','Missy','Sharon','Tanya','Tara','Tisha','Carlee','Imani','Isabelle','Kyla','Sienna','Abigail','Amara','Anya','Connie','Maria','Melissa','Nora','Shirley','Shania','Tiffany','Aubree','Cassandra','Claire','Crystal','Erica','Gabrielle','Haley','Jessica','Joanna','Lydia','Mallory','Mary','Miranda','Paige','Sophia','Vanessa','Chelan','Debbie','Joy','Kendra','Leona','Mina','Caroline','Joyce','Larissa','Rebecca','Tyra','Dara','Desiree','Kaoru','Ruth','Coral','Genevieve','Isla','Marissa','Romy','Sheryl','Alexandria','Alicia','Chelsea','Jade','Kelsie','Laura','Portia','Shelby','Sara','Tiare','Kyra','Natasha','Layla','Scarlett','Cora']],
[TrainerType.TWINS]: ['Amy & May','Jo & Zoe','Meg & Peg','Ann & Anne','Lea & Pia','Amy & Liv','Gina & Mia','Miu & Yuki','Tori & Tia','Eli & Anne','Jen & Kira','Joy & Meg','Kiri & Jan','Miu & Mia','Emma & Lil','Liv & Liz','Teri & Tia','Amy & Mimi','Clea & Gil','Day & Dani','Kay & Tia','Tori & Til','Saya & Aya','Emy & Lin','Kumi & Amy','Mayo & May','Ally & Amy','Lia & Lily','Rae & Ula','Sola & Ana','Tara & Val','Faith & Joy','Nana & Nina'],
[TrainerType.VETERAN]: [['Armando','Brenden','Brian','Clayton','Edgar','Emanuel','Grant','Harlan','Terrell','Arlen','Chester','Hugo','Martell','Ray','Shaun','Abraham','Carter','Claude','Jerry','Lucius','Murphy','Rayne','Ron','Sinan','Sterling','Vincent','Zach','Gerard','Gilles','Louis','Timeo','Akira','Don','Eric','Harry','Leon','Roger','Angus','Aristo','Brone','Johnny'],['Julia','Karla','Kim','Sayuri','Tiffany','Cathy','Cecile','Chloris','Denae','Gina','Maya','Oriana','Portia','Rhona','Rosaline','Catrina','Inga','Trisha','Heather','Lynn','Sheri','Alonsa','Ella','Leticia','Kiara']],
[TrainerType.WAITER]: [['Bert','Clint','Maxwell','Lou'],['Kati','Aurora','Bonita','Flo','Tia','Jan','Olwen','Paget','Paula','Talia']],
[TrainerType.WORKER]: [['Braden','Brendon','Colin','Conrad','Dillan','Gary','Gerardo','Holden','Jackson','Mason','Quentin','Willy','Noel','Arnold','Brady','Brand','Cairn','Cliff','Don','Eddie','Felix','Filipe','Glenn','Gus','Heath','Matthew','Patton','Rich','Rob','Ryan','Scott','Shelby','Sterling','Tyler','Victor','Zack','Friedrich','Herman','Isaac','Leo','Maynard','Mitchell','Morgann','Nathan','Niel','Pasqual','Paul','Tavarius','Tibor','Dimitri','Narek','Yusif','Frank','Jeff','Vaclav','Ovid','Francis','Keith','Russel','Sangon','Toway','Bomber','Chean','Demit','Hubor','Kebile','Laber','Ordo','Retay','Ronix','Wagel','Dobit','Kaster','Lobel','Releo','Saken','Rustix'],['Georgia','Sandra','Yvonne']],
[TrainerType.YOUNGSTER]: [['Albert','Gordon','Ian','Jason','Jimmy','Mikey','Owen','Samuel','Warren','Allen','Ben','Billy','Calvin','Dillion','Eddie','Joey','Josh','Neal','Timmy','Tommy','Breyden','Deandre','Demetrius','Dillon','Jaylen','Johnson','Shigenobu','Chad','Cole','Cordell','Dan','Dave','Destin','Nash','Tyler','Yasu','Austin','Dallas','Darius','Donny','Jonathon','Logan','Michael','Oliver','Sebastian','Tristan','Wayne','Norman','Roland','Regis','Abe','Astor','Keita','Kenneth','Kevin','Kyle','Lester','Masao','Nicholas','Parker','Wes','Zachary','Cody','Henley','Jaye','Karl','Kenny','Masahiro','Pedro','Petey','Sinclair','Terrell','Waylon','Aidan','Anthony','David','Jacob','Jayden','Cutler','Ham','Caleb','Kai','Honus','Kenway','Bret','Chris','Cid','Dennis','Easton','Ken','Robby','Ronny','Shawn','Benjamin','Jake','Travis','Adan','Aday','Beltran','Elian','Hernan','Julen','Luka','Roi','Bernie','Dustin','Jonathan','Wyatt'],['Alice','Bridget','Carrie','Connie','Dana','Ellen','Krise','Laura','Linda','Michelle','Shannon','Andrea','Crissy','Janice','Robin','Sally','Tiana','Haley','Ali','Ann','Dalia','Dawn','Iris','Joana','Julia','Kay','Lisa','Megan','Mikaela','Miriam','Paige','Reli','Blythe','Briana','Caroline','Cassidy','Kaitlin','Madeline','Molly','Natalie','Samantha','Sarah','Cathy','Dye','Eri','Eva','Fey','Kara','Lurleen','Maki','Mali','Maya','Miki','Sibyl','Daya','Diana','Flo','Helia','Henrietta','Isabel','Mai','Persephone','Serena','Anna','Charlotte','Elin','Elsa','Lise','Sara','Suzette','Audrey','Emmy','Isabella','Madison','Rika','Rylee','Salla','Ellie','Alexandra','Amy','Lass','Brittany','Chel','Cindy','Dianne','Emily','Emma','Evelyn','Hana','Harleen','Hazel','Jocelyn','Katrina','Kimberly','Lina','Marge','Mila','Mizuki','Rena','Sal','Satoko','Summer','Tomoe','Vicky','Yue','Yumi','Lauren','Rei','Riley','Lois','Nancy','Tammy','Terry']],
[TrainerType.HEX_MANIAC]: ['Kindra','Patricia','Tammy','Tasha','Valerie','Alaina','Kathleen','Leah','Makie','Sylvia','Anina','Arachna','Carrie','Desdemona','Josette','Luna','Melanie','Osanna','Raziah'],
};
function fetchAndPopulateTrainerNames(url: string, parser: DOMParser, trainerNames: Set<string>, femaleTrainerNames: Set<string>, forceFemale: boolean = false) {
@ -138,16 +138,16 @@ function fetchAndPopulateTrainerNames(url: string, parser: DOMParser, trainerNam
const childIndex = elements.indexOf(t);
return childIndex > startChildIndex && childIndex < endChildIndex;
}).map(t => t as Element);
console.log(url, tables)
for (let table of tables) {
console.log(url, tables);
for (const table of tables) {
const trainerRows = [...table.querySelectorAll('tr:not(:first-child)')].filter(r => r.children.length === 9);
for (let row of trainerRows) {
for (const row of trainerRows) {
const nameCell = row.firstElementChild;
const content = nameCell.innerHTML;
if (content.indexOf(' <a ') > -1) {
const female = /♀/.test(content);
if (url === 'Twins')
console.log(content)
console.log(content);
const nameMatch = />([a-z]+(?: &amp; [a-z]+)?)<\/a>/i.exec(content);
if (nameMatch)
(female || forceFemale ? femaleTrainerNames : trainerNames).add(nameMatch[1].replace('&amp;', '&'));

View File

@ -19,7 +19,7 @@ export enum Type {
DARK,
FAIRY,
STELLAR
};
}
export type TypeDamageMultiplier = 0 | 0.125 | 0.25 | 0.5 | 1 | 2 | 4 | 8;

View File

@ -1,13 +1,13 @@
import { Biome } from "./enums/biome";
import { getPokemonMessage, getPokemonPrefix } from "../messages";
import Pokemon from "../field/pokemon";
import { Type } from "./type";
import Move, { AttackMove } from "./move";
import * as Utils from "../utils";
import BattleScene from "../battle-scene";
import { SuppressWeatherEffectAbAttr } from "./ability";
import { TerrainType } from "./terrain";
import i18next from "i18next";
import { Biome } from './enums/biome';
import { getPokemonMessage, getPokemonPrefix } from '../messages';
import Pokemon from '../field/pokemon';
import { Type } from './type';
import Move, { AttackMove } from './move';
import * as Utils from '../utils';
import BattleScene from '../battle-scene';
import { SuppressWeatherEffectAbAttr } from './ability';
import { TerrainType } from './terrain';
import i18next from 'i18next';
export enum WeatherType {
NONE,
@ -107,7 +107,7 @@ export class Weather {
isEffectSuppressed(scene: BattleScene): boolean {
const field = scene.getField(true);
for (let pokemon of field) {
for (const pokemon of field) {
let suppressWeatherEffectAbAttr = pokemon.getAbility().getAttrs(SuppressWeatherEffectAbAttr).find(() => true) as SuppressWeatherEffectAbAttr;
if (!suppressWeatherEffectAbAttr)
suppressWeatherEffectAbAttr = pokemon.hasPassive() ? pokemon.getPassiveAbility().getAttrs(SuppressWeatherEffectAbAttr).find(() => true) as SuppressWeatherEffectAbAttr : null;
@ -233,7 +233,7 @@ export function getTerrainClearMessage(terrainType: TerrainType): string {
export function getTerrainBlockMessage(pokemon: Pokemon, terrainType: TerrainType): string {
if (terrainType === TerrainType.MISTY)
return getPokemonMessage(pokemon, ` surrounds itself with a protective mist!`);
return getPokemonMessage(pokemon, ' surrounds itself with a protective mist!');
return getPokemonMessage(pokemon, ` is protected by the ${Utils.toReadableString(TerrainType[terrainType])} Terrain!`);
}
@ -367,7 +367,7 @@ export function getRandomWeatherType(arena: any /* Importing from arena causes a
const rand = Utils.randSeedInt(totalWeight);
let w = 0;
for (let weather of weatherPool) {
for (const weather of weatherPool) {
w += weather.weight;
if (rand < w)
return weather.weatherType;

View File

@ -1,17 +1,17 @@
import SoundFade from "phaser3-rex-plugins/plugins/soundfade";
import { Phase } from "./phase";
import BattleScene, { AnySound } from "./battle-scene";
import * as Utils from "./utils";
import { Mode } from "./ui/ui";
import { EGG_SEED, Egg, GachaType, getLegendaryGachaSpeciesForTimestamp } from "./data/egg";
import EggHatchSceneHandler from "./ui/egg-hatch-scene-handler";
import { Species } from "./data/enums/species";
import { PlayerPokemon } from "./field/pokemon";
import { getPokemonSpecies, speciesStarters } from "./data/pokemon-species";
import { achvs } from "./system/achv";
import { pokemonPrevolutions } from "./data/pokemon-evolutions";
import { EggTier } from "./data/enums/egg-type";
import PokemonInfoContainer from "./ui/pokemon-info-container";
import SoundFade from 'phaser3-rex-plugins/plugins/soundfade';
import { Phase } from './phase';
import BattleScene, { AnySound } from './battle-scene';
import * as Utils from './utils';
import { Mode } from './ui/ui';
import { EGG_SEED, Egg, GachaType, getLegendaryGachaSpeciesForTimestamp } from './data/egg';
import EggHatchSceneHandler from './ui/egg-hatch-scene-handler';
import { Species } from './data/enums/species';
import { PlayerPokemon } from './field/pokemon';
import { getPokemonSpecies, speciesStarters } from './data/pokemon-species';
import { achvs } from './system/achv';
import { pokemonPrevolutions } from './data/pokemon-evolutions';
import { EggTier } from './data/enums/egg-type';
import PokemonInfoContainer from './ui/pokemon-info-container';
export class EggHatchPhase extends Phase {
private egg: Egg;
@ -83,7 +83,7 @@ export class EggHatchPhase extends Phase {
this.eggHatchContainer.add(this.eggContainer);
const getPokemonSprite = () => {
const ret = this.scene.add.sprite(this.eggHatchBg.displayWidth / 2, this.eggHatchBg.displayHeight / 2, `pkmn__sub`);
const ret = this.scene.add.sprite(this.eggHatchBg.displayWidth / 2, this.eggHatchBg.displayHeight / 2, 'pkmn__sub');
ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true });
return ret;
};
@ -151,7 +151,7 @@ export class EggHatchPhase extends Phase {
});
});
});
})
});
});
});
});
@ -196,7 +196,7 @@ export class EggHatchPhase extends Phase {
onComplete: () => resolve()
});
}
})
});
}
});
});
@ -312,8 +312,8 @@ export class EggHatchPhase extends Phase {
let f = 0;
let yOffset = 0;
let speed = 3 - Utils.randInt(8);
let amp = 24 + Utils.randInt(32);
const speed = 3 - Utils.randInt(8);
const amp = 24 + Utils.randInt(32);
const particleTimer = this.scene.tweens.addCounter({
repeat: -1,
@ -386,14 +386,14 @@ export class EggHatchPhase extends Phase {
const ignoredSpecies = [ Species.PHIONE, Species.MANAPHY, Species.ETERNATUS ];
let speciesPool = Object.keys(speciesStarters)
const speciesPool = Object.keys(speciesStarters)
.filter(s => speciesStarters[s] >= minStarterValue && speciesStarters[s] <= maxStarterValue)
.map(s => parseInt(s) as Species)
.filter(s => !pokemonPrevolutions.hasOwnProperty(s) && getPokemonSpecies(s).isObtainable() && ignoredSpecies.indexOf(s) === -1);
let totalWeight = 0;
const speciesWeights = [];
for (let speciesId of speciesPool) {
for (const speciesId of speciesPool) {
let weight = Math.floor((((maxStarterValue - speciesStarters[speciesId]) / ((maxStarterValue - minStarterValue) + 1)) * 1.5 + 1) * 100);
const species = getPokemonSpecies(speciesId);
if (species.isRegional())

View File

@ -1,15 +1,15 @@
import SoundFade from "phaser3-rex-plugins/plugins/soundfade";
import { Phase } from "./phase";
import BattleScene from "./battle-scene";
import { SpeciesFormEvolution } from "./data/pokemon-evolutions";
import EvolutionSceneHandler from "./ui/evolution-scene-handler";
import * as Utils from "./utils";
import { Mode } from "./ui/ui";
import { LearnMovePhase } from "./phases";
import { cos, sin } from "./field/anims";
import { PlayerPokemon } from "./field/pokemon";
import { getTypeRgb } from "./data/type";
import i18next from "i18next";
import SoundFade from 'phaser3-rex-plugins/plugins/soundfade';
import { Phase } from './phase';
import BattleScene from './battle-scene';
import { SpeciesFormEvolution } from './data/pokemon-evolutions';
import EvolutionSceneHandler from './ui/evolution-scene-handler';
import * as Utils from './utils';
import { Mode } from './ui/ui';
import { LearnMovePhase } from './phases';
import { cos, sin } from './field/anims';
import { PlayerPokemon } from './field/pokemon';
import { getTypeRgb } from './data/type';
import i18next from 'i18next';
export class EvolutionPhase extends Phase {
protected pokemon: PlayerPokemon;
@ -73,7 +73,7 @@ export class EvolutionPhase extends Phase {
this.evolutionContainer.add(this.evolutionBgOverlay);
const getPokemonSprite = () => {
const ret = this.scene.addPokemonSprite(this.pokemon, this.evolutionBaseBg.displayWidth / 2, this.evolutionBaseBg.displayHeight / 2, `pkmn__sub`);
const ret = this.scene.addPokemonSprite(this.pokemon, this.evolutionBaseBg.displayWidth / 2, this.evolutionBaseBg.displayHeight / 2, 'pkmn__sub');
ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true });
return ret;
};
@ -217,7 +217,7 @@ export class EvolutionPhase extends Phase {
this.pokemon.evolve(this.evolution).then(() => {
const levelMoves = this.pokemon.getLevelMoves(this.lastLevel + 1, true);
for (let lm of levelMoves)
for (const lm of levelMoves)
this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.scene.getParty().indexOf(this.pokemon), lm[1]));
this.scene.unshiftPhase(new EndEvolutionPhase(this.scene));
@ -266,7 +266,7 @@ export class EvolutionPhase extends Phase {
});
});
}
})
});
}
});
});
@ -485,8 +485,8 @@ export class EvolutionPhase extends Phase {
let f = 0;
let yOffset = 0;
let speed = 3 - Utils.randInt(8);
let amp = 48 + Utils.randInt(64);
const speed = 3 - Utils.randInt(8);
const amp = 48 + Utils.randInt(64);
const particleTimer = this.scene.tweens.addCounter({
repeat: -1,

View File

@ -1,6 +1,6 @@
import BattleScene from "../battle-scene";
import { PokeballType } from "../data/pokeball";
import * as Utils from "../utils";
import BattleScene from '../battle-scene';
import { PokeballType } from '../data/pokeball';
import * as Utils from '../utils';
export function addPokeballOpenParticles(scene: BattleScene, x: number, y: number, pokeballType: PokeballType): void {
switch (pokeballType) {
@ -66,7 +66,7 @@ function doDefaultPbOpenParticles(scene: BattleScene, x: number, y: number, radi
}
function doUbOpenParticles(scene: BattleScene, x: number, y: number, frameIndex: integer) {
let particles: Phaser.GameObjects.Image[] = [];
const particles: Phaser.GameObjects.Image[] = [];
for (let i = 0; i < 10; i++)
particles.push(doFanOutParticle(scene, i * 25, x, y, 1, 1, 5, frameIndex));
@ -77,14 +77,14 @@ function doUbOpenParticles(scene: BattleScene, x: number, y: number, frameIndex:
alpha: 0,
ease: 'Sine.easeIn',
onComplete: () => {
for (let particle of particles)
for (const particle of particles)
particle.destroy();
}
});
}
function doMbOpenParticles(scene: BattleScene, x: number, y: number) {
let particles: Phaser.GameObjects.Image[] = [];
const particles: Phaser.GameObjects.Image[] = [];
for (let j = 0; j < 2; j++) {
for (let i = 0; i < 8; i++)
particles.push(doFanOutParticle(scene, i * 32, x, y, j ? 1 : 2, j ? 2 : 1, 8, 4));
@ -96,7 +96,7 @@ function doMbOpenParticles(scene: BattleScene, x: number, y: number) {
alpha: 0,
ease: 'Sine.easeIn',
onComplete: () => {
for (let particle of particles)
for (const particle of particles)
particle.destroy();
}
});

View File

@ -1,23 +1,23 @@
import BattleScene from "../battle-scene";
import { BiomePoolTier, PokemonPools, BiomeTierTrainerPools, biomePokemonPools, biomeTrainerPools } from "../data/biomes";
import { Biome } from "../data/enums/biome";
import * as Utils from "../utils";
import PokemonSpecies, { getPokemonSpecies } from "../data/pokemon-species";
import { Species } from "../data/enums/species";
import { Weather, WeatherType, getTerrainClearMessage, getTerrainStartMessage, getWeatherClearMessage, getWeatherStartMessage } from "../data/weather";
import { CommonAnimPhase, WeatherEffectPhase } from "../phases";
import { CommonAnim } from "../data/battle-anims";
import { Type } from "../data/type";
import Move from "../data/move";
import { ArenaTag, ArenaTagSide, getArenaTag } from "../data/arena-tag";
import { ArenaTagType } from "../data/enums/arena-tag-type";
import { TrainerType } from "../data/enums/trainer-type";
import { BattlerIndex } from "../battle";
import { Moves } from "../data/enums/moves";
import { TimeOfDay } from "../data/enums/time-of-day";
import { Terrain, TerrainType } from "../data/terrain";
import { PostTerrainChangeAbAttr, PostWeatherChangeAbAttr, applyPostTerrainChangeAbAttrs, applyPostWeatherChangeAbAttrs } from "../data/ability";
import Pokemon from "./pokemon";
import BattleScene from '../battle-scene';
import { BiomePoolTier, PokemonPools, BiomeTierTrainerPools, biomePokemonPools, biomeTrainerPools } from '../data/biomes';
import { Biome } from '../data/enums/biome';
import * as Utils from '../utils';
import PokemonSpecies, { getPokemonSpecies } from '../data/pokemon-species';
import { Species } from '../data/enums/species';
import { Weather, WeatherType, getTerrainClearMessage, getTerrainStartMessage, getWeatherClearMessage, getWeatherStartMessage } from '../data/weather';
import { CommonAnimPhase, WeatherEffectPhase } from '../phases';
import { CommonAnim } from '../data/battle-anims';
import { Type } from '../data/type';
import Move from '../data/move';
import { ArenaTag, ArenaTagSide, getArenaTag } from '../data/arena-tag';
import { ArenaTagType } from '../data/enums/arena-tag-type';
import { TrainerType } from '../data/enums/trainer-type';
import { BattlerIndex } from '../battle';
import { Moves } from '../data/enums/moves';
import { TimeOfDay } from '../data/enums/time-of-day';
import { Terrain, TerrainType } from '../data/terrain';
import { PostTerrainChangeAbAttr, PostWeatherChangeAbAttr, applyPostTerrainChangeAbAttrs, applyPostWeatherChangeAbAttrs } from '../data/ability';
import Pokemon from './pokemon';
import * as Overrides from '../overrides';
export class Arena {
@ -58,7 +58,7 @@ export class Arena {
const timeOfDay = this.getTimeOfDay();
if (timeOfDay !== this.lastTimeOfDay) {
this.pokemonPool = {};
for (let tier of Object.keys(biomePokemonPools[this.biomeType]))
for (const tier of Object.keys(biomePokemonPools[this.biomeType]))
this.pokemonPool[tier] = Object.assign([], biomePokemonPools[this.biomeType][tier][TimeOfDay.ALL]).concat(biomePokemonPools[this.biomeType][tier][timeOfDay]);
this.lastTimeOfDay = timeOfDay;
}
@ -140,7 +140,7 @@ export class Arena {
randomTrainerType(waveIndex: integer): TrainerType {
const isBoss = !!this.trainerPool[BiomePoolTier.BOSS].length
&& this.scene.gameMode.isTrainerBoss(waveIndex, this.biomeType, this.scene.offsetGym);
console.log(isBoss, this.trainerPool)
console.log(isBoss, this.trainerPool);
const tierValue = Utils.randSeedInt(!isBoss ? 512 : 64);
let tier = !isBoss
? tierValue >= 156 ? BiomePoolTier.COMMON : tierValue >= 32 ? BiomePoolTier.UNCOMMON : tierValue >= 6 ? BiomePoolTier.RARE : tierValue >= 1 ? BiomePoolTier.SUPER_RARE : BiomePoolTier.ULTRA_RARE
@ -276,7 +276,7 @@ export class Arena {
this.weather = new Weather(weather, 0);
this.scene.unshiftPhase(new CommonAnimPhase(this.scene, undefined, undefined, CommonAnim.SUNNY + (weather - 1)));
this.scene.queueMessage(getWeatherStartMessage(weather));
return true
return true;
}
/**
@ -709,7 +709,7 @@ export class ArenaBase extends Phaser.GameObjects.Container {
this.base.setTexture(baseKey);
if (this.base.texture.frameTotal > 1) {
const baseFrameNames = this.scene.anims.generateFrameNames(baseKey, { zeroPad: 4, suffix: ".png", start: 1, end: this.base.texture.frameTotal - 1 });
const baseFrameNames = this.scene.anims.generateFrameNames(baseKey, { zeroPad: 4, suffix: '.png', start: 1, end: this.base.texture.frameTotal - 1 });
this.scene.anims.create({
key: baseKey,
frames: baseFrameNames,
@ -733,7 +733,7 @@ export class ArenaBase extends Phaser.GameObjects.Container {
prop.setTexture(propKey);
if (hasProps && prop.texture.frameTotal > 1) {
const propFrameNames = this.scene.anims.generateFrameNames(propKey, { zeroPad: 4, suffix: ".png", start: 1, end: prop.texture.frameTotal - 1 });
const propFrameNames = this.scene.anims.generateFrameNames(propKey, { zeroPad: 4, suffix: '.png', start: 1, end: prop.texture.frameTotal - 1 });
this.scene.anims.create({
key: propKey,
frames: propFrameNames,

View File

@ -1,7 +1,7 @@
import { TextStyle, addTextObject } from "../ui/text";
import Pokemon, { DamageResult, HitResult } from "./pokemon";
import * as Utils from "../utils";
import { BattlerIndex } from "../battle";
import { TextStyle, addTextObject } from '../ui/text';
import Pokemon, { DamageResult, HitResult } from './pokemon';
import * as Utils from '../utils';
import { BattlerIndex } from '../battle';
export default class DamageNumberHandler {
private damageNumbers: Map<BattlerIndex, Phaser.GameObjects.Text[]>;

View File

@ -1,6 +1,6 @@
import BattleScene from "../battle-scene";
import Pokemon from "./pokemon";
import * as Utils from "../utils";
import BattleScene from '../battle-scene';
import Pokemon from './pokemon';
import * as Utils from '../utils';
export default class PokemonSpriteSparkleHandler {
private sprites: Set<Phaser.GameObjects.Sprite>;
@ -20,7 +20,7 @@ export default class PokemonSpriteSparkleHandler {
onLapse(): void {
Array.from(this.sprites.values()).filter(s => !s.scene).map(s => this.sprites.delete(s));
for (let s of this.sprites.values()) {
for (const s of this.sprites.values()) {
if (!s.pipelineData['teraColor'] || !(s.pipelineData['teraColor'] as number[]).find(c => c))
continue;
if (!s.visible || (s.parentContainer instanceof Pokemon && !s.parentContainer.parentContainer))
@ -47,7 +47,7 @@ export default class PokemonSpriteSparkleHandler {
add(sprites: Phaser.GameObjects.Sprite | Phaser.GameObjects.Sprite[]): void {
if (!Array.isArray(sprites))
sprites = [ sprites ];
for (let s of sprites) {
for (const s of sprites) {
if (this.sprites.has(s))
continue;
this.sprites.add(s);
@ -57,13 +57,13 @@ export default class PokemonSpriteSparkleHandler {
remove(sprites: Phaser.GameObjects.Sprite | Phaser.GameObjects.Sprite[]): void {
if (!Array.isArray(sprites))
sprites = [ sprites ];
for (let s of sprites) {
for (const s of sprites) {
this.sprites.delete(s);
}
}
removeAll(): void {
for (let s of this.sprites.values())
for (const s of this.sprites.values())
this.sprites.delete(s);
}
}

View File

@ -3,8 +3,8 @@ import BattleScene, { AnySound } from '../battle-scene';
import { Variant, VariantSet, variantColorCache } from '#app/data/variant';
import { variantData } from '#app/data/variant';
import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from '../ui/battle-info';
import { Moves } from "../data/enums/moves";
import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr, VariableMoveTypeAttr, VariableMoveCategoryAttr, CounterDamageAttr, StatChangeAttr, RechargeAttr, ChargeAttr, IgnoreWeatherTypeDebuffAttr, BypassBurnDamageReductionAttr, SacrificialAttrOnHit } from "../data/move";
import { Moves } from '../data/enums/moves';
import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr, VariableMoveTypeAttr, VariableMoveCategoryAttr, CounterDamageAttr, StatChangeAttr, RechargeAttr, ChargeAttr, IgnoreWeatherTypeDebuffAttr, BypassBurnDamageReductionAttr, SacrificialAttrOnHit } from '../data/move';
import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from '../data/pokemon-species';
import * as Utils from '../utils';
import { Type, TypeDamageMultiplier, getTypeDamageMultiplier, getTypeRgb } from '../data/type';
@ -20,18 +20,18 @@ import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from '../data/tms';
import { DamagePhase, FaintPhase, LearnMovePhase, ObtainStatusEffectPhase, StatChangePhase, SwitchPhase, SwitchSummonPhase, ToggleDoublePositionPhase } from '../phases';
import { BattleStat } from '../data/battle-stat';
import { BattlerTag, BattlerTagLapseType, EncoreTag, HelpingHandTag, HighestStatBoostTag, TypeBoostTag, getBattlerTag } from '../data/battler-tags';
import { BattlerTagType } from "../data/enums/battler-tag-type";
import { BattlerTagType } from '../data/enums/battler-tag-type';
import { Species } from '../data/enums/species';
import { WeatherType } from '../data/weather';
import { TempBattleStat } from '../data/temp-battle-stat';
import { ArenaTagSide, WeakenMoveScreenTag, WeakenMoveTypeTag } from '../data/arena-tag';
import { ArenaTagType } from "../data/enums/arena-tag-type";
import { Biome } from "../data/enums/biome";
import { ArenaTagType } from '../data/enums/arena-tag-type';
import { Biome } from '../data/enums/biome';
import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr, DamageBoostAbAttr, IgnoreTypeStatusEffectImmunityAbAttr, ConditionalCritAbAttr } from '../data/ability';
import { Abilities } from "#app/data/enums/abilities";
import { Abilities } from '#app/data/enums/abilities';
import PokemonData from '../system/pokemon-data';
import Battle, { BattlerIndex } from '../battle';
import { BattleSpec } from "../enums/battle-spec";
import { BattleSpec } from '../enums/battle-spec';
import { Mode } from '../ui/ui';
import PartyUiHandler, { PartyOption, PartyUiMode } from '../ui/party-ui-handler';
import SoundFade from 'phaser3-rex-plugins/plugins/soundfade';
@ -301,7 +301,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const originalWarn = console.warn;
// Ignore warnings for missing frames, because there will be a lot
console.warn = () => {};
const battleFrameNames = this.scene.anims.generateFrameNames(this.getBattleSpriteKey(), { zeroPad: 4, suffix: ".png", start: 1, end: 400 });
const battleFrameNames = this.scene.anims.generateFrameNames(this.getBattleSpriteKey(), { zeroPad: 4, suffix: '.png', start: 1, end: 400 });
console.warn = originalWarn;
this.scene.anims.create({
key: this.getBattleSpriteKey(),
@ -336,7 +336,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
console.error(`Could not load ${res.url}!`);
return;
}
return res.json()
return res.json();
}).then(c => {
variantColorCache[key] = c;
resolve();
@ -555,8 +555,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const newOffset = this.getFieldPositionOffset();
let relX = newOffset[0] - initialOffset[0];
let relY = newOffset[1] - initialOffset[1];
const relX = newOffset[0] - initialOffset[0];
const relY = newOffset[1] - initialOffset[1];
if (duration) {
this.scene.tweens.add({
@ -654,9 +654,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
}
this.scene.applyModifiers(PokemonBaseStatModifier, this.isPlayer(), this, baseStats);
const stats = Utils.getEnumValues(Stat);
for (let s of stats) {
for (const s of stats) {
const isHp = s === Stat.HP;
let baseStat = baseStats[s];
const baseStat = baseStats[s];
let value = Math.floor(((2 * baseStat + this.ivs[s]) * this.level) * 0.01);
if (isHp) {
value = value + this.level + 10;
@ -762,7 +762,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
if (overrideArray.length > 0) {
overrideArray.forEach((move: Moves, index: number) => {
const ppUsed = this.moveset[index]?.ppUsed || 0;
this.moveset[index] = new PokemonMove(move, Math.min(ppUsed, allMoves[move].pp))
this.moveset[index] = new PokemonMove(move, Math.min(ppUsed, allMoves[move].pp));
});
}
@ -1025,7 +1025,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
getEvolution(): SpeciesFormEvolution {
if (pokemonEvolutions.hasOwnProperty(this.species.speciesId)) {
const evolutions = pokemonEvolutions[this.species.speciesId];
for (let e of evolutions) {
for (const e of evolutions) {
if (!e.item && this.level >= e.level && (!e.preFormKey || this.getFormKey() === e.preFormKey)) {
if (e.condition === null || (e.condition as SpeciesEvolutionCondition).predicate(this))
return e;
@ -1035,7 +1035,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
if (this.isFusion() && pokemonEvolutions.hasOwnProperty(this.fusionSpecies.speciesId)) {
const fusionEvolutions = pokemonEvolutions[this.fusionSpecies.speciesId].map(e => new FusionSpeciesFormEvolution(this.species.speciesId, e));
for (let fe of fusionEvolutions) {
for (const fe of fusionEvolutions) {
if (!fe.item && this.level >= fe.level && (!fe.preFormKey || this.getFusionFormKey() === fe.preFormKey)) {
if (fe.condition === null || (fe.condition as SpeciesEvolutionCondition).predicate(this))
return fe;
@ -1077,7 +1077,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
while (fusionLevelMoves.length && fusionLevelMoves[0][0] < startingLevel)
fusionLevelMoves.shift();
if (includeEvolutionMoves) {
for (let elm of evolutionLevelMoves.reverse())
for (const elm of evolutionLevelMoves.reverse())
levelMoves.unshift(elm);
}
for (let l = includeEvolutionMoves ? 0 : startingLevel; l <= this.level; l++) {
@ -1097,7 +1097,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
levelMoves = newLevelMoves;
}
if (levelMoves) {
for (let lm of levelMoves) {
for (const lm of levelMoves) {
const level = lm[0];
if ((!includeEvolutionMoves || level) && level < startingLevel)
continue;
@ -1124,7 +1124,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const E = this.scene.gameData.trainerId ^ this.scene.gameData.secretId;
const F = rand1 ^ rand2;
let shinyThreshold = new Utils.IntegerHolder(32);
const shinyThreshold = new Utils.IntegerHolder(32);
if (thresholdOverride === undefined) {
if (!this.hasTrainer()) {
if (new Date() < new Date(Date.UTC(2024, 4, 22, 0)))
@ -1171,7 +1171,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
&& !species.legendary
&& !species.mythical
&& !species.isTrainerForbidden()
&& species.speciesId !== this.species.speciesId
&& species.speciesId !== this.species.speciesId;
};
this.fusionSpecies = this.scene.randomSpecies(this.scene.currentBattle?.waveIndex || 0, this.level, false, filter, true);
@ -1234,10 +1234,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
if (this.hasTrainer()) {
const tms = Object.keys(tmSpecies);
for (let tm of tms) {
for (const tm of tms) {
const moveId = parseInt(tm) as Moves;
let compatible = false;
for (let p of tmSpecies[tm]) {
for (const p of tmSpecies[tm]) {
if (Array.isArray(p)) {
if (p[0] === this.species.speciesId || (this.fusionSpecies && p[0] === this.fusionSpecies.speciesId) && p.slice(1).indexOf(this.species.forms[this.formIndex]) > -1) {
compatible = true;
@ -1450,7 +1450,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
apply(source: Pokemon, battlerMove: PokemonMove): HitResult {
let result: HitResult;
const move = battlerMove.getMove();
let damage = new Utils.NumberHolder(0);
const damage = new Utils.NumberHolder(0);
const defendingSidePlayField = this.isPlayer() ? this.scene.getPlayerField() : this.scene.getEnemyField();
const variableCategory = new Utils.IntegerHolder(move.category);
@ -1502,7 +1502,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
if (cancelled.value)
result = HitResult.NO_EFFECT;
else {
let typeBoost = source.findTag(t => t instanceof TypeBoostTag && (t as TypeBoostTag).boostedType === type) as TypeBoostTag;
const typeBoost = source.findTag(t => t instanceof TypeBoostTag && (t as TypeBoostTag).boostedType === type) as TypeBoostTag;
if (typeBoost) {
power.value *= typeBoost.boostValue;
if (typeBoost.oneUse) {
@ -1559,7 +1559,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const isTypeImmune = (typeMultiplier.value * arenaAttackTypeMultiplier.value) === 0;
const sourceTypes = source.getTypes();
const matchesSourceType = sourceTypes[0] === type || (sourceTypes.length > 1 && sourceTypes[1] === type);
let stabMultiplier = new Utils.NumberHolder(1);
const stabMultiplier = new Utils.NumberHolder(1);
if (sourceTeraType === Type.UNKNOWN && matchesSourceType)
stabMultiplier.value += 0.5;
else if (sourceTeraType !== Type.UNKNOWN && sourceTeraType === type)
@ -1666,7 +1666,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const attackResult = { move: move.id, result: result as DamageResult, damage: damage.value, critical: isCritical, sourceId: source.id };
this.turnData.attacksReceived.unshift(attackResult);
if (source.isPlayer() && !this.isPlayer())
this.scene.applyModifiers(DamageMoneyRewardModifier, true, source, damage)
this.scene.applyModifiers(DamageMoneyRewardModifier, true, source, damage);
}
if (source.turnData.hitsLeft === 1) {
@ -1716,9 +1716,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
if (!preventEndure && this.hp - damage <= 0) {
if(this.hp >= 1 && this.getTag(BattlerTagType.ENDURING))
surviveDamage.value = this.lapseTag(BattlerTagType.ENDURING)
surviveDamage.value = this.lapseTag(BattlerTagType.ENDURING);
else if (this.hp > 1 && this.getTag(BattlerTagType.STURDY))
surviveDamage.value = this.lapseTag(BattlerTagType.STURDY)
surviveDamage.value = this.lapseTag(BattlerTagType.STURDY);
if (!surviveDamage.value)
this.scene.applyModifiers(SurviveDamageModifier, this.isPlayer(), this, surviveDamage);
if (surviveDamage.value)
@ -1844,7 +1844,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
return false;
const tags = this.summonData.tags;
const tagsToRemove = tags.filter(t => tagFilter(t));
for (let tag of tagsToRemove) {
for (const tag of tagsToRemove) {
tag.turnCount = 0;
tag.onRemove(this);
tags.splice(tags.indexOf(tag), 1);
@ -1865,9 +1865,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
transferSummon(source: Pokemon): void {
const battleStats = Utils.getEnumValues(BattleStat);
for (let stat of battleStats)
for (const stat of battleStats)
this.summonData.battleStats[stat] = source.summonData.battleStats[stat];
for (let tag of source.summonData.tags)
for (const tag of source.summonData.tags)
this.summonData.tags.push(tag);
if (this instanceof PlayerPokemon && source.summonData.battleStats.find(bs => bs === 6))
this.scene.validateAchv(achvs.TRANSFER_MAX_BATTLE_STAT);
@ -1992,7 +1992,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const key = this.getSpeciesForm().getCryKey(this.formIndex);
let i = 0;
let rate = 0.85;
let cry = this.scene.playSound(key, { rate: rate }) as AnySound;
const cry = this.scene.playSound(key, { rate: rate }) as AnySound;
const sprite = this.getSprite();
const tintSprite = this.getTintSprite();
let duration = cry.totalDuration * 1000;
@ -2090,7 +2090,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
case StatusEffect.POISON:
case StatusEffect.TOXIC:
// Check if the Pokemon is immune to Poison/Toxic or if the source pokemon is canceling the immunity
let poisonImmunity = types.map(defType => {
const poisonImmunity = types.map(defType => {
// Check if the Pokemon is not immune to Poison/Toxic
if (defType !== Type.POISON && defType !== Type.STEEL)
return false;
@ -2104,7 +2104,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
}
return true;
})
});
if (this.isOfType(Type.POISON) || this.isOfType(Type.STEEL)) {
if (poisonImmunity.includes(true))
@ -2210,7 +2210,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
this.resetBattleData();
this.resetBattleSummonData();
if (this.summonDataPrimer) {
for (let k of Object.keys(this.summonData)) {
for (const k of Object.keys(this.summonData)) {
if (this.summonDataPrimer[k])
this.summonData[k] = this.summonDataPrimer[k];
}
@ -2357,7 +2357,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
for (let f = 0; f < 2; f++) {
const variantColors = variantColorCache[!f ? spriteKey : backSpriteKey];
let variantColorSet = new Map<integer, integer[]>();
const variantColorSet = new Map<integer, integer[]>();
if (this.shiny && variantColors && variantColors[this.variant]) {
Object.keys(variantColors[this.variant]).forEach(k => {
variantColorSet.set(Utils.rgbaToInt(Array.from(Object.values(Utils.rgbHexToRgba(k)))), Array.from(Object.values(Utils.rgbHexToRgba(variantColors[this.variant][k]))));
@ -2396,7 +2396,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const fusionPixelColors = [];
for (let f = 0; f < 2; f++) {
const variantColors = variantColorCache[!f ? fusionSpriteKey : fusionBackSpriteKey];
let variantColorSet = new Map<integer, integer[]>();
const variantColorSet = new Map<integer, integer[]>();
if (this.fusionShiny && variantColors && variantColors[this.fusionVariant]) {
Object.keys(variantColors[this.fusionVariant]).forEach(k => {
variantColorSet.set(Utils.rgbaToInt(Array.from(Object.values(Utils.rgbHexToRgba(k)))), Array.from(Object.values(Utils.rgbHexToRgba(variantColors[this.fusionVariant][k]))));
@ -2467,9 +2467,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
mappedColors.forEach((values: integer[], key: integer) => {
const keyColor = rgbaColors.get(key);
const valueColors = values.map(v => rgbaColors.get(v));
let color = keyColor.slice(0);
const color = keyColor.slice(0);
let count = paletteColors.get(key);
for (let value of values) {
for (const value of values) {
const valueCount = paletteColors.get(value);
if (!valueCount)
continue;
@ -2488,7 +2488,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
}
paletteColors.delete(key);
for (let value of values) {
for (const value of values) {
paletteColors.delete(value);
if (mappedColors.has(value))
mappedColors.delete(value);
@ -2500,7 +2500,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
keys = Array.from(paletteColors.keys()).sort((a: integer, b: integer) => paletteColors.get(a) < paletteColors.get(b) ? 1 : -1);
} while (mappedColors.size);
return keys.map(c => Object.values(rgbaFromArgb(c)))
return keys.map(c => Object.values(rgbaFromArgb(c)));
}
);
@ -2519,7 +2519,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const paletteIndex = Math.min(paletteDeltas[sc].findIndex(pd => pd === delta), fusionPalette.length - 1);
if (delta < 255) {
const ratio = easeFunc(delta / 255);
let color = [ 0, 0, 0, fusionSpriteColors[sc][3] ];
const color = [ 0, 0, 0, fusionSpriteColors[sc][3] ];
for (let c = 0; c < 3; c++)
color[c] = Math.round((fusionSpriteColors[sc][c] * ratio) + (fusionPalette[paletteIndex][c] * (1 - ratio)));
fusionSpriteColors[sc] = color;
@ -2602,10 +2602,10 @@ export class PlayerPokemon extends Pokemon {
this.compatibleTms = [];
const tms = Object.keys(tmSpecies);
for (let tm of tms) {
for (const tm of tms) {
const moveId = parseInt(tm) as Moves;
let compatible = false;
for (let p of tmSpecies[tm]) {
for (const p of tmSpecies[tm]) {
if (Array.isArray(p)) {
if (p[0] === this.species.speciesId || (this.fusionSpecies && p[0] === this.fusionSpecies.speciesId) && p.slice(1).indexOf(this.species.forms[this.formIndex]) > -1) {
compatible = true;
@ -2679,7 +2679,7 @@ export class PlayerPokemon extends Pokemon {
});
} else {
this.friendship = Math.max(this.friendship + amount.value, 0);
for (let sd of starterData)
for (const sd of starterData)
sd.friendship = Math.max((sd.friendship || 0) + starterAmount.value, 0);
}
}
@ -2716,8 +2716,8 @@ export class PlayerPokemon extends Pokemon {
}
this.scene.ui.setMode(Mode.MESSAGE).then(() => resolve());
}, PartyUiHandler.FilterFainted)
})
}, PartyUiHandler.FilterFainted);
});
}
getPossibleEvolution(evolution: SpeciesFormEvolution): Promise<Pokemon> {
@ -2787,7 +2787,7 @@ export class PlayerPokemon extends Pokemon {
private handleSpecialEvolutions(evolution: SpeciesFormEvolution) {
const isFusion = evolution instanceof FusionSpeciesFormEvolution;
const evoSpecies = (!isFusion ? this.species : this.fusionSpecies)
const evoSpecies = (!isFusion ? this.species : this.fusionSpecies);
if (evoSpecies.speciesId === Species.NINCADA && evolution.speciesId === Species.NINJASK) {
const newEvolution = pokemonEvolutions[evoSpecies.speciesId][1];
@ -2902,7 +2902,7 @@ export class PlayerPokemon extends Pokemon {
const fusedPartyMemberHeldModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier
&& (m as PokemonHeldItemModifier).pokemonId === pokemon.id, true) as PokemonHeldItemModifier[];
const transferModifiers: Promise<boolean>[] = [];
for (let modifier of fusedPartyMemberHeldModifiers)
for (const modifier of fusedPartyMemberHeldModifiers)
transferModifiers.push(this.scene.tryTransferHeldItemModifier(modifier, this, true, false, true, true));
Promise.allSettled(transferModifiers).then(() => {
this.scene.updateModifiers(true, true).then(() => {
@ -2929,7 +2929,7 @@ export class PlayerPokemon extends Pokemon {
/** Returns a deep copy of this Pokemon's moveset array */
copyMoveset(): PokemonMove[] {
let newMoveset = [];
const newMoveset = [];
this.moveset.forEach(move =>
newMoveset.push(new PokemonMove(move.moveId, 0, move.ppUp, move.virtual)));
@ -3061,7 +3061,7 @@ export class EnemyPokemon extends Pokemon {
case AiType.SMART:
const moveScores = movePool.map(() => 0);
const moveTargets = Object.fromEntries(movePool.map(m => [ m.moveId, this.getNextTargets(m.moveId) ]));
for (let m in movePool) {
for (const m in movePool) {
const pokemonMove = movePool[m];
const move = pokemonMove.getMove();
@ -3070,9 +3070,9 @@ export class EnemyPokemon extends Pokemon {
const moveType = variableType.value as Type;
let moveScore = moveScores[m];
let targetScores: integer[] = [];
const targetScores: integer[] = [];
for (let mt of moveTargets[move.id]) {
for (const mt of moveTargets[move.id]) {
// Prevent a target score from being calculated when the target is whoever attacks the user
if (mt === BattlerIndex.ATTACKER)
break;
@ -3252,7 +3252,7 @@ export class EnemyPokemon extends Pokemon {
damage = Math.min(damage, this.hp - 1);
}
let ret = super.damage(damage, ignoreSegments, preventEndure);
const ret = super.damage(damage, ignoreSegments, preventEndure);
if (this.isBoss()) {
if (ignoreSegments) {
@ -3284,14 +3284,14 @@ export class EnemyPokemon extends Pokemon {
const statWeights = new Array().fill(battleStats.length).filter((bs: BattleStat) => this.summonData.battleStats[bs] < 6).map((bs: BattleStat) => this.getStat(bs + 1));
const statThresholds: integer[] = [];
let totalWeight = 0;
for (let bs of battleStats) {
for (const bs of battleStats) {
totalWeight += statWeights[bs];
statThresholds.push(totalWeight);
}
const randInt = Utils.randSeedInt(totalWeight);
for (let bs of battleStats) {
for (const bs of battleStats) {
if (randInt < statThresholds[bs]) {
boostedStat = bs;
break;
@ -3319,8 +3319,8 @@ export class EnemyPokemon extends Pokemon {
heal(amount: integer): integer {
if (this.isBoss()) {
let amountRatio = amount / this.getMaxHp();
let segmentBypassCount = Math.floor(amountRatio / (1 / this.bossSegments));
const amountRatio = amount / this.getMaxHp();
const segmentBypassCount = Math.floor(amountRatio / (1 / this.bossSegments));
const segmentSize = this.getMaxHp() / this.bossSegments;
for (let s = 1; s < this.bossSegments; s++) {
const hpThreshold = segmentSize * s;

View File

@ -1,17 +1,17 @@
import BattleScene from "../battle-scene";
import { pokemonPrevolutions } from "../data/pokemon-evolutions";
import PokemonSpecies, { getPokemonSpecies } from "../data/pokemon-species";
import { TrainerConfig, TrainerPartyCompoundTemplate, TrainerPartyTemplate, TrainerPoolTier, TrainerSlot, trainerConfigs, trainerPartyTemplates } from "../data/trainer-config";
import { PartyMemberStrength } from "../data/enums/party-member-strength";
import { TrainerType } from "../data/enums/trainer-type";
import { EnemyPokemon } from "./pokemon";
import * as Utils from "../utils";
import { PersistentModifier } from "../modifier/modifier";
import { trainerNamePools } from "../data/trainer-names";
import { ArenaTagType } from "#app/data/enums/arena-tag-type";
import { ArenaTag, ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag";
import {getIsInitialized, initI18n} from "#app/plugins/i18n";
import i18next from "i18next";
import BattleScene from '../battle-scene';
import { pokemonPrevolutions } from '../data/pokemon-evolutions';
import PokemonSpecies, { getPokemonSpecies } from '../data/pokemon-species';
import { TrainerConfig, TrainerPartyCompoundTemplate, TrainerPartyTemplate, TrainerPoolTier, TrainerSlot, trainerConfigs, trainerPartyTemplates } from '../data/trainer-config';
import { PartyMemberStrength } from '../data/enums/party-member-strength';
import { TrainerType } from '../data/enums/trainer-type';
import { EnemyPokemon } from './pokemon';
import * as Utils from '../utils';
import { PersistentModifier } from '../modifier/modifier';
import { trainerNamePools } from '../data/trainer-names';
import { ArenaTagType } from '#app/data/enums/arena-tag-type';
import { ArenaTag, ArenaTagSide, ArenaTrapTag } from '#app/data/arena-tag';
import {getIsInitialized, initI18n} from '#app/plugins/i18n';
import i18next from 'i18next';
export enum TrainerVariant {
DEFAULT,
@ -179,7 +179,7 @@ export default class Trainer extends Phaser.GameObjects.Container {
const partyTemplate = this.getPartyTemplate();
const difficultyWaveIndex = this.scene.gameMode.getWaveForDifficulty(waveIndex);
let baseLevel = 1 + difficultyWaveIndex / 2 + Math.pow(difficultyWaveIndex / 25, 2);
const baseLevel = 1 + difficultyWaveIndex / 2 + Math.pow(difficultyWaveIndex / 25, 2);
if (this.isDouble() && partyTemplate.size < 2)
partyTemplate.size = 2;
@ -243,7 +243,7 @@ export default class Trainer extends Phaser.GameObjects.Container {
let offset = 0;
if (template instanceof TrainerPartyCompoundTemplate) {
for (let innerTemplate of template.templates) {
for (const innerTemplate of template.templates) {
if (offset + innerTemplate.size > index)
break;
offset += innerTemplate.size;
@ -267,7 +267,7 @@ export default class Trainer extends Phaser.GameObjects.Container {
let species: PokemonSpecies;
if (this.config.speciesPools) {
const tierValue = Utils.randSeedInt(512);
let tier = tierValue >= 156 ? TrainerPoolTier.COMMON : tierValue >= 32 ? TrainerPoolTier.UNCOMMON : tierValue >= 6 ? TrainerPoolTier.RARE : tierValue >= 1 ? TrainerPoolTier.SUPER_RARE : TrainerPoolTier.ULTRA_RARE
let tier = tierValue >= 156 ? TrainerPoolTier.COMMON : tierValue >= 32 ? TrainerPoolTier.UNCOMMON : tierValue >= 6 ? TrainerPoolTier.RARE : tierValue >= 1 ? TrainerPoolTier.SUPER_RARE : TrainerPoolTier.ULTRA_RARE;
console.log(TrainerPoolTier[tier]);
while (!this.config.speciesPools.hasOwnProperty(tier) || !this.config.speciesPools[tier].length) {
console.log(`Downgraded trainer Pokemon rarity tier from ${TrainerPoolTier[tier]} to ${TrainerPoolTier[tier - 1]}`);
@ -304,7 +304,7 @@ export default class Trainer extends Phaser.GameObjects.Container {
}
if (retry && (attempt || 0) < 10) {
console.log('Rerolling party member...')
console.log('Rerolling party member...');
ret = this.genNewPartyMemberSpecies(level, strength, (attempt || 0) + 1);
}
@ -321,7 +321,7 @@ export default class Trainer extends Phaser.GameObjects.Container {
const playerField = this.scene.getPlayerField();
let score = 0;
let ret: [integer, integer];
for (let playerPokemon of playerField) {
for (const playerPokemon of playerField) {
score += p.getMatchupScore(playerPokemon);
if (playerPokemon.species.legendary)
score /= 2;

View File

@ -1,15 +1,15 @@
import BattleScene from "./battle-scene";
import * as Utils from "./utils";
import { SpeciesFormKey } from "./data/pokemon-species";
import { achvs } from "./system/achv";
import { SpeciesFormChange, getSpeciesFormChangeMessage } from "./data/pokemon-forms";
import { EndEvolutionPhase, EvolutionPhase } from "./evolution-phase";
import Pokemon, { EnemyPokemon, PlayerPokemon } from "./field/pokemon";
import { Mode } from "./ui/ui";
import PartyUiHandler from "./ui/party-ui-handler";
import { BattleSpec } from "./enums/battle-spec";
import { BattlePhase, MovePhase, PokemonHealPhase } from "./phases";
import { getTypeRgb } from "./data/type";
import BattleScene from './battle-scene';
import * as Utils from './utils';
import { SpeciesFormKey } from './data/pokemon-species';
import { achvs } from './system/achv';
import { SpeciesFormChange, getSpeciesFormChangeMessage } from './data/pokemon-forms';
import { EndEvolutionPhase, EvolutionPhase } from './evolution-phase';
import Pokemon, { EnemyPokemon, PlayerPokemon } from './field/pokemon';
import { Mode } from './ui/ui';
import PartyUiHandler from './ui/party-ui-handler';
import { BattleSpec } from './enums/battle-spec';
import { BattlePhase, MovePhase, PokemonHealPhase } from './phases';
import { getTypeRgb } from './data/type';
export class FormChangePhase extends EvolutionPhase {
private formChange: SpeciesFormChange;
@ -147,7 +147,7 @@ export class FormChangePhase extends EvolutionPhase {
});
});
}
})
});
}
});
});
@ -196,7 +196,7 @@ export class QuietFormChangePhase extends BattlePhase {
}
const getPokemonSprite = () => {
const sprite = this.scene.addPokemonSprite(this.pokemon, this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y, `pkmn__sub`);
const sprite = this.scene.addPokemonSprite(this.pokemon, this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y, 'pkmn__sub');
sprite.setOrigin(0.5, 1);
sprite.play(this.pokemon.getBattleSpriteKey()).stop();
sprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(this.pokemon.getTeraType()) });
@ -207,7 +207,7 @@ export class QuietFormChangePhase extends BattlePhase {
});
this.scene.field.add(sprite);
return sprite;
}
};
const [ pokemonTintSprite, pokemonFormTintSprite ] = [ getPokemonSprite(), getPokemonSprite() ];

View File

@ -1,10 +1,10 @@
import { fixedBattles } from "./battle";
import BattleScene from "./battle-scene";
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 Utils from "./utils";
import { fixedBattles } from './battle';
import BattleScene from './battle-scene';
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 Utils from './utils';
import * as Overrides from './overrides';
export enum GameModes {

View File

@ -1,11 +1,11 @@
import Phaser, {Time} from "phaser";
import * as Utils from "./utils";
import Phaser, {Time} from 'phaser';
import * as Utils from './utils';
import {initTouchControls} from './touch-controls';
import pad_generic from "./configs/pad_generic";
import pad_unlicensedSNES from "./configs/pad_unlicensedSNES";
import pad_xbox360 from "./configs/pad_xbox360";
import pad_dualshock from "./configs/pad_dualshock";
import {Button} from "./enums/buttons";
import pad_generic from './configs/pad_generic';
import pad_unlicensedSNES from './configs/pad_unlicensedSNES';
import pad_xbox360 from './configs/pad_xbox360';
import pad_dualshock from './configs/pad_dualshock';
import {Button} from './enums/buttons';
export interface GamepadMapping {
[key: string]: number;
@ -79,7 +79,7 @@ export class InputsController {
pressTime: false,
isPressed: false,
source: null,
}
};
}
// We don't want the menu key to be repeated
delete this.interactions[Button.MENU];
@ -98,8 +98,8 @@ export class InputsController {
init(): void {
this.events = new Phaser.Events.EventEmitter();
this.scene.game.events.on(Phaser.Core.Events.BLUR, () => {
this.loseFocus()
})
this.loseFocus();
});
if (typeof this.scene.input.gamepad !== 'undefined') {
this.scene.input.gamepad.on('connected', function (thisGamepad) {
@ -199,7 +199,7 @@ export class InputsController {
* that the gamepad controls are correctly mapped to in-game actions.
*/
setupGamepad(thisGamepad: Phaser.Input.Gamepad.Gamepad): void {
let gamepadID = thisGamepad.id.toLowerCase();
const gamepadID = thisGamepad.id.toLowerCase();
const mappedPad = this.mapGamepad(gamepadID);
this.player['mapping'] = mappedPad.gamepadMapping;
}
@ -353,7 +353,7 @@ export class InputsController {
for (const b of Utils.getEnumValues(Button)) {
const keys: Phaser.Input.Keyboard.Key[] = [];
if (keyConfig.hasOwnProperty(b)) {
for (let k of keyConfig[b])
for (const k of keyConfig[b])
keys.push(this.scene.input.keyboard.addKey(k, false));
mobileKeyConfig[Button[b]] = keys[0];
}

View File

@ -1,14 +1,14 @@
import { GachaType } from "./data/egg";
import { Biome } from "./data/enums/biome";
import { TrainerType } from "./data/enums/trainer-type";
import { trainerConfigs } from "./data/trainer-config";
import { getBiomeHasProps } from "./field/arena";
import CacheBustedLoaderPlugin from "./plugins/cache-busted-loader-plugin";
import { SceneBase } from "./scene-base";
import { WindowVariant, getWindowVariantSuffix } from "./ui/ui-theme";
import { isMobile } from "./touch-controls";
import * as Utils from "./utils";
import { initI18n } from "./plugins/i18n";
import { GachaType } from './data/egg';
import { Biome } from './data/enums/biome';
import { TrainerType } from './data/enums/trainer-type';
import { trainerConfigs } from './data/trainer-config';
import { getBiomeHasProps } from './field/arena';
import CacheBustedLoaderPlugin from './plugins/cache-busted-loader-plugin';
import { SceneBase } from './scene-base';
import { WindowVariant, getWindowVariantSuffix } from './ui/ui-theme';
import { isMobile } from './touch-controls';
import * as Utils from './utils';
import { initI18n } from './plugins/i18n';
export class LoadingScene extends SceneBase {
constructor() {
@ -35,7 +35,7 @@ export class LoadingScene extends SceneBase {
this.loadImage('candy_overlay', 'ui');
this.loadImage('cursor', 'ui');
this.loadImage('cursor_reverse', 'ui');
for (let wv of Utils.getEnumValues(WindowVariant)) {
for (const wv of Utils.getEnumValues(WindowVariant)) {
for (let w = 1; w <= 5; w++)
this.loadImage(`window_${w}${getWindowVariantSuffix(wv)}`, 'ui/windows');
}
@ -100,7 +100,7 @@ export class LoadingScene extends SceneBase {
this.loadImage('summary_bg', 'ui');
this.loadImage('summary_overlay_shiny', 'ui');
this.loadImage('summary_profile', 'ui');
this.loadImage('summary_profile_prompt_z', 'ui') // The pixel Z button prompt
this.loadImage('summary_profile_prompt_z', 'ui'); // The pixel Z button prompt
this.loadImage('summary_profile_prompt_a', 'ui'); // The pixel A button prompt
this.loadImage('summary_profile_ability', 'ui'); // Pixel text 'ABILITY'
this.loadImage('summary_profile_passive', 'ui'); // Pixel text 'PASSIVE'
@ -174,8 +174,8 @@ export class LoadingScene extends SceneBase {
this.loadAtlas('c_rival_f', 'character', 'rival_f');
// Load pokemon-related images
this.loadImage(`pkmn__back__sub`, 'pokemon/back', 'sub.png');
this.loadImage(`pkmn__sub`, 'pokemon', 'sub.png');
this.loadImage('pkmn__back__sub', 'pokemon/back', 'sub.png');
this.loadImage('pkmn__sub', 'pokemon', 'sub.png');
this.loadAtlas('battle_stats', 'effects');
this.loadAtlas('shiny', 'effects');
this.loadAtlas('shiny_2', 'effects');
@ -310,8 +310,8 @@ export class LoadingScene extends SceneBase {
y: height / 2 - 24,
text: '0%',
style: {
font: "72px emerald",
color: "#ffffff",
font: '72px emerald',
color: '#ffffff',
},
});
percentText.setOrigin(0.5, 0.5);
@ -319,10 +319,10 @@ export class LoadingScene extends SceneBase {
const assetText = this.make.text({
x: width / 2,
y: height / 2 + 48,
text: "",
text: '',
style: {
font: "48px emerald",
color: "#ffffff",
font: '48px emerald',
color: '#ffffff',
},
});
assetText.setOrigin(0.5, 0.5);
@ -331,7 +331,7 @@ export class LoadingScene extends SceneBase {
intro.setOrigin(0, 0);
intro.setScale(3);
this.load.on("progress", (value: string) => {
this.load.on('progress', (value: string) => {
const parsedValue = parseFloat(value);
percentText.setText(`${Math.floor(parsedValue * 100)}%`);
progressBar.clear();
@ -339,7 +339,7 @@ export class LoadingScene extends SceneBase {
progressBar.fillRect(width / 2 - 320, 360, 640 * parsedValue, 64);
});
this.load.on("fileprogress", file => {
this.load.on('fileprogress', file => {
assetText.setText(`Loading asset: ${file.key}`);
});
@ -386,7 +386,7 @@ export class LoadingScene extends SceneBase {
}
});
this.load.on("complete", () => destroyLoadingAssets());
this.load.on('complete', () => destroyLoadingAssets());
}
get gameHeight() {
@ -398,6 +398,6 @@ export class LoadingScene extends SceneBase {
}
async create() {
this.scene.start("battle");
this.scene.start('battle');
}
}

View File

@ -1,6 +1,6 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const abilityTriggers: SimpleTranslationEntries = {
'blockRecoilDamage' : `{{pokemonName}} wurde durch {{abilityName}}\nvor Rückstoß geschützt!`,
'badDreams': `{{pokemonName}} ist in einem Alptraum gefangen!`,
'blockRecoilDamage' : '{{pokemonName}} wurde durch {{abilityName}}\nvor Rückstoß geschützt!',
'badDreams': '{{pokemonName}} ist in einem Alptraum gefangen!',
} as const;

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const battleMessageUiHandler: SimpleTranslationEntries = {
"ivBest": "Sensationell",
"ivFantastic": "Fantastisch",
"ivVeryGood": "Sehr Gut",
"ivPrettyGood": "Gut",
"ivDecent": "Nicht Übel",
"ivNoGood": "Schlecht",
'ivBest': 'Sensationell',
'ivFantastic': 'Fantastisch',
'ivVeryGood': 'Sehr Gut',
'ivPrettyGood': 'Gut',
'ivDecent': 'Nicht Übel',
'ivNoGood': 'Schlecht',
} as const;

View File

@ -1,56 +1,56 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const battle: SimpleTranslationEntries = {
"bossAppeared": "{{bossName}} erscheint.",
"trainerAppeared": "{{trainerName}}\nmöchte kämpfen!",
"trainerAppearedDouble": "{{trainerName}}\nmöchten kämpfen!",
"singleWildAppeared": "Ein wildes {{pokemonName}} erscheint!",
"multiWildAppeared": "Ein wildes {{pokemonName1}}\nund {{pokemonName2}} erscheinen!",
"playerComeBack": "Komm zurück, {{pokemonName}}!",
"trainerComeBack": "{{trainerName}} ruft {{pokemonName}} zurück!",
"playerGo": "Los! {{pokemonName}}!",
"trainerGo": "{{trainerName}} sendet {{pokemonName}} raus!",
"switchQuestion": "Möchtest du\n{{pokemonName}} auswechseln?",
"trainerDefeated": `{{trainerName}}\nwurde besiegt!`,
"pokemonCaught": "{{pokemonName}} wurde gefangen!",
"pokemon": "Pokémon",
"sendOutPokemon": "Los, {{pokemonName}}!",
"hitResultCriticalHit": "Ein Volltreffer!",
"hitResultSuperEffective": "Das ist sehr effektiv!",
"hitResultNotVeryEffective": "Das ist nicht sehr effektiv…",
"hitResultNoEffect": "Es hat keine Wirkung auf {{pokemonName}}…",
"hitResultOneHitKO": "Ein K.O.-Treffer!",
"attackFailed": "Es ist fehlgeschlagen!",
"attackHitsCount": `{{count}}-mal getroffen!`,
"expGain": "{{pokemonName}} erhält\n{{exp}} Erfahrungspunkte!",
"levelUp": "{{pokemonName}} erreicht\nLv. {{level}}!",
"learnMove": "{{pokemonName}} erlernt\n{{moveName}}!",
"learnMovePrompt": "{{pokemonName}} versucht, {{moveName}} zu erlernen.",
"learnMoveLimitReached": "Aber {{pokemonName}} kann nur\nmaximal vier Attacken erlernen.",
"learnMoveReplaceQuestion": "Soll eine bekannte Attacke durch\n{{moveName}} ersetzt werden?",
"learnMoveStopTeaching": "{{moveName}} nicht\nerlernen?",
"learnMoveNotLearned": "{{pokemonName}} hat\n{{moveName}} nicht erlernt.",
"learnMoveForgetQuestion": "Welche Attacke soll vergessen werden?",
"learnMoveForgetSuccess": "{{pokemonName}} hat\n{{moveName}} vergessen.",
"countdownPoof": "@d{32}Eins, @d{15}zwei @d{15}und@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}schwupp!",
"learnMoveAnd": "Und…",
"levelCapUp": "Das Levelbeschränkung\nwurde auf {{levelCap}} erhöht!",
"moveNotImplemented": "{{moveName}} ist noch nicht implementiert und kann nicht ausgewählt werden.",
"moveNoPP": "Es sind keine AP für\ndiese Attacke mehr übrig!",
"moveDisabled": "{{moveName}} ist deaktiviert!",
"noPokeballForce": "Eine unsichtbare Kraft\nverhindert die Nutzung von Pokébällen.",
"noPokeballTrainer": "Du kannst das Pokémon\neines anderen Trainers nicht fangen!",
"noPokeballMulti": "Du kannst erst einen Pokéball werfen,\nwenn nur noch ein Pokémon übrig ist!",
"noPokeballStrong": "Das Ziel-Pokémon ist zu stark, um gefangen zu werden!\nDu musst es zuerst schwächen!",
"noEscapeForce": "Eine unsichtbare Kraft\nverhindert die Flucht.",
"noEscapeTrainer": "Du kannst nicht\naus einem Trainerkampf fliehen!",
"noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nverhindert {{escapeVerb}}!",
"runAwaySuccess": "Du bist entkommen!",
"runAwayCannotEscape": 'Flucht gescheitert!',
"escapeVerbSwitch": "auswechseln",
"escapeVerbFlee": "flucht",
"skipItemQuestion": "Bist du sicher, dass du kein Item nehmen willst?",
"notDisabled": "{{pokemonName}}'s {{moveName}} ist\nnicht mehr deaktiviert!",
"eggHatching": "Oh?",
"ivScannerUseQuestion": "IV-Scanner auf {{pokemonName}} benutzen?"
'bossAppeared': '{{bossName}} erscheint.',
'trainerAppeared': '{{trainerName}}\nmöchte kämpfen!',
'trainerAppearedDouble': '{{trainerName}}\nmöchten kämpfen!',
'singleWildAppeared': 'Ein wildes {{pokemonName}} erscheint!',
'multiWildAppeared': 'Ein wildes {{pokemonName1}}\nund {{pokemonName2}} erscheinen!',
'playerComeBack': 'Komm zurück, {{pokemonName}}!',
'trainerComeBack': '{{trainerName}} ruft {{pokemonName}} zurück!',
'playerGo': 'Los! {{pokemonName}}!',
'trainerGo': '{{trainerName}} sendet {{pokemonName}} raus!',
'switchQuestion': 'Möchtest du\n{{pokemonName}} auswechseln?',
'trainerDefeated': '{{trainerName}}\nwurde besiegt!',
'pokemonCaught': '{{pokemonName}} wurde gefangen!',
'pokemon': 'Pokémon',
'sendOutPokemon': 'Los, {{pokemonName}}!',
'hitResultCriticalHit': 'Ein Volltreffer!',
'hitResultSuperEffective': 'Das ist sehr effektiv!',
'hitResultNotVeryEffective': 'Das ist nicht sehr effektiv…',
'hitResultNoEffect': 'Es hat keine Wirkung auf {{pokemonName}}…',
'hitResultOneHitKO': 'Ein K.O.-Treffer!',
'attackFailed': 'Es ist fehlgeschlagen!',
'attackHitsCount': '{{count}}-mal getroffen!',
'expGain': '{{pokemonName}} erhält\n{{exp}} Erfahrungspunkte!',
'levelUp': '{{pokemonName}} erreicht\nLv. {{level}}!',
'learnMove': '{{pokemonName}} erlernt\n{{moveName}}!',
'learnMovePrompt': '{{pokemonName}} versucht, {{moveName}} zu erlernen.',
'learnMoveLimitReached': 'Aber {{pokemonName}} kann nur\nmaximal vier Attacken erlernen.',
'learnMoveReplaceQuestion': 'Soll eine bekannte Attacke durch\n{{moveName}} ersetzt werden?',
'learnMoveStopTeaching': '{{moveName}} nicht\nerlernen?',
'learnMoveNotLearned': '{{pokemonName}} hat\n{{moveName}} nicht erlernt.',
'learnMoveForgetQuestion': 'Welche Attacke soll vergessen werden?',
'learnMoveForgetSuccess': '{{pokemonName}} hat\n{{moveName}} vergessen.',
'countdownPoof': '@d{32}Eins, @d{15}zwei @d{15}und@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}schwupp!',
'learnMoveAnd': 'Und…',
'levelCapUp': 'Das Levelbeschränkung\nwurde auf {{levelCap}} erhöht!',
'moveNotImplemented': '{{moveName}} ist noch nicht implementiert und kann nicht ausgewählt werden.',
'moveNoPP': 'Es sind keine AP für\ndiese Attacke mehr übrig!',
'moveDisabled': '{{moveName}} ist deaktiviert!',
'noPokeballForce': 'Eine unsichtbare Kraft\nverhindert die Nutzung von Pokébällen.',
'noPokeballTrainer': 'Du kannst das Pokémon\neines anderen Trainers nicht fangen!',
'noPokeballMulti': 'Du kannst erst einen Pokéball werfen,\nwenn nur noch ein Pokémon übrig ist!',
'noPokeballStrong': 'Das Ziel-Pokémon ist zu stark, um gefangen zu werden!\nDu musst es zuerst schwächen!',
'noEscapeForce': 'Eine unsichtbare Kraft\nverhindert die Flucht.',
'noEscapeTrainer': 'Du kannst nicht\naus einem Trainerkampf fliehen!',
'noEscapePokemon': '{{pokemonName}}\'s {{moveName}}\nverhindert {{escapeVerb}}!',
'runAwaySuccess': 'Du bist entkommen!',
'runAwayCannotEscape': 'Flucht gescheitert!',
'escapeVerbSwitch': 'auswechseln',
'escapeVerbFlee': 'flucht',
'skipItemQuestion': 'Bist du sicher, dass du kein Item nehmen willst?',
'notDisabled': '{{pokemonName}}\'s {{moveName}} ist\nnicht mehr deaktiviert!',
'eggHatching': 'Oh?',
'ivScannerUseQuestion': 'IV-Scanner auf {{pokemonName}} benutzen?'
} as const;

View File

@ -1,48 +1,48 @@
import { BerryTranslationEntries } from "#app/plugins/i18n";
import { BerryTranslationEntries } from '#app/plugins/i18n';
export const berry: BerryTranslationEntries = {
"SITRUS": {
name: "Tsitrubeere",
effect: "Stellt 25% der KP wieder her, wenn die KP unter 50% sind"
'SITRUS': {
name: 'Tsitrubeere',
effect: 'Stellt 25% der KP wieder her, wenn die KP unter 50% sind'
},
"LUM": {
name: "Prunusbeere",
effect: "Heilt jede nichtflüchtige Statusveränderung und Verwirrung"
'LUM': {
name: 'Prunusbeere',
effect: 'Heilt jede nichtflüchtige Statusveränderung und Verwirrung'
},
"ENIGMA": {
name: "Enigmabeere",
effect: "Stellt 25% der KP wieder her, wenn der Träger von einer sehr effektiven Attacke getroffen wird",
'ENIGMA': {
name: 'Enigmabeere',
effect: 'Stellt 25% der KP wieder her, wenn der Träger von einer sehr effektiven Attacke getroffen wird',
},
"LIECHI": {
name: "Lydzibeere",
effect: "Steigert den Angriff, wenn die KP unter 25% sind"
'LIECHI': {
name: 'Lydzibeere',
effect: 'Steigert den Angriff, wenn die KP unter 25% sind'
},
"GANLON": {
name: "Linganbeere",
effect: "Steigert die Verteidigung, wenn die KP unter 25% sind"
'GANLON': {
name: 'Linganbeere',
effect: 'Steigert die Verteidigung, wenn die KP unter 25% sind'
},
"PETAYA": {
name: "Tahaybeere",
effect: "Steigert den Spezial-Angriff, wenn die KP unter 25% sind"
'PETAYA': {
name: 'Tahaybeere',
effect: 'Steigert den Spezial-Angriff, wenn die KP unter 25% sind'
},
"APICOT": {
name: "Apikobeere",
effect: "Steigert die Spezial-Verteidigung, wenn die KP unter 25% sind"
'APICOT': {
name: 'Apikobeere',
effect: 'Steigert die Spezial-Verteidigung, wenn die KP unter 25% sind'
},
"SALAC": {
name: "Salkabeere",
effect: "Steigert die Initiative, wenn die KP unter 25% sind"
'SALAC': {
name: 'Salkabeere',
effect: 'Steigert die Initiative, wenn die KP unter 25% sind'
},
"LANSAT": {
name: "Lansatbeere",
effect: "Erhöht die Volltrefferchance, wenn die KP unter 25% sind"
'LANSAT': {
name: 'Lansatbeere',
effect: 'Erhöht die Volltrefferchance, wenn die KP unter 25% sind'
},
"STARF": {
name: "Krambobeere",
effect: "Erhöht eine Statuswert stark, wenn die KP unter 25% sind"
'STARF': {
name: 'Krambobeere',
effect: 'Erhöht eine Statuswert stark, wenn die KP unter 25% sind'
},
"LEPPA": {
name: "Jonagobeere",
effect: "Stellt 10 AP für eine Attacke wieder her, wenn deren AP auf 0 fallen"
'LEPPA': {
name: 'Jonagobeere',
effect: 'Stellt 10 AP für eine Attacke wieder her, wenn deren AP auf 0 fallen'
},
} as const;

View File

@ -1,9 +1,9 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const commandUiHandler: SimpleTranslationEntries = {
"fight": "Kampf",
"ball": "Ball",
"pokemon": "Pokémon",
"run": "Fliehen",
"actionMessage": "Was soll\n{{pokemonName}} tun?",
'fight': 'Kampf',
'ball': 'Ball',
'pokemon': 'Pokémon',
'run': 'Fliehen',
'actionMessage': 'Was soll\n{{pokemonName}} tun?',
} as const;

View File

@ -1,26 +1,26 @@
import { ability } from "./ability";
import { abilityTriggers } from "./ability-trigger";
import { battle } from "./battle";
import { commandUiHandler } from "./command-ui-handler";
import { egg } from "./egg";
import { fightUiHandler } from "./fight-ui-handler";
import { growth } from "./growth";
import { menu } from "./menu";
import { menuUiHandler } from "./menu-ui-handler";
import { modifierType } from "./modifier-type";
import { move } from "./move";
import { nature } from "./nature";
import { pokeball } from "./pokeball";
import { pokemon } from "./pokemon";
import { pokemonInfo } from "./pokemon-info";
import { splashMessages } from "./splash-messages";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { titles, trainerClasses, trainerNames } from "./trainers";
import { tutorial } from "./tutorial";
import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
import { voucher } from "./voucher";
import { ability } from './ability';
import { abilityTriggers } from './ability-trigger';
import { battle } from './battle';
import { commandUiHandler } from './command-ui-handler';
import { egg } from './egg';
import { fightUiHandler } from './fight-ui-handler';
import { growth } from './growth';
import { menu } from './menu';
import { menuUiHandler } from './menu-ui-handler';
import { modifierType } from './modifier-type';
import { move } from './move';
import { nature } from './nature';
import { pokeball } from './pokeball';
import { pokemon } from './pokemon';
import { pokemonInfo } from './pokemon-info';
import { splashMessages } from './splash-messages';
import { starterSelectUiHandler } from './starter-select-ui-handler';
import { titles, trainerClasses, trainerNames } from './trainers';
import { tutorial } from './tutorial';
import { weather } from './weather';
import { battleMessageUiHandler } from './battle-message-ui-handler';
import { berry } from './berry';
import { voucher } from './voucher';
export const deConfig = {
ability: ability,
@ -48,4 +48,4 @@ export const deConfig = {
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
voucher: voucher,
}
};

View File

@ -1,21 +1,21 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const egg: SimpleTranslationEntries = {
"egg": "Ei",
"greatTier": "Selten",
"ultraTier": "Episch",
"masterTier": "Legendär",
"defaultTier": "Gewöhnlich",
"hatchWavesMessageSoon": "Man kann schon etwas hören! Es wird wohl bald schlüpfen!",
"hatchWavesMessageClose": "Manchmal bewegt es sich! Es braucht wohl noch ein Weilchen.",
"hatchWavesMessageNotClose": "Was wird da wohl schlüpfen? Es wird sicher noch lange dauern.",
"hatchWavesMessageLongTime": "Dieses Ei braucht sicher noch sehr viel Zeit.",
"gachaTypeLegendary": "Erhöhte Chance auf legendäre Eier",
"gachaTypeMove": "Erhöhte Chance auf Eier mit seltenen Attacken",
"gachaTypeShiny": "Erhöhte Chance auf schillernde Eier",
"selectMachine": "Wähle eine Maschine",
"notEnoughVouchers": "Du hast nicht genug Ei-Gutscheine!",
"tooManyEggs": "Du hast schon zu viele Eier!",
"pull": "Pull",
"pulls": "Pulls"
'egg': 'Ei',
'greatTier': 'Selten',
'ultraTier': 'Episch',
'masterTier': 'Legendär',
'defaultTier': 'Gewöhnlich',
'hatchWavesMessageSoon': 'Man kann schon etwas hören! Es wird wohl bald schlüpfen!',
'hatchWavesMessageClose': 'Manchmal bewegt es sich! Es braucht wohl noch ein Weilchen.',
'hatchWavesMessageNotClose': 'Was wird da wohl schlüpfen? Es wird sicher noch lange dauern.',
'hatchWavesMessageLongTime': 'Dieses Ei braucht sicher noch sehr viel Zeit.',
'gachaTypeLegendary': 'Erhöhte Chance auf legendäre Eier',
'gachaTypeMove': 'Erhöhte Chance auf Eier mit seltenen Attacken',
'gachaTypeShiny': 'Erhöhte Chance auf schillernde Eier',
'selectMachine': 'Wähle eine Maschine',
'notEnoughVouchers': 'Du hast nicht genug Ei-Gutscheine!',
'tooManyEggs': 'Du hast schon zu viele Eier!',
'pull': 'Pull',
'pulls': 'Pulls'
} as const;

View File

@ -1,7 +1,7 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const fightUiHandler: SimpleTranslationEntries = {
"pp": "AP",
"power": "Stärke",
"accuracy": "Genauigkeit",
'pp': 'AP',
'power': 'Stärke',
'accuracy': 'Genauigkeit',
} as const;

View File

@ -1,10 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const growth: SimpleTranslationEntries = {
"Erratic": "Unregelmäßig",
"Fast": "Schnell",
"Medium_Fast": "Schneller",
"Medium_Slow": "Langsamer",
"Slow": "Langsam",
"Fluctuating": "Schwankend"
'Erratic': 'Unregelmäßig',
'Fast': 'Schnell',
'Medium_Fast': 'Schneller',
'Medium_Slow': 'Langsamer',
'Slow': 'Langsam',
'Fluctuating': 'Schwankend'
} as const;

View File

@ -1,23 +1,23 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const menuUiHandler: SimpleTranslationEntries = {
"GAME_SETTINGS": 'Spieleinstellungen',
"ACHIEVEMENTS": "Erfolge",
"STATS": "Statistiken",
"VOUCHERS": "Gutscheine",
"EGG_LIST": "Eierliste",
"EGG_GACHA": "Eier-Gacha",
"MANAGE_DATA": "Daten verwalten",
"COMMUNITY": "Community",
"SAVE_AND_QUIT": "Speichern und Beenden",
"LOG_OUT": "Abmelden",
"slot": "Slot {{slotNumber}}",
"importSession": "Sitzung importieren",
"importSlotSelect": "Wähle einen Slot zum Importieren.",
"exportSession": "Sitzung exportieren",
"exportSlotSelect": "Wähle einen Slot zum Exportieren.",
"importData": "Daten importieren",
"exportData": "Daten exportieren",
"cancel": "Abbrechen",
"losingProgressionWarning": "Du wirst jeglichen Fortschritt seit Anfang dieses Kampfes verlieren. Fortfahren?"
'GAME_SETTINGS': 'Spieleinstellungen',
'ACHIEVEMENTS': 'Erfolge',
'STATS': 'Statistiken',
'VOUCHERS': 'Gutscheine',
'EGG_LIST': 'Eierliste',
'EGG_GACHA': 'Eier-Gacha',
'MANAGE_DATA': 'Daten verwalten',
'COMMUNITY': 'Community',
'SAVE_AND_QUIT': 'Speichern und Beenden',
'LOG_OUT': 'Abmelden',
'slot': 'Slot {{slotNumber}}',
'importSession': 'Sitzung importieren',
'importSlotSelect': 'Wähle einen Slot zum Importieren.',
'exportSession': 'Sitzung exportieren',
'exportSlotSelect': 'Wähle einen Slot zum Exportieren.',
'importData': 'Daten importieren',
'exportData': 'Daten exportieren',
'cancel': 'Abbrechen',
'losingProgressionWarning': 'Du wirst jeglichen Fortschritt seit Anfang dieses Kampfes verlieren. Fortfahren?'
} as const;

View File

@ -1,4 +1,4 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
/**
* The menu namespace holds most miscellaneous text that isn't directly part of the game's
@ -6,46 +6,46 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
* account interactions, descriptive text, etc.
*/
export const menu: SimpleTranslationEntries = {
"cancel": "Abbrechen",
"continue": "Fortfahren",
"dailyRun": "Täglicher Run (Beta)",
"loadGame": "Spiel laden",
"newGame": "Neues Spiel",
"selectGameMode": "Wähle einen Spielmodus",
"logInOrCreateAccount": "Melde dich an oder erstelle einen Account zum starten. Keine Email nötig!",
"username": "Benutzername",
"password": "Passwort",
"login": "Anmelden",
"register": "Registrieren",
"emptyUsername": "Benutzername darf nicht leer sein",
"invalidLoginUsername": "Der eingegebene Benutzername ist ungültig",
"invalidRegisterUsername": "Benutzername darf nur Buchstaben, Zahlen oder Unterstriche enthalten",
"invalidLoginPassword": "Das eingegebene Passwort ist ungültig",
"invalidRegisterPassword": "Passwort muss 6 Zeichen oder länger sein",
"usernameAlreadyUsed": "Der eingegebene Benutzername wird bereits verwendet",
"accountNonExistent": "Der eingegebene Benutzer existiert nicht",
"unmatchingPassword": "Das eingegebene Passwort stimmt nicht überein",
"passwordNotMatchingConfirmPassword": "Passwort muss mit Bestätigungspasswort übereinstimmen",
"confirmPassword": "Bestätige Passwort",
"registrationAgeWarning": "Mit der Registrierung bestätigen Sie, dass Sie 13 Jahre oder älter sind.",
"backToLogin": "Zurück zur Anmeldung",
"failedToLoadSaveData": "Speicherdaten konnten nicht geladen werden. Bitte laden Sie die Seite neu.\nWenn dies weiterhin der Fall ist, wenden Sie sich bitte an den Administrator.",
"sessionSuccess": "Sitzung erfolgreich geladen.",
"failedToLoadSession": "Ihre Sitzungsdaten konnten nicht geladen werden.\nSie könnten beschädigt sein.",
"boyOrGirl": "Bist du ein Junge oder ein Mädchen?",
"boy": "Junge",
"girl": "Mädchen",
"evolving": "Nanu?\n{{pokemonName}} entwickelt sich!",
"stoppedEvolving": "Hm? {{pokemonName}} hat die Entwicklung \nabgebrochen.", // "Hm? Entwicklung wurde abgebrochen!" without naming the pokemon seems to be the original.
"pauseEvolutionsQuestion": "Die Entwicklung von {{pokemonName}} vorübergehend pausieren?\nEntwicklungen können im Gruppenmenü wieder aktiviert werden.",
"evolutionsPaused": "Entwicklung von {{pokemonName}} pausiert.",
"evolutionDone": "Glückwunsch!\nDein {{pokemonName}} entwickelte sich zu {{evolvedPokemonName}}!",
"dailyRankings": "Tägliche Rangliste",
"weeklyRankings": "Wöchentliche Rangliste",
"noRankings": "Keine Rangliste",
"loading": "Lade…",
"playersOnline": "Spieler Online",
"empty":"Leer",
"yes":"Ja",
"no":"Nein",
'cancel': 'Abbrechen',
'continue': 'Fortfahren',
'dailyRun': 'Täglicher Run (Beta)',
'loadGame': 'Spiel laden',
'newGame': 'Neues Spiel',
'selectGameMode': 'Wähle einen Spielmodus',
'logInOrCreateAccount': 'Melde dich an oder erstelle einen Account zum starten. Keine Email nötig!',
'username': 'Benutzername',
'password': 'Passwort',
'login': 'Anmelden',
'register': 'Registrieren',
'emptyUsername': 'Benutzername darf nicht leer sein',
'invalidLoginUsername': 'Der eingegebene Benutzername ist ungültig',
'invalidRegisterUsername': 'Benutzername darf nur Buchstaben, Zahlen oder Unterstriche enthalten',
'invalidLoginPassword': 'Das eingegebene Passwort ist ungültig',
'invalidRegisterPassword': 'Passwort muss 6 Zeichen oder länger sein',
'usernameAlreadyUsed': 'Der eingegebene Benutzername wird bereits verwendet',
'accountNonExistent': 'Der eingegebene Benutzer existiert nicht',
'unmatchingPassword': 'Das eingegebene Passwort stimmt nicht überein',
'passwordNotMatchingConfirmPassword': 'Passwort muss mit Bestätigungspasswort übereinstimmen',
'confirmPassword': 'Bestätige Passwort',
'registrationAgeWarning': 'Mit der Registrierung bestätigen Sie, dass Sie 13 Jahre oder älter sind.',
'backToLogin': 'Zurück zur Anmeldung',
'failedToLoadSaveData': 'Speicherdaten konnten nicht geladen werden. Bitte laden Sie die Seite neu.\nWenn dies weiterhin der Fall ist, wenden Sie sich bitte an den Administrator.',
'sessionSuccess': 'Sitzung erfolgreich geladen.',
'failedToLoadSession': 'Ihre Sitzungsdaten konnten nicht geladen werden.\nSie könnten beschädigt sein.',
'boyOrGirl': 'Bist du ein Junge oder ein Mädchen?',
'boy': 'Junge',
'girl': 'Mädchen',
'evolving': 'Nanu?\n{{pokemonName}} entwickelt sich!',
'stoppedEvolving': 'Hm? {{pokemonName}} hat die Entwicklung \nabgebrochen.', // "Hm? Entwicklung wurde abgebrochen!" without naming the pokemon seems to be the original.
'pauseEvolutionsQuestion': 'Die Entwicklung von {{pokemonName}} vorübergehend pausieren?\nEntwicklungen können im Gruppenmenü wieder aktiviert werden.',
'evolutionsPaused': 'Entwicklung von {{pokemonName}} pausiert.',
'evolutionDone': 'Glückwunsch!\nDein {{pokemonName}} entwickelte sich zu {{evolvedPokemonName}}!',
'dailyRankings': 'Tägliche Rangliste',
'weeklyRankings': 'Wöchentliche Rangliste',
'noRankings': 'Keine Rangliste',
'loading': 'Lade…',
'playersOnline': 'Spieler Online',
'empty':'Leer',
'yes':'Ja',
'no':'Nein',
} as const;

View File

@ -1,388 +1,388 @@
import { ModifierTypeTranslationEntries } from "#app/plugins/i18n";
import { ModifierTypeTranslationEntries } from '#app/plugins/i18n';
export const modifierType: ModifierTypeTranslationEntries = {
ModifierType: {
"AddPokeballModifierType": {
name: "{{modifierCount}}x {{pokeballName}}",
description: "Erhalte {{pokeballName}} x{{modifierCount}} (Inventar: {{pokeballAmount}}) \nFangrate: {{catchRate}}",
'AddPokeballModifierType': {
name: '{{modifierCount}}x {{pokeballName}}',
description: 'Erhalte {{pokeballName}} x{{modifierCount}} (Inventar: {{pokeballAmount}}) \nFangrate: {{catchRate}}',
},
"AddVoucherModifierType": {
name: "{{modifierCount}}x {{voucherTypeName}}",
description: "Erhalte {{voucherTypeName}} x{{modifierCount}}",
'AddVoucherModifierType': {
name: '{{modifierCount}}x {{voucherTypeName}}',
description: 'Erhalte {{voucherTypeName}} x{{modifierCount}}',
},
"PokemonHeldItemModifierType": {
'PokemonHeldItemModifierType': {
extra: {
"inoperable": "{{pokemonName}} kann dieses\nItem nicht nehmen!",
"tooMany": "{{pokemonName}} hat zu viele\nvon diesem Item!",
'inoperable': '{{pokemonName}} kann dieses\nItem nicht nehmen!',
'tooMany': '{{pokemonName}} hat zu viele\nvon diesem Item!',
}
},
"PokemonHpRestoreModifierType": {
description: "Füllt {{restorePoints}} KP oder {{restorePercent}}% der KP für ein Pokémon auf. Je nachdem, welcher Wert höher ist",
'PokemonHpRestoreModifierType': {
description: 'Füllt {{restorePoints}} KP oder {{restorePercent}}% der KP für ein Pokémon auf. Je nachdem, welcher Wert höher ist',
extra: {
"fully": "Füllt die KP eines Pokémon wieder vollständig auf.",
"fullyWithStatus": "Füllt die KP eines Pokémon wieder vollständig auf und behebt alle Statusprobleme",
'fully': 'Füllt die KP eines Pokémon wieder vollständig auf.',
'fullyWithStatus': 'Füllt die KP eines Pokémon wieder vollständig auf und behebt alle Statusprobleme',
}
},
"PokemonReviveModifierType": {
description: "Belebt ein kampunfähiges Pokémon wieder und stellt {{restorePercent}}% KP wieder her",
'PokemonReviveModifierType': {
description: 'Belebt ein kampunfähiges Pokémon wieder und stellt {{restorePercent}}% KP wieder her',
},
"PokemonStatusHealModifierType": {
description: "Behebt alle Statusprobleme eines Pokémon",
'PokemonStatusHealModifierType': {
description: 'Behebt alle Statusprobleme eines Pokémon',
},
"PokemonPpRestoreModifierType": {
description: "Füllt {{restorePoints}} AP der ausgewählten Attacke eines Pokémon auf",
'PokemonPpRestoreModifierType': {
description: 'Füllt {{restorePoints}} AP der ausgewählten Attacke eines Pokémon auf',
extra: {
"fully": "Füllt alle AP der ausgewählten Attacke eines Pokémon auf",
'fully': 'Füllt alle AP der ausgewählten Attacke eines Pokémon auf',
}
},
"PokemonAllMovePpRestoreModifierType": {
description: "Stellt {{restorePoints}} AP für alle Attacken eines Pokémon auf",
'PokemonAllMovePpRestoreModifierType': {
description: 'Stellt {{restorePoints}} AP für alle Attacken eines Pokémon auf',
extra: {
"fully": "Füllt alle AP für alle Attacken eines Pokémon auf",
'fully': 'Füllt alle AP für alle Attacken eines Pokémon auf',
}
},
"PokemonPpUpModifierType": {
description: "Erhöht die maximale Anzahl der AP der ausgewählten Attacke um {{upPoints}} für jede 5 maximale AP (maximal 3)",
'PokemonPpUpModifierType': {
description: 'Erhöht die maximale Anzahl der AP der ausgewählten Attacke um {{upPoints}} für jede 5 maximale AP (maximal 3)',
},
"PokemonNatureChangeModifierType": {
name: "{{natureName}} Minze",
description: "Ändert das Wesen zu {{natureName}}. Schaltet dieses Wesen permanent für diesen Starter frei.",
'PokemonNatureChangeModifierType': {
name: '{{natureName}} Minze',
description: 'Ändert das Wesen zu {{natureName}}. Schaltet dieses Wesen permanent für diesen Starter frei.',
},
"DoubleBattleChanceBoosterModifierType": {
description: "Verdoppelt die Wahrscheinlichkeit, dass die nächsten {{battleCount}} Begegnungen mit wilden Pokémon ein Doppelkampf sind.",
'DoubleBattleChanceBoosterModifierType': {
description: 'Verdoppelt die Wahrscheinlichkeit, dass die nächsten {{battleCount}} Begegnungen mit wilden Pokémon ein Doppelkampf sind.',
},
"TempBattleStatBoosterModifierType": {
description: "Erhöht die {{tempBattleStatName}} aller Teammitglieder für 5 Kämpfe um eine Stufe",
'TempBattleStatBoosterModifierType': {
description: 'Erhöht die {{tempBattleStatName}} aller Teammitglieder für 5 Kämpfe um eine Stufe',
},
"AttackTypeBoosterModifierType": {
description: "Erhöht die Stärke aller {{moveType}}-Attacken eines Pokémon um 20%",
'AttackTypeBoosterModifierType': {
description: 'Erhöht die Stärke aller {{moveType}}-Attacken eines Pokémon um 20%',
},
"PokemonLevelIncrementModifierType": {
description: "Erhöht das Level eines Pokémon um 1",
'PokemonLevelIncrementModifierType': {
description: 'Erhöht das Level eines Pokémon um 1',
},
"AllPokemonLevelIncrementModifierType": {
description: "Erhöht das Level aller Teammitglieder um 1",
'AllPokemonLevelIncrementModifierType': {
description: 'Erhöht das Level aller Teammitglieder um 1',
},
"PokemonBaseStatBoosterModifierType": {
description: "Erhöht den {{statName}} Basiswert des Trägers um 10%. Das Stapellimit erhöht sich, je höher dein IS-Wert ist.",
'PokemonBaseStatBoosterModifierType': {
description: 'Erhöht den {{statName}} Basiswert des Trägers um 10%. Das Stapellimit erhöht sich, je höher dein IS-Wert ist.',
},
"AllPokemonFullHpRestoreModifierType": {
description: "Stellt 100% der KP aller Pokémon her",
'AllPokemonFullHpRestoreModifierType': {
description: 'Stellt 100% der KP aller Pokémon her',
},
"AllPokemonFullReviveModifierType": {
description: "Belebt alle kampunfähigen Pokémon wieder und stellt ihre KP vollständig wieder her",
'AllPokemonFullReviveModifierType': {
description: 'Belebt alle kampunfähigen Pokémon wieder und stellt ihre KP vollständig wieder her',
},
"MoneyRewardModifierType": {
description:"Gewährt einen {{moneyMultiplier}} Geldbetrag von (₽{{moneyAmount}})",
'MoneyRewardModifierType': {
description:'Gewährt einen {{moneyMultiplier}} Geldbetrag von (₽{{moneyAmount}})',
extra: {
"small": "kleinen",
"moderate": "moderaten",
"large": "großen",
'small': 'kleinen',
'moderate': 'moderaten',
'large': 'großen',
},
},
"ExpBoosterModifierType": {
description: "Erhöht die erhaltenen Erfahrungspunkte um {{boostPercent}}%",
'ExpBoosterModifierType': {
description: 'Erhöht die erhaltenen Erfahrungspunkte um {{boostPercent}}%',
},
"PokemonExpBoosterModifierType": {
description: "Erhöht die Menge der erhaltenen Erfahrungspunkte für den Träger um {{boostPercent}}%",
'PokemonExpBoosterModifierType': {
description: 'Erhöht die Menge der erhaltenen Erfahrungspunkte für den Träger um {{boostPercent}}%',
},
"PokemonFriendshipBoosterModifierType": {
description: "Erhöht den Freundschaftszuwachs pro Sieg um 50%.",
'PokemonFriendshipBoosterModifierType': {
description: 'Erhöht den Freundschaftszuwachs pro Sieg um 50%.',
},
"PokemonMoveAccuracyBoosterModifierType": {
description: "Erhöht die Genauigkeit der Angriffe um {{accuracyAmount}} (maximal 100)",
'PokemonMoveAccuracyBoosterModifierType': {
description: 'Erhöht die Genauigkeit der Angriffe um {{accuracyAmount}} (maximal 100)',
},
"PokemonMultiHitModifierType": {
description: "Attacken treffen ein weiteres mal mit einer Reduktion von 60/75/82,5% der Stärke",
'PokemonMultiHitModifierType': {
description: 'Attacken treffen ein weiteres mal mit einer Reduktion von 60/75/82,5% der Stärke',
},
"TmModifierType": {
name: "TM{{moveId}} - {{moveName}}",
description: "Bringt einem Pokémon {{moveName}} bei",
'TmModifierType': {
name: 'TM{{moveId}} - {{moveName}}',
description: 'Bringt einem Pokémon {{moveName}} bei',
},
"EvolutionItemModifierType": {
description: "Erlaubt es bestimmten Pokémon sich zu entwickeln",
'EvolutionItemModifierType': {
description: 'Erlaubt es bestimmten Pokémon sich zu entwickeln',
},
"FormChangeItemModifierType": {
description: "Erlaubt es bestimmten Pokémon ihre Form zu ändern",
'FormChangeItemModifierType': {
description: 'Erlaubt es bestimmten Pokémon ihre Form zu ändern',
},
"FusePokemonModifierType": {
description: "Fusioniert zwei Pokémon (überträgt die Fähigkeit, teilt Basiswerte und Typ auf, gemeinsamer Attackenpool)",
'FusePokemonModifierType': {
description: 'Fusioniert zwei Pokémon (überträgt die Fähigkeit, teilt Basiswerte und Typ auf, gemeinsamer Attackenpool)',
},
"TerastallizeModifierType": {
name: "{{teraType}} Terra-Stück",
description: "{{teraType}} Terakristallisiert den Träger für bis zu 10 Kämpfe",
'TerastallizeModifierType': {
name: '{{teraType}} Terra-Stück',
description: '{{teraType}} Terakristallisiert den Träger für bis zu 10 Kämpfe',
},
"ContactHeldItemTransferChanceModifierType": {
description:"Beim Angriff besteht eine {{chancePercent}}%ige Chance, dass das getragene Item des Gegners gestohlen wird."
'ContactHeldItemTransferChanceModifierType': {
description:'Beim Angriff besteht eine {{chancePercent}}%ige Chance, dass das getragene Item des Gegners gestohlen wird.'
},
"TurnHeldItemTransferModifierType": {
description: "Jede Runde erhält der Träger ein getragenes Item des Gegners",
'TurnHeldItemTransferModifierType': {
description: 'Jede Runde erhält der Träger ein getragenes Item des Gegners',
},
"EnemyAttackStatusEffectChanceModifierType": {
description: "Fügt Angriffen eine {{chancePercent}}%ige Chance hinzu, {{statusEffect}} zu verursachen",
'EnemyAttackStatusEffectChanceModifierType': {
description: 'Fügt Angriffen eine {{chancePercent}}%ige Chance hinzu, {{statusEffect}} zu verursachen',
},
"EnemyEndureChanceModifierType": {
description: "Gibt den Träger eine {{chancePercent}}%ige Chance, einen Angriff zu überleben",
'EnemyEndureChanceModifierType': {
description: 'Gibt den Träger eine {{chancePercent}}%ige Chance, einen Angriff zu überleben',
},
"RARE_CANDY": { name: "Sonderbonbon" },
"RARER_CANDY": { name: "Supersondererbonbon" },
'RARE_CANDY': { name: 'Sonderbonbon' },
'RARER_CANDY': { name: 'Supersondererbonbon' },
"MEGA_BRACELET": { name: "Mega-Armband", description: "Mega-Steine werden verfügbar" },
"DYNAMAX_BAND": { name: "Dynamax-Band", description: "Dyna-Pilze werden verfügbar" },
"TERA_ORB": { name: "Terakristall-Orb", description: "Tera-Stücke werden verfügbar" },
'MEGA_BRACELET': { name: 'Mega-Armband', description: 'Mega-Steine werden verfügbar' },
'DYNAMAX_BAND': { name: 'Dynamax-Band', description: 'Dyna-Pilze werden verfügbar' },
'TERA_ORB': { name: 'Terakristall-Orb', description: 'Tera-Stücke werden verfügbar' },
"MAP": { name: "Karte", description: "Ermöglicht es dir, an einer Kreuzung dein Ziel zu wählen." },
'MAP': { name: 'Karte', description: 'Ermöglicht es dir, an einer Kreuzung dein Ziel zu wählen.' },
"POTION": { name: "Trank" },
"SUPER_POTION": { name: "Supertrank" },
"HYPER_POTION": { name: "Hypertrank" },
"MAX_POTION": { name: "Top-Trank" },
"FULL_RESTORE": { name: "Top-Genesung" },
'POTION': { name: 'Trank' },
'SUPER_POTION': { name: 'Supertrank' },
'HYPER_POTION': { name: 'Hypertrank' },
'MAX_POTION': { name: 'Top-Trank' },
'FULL_RESTORE': { name: 'Top-Genesung' },
"REVIVE": { name: "Beleber" },
"MAX_REVIVE": { name: "Top-Beleber" },
'REVIVE': { name: 'Beleber' },
'MAX_REVIVE': { name: 'Top-Beleber' },
"FULL_HEAL": { name: "Hyperheiler" },
'FULL_HEAL': { name: 'Hyperheiler' },
"SACRED_ASH": { name: "Zauberasche" },
'SACRED_ASH': { name: 'Zauberasche' },
"REVIVER_SEED": { name: "Belebersamen", description: "Belebt den Träger mit der Hälfte seiner KP wieder sollte er kampfunfähig werden" },
'REVIVER_SEED': { name: 'Belebersamen', description: 'Belebt den Träger mit der Hälfte seiner KP wieder sollte er kampfunfähig werden' },
"ETHER": { name: "Äther" },
"MAX_ETHER": { name: "Top-Äther" },
'ETHER': { name: 'Äther' },
'MAX_ETHER': { name: 'Top-Äther' },
"ELIXIR": { name: "Elixir" },
"MAX_ELIXIR": { name: "Top-Elixir" },
'ELIXIR': { name: 'Elixir' },
'MAX_ELIXIR': { name: 'Top-Elixir' },
"PP_UP": { name: "AP-Plus" },
"PP_MAX": { name: "AP-Top" },
'PP_UP': { name: 'AP-Plus' },
'PP_MAX': { name: 'AP-Top' },
"LURE": { name: "Lockparfüm" },
"SUPER_LURE": { name: "Super-Lockparfüm" },
"MAX_LURE": { name: "Top-Lockparfüm" },
'LURE': { name: 'Lockparfüm' },
'SUPER_LURE': { name: 'Super-Lockparfüm' },
'MAX_LURE': { name: 'Top-Lockparfüm' },
"MEMORY_MUSHROOM": { name: "Erinnerungspilz", description: "Lässt ein Pokémon eine vergessene Attacke wiedererlernen" },
'MEMORY_MUSHROOM': { name: 'Erinnerungspilz', description: 'Lässt ein Pokémon eine vergessene Attacke wiedererlernen' },
"EXP_SHARE": { name: "EP-Teiler", description: "Pokémon, die nicht am Kampf teilgenommen haben, bekommen 20% der Erfahrungspunkte eines Kampfteilnehmers" },
"EXP_BALANCE": { name: "EP-Ausgleicher", description: "Gewichtet die in Kämpfen erhaltenen Erfahrungspunkte auf niedrigstufigere Gruppenmitglieder." },
'EXP_SHARE': { name: 'EP-Teiler', description: 'Pokémon, die nicht am Kampf teilgenommen haben, bekommen 20% der Erfahrungspunkte eines Kampfteilnehmers' },
'EXP_BALANCE': { name: 'EP-Ausgleicher', description: 'Gewichtet die in Kämpfen erhaltenen Erfahrungspunkte auf niedrigstufigere Gruppenmitglieder.' },
"OVAL_CHARM": { name: "Ovalpin", description: "Wenn mehrere Pokémon am Kampf teilnehmen, erhählt jeder von ihnen 10% extra Erfahrungspunkte" },
'OVAL_CHARM': { name: 'Ovalpin', description: 'Wenn mehrere Pokémon am Kampf teilnehmen, erhählt jeder von ihnen 10% extra Erfahrungspunkte' },
"EXP_CHARM": { name: "EP-Pin" },
"SUPER_EXP_CHARM": { name: "Super-EP-Pin" },
"GOLDEN_EXP_CHARM": { name: "Goldener EP-Pin" },
'EXP_CHARM': { name: 'EP-Pin' },
'SUPER_EXP_CHARM': { name: 'Super-EP-Pin' },
'GOLDEN_EXP_CHARM': { name: 'Goldener EP-Pin' },
"LUCKY_EGG": { name: "Glücks-Ei" },
"GOLDEN_EGG": { name: "Goldenes Ei" },
'LUCKY_EGG': { name: 'Glücks-Ei' },
'GOLDEN_EGG': { name: 'Goldenes Ei' },
"SOOTHE_BELL": { name: "Sanftglocke" },
'SOOTHE_BELL': { name: 'Sanftglocke' },
"SOUL_DEW": { name: "Seelentau", description: "Erhöht den Einfluss des Wesens eines Pokemon auf seine Werte um 10% (additiv)" },
'SOUL_DEW': { name: 'Seelentau', description: 'Erhöht den Einfluss des Wesens eines Pokemon auf seine Werte um 10% (additiv)' },
"NUGGET": { name: "Nugget" },
"BIG_NUGGET": { name: "Riesennugget" },
"RELIC_GOLD": { name: "Alter Dukat" },
'NUGGET': { name: 'Nugget' },
'BIG_NUGGET': { name: 'Riesennugget' },
'RELIC_GOLD': { name: 'Alter Dukat' },
"AMULET_COIN": { name: "Münzamulett", description: "Erhöht das Preisgeld um 20%" },
"GOLDEN_PUNCH": { name: "Goldschlag", description: "Gewährt Geld in Höhe von 50% des zugefügten Schadens" },
"COIN_CASE": { name: "Münzkorb", description: "Erhalte nach jedem 10ten Kampf 10% Zinsen auf dein Geld" },
'AMULET_COIN': { name: 'Münzamulett', description: 'Erhöht das Preisgeld um 20%' },
'GOLDEN_PUNCH': { name: 'Goldschlag', description: 'Gewährt Geld in Höhe von 50% des zugefügten Schadens' },
'COIN_CASE': { name: 'Münzkorb', description: 'Erhalte nach jedem 10ten Kampf 10% Zinsen auf dein Geld' },
"LOCK_CAPSULE": { name: "Tresorkapsel", description: "Erlaubt es die Seltenheitsstufe der Items festzusetzen wenn diese neu gerollt werden" },
'LOCK_CAPSULE': { name: 'Tresorkapsel', description: 'Erlaubt es die Seltenheitsstufe der Items festzusetzen wenn diese neu gerollt werden' },
"GRIP_CLAW": { name: "Griffklaue" },
"WIDE_LENS": { name: "Großlinse" },
'GRIP_CLAW': { name: 'Griffklaue' },
'WIDE_LENS': { name: 'Großlinse' },
"MULTI_LENS": { name: "Mehrfachlinse" },
'MULTI_LENS': { name: 'Mehrfachlinse' },
"HEALING_CHARM": { name: "Heilungspin", description: "Erhöht die Effektivität von Heilungsattacken sowie Heilitems um 10% (Beleber ausgenommen)" },
"CANDY_JAR": { name: "Bonbonglas", description: "Erhöht die Anzahl der Level die ein Sonderbonbon erhöht um 1" },
'HEALING_CHARM': { name: 'Heilungspin', description: 'Erhöht die Effektivität von Heilungsattacken sowie Heilitems um 10% (Beleber ausgenommen)' },
'CANDY_JAR': { name: 'Bonbonglas', description: 'Erhöht die Anzahl der Level die ein Sonderbonbon erhöht um 1' },
"BERRY_POUCH": { name: "Beerentüte", description: "Fügt eine 25% Chance hinzu, dass Beeren nicht verbraucht werden" },
'BERRY_POUCH': { name: 'Beerentüte', description: 'Fügt eine 25% Chance hinzu, dass Beeren nicht verbraucht werden' },
"FOCUS_BAND": { name: "Fokusband", description: "Fügt eine 10% Chance hinzu, dass Angriffe die zur Kampfunfähigkeit führen mit 1 KP überlebt werden" },
'FOCUS_BAND': { name: 'Fokusband', description: 'Fügt eine 10% Chance hinzu, dass Angriffe die zur Kampfunfähigkeit führen mit 1 KP überlebt werden' },
"QUICK_CLAW": { name: "Quick Claw", description: "Fügt eine 10% Change hinzu als erster anzugreifen. (Nach Prioritätsangriffen)" },
'QUICK_CLAW': { name: 'Quick Claw', description: 'Fügt eine 10% Change hinzu als erster anzugreifen. (Nach Prioritätsangriffen)' },
"KINGS_ROCK": { name: "King-Stein", description: "Fügt eine 10% Chance hinzu, dass der Gegner nach einem Angriff zurückschreckt" },
'KINGS_ROCK': { name: 'King-Stein', description: 'Fügt eine 10% Chance hinzu, dass der Gegner nach einem Angriff zurückschreckt' },
"LEFTOVERS": { name: "Überreste", description: "Heilt 1/16 der maximalen KP eines Pokémon pro Runde" },
"SHELL_BELL": { name: "Muschelglocke", description: "Heilt den Anwender um 1/8 des von ihm zugefügten Schadens" },
'LEFTOVERS': { name: 'Überreste', description: 'Heilt 1/16 der maximalen KP eines Pokémon pro Runde' },
'SHELL_BELL': { name: 'Muschelglocke', description: 'Heilt den Anwender um 1/8 des von ihm zugefügten Schadens' },
"BATON": { name: "Stab", description: "Ermöglicht das Weitergeben von Effekten beim Wechseln von Pokémon, wodurch auch Fallen umgangen werden." },
'BATON': { name: 'Stab', description: 'Ermöglicht das Weitergeben von Effekten beim Wechseln von Pokémon, wodurch auch Fallen umgangen werden.' },
"SHINY_CHARM": { name: "Schillerpin", description: "Erhöht die Chance deutlich, dass ein wildes Pokémon ein schillernd ist" },
"ABILITY_CHARM": { name: "Ability Charm", description: "Erhöht die Chance deutlich, dass ein wildes Pokémon eine versteckte Fähigkeit hat" },
'SHINY_CHARM': { name: 'Schillerpin', description: 'Erhöht die Chance deutlich, dass ein wildes Pokémon ein schillernd ist' },
'ABILITY_CHARM': { name: 'Ability Charm', description: 'Erhöht die Chance deutlich, dass ein wildes Pokémon eine versteckte Fähigkeit hat' },
"IV_SCANNER": { name: "IS-Scanner", description: "Erlaubt es die IS-Werte von wilden Pokémon zu scannen.\n(2 IS-Werte pro Staplung. Die besten IS-Werte zuerst)" },
'IV_SCANNER': { name: 'IS-Scanner', description: 'Erlaubt es die IS-Werte von wilden Pokémon zu scannen.\n(2 IS-Werte pro Staplung. Die besten IS-Werte zuerst)' },
"DNA_SPLICERS": { name: "DNS-Keil" },
'DNA_SPLICERS': { name: 'DNS-Keil' },
"MINI_BLACK_HOLE": { name: "Mini schwarzes Loch" },
'MINI_BLACK_HOLE': { name: 'Mini schwarzes Loch' },
"GOLDEN_POKEBALL": { name: "Goldener Pokéball", description: "Fügt eine zusätzliche Item-Auswahlmöglichkeit nach jedem Kampf hinzu" },
'GOLDEN_POKEBALL': { name: 'Goldener Pokéball', description: 'Fügt eine zusätzliche Item-Auswahlmöglichkeit nach jedem Kampf hinzu' },
"ENEMY_DAMAGE_BOOSTER": { name: "Schadensmarke", description: "Erhöht den Schaden um 5%" },
"ENEMY_DAMAGE_REDUCTION": { name: "Schutzmarke", description: "Verringert den erhaltenen Schaden um 2,5%" },
"ENEMY_HEAL": { name: "Wiederherstellungsmarke", description: "Heilt 2% der maximalen KP pro Runde" },
"ENEMY_ATTACK_POISON_CHANCE": { name: "Giftmarke" },
"ENEMY_ATTACK_PARALYZE_CHANCE": { "name": "Lähmungsmarke" },
"ENEMY_ATTACK_SLEEP_CHANCE": { "name": "Schlafmarke" },
"ENEMY_ATTACK_FREEZE_CHANCE": { "name": "Gefriermarke" },
"ENEMY_ATTACK_BURN_CHANCE": { "name": "Brandmarke" },
"ENEMY_STATUS_EFFECT_HEAL_CHANCE": { "name": "Vollheilungsmarke", "description": "Fügt eine 10%ige Chance hinzu, jede Runde einen Statuszustand zu heilen" },
"ENEMY_ENDURE_CHANCE": { "name": "Ausdauer-Marke" },
"ENEMY_FUSED_CHANCE": { "name": "Fusionsmarke", "description": "Fügt eine 1%ige Chance hinzu, dass ein wildes Pokémon eine Fusion ist" },
'ENEMY_DAMAGE_BOOSTER': { name: 'Schadensmarke', description: 'Erhöht den Schaden um 5%' },
'ENEMY_DAMAGE_REDUCTION': { name: 'Schutzmarke', description: 'Verringert den erhaltenen Schaden um 2,5%' },
'ENEMY_HEAL': { name: 'Wiederherstellungsmarke', description: 'Heilt 2% der maximalen KP pro Runde' },
'ENEMY_ATTACK_POISON_CHANCE': { name: 'Giftmarke' },
'ENEMY_ATTACK_PARALYZE_CHANCE': { 'name': 'Lähmungsmarke' },
'ENEMY_ATTACK_SLEEP_CHANCE': { 'name': 'Schlafmarke' },
'ENEMY_ATTACK_FREEZE_CHANCE': { 'name': 'Gefriermarke' },
'ENEMY_ATTACK_BURN_CHANCE': { 'name': 'Brandmarke' },
'ENEMY_STATUS_EFFECT_HEAL_CHANCE': { 'name': 'Vollheilungsmarke', 'description': 'Fügt eine 10%ige Chance hinzu, jede Runde einen Statuszustand zu heilen' },
'ENEMY_ENDURE_CHANCE': { 'name': 'Ausdauer-Marke' },
'ENEMY_FUSED_CHANCE': { 'name': 'Fusionsmarke', 'description': 'Fügt eine 1%ige Chance hinzu, dass ein wildes Pokémon eine Fusion ist' },
},
TempBattleStatBoosterItem: {
"x_attack": "X-Angriff",
"x_defense": "X-Verteidigung",
"x_sp_atk": "X-Sp.-Ang.",
"x_sp_def": "X-Sp.-Vert.",
"x_speed": "X-Tempo",
"x_accuracy": "X-Treffer",
"dire_hit": "X-Volltreffer",
'x_attack': 'X-Angriff',
'x_defense': 'X-Verteidigung',
'x_sp_atk': 'X-Sp.-Ang.',
'x_sp_def': 'X-Sp.-Vert.',
'x_speed': 'X-Tempo',
'x_accuracy': 'X-Treffer',
'dire_hit': 'X-Volltreffer',
},
AttackTypeBoosterItem: {
"silk_scarf": "Seidenschal",
"black_belt": "Schwarzgurt",
"sharp_beak": "Spitzer Schnabel",
"poison_barb": "Giftstich",
"soft_sand": "Pudersand",
"hard_stone": "Granitstein",
"silver_powder": "Silberstaub",
"spell_tag": "Bannsticker",
"metal_coat": "Metallmantel",
"charcoal": "Holzkohle",
"mystic_water": "Zauberwasser",
"miracle_seed": "Wundersaat",
"magnet": "Magnet",
"twisted_spoon": "Krümmlöffel",
"never_melt_ice": "Ewiges Eis",
"dragon_fang": "Drachenzahn",
"black_glasses": "Schattenbrille",
"fairy_feather": "Feendaune",
'silk_scarf': 'Seidenschal',
'black_belt': 'Schwarzgurt',
'sharp_beak': 'Spitzer Schnabel',
'poison_barb': 'Giftstich',
'soft_sand': 'Pudersand',
'hard_stone': 'Granitstein',
'silver_powder': 'Silberstaub',
'spell_tag': 'Bannsticker',
'metal_coat': 'Metallmantel',
'charcoal': 'Holzkohle',
'mystic_water': 'Zauberwasser',
'miracle_seed': 'Wundersaat',
'magnet': 'Magnet',
'twisted_spoon': 'Krümmlöffel',
'never_melt_ice': 'Ewiges Eis',
'dragon_fang': 'Drachenzahn',
'black_glasses': 'Schattenbrille',
'fairy_feather': 'Feendaune',
},
BaseStatBoosterItem: {
"hp_up": "KP-Plus",
"protein": "Protein",
"iron": "Eisen",
"calcium": "Kalzium",
"zinc": "Zink",
"carbos": "Carbon",
'hp_up': 'KP-Plus',
'protein': 'Protein',
'iron': 'Eisen',
'calcium': 'Kalzium',
'zinc': 'Zink',
'carbos': 'Carbon',
},
EvolutionItem: {
"NONE": "Keins",
'NONE': 'Keins',
"LINKING_CORD": "Linkkabel",
"SUN_STONE": "Sonnenstein",
"MOON_STONE": "Mondstein",
"LEAF_STONE": "Blattstein",
"FIRE_STONE": "Feuerstein",
"WATER_STONE": "Wasserstein",
"THUNDER_STONE": "Donnerstein",
"ICE_STONE": "Eisstein",
"DUSK_STONE": "Finsterstein",
"DAWN_STONE": "Funkelstein",
"SHINY_STONE": "Leuchtstein",
"CRACKED_POT": "Rissige Kanne",
"SWEET_APPLE": "Süßer Apfel",
"TART_APPLE": "Saurer Apfel",
"STRAWBERRY_SWEET": "Zucker-Erdbeere",
"UNREMARKABLE_TEACUP": "Simple Teeschale",
'LINKING_CORD': 'Linkkabel',
'SUN_STONE': 'Sonnenstein',
'MOON_STONE': 'Mondstein',
'LEAF_STONE': 'Blattstein',
'FIRE_STONE': 'Feuerstein',
'WATER_STONE': 'Wasserstein',
'THUNDER_STONE': 'Donnerstein',
'ICE_STONE': 'Eisstein',
'DUSK_STONE': 'Finsterstein',
'DAWN_STONE': 'Funkelstein',
'SHINY_STONE': 'Leuchtstein',
'CRACKED_POT': 'Rissige Kanne',
'SWEET_APPLE': 'Süßer Apfel',
'TART_APPLE': 'Saurer Apfel',
'STRAWBERRY_SWEET': 'Zucker-Erdbeere',
'UNREMARKABLE_TEACUP': 'Simple Teeschale',
"CHIPPED_POT": "Löchrige Kanne",
"BLACK_AUGURITE": "Schwarzaugit",
"GALARICA_CUFF": "Galarnuss-Reif",
"GALARICA_WREATH": "Galarnuss-Kranz",
"PEAT_BLOCK": "Torfblock",
"AUSPICIOUS_ARMOR": "Glorienrüstung",
"MALICIOUS_ARMOR": "Fluchrüstung",
"MASTERPIECE_TEACUP": "Edle Teeschale",
"METAL_ALLOY": "Legierungsmetall",
"SCROLL_OF_DARKNESS": "Unlicht-Schriftrolle",
"SCROLL_OF_WATERS": "Wasser-Schriftrolle",
"SYRUPY_APPLE": "Saftiger Apfel",
'CHIPPED_POT': 'Löchrige Kanne',
'BLACK_AUGURITE': 'Schwarzaugit',
'GALARICA_CUFF': 'Galarnuss-Reif',
'GALARICA_WREATH': 'Galarnuss-Kranz',
'PEAT_BLOCK': 'Torfblock',
'AUSPICIOUS_ARMOR': 'Glorienrüstung',
'MALICIOUS_ARMOR': 'Fluchrüstung',
'MASTERPIECE_TEACUP': 'Edle Teeschale',
'METAL_ALLOY': 'Legierungsmetall',
'SCROLL_OF_DARKNESS': 'Unlicht-Schriftrolle',
'SCROLL_OF_WATERS': 'Wasser-Schriftrolle',
'SYRUPY_APPLE': 'Saftiger Apfel',
},
FormChangeItem: {
"NONE": "Keins",
'NONE': 'Keins',
"ABOMASITE": "Rexblisarnit",
"ABSOLITE": "Absolnit",
"AERODACTYLITE": "Aerodactylonit",
"AGGRONITE": "Stollossnit",
"ALAKAZITE": "Simsalanit",
"ALTARIANITE": "Altarianit",
"AMPHAROSITE": "Ampharosnit",
"AUDINITE": "Ohrdochnit",
"BANETTITE": "Banetteonit",
"BEEDRILLITE": "Bibornit",
"BLASTOISINITE": "Turtoknit",
"BLAZIKENITE": "Lohgocknit",
"CAMERUPTITE": "Cameruptnit",
"CHARIZARDITE_X": "Gluraknit X",
"CHARIZARDITE_Y": "Gluraknit Y",
"DIANCITE": "Diancienit",
"GALLADITE": "Galagladinit",
"GARCHOMPITE": "Knakracknit",
"GARDEVOIRITE": "Guardevoirnit",
"GENGARITE": "Gengarnit ",
"GLALITITE": "Firnontornit",
"GYARADOSITE": "Garadosnit",
"HERACRONITE": "Skarabornit",
"HOUNDOOMINITE": "Hundemonit ",
"KANGASKHANITE": "Kangamanit",
"LATIASITE": "Latiasnit",
"LATIOSITE": "Latiosnit",
"LOPUNNITE": "Schlapornit",
"LUCARIONITE": "Lucarionit",
"MANECTITE": "Voltensonit",
"MAWILITE": "Flunkifernit",
"MEDICHAMITE": "Meditalisnit",
"METAGROSSITE": "Metagrossnit",
"MEWTWONITE_X": "Mewtunit X",
"MEWTWONITE_Y": "Mewtunit Y",
"PIDGEOTITE": "Taubossnit",
"PINSIRITE": "Pinsirnit",
"RAYQUAZITE": "Rayquazanit",
"SABLENITE": "Zobirisnit",
"SALAMENCITE": "Brutalandanit",
"SCEPTILITE": "Gewaldronit",
"SCIZORITE": "Scheroxnit",
"SHARPEDONITE": "Tohaidonit",
"SLOWBRONITE": "Lahmusnit",
"STEELIXITE": "Stahlosnit",
"SWAMPERTITE": "Sumpexnit",
"TYRANITARITE": "Despotarnit",
"VENUSAURITE": "Bisaflornit",
'ABOMASITE': 'Rexblisarnit',
'ABSOLITE': 'Absolnit',
'AERODACTYLITE': 'Aerodactylonit',
'AGGRONITE': 'Stollossnit',
'ALAKAZITE': 'Simsalanit',
'ALTARIANITE': 'Altarianit',
'AMPHAROSITE': 'Ampharosnit',
'AUDINITE': 'Ohrdochnit',
'BANETTITE': 'Banetteonit',
'BEEDRILLITE': 'Bibornit',
'BLASTOISINITE': 'Turtoknit',
'BLAZIKENITE': 'Lohgocknit',
'CAMERUPTITE': 'Cameruptnit',
'CHARIZARDITE_X': 'Gluraknit X',
'CHARIZARDITE_Y': 'Gluraknit Y',
'DIANCITE': 'Diancienit',
'GALLADITE': 'Galagladinit',
'GARCHOMPITE': 'Knakracknit',
'GARDEVOIRITE': 'Guardevoirnit',
'GENGARITE': 'Gengarnit ',
'GLALITITE': 'Firnontornit',
'GYARADOSITE': 'Garadosnit',
'HERACRONITE': 'Skarabornit',
'HOUNDOOMINITE': 'Hundemonit ',
'KANGASKHANITE': 'Kangamanit',
'LATIASITE': 'Latiasnit',
'LATIOSITE': 'Latiosnit',
'LOPUNNITE': 'Schlapornit',
'LUCARIONITE': 'Lucarionit',
'MANECTITE': 'Voltensonit',
'MAWILITE': 'Flunkifernit',
'MEDICHAMITE': 'Meditalisnit',
'METAGROSSITE': 'Metagrossnit',
'MEWTWONITE_X': 'Mewtunit X',
'MEWTWONITE_Y': 'Mewtunit Y',
'PIDGEOTITE': 'Taubossnit',
'PINSIRITE': 'Pinsirnit',
'RAYQUAZITE': 'Rayquazanit',
'SABLENITE': 'Zobirisnit',
'SALAMENCITE': 'Brutalandanit',
'SCEPTILITE': 'Gewaldronit',
'SCIZORITE': 'Scheroxnit',
'SHARPEDONITE': 'Tohaidonit',
'SLOWBRONITE': 'Lahmusnit',
'STEELIXITE': 'Stahlosnit',
'SWAMPERTITE': 'Sumpexnit',
'TYRANITARITE': 'Despotarnit',
'VENUSAURITE': 'Bisaflornit',
"BLUE_ORB": "Blauer Edelstein",
"RED_ORB": "Roter Edelstein",
"SHARP_METEORITE": "Scharfer Meteorit",
"HARD_METEORITE": "Harter Meteorit",
"SMOOTH_METEORITE": "Glatter Meteorit",
"ADAMANT_CRYSTAL": "Adamantkristall",
"LUSTROUS_ORB": "Weiß-Orb",
"GRISEOUS_CORE": "Platinumkristall",
"REVEAL_GLASS": "Wahrspiegel",
"GRACIDEA": "Gracidea",
"MAX_MUSHROOMS": "Dyna-Pilz",
"DARK_STONE": "Dunkelstein",
"LIGHT_STONE": "Lichtstein",
"PRISON_BOTTLE": "Banngefäß",
"N_LUNARIZER": "Necrolun",
"N_SOLARIZER": "Necrosol",
"RUSTED_SWORD": "Rostiges Schwert",
"RUSTED_SHIELD": "Rostiges Schild",
"ICY_REINS_OF_UNITY": "eisige Zügel des Bundes",
"SHADOW_REINS_OF_UNITY": "schattige Zügel des Bundes",
"WELLSPRING_MASK": "Brunnenmaske",
"HEARTHFLAME_MASK": "Ofenmaske",
"CORNERSTONE_MASK": "Fundamentmaske",
"SHOCK_DRIVE": "Blitzmodul",
"BURN_DRIVE": "Flammenmodul",
"CHILL_DRIVE": "Gefriermodul",
"DOUSE_DRIVE": "Aquamodul",
'BLUE_ORB': 'Blauer Edelstein',
'RED_ORB': 'Roter Edelstein',
'SHARP_METEORITE': 'Scharfer Meteorit',
'HARD_METEORITE': 'Harter Meteorit',
'SMOOTH_METEORITE': 'Glatter Meteorit',
'ADAMANT_CRYSTAL': 'Adamantkristall',
'LUSTROUS_ORB': 'Weiß-Orb',
'GRISEOUS_CORE': 'Platinumkristall',
'REVEAL_GLASS': 'Wahrspiegel',
'GRACIDEA': 'Gracidea',
'MAX_MUSHROOMS': 'Dyna-Pilz',
'DARK_STONE': 'Dunkelstein',
'LIGHT_STONE': 'Lichtstein',
'PRISON_BOTTLE': 'Banngefäß',
'N_LUNARIZER': 'Necrolun',
'N_SOLARIZER': 'Necrosol',
'RUSTED_SWORD': 'Rostiges Schwert',
'RUSTED_SHIELD': 'Rostiges Schild',
'ICY_REINS_OF_UNITY': 'eisige Zügel des Bundes',
'SHADOW_REINS_OF_UNITY': 'schattige Zügel des Bundes',
'WELLSPRING_MASK': 'Brunnenmaske',
'HEARTHFLAME_MASK': 'Ofenmaske',
'CORNERSTONE_MASK': 'Fundamentmaske',
'SHOCK_DRIVE': 'Blitzmodul',
'BURN_DRIVE': 'Flammenmodul',
'CHILL_DRIVE': 'Gefriermodul',
'DOUSE_DRIVE': 'Aquamodul',
},
} as const;

File diff suppressed because it is too large Load Diff

View File

@ -1,29 +1,29 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const nature: SimpleTranslationEntries = {
"Hardy": "Robust",
"Lonely": "Solo",
"Brave": "Mutig",
"Adamant": "Hart",
"Naughty": "Frech",
"Bold": "Kühn",
"Docile": "Sanft",
"Relaxed": "Locker",
"Impish": "Pfiffig",
"Lax": "Lasch",
"Timid": "Scheu",
"Hasty": "Hastig",
"Serious": "Ernst",
"Jolly": "Froh",
"Naive": "Naiv",
"Modest": "Mäßig",
"Mild": "Mild",
"Quiet": "Ruhig",
"Bashful": "Zaghaft",
"Rash": "Hitzig",
"Calm": "Still",
"Gentle": "Zart",
"Sassy": "Forsch",
"Careful": "Sacht",
"Quirky": "Kauzig"
'Hardy': 'Robust',
'Lonely': 'Solo',
'Brave': 'Mutig',
'Adamant': 'Hart',
'Naughty': 'Frech',
'Bold': 'Kühn',
'Docile': 'Sanft',
'Relaxed': 'Locker',
'Impish': 'Pfiffig',
'Lax': 'Lasch',
'Timid': 'Scheu',
'Hasty': 'Hastig',
'Serious': 'Ernst',
'Jolly': 'Froh',
'Naive': 'Naiv',
'Modest': 'Mäßig',
'Mild': 'Mild',
'Quiet': 'Ruhig',
'Bashful': 'Zaghaft',
'Rash': 'Hitzig',
'Calm': 'Still',
'Gentle': 'Zart',
'Sassy': 'Forsch',
'Careful': 'Sacht',
'Quirky': 'Kauzig'
} as const;

View File

@ -1,10 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const pokeball: SimpleTranslationEntries = {
"pokeBall": "Pokéball",
"greatBall": "Superball",
"ultraBall": "Hyperball",
"rogueBall": "Rogueball",
"masterBall": "Meisterball",
"luxuryBall": "Luxusball",
'pokeBall': 'Pokéball',
'greatBall': 'Superball',
'ultraBall': 'Hyperball',
'rogueBall': 'Rogueball',
'masterBall': 'Meisterball',
'luxuryBall': 'Luxusball',
} as const;

View File

@ -1,41 +1,41 @@
import { PokemonInfoTranslationEntries } from "#app/plugins/i18n";
import { PokemonInfoTranslationEntries } from '#app/plugins/i18n';
export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: {
"HP": "Max. KP",
"HPshortened": "MaxKP",
"ATK": "Angriff",
"ATKshortened": "Ang",
"DEF": "Verteidigung",
"DEFshortened": "Vert",
"SPATK": "Sp. Ang",
"SPATKshortened": "SpAng",
"SPDEF": "Sp. Vert",
"SPDEFshortened": "SpVert",
"SPD": "Initiative",
"SPDshortened": "Init",
'HP': 'Max. KP',
'HPshortened': 'MaxKP',
'ATK': 'Angriff',
'ATKshortened': 'Ang',
'DEF': 'Verteidigung',
'DEFshortened': 'Vert',
'SPATK': 'Sp. Ang',
'SPATKshortened': 'SpAng',
'SPDEF': 'Sp. Vert',
'SPDEFshortened': 'SpVert',
'SPD': 'Initiative',
'SPDshortened': 'Init',
},
Type: {
"UNKNOWN": "Unbekannt",
"NORMAL": "Normal",
"FIGHTING": "Kampf",
"FLYING": "Flug",
"POISON": "Gift",
"GROUND": "Boden",
"ROCK": "Gestein",
"BUG": "Käfer",
"GHOST": "Geist",
"STEEL": "Stahl",
"FIRE": "Feuer",
"WATER": "Wasser",
"GRASS": "Pflanze",
"ELECTRIC": "Elektro",
"PSYCHIC": "Psycho",
"ICE": "Eis",
"DRAGON": "Drache",
"DARK": "Unlicht",
"FAIRY": "Fee",
"STELLAR": "Stellar",
'UNKNOWN': 'Unbekannt',
'NORMAL': 'Normal',
'FIGHTING': 'Kampf',
'FLYING': 'Flug',
'POISON': 'Gift',
'GROUND': 'Boden',
'ROCK': 'Gestein',
'BUG': 'Käfer',
'GHOST': 'Geist',
'STEEL': 'Stahl',
'FIRE': 'Feuer',
'WATER': 'Wasser',
'GRASS': 'Pflanze',
'ELECTRIC': 'Elektro',
'PSYCHIC': 'Psycho',
'ICE': 'Eis',
'DRAGON': 'Drache',
'DARK': 'Unlicht',
'FAIRY': 'Fee',
'STELLAR': 'Stellar',
},
} as const;

File diff suppressed because it is too large Load Diff

View File

@ -1,37 +1,37 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const splashMessages: SimpleTranslationEntries = {
"battlesWon": "Kämpfe gewonnen!",
"joinTheDiscord": "Tritt dem Discord bei!",
"infiniteLevels": "Unendliche Level!",
"everythingStacks": "Alles stapelt sich!",
"optionalSaveScumming": "Optionales Save Scumming!",
"biomes": "35 Biome!",
"openSource": "Open Source!",
"playWithSpeed": "Spiele mit fünffacher Geschwindigkeit!",
"liveBugTesting": "Live-Bug-Tests!",
"heavyInfluence": "Starker RoR2-Einfluss!",
"pokemonRiskAndPokemonRain": "Pokémon Risk and Pokémon Rain!",
"nowWithMoreSalt": "Jetzt mit 33% mehr Salz!",
"infiniteFusionAtHome": "Wir haben Infinite Fusionen zu Hause!",
"brokenEggMoves": "Übermächtige Ei-Attacken!",
"magnificent": "Herrlich!",
"mubstitute": "Melegator!",
"thatsCrazy": "Das ist verrückt!",
"oranceJuice": "Orangensaft!",
"questionableBalancing": "Fragwürdiges Balancing!",
"coolShaders": "Coole Shader!",
"aiFree": "Ohne KI!",
"suddenDifficultySpikes": "Plötzliche Schwierigkeitsspitzen!",
"basedOnAnUnfinishedFlashGame": "Basierend auf einem unfertigen Flash-Spiel!",
"moreAddictiveThanIntended": "Süchtig machender als beabsichtigt!",
"mostlyConsistentSeeds": "Meistens konsistente Seeds!",
"achievementPointsDontDoAnything": "Erungenschaftspunkte tun nichts!",
"youDoNotStartAtLevel": "Du startest nicht auf Level 2000!",
"dontTalkAboutTheManaphyEggIncident": "Wir reden nicht über den Manaphy-Ei-Vorfall!",
"alsoTryPokengine": "Versuche auch Pokéngine!",
"alsoTryEmeraldRogue": "Versuche auch Emerald Rogue!",
"alsoTryRadicalRed": "Versuche auch Radical Red!",
"eeveeExpo": "Evoli-Expo!",
"ynoproject": "YNO-Projekt!",
'battlesWon': 'Kämpfe gewonnen!',
'joinTheDiscord': 'Tritt dem Discord bei!',
'infiniteLevels': 'Unendliche Level!',
'everythingStacks': 'Alles stapelt sich!',
'optionalSaveScumming': 'Optionales Save Scumming!',
'biomes': '35 Biome!',
'openSource': 'Open Source!',
'playWithSpeed': 'Spiele mit fünffacher Geschwindigkeit!',
'liveBugTesting': 'Live-Bug-Tests!',
'heavyInfluence': 'Starker RoR2-Einfluss!',
'pokemonRiskAndPokemonRain': 'Pokémon Risk and Pokémon Rain!',
'nowWithMoreSalt': 'Jetzt mit 33% mehr Salz!',
'infiniteFusionAtHome': 'Wir haben Infinite Fusionen zu Hause!',
'brokenEggMoves': 'Übermächtige Ei-Attacken!',
'magnificent': 'Herrlich!',
'mubstitute': 'Melegator!',
'thatsCrazy': 'Das ist verrückt!',
'oranceJuice': 'Orangensaft!',
'questionableBalancing': 'Fragwürdiges Balancing!',
'coolShaders': 'Coole Shader!',
'aiFree': 'Ohne KI!',
'suddenDifficultySpikes': 'Plötzliche Schwierigkeitsspitzen!',
'basedOnAnUnfinishedFlashGame': 'Basierend auf einem unfertigen Flash-Spiel!',
'moreAddictiveThanIntended': 'Süchtig machender als beabsichtigt!',
'mostlyConsistentSeeds': 'Meistens konsistente Seeds!',
'achievementPointsDontDoAnything': 'Erungenschaftspunkte tun nichts!',
'youDoNotStartAtLevel': 'Du startest nicht auf Level 2000!',
'dontTalkAboutTheManaphyEggIncident': 'Wir reden nicht über den Manaphy-Ei-Vorfall!',
'alsoTryPokengine': 'Versuche auch Pokéngine!',
'alsoTryEmeraldRogue': 'Versuche auch Emerald Rogue!',
'alsoTryRadicalRed': 'Versuche auch Radical Red!',
'eeveeExpo': 'Evoli-Expo!',
'ynoproject': 'YNO-Projekt!',
} as const;

View File

@ -1,4 +1,4 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
/**
* The menu namespace holds most miscellaneous text that isn't directly part of the game's
@ -6,39 +6,39 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
* account interactions, descriptive text, etc.
*/
export const starterSelectUiHandler: SimpleTranslationEntries = {
"confirmStartTeam": "Mit diesen Pokémon losziehen?",
"gen1": "I",
"gen2": "II",
"gen3": "III",
"gen4": "IV",
"gen5": "V",
"gen6": "VI",
"gen7": "VII",
"gen8": "VIII",
"gen9": "IX",
"growthRate": "Wachstum:",
"ability": "Fähgkeit:",
"passive": "Passiv:",
"nature": "Wesen:",
"eggMoves": "Ei-Attacken",
"start": "Start",
"addToParty": "Zum Team hinzufügen",
"toggleIVs": "DVs anzeigen/verbergen",
"manageMoves": "Attacken ändern",
"useCandies": "Bonbons verwenden",
"selectMoveSwapOut": "Wähle die zu ersetzende Attacke.",
"selectMoveSwapWith": "Wähle die gewünschte Attacke.",
"unlockPassive": "Passiv-Skill freischalten",
"reduceCost": "Preis reduzieren",
"cycleShiny": "R: Schillernd Ja/Nein",
"cycleForm": "F: Form ändern",
"cycleGender": "G: Geschlecht ändern",
"cycleAbility": "E: Fähigkeit ändern",
"cycleNature": "N: Wesen Ändern",
"cycleVariant": "V: Seltenheit ändern",
"enablePassive": "Passiv-Skill aktivieren",
"disablePassive": "Passiv-Skill deaktivieren",
"locked": "Gesperrt",
"disabled": "Deaktiviert",
"uncaught": "Ungefangen"
}
'confirmStartTeam': 'Mit diesen Pokémon losziehen?',
'gen1': 'I',
'gen2': 'II',
'gen3': 'III',
'gen4': 'IV',
'gen5': 'V',
'gen6': 'VI',
'gen7': 'VII',
'gen8': 'VIII',
'gen9': 'IX',
'growthRate': 'Wachstum:',
'ability': 'Fähgkeit:',
'passive': 'Passiv:',
'nature': 'Wesen:',
'eggMoves': 'Ei-Attacken',
'start': 'Start',
'addToParty': 'Zum Team hinzufügen',
'toggleIVs': 'DVs anzeigen/verbergen',
'manageMoves': 'Attacken ändern',
'useCandies': 'Bonbons verwenden',
'selectMoveSwapOut': 'Wähle die zu ersetzende Attacke.',
'selectMoveSwapWith': 'Wähle die gewünschte Attacke.',
'unlockPassive': 'Passiv-Skill freischalten',
'reduceCost': 'Preis reduzieren',
'cycleShiny': 'R: Schillernd Ja/Nein',
'cycleForm': 'F: Form ändern',
'cycleGender': 'G: Geschlecht ändern',
'cycleAbility': 'E: Fähigkeit ändern',
'cycleNature': 'N: Wesen Ändern',
'cycleVariant': 'V: Seltenheit ändern',
'enablePassive': 'Passiv-Skill aktivieren',
'disablePassive': 'Passiv-Skill deaktivieren',
'locked': 'Gesperrt',
'disabled': 'Deaktiviert',
'uncaught': 'Ungefangen'
};

View File

@ -1,244 +1,244 @@
import {SimpleTranslationEntries} from "#app/plugins/i18n";
import {SimpleTranslationEntries} from '#app/plugins/i18n';
// Titles of special trainers like gym leaders, elite four, and the champion
export const titles: SimpleTranslationEntries = {
"elite_four": "Top Vier",
"gym_leader": "Arenaleiter",
"gym_leader_female": "Arenaleiterin",
"champion": "Champion",
"rival": "Rivale",
"professor": "Professor",
"frontier_brain": "Kampfkoryphäen",
'elite_four': 'Top Vier',
'gym_leader': 'Arenaleiter',
'gym_leader_female': 'Arenaleiterin',
'champion': 'Champion',
'rival': 'Rivale',
'professor': 'Professor',
'frontier_brain': 'Kampfkoryphäen',
// Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc.
} as const;
// Titles of trainers like "Youngster" or "Lass"
export const trainerClasses: SimpleTranslationEntries = {
"ace_trainer": "Ass-Trainer",
"ace_trainer_female": "Ass-Trainerin",
"ace_duo": "Ass-Duo",
"artist": "Künstler",
"artist_female": "Künstlerin",
"backers": "Anhänger",
"backpacker": "Backpacker",
"backpacker_female": "Backpackerin",
"backpackers": "Backpacker",
"baker": "Bäckerin",
"battle_girl": "Kämpferin",
"beauty": "Schönheit",
"beginners": "Anfänger",
"biker": "Rowdy",
"black_belt": "Schwarzgurt",
"breeder": "Pokémon Züchter",
"breeder_female": "Pokémon Züchterin",
"breeders": "Pokémon Züchter",
"clerk": "Angestellter",
"clerk_female": "Angestellte",
"colleagues": "Geschäftspartner",
"crush_kin": "Mühlensippe",
"cyclist": "Biker",
"cyclist_female": "Bikerin",
"cyclists": "Biker",
"dancer": "Tänzer",
"dancer_female": "Tänzerin",
"depot_agent": "Bahnangestellter",
"doctor": "Arzt",
"doctor_female": "Ärztin",
"fisherman": "Angler",
"fisherman_female": "Angler", // Seems to be the same in german but exists in other languages like italian
"gentleman": "Gentleman",
"guitarist": "Gitarrist",
"guitarist_female": "Gitarristin",
"harlequin": "Kasper",
"hiker": "Wanderer",
"hooligans": "Rabauken",
"hoopster": "Basketballer",
"infielder": "Baseballer",
"janitor": "Hausmeister",
"lady": "Lady",
"lass": "Göre",
"linebacker": "Footballer",
"maid": "Zofe",
"madame": "Madam",
"medical_team": "Mediziner",
"musician": "Musiker",
"hex_maniac": "Hexe",
"nurse": "Pflegerin",
"nursery_aide": "Erzieherin",
"officer": "Polizist",
"parasol_lady": "Schirmdame",
"pilot": "Pilot",
"pokéfan": "Pokéfan",
"pokéfan_female": "Pokéfan",
"pokéfan_family": "Pokéfan-Pärchen",
"preschooler": "Vorschüler",
"preschooler_female": "Vorschülerin",
"preschoolers": "Vorschüler",
"psychic": "Seher",
"psychic_female": "Seherin",
"psychics": "Seher",
"pokémon_ranger": "Pokémon-Ranger",
"pokémon_ranger_female": "Pokémon-Ranger",
"pokémon_rangers": "Pokémon-Ranger",
"ranger": "Ranger",
"restaurant_staff": "Restaurant Angestellte",
"rich": "Rich",
"rich_female": "Rich",
"rich_boy": "Schnösel",
"rich_couple": "Reiches Paar",
"rich_kid": "Rich Kid",
"rich_kid_female": "Rich Kid",
"rich_kids": "Schnösel",
"roughneck": "Raufbold",
"scientist": "Forscher",
"scientist_female": "Forscherin",
"scientists": "Forscher",
"smasher": "Tennis-Ass",
"snow_worker": "Schneearbeiter", // There is a trainer type for this but no actual trainer class? They seem to be just workers but dressed differently
"snow_worker_female": "Schneearbeiterin",
"striker": "Fußballer",
"school_kid": "Schulkind",
"school_kid_female": "Schulkind", // Same in german but different in italian
"school_kids": "Schüler",
"swimmer": "Schwimmer",
"swimmer_female": "Schwimmerin",
"swimmers": "Schwimmerpaar",
"twins": "Zwillinge",
"veteran": "Veteran",
"veteran_female": "Veteran", // same in german, different in other languages
"veteran_duo": "Veteranen",
"waiter": "Servierer",
"waitress": "Serviererin",
"worker": "Arbeiter",
"worker_female": "Arbeiterin",
"workers": "Arbeiter",
"youngster": "Knirps"
'ace_trainer': 'Ass-Trainer',
'ace_trainer_female': 'Ass-Trainerin',
'ace_duo': 'Ass-Duo',
'artist': 'Künstler',
'artist_female': 'Künstlerin',
'backers': 'Anhänger',
'backpacker': 'Backpacker',
'backpacker_female': 'Backpackerin',
'backpackers': 'Backpacker',
'baker': 'Bäckerin',
'battle_girl': 'Kämpferin',
'beauty': 'Schönheit',
'beginners': 'Anfänger',
'biker': 'Rowdy',
'black_belt': 'Schwarzgurt',
'breeder': 'Pokémon Züchter',
'breeder_female': 'Pokémon Züchterin',
'breeders': 'Pokémon Züchter',
'clerk': 'Angestellter',
'clerk_female': 'Angestellte',
'colleagues': 'Geschäftspartner',
'crush_kin': 'Mühlensippe',
'cyclist': 'Biker',
'cyclist_female': 'Bikerin',
'cyclists': 'Biker',
'dancer': 'Tänzer',
'dancer_female': 'Tänzerin',
'depot_agent': 'Bahnangestellter',
'doctor': 'Arzt',
'doctor_female': 'Ärztin',
'fisherman': 'Angler',
'fisherman_female': 'Angler', // Seems to be the same in german but exists in other languages like italian
'gentleman': 'Gentleman',
'guitarist': 'Gitarrist',
'guitarist_female': 'Gitarristin',
'harlequin': 'Kasper',
'hiker': 'Wanderer',
'hooligans': 'Rabauken',
'hoopster': 'Basketballer',
'infielder': 'Baseballer',
'janitor': 'Hausmeister',
'lady': 'Lady',
'lass': 'Göre',
'linebacker': 'Footballer',
'maid': 'Zofe',
'madame': 'Madam',
'medical_team': 'Mediziner',
'musician': 'Musiker',
'hex_maniac': 'Hexe',
'nurse': 'Pflegerin',
'nursery_aide': 'Erzieherin',
'officer': 'Polizist',
'parasol_lady': 'Schirmdame',
'pilot': 'Pilot',
'pokéfan': 'Pokéfan',
'pokéfan_female': 'Pokéfan',
'pokéfan_family': 'Pokéfan-Pärchen',
'preschooler': 'Vorschüler',
'preschooler_female': 'Vorschülerin',
'preschoolers': 'Vorschüler',
'psychic': 'Seher',
'psychic_female': 'Seherin',
'psychics': 'Seher',
'pokémon_ranger': 'Pokémon-Ranger',
'pokémon_ranger_female': 'Pokémon-Ranger',
'pokémon_rangers': 'Pokémon-Ranger',
'ranger': 'Ranger',
'restaurant_staff': 'Restaurant Angestellte',
'rich': 'Rich',
'rich_female': 'Rich',
'rich_boy': 'Schnösel',
'rich_couple': 'Reiches Paar',
'rich_kid': 'Rich Kid',
'rich_kid_female': 'Rich Kid',
'rich_kids': 'Schnösel',
'roughneck': 'Raufbold',
'scientist': 'Forscher',
'scientist_female': 'Forscherin',
'scientists': 'Forscher',
'smasher': 'Tennis-Ass',
'snow_worker': 'Schneearbeiter', // There is a trainer type for this but no actual trainer class? They seem to be just workers but dressed differently
'snow_worker_female': 'Schneearbeiterin',
'striker': 'Fußballer',
'school_kid': 'Schulkind',
'school_kid_female': 'Schulkind', // Same in german but different in italian
'school_kids': 'Schüler',
'swimmer': 'Schwimmer',
'swimmer_female': 'Schwimmerin',
'swimmers': 'Schwimmerpaar',
'twins': 'Zwillinge',
'veteran': 'Veteran',
'veteran_female': 'Veteran', // same in german, different in other languages
'veteran_duo': 'Veteranen',
'waiter': 'Servierer',
'waitress': 'Serviererin',
'worker': 'Arbeiter',
'worker_female': 'Arbeiterin',
'workers': 'Arbeiter',
'youngster': 'Knirps'
} as const;
// Names of special trainers like gym leaders, elite four, and the champion
export const trainerNames: SimpleTranslationEntries = {
"brock": "Rocko",
"misty": "Misty",
"lt_surge": "Major Bob",
"erika": "Erika",
"janine": "Janina",
"sabrina": "Sabrina",
"blaine": "Pyro",
"giovanni": "Giovanni",
"falkner": "Falk",
"bugsy": "Kai",
"whitney": "Bianka",
"morty": "Jens",
"chuck": "Hartwig",
"jasmine": "Jasmin",
"pryce": "Norbert",
"clair": "Sandra",
"roxanne": "Felizia",
"brawly": "Kamillo",
"wattson": "Walter",
"flannery": "Flavia",
"norman": "Norman",
"winona": "Wibke",
"tate": "Ben",
"liza": "Svenja",
"juan": "Juan",
"roark": "Veit",
"gardenia": "Silvana",
"maylene": "Hilda",
"crasher_wake": "Wellenbrecher Marinus",
"fantina": "Lamina",
"byron": "Adam",
"candice": "Frida",
"volkner": "Volkner",
"cilan": "Benny",
"chili": "Maik",
"cress": "Colin",
"cheren": "Cheren",
"lenora": "Aloe",
"roxie": "Mica",
"burgh": "Artie",
"elesa": "Kamilla",
"clay": "Turner",
"skyla": "Géraldine",
"brycen": "Sandro",
"drayden": "Lysander",
"marlon": "Benson",
"viola": "Viola",
"grant": "Lino",
"korrina": "Connie",
"ramos": "Amaro",
"clemont": "Citro",
"valerie": "Valerie",
"olympia": "Astrid",
"wulfric": "Galantho",
"milo": "Yarro",
"nessa": "Kate",
"kabu": "Kabu",
"bea": "Saida",
"allister": "Nio",
"opal": "Papella",
"bede": "Betys",
"gordie": "Mac",
"melony": "Mel",
"piers": "Nezz",
"marnie": "Mary",
"raihan": "Roy",
"katy": "Ronah",
"brassius": "Colzo",
"iono": "Enigmara",
"kofu": "Kombu",
"larry": "Aoki",
"ryme": "Etta",
"tulip": "Tulia",
"grusha": "Grusha",
"lorelei": "Lorelei",
"bruno": "Bruno",
"agatha": "Agathe",
"lance": "Siegfried",
"will": "Willi",
"koga": "Koga",
"karen": "Melanie",
"sidney": "Ulrich",
"phoebe": "Antonia",
"glacia": "Frosina",
"drake": "Dragan",
"aaron": "Herbaro",
"bertha": "Teresa",
"flint": "Ignaz",
"lucian": "Lucian",
"shauntal": "Anissa",
"marshal": "Eugen",
"grimsley": "Astor",
"caitlin": "Kattlea",
"malva": "Pachira",
"siebold": "Narcisse",
"wikstrom": "Thymelot",
"drasna": "Dracena",
"hala": "Hala",
"molayne": "Marlon",
"olivia": "Mayla",
"acerola": "Lola",
"kahili": "Kahili",
"rika": "Cay",
"poppy": "Poppy",
"hassel": "Sinius",
"crispin": "Matt",
"amarys": "Erin",
"lacey": "Tara",
"drayton": "Levy",
"blue": "Blau",
"red": "Rot",
"steven": "Troy",
"wallace": "Wassili",
"cynthia": "Cynthia",
"alder": "Lauro",
"iris": "Lilia",
"diantha": "Diantha",
"hau": "Tali",
"geeta": "Sagaria",
"nemona": "Nemila",
"kieran": "Jo",
"leon": "Delion",
"rival": "Finn",
"rival_female": "Ivy",
'brock': 'Rocko',
'misty': 'Misty',
'lt_surge': 'Major Bob',
'erika': 'Erika',
'janine': 'Janina',
'sabrina': 'Sabrina',
'blaine': 'Pyro',
'giovanni': 'Giovanni',
'falkner': 'Falk',
'bugsy': 'Kai',
'whitney': 'Bianka',
'morty': 'Jens',
'chuck': 'Hartwig',
'jasmine': 'Jasmin',
'pryce': 'Norbert',
'clair': 'Sandra',
'roxanne': 'Felizia',
'brawly': 'Kamillo',
'wattson': 'Walter',
'flannery': 'Flavia',
'norman': 'Norman',
'winona': 'Wibke',
'tate': 'Ben',
'liza': 'Svenja',
'juan': 'Juan',
'roark': 'Veit',
'gardenia': 'Silvana',
'maylene': 'Hilda',
'crasher_wake': 'Wellenbrecher Marinus',
'fantina': 'Lamina',
'byron': 'Adam',
'candice': 'Frida',
'volkner': 'Volkner',
'cilan': 'Benny',
'chili': 'Maik',
'cress': 'Colin',
'cheren': 'Cheren',
'lenora': 'Aloe',
'roxie': 'Mica',
'burgh': 'Artie',
'elesa': 'Kamilla',
'clay': 'Turner',
'skyla': 'Géraldine',
'brycen': 'Sandro',
'drayden': 'Lysander',
'marlon': 'Benson',
'viola': 'Viola',
'grant': 'Lino',
'korrina': 'Connie',
'ramos': 'Amaro',
'clemont': 'Citro',
'valerie': 'Valerie',
'olympia': 'Astrid',
'wulfric': 'Galantho',
'milo': 'Yarro',
'nessa': 'Kate',
'kabu': 'Kabu',
'bea': 'Saida',
'allister': 'Nio',
'opal': 'Papella',
'bede': 'Betys',
'gordie': 'Mac',
'melony': 'Mel',
'piers': 'Nezz',
'marnie': 'Mary',
'raihan': 'Roy',
'katy': 'Ronah',
'brassius': 'Colzo',
'iono': 'Enigmara',
'kofu': 'Kombu',
'larry': 'Aoki',
'ryme': 'Etta',
'tulip': 'Tulia',
'grusha': 'Grusha',
'lorelei': 'Lorelei',
'bruno': 'Bruno',
'agatha': 'Agathe',
'lance': 'Siegfried',
'will': 'Willi',
'koga': 'Koga',
'karen': 'Melanie',
'sidney': 'Ulrich',
'phoebe': 'Antonia',
'glacia': 'Frosina',
'drake': 'Dragan',
'aaron': 'Herbaro',
'bertha': 'Teresa',
'flint': 'Ignaz',
'lucian': 'Lucian',
'shauntal': 'Anissa',
'marshal': 'Eugen',
'grimsley': 'Astor',
'caitlin': 'Kattlea',
'malva': 'Pachira',
'siebold': 'Narcisse',
'wikstrom': 'Thymelot',
'drasna': 'Dracena',
'hala': 'Hala',
'molayne': 'Marlon',
'olivia': 'Mayla',
'acerola': 'Lola',
'kahili': 'Kahili',
'rika': 'Cay',
'poppy': 'Poppy',
'hassel': 'Sinius',
'crispin': 'Matt',
'amarys': 'Erin',
'lacey': 'Tara',
'drayton': 'Levy',
'blue': 'Blau',
'red': 'Rot',
'steven': 'Troy',
'wallace': 'Wassili',
'cynthia': 'Cynthia',
'alder': 'Lauro',
'iris': 'Lilia',
'diantha': 'Diantha',
'hau': 'Tali',
'geeta': 'Sagaria',
'nemona': 'Nemila',
'kieran': 'Jo',
'leon': 'Delion',
'rival': 'Finn',
'rival_female': 'Ivy',
} as const;

View File

@ -1,34 +1,34 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const tutorial: SimpleTranslationEntries = {
"intro": `Willkommen bei PokéRogue! Dies ist ein kampforientiertes Pokémon-Fangame mit Roguelite-Elementen.
'intro': `Willkommen bei PokéRogue! Dies ist ein kampforientiertes Pokémon-Fangame mit Roguelite-Elementen.
$Dieses Spiel ist nicht monetarisiert.
$Wir erheben keinen Eigentumsanspruch an Pokémon oder\nverwendeten, urheberrechtlich geschützten Inhalten.
$Das Spiel befindet sich noch in der Entwicklung, ist aber voll spielbar.
$Für Fehlerberichte nutze bitte den PokéRogue Discord-Server.
$Sollte das Spiel langsam laufen, überprüfe, ob in deinem Browser "Hardwarebeschleunigung" aktiviert ist.`,
"accessMenu": `Nutze M oder Esc, um das Menü zu öffnen. Dort hast du Zugriff auf die Einstellungen und andere Funktionen.`,
'accessMenu': 'Nutze M oder Esc, um das Menü zu öffnen. Dort hast du Zugriff auf die Einstellungen und andere Funktionen.',
"menu": `In diesem Menü hast du Zugriff auf die Einstellungen.
'menu': `In diesem Menü hast du Zugriff auf die Einstellungen.
$Dort kannst du u. A. die Spielgeschwin-\ndigkeit und das Fensterdesign ändern.
$Das Menü verbirgt noch andere Funktionen - probier' sie gerne aus!`,
"starterSelect": `Hier kannst du deine Starter-Pokémon auswählen.\nSie begleiten dich am Anfang deines Abenteuers.
'starterSelect': `Hier kannst du deine Starter-Pokémon auswählen.\nSie begleiten dich am Anfang deines Abenteuers.
$Jeder Starter hat einen Preis. Dein Team kann bis zu sechs\nMitglieder haben, solange der Gesamtpreis max. 10 beträgt.
$Du kannst Geschlecht, Fähigkeit und Form beliebig auswählen,\nsobald du sie mindestens einmal gefangen hast.
$Die DVs ergeben sich aus den Höchstwerten aller Pokémon,\ndie du bereits gefangen hast.
$Es lohnt sich also, das selbe Pokémon mehrmals zu fangen!`,
"pokerus": `Jeden Tag haben drei zufällige Pokémon einen lila Rahmen.
'pokerus': `Jeden Tag haben drei zufällige Pokémon einen lila Rahmen.
$Wenn du eins von ihnen besitzt,
$nimm es doch mal mit und sieh dir seinen Bericht an!`,
"statChange": `Statuswertveränderungen halten solange an, wie dein Pokémon auf dem Feld bleibt.
'statChange': `Statuswertveränderungen halten solange an, wie dein Pokémon auf dem Feld bleibt.
$Pokémon werden am Anfang eines Trainerkampfes oder bei einem Arealwechsel automatisch zurückgerufen.
$Nutze C oder Shift, um aktuelle Statuswertveränderungen anzuzeigen.`,
"selectItem": `Nach jedem Kampf kannst du aus 3 zufälligen Items exakt eines auswählen.
'selectItem': `Nach jedem Kampf kannst du aus 3 zufälligen Items exakt eines auswählen.
$Es gibt u. A. Heilitems, tragbare Items und Basis-Items, die dir einen permanenten Vorteil verschaffen.
$Die meisten tragbaren und permanenten Items werden stärker, wenn du sie mehrfach sammelst.
$Manche Items, wie Entwicklungssteine, tauchen nur auf, wenn du sie auch nutzen kannst.
@ -37,7 +37,7 @@ export const tutorial: SimpleTranslationEntries = {
$Du kannst Heilitems auch gegen Geld erwerben. Je weiter du kommst, desto mehr stehen dir zur Auswahl.
$Erledige deine Einkäufe als erstes, denn sobald du dein zufälliges Item auswählst, beginnt der nächste Kampf.`,
"eggGacha": `Hier kannst du deine Gutscheine gegen Pokémon-Eier\ntauschen.
'eggGacha': `Hier kannst du deine Gutscheine gegen Pokémon-Eier\ntauschen.
$Eier schlüpfen, nachdem du eine gewisse Anzahl Kämpfe\nabsolviert hast. Je seltener das Ei, desto länger dauert es.
$Geschlüpfte Pokémon werden nicht deinem Team hinzugefügt,\nsondern deinen verfügbaren Startern.
$In der Regel haben sie bessere DVs als in der Wildnis\ngefangene Pokémon.

View File

@ -1,11 +1,11 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const voucher: SimpleTranslationEntries = {
"vouchers": "Vouchers",
"eggVoucher": "Egg Voucher",
"eggVoucherPlus": "Egg Voucher Plus",
"eggVoucherPremium": "Egg Voucher Premium",
"eggVoucherGold": "Egg Voucher Gold",
"locked": "Locked",
"defeatTrainer": "Defeat {{trainerName}}"
'vouchers': 'Vouchers',
'eggVoucher': 'Egg Voucher',
'eggVoucherPlus': 'Egg Voucher Plus',
'eggVoucherPremium': 'Egg Voucher Premium',
'eggVoucherGold': 'Egg Voucher Gold',
'locked': 'Locked',
'defeatTrainer': 'Defeat {{trainerName}}'
} as const;

View File

@ -1,44 +1,44 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
/**
* The weather namespace holds text displayed when weather is active during a battle
*/
export const weather: SimpleTranslationEntries = {
"sunnyStartMessage": "Die Sonnenlicht wird stärker!",
"sunnyLapseMessage": "Die Sonnenlicht ist stark.",
"sunnyClearMessage": "Die Sonnenlicht verliert wieder an Intensität.",
'sunnyStartMessage': 'Die Sonnenlicht wird stärker!',
'sunnyLapseMessage': 'Die Sonnenlicht ist stark.',
'sunnyClearMessage': 'Die Sonnenlicht verliert wieder an Intensität.',
"rainStartMessage": "Es fängt an zu regnen!",
"rainLapseMessage": "Es regnet weiter.",
"rainClearMessage": "Der Regen lässt nach.",
'rainStartMessage': 'Es fängt an zu regnen!',
'rainLapseMessage': 'Es regnet weiter.',
'rainClearMessage': 'Der Regen lässt nach.',
"sandstormStartMessage": "Ein Sandsturm kommt auf!",
"sandstormLapseMessage": "Der Sandsturm tobt.",
"sandstormClearMessage": "Der Sandsturm legt sich.",
"sandstormDamageMessage": " Der Sandsturm fügt {{pokemonPrefix}}{{pokemonName}} Schaden zu!",
'sandstormStartMessage': 'Ein Sandsturm kommt auf!',
'sandstormLapseMessage': 'Der Sandsturm tobt.',
'sandstormClearMessage': 'Der Sandsturm legt sich.',
'sandstormDamageMessage': ' Der Sandsturm fügt {{pokemonPrefix}}{{pokemonName}} Schaden zu!',
"hailStartMessage": "Es fängt an zu hageln!",
"hailLapseMessage": "Der Hagelsturm tobt.",
"hailClearMessage": "Der Hagelsturm legt sich.",
"hailDamageMessage": "{{pokemonPrefix}}{{pokemonName}} wird von Hagelkörnern getroffen!",
'hailStartMessage': 'Es fängt an zu hageln!',
'hailLapseMessage': 'Der Hagelsturm tobt.',
'hailClearMessage': 'Der Hagelsturm legt sich.',
'hailDamageMessage': '{{pokemonPrefix}}{{pokemonName}} wird von Hagelkörnern getroffen!',
"snowStartMessage": "Es fängt an zu schneien!",
"snowLapseMessage": "Der Schneesturm tobt.",
"snowClearMessage": "Der Schneesturm legt sich.",
'snowStartMessage': 'Es fängt an zu schneien!',
'snowLapseMessage': 'Der Schneesturm tobt.',
'snowClearMessage': 'Der Schneesturm legt sich.',
"fogStartMessage": "Am Boden breitet sich dichter Nebel aus!",
"fogLapseMessage": "Der Nebel bleibt dicht.",
"fogClearMessage": "Der Nebel lichtet sich.",
'fogStartMessage': 'Am Boden breitet sich dichter Nebel aus!',
'fogLapseMessage': 'Der Nebel bleibt dicht.',
'fogClearMessage': 'Der Nebel lichtet sich.',
"heavyRainStartMessage": "Es fängt an, in Strömen zu regnen!",
"heavyRainLapseMessage": "Der strömende Regen hält an.",
"heavyRainClearMessage": "Der strömende Regen lässt nach.",
'heavyRainStartMessage': 'Es fängt an, in Strömen zu regnen!',
'heavyRainLapseMessage': 'Der strömende Regen hält an.',
'heavyRainClearMessage': 'Der strömende Regen lässt nach.',
"harshSunStartMessage": "Das Sonnenlicht wird sehr viel stärker!",
"harshSunLapseMessage": "Das Sonnenlicht ist sehr stark.",
"harshSunClearMessage": "Das Sonnenlicht verliert an Intensität.",
'harshSunStartMessage': 'Das Sonnenlicht wird sehr viel stärker!',
'harshSunLapseMessage': 'Das Sonnenlicht ist sehr stark.',
'harshSunClearMessage': 'Das Sonnenlicht verliert an Intensität.',
"strongWindsStartMessage": "Alle Flug-Pokémon werden von rätselhaften Luftströmungen geschützt!",
"strongWindsLapseMessage": "Die rätselhafte Luftströmung hält an.",
"strongWindsClearMessage": "Die rätselhafte Luftströmung hat sich wieder geleget.",
}
'strongWindsStartMessage': 'Alle Flug-Pokémon werden von rätselhaften Luftströmungen geschützt!',
'strongWindsLapseMessage': 'Die rätselhafte Luftströmung hält an.',
'strongWindsClearMessage': 'Die rätselhafte Luftströmung hat sich wieder geleget.',
};

View File

@ -1,6 +1,6 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const abilityTriggers: SimpleTranslationEntries = {
'blockRecoilDamage' : `{{pokemonName}}'s {{abilityName}}\nprotected it from recoil!`,
'badDreams': `{{pokemonName}} is tormented!`,
'blockRecoilDamage' : '{{pokemonName}}\'s {{abilityName}}\nprotected it from recoil!',
'badDreams': '{{pokemonName}} is tormented!',
} as const;

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const battleMessageUiHandler: SimpleTranslationEntries = {
"ivBest": "Best",
"ivFantastic": "Fantastic",
"ivVeryGood": "Very Good",
"ivPrettyGood": "Pretty Good",
"ivDecent": "Decent",
"ivNoGood": "No Good",
'ivBest': 'Best',
'ivFantastic': 'Fantastic',
'ivVeryGood': 'Very Good',
'ivPrettyGood': 'Pretty Good',
'ivDecent': 'Decent',
'ivNoGood': 'No Good',
} as const;

View File

@ -1,56 +1,56 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const battle: SimpleTranslationEntries = {
"bossAppeared": "{{bossName}} appeared.",
"trainerAppeared": "{{trainerName}}\nwould like to battle!",
"trainerAppearedDouble": "{{trainerName}}\nwould like to battle!",
"singleWildAppeared": "A wild {{pokemonName}} appeared!",
"multiWildAppeared": "A wild {{pokemonName1}}\nand {{pokemonName2}} appeared!",
"playerComeBack": "Come back, {{pokemonName}}!",
"trainerComeBack": "{{trainerName}} withdrew {{pokemonName}}!",
"playerGo": "Go! {{pokemonName}}!",
"trainerGo": "{{trainerName}} sent out {{pokemonName}}!",
"switchQuestion": "Will you switch\n{{pokemonName}}?",
"trainerDefeated": `You defeated\n{{trainerName}}!`,
"pokemonCaught": "{{pokemonName}} was caught!",
"pokemon": "Pokémon",
"sendOutPokemon": "Go! {{pokemonName}}!",
"hitResultCriticalHit": "A critical hit!",
"hitResultSuperEffective": "It's super effective!",
"hitResultNotVeryEffective": "It's not very effective…",
"hitResultNoEffect": "It doesn't affect {{pokemonName}}!",
"hitResultOneHitKO": "It's a one-hit KO!",
"attackFailed": "But it failed!",
"attackHitsCount": `Hit {{count}} time(s)!`,
"expGain": "{{pokemonName}} gained\n{{exp}} EXP. Points!",
"levelUp": "{{pokemonName}} grew to\nLv. {{level}}!",
"learnMove": "{{pokemonName}} learned\n{{moveName}}!",
"learnMovePrompt": "{{pokemonName}} wants to learn the\nmove {{moveName}}.",
"learnMoveLimitReached": "However, {{pokemonName}} already\nknows four moves.",
"learnMoveReplaceQuestion": "Should a move be forgotten and\nreplaced with {{moveName}}?",
"learnMoveStopTeaching": "Stop trying to teach\n{{moveName}}?",
"learnMoveNotLearned": "{{pokemonName}} did not learn the\nmove {{moveName}}.",
"learnMoveForgetQuestion": "Which move should be forgotten?",
"learnMoveForgetSuccess": "{{pokemonName}} forgot how to\nuse {{moveName}}.",
"countdownPoof": "@d{32}1, @d{15}2, and@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}Poof!",
"learnMoveAnd": "And…",
"levelCapUp": "The level cap\nhas increased to {{levelCap}}!",
"moveNotImplemented": "{{moveName}} is not yet implemented and cannot be selected.",
"moveNoPP": "There's no PP left for\nthis move!",
"moveDisabled": "{{moveName}} is disabled!",
"noPokeballForce": "An unseen force\nprevents using Poké Balls.",
"noPokeballTrainer": "You can't catch\nanother trainer's Pokémon!",
"noPokeballMulti": "You can only throw a Poké Ball\nwhen there is one Pokémon remaining!",
"noPokeballStrong": "The target Pokémon is too strong to be caught!\nYou need to weaken it first!",
"noEscapeForce": "An unseen force\nprevents escape.",
"noEscapeTrainer": "You can't run\nfrom a trainer battle!",
"noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nprevents {{escapeVerb}}!",
"runAwaySuccess": "You got away safely!",
"runAwayCannotEscape": 'You can\'t escape!',
"escapeVerbSwitch": "switching",
"escapeVerbFlee": "fleeing",
"notDisabled": "{{pokemonName}}'s {{moveName}} is disabled\nno more!",
"skipItemQuestion": "Are you sure you want to skip taking an item?",
"eggHatching": "Oh?",
"ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?"
'bossAppeared': '{{bossName}} appeared.',
'trainerAppeared': '{{trainerName}}\nwould like to battle!',
'trainerAppearedDouble': '{{trainerName}}\nwould like to battle!',
'singleWildAppeared': 'A wild {{pokemonName}} appeared!',
'multiWildAppeared': 'A wild {{pokemonName1}}\nand {{pokemonName2}} appeared!',
'playerComeBack': 'Come back, {{pokemonName}}!',
'trainerComeBack': '{{trainerName}} withdrew {{pokemonName}}!',
'playerGo': 'Go! {{pokemonName}}!',
'trainerGo': '{{trainerName}} sent out {{pokemonName}}!',
'switchQuestion': 'Will you switch\n{{pokemonName}}?',
'trainerDefeated': 'You defeated\n{{trainerName}}!',
'pokemonCaught': '{{pokemonName}} was caught!',
'pokemon': 'Pokémon',
'sendOutPokemon': 'Go! {{pokemonName}}!',
'hitResultCriticalHit': 'A critical hit!',
'hitResultSuperEffective': 'It\'s super effective!',
'hitResultNotVeryEffective': 'It\'s not very effective…',
'hitResultNoEffect': 'It doesn\'t affect {{pokemonName}}!',
'hitResultOneHitKO': 'It\'s a one-hit KO!',
'attackFailed': 'But it failed!',
'attackHitsCount': 'Hit {{count}} time(s)!',
'expGain': '{{pokemonName}} gained\n{{exp}} EXP. Points!',
'levelUp': '{{pokemonName}} grew to\nLv. {{level}}!',
'learnMove': '{{pokemonName}} learned\n{{moveName}}!',
'learnMovePrompt': '{{pokemonName}} wants to learn the\nmove {{moveName}}.',
'learnMoveLimitReached': 'However, {{pokemonName}} already\nknows four moves.',
'learnMoveReplaceQuestion': 'Should a move be forgotten and\nreplaced with {{moveName}}?',
'learnMoveStopTeaching': 'Stop trying to teach\n{{moveName}}?',
'learnMoveNotLearned': '{{pokemonName}} did not learn the\nmove {{moveName}}.',
'learnMoveForgetQuestion': 'Which move should be forgotten?',
'learnMoveForgetSuccess': '{{pokemonName}} forgot how to\nuse {{moveName}}.',
'countdownPoof': '@d{32}1, @d{15}2, and@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}Poof!',
'learnMoveAnd': 'And…',
'levelCapUp': 'The level cap\nhas increased to {{levelCap}}!',
'moveNotImplemented': '{{moveName}} is not yet implemented and cannot be selected.',
'moveNoPP': 'There\'s no PP left for\nthis move!',
'moveDisabled': '{{moveName}} is disabled!',
'noPokeballForce': 'An unseen force\nprevents using Poké Balls.',
'noPokeballTrainer': 'You can\'t catch\nanother trainer\'s Pokémon!',
'noPokeballMulti': 'You can only throw a Poké Ball\nwhen there is one Pokémon remaining!',
'noPokeballStrong': 'The target Pokémon is too strong to be caught!\nYou need to weaken it first!',
'noEscapeForce': 'An unseen force\nprevents escape.',
'noEscapeTrainer': 'You can\'t run\nfrom a trainer battle!',
'noEscapePokemon': '{{pokemonName}}\'s {{moveName}}\nprevents {{escapeVerb}}!',
'runAwaySuccess': 'You got away safely!',
'runAwayCannotEscape': 'You can\'t escape!',
'escapeVerbSwitch': 'switching',
'escapeVerbFlee': 'fleeing',
'notDisabled': '{{pokemonName}}\'s {{moveName}} is disabled\nno more!',
'skipItemQuestion': 'Are you sure you want to skip taking an item?',
'eggHatching': 'Oh?',
'ivScannerUseQuestion': 'Use IV Scanner on {{pokemonName}}?'
} as const;

View File

@ -1,48 +1,48 @@
import { BerryTranslationEntries } from "#app/plugins/i18n";
import { BerryTranslationEntries } from '#app/plugins/i18n';
export const berry: BerryTranslationEntries = {
"SITRUS": {
name: "Sitrus Berry",
effect: "Restores 25% HP if HP is below 50%",
'SITRUS': {
name: 'Sitrus Berry',
effect: 'Restores 25% HP if HP is below 50%',
},
"LUM": {
name: "Lum Berry",
effect: "Cures any non-volatile status condition and confusion",
'LUM': {
name: 'Lum Berry',
effect: 'Cures any non-volatile status condition and confusion',
},
"ENIGMA": {
name: "Enigma Berry",
effect: "Restores 25% HP if hit by a super effective move",
'ENIGMA': {
name: 'Enigma Berry',
effect: 'Restores 25% HP if hit by a super effective move',
},
"LIECHI": {
name: "Liechi Berry",
effect: "Raises Attack if HP is below 25%",
'LIECHI': {
name: 'Liechi Berry',
effect: 'Raises Attack if HP is below 25%',
},
"GANLON": {
name: "Ganlon Berry",
effect: "Raises Defense if HP is below 25%",
'GANLON': {
name: 'Ganlon Berry',
effect: 'Raises Defense if HP is below 25%',
},
"PETAYA": {
name: "Petaya Berry",
effect: "Raises Sp. Atk if HP is below 25%",
'PETAYA': {
name: 'Petaya Berry',
effect: 'Raises Sp. Atk if HP is below 25%',
},
"APICOT": {
name: "Apicot Berry",
effect: "Raises Sp. Def if HP is below 25%",
'APICOT': {
name: 'Apicot Berry',
effect: 'Raises Sp. Def if HP is below 25%',
},
"SALAC": {
name: "Salac Berry",
effect: "Raises Speed if HP is below 25%",
'SALAC': {
name: 'Salac Berry',
effect: 'Raises Speed if HP is below 25%',
},
"LANSAT": {
name: "Lansat Berry",
effect: "Raises critical hit ratio if HP is below 25%",
'LANSAT': {
name: 'Lansat Berry',
effect: 'Raises critical hit ratio if HP is below 25%',
},
"STARF": {
name: "Starf Berry",
effect: "Sharply raises a random stat if HP is below 25%",
'STARF': {
name: 'Starf Berry',
effect: 'Sharply raises a random stat if HP is below 25%',
},
"LEPPA": {
name: "Leppa Berry",
effect: "Restores 10 PP to a move if its PP reaches 0",
'LEPPA': {
name: 'Leppa Berry',
effect: 'Restores 10 PP to a move if its PP reaches 0',
},
} as const;

View File

@ -1,9 +1,9 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const commandUiHandler: SimpleTranslationEntries = {
"fight": "Fight",
"ball": "Ball",
"pokemon": "Pokémon",
"run": "Run",
"actionMessage": "What will\n{{pokemonName}} do?",
'fight': 'Fight',
'ball': 'Ball',
'pokemon': 'Pokémon',
'run': 'Run',
'actionMessage': 'What will\n{{pokemonName}} do?',
} as const;

View File

@ -1,26 +1,26 @@
import { ability } from "./ability";
import { abilityTriggers } from "./ability-trigger";
import { battle } from "./battle";
import { commandUiHandler } from "./command-ui-handler";
import { egg } from "./egg";
import { fightUiHandler } from "./fight-ui-handler";
import { growth } from "./growth";
import { menu } from "./menu";
import { menuUiHandler } from "./menu-ui-handler";
import { modifierType } from "./modifier-type";
import { move } from "./move";
import { nature } from "./nature";
import { pokeball } from "./pokeball";
import { pokemon } from "./pokemon";
import { pokemonInfo } from "./pokemon-info";
import { splashMessages } from "./splash-messages";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { titles, trainerClasses, trainerNames } from "./trainers";
import { tutorial } from "./tutorial";
import { weather } from "./weather";
import { battleMessageUiHandler } from "./battle-message-ui-handler";
import { berry } from "./berry";
import { voucher } from "./voucher";
import { ability } from './ability';
import { abilityTriggers } from './ability-trigger';
import { battle } from './battle';
import { commandUiHandler } from './command-ui-handler';
import { egg } from './egg';
import { fightUiHandler } from './fight-ui-handler';
import { growth } from './growth';
import { menu } from './menu';
import { menuUiHandler } from './menu-ui-handler';
import { modifierType } from './modifier-type';
import { move } from './move';
import { nature } from './nature';
import { pokeball } from './pokeball';
import { pokemon } from './pokemon';
import { pokemonInfo } from './pokemon-info';
import { splashMessages } from './splash-messages';
import { starterSelectUiHandler } from './starter-select-ui-handler';
import { titles, trainerClasses, trainerNames } from './trainers';
import { tutorial } from './tutorial';
import { weather } from './weather';
import { battleMessageUiHandler } from './battle-message-ui-handler';
import { berry } from './berry';
import { voucher } from './voucher';
export const enConfig = {
ability: ability,
@ -48,4 +48,4 @@ export const enConfig = {
battleMessageUiHandler: battleMessageUiHandler,
berry: berry,
voucher: voucher,
}
};

View File

@ -1,21 +1,21 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const egg: SimpleTranslationEntries = {
"egg": "Egg",
"greatTier": "Rare",
"ultraTier": "Epic",
"masterTier": "Legendary",
"defaultTier": "Common",
"hatchWavesMessageSoon": "Sounds can be heard coming from inside! It will hatch soon!",
"hatchWavesMessageClose": "It appears to move occasionally. It may be close to hatching.",
"hatchWavesMessageNotClose": "What will hatch from this? It doesn't seem close to hatching.",
"hatchWavesMessageLongTime": "It looks like this Egg will take a long time to hatch.",
"gachaTypeLegendary": "Legendary Rate Up",
"gachaTypeMove": "Rare Egg Move Rate Up",
"gachaTypeShiny": "Shiny Rate Up",
"selectMachine": "Select a machine.",
"notEnoughVouchers": "You don't have enough vouchers!",
"tooManyEggs": "You have too many eggs!",
"pull": "Pull",
"pulls": "Pulls"
'egg': 'Egg',
'greatTier': 'Rare',
'ultraTier': 'Epic',
'masterTier': 'Legendary',
'defaultTier': 'Common',
'hatchWavesMessageSoon': 'Sounds can be heard coming from inside! It will hatch soon!',
'hatchWavesMessageClose': 'It appears to move occasionally. It may be close to hatching.',
'hatchWavesMessageNotClose': 'What will hatch from this? It doesn\'t seem close to hatching.',
'hatchWavesMessageLongTime': 'It looks like this Egg will take a long time to hatch.',
'gachaTypeLegendary': 'Legendary Rate Up',
'gachaTypeMove': 'Rare Egg Move Rate Up',
'gachaTypeShiny': 'Shiny Rate Up',
'selectMachine': 'Select a machine.',
'notEnoughVouchers': 'You don\'t have enough vouchers!',
'tooManyEggs': 'You have too many eggs!',
'pull': 'Pull',
'pulls': 'Pulls'
} as const;

View File

@ -1,7 +1,7 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const fightUiHandler: SimpleTranslationEntries = {
"pp": "PP",
"power": "Power",
"accuracy": "Accuracy",
'pp': 'PP',
'power': 'Power',
'accuracy': 'Accuracy',
} as const;

View File

@ -1,10 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const growth: SimpleTranslationEntries = {
"Erratic": "Erratic",
"Fast": "Fast",
"Medium_Fast": "Medium Fast",
"Medium_Slow": "Medium Slow",
"Slow": "Slow",
"Fluctuating": "Fluctuating"
'Erratic': 'Erratic',
'Fast': 'Fast',
'Medium_Fast': 'Medium Fast',
'Medium_Slow': 'Medium Slow',
'Slow': 'Slow',
'Fluctuating': 'Fluctuating'
} as const;

View File

@ -1,23 +1,23 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const menuUiHandler: SimpleTranslationEntries = {
"GAME_SETTINGS": 'Game Settings',
"ACHIEVEMENTS": "Achievements",
"STATS": "Stats",
"VOUCHERS": "Vouchers",
"EGG_LIST": "Egg List",
"EGG_GACHA": "Egg Gacha",
"MANAGE_DATA": "Manage Data",
"COMMUNITY": "Community",
"SAVE_AND_QUIT": "Save and Quit",
"LOG_OUT": "Log Out",
"slot": "Slot {{slotNumber}}",
"importSession": "Import Session",
"importSlotSelect": "Select a slot to import to.",
"exportSession": "Export Session",
"exportSlotSelect": "Select a slot to export from.",
"importData": "Import Data",
"exportData": "Export Data",
"cancel": "Cancel",
"losingProgressionWarning": "You will lose any progress since the beginning of the battle. Proceed?"
'GAME_SETTINGS': 'Game Settings',
'ACHIEVEMENTS': 'Achievements',
'STATS': 'Stats',
'VOUCHERS': 'Vouchers',
'EGG_LIST': 'Egg List',
'EGG_GACHA': 'Egg Gacha',
'MANAGE_DATA': 'Manage Data',
'COMMUNITY': 'Community',
'SAVE_AND_QUIT': 'Save and Quit',
'LOG_OUT': 'Log Out',
'slot': 'Slot {{slotNumber}}',
'importSession': 'Import Session',
'importSlotSelect': 'Select a slot to import to.',
'exportSession': 'Export Session',
'exportSlotSelect': 'Select a slot to export from.',
'importData': 'Import Data',
'exportData': 'Export Data',
'cancel': 'Cancel',
'losingProgressionWarning': 'You will lose any progress since the beginning of the battle. Proceed?'
} as const;

View File

@ -1,4 +1,4 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
/**
* The menu namespace holds most miscellaneous text that isn't directly part of the game's
@ -6,46 +6,46 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
* account interactions, descriptive text, etc.
*/
export const menu: SimpleTranslationEntries = {
"cancel": "Cancel",
"continue": "Continue",
"dailyRun": "Daily Run (Beta)",
"loadGame": "Load Game",
"newGame": "New Game",
"selectGameMode": "Select a game mode.",
"logInOrCreateAccount": "Log in or create an account to start. No email required!",
"username": "Username",
"password": "Password",
"login": "Login",
"register": "Register",
"emptyUsername": "Username must not be empty",
"invalidLoginUsername": "The provided username is invalid",
"invalidRegisterUsername": "Username must only contain letters, numbers, or underscores",
"invalidLoginPassword": "The provided password is invalid",
"invalidRegisterPassword": "Password must be 6 characters or longer",
"usernameAlreadyUsed": "The provided username is already in use",
"accountNonExistent": "The provided user does not exist",
"unmatchingPassword": "The provided password does not match",
"passwordNotMatchingConfirmPassword": "Password must match confirm password",
"confirmPassword": "Confirm Password",
"registrationAgeWarning": "By registering, you confirm you are of 13 years of age or older.",
"backToLogin": "Back to Login",
"failedToLoadSaveData": "Failed to load save data. Please reload the page.\nIf this continues, please contact the administrator.",
"sessionSuccess": "Session loaded successfully.",
"failedToLoadSession": "Your session data could not be loaded.\nIt may be corrupted.",
"boyOrGirl": "Are you a boy or a girl?",
"boy": "Boy",
"girl": "Girl",
"evolving": "What?\n{{pokemonName}} is evolving!",
"stoppedEvolving": "{{pokemonName}} stopped evolving.",
"pauseEvolutionsQuestion": "Would you like to pause evolutions for {{pokemonName}}?\nEvolutions can be re-enabled from the party screen.",
"evolutionsPaused": "Evolutions have been paused for {{pokemonName}}.",
"evolutionDone": "Congratulations!\nYour {{pokemonName}} evolved into {{evolvedPokemonName}}!",
"dailyRankings": "Daily Rankings",
"weeklyRankings": "Weekly Rankings",
"noRankings": "No Rankings",
"loading": "Loading…",
"playersOnline": "Players Online",
"empty":"Empty",
"yes":"Yes",
"no":"No",
'cancel': 'Cancel',
'continue': 'Continue',
'dailyRun': 'Daily Run (Beta)',
'loadGame': 'Load Game',
'newGame': 'New Game',
'selectGameMode': 'Select a game mode.',
'logInOrCreateAccount': 'Log in or create an account to start. No email required!',
'username': 'Username',
'password': 'Password',
'login': 'Login',
'register': 'Register',
'emptyUsername': 'Username must not be empty',
'invalidLoginUsername': 'The provided username is invalid',
'invalidRegisterUsername': 'Username must only contain letters, numbers, or underscores',
'invalidLoginPassword': 'The provided password is invalid',
'invalidRegisterPassword': 'Password must be 6 characters or longer',
'usernameAlreadyUsed': 'The provided username is already in use',
'accountNonExistent': 'The provided user does not exist',
'unmatchingPassword': 'The provided password does not match',
'passwordNotMatchingConfirmPassword': 'Password must match confirm password',
'confirmPassword': 'Confirm Password',
'registrationAgeWarning': 'By registering, you confirm you are of 13 years of age or older.',
'backToLogin': 'Back to Login',
'failedToLoadSaveData': 'Failed to load save data. Please reload the page.\nIf this continues, please contact the administrator.',
'sessionSuccess': 'Session loaded successfully.',
'failedToLoadSession': 'Your session data could not be loaded.\nIt may be corrupted.',
'boyOrGirl': 'Are you a boy or a girl?',
'boy': 'Boy',
'girl': 'Girl',
'evolving': 'What?\n{{pokemonName}} is evolving!',
'stoppedEvolving': '{{pokemonName}} stopped evolving.',
'pauseEvolutionsQuestion': 'Would you like to pause evolutions for {{pokemonName}}?\nEvolutions can be re-enabled from the party screen.',
'evolutionsPaused': 'Evolutions have been paused for {{pokemonName}}.',
'evolutionDone': 'Congratulations!\nYour {{pokemonName}} evolved into {{evolvedPokemonName}}!',
'dailyRankings': 'Daily Rankings',
'weeklyRankings': 'Weekly Rankings',
'noRankings': 'No Rankings',
'loading': 'Loading…',
'playersOnline': 'Players Online',
'empty':'Empty',
'yes':'Yes',
'no':'No',
} as const;

View File

@ -1,387 +1,387 @@
import { ModifierTypeTranslationEntries } from "#app/plugins/i18n";
import { ModifierTypeTranslationEntries } from '#app/plugins/i18n';
export const modifierType: ModifierTypeTranslationEntries = {
ModifierType: {
"AddPokeballModifierType": {
name: "{{modifierCount}}x {{pokeballName}}",
description: "Receive {{pokeballName}} x{{modifierCount}} (Inventory: {{pokeballAmount}}) \nCatch Rate: {{catchRate}}",
'AddPokeballModifierType': {
name: '{{modifierCount}}x {{pokeballName}}',
description: 'Receive {{pokeballName}} x{{modifierCount}} (Inventory: {{pokeballAmount}}) \nCatch Rate: {{catchRate}}',
},
"AddVoucherModifierType": {
name: "{{modifierCount}}x {{voucherTypeName}}",
description: "Receive {{voucherTypeName}} x{{modifierCount}}",
'AddVoucherModifierType': {
name: '{{modifierCount}}x {{voucherTypeName}}',
description: 'Receive {{voucherTypeName}} x{{modifierCount}}',
},
"PokemonHeldItemModifierType": {
'PokemonHeldItemModifierType': {
extra: {
"inoperable": "{{pokemonName}} can't take\nthis item!",
"tooMany": "{{pokemonName}} has too many\nof this item!",
'inoperable': '{{pokemonName}} can\'t take\nthis item!',
'tooMany': '{{pokemonName}} has too many\nof this item!',
}
},
"PokemonHpRestoreModifierType": {
description: "Restores {{restorePoints}} HP or {{restorePercent}}% HP for one Pokémon, whichever is higher",
'PokemonHpRestoreModifierType': {
description: 'Restores {{restorePoints}} HP or {{restorePercent}}% HP for one Pokémon, whichever is higher',
extra: {
"fully": "Fully restores HP for one Pokémon",
"fullyWithStatus": "Fully restores HP for one Pokémon and heals any status ailment",
'fully': 'Fully restores HP for one Pokémon',
'fullyWithStatus': 'Fully restores HP for one Pokémon and heals any status ailment',
}
},
"PokemonReviveModifierType": {
description: "Revives one Pokémon and restores {{restorePercent}}% HP",
'PokemonReviveModifierType': {
description: 'Revives one Pokémon and restores {{restorePercent}}% HP',
},
"PokemonStatusHealModifierType": {
description: "Heals any status ailment for one Pokémon",
'PokemonStatusHealModifierType': {
description: 'Heals any status ailment for one Pokémon',
},
"PokemonPpRestoreModifierType": {
description: "Restores {{restorePoints}} PP for one Pokémon move",
'PokemonPpRestoreModifierType': {
description: 'Restores {{restorePoints}} PP for one Pokémon move',
extra: {
"fully": "Restores all PP for one Pokémon move",
'fully': 'Restores all PP for one Pokémon move',
}
},
"PokemonAllMovePpRestoreModifierType": {
description: "Restores {{restorePoints}} PP for all of one Pokémon's moves",
'PokemonAllMovePpRestoreModifierType': {
description: 'Restores {{restorePoints}} PP for all of one Pokémon\'s moves',
extra: {
"fully": "Restores all PP for all of one Pokémon's moves",
'fully': 'Restores all PP for all of one Pokémon\'s moves',
}
},
"PokemonPpUpModifierType": {
description: "Permanently increases PP for one Pokémon move by {{upPoints}} for every 5 maximum PP (maximum 3)",
'PokemonPpUpModifierType': {
description: 'Permanently increases PP for one Pokémon move by {{upPoints}} for every 5 maximum PP (maximum 3)',
},
"PokemonNatureChangeModifierType": {
name: "{{natureName}} Mint",
description: "Changes a Pokémon's nature to {{natureName}} and permanently unlocks the nature for the starter.",
'PokemonNatureChangeModifierType': {
name: '{{natureName}} Mint',
description: 'Changes a Pokémon\'s nature to {{natureName}} and permanently unlocks the nature for the starter.',
},
"DoubleBattleChanceBoosterModifierType": {
description: "Doubles the chance of an encounter being a double battle for {{battleCount}} battles",
'DoubleBattleChanceBoosterModifierType': {
description: 'Doubles the chance of an encounter being a double battle for {{battleCount}} battles',
},
"TempBattleStatBoosterModifierType": {
description: "Increases the {{tempBattleStatName}} of all party members by 1 stage for 5 battles",
'TempBattleStatBoosterModifierType': {
description: 'Increases the {{tempBattleStatName}} of all party members by 1 stage for 5 battles',
},
"AttackTypeBoosterModifierType": {
description: "Increases the power of a Pokémon's {{moveType}}-type moves by 20%",
'AttackTypeBoosterModifierType': {
description: 'Increases the power of a Pokémon\'s {{moveType}}-type moves by 20%',
},
"PokemonLevelIncrementModifierType": {
description: "Increases a Pokémon's level by 1",
'PokemonLevelIncrementModifierType': {
description: 'Increases a Pokémon\'s level by 1',
},
"AllPokemonLevelIncrementModifierType": {
description: "Increases all party members' level by 1",
'AllPokemonLevelIncrementModifierType': {
description: 'Increases all party members\' level by 1',
},
"PokemonBaseStatBoosterModifierType": {
description: "Increases the holder's base {{statName}} by 10%. The higher your IVs, the higher the stack limit.",
'PokemonBaseStatBoosterModifierType': {
description: 'Increases the holder\'s base {{statName}} by 10%. The higher your IVs, the higher the stack limit.',
},
"AllPokemonFullHpRestoreModifierType": {
description: "Restores 100% HP for all Pokémon",
'AllPokemonFullHpRestoreModifierType': {
description: 'Restores 100% HP for all Pokémon',
},
"AllPokemonFullReviveModifierType": {
description: "Revives all fainted Pokémon, fully restoring HP",
'AllPokemonFullReviveModifierType': {
description: 'Revives all fainted Pokémon, fully restoring HP',
},
"MoneyRewardModifierType": {
description: "Grants a {{moneyMultiplier}} amount of money (₽{{moneyAmount}})",
'MoneyRewardModifierType': {
description: 'Grants a {{moneyMultiplier}} amount of money (₽{{moneyAmount}})',
extra: {
"small": "small",
"moderate": "moderate",
"large": "large",
'small': 'small',
'moderate': 'moderate',
'large': 'large',
},
},
"ExpBoosterModifierType": {
description: "Increases gain of EXP. Points by {{boostPercent}}%",
'ExpBoosterModifierType': {
description: 'Increases gain of EXP. Points by {{boostPercent}}%',
},
"PokemonExpBoosterModifierType": {
description: "Increases the holder's gain of EXP. Points by {{boostPercent}}%",
'PokemonExpBoosterModifierType': {
description: 'Increases the holder\'s gain of EXP. Points by {{boostPercent}}%',
},
"PokemonFriendshipBoosterModifierType": {
description: "Increases friendship gain per victory by 50%",
'PokemonFriendshipBoosterModifierType': {
description: 'Increases friendship gain per victory by 50%',
},
"PokemonMoveAccuracyBoosterModifierType": {
description: "Increases move accuracy by {{accuracyAmount}} (maximum 100)",
'PokemonMoveAccuracyBoosterModifierType': {
description: 'Increases move accuracy by {{accuracyAmount}} (maximum 100)',
},
"PokemonMultiHitModifierType": {
description: "Attacks hit one additional time at the cost of a 60/75/82.5% power reduction per stack respectively",
'PokemonMultiHitModifierType': {
description: 'Attacks hit one additional time at the cost of a 60/75/82.5% power reduction per stack respectively',
},
"TmModifierType": {
name: "TM{{moveId}} - {{moveName}}",
description: "Teach {{moveName}} to a Pokémon",
'TmModifierType': {
name: 'TM{{moveId}} - {{moveName}}',
description: 'Teach {{moveName}} to a Pokémon',
},
"EvolutionItemModifierType": {
description: "Causes certain Pokémon to evolve",
'EvolutionItemModifierType': {
description: 'Causes certain Pokémon to evolve',
},
"FormChangeItemModifierType": {
description: "Causes certain Pokémon to change form",
'FormChangeItemModifierType': {
description: 'Causes certain Pokémon to change form',
},
"FusePokemonModifierType": {
description: "Combines two Pokémon (transfers Ability, splits base stats and types, shares move pool)",
'FusePokemonModifierType': {
description: 'Combines two Pokémon (transfers Ability, splits base stats and types, shares move pool)',
},
"TerastallizeModifierType": {
name: "{{teraType}} Tera Shard",
description: "{{teraType}} Terastallizes the holder for up to 10 battles",
'TerastallizeModifierType': {
name: '{{teraType}} Tera Shard',
description: '{{teraType}} Terastallizes the holder for up to 10 battles',
},
"ContactHeldItemTransferChanceModifierType": {
description: "Upon attacking, there is a {{chancePercent}}% chance the foe's held item will be stolen",
'ContactHeldItemTransferChanceModifierType': {
description: 'Upon attacking, there is a {{chancePercent}}% chance the foe\'s held item will be stolen',
},
"TurnHeldItemTransferModifierType": {
description: "Every turn, the holder acquires one held item from the foe",
'TurnHeldItemTransferModifierType': {
description: 'Every turn, the holder acquires one held item from the foe',
},
"EnemyAttackStatusEffectChanceModifierType": {
description: "Adds a {{chancePercent}}% chance to inflict {{statusEffect}} with attack moves",
'EnemyAttackStatusEffectChanceModifierType': {
description: 'Adds a {{chancePercent}}% chance to inflict {{statusEffect}} with attack moves',
},
"EnemyEndureChanceModifierType": {
description: "Adds a {{chancePercent}}% chance of enduring a hit",
'EnemyEndureChanceModifierType': {
description: 'Adds a {{chancePercent}}% chance of enduring a hit',
},
"RARE_CANDY": { name: "Rare Candy" },
"RARER_CANDY": { name: "Rarer Candy" },
'RARE_CANDY': { name: 'Rare Candy' },
'RARER_CANDY': { name: 'Rarer Candy' },
"MEGA_BRACELET": { name: "Mega Bracelet", description: "Mega Stones become available" },
"DYNAMAX_BAND": { name: "Dynamax Band", description: "Max Mushrooms become available" },
"TERA_ORB": { name: "Tera Orb", description: "Tera Shards become available" },
'MEGA_BRACELET': { name: 'Mega Bracelet', description: 'Mega Stones become available' },
'DYNAMAX_BAND': { name: 'Dynamax Band', description: 'Max Mushrooms become available' },
'TERA_ORB': { name: 'Tera Orb', description: 'Tera Shards become available' },
"MAP": { name: "Map", description: "Allows you to choose your destination at a crossroads" },
'MAP': { name: 'Map', description: 'Allows you to choose your destination at a crossroads' },
"POTION": { name: "Potion" },
"SUPER_POTION": { name: "Super Potion" },
"HYPER_POTION": { name: "Hyper Potion" },
"MAX_POTION": { name: "Max Potion" },
"FULL_RESTORE": { name: "Full Restore" },
'POTION': { name: 'Potion' },
'SUPER_POTION': { name: 'Super Potion' },
'HYPER_POTION': { name: 'Hyper Potion' },
'MAX_POTION': { name: 'Max Potion' },
'FULL_RESTORE': { name: 'Full Restore' },
"REVIVE": { name: "Revive" },
"MAX_REVIVE": { name: "Max Revive" },
'REVIVE': { name: 'Revive' },
'MAX_REVIVE': { name: 'Max Revive' },
"FULL_HEAL": { name: "Full Heal" },
'FULL_HEAL': { name: 'Full Heal' },
"SACRED_ASH": { name: "Sacred Ash" },
'SACRED_ASH': { name: 'Sacred Ash' },
"REVIVER_SEED": { name: "Reviver Seed", description: "Revives the holder for 1/2 HP upon fainting" },
'REVIVER_SEED': { name: 'Reviver Seed', description: 'Revives the holder for 1/2 HP upon fainting' },
"ETHER": { name: "Ether" },
"MAX_ETHER": { name: "Max Ether" },
'ETHER': { name: 'Ether' },
'MAX_ETHER': { name: 'Max Ether' },
"ELIXIR": { name: "Elixir" },
"MAX_ELIXIR": { name: "Max Elixir" },
'ELIXIR': { name: 'Elixir' },
'MAX_ELIXIR': { name: 'Max Elixir' },
"PP_UP": { name: "PP Up" },
"PP_MAX": { name: "PP Max" },
'PP_UP': { name: 'PP Up' },
'PP_MAX': { name: 'PP Max' },
"LURE": { name: "Lure" },
"SUPER_LURE": { name: "Super Lure" },
"MAX_LURE": { name: "Max Lure" },
'LURE': { name: 'Lure' },
'SUPER_LURE': { name: 'Super Lure' },
'MAX_LURE': { name: 'Max Lure' },
"MEMORY_MUSHROOM": { name: "Memory Mushroom", description: "Recall one Pokémon's forgotten move" },
'MEMORY_MUSHROOM': { name: 'Memory Mushroom', description: 'Recall one Pokémon\'s forgotten move' },
"EXP_SHARE": { name: "EXP. All", description: "Non-participants receive 20% of a single participant's EXP. Points" },
"EXP_BALANCE": { name: "EXP. Balance", description: "Weighs EXP. Points received from battles towards lower-leveled party members" },
'EXP_SHARE': { name: 'EXP. All', description: 'Non-participants receive 20% of a single participant\'s EXP. Points' },
'EXP_BALANCE': { name: 'EXP. Balance', description: 'Weighs EXP. Points received from battles towards lower-leveled party members' },
"OVAL_CHARM": { name: "Oval Charm", description: "When multiple Pokémon participate in a battle, each gets an extra 10% of the total EXP" },
'OVAL_CHARM': { name: 'Oval Charm', description: 'When multiple Pokémon participate in a battle, each gets an extra 10% of the total EXP' },
"EXP_CHARM": { name: "EXP. Charm" },
"SUPER_EXP_CHARM": { name: "Super EXP. Charm" },
"GOLDEN_EXP_CHARM": { name: "Golden EXP. Charm" },
'EXP_CHARM': { name: 'EXP. Charm' },
'SUPER_EXP_CHARM': { name: 'Super EXP. Charm' },
'GOLDEN_EXP_CHARM': { name: 'Golden EXP. Charm' },
"LUCKY_EGG": { name: "Lucky Egg" },
"GOLDEN_EGG": { name: "Golden Egg" },
'LUCKY_EGG': { name: 'Lucky Egg' },
'GOLDEN_EGG': { name: 'Golden Egg' },
"SOOTHE_BELL": { name: "Soothe Bell" },
'SOOTHE_BELL': { name: 'Soothe Bell' },
"SOUL_DEW": { name: "Soul Dew", description: "Increases the influence of a Pokémon's nature on its stats by 10% (additive)" },
'SOUL_DEW': { name: 'Soul Dew', description: 'Increases the influence of a Pokémon\'s nature on its stats by 10% (additive)' },
"NUGGET": { name: "Nugget" },
"BIG_NUGGET": { name: "Big Nugget" },
"RELIC_GOLD": { name: "Relic Gold" },
'NUGGET': { name: 'Nugget' },
'BIG_NUGGET': { name: 'Big Nugget' },
'RELIC_GOLD': { name: 'Relic Gold' },
"AMULET_COIN": { name: "Amulet Coin", description: "Increases money rewards by 20%" },
"GOLDEN_PUNCH": { name: "Golden Punch", description: "Grants 50% of damage inflicted as money" },
"COIN_CASE": { name: "Coin Case", description: "After every 10th battle, receive 10% of your money in interest" },
'AMULET_COIN': { name: 'Amulet Coin', description: 'Increases money rewards by 20%' },
'GOLDEN_PUNCH': { name: 'Golden Punch', description: 'Grants 50% of damage inflicted as money' },
'COIN_CASE': { name: 'Coin Case', description: 'After every 10th battle, receive 10% of your money in interest' },
"LOCK_CAPSULE": { name: "Lock Capsule", description: "Allows you to lock item rarities when rerolling items" },
'LOCK_CAPSULE': { name: 'Lock Capsule', description: 'Allows you to lock item rarities when rerolling items' },
"GRIP_CLAW": { name: "Grip Claw" },
"WIDE_LENS": { name: "Wide Lens" },
'GRIP_CLAW': { name: 'Grip Claw' },
'WIDE_LENS': { name: 'Wide Lens' },
"MULTI_LENS": { name: "Multi Lens" },
'MULTI_LENS': { name: 'Multi Lens' },
"HEALING_CHARM": { name: "Healing Charm", description: "Increases the effectiveness of HP restoring moves and items by 10% (excludes Revives)" },
"CANDY_JAR": { name: "Candy Jar", description: "Increases the number of levels added by Rare Candy items by 1" },
'HEALING_CHARM': { name: 'Healing Charm', description: 'Increases the effectiveness of HP restoring moves and items by 10% (excludes Revives)' },
'CANDY_JAR': { name: 'Candy Jar', description: 'Increases the number of levels added by Rare Candy items by 1' },
"BERRY_POUCH": { name: "Berry Pouch", description: "Adds a 25% chance that a used berry will not be consumed" },
'BERRY_POUCH': { name: 'Berry Pouch', description: 'Adds a 25% chance that a used berry will not be consumed' },
"FOCUS_BAND": { name: "Focus Band", description: "Adds a 10% chance to survive with 1 HP after being damaged enough to faint" },
'FOCUS_BAND': { name: 'Focus Band', description: 'Adds a 10% chance to survive with 1 HP after being damaged enough to faint' },
"QUICK_CLAW": { name: "Quick Claw", description: "Adds a 10% chance to move first regardless of speed (after priority)" },
'QUICK_CLAW': { name: 'Quick Claw', description: 'Adds a 10% chance to move first regardless of speed (after priority)' },
"KINGS_ROCK": { name: "King's Rock", description: "Adds a 10% chance an attack move will cause the opponent to flinch" },
'KINGS_ROCK': { name: 'King\'s Rock', description: 'Adds a 10% chance an attack move will cause the opponent to flinch' },
"LEFTOVERS": { name: "Leftovers", description: "Heals 1/16 of a Pokémon's maximum HP every turn" },
"SHELL_BELL": { name: "Shell Bell", description: "Heals 1/8 of a Pokémon's dealt damage" },
'LEFTOVERS': { name: 'Leftovers', description: 'Heals 1/16 of a Pokémon\'s maximum HP every turn' },
'SHELL_BELL': { name: 'Shell Bell', description: 'Heals 1/8 of a Pokémon\'s dealt damage' },
"BATON": { name: "Baton", description: "Allows passing along effects when switching Pokémon, which also bypasses traps" },
'BATON': { name: 'Baton', description: 'Allows passing along effects when switching Pokémon, which also bypasses traps' },
"SHINY_CHARM": { name: "Shiny Charm", description: "Dramatically increases the chance of a wild Pokémon being Shiny" },
"ABILITY_CHARM": { name: "Ability Charm", description: "Dramatically increases the chance of a wild Pokémon having a Hidden Ability" },
'SHINY_CHARM': { name: 'Shiny Charm', description: 'Dramatically increases the chance of a wild Pokémon being Shiny' },
'ABILITY_CHARM': { name: 'Ability Charm', description: 'Dramatically increases the chance of a wild Pokémon having a Hidden Ability' },
"IV_SCANNER": { name: "IV Scanner", description: "Allows scanning the IVs of wild Pokémon. 2 IVs are revealed per stack. The best IVs are shown first" },
'IV_SCANNER': { name: 'IV Scanner', description: 'Allows scanning the IVs of wild Pokémon. 2 IVs are revealed per stack. The best IVs are shown first' },
"DNA_SPLICERS": { name: "DNA Splicers" },
'DNA_SPLICERS': { name: 'DNA Splicers' },
"MINI_BLACK_HOLE": { name: "Mini Black Hole" },
'MINI_BLACK_HOLE': { name: 'Mini Black Hole' },
"GOLDEN_POKEBALL": { name: "Golden Poké Ball", description: "Adds 1 extra item option at the end of every battle" },
'GOLDEN_POKEBALL': { name: 'Golden Poké Ball', description: 'Adds 1 extra item option at the end of every battle' },
"ENEMY_DAMAGE_BOOSTER": { name: "Damage Token", description: "Increases damage by 5%" },
"ENEMY_DAMAGE_REDUCTION": { name: "Protection Token", description: "Reduces incoming damage by 2.5%" },
"ENEMY_HEAL": { name: "Recovery Token", description: "Heals 2% of max HP every turn" },
"ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" },
"ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" },
"ENEMY_ATTACK_SLEEP_CHANCE": { name: "Sleep Token" },
"ENEMY_ATTACK_FREEZE_CHANCE": { name: "Freeze Token" },
"ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" },
"ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Adds a 10% chance every turn to heal a status condition" },
"ENEMY_ENDURE_CHANCE": { name: "Endure Token" },
"ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Adds a 1% chance that a wild Pokémon will be a fusion" },
'ENEMY_DAMAGE_BOOSTER': { name: 'Damage Token', description: 'Increases damage by 5%' },
'ENEMY_DAMAGE_REDUCTION': { name: 'Protection Token', description: 'Reduces incoming damage by 2.5%' },
'ENEMY_HEAL': { name: 'Recovery Token', description: 'Heals 2% of max HP every turn' },
'ENEMY_ATTACK_POISON_CHANCE': { name: 'Poison Token' },
'ENEMY_ATTACK_PARALYZE_CHANCE': { name: 'Paralyze Token' },
'ENEMY_ATTACK_SLEEP_CHANCE': { name: 'Sleep Token' },
'ENEMY_ATTACK_FREEZE_CHANCE': { name: 'Freeze Token' },
'ENEMY_ATTACK_BURN_CHANCE': { name: 'Burn Token' },
'ENEMY_STATUS_EFFECT_HEAL_CHANCE': { name: 'Full Heal Token', description: 'Adds a 10% chance every turn to heal a status condition' },
'ENEMY_ENDURE_CHANCE': { name: 'Endure Token' },
'ENEMY_FUSED_CHANCE': { name: 'Fusion Token', description: 'Adds a 1% chance that a wild Pokémon will be a fusion' },
},
TempBattleStatBoosterItem: {
"x_attack": "X Attack",
"x_defense": "X Defense",
"x_sp_atk": "X Sp. Atk",
"x_sp_def": "X Sp. Def",
"x_speed": "X Speed",
"x_accuracy": "X Accuracy",
"dire_hit": "Dire Hit",
'x_attack': 'X Attack',
'x_defense': 'X Defense',
'x_sp_atk': 'X Sp. Atk',
'x_sp_def': 'X Sp. Def',
'x_speed': 'X Speed',
'x_accuracy': 'X Accuracy',
'dire_hit': 'Dire Hit',
},
AttackTypeBoosterItem: {
"silk_scarf": "Silk Scarf",
"black_belt": "Black Belt",
"sharp_beak": "Sharp Beak",
"poison_barb": "Poison Barb",
"soft_sand": "Soft Sand",
"hard_stone": "Hard Stone",
"silver_powder": "Silver Powder",
"spell_tag": "Spell Tag",
"metal_coat": "Metal Coat",
"charcoal": "Charcoal",
"mystic_water": "Mystic Water",
"miracle_seed": "Miracle Seed",
"magnet": "Magnet",
"twisted_spoon": "Twisted Spoon",
"never_melt_ice": "Never-Melt Ice",
"dragon_fang": "Dragon Fang",
"black_glasses": "Black Glasses",
"fairy_feather": "Fairy Feather",
'silk_scarf': 'Silk Scarf',
'black_belt': 'Black Belt',
'sharp_beak': 'Sharp Beak',
'poison_barb': 'Poison Barb',
'soft_sand': 'Soft Sand',
'hard_stone': 'Hard Stone',
'silver_powder': 'Silver Powder',
'spell_tag': 'Spell Tag',
'metal_coat': 'Metal Coat',
'charcoal': 'Charcoal',
'mystic_water': 'Mystic Water',
'miracle_seed': 'Miracle Seed',
'magnet': 'Magnet',
'twisted_spoon': 'Twisted Spoon',
'never_melt_ice': 'Never-Melt Ice',
'dragon_fang': 'Dragon Fang',
'black_glasses': 'Black Glasses',
'fairy_feather': 'Fairy Feather',
},
BaseStatBoosterItem: {
"hp_up": "HP Up",
"protein": "Protein",
"iron": "Iron",
"calcium": "Calcium",
"zinc": "Zinc",
"carbos": "Carbos",
'hp_up': 'HP Up',
'protein': 'Protein',
'iron': 'Iron',
'calcium': 'Calcium',
'zinc': 'Zinc',
'carbos': 'Carbos',
},
EvolutionItem: {
"NONE": "None",
'NONE': 'None',
"LINKING_CORD": "Linking Cord",
"SUN_STONE": "Sun Stone",
"MOON_STONE": "Moon Stone",
"LEAF_STONE": "Leaf Stone",
"FIRE_STONE": "Fire Stone",
"WATER_STONE": "Water Stone",
"THUNDER_STONE": "Thunder Stone",
"ICE_STONE": "Ice Stone",
"DUSK_STONE": "Dusk Stone",
"DAWN_STONE": "Dawn Stone",
"SHINY_STONE": "Shiny Stone",
"CRACKED_POT": "Cracked Pot",
"SWEET_APPLE": "Sweet Apple",
"TART_APPLE": "Tart Apple",
"STRAWBERRY_SWEET": "Strawberry Sweet",
"UNREMARKABLE_TEACUP": "Unremarkable Teacup",
'LINKING_CORD': 'Linking Cord',
'SUN_STONE': 'Sun Stone',
'MOON_STONE': 'Moon Stone',
'LEAF_STONE': 'Leaf Stone',
'FIRE_STONE': 'Fire Stone',
'WATER_STONE': 'Water Stone',
'THUNDER_STONE': 'Thunder Stone',
'ICE_STONE': 'Ice Stone',
'DUSK_STONE': 'Dusk Stone',
'DAWN_STONE': 'Dawn Stone',
'SHINY_STONE': 'Shiny Stone',
'CRACKED_POT': 'Cracked Pot',
'SWEET_APPLE': 'Sweet Apple',
'TART_APPLE': 'Tart Apple',
'STRAWBERRY_SWEET': 'Strawberry Sweet',
'UNREMARKABLE_TEACUP': 'Unremarkable Teacup',
"CHIPPED_POT": "Chipped Pot",
"BLACK_AUGURITE": "Black Augurite",
"GALARICA_CUFF": "Galarica Cuff",
"GALARICA_WREATH": "Galarica Wreath",
"PEAT_BLOCK": "Peat Block",
"AUSPICIOUS_ARMOR": "Auspicious Armor",
"MALICIOUS_ARMOR": "Malicious Armor",
"MASTERPIECE_TEACUP": "Masterpiece Teacup",
"METAL_ALLOY": "Metal Alloy",
"SCROLL_OF_DARKNESS": "Scroll Of Darkness",
"SCROLL_OF_WATERS": "Scroll Of Waters",
"SYRUPY_APPLE": "Syrupy Apple",
'CHIPPED_POT': 'Chipped Pot',
'BLACK_AUGURITE': 'Black Augurite',
'GALARICA_CUFF': 'Galarica Cuff',
'GALARICA_WREATH': 'Galarica Wreath',
'PEAT_BLOCK': 'Peat Block',
'AUSPICIOUS_ARMOR': 'Auspicious Armor',
'MALICIOUS_ARMOR': 'Malicious Armor',
'MASTERPIECE_TEACUP': 'Masterpiece Teacup',
'METAL_ALLOY': 'Metal Alloy',
'SCROLL_OF_DARKNESS': 'Scroll Of Darkness',
'SCROLL_OF_WATERS': 'Scroll Of Waters',
'SYRUPY_APPLE': 'Syrupy Apple',
},
FormChangeItem: {
"NONE": "None",
'NONE': 'None',
"ABOMASITE": "Abomasite",
"ABSOLITE": "Absolite",
"AERODACTYLITE": "Aerodactylite",
"AGGRONITE": "Aggronite",
"ALAKAZITE": "Alakazite",
"ALTARIANITE": "Altarianite",
"AMPHAROSITE": "Ampharosite",
"AUDINITE": "Audinite",
"BANETTITE": "Banettite",
"BEEDRILLITE": "Beedrillite",
"BLASTOISINITE": "Blastoisinite",
"BLAZIKENITE": "Blazikenite",
"CAMERUPTITE": "Cameruptite",
"CHARIZARDITE_X": "Charizardite X",
"CHARIZARDITE_Y": "Charizardite Y",
"DIANCITE": "Diancite",
"GALLADITE": "Galladite",
"GARCHOMPITE": "Garchompite",
"GARDEVOIRITE": "Gardevoirite",
"GENGARITE": "Gengarite",
"GLALITITE": "Glalitite",
"GYARADOSITE": "Gyaradosite",
"HERACRONITE": "Heracronite",
"HOUNDOOMINITE": "Houndoominite",
"KANGASKHANITE": "Kangaskhanite",
"LATIASITE": "Latiasite",
"LATIOSITE": "Latiosite",
"LOPUNNITE": "Lopunnite",
"LUCARIONITE": "Lucarionite",
"MANECTITE": "Manectite",
"MAWILITE": "Mawilite",
"MEDICHAMITE": "Medichamite",
"METAGROSSITE": "Metagrossite",
"MEWTWONITE_X": "Mewtwonite X",
"MEWTWONITE_Y": "Mewtwonite Y",
"PIDGEOTITE": "Pidgeotite",
"PINSIRITE": "Pinsirite",
"RAYQUAZITE": "Rayquazite",
"SABLENITE": "Sablenite",
"SALAMENCITE": "Salamencite",
"SCEPTILITE": "Sceptilite",
"SCIZORITE": "Scizorite",
"SHARPEDONITE": "Sharpedonite",
"SLOWBRONITE": "Slowbronite",
"STEELIXITE": "Steelixite",
"SWAMPERTITE": "Swampertite",
"TYRANITARITE": "Tyranitarite",
"VENUSAURITE": "Venusaurite",
'ABOMASITE': 'Abomasite',
'ABSOLITE': 'Absolite',
'AERODACTYLITE': 'Aerodactylite',
'AGGRONITE': 'Aggronite',
'ALAKAZITE': 'Alakazite',
'ALTARIANITE': 'Altarianite',
'AMPHAROSITE': 'Ampharosite',
'AUDINITE': 'Audinite',
'BANETTITE': 'Banettite',
'BEEDRILLITE': 'Beedrillite',
'BLASTOISINITE': 'Blastoisinite',
'BLAZIKENITE': 'Blazikenite',
'CAMERUPTITE': 'Cameruptite',
'CHARIZARDITE_X': 'Charizardite X',
'CHARIZARDITE_Y': 'Charizardite Y',
'DIANCITE': 'Diancite',
'GALLADITE': 'Galladite',
'GARCHOMPITE': 'Garchompite',
'GARDEVOIRITE': 'Gardevoirite',
'GENGARITE': 'Gengarite',
'GLALITITE': 'Glalitite',
'GYARADOSITE': 'Gyaradosite',
'HERACRONITE': 'Heracronite',
'HOUNDOOMINITE': 'Houndoominite',
'KANGASKHANITE': 'Kangaskhanite',
'LATIASITE': 'Latiasite',
'LATIOSITE': 'Latiosite',
'LOPUNNITE': 'Lopunnite',
'LUCARIONITE': 'Lucarionite',
'MANECTITE': 'Manectite',
'MAWILITE': 'Mawilite',
'MEDICHAMITE': 'Medichamite',
'METAGROSSITE': 'Metagrossite',
'MEWTWONITE_X': 'Mewtwonite X',
'MEWTWONITE_Y': 'Mewtwonite Y',
'PIDGEOTITE': 'Pidgeotite',
'PINSIRITE': 'Pinsirite',
'RAYQUAZITE': 'Rayquazite',
'SABLENITE': 'Sablenite',
'SALAMENCITE': 'Salamencite',
'SCEPTILITE': 'Sceptilite',
'SCIZORITE': 'Scizorite',
'SHARPEDONITE': 'Sharpedonite',
'SLOWBRONITE': 'Slowbronite',
'STEELIXITE': 'Steelixite',
'SWAMPERTITE': 'Swampertite',
'TYRANITARITE': 'Tyranitarite',
'VENUSAURITE': 'Venusaurite',
"BLUE_ORB": "Blue Orb",
"RED_ORB": "Red Orb",
"SHARP_METEORITE": "Sharp Meteorite",
"HARD_METEORITE": "Hard Meteorite",
"SMOOTH_METEORITE": "Smooth Meteorite",
"ADAMANT_CRYSTAL": "Adamant Crystal",
"LUSTROUS_ORB": "Lustrous Orb",
"GRISEOUS_CORE": "Griseous Core",
"REVEAL_GLASS": "Reveal Glass",
"GRACIDEA": "Gracidea",
"MAX_MUSHROOMS": "Max Mushrooms",
"DARK_STONE": "Dark Stone",
"LIGHT_STONE": "Light Stone",
"PRISON_BOTTLE": "Prison Bottle",
"N_LUNARIZER": "N Lunarizer",
"N_SOLARIZER": "N Solarizer",
"RUSTED_SWORD": "Rusted Sword",
"RUSTED_SHIELD": "Rusted Shield",
"ICY_REINS_OF_UNITY": "Icy Reins Of Unity",
"SHADOW_REINS_OF_UNITY": "Shadow Reins Of Unity",
"WELLSPRING_MASK": "Wellspring Mask",
"HEARTHFLAME_MASK": "Hearthflame Mask",
"CORNERSTONE_MASK": "Cornerstone Mask",
"SHOCK_DRIVE": "Shock Drive",
"BURN_DRIVE": "Burn Drive",
"CHILL_DRIVE": "Chill Drive",
"DOUSE_DRIVE": "Douse Drive",
'BLUE_ORB': 'Blue Orb',
'RED_ORB': 'Red Orb',
'SHARP_METEORITE': 'Sharp Meteorite',
'HARD_METEORITE': 'Hard Meteorite',
'SMOOTH_METEORITE': 'Smooth Meteorite',
'ADAMANT_CRYSTAL': 'Adamant Crystal',
'LUSTROUS_ORB': 'Lustrous Orb',
'GRISEOUS_CORE': 'Griseous Core',
'REVEAL_GLASS': 'Reveal Glass',
'GRACIDEA': 'Gracidea',
'MAX_MUSHROOMS': 'Max Mushrooms',
'DARK_STONE': 'Dark Stone',
'LIGHT_STONE': 'Light Stone',
'PRISON_BOTTLE': 'Prison Bottle',
'N_LUNARIZER': 'N Lunarizer',
'N_SOLARIZER': 'N Solarizer',
'RUSTED_SWORD': 'Rusted Sword',
'RUSTED_SHIELD': 'Rusted Shield',
'ICY_REINS_OF_UNITY': 'Icy Reins Of Unity',
'SHADOW_REINS_OF_UNITY': 'Shadow Reins Of Unity',
'WELLSPRING_MASK': 'Wellspring Mask',
'HEARTHFLAME_MASK': 'Hearthflame Mask',
'CORNERSTONE_MASK': 'Cornerstone Mask',
'SHOCK_DRIVE': 'Shock Drive',
'BURN_DRIVE': 'Burn Drive',
'CHILL_DRIVE': 'Chill Drive',
'DOUSE_DRIVE': 'Douse Drive',
},
} as const;

File diff suppressed because it is too large Load Diff

View File

@ -1,29 +1,29 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const nature: SimpleTranslationEntries = {
"Hardy": "Hardy",
"Lonely": "Lonely",
"Brave": "Brave",
"Adamant": "Adamant",
"Naughty": "Naughty",
"Bold": "Bold",
"Docile": "Docile",
"Relaxed": "Relaxed",
"Impish": "Impish",
"Lax": "Lax",
"Timid": "Timid",
"Hasty": "Hasty",
"Serious": "Serious",
"Jolly": "Jolly",
"Naive": "Naive",
"Modest": "Modest",
"Mild": "Mild",
"Quiet": "Quiet",
"Bashful": "Bashful",
"Rash": "Rash",
"Calm": "Calm",
"Gentle": "Gentle",
"Sassy": "Sassy",
"Careful": "Careful",
"Quirky": "Quirky"
'Hardy': 'Hardy',
'Lonely': 'Lonely',
'Brave': 'Brave',
'Adamant': 'Adamant',
'Naughty': 'Naughty',
'Bold': 'Bold',
'Docile': 'Docile',
'Relaxed': 'Relaxed',
'Impish': 'Impish',
'Lax': 'Lax',
'Timid': 'Timid',
'Hasty': 'Hasty',
'Serious': 'Serious',
'Jolly': 'Jolly',
'Naive': 'Naive',
'Modest': 'Modest',
'Mild': 'Mild',
'Quiet': 'Quiet',
'Bashful': 'Bashful',
'Rash': 'Rash',
'Calm': 'Calm',
'Gentle': 'Gentle',
'Sassy': 'Sassy',
'Careful': 'Careful',
'Quirky': 'Quirky'
} as const;

View File

@ -1,10 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const pokeball: SimpleTranslationEntries = {
"pokeBall": "Poké Ball",
"greatBall": "Great Ball",
"ultraBall": "Ultra Ball",
"rogueBall": "Rogue Ball",
"masterBall": "Master Ball",
"luxuryBall": "Luxury Ball",
'pokeBall': 'Poké Ball',
'greatBall': 'Great Ball',
'ultraBall': 'Ultra Ball',
'rogueBall': 'Rogue Ball',
'masterBall': 'Master Ball',
'luxuryBall': 'Luxury Ball',
} as const;

View File

@ -1,41 +1,41 @@
import { PokemonInfoTranslationEntries } from "#app/plugins/i18n";
import { PokemonInfoTranslationEntries } from '#app/plugins/i18n';
export const pokemonInfo: PokemonInfoTranslationEntries = {
Stat: {
"HP": "Max. HP",
"HPshortened": "MaxHP",
"ATK": "Attack",
"ATKshortened": "Atk",
"DEF": "Defense",
"DEFshortened": "Def",
"SPATK": "Sp. Atk",
"SPATKshortened": "SpAtk",
"SPDEF": "Sp. Def",
"SPDEFshortened": "SpDef",
"SPD": "Speed",
"SPDshortened": "Spd"
'HP': 'Max. HP',
'HPshortened': 'MaxHP',
'ATK': 'Attack',
'ATKshortened': 'Atk',
'DEF': 'Defense',
'DEFshortened': 'Def',
'SPATK': 'Sp. Atk',
'SPATKshortened': 'SpAtk',
'SPDEF': 'Sp. Def',
'SPDEFshortened': 'SpDef',
'SPD': 'Speed',
'SPDshortened': 'Spd'
},
Type: {
"UNKNOWN": "Unknown",
"NORMAL": "Normal",
"FIGHTING": "Fighting",
"FLYING": "Flying",
"POISON": "Poison",
"GROUND": "Ground",
"ROCK": "Rock",
"BUG": "Bug",
"GHOST": "Ghost",
"STEEL": "Steel",
"FIRE": "Fire",
"WATER": "Water",
"GRASS": "Grass",
"ELECTRIC": "Electric",
"PSYCHIC": "Psychic",
"ICE": "Ice",
"DRAGON": "Dragon",
"DARK": "Dark",
"FAIRY": "Fairy",
"STELLAR": "Stellar",
'UNKNOWN': 'Unknown',
'NORMAL': 'Normal',
'FIGHTING': 'Fighting',
'FLYING': 'Flying',
'POISON': 'Poison',
'GROUND': 'Ground',
'ROCK': 'Rock',
'BUG': 'Bug',
'GHOST': 'Ghost',
'STEEL': 'Steel',
'FIRE': 'Fire',
'WATER': 'Water',
'GRASS': 'Grass',
'ELECTRIC': 'Electric',
'PSYCHIC': 'Psychic',
'ICE': 'Ice',
'DRAGON': 'Dragon',
'DARK': 'Dark',
'FAIRY': 'Fairy',
'STELLAR': 'Stellar',
},
} as const;

File diff suppressed because it is too large Load Diff

View File

@ -1,37 +1,37 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const splashMessages: SimpleTranslationEntries = {
"battlesWon": "Battles Won!",
"joinTheDiscord": "Join the Discord!",
"infiniteLevels": "Infinite Levels!",
"everythingStacks": "Everything Stacks!",
"optionalSaveScumming": "Optional Save Scumming!",
"biomes": "35 Biomes!",
"openSource": "Open Source!",
"playWithSpeed": "Play with 5x Speed!",
"liveBugTesting": "Live Bug Testing!",
"heavyInfluence": "Heavy RoR2 Influence!",
"pokemonRiskAndPokemonRain": "Pokémon Risk and Pokémon Rain!",
"nowWithMoreSalt": "Now with 33% More Salt!",
"infiniteFusionAtHome": "Infinite Fusion at Home!",
"brokenEggMoves": "Broken Egg Moves!",
"magnificent": "Magnificent!",
"mubstitute": "Mubstitute!",
"thatsCrazy": "That\'s Crazy!",
"oranceJuice": "Orance Juice!",
"questionableBalancing": "Questionable Balancing!",
"coolShaders": "Cool Shaders!",
"aiFree": "AI-Free!",
"suddenDifficultySpikes": "Sudden Difficulty Spikes!",
"basedOnAnUnfinishedFlashGame": "Based on an Unfinished Flash Game!",
"moreAddictiveThanIntended": "More Addictive than Intended!",
"mostlyConsistentSeeds": "Mostly Consistent Seeds!",
"achievementPointsDontDoAnything": "Achievement Points Don\'t Do Anything!",
"youDoNotStartAtLevel": "You Do Not Start at Level 2000!",
"dontTalkAboutTheManaphyEggIncident": "Don\'t Talk About the Manaphy Egg Incident!",
"alsoTryPokengine": "Also Try Pokéngine!",
"alsoTryEmeraldRogue": "Also Try Emerald Rogue!",
"alsoTryRadicalRed": "Also Try Radical Red!",
"eeveeExpo": "Eevee Expo!",
"ynoproject": "YNOproject!",
'battlesWon': 'Battles Won!',
'joinTheDiscord': 'Join the Discord!',
'infiniteLevels': 'Infinite Levels!',
'everythingStacks': 'Everything Stacks!',
'optionalSaveScumming': 'Optional Save Scumming!',
'biomes': '35 Biomes!',
'openSource': 'Open Source!',
'playWithSpeed': 'Play with 5x Speed!',
'liveBugTesting': 'Live Bug Testing!',
'heavyInfluence': 'Heavy RoR2 Influence!',
'pokemonRiskAndPokemonRain': 'Pokémon Risk and Pokémon Rain!',
'nowWithMoreSalt': 'Now with 33% More Salt!',
'infiniteFusionAtHome': 'Infinite Fusion at Home!',
'brokenEggMoves': 'Broken Egg Moves!',
'magnificent': 'Magnificent!',
'mubstitute': 'Mubstitute!',
'thatsCrazy': 'That\'s Crazy!',
'oranceJuice': 'Orance Juice!',
'questionableBalancing': 'Questionable Balancing!',
'coolShaders': 'Cool Shaders!',
'aiFree': 'AI-Free!',
'suddenDifficultySpikes': 'Sudden Difficulty Spikes!',
'basedOnAnUnfinishedFlashGame': 'Based on an Unfinished Flash Game!',
'moreAddictiveThanIntended': 'More Addictive than Intended!',
'mostlyConsistentSeeds': 'Mostly Consistent Seeds!',
'achievementPointsDontDoAnything': 'Achievement Points Don\'t Do Anything!',
'youDoNotStartAtLevel': 'You Do Not Start at Level 2000!',
'dontTalkAboutTheManaphyEggIncident': 'Don\'t Talk About the Manaphy Egg Incident!',
'alsoTryPokengine': 'Also Try Pokéngine!',
'alsoTryEmeraldRogue': 'Also Try Emerald Rogue!',
'alsoTryRadicalRed': 'Also Try Radical Red!',
'eeveeExpo': 'Eevee Expo!',
'ynoproject': 'YNOproject!',
} as const;

View File

@ -1,4 +1,4 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
/**
* The menu namespace holds most miscellaneous text that isn't directly part of the game's
@ -6,39 +6,39 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
* account interactions, descriptive text, etc.
*/
export const starterSelectUiHandler: SimpleTranslationEntries = {
"confirmStartTeam":'Begin with these Pokémon?',
"gen1": "I",
"gen2": "II",
"gen3": "III",
"gen4": "IV",
"gen5": "V",
"gen6": "VI",
"gen7": "VII",
"gen8": "VIII",
"gen9": "IX",
"growthRate": "Growth Rate:",
"ability": "Ability:",
"passive": "Passive:",
"nature": "Nature:",
"eggMoves": 'Egg Moves',
"start": "Start",
"addToParty": "Add to Party",
"toggleIVs": 'Toggle IVs',
"manageMoves": 'Manage Moves',
"useCandies": 'Use Candies',
"selectMoveSwapOut": "Select a move to swap out.",
"selectMoveSwapWith": "Select a move to swap with",
"unlockPassive": "Unlock Passive",
"reduceCost": "Reduce Cost",
"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",
"disabled": "Disabled",
"uncaught": "Uncaught"
}
'confirmStartTeam':'Begin with these Pokémon?',
'gen1': 'I',
'gen2': 'II',
'gen3': 'III',
'gen4': 'IV',
'gen5': 'V',
'gen6': 'VI',
'gen7': 'VII',
'gen8': 'VIII',
'gen9': 'IX',
'growthRate': 'Growth Rate:',
'ability': 'Ability:',
'passive': 'Passive:',
'nature': 'Nature:',
'eggMoves': 'Egg Moves',
'start': 'Start',
'addToParty': 'Add to Party',
'toggleIVs': 'Toggle IVs',
'manageMoves': 'Manage Moves',
'useCandies': 'Use Candies',
'selectMoveSwapOut': 'Select a move to swap out.',
'selectMoveSwapWith': 'Select a move to swap with',
'unlockPassive': 'Unlock Passive',
'reduceCost': 'Reduce Cost',
'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',
'disabled': 'Disabled',
'uncaught': 'Uncaught'
};

View File

@ -1,244 +1,244 @@
import {SimpleTranslationEntries} from "#app/plugins/i18n";
import {SimpleTranslationEntries} from '#app/plugins/i18n';
// Titles of special trainers like gym leaders, elite four, and the champion
export const titles: SimpleTranslationEntries = {
"elite_four": "Elite Four",
"gym_leader": "Gym Leader",
"gym_leader_female": "Gym Leader",
"champion": "Champion",
"rival": "Rival",
"professor": "Professor",
"frontier_brain": "Frontier Brain",
'elite_four': 'Elite Four',
'gym_leader': 'Gym Leader',
'gym_leader_female': 'Gym Leader',
'champion': 'Champion',
'rival': 'Rival',
'professor': 'Professor',
'frontier_brain': 'Frontier Brain',
// Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc.
} as const;
// Titles of trainers like "Youngster" or "Lass"
export const trainerClasses: SimpleTranslationEntries = {
"ace_trainer": "Ace Trainer",
"ace_trainer_female": "Ace Trainer",
"ace_duo": "Ace Duo",
"artist": "Artist",
"artist_female": "Artist",
"backers": "Backers",
"backpacker": "Backpacker",
"backpacker_female": "Backpacker",
"backpackers": "Backpackers",
"baker": "Baker",
"battle_girl": "Battle Girl",
"beauty": "Beauty",
"beginners": "Beginners",
"biker": "Biker",
"black_belt": "Black Belt",
"breeder": "Breeder",
"breeder_female": "Breeder",
"breeders": "Breeders",
"clerk": "Clerk",
"clerk_female": "Clerk",
"colleagues": "Colleagues",
"crush_kin": "Crush Kin",
"cyclist": "Cyclist",
"cyclist_female": "Cyclist",
"cyclists": "Cyclists",
"dancer": "Dancer",
"dancer_female": "Dancer",
"depot_agent": "Depot Agent",
"doctor": "Doctor",
"doctor_female": "Doctor",
"fisherman": "Fisherman",
"fisherman_female": "Fisherman",
"gentleman": "Gentleman",
"guitarist": "Guitarist",
"guitarist_female": "Guitarist",
"harlequin": "Harlequin",
"hiker": "Hiker",
"hooligans": "Hooligans",
"hoopster": "Hoopster",
"infielder": "Infielder",
"janitor": "Janitor",
"lady": "Lady",
"lass": "Lass",
"linebacker": "Linebacker",
"maid": "Maid",
"madame": "Madame",
"medical_team": "Medical Team",
"musician": "Musician",
"hex_maniac": "Hex Maniac",
"nurse": "Nurse",
"nursery_aide": "Nursery Aide",
"officer": "Officer",
"parasol_lady": "Parasol Lady",
"pilot": "Pilot",
"pokéfan": "Poké Fan",
"pokéfan_female": "Poké Fan",
"pokéfan_family": "Poké Fan Family",
"preschooler": "Preschooler",
"preschooler_female": "Preschooler",
"preschoolers": "Preschoolers",
"psychic": "Psychic",
"psychic_female": "Psychic",
"psychics": "Psychics",
"pokémon_ranger": "Pokémon Ranger",
"pokémon_ranger_female": "Pokémon Ranger",
"pokémon_rangers": "Pokémon Ranger",
"ranger": "Ranger",
"restaurant_staff": "Restaurant Staff",
"rich": "Rich",
"rich_female": "Rich",
"rich_boy": "Rich Boy",
"rich_couple": "Rich Couple",
"rich_kid": "Rich Kid",
"rich_kid_female": "Rich Kid",
"rich_kids": "Rich Kids",
"roughneck": "Roughneck",
"scientist": "Scientist",
"scientist_female": "Scientist",
"scientists": "Scientists",
"smasher": "Smasher",
"snow_worker": "Snow Worker",
"snow_worker_female": "Snow Worker",
"striker": "Striker",
"school_kid": "School Kid",
"school_kid_female": "School Kid",
"school_kids": "School Kids",
"swimmer": "Swimmer",
"swimmer_female": "Swimmer",
"swimmers": "Swimmers",
"twins": "Twins",
"veteran": "Veteran",
"veteran_female": "Veteran",
"veteran_duo": "Veteran Duo",
"waiter": "Waiter",
"waitress": "Waitress",
"worker": "Worker",
"worker_female": "Worker",
"workers": "Workers",
"youngster": "Youngster"
'ace_trainer': 'Ace Trainer',
'ace_trainer_female': 'Ace Trainer',
'ace_duo': 'Ace Duo',
'artist': 'Artist',
'artist_female': 'Artist',
'backers': 'Backers',
'backpacker': 'Backpacker',
'backpacker_female': 'Backpacker',
'backpackers': 'Backpackers',
'baker': 'Baker',
'battle_girl': 'Battle Girl',
'beauty': 'Beauty',
'beginners': 'Beginners',
'biker': 'Biker',
'black_belt': 'Black Belt',
'breeder': 'Breeder',
'breeder_female': 'Breeder',
'breeders': 'Breeders',
'clerk': 'Clerk',
'clerk_female': 'Clerk',
'colleagues': 'Colleagues',
'crush_kin': 'Crush Kin',
'cyclist': 'Cyclist',
'cyclist_female': 'Cyclist',
'cyclists': 'Cyclists',
'dancer': 'Dancer',
'dancer_female': 'Dancer',
'depot_agent': 'Depot Agent',
'doctor': 'Doctor',
'doctor_female': 'Doctor',
'fisherman': 'Fisherman',
'fisherman_female': 'Fisherman',
'gentleman': 'Gentleman',
'guitarist': 'Guitarist',
'guitarist_female': 'Guitarist',
'harlequin': 'Harlequin',
'hiker': 'Hiker',
'hooligans': 'Hooligans',
'hoopster': 'Hoopster',
'infielder': 'Infielder',
'janitor': 'Janitor',
'lady': 'Lady',
'lass': 'Lass',
'linebacker': 'Linebacker',
'maid': 'Maid',
'madame': 'Madame',
'medical_team': 'Medical Team',
'musician': 'Musician',
'hex_maniac': 'Hex Maniac',
'nurse': 'Nurse',
'nursery_aide': 'Nursery Aide',
'officer': 'Officer',
'parasol_lady': 'Parasol Lady',
'pilot': 'Pilot',
'pokéfan': 'Poké Fan',
'pokéfan_female': 'Poké Fan',
'pokéfan_family': 'Poké Fan Family',
'preschooler': 'Preschooler',
'preschooler_female': 'Preschooler',
'preschoolers': 'Preschoolers',
'psychic': 'Psychic',
'psychic_female': 'Psychic',
'psychics': 'Psychics',
'pokémon_ranger': 'Pokémon Ranger',
'pokémon_ranger_female': 'Pokémon Ranger',
'pokémon_rangers': 'Pokémon Ranger',
'ranger': 'Ranger',
'restaurant_staff': 'Restaurant Staff',
'rich': 'Rich',
'rich_female': 'Rich',
'rich_boy': 'Rich Boy',
'rich_couple': 'Rich Couple',
'rich_kid': 'Rich Kid',
'rich_kid_female': 'Rich Kid',
'rich_kids': 'Rich Kids',
'roughneck': 'Roughneck',
'scientist': 'Scientist',
'scientist_female': 'Scientist',
'scientists': 'Scientists',
'smasher': 'Smasher',
'snow_worker': 'Snow Worker',
'snow_worker_female': 'Snow Worker',
'striker': 'Striker',
'school_kid': 'School Kid',
'school_kid_female': 'School Kid',
'school_kids': 'School Kids',
'swimmer': 'Swimmer',
'swimmer_female': 'Swimmer',
'swimmers': 'Swimmers',
'twins': 'Twins',
'veteran': 'Veteran',
'veteran_female': 'Veteran',
'veteran_duo': 'Veteran Duo',
'waiter': 'Waiter',
'waitress': 'Waitress',
'worker': 'Worker',
'worker_female': 'Worker',
'workers': 'Workers',
'youngster': 'Youngster'
} as const;
// Names of special trainers like gym leaders, elite four, and the champion
export const trainerNames: SimpleTranslationEntries = {
"brock": "Brock",
"misty": "Misty",
"lt_surge": "Lt Surge",
"erika": "Erika",
"janine": "Janine",
"sabrina": "Sabrina",
"blaine": "Blaine",
"giovanni": "Giovanni",
"falkner": "Falkner",
"bugsy": "Bugsy",
"whitney": "Whitney",
"morty": "Morty",
"chuck": "Chuck",
"jasmine": "Jasmine",
"pryce": "Pryce",
"clair": "Clair",
"roxanne": "Roxanne",
"brawly": "Brawly",
"wattson": "Wattson",
"flannery": "Flannery",
"norman": "Norman",
"winona": "Winona",
"tate": "Tate",
"liza": "Liza",
"juan": "Juan",
"roark": "Roark",
"gardenia": "Gardenia",
"maylene": "Maylene",
"crasher_wake": "Crasher Wake",
"fantina": "Fantina",
"byron": "Byron",
"candice": "Candice",
"volkner": "Volkner",
"cilan": "Cilan",
"chili": "Chili",
"cress": "Cress",
"cheren": "Cheren",
"lenora": "Lenora",
"roxie": "Roxie",
"burgh": "Burgh",
"elesa": "Elesa",
"clay": "Clay",
"skyla": "Skyla",
"brycen": "Brycen",
"drayden": "Drayden",
"marlon": "Marlon",
"viola": "Viola",
"grant": "Grant",
"korrina": "Korrina",
"ramos": "Ramos",
"clemont": "Clemont",
"valerie": "Valerie",
"olympia": "Olympia",
"wulfric": "Wulfric",
"milo": "Milo",
"nessa": "Nessa",
"kabu": "Kabu",
"bea": "Bea",
"allister": "Allister",
"opal": "Opal",
"bede": "Bede",
"gordie": "Gordie",
"melony": "Melony",
"piers": "Piers",
"marnie": "Marnie",
"raihan": "Raihan",
"katy": "Katy",
"brassius": "Brassius",
"iono": "Iono",
"kofu": "Kofu",
"larry": "Larry",
"ryme": "Ryme",
"tulip": "Tulip",
"grusha": "Grusha",
"lorelei": "Lorelei",
"bruno": "Bruno",
"agatha": "Agatha",
"lance": "Lance",
"will": "Will",
"koga": "Koga",
"karen": "Karen",
"sidney": "Sidney",
"phoebe": "Phoebe",
"glacia": "Glacia",
"drake": "Drake",
"aaron": "Aaron",
"bertha": "Bertha",
"flint": "Flint",
"lucian": "Lucian",
"shauntal": "Shauntal",
"marshal": "Marshal",
"grimsley": "Grimsley",
"caitlin": "Caitlin",
"malva": "Malva",
"siebold": "Siebold",
"wikstrom": "Wikstrom",
"drasna": "Drasna",
"hala": "Hala",
"molayne": "Molayne",
"olivia": "Olivia",
"acerola": "Acerola",
"kahili": "Kahili",
"rika": "Rika",
"poppy": "Poppy",
"hassel": "Hassel",
"crispin": "Crispin",
"amarys": "Amarys",
"lacey": "Lacey",
"drayton": "Drayton",
"blue": "Blue",
"red": "Red",
"steven": "Steven",
"wallace": "Wallace",
"cynthia": "Cynthia",
"alder": "Alder",
"iris": "Iris",
"diantha": "Diantha",
"hau": "Hau",
"geeta": "Geeta",
"nemona": "Nemona",
"kieran": "Kieran",
"leon": "Leon",
"rival": "Finn",
"rival_female": "Ivy",
'brock': 'Brock',
'misty': 'Misty',
'lt_surge': 'Lt Surge',
'erika': 'Erika',
'janine': 'Janine',
'sabrina': 'Sabrina',
'blaine': 'Blaine',
'giovanni': 'Giovanni',
'falkner': 'Falkner',
'bugsy': 'Bugsy',
'whitney': 'Whitney',
'morty': 'Morty',
'chuck': 'Chuck',
'jasmine': 'Jasmine',
'pryce': 'Pryce',
'clair': 'Clair',
'roxanne': 'Roxanne',
'brawly': 'Brawly',
'wattson': 'Wattson',
'flannery': 'Flannery',
'norman': 'Norman',
'winona': 'Winona',
'tate': 'Tate',
'liza': 'Liza',
'juan': 'Juan',
'roark': 'Roark',
'gardenia': 'Gardenia',
'maylene': 'Maylene',
'crasher_wake': 'Crasher Wake',
'fantina': 'Fantina',
'byron': 'Byron',
'candice': 'Candice',
'volkner': 'Volkner',
'cilan': 'Cilan',
'chili': 'Chili',
'cress': 'Cress',
'cheren': 'Cheren',
'lenora': 'Lenora',
'roxie': 'Roxie',
'burgh': 'Burgh',
'elesa': 'Elesa',
'clay': 'Clay',
'skyla': 'Skyla',
'brycen': 'Brycen',
'drayden': 'Drayden',
'marlon': 'Marlon',
'viola': 'Viola',
'grant': 'Grant',
'korrina': 'Korrina',
'ramos': 'Ramos',
'clemont': 'Clemont',
'valerie': 'Valerie',
'olympia': 'Olympia',
'wulfric': 'Wulfric',
'milo': 'Milo',
'nessa': 'Nessa',
'kabu': 'Kabu',
'bea': 'Bea',
'allister': 'Allister',
'opal': 'Opal',
'bede': 'Bede',
'gordie': 'Gordie',
'melony': 'Melony',
'piers': 'Piers',
'marnie': 'Marnie',
'raihan': 'Raihan',
'katy': 'Katy',
'brassius': 'Brassius',
'iono': 'Iono',
'kofu': 'Kofu',
'larry': 'Larry',
'ryme': 'Ryme',
'tulip': 'Tulip',
'grusha': 'Grusha',
'lorelei': 'Lorelei',
'bruno': 'Bruno',
'agatha': 'Agatha',
'lance': 'Lance',
'will': 'Will',
'koga': 'Koga',
'karen': 'Karen',
'sidney': 'Sidney',
'phoebe': 'Phoebe',
'glacia': 'Glacia',
'drake': 'Drake',
'aaron': 'Aaron',
'bertha': 'Bertha',
'flint': 'Flint',
'lucian': 'Lucian',
'shauntal': 'Shauntal',
'marshal': 'Marshal',
'grimsley': 'Grimsley',
'caitlin': 'Caitlin',
'malva': 'Malva',
'siebold': 'Siebold',
'wikstrom': 'Wikstrom',
'drasna': 'Drasna',
'hala': 'Hala',
'molayne': 'Molayne',
'olivia': 'Olivia',
'acerola': 'Acerola',
'kahili': 'Kahili',
'rika': 'Rika',
'poppy': 'Poppy',
'hassel': 'Hassel',
'crispin': 'Crispin',
'amarys': 'Amarys',
'lacey': 'Lacey',
'drayton': 'Drayton',
'blue': 'Blue',
'red': 'Red',
'steven': 'Steven',
'wallace': 'Wallace',
'cynthia': 'Cynthia',
'alder': 'Alder',
'iris': 'Iris',
'diantha': 'Diantha',
'hau': 'Hau',
'geeta': 'Geeta',
'nemona': 'Nemona',
'kieran': 'Kieran',
'leon': 'Leon',
'rival': 'Finn',
'rival_female': 'Ivy',
} as const;

View File

@ -1,30 +1,30 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const tutorial: SimpleTranslationEntries = {
"intro": `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements.
'intro': `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements.
$This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used.
$The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community.
$If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`,
"accessMenu": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`,
'accessMenu': 'To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.',
"menu": `From this menu you can access the settings.
'menu': `From this menu you can access the settings.
$From the settings you can change game speed, window style, and other options.
$There are also various other features here, so be sure to check them all!`,
"starterSelect": `From this screen, you can select your starters.\nThese are your initial party members.
'starterSelect': `From this screen, you can select your starters.\nThese are your initial party members.
$Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10.
$You can also select gender, ability, and form depending on\nthe variants you've caught or hatched.
$The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`,
"pokerus": `A daily random 3 selectable starters have a purple border.
'pokerus': `A daily random 3 selectable starters have a purple border.
$If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`,
"statChange": `Stat changes persist across battles as long as your Pokémon aren't recalled.
'statChange': `Stat changes persist across battles as long as your Pokémon aren't recalled.
$Your Pokémon are recalled before a trainer battle and before entering a new biome.
$You can also view the stat changes for the Pokémon on the field by holding C or Shift.`,
"selectItem": `After every battle, you are given a choice of 3 random items.\nYou may only pick one.
'selectItem': `After every battle, you are given a choice of 3 random items.\nYou may only pick one.
$These range from consumables, to Pokémon held items, to passive permanent items.
$Most non-consumable item effects will stack in various ways.
$Some items will only show up if they can be used, such as evolution items.
@ -33,7 +33,7 @@ export const tutorial: SimpleTranslationEntries = {
$You may purchase consumable items with money, and a larger variety will be available the further you get.
$Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`,
"eggGacha": `From this screen, you can redeem your vouchers for\nPokémon eggs.
'eggGacha': `From this screen, you can redeem your vouchers for\nPokémon eggs.
$Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch.
$Hatched Pokémon also won't be added to your party, they will\nbe added to your starters.
$Pokémon hatched from eggs generally have better IVs than\nwild Pokémon.

View File

@ -1,11 +1,11 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const voucher: SimpleTranslationEntries = {
"vouchers": "Vouchers",
"eggVoucher": "Egg Voucher",
"eggVoucherPlus": "Egg Voucher Plus",
"eggVoucherPremium": "Egg Voucher Premium",
"eggVoucherGold": "Egg Voucher Gold",
"locked": "Locked",
"defeatTrainer": "Defeat {{trainerName}}"
'vouchers': 'Vouchers',
'eggVoucher': 'Egg Voucher',
'eggVoucherPlus': 'Egg Voucher Plus',
'eggVoucherPremium': 'Egg Voucher Premium',
'eggVoucherGold': 'Egg Voucher Gold',
'locked': 'Locked',
'defeatTrainer': 'Defeat {{trainerName}}'
} as const;

View File

@ -1,44 +1,44 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
/**
* The weather namespace holds text displayed when weather is active during a battle
*/
export const weather: SimpleTranslationEntries = {
"sunnyStartMessage": "The sunlight got bright!",
"sunnyLapseMessage": "The sunlight is strong.",
"sunnyClearMessage": "The sunlight faded.",
'sunnyStartMessage': 'The sunlight got bright!',
'sunnyLapseMessage': 'The sunlight is strong.',
'sunnyClearMessage': 'The sunlight faded.',
"rainStartMessage": "A downpour started!",
"rainLapseMessage": "The downpour continues.",
"rainClearMessage": "The rain stopped.",
'rainStartMessage': 'A downpour started!',
'rainLapseMessage': 'The downpour continues.',
'rainClearMessage': 'The rain stopped.',
"sandstormStartMessage": "A sandstorm brewed!",
"sandstormLapseMessage": "The sandstorm rages.",
"sandstormClearMessage": "The sandstorm subsided.",
"sandstormDamageMessage": "{{pokemonPrefix}}{{pokemonName}} is buffeted\nby the sandstorm!",
'sandstormStartMessage': 'A sandstorm brewed!',
'sandstormLapseMessage': 'The sandstorm rages.',
'sandstormClearMessage': 'The sandstorm subsided.',
'sandstormDamageMessage': '{{pokemonPrefix}}{{pokemonName}} is buffeted\nby the sandstorm!',
"hailStartMessage": "It started to hail!",
"hailLapseMessage": "Hail continues to fall.",
"hailClearMessage": "The hail stopped.",
"hailDamageMessage": "{{pokemonPrefix}}{{pokemonName}} is pelted\nby the hail!",
'hailStartMessage': 'It started to hail!',
'hailLapseMessage': 'Hail continues to fall.',
'hailClearMessage': 'The hail stopped.',
'hailDamageMessage': '{{pokemonPrefix}}{{pokemonName}} is pelted\nby the hail!',
"snowStartMessage": "It started to snow!",
"snowLapseMessage": "The snow is falling down.",
"snowClearMessage": "The snow stopped.",
'snowStartMessage': 'It started to snow!',
'snowLapseMessage': 'The snow is falling down.',
'snowClearMessage': 'The snow stopped.',
"fogStartMessage": "A thick fog emerged!",
"fogLapseMessage": "The fog continues.",
"fogClearMessage": "The fog disappeared.",
'fogStartMessage': 'A thick fog emerged!',
'fogLapseMessage': 'The fog continues.',
'fogClearMessage': 'The fog disappeared.',
"heavyRainStartMessage": "A heavy downpour started!",
"heavyRainLapseMessage": "The heavy downpour continues.",
"heavyRainClearMessage": "The heavy rain stopped.",
'heavyRainStartMessage': 'A heavy downpour started!',
'heavyRainLapseMessage': 'The heavy downpour continues.',
'heavyRainClearMessage': 'The heavy rain stopped.',
"harshSunStartMessage": "The sunlight got hot!",
"harshSunLapseMessage": "The sun is scorching hot.",
"harshSunClearMessage": "The harsh sunlight faded.",
'harshSunStartMessage': 'The sunlight got hot!',
'harshSunLapseMessage': 'The sun is scorching hot.',
'harshSunClearMessage': 'The harsh sunlight faded.',
"strongWindsStartMessage": "A heavy wind began!",
"strongWindsLapseMessage": "The wind blows intensely.",
"strongWindsClearMessage": "The heavy wind stopped."
}
'strongWindsStartMessage': 'A heavy wind began!',
'strongWindsLapseMessage': 'The wind blows intensely.',
'strongWindsClearMessage': 'The heavy wind stopped.'
};

View File

@ -1,6 +1,6 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const abilityTriggers: SimpleTranslationEntries = {
'blockRecoilDamage' : `{{pokemonName}}'s {{abilityName}}\nprotected it from recoil!`,
'badDreams': `{{pokemonName}} Está atormentado!`
'blockRecoilDamage' : '{{pokemonName}}\'s {{abilityName}}\nprotected it from recoil!',
'badDreams': '{{pokemonName}} Está atormentado!'
} as const;

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const battleMessageUiHandler: SimpleTranslationEntries = {
"ivBest": "Best",
"ivFantastic": "Fantastic",
"ivVeryGood": "Very Good",
"ivPrettyGood": "Pretty Good",
"ivDecent": "Decent",
"ivNoGood": "No Good",
'ivBest': 'Best',
'ivFantastic': 'Fantastic',
'ivVeryGood': 'Very Good',
'ivPrettyGood': 'Pretty Good',
'ivDecent': 'Decent',
'ivNoGood': 'No Good',
} as const;

View File

@ -1,56 +1,56 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
import { SimpleTranslationEntries } from '#app/plugins/i18n';
export const battle: SimpleTranslationEntries = {
"bossAppeared": "¡{{bossName}} te corta el paso!",
"trainerAppeared": "¡{{trainerName}}\nte desafía!",
"trainerAppearedDouble": "{{trainerName}}\nwould like to battle!",
"singleWildAppeared": "¡Un {{pokemonName}} salvaje te corta el paso!",
"multiWildAppeared": "¡Un {{pokemonName1}} y un {{pokemonName2}} salvajes\nte cortan el paso!",
"playerComeBack": "¡{{pokemonName}}, ven aquí!",
"trainerComeBack": "¡{{trainerName}} retira a {{pokemonName}} del combate!",
"playerGo": "¡Adelante, {{pokemonName}}!",
"trainerGo": "¡{{trainerName}} saca a {{pokemonName}}!",
"switchQuestion": "¿Quieres cambiar a\n{{pokemonName}}?",
"trainerDefeated": "¡Has derrotado a\n{{trainerName}}!",
"pokemonCaught": "¡{{pokemonName}} atrapado!",
"pokemon": "Pokémon",
"sendOutPokemon": "¡Adelante, {{pokemonName}}!",
"hitResultCriticalHit": "!Un golpe crítico!",
"hitResultSuperEffective": "!Es supereficaz!",
"hitResultNotVeryEffective": "No es muy eficaz…",
"hitResultNoEffect": "No afecta a {{pokemonName}}!",
"hitResultOneHitKO": "!KO en 1 golpe!",
"attackFailed": "¡Pero ha fallado!",
"attackHitsCount": `N.º de golpes: {{count}}.`,
"expGain": "{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.",
"levelUp": "¡{{pokemonName}} ha subido al \nNv. {{level}}!",
"learnMove": "¡{{pokemonName}} ha aprendido {{moveName}}!",
"learnMovePrompt": "{{pokemonName}} quiere aprender\n{{moveName}}.",
"learnMoveLimitReached": "Pero, {{pokemonName}} ya conoce\ncuatro movimientos.",
"learnMoveReplaceQuestion": "¿Quieres sustituir uno de sus movimientos por {{moveName}}?",
"learnMoveStopTeaching": "¿Prefieres que no aprenda\n{{moveName}}?",
"learnMoveNotLearned": "{{pokemonName}} no ha aprendido {{moveName}}.",
"learnMoveForgetQuestion": "¿Qué movimiento quieres que olvide?",
"learnMoveForgetSuccess": "{{pokemonName}} ha olvidado cómo utilizar {{moveName}}.",
"countdownPoof": "@d{32}1, @d{15}2, @d{15}y@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}¡Puf!",
"learnMoveAnd": "Y…",
"levelCapUp": "¡Se ha incrementado el\nnivel máximo a {{levelCap}}!",
"moveNotImplemented": "{{moveName}} aún no está implementado y no se puede seleccionar.",
"moveNoPP": "There's no PP left for\nthis move!",
"moveDisabled": "!No puede usar {{moveName}} porque ha sido anulado!",
"noPokeballForce": "Una fuerza misteriosa\nte impide usar Poké Balls.",
"noPokeballTrainer": "¡No puedes atrapar a los\nPokémon de los demás!",
"noPokeballMulti": "¡No se pueden lanzar Poké Balls\ncuando hay más de un Pokémon!",
"noPokeballStrong": "¡Este Pokémon es demasiado fuerte para ser capturado!\nNecesitas bajarle los PS primero!",
"noEscapeForce": "Una fuerza misteriosa\nte impide huir.",
"noEscapeTrainer": "¡No puedes huir de los\ncombates contra Entrenadores!",
"noEscapePokemon": "¡El movimiento {{moveName}} de {{pokemonName}} impide la huida!",
"runAwaySuccess": "¡Escapas sin problemas!",
"runAwayCannotEscape": "¡No has podido escapar!",
"escapeVerbSwitch": "cambiar",
"escapeVerbFlee": "huir",
"notDisabled": "¡El movimiento {{moveName}} de {{pokemonName}}\nya no está anulado!",
"skipItemQuestion": "¿Estás seguro de que no quieres coger un objeto?",
"eggHatching": "¿Y esto?",
"ivScannerUseQuestion": "¿Quieres usar el Escáner de IVs en {{pokemonName}}?"
'bossAppeared': '¡{{bossName}} te corta el paso!',
'trainerAppeared': '¡{{trainerName}}\nte desafía!',
'trainerAppearedDouble': '{{trainerName}}\nwould like to battle!',
'singleWildAppeared': '¡Un {{pokemonName}} salvaje te corta el paso!',
'multiWildAppeared': '¡Un {{pokemonName1}} y un {{pokemonName2}} salvajes\nte cortan el paso!',
'playerComeBack': '¡{{pokemonName}}, ven aquí!',
'trainerComeBack': '¡{{trainerName}} retira a {{pokemonName}} del combate!',
'playerGo': '¡Adelante, {{pokemonName}}!',
'trainerGo': '¡{{trainerName}} saca a {{pokemonName}}!',
'switchQuestion': '¿Quieres cambiar a\n{{pokemonName}}?',
'trainerDefeated': '¡Has derrotado a\n{{trainerName}}!',
'pokemonCaught': '¡{{pokemonName}} atrapado!',
'pokemon': 'Pokémon',
'sendOutPokemon': '¡Adelante, {{pokemonName}}!',
'hitResultCriticalHit': '!Un golpe crítico!',
'hitResultSuperEffective': '!Es supereficaz!',
'hitResultNotVeryEffective': 'No es muy eficaz…',
'hitResultNoEffect': 'No afecta a {{pokemonName}}!',
'hitResultOneHitKO': '!KO en 1 golpe!',
'attackFailed': '¡Pero ha fallado!',
'attackHitsCount': 'N.º de golpes: {{count}}.',
'expGain': '{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.',
'levelUp': '¡{{pokemonName}} ha subido al \nNv. {{level}}!',
'learnMove': '¡{{pokemonName}} ha aprendido {{moveName}}!',
'learnMovePrompt': '{{pokemonName}} quiere aprender\n{{moveName}}.',
'learnMoveLimitReached': 'Pero, {{pokemonName}} ya conoce\ncuatro movimientos.',
'learnMoveReplaceQuestion': '¿Quieres sustituir uno de sus movimientos por {{moveName}}?',
'learnMoveStopTeaching': '¿Prefieres que no aprenda\n{{moveName}}?',
'learnMoveNotLearned': '{{pokemonName}} no ha aprendido {{moveName}}.',
'learnMoveForgetQuestion': '¿Qué movimiento quieres que olvide?',
'learnMoveForgetSuccess': '{{pokemonName}} ha olvidado cómo utilizar {{moveName}}.',
'countdownPoof': '@d{32}1, @d{15}2, @d{15}y@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}¡Puf!',
'learnMoveAnd': 'Y…',
'levelCapUp': '¡Se ha incrementado el\nnivel máximo a {{levelCap}}!',
'moveNotImplemented': '{{moveName}} aún no está implementado y no se puede seleccionar.',
'moveNoPP': 'There\'s no PP left for\nthis move!',
'moveDisabled': '!No puede usar {{moveName}} porque ha sido anulado!',
'noPokeballForce': 'Una fuerza misteriosa\nte impide usar Poké Balls.',
'noPokeballTrainer': '¡No puedes atrapar a los\nPokémon de los demás!',
'noPokeballMulti': '¡No se pueden lanzar Poké Balls\ncuando hay más de un Pokémon!',
'noPokeballStrong': '¡Este Pokémon es demasiado fuerte para ser capturado!\nNecesitas bajarle los PS primero!',
'noEscapeForce': 'Una fuerza misteriosa\nte impide huir.',
'noEscapeTrainer': '¡No puedes huir de los\ncombates contra Entrenadores!',
'noEscapePokemon': '¡El movimiento {{moveName}} de {{pokemonName}} impide la huida!',
'runAwaySuccess': '¡Escapas sin problemas!',
'runAwayCannotEscape': '¡No has podido escapar!',
'escapeVerbSwitch': 'cambiar',
'escapeVerbFlee': 'huir',
'notDisabled': '¡El movimiento {{moveName}} de {{pokemonName}}\nya no está anulado!',
'skipItemQuestion': '¿Estás seguro de que no quieres coger un objeto?',
'eggHatching': '¿Y esto?',
'ivScannerUseQuestion': '¿Quieres usar el Escáner de IVs en {{pokemonName}}?'
} as const;

Some files were not shown because too many files have changed in this diff Show More