first round with eslint --fix .
This commit is contained in:
parent
8eb6f8a2e6
commit
77a88e0895
|
@ -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;
|
||||
|
@ -46,4 +46,4 @@ export function updateUserInfo(): Promise<[boolean, integer]> {
|
|||
resolve([ false, 500 ]);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
3268
src/battle-scene.ts
3268
src/battle-scene.ts
File diff suppressed because it is too large
Load Diff
522
src/battle.ts
522
src/battle.ts
|
@ -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,270 +34,270 @@ export interface TurnCommand {
|
|||
targets?: BattlerIndex[];
|
||||
skip?: boolean;
|
||||
args?: any[];
|
||||
};
|
||||
}
|
||||
|
||||
interface TurnCommands {
|
||||
[key: integer]: TurnCommand
|
||||
}
|
||||
|
||||
export default class Battle {
|
||||
protected gameMode: GameMode;
|
||||
public waveIndex: integer;
|
||||
public battleType: BattleType;
|
||||
public battleSpec: BattleSpec;
|
||||
public trainer: Trainer;
|
||||
public enemyLevels: integer[];
|
||||
public enemyParty: EnemyPokemon[];
|
||||
public seenEnemyPartyMemberIds: Set<integer>;
|
||||
public double: boolean;
|
||||
public started: boolean;
|
||||
public enemySwitchCounter: integer;
|
||||
public turn: integer;
|
||||
public turnCommands: TurnCommands;
|
||||
public playerParticipantIds: Set<integer>;
|
||||
public battleScore: integer;
|
||||
public postBattleLoot: PokemonHeldItemModifier[];
|
||||
public escapeAttempts: integer;
|
||||
public lastMove: Moves;
|
||||
public battleSeed: string;
|
||||
private battleSeedState: string;
|
||||
public moneyScattered: number;
|
||||
public lastUsedPokeball: PokeballType;
|
||||
protected gameMode: GameMode;
|
||||
public waveIndex: integer;
|
||||
public battleType: BattleType;
|
||||
public battleSpec: BattleSpec;
|
||||
public trainer: Trainer;
|
||||
public enemyLevels: integer[];
|
||||
public enemyParty: EnemyPokemon[];
|
||||
public seenEnemyPartyMemberIds: Set<integer>;
|
||||
public double: boolean;
|
||||
public started: boolean;
|
||||
public enemySwitchCounter: integer;
|
||||
public turn: integer;
|
||||
public turnCommands: TurnCommands;
|
||||
public playerParticipantIds: Set<integer>;
|
||||
public battleScore: integer;
|
||||
public postBattleLoot: PokemonHeldItemModifier[];
|
||||
public escapeAttempts: integer;
|
||||
public lastMove: Moves;
|
||||
public battleSeed: string;
|
||||
private battleSeedState: string;
|
||||
public moneyScattered: number;
|
||||
public lastUsedPokeball: PokeballType;
|
||||
|
||||
private rngCounter: integer = 0;
|
||||
private rngCounter: integer = 0;
|
||||
|
||||
constructor(gameMode: GameMode, waveIndex: integer, battleType: BattleType, trainer: Trainer, double: boolean) {
|
||||
this.gameMode = gameMode;
|
||||
this.waveIndex = waveIndex;
|
||||
this.battleType = battleType;
|
||||
this.trainer = trainer;
|
||||
this.initBattleSpec();
|
||||
this.enemyLevels = battleType !== BattleType.TRAINER
|
||||
? new Array(double ? 2 : 1).fill(null).map(() => this.getLevelForWave())
|
||||
: trainer.getPartyLevels(this.waveIndex);
|
||||
this.enemyParty = [];
|
||||
this.seenEnemyPartyMemberIds = new Set<integer>();
|
||||
this.double = double;
|
||||
this.enemySwitchCounter = 0;
|
||||
this.turn = 0;
|
||||
this.playerParticipantIds = new Set<integer>();
|
||||
this.battleScore = 0;
|
||||
this.postBattleLoot = [];
|
||||
this.escapeAttempts = 0;
|
||||
this.started = false;
|
||||
this.battleSeed = Utils.randomString(16, true);
|
||||
this.battleSeedState = null;
|
||||
this.moneyScattered = 0;
|
||||
this.lastUsedPokeball = null;
|
||||
constructor(gameMode: GameMode, waveIndex: integer, battleType: BattleType, trainer: Trainer, double: boolean) {
|
||||
this.gameMode = gameMode;
|
||||
this.waveIndex = waveIndex;
|
||||
this.battleType = battleType;
|
||||
this.trainer = trainer;
|
||||
this.initBattleSpec();
|
||||
this.enemyLevels = battleType !== BattleType.TRAINER
|
||||
? new Array(double ? 2 : 1).fill(null).map(() => this.getLevelForWave())
|
||||
: trainer.getPartyLevels(this.waveIndex);
|
||||
this.enemyParty = [];
|
||||
this.seenEnemyPartyMemberIds = new Set<integer>();
|
||||
this.double = double;
|
||||
this.enemySwitchCounter = 0;
|
||||
this.turn = 0;
|
||||
this.playerParticipantIds = new Set<integer>();
|
||||
this.battleScore = 0;
|
||||
this.postBattleLoot = [];
|
||||
this.escapeAttempts = 0;
|
||||
this.started = false;
|
||||
this.battleSeed = Utils.randomString(16, true);
|
||||
this.battleSeedState = null;
|
||||
this.moneyScattered = 0;
|
||||
this.lastUsedPokeball = null;
|
||||
}
|
||||
|
||||
private initBattleSpec(): void {
|
||||
let spec = BattleSpec.DEFAULT;
|
||||
if (this.gameMode.isClassic) {
|
||||
if (this.waveIndex === 200)
|
||||
spec = BattleSpec.FINAL_BOSS;
|
||||
}
|
||||
this.battleSpec = spec;
|
||||
}
|
||||
|
||||
private getLevelForWave(): integer {
|
||||
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)) {
|
||||
const ret = Math.floor(baseLevel * bossMultiplier);
|
||||
if (this.battleSpec === BattleSpec.FINAL_BOSS || !(this.waveIndex % 250))
|
||||
return Math.ceil(ret / 25) * 25;
|
||||
let levelOffset = 0;
|
||||
if (!this.gameMode.isWaveFinal(this.waveIndex))
|
||||
levelOffset = Math.round(Phaser.Math.RND.realInRange(-1, 1) * Math.floor(levelWaveIndex / 10));
|
||||
return ret + levelOffset;
|
||||
}
|
||||
|
||||
private initBattleSpec(): void {
|
||||
let spec = BattleSpec.DEFAULT;
|
||||
if (this.gameMode.isClassic) {
|
||||
if (this.waveIndex === 200)
|
||||
spec = BattleSpec.FINAL_BOSS;
|
||||
}
|
||||
this.battleSpec = spec;
|
||||
}
|
||||
|
||||
private getLevelForWave(): integer {
|
||||
let levelWaveIndex = this.gameMode.getWaveForDifficulty(this.waveIndex);
|
||||
let baseLevel = 1 + levelWaveIndex / 2 + Math.pow(levelWaveIndex / 25, 2);
|
||||
const bossMultiplier = 1.2;
|
||||
|
||||
if (!(this.waveIndex % 10)) {
|
||||
const ret = Math.floor(baseLevel * bossMultiplier);
|
||||
if (this.battleSpec === BattleSpec.FINAL_BOSS || !(this.waveIndex % 250))
|
||||
return Math.ceil(ret / 25) * 25;
|
||||
let levelOffset = 0;
|
||||
if (!this.gameMode.isWaveFinal(this.waveIndex))
|
||||
levelOffset = Math.round(Phaser.Math.RND.realInRange(-1, 1) * Math.floor(levelWaveIndex / 10));
|
||||
return ret + levelOffset;
|
||||
}
|
||||
|
||||
let levelOffset = 0;
|
||||
let levelOffset = 0;
|
||||
|
||||
const deviation = 10 / levelWaveIndex;
|
||||
levelOffset = Math.abs(this.randSeedGaussForLevel(deviation));
|
||||
const deviation = 10 / levelWaveIndex;
|
||||
levelOffset = Math.abs(this.randSeedGaussForLevel(deviation));
|
||||
|
||||
return Math.max(Math.round(baseLevel + levelOffset), 1);
|
||||
}
|
||||
return Math.max(Math.round(baseLevel + levelOffset), 1);
|
||||
}
|
||||
|
||||
randSeedGaussForLevel(value: number): number {
|
||||
let rand = 0;
|
||||
for (let i = value; i > 0; i--)
|
||||
rand += Phaser.Math.RND.realInRange(0, 1);
|
||||
return rand / value;
|
||||
}
|
||||
randSeedGaussForLevel(value: number): number {
|
||||
let rand = 0;
|
||||
for (let i = value; i > 0; i--)
|
||||
rand += Phaser.Math.RND.realInRange(0, 1);
|
||||
return rand / value;
|
||||
}
|
||||
|
||||
getBattlerCount(): integer {
|
||||
return this.double ? 2 : 1;
|
||||
}
|
||||
getBattlerCount(): integer {
|
||||
return this.double ? 2 : 1;
|
||||
}
|
||||
|
||||
incrementTurn(scene: BattleScene): void {
|
||||
this.turn++;
|
||||
this.turnCommands = Object.fromEntries(Utils.getEnumValues(BattlerIndex).map(bt => [ bt, null ]));
|
||||
this.battleSeedState = null;
|
||||
}
|
||||
incrementTurn(scene: BattleScene): void {
|
||||
this.turn++;
|
||||
this.turnCommands = Object.fromEntries(Utils.getEnumValues(BattlerIndex).map(bt => [ bt, null ]));
|
||||
this.battleSeedState = null;
|
||||
}
|
||||
|
||||
addParticipant(playerPokemon: PlayerPokemon): void {
|
||||
this.playerParticipantIds.add(playerPokemon.id);
|
||||
}
|
||||
addParticipant(playerPokemon: PlayerPokemon): void {
|
||||
this.playerParticipantIds.add(playerPokemon.id);
|
||||
}
|
||||
|
||||
removeFaintedParticipant(playerPokemon: PlayerPokemon): void {
|
||||
this.playerParticipantIds.delete(playerPokemon.id);
|
||||
}
|
||||
removeFaintedParticipant(playerPokemon: PlayerPokemon): void {
|
||||
this.playerParticipantIds.delete(playerPokemon.id);
|
||||
}
|
||||
|
||||
addPostBattleLoot(enemyPokemon: EnemyPokemon): void {
|
||||
this.postBattleLoot.push(...enemyPokemon.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === enemyPokemon.id && m.getTransferrable(false), false).map(i => {
|
||||
const ret = i as PokemonHeldItemModifier;
|
||||
ret.pokemonId = null;
|
||||
return ret;
|
||||
}));
|
||||
}
|
||||
addPostBattleLoot(enemyPokemon: EnemyPokemon): void {
|
||||
this.postBattleLoot.push(...enemyPokemon.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === enemyPokemon.id && m.getTransferrable(false), false).map(i => {
|
||||
const ret = i as PokemonHeldItemModifier;
|
||||
ret.pokemonId = null;
|
||||
return ret;
|
||||
}));
|
||||
}
|
||||
|
||||
pickUpScatteredMoney(scene: BattleScene): void {
|
||||
const moneyAmount = new Utils.IntegerHolder(scene.currentBattle.moneyScattered);
|
||||
scene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount);
|
||||
pickUpScatteredMoney(scene: BattleScene): void {
|
||||
const moneyAmount = new Utils.IntegerHolder(scene.currentBattle.moneyScattered);
|
||||
scene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount);
|
||||
|
||||
scene.addMoney(moneyAmount.value);
|
||||
scene.addMoney(moneyAmount.value);
|
||||
|
||||
scene.queueMessage(`You picked up ₽${moneyAmount.value.toLocaleString('en-US')}!`, null, true);
|
||||
scene.queueMessage(`You picked up ₽${moneyAmount.value.toLocaleString('en-US')}!`, null, true);
|
||||
|
||||
scene.currentBattle.moneyScattered = 0;
|
||||
scene.currentBattle.moneyScattered = 0;
|
||||
}
|
||||
|
||||
addBattleScore(scene: BattleScene): void {
|
||||
let partyMemberTurnMultiplier = scene.getEnemyParty().length / 2 + 0.5;
|
||||
if (this.double)
|
||||
partyMemberTurnMultiplier /= 1.5;
|
||||
for (const p of scene.getEnemyParty()) {
|
||||
if (p.isBoss())
|
||||
partyMemberTurnMultiplier *= (p.bossSegments / 1.5) / scene.getEnemyParty().length;
|
||||
}
|
||||
const turnMultiplier = Phaser.Tweens.Builders.GetEaseFunction('Sine.easeIn')(1 - Math.min(this.turn - 2, 10 * partyMemberTurnMultiplier) / (10 * partyMemberTurnMultiplier));
|
||||
const finalBattleScore = Math.ceil(this.battleScore * turnMultiplier);
|
||||
scene.score += finalBattleScore;
|
||||
console.log(`Battle Score: ${finalBattleScore} (${this.turn - 1} Turns x${Math.floor(turnMultiplier * 100) / 100})`);
|
||||
console.log(`Total Score: ${scene.score}`);
|
||||
scene.updateScoreText();
|
||||
}
|
||||
|
||||
getBgmOverride(scene: BattleScene): string {
|
||||
const battlers = this.enemyParty.slice(0, this.getBattlerCount());
|
||||
if (this.battleType === BattleType.TRAINER) {
|
||||
if (!this.started && this.trainer.config.encounterBgm && this.trainer.getEncounterMessages()?.length)
|
||||
return `encounter_${this.trainer.getEncounterBgm()}`;
|
||||
return this.trainer.getBattleBgm();
|
||||
} else if (this.gameMode.isClassic && this.waveIndex > 195 && this.battleSpec !== BattleSpec.FINAL_BOSS)
|
||||
return 'end_summit';
|
||||
for (const pokemon of battlers) {
|
||||
if (this.battleSpec === BattleSpec.FINAL_BOSS) {
|
||||
if (pokemon.formIndex)
|
||||
return 'battle_final';
|
||||
return 'battle_final_encounter';
|
||||
}
|
||||
if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) {
|
||||
if (pokemon.species.speciesId === Species.REGIROCK || pokemon.species.speciesId === Species.REGICE || pokemon.species.speciesId === Species.REGISTEEL || pokemon.species.speciesId === Species.REGIGIGAS || pokemon.species.speciesId === Species.REGIELEKI || pokemon.species.speciesId === Species.REGIDRAGO)
|
||||
return 'battle_legendary_regis';
|
||||
if (pokemon.species.speciesId === Species.COBALION || pokemon.species.speciesId === Species.TERRAKION || pokemon.species.speciesId === Species.VIRIZION || pokemon.species.speciesId === Species.TORNADUS || pokemon.species.speciesId === Species.THUNDURUS || pokemon.species.speciesId === Species.LANDORUS || pokemon.species.speciesId === Species.KELDEO || pokemon.species.speciesId === Species.MELOETTA || pokemon.species.speciesId === Species.GENESECT)
|
||||
return 'battle_legendary_unova';
|
||||
if (pokemon.species.speciesId === Species.RESHIRAM || pokemon.species.speciesId === Species.ZEKROM)
|
||||
return 'battle_legendary_res_zek';
|
||||
if (pokemon.species.speciesId === Species.KYUREM)
|
||||
return 'battle_legendary_kyurem';
|
||||
if (pokemon.species.legendary)
|
||||
return 'battle_legendary_res_zek';
|
||||
return 'battle_legendary_unova';
|
||||
}
|
||||
}
|
||||
|
||||
addBattleScore(scene: BattleScene): void {
|
||||
let partyMemberTurnMultiplier = scene.getEnemyParty().length / 2 + 0.5;
|
||||
if (this.double)
|
||||
partyMemberTurnMultiplier /= 1.5;
|
||||
for (let p of scene.getEnemyParty()) {
|
||||
if (p.isBoss())
|
||||
partyMemberTurnMultiplier *= (p.bossSegments / 1.5) / scene.getEnemyParty().length;
|
||||
}
|
||||
const turnMultiplier = Phaser.Tweens.Builders.GetEaseFunction('Sine.easeIn')(1 - Math.min(this.turn - 2, 10 * partyMemberTurnMultiplier) / (10 * partyMemberTurnMultiplier));
|
||||
const finalBattleScore = Math.ceil(this.battleScore * turnMultiplier);
|
||||
scene.score += finalBattleScore;
|
||||
console.log(`Battle Score: ${finalBattleScore} (${this.turn - 1} Turns x${Math.floor(turnMultiplier * 100) / 100})`);
|
||||
console.log(`Total Score: ${scene.score}`);
|
||||
scene.updateScoreText();
|
||||
}
|
||||
|
||||
getBgmOverride(scene: BattleScene): string {
|
||||
const battlers = this.enemyParty.slice(0, this.getBattlerCount());
|
||||
if (this.battleType === BattleType.TRAINER) {
|
||||
if (!this.started && this.trainer.config.encounterBgm && this.trainer.getEncounterMessages()?.length)
|
||||
return `encounter_${this.trainer.getEncounterBgm()}`;
|
||||
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) {
|
||||
if (this.battleSpec === BattleSpec.FINAL_BOSS) {
|
||||
if (pokemon.formIndex)
|
||||
return 'battle_final';
|
||||
return 'battle_final_encounter';
|
||||
}
|
||||
if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) {
|
||||
if (pokemon.species.speciesId === Species.REGIROCK || pokemon.species.speciesId === Species.REGICE || pokemon.species.speciesId === Species.REGISTEEL || pokemon.species.speciesId === Species.REGIGIGAS || pokemon.species.speciesId === Species.REGIELEKI || pokemon.species.speciesId === Species.REGIDRAGO)
|
||||
return 'battle_legendary_regis';
|
||||
if (pokemon.species.speciesId === Species.COBALION || pokemon.species.speciesId === Species.TERRAKION || pokemon.species.speciesId === Species.VIRIZION || pokemon.species.speciesId === Species.TORNADUS || pokemon.species.speciesId === Species.THUNDURUS || pokemon.species.speciesId === Species.LANDORUS || pokemon.species.speciesId === Species.KELDEO || pokemon.species.speciesId === Species.MELOETTA || pokemon.species.speciesId === Species.GENESECT)
|
||||
return 'battle_legendary_unova';
|
||||
if (pokemon.species.speciesId === Species.RESHIRAM || pokemon.species.speciesId === Species.ZEKROM)
|
||||
return 'battle_legendary_res_zek';
|
||||
if (pokemon.species.speciesId === Species.KYUREM)
|
||||
return 'battle_legendary_kyurem';
|
||||
if (pokemon.species.legendary)
|
||||
return 'battle_legendary_res_zek';
|
||||
return 'battle_legendary_unova';
|
||||
}
|
||||
}
|
||||
|
||||
if (scene.gameMode.isClassic && this.waveIndex <= 4)
|
||||
return 'battle_wild';
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
randSeedInt(scene: BattleScene, range: integer, min: integer = 0): integer {
|
||||
if (range <= 1)
|
||||
return min;
|
||||
let ret: integer;
|
||||
const tempRngCounter = scene.rngCounter;
|
||||
const tempSeedOverride = scene.rngSeedOverride;
|
||||
const state = Phaser.Math.RND.state();
|
||||
if (this.battleSeedState)
|
||||
Phaser.Math.RND.state(this.battleSeedState);
|
||||
else {
|
||||
Phaser.Math.RND.sow([ Utils.shiftCharCodes(this.battleSeed, this.turn << 6) ]);
|
||||
console.log('Battle Seed:', this.battleSeed);
|
||||
}
|
||||
scene.rngCounter = this.rngCounter++;
|
||||
scene.rngSeedOverride = this.battleSeed;
|
||||
ret = Utils.randSeedInt(range, min);
|
||||
this.battleSeedState = Phaser.Math.RND.state();
|
||||
Phaser.Math.RND.state(state);
|
||||
scene.rngCounter = tempRngCounter;
|
||||
scene.rngSeedOverride = tempSeedOverride;
|
||||
return ret;
|
||||
if (scene.gameMode.isClassic && this.waveIndex <= 4)
|
||||
return 'battle_wild';
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
randSeedInt(scene: BattleScene, range: integer, min: integer = 0): integer {
|
||||
if (range <= 1)
|
||||
return min;
|
||||
let ret: integer;
|
||||
const tempRngCounter = scene.rngCounter;
|
||||
const tempSeedOverride = scene.rngSeedOverride;
|
||||
const state = Phaser.Math.RND.state();
|
||||
if (this.battleSeedState)
|
||||
Phaser.Math.RND.state(this.battleSeedState);
|
||||
else {
|
||||
Phaser.Math.RND.sow([ Utils.shiftCharCodes(this.battleSeed, this.turn << 6) ]);
|
||||
console.log('Battle Seed:', this.battleSeed);
|
||||
}
|
||||
scene.rngCounter = this.rngCounter++;
|
||||
scene.rngSeedOverride = this.battleSeed;
|
||||
ret = Utils.randSeedInt(range, min);
|
||||
this.battleSeedState = Phaser.Math.RND.state();
|
||||
Phaser.Math.RND.state(state);
|
||||
scene.rngCounter = tempRngCounter;
|
||||
scene.rngSeedOverride = tempSeedOverride;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
export class FixedBattle extends Battle {
|
||||
constructor(scene: BattleScene, waveIndex: integer, config: FixedBattleConfig) {
|
||||
super(scene.gameMode, waveIndex, config.battleType, config.battleType === BattleType.TRAINER ? config.getTrainer(scene) : null, config.double);
|
||||
if (config.getEnemyParty)
|
||||
this.enemyParty = config.getEnemyParty(scene);
|
||||
}
|
||||
constructor(scene: BattleScene, waveIndex: integer, config: FixedBattleConfig) {
|
||||
super(scene.gameMode, waveIndex, config.battleType, config.battleType === BattleType.TRAINER ? config.getTrainer(scene) : null, config.double);
|
||||
if (config.getEnemyParty)
|
||||
this.enemyParty = config.getEnemyParty(scene);
|
||||
}
|
||||
}
|
||||
|
||||
type GetTrainerFunc = (scene: BattleScene) => Trainer;
|
||||
type GetEnemyPartyFunc = (scene: BattleScene) => EnemyPokemon[];
|
||||
|
||||
export class FixedBattleConfig {
|
||||
public battleType: BattleType;
|
||||
public double: boolean;
|
||||
public getTrainer: GetTrainerFunc;
|
||||
public getEnemyParty: GetEnemyPartyFunc;
|
||||
public seedOffsetWaveIndex: integer;
|
||||
public battleType: BattleType;
|
||||
public double: boolean;
|
||||
public getTrainer: GetTrainerFunc;
|
||||
public getEnemyParty: GetEnemyPartyFunc;
|
||||
public seedOffsetWaveIndex: integer;
|
||||
|
||||
setBattleType(battleType: BattleType): FixedBattleConfig {
|
||||
this.battleType = battleType;
|
||||
return this;
|
||||
}
|
||||
setBattleType(battleType: BattleType): FixedBattleConfig {
|
||||
this.battleType = battleType;
|
||||
return this;
|
||||
}
|
||||
|
||||
setDouble(double: boolean): FixedBattleConfig {
|
||||
this.double = double;
|
||||
return this;
|
||||
}
|
||||
setDouble(double: boolean): FixedBattleConfig {
|
||||
this.double = double;
|
||||
return this;
|
||||
}
|
||||
|
||||
setGetTrainerFunc(getTrainerFunc: GetTrainerFunc): FixedBattleConfig {
|
||||
this.getTrainer = getTrainerFunc;
|
||||
return this;
|
||||
}
|
||||
setGetTrainerFunc(getTrainerFunc: GetTrainerFunc): FixedBattleConfig {
|
||||
this.getTrainer = getTrainerFunc;
|
||||
return this;
|
||||
}
|
||||
|
||||
setGetEnemyPartyFunc(getEnemyPartyFunc: GetEnemyPartyFunc): FixedBattleConfig {
|
||||
this.getEnemyParty = getEnemyPartyFunc;
|
||||
return this;
|
||||
}
|
||||
setGetEnemyPartyFunc(getEnemyPartyFunc: GetEnemyPartyFunc): FixedBattleConfig {
|
||||
this.getEnemyParty = getEnemyPartyFunc;
|
||||
return this;
|
||||
}
|
||||
|
||||
setSeedOffsetWave(seedOffsetWaveIndex: integer): FixedBattleConfig {
|
||||
this.seedOffsetWaveIndex = seedOffsetWaveIndex;
|
||||
return this;
|
||||
}
|
||||
setSeedOffsetWave(seedOffsetWaveIndex: integer): FixedBattleConfig {
|
||||
this.seedOffsetWaveIndex = seedOffsetWaveIndex;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
function getRandomTrainerFunc(trainerPool: (TrainerType | TrainerType[])[]): GetTrainerFunc {
|
||||
return (scene: BattleScene) => {
|
||||
const rand = Utils.randSeedInt(trainerPool.length);
|
||||
const trainerTypes: TrainerType[] = [];
|
||||
for (let trainerPoolEntry of trainerPool) {
|
||||
const trainerType = Array.isArray(trainerPoolEntry)
|
||||
? Utils.randSeedItem(trainerPoolEntry)
|
||||
: trainerPoolEntry;
|
||||
trainerTypes.push(trainerType);
|
||||
}
|
||||
return new Trainer(scene, trainerTypes[rand], TrainerVariant.DEFAULT);
|
||||
};
|
||||
return (scene: BattleScene) => {
|
||||
const rand = Utils.randSeedInt(trainerPool.length);
|
||||
const trainerTypes: TrainerType[] = [];
|
||||
for (const trainerPoolEntry of trainerPool) {
|
||||
const trainerType = Array.isArray(trainerPoolEntry)
|
||||
? Utils.randSeedItem(trainerPoolEntry)
|
||||
: trainerPoolEntry;
|
||||
trainerTypes.push(trainerType);
|
||||
}
|
||||
return new Trainer(scene, trainerTypes[rand], TrainerVariant.DEFAULT);
|
||||
};
|
||||
}
|
||||
|
||||
interface FixedBattleConfigs {
|
||||
|
@ -305,28 +305,28 @@ interface FixedBattleConfigs {
|
|||
}
|
||||
|
||||
export const fixedBattles: FixedBattleConfigs = {
|
||||
[5]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.YOUNGSTER, Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[8]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[25]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_2, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[55]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_3, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[95]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_4, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_5, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, [ TrainerType.HALA, TrainerType.MOLAYNE ], TrainerType.RIKA, TrainerType.CRISPIN ])),
|
||||
[184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.POPPY, TrainerType.AMARYS ])),
|
||||
[186]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, TrainerType.LARRY_ELITE, TrainerType.LACEY ])),
|
||||
[188]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.HASSEL, TrainerType.DRAYTON ])),
|
||||
[190]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, TrainerType.HAU, [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN, TrainerType.LEON ])),
|
||||
[195]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_6, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT))
|
||||
};
|
||||
[5]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.YOUNGSTER, Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[8]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[25]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_2, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[55]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_3, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[95]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_4, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_5, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
|
||||
[182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, [ TrainerType.HALA, TrainerType.MOLAYNE ], TrainerType.RIKA, TrainerType.CRISPIN ])),
|
||||
[184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.POPPY, TrainerType.AMARYS ])),
|
||||
[186]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, TrainerType.LARRY_ELITE, TrainerType.LACEY ])),
|
||||
[188]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.HASSEL, TrainerType.DRAYTON ])),
|
||||
[190]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)
|
||||
.setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, TrainerType.HAU, [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN, TrainerType.LEON ])),
|
||||
[195]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
|
||||
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_6, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT))
|
||||
};
|
||||
|
|
|
@ -2,28 +2,28 @@
|
|||
* Dualshock mapping
|
||||
*/
|
||||
const pad_dualshock = {
|
||||
padID: 'Dualshock',
|
||||
padType: 'Sony',
|
||||
gamepadMapping: {
|
||||
RC_S: 0,
|
||||
RC_E: 1,
|
||||
RC_W: 2,
|
||||
RC_N: 3,
|
||||
START: 9, // Options
|
||||
SELECT: 8, // Share
|
||||
LB: 4,
|
||||
RB: 5,
|
||||
LT: 6,
|
||||
RT: 7,
|
||||
LS: 10,
|
||||
RS: 11,
|
||||
LC_N: 12,
|
||||
LC_S: 13,
|
||||
LC_W: 14,
|
||||
LC_E: 15,
|
||||
MENU: 16,
|
||||
TOUCH: 17
|
||||
},
|
||||
padID: 'Dualshock',
|
||||
padType: 'Sony',
|
||||
gamepadMapping: {
|
||||
RC_S: 0,
|
||||
RC_E: 1,
|
||||
RC_W: 2,
|
||||
RC_N: 3,
|
||||
START: 9, // Options
|
||||
SELECT: 8, // Share
|
||||
LB: 4,
|
||||
RB: 5,
|
||||
LT: 6,
|
||||
RT: 7,
|
||||
LS: 10,
|
||||
RS: 11,
|
||||
LC_N: 12,
|
||||
LC_S: 13,
|
||||
LC_W: 14,
|
||||
LC_E: 15,
|
||||
MENU: 16,
|
||||
TOUCH: 17
|
||||
},
|
||||
};
|
||||
|
||||
export default pad_dualshock;
|
||||
|
|
|
@ -2,26 +2,26 @@
|
|||
* Generic pad mapping
|
||||
*/
|
||||
const pad_generic = {
|
||||
padID: 'Generic',
|
||||
padType: 'generic',
|
||||
gamepadMapping: {
|
||||
RC_S: 0,
|
||||
RC_E: 1,
|
||||
RC_W: 2,
|
||||
RC_N: 3,
|
||||
START: 9,
|
||||
SELECT: 8,
|
||||
LB: 4,
|
||||
RB: 5,
|
||||
LT: 6,
|
||||
RT: 7,
|
||||
LS: 10,
|
||||
RS: 11,
|
||||
LC_N: 12,
|
||||
LC_S: 13,
|
||||
LC_W: 14,
|
||||
LC_E: 15
|
||||
},
|
||||
padID: 'Generic',
|
||||
padType: 'generic',
|
||||
gamepadMapping: {
|
||||
RC_S: 0,
|
||||
RC_E: 1,
|
||||
RC_W: 2,
|
||||
RC_N: 3,
|
||||
START: 9,
|
||||
SELECT: 8,
|
||||
LB: 4,
|
||||
RB: 5,
|
||||
LT: 6,
|
||||
RT: 7,
|
||||
LS: 10,
|
||||
RS: 11,
|
||||
LC_N: 12,
|
||||
LC_S: 13,
|
||||
LC_W: 14,
|
||||
LC_E: 15
|
||||
},
|
||||
};
|
||||
|
||||
export default pad_generic;
|
||||
|
|
|
@ -2,22 +2,22 @@
|
|||
* 081f-e401 - UnlicensedSNES
|
||||
*/
|
||||
const pad_unlicensedSNES = {
|
||||
padID: '081f-e401',
|
||||
padType: 'snes',
|
||||
gamepadMapping : {
|
||||
RC_S: 2,
|
||||
RC_E: 1,
|
||||
RC_W: 3,
|
||||
RC_N: 0,
|
||||
START: 9,
|
||||
SELECT: 8,
|
||||
LB: 4,
|
||||
RB: 5,
|
||||
LC_N: 12,
|
||||
LC_S: 13,
|
||||
LC_W: 14,
|
||||
LC_E: 15
|
||||
}
|
||||
padID: '081f-e401',
|
||||
padType: 'snes',
|
||||
gamepadMapping : {
|
||||
RC_S: 2,
|
||||
RC_E: 1,
|
||||
RC_W: 3,
|
||||
RC_N: 0,
|
||||
START: 9,
|
||||
SELECT: 8,
|
||||
LB: 4,
|
||||
RB: 5,
|
||||
LC_N: 12,
|
||||
LC_S: 13,
|
||||
LC_W: 14,
|
||||
LC_E: 15
|
||||
}
|
||||
};
|
||||
|
||||
export default pad_unlicensedSNES;
|
||||
|
|
|
@ -2,27 +2,27 @@
|
|||
* Generic pad mapping
|
||||
*/
|
||||
const pad_xbox360 = {
|
||||
padID: 'Xbox 360 controller (XInput STANDARD GAMEPAD)',
|
||||
padType: 'xbox',
|
||||
gamepadMapping: {
|
||||
RC_S: 0,
|
||||
RC_E: 1,
|
||||
RC_W: 2,
|
||||
RC_N: 3,
|
||||
START: 9,
|
||||
SELECT: 8,
|
||||
LB: 4,
|
||||
RB: 5,
|
||||
LT: 6,
|
||||
RT: 7,
|
||||
LS: 10,
|
||||
RS: 11,
|
||||
LC_N: 12,
|
||||
LC_S: 13,
|
||||
LC_W: 14,
|
||||
LC_E: 15,
|
||||
MENU: 16
|
||||
},
|
||||
padID: 'Xbox 360 controller (XInput STANDARD GAMEPAD)',
|
||||
padType: 'xbox',
|
||||
gamepadMapping: {
|
||||
RC_S: 0,
|
||||
RC_E: 1,
|
||||
RC_W: 2,
|
||||
RC_N: 3,
|
||||
START: 9,
|
||||
SELECT: 8,
|
||||
LB: 4,
|
||||
RB: 5,
|
||||
LT: 6,
|
||||
RT: 7,
|
||||
LS: 10,
|
||||
RS: 11,
|
||||
LC_N: 12,
|
||||
LC_S: 13,
|
||||
LC_W: 14,
|
||||
LC_E: 15,
|
||||
MENU: 16
|
||||
},
|
||||
};
|
||||
|
||||
export default pad_xbox360;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -490,18 +490,18 @@ export class PostDefendFormChangeAbAttr extends PostDefendAbAttr {
|
|||
|
||||
export class FieldPriorityMoveImmunityAbAttr extends PreDefendAbAttr {
|
||||
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||
const attackPriority = new Utils.IntegerHolder(move.getMove().priority);
|
||||
applyMoveAttrs(IncrementMovePriorityAttr,attacker,null,move.getMove(),attackPriority);
|
||||
applyAbAttrs(IncrementMovePriorityAbAttr, attacker, null, move.getMove(), attackPriority);
|
||||
const attackPriority = new Utils.IntegerHolder(move.getMove().priority);
|
||||
applyMoveAttrs(IncrementMovePriorityAttr,attacker,null,move.getMove(),attackPriority);
|
||||
applyAbAttrs(IncrementMovePriorityAbAttr, attacker, null, move.getMove(), attackPriority);
|
||||
|
||||
if(move.getMove().moveTarget===MoveTarget.USER) {
|
||||
return false;
|
||||
}
|
||||
if(move.getMove().moveTarget===MoveTarget.USER) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(attackPriority.value > 0 && !move.getMove().isMultiTarget()) {
|
||||
cancelled.value = true;
|
||||
return true;
|
||||
}
|
||||
if(attackPriority.value > 0 && !move.getMove().isMultiTarget()) {
|
||||
cancelled.value = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
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!');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1026,10 +1026,10 @@ export class DamageBoostAbAttr extends PreAttackAbAttr {
|
|||
if (this.condition(pokemon, defender, move.getMove())) {
|
||||
const power = args[0] as Utils.NumberHolder;
|
||||
power.value = Math.floor(power.value * this.damageMultiplier);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1118,7 +1118,7 @@ export class BattleStatMultiplierAbAttr extends AbAttr {
|
|||
}
|
||||
|
||||
applyBattleStat(pokemon: Pokemon, passive: boolean, battleStat: BattleStat, statValue: Utils.NumberHolder, args: any[]): boolean | Promise<boolean> {
|
||||
const move = (args[0] as Move);
|
||||
const move = (args[0] as Move);
|
||||
if (battleStat === this.battleStat && (!this.condition || this.condition(pokemon, null, move))) {
|
||||
statValue.value *= this.multiplier;
|
||||
return true;
|
||||
|
@ -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,36 +1950,36 @@ function getWeatherCondition(...weatherTypes: WeatherType[]): AbAttrCondition {
|
|||
|
||||
function getAnticipationCondition(): AbAttrCondition {
|
||||
return (pokemon: Pokemon) => {
|
||||
for (let opponent of pokemon.getOpponents()) {
|
||||
for (let move of opponent.moveset) {
|
||||
// move is super effective
|
||||
if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type, opponent) >= 2) {
|
||||
return true;
|
||||
}
|
||||
// move is a OHKO
|
||||
if (move.getMove().findAttr(attr => attr instanceof OneHitKOAttr)) {
|
||||
return true;
|
||||
}
|
||||
// edge case for hidden power, type is computed
|
||||
if (move.getMove().id === Moves.HIDDEN_POWER) {
|
||||
const iv_val = Math.floor(((opponent.ivs[Stat.HP] & 1)
|
||||
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;
|
||||
}
|
||||
// move is a OHKO
|
||||
if (move.getMove().findAttr(attr => attr instanceof OneHitKOAttr)) {
|
||||
return true;
|
||||
}
|
||||
// edge case for hidden power, type is computed
|
||||
if (move.getMove().id === Moves.HIDDEN_POWER) {
|
||||
const iv_val = Math.floor(((opponent.ivs[Stat.HP] & 1)
|
||||
+(opponent.ivs[Stat.ATK] & 1) * 2
|
||||
+(opponent.ivs[Stat.DEF] & 1) * 4
|
||||
+(opponent.ivs[Stat.SPD] & 1) * 8
|
||||
+(opponent.ivs[Stat.SPATK] & 1) * 16
|
||||
+(opponent.ivs[Stat.SPDEF] & 1) * 32) * 15/63);
|
||||
|
||||
const type = [
|
||||
Type.FIGHTING, Type.FLYING, Type.POISON, Type.GROUND,
|
||||
Type.ROCK, Type.BUG, Type.GHOST, Type.STEEL,
|
||||
Type.FIRE, Type.WATER, Type.GRASS, Type.ELECTRIC,
|
||||
Type.PSYCHIC, Type.ICE, Type.DRAGON, Type.DARK][iv_val];
|
||||
const type = [
|
||||
Type.FIGHTING, Type.FLYING, Type.POISON, Type.GROUND,
|
||||
Type.ROCK, Type.BUG, Type.GHOST, Type.STEEL,
|
||||
Type.FIRE, Type.WATER, Type.GRASS, Type.ELECTRIC,
|
||||
Type.PSYCHIC, Type.ICE, Type.DRAGON, Type.DARK][iv_val];
|
||||
|
||||
if (pokemon.getAttackTypeEffectiveness(type, opponent) >= 2) {
|
||||
return true;
|
||||
}
|
||||
if (pokemon.getAttackTypeEffectiveness(type, opponent) >= 2) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
@ -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)
|
||||
|
@ -3409,7 +3409,7 @@ export function initAbilities() {
|
|||
new Ability(Abilities.POISON_TOUCH, 5)
|
||||
.attr(PostAttackContactApplyStatusEffectAbAttr, 30, StatusEffect.POISON),
|
||||
new Ability(Abilities.REGENERATOR, 5)
|
||||
.attr(PreSwitchOutHealAbAttr),
|
||||
.attr(PreSwitchOutHealAbAttr),
|
||||
new Ability(Abilities.BIG_PECKS, 5)
|
||||
.attr(ProtectStatAbAttr, BattleStat.DEF)
|
||||
.ignorable(),
|
||||
|
|
156
src/data/api.ts
156
src/data/api.ts
|
@ -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;
|
||||
|
@ -186,7 +186,7 @@ export async function printPokemon() {
|
|||
const learnMethod = verData.move_learn_method.name;
|
||||
|
||||
if (isMoveVer && learnMethod === 'level-up')
|
||||
speciesFormLevelMoves[speciesKey][pokemonForm.formIndex].push([ verData.level_learned_at, moveId ]);
|
||||
speciesFormLevelMoves[speciesKey][pokemonForm.formIndex].push([ verData.level_learned_at, moveId ]);
|
||||
|
||||
if ([ 'machine', 'tutor' ].indexOf(learnMethod) > -1 || (useExistingTmList && tmSpecies.hasOwnProperty(moveId as Moves) && learnMethod === 'level-up')) {
|
||||
if (!moveTmSpecies.hasOwnProperty(moveId))
|
||||
|
@ -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;
|
||||
|
@ -281,24 +281,24 @@ export async function printPokemon() {
|
|||
const moveId = Math.max(Utils.getEnumKeys(Moves).indexOf(moveName), 0);
|
||||
|
||||
switch (verData.move_learn_method.name) {
|
||||
case 'level-up':
|
||||
speciesLevelMoves[speciesKey].push([ verData.level_learned_at, moveId ]);
|
||||
break;
|
||||
case 'machine':
|
||||
case 'tutor':
|
||||
if (moveId > 0) {
|
||||
if (!moveTmSpecies.hasOwnProperty(moveId))
|
||||
moveTmSpecies[moveId] = [];
|
||||
if (moveTmSpecies[moveId].indexOf(speciesKey) === -1)
|
||||
moveTmSpecies[moveId].push(speciesKey);
|
||||
speciesTmMoves.push(moveId);
|
||||
}
|
||||
break;
|
||||
case 'level-up':
|
||||
speciesLevelMoves[speciesKey].push([ verData.level_learned_at, moveId ]);
|
||||
break;
|
||||
case 'machine':
|
||||
case 'tutor':
|
||||
if (moveId > 0) {
|
||||
if (!moveTmSpecies.hasOwnProperty(moveId))
|
||||
moveTmSpecies[moveId] = [];
|
||||
if (moveTmSpecies[moveId].indexOf(speciesKey) === -1)
|
||||
moveTmSpecies[moveId].push(speciesKey);
|
||||
speciesTmMoves.push(moveId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
@ -372,24 +372,24 @@ class StealthRockTag extends ArenaTrapTag {
|
|||
let damageHpRatio: number;
|
||||
|
||||
switch (effectiveness) {
|
||||
case 0:
|
||||
damageHpRatio = 0;
|
||||
break;
|
||||
case 0.25:
|
||||
damageHpRatio = 0.03125;
|
||||
break;
|
||||
case 0.5:
|
||||
damageHpRatio = 0.0625;
|
||||
break;
|
||||
case 1:
|
||||
damageHpRatio = 0.125;
|
||||
break;
|
||||
case 2:
|
||||
damageHpRatio = 0.25;
|
||||
break;
|
||||
case 4:
|
||||
damageHpRatio = 0.5;
|
||||
break;
|
||||
case 0:
|
||||
damageHpRatio = 0;
|
||||
break;
|
||||
case 0.25:
|
||||
damageHpRatio = 0.03125;
|
||||
break;
|
||||
case 0.5:
|
||||
damageHpRatio = 0.0625;
|
||||
break;
|
||||
case 1:
|
||||
damageHpRatio = 0.125;
|
||||
break;
|
||||
case 2:
|
||||
damageHpRatio = 0.25;
|
||||
break;
|
||||
case 4:
|
||||
damageHpRatio = 0.5;
|
||||
break;
|
||||
}
|
||||
|
||||
return damageHpRatio;
|
||||
|
@ -498,36 +498,36 @@ class TailwindTag extends ArenaTag {
|
|||
|
||||
export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves, sourceId: integer, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH): ArenaTag {
|
||||
switch (tagType) {
|
||||
case ArenaTagType.MIST:
|
||||
return new MistTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.MUD_SPORT:
|
||||
return new MudSportTag(turnCount, sourceId);
|
||||
case ArenaTagType.WATER_SPORT:
|
||||
return new WaterSportTag(turnCount, sourceId);
|
||||
case ArenaTagType.SPIKES:
|
||||
return new SpikesTag(sourceId, side);
|
||||
case ArenaTagType.TOXIC_SPIKES:
|
||||
return new ToxicSpikesTag(sourceId, side);
|
||||
case ArenaTagType.FUTURE_SIGHT:
|
||||
case ArenaTagType.DOOM_DESIRE:
|
||||
return new DelayedAttackTag(tagType, sourceMove, sourceId, targetIndex);
|
||||
case ArenaTagType.WISH:
|
||||
return new WishTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.STEALTH_ROCK:
|
||||
return new StealthRockTag(sourceId, side);
|
||||
case ArenaTagType.STICKY_WEB:
|
||||
return new StickyWebTag(sourceId, side);
|
||||
case ArenaTagType.TRICK_ROOM:
|
||||
return new TrickRoomTag(turnCount, sourceId);
|
||||
case ArenaTagType.GRAVITY:
|
||||
return new GravityTag(turnCount);
|
||||
case ArenaTagType.REFLECT:
|
||||
return new ReflectTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.LIGHT_SCREEN:
|
||||
return new LightScreenTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.AURORA_VEIL:
|
||||
return new AuroraVeilTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.TAILWIND:
|
||||
return new TailwindTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.MIST:
|
||||
return new MistTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.MUD_SPORT:
|
||||
return new MudSportTag(turnCount, sourceId);
|
||||
case ArenaTagType.WATER_SPORT:
|
||||
return new WaterSportTag(turnCount, sourceId);
|
||||
case ArenaTagType.SPIKES:
|
||||
return new SpikesTag(sourceId, side);
|
||||
case ArenaTagType.TOXIC_SPIKES:
|
||||
return new ToxicSpikesTag(sourceId, side);
|
||||
case ArenaTagType.FUTURE_SIGHT:
|
||||
case ArenaTagType.DOOM_DESIRE:
|
||||
return new DelayedAttackTag(tagType, sourceMove, sourceId, targetIndex);
|
||||
case ArenaTagType.WISH:
|
||||
return new WishTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.STEALTH_ROCK:
|
||||
return new StealthRockTag(sourceId, side);
|
||||
case ArenaTagType.STICKY_WEB:
|
||||
return new StickyWebTag(sourceId, side);
|
||||
case ArenaTagType.TRICK_ROOM:
|
||||
return new TrickRoomTag(turnCount, sourceId);
|
||||
case ArenaTagType.GRAVITY:
|
||||
return new GravityTag(turnCount);
|
||||
case ArenaTagType.REFLECT:
|
||||
return new ReflectTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.LIGHT_SCREEN:
|
||||
return new LightScreenTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.AURORA_VEIL:
|
||||
return new AuroraVeilTag(turnCount, sourceId, side);
|
||||
case ArenaTagType.TAILWIND:
|
||||
return new TailwindTag(turnCount, sourceId, side);
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -11,53 +11,53 @@ export enum BattleStat {
|
|||
|
||||
export function getBattleStatName(stat: BattleStat) {
|
||||
switch (stat) {
|
||||
case BattleStat.ATK:
|
||||
return 'Attack';
|
||||
case BattleStat.DEF:
|
||||
return 'Defense';
|
||||
case BattleStat.SPATK:
|
||||
return 'Sp. Atk';
|
||||
case BattleStat.SPDEF:
|
||||
return 'Sp. Def';
|
||||
case BattleStat.SPD:
|
||||
return 'Speed';
|
||||
case BattleStat.ACC:
|
||||
return 'Accuracy';
|
||||
case BattleStat.EVA:
|
||||
return 'Evasiveness';
|
||||
default:
|
||||
return '???';
|
||||
case BattleStat.ATK:
|
||||
return 'Attack';
|
||||
case BattleStat.DEF:
|
||||
return 'Defense';
|
||||
case BattleStat.SPATK:
|
||||
return 'Sp. Atk';
|
||||
case BattleStat.SPDEF:
|
||||
return 'Sp. Def';
|
||||
case BattleStat.SPD:
|
||||
return 'Speed';
|
||||
case BattleStat.ACC:
|
||||
return 'Accuracy';
|
||||
case BattleStat.EVA:
|
||||
return 'Evasiveness';
|
||||
default:
|
||||
return '???';
|
||||
}
|
||||
}
|
||||
|
||||
export function getBattleStatLevelChangeDescription(levels: integer, up: boolean) {
|
||||
if (up) {
|
||||
switch (levels) {
|
||||
case 1:
|
||||
return 'rose';
|
||||
case 2:
|
||||
return 'sharply rose';
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
return 'rose drastically';
|
||||
default:
|
||||
return 'won\'t go any higher';
|
||||
case 1:
|
||||
return 'rose';
|
||||
case 2:
|
||||
return 'sharply rose';
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
return 'rose drastically';
|
||||
default:
|
||||
return 'won\'t go any higher';
|
||||
}
|
||||
} else {
|
||||
switch (levels) {
|
||||
case 1:
|
||||
return 'fell';
|
||||
case 2:
|
||||
return 'harshly fell';
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
return 'severely fell';
|
||||
default:
|
||||
return 'won\'t go any lower';
|
||||
case 1:
|
||||
return 'fell';
|
||||
case 2:
|
||||
return 'harshly fell';
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
return 'severely fell';
|
||||
default:
|
||||
return 'won\'t go any lower';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -450,14 +450,14 @@ export class EncoreTag extends BattlerTag {
|
|||
return false;
|
||||
|
||||
switch (repeatableMove.move) {
|
||||
case Moves.MIMIC:
|
||||
case Moves.MIRROR_MOVE:
|
||||
case Moves.TRANSFORM:
|
||||
case Moves.STRUGGLE:
|
||||
case Moves.SKETCH:
|
||||
case Moves.SLEEP_TALK:
|
||||
case Moves.ENCORE:
|
||||
return false;
|
||||
case Moves.MIMIC:
|
||||
case Moves.MIRROR_MOVE:
|
||||
case Moves.TRANSFORM:
|
||||
case Moves.STRUGGLE:
|
||||
case Moves.SKETCH:
|
||||
case Moves.SLEEP_TALK:
|
||||
case Moves.ENCORE:
|
||||
return false;
|
||||
}
|
||||
|
||||
if (allMoves[repeatableMove.move].getAttrs(ChargeAttr).length && repeatableMove.result === MoveResult.OTHER)
|
||||
|
@ -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!');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1049,12 +1049,12 @@ export class HighestStatBoostTag extends AbilityBattlerTag {
|
|||
this.stat = highestStat;
|
||||
|
||||
switch (this.stat) {
|
||||
case Stat.SPD:
|
||||
this.multiplier = 1.5;
|
||||
break;
|
||||
default:
|
||||
this.multiplier = 1.3;
|
||||
break;
|
||||
case Stat.SPD:
|
||||
this.multiplier = 1.5;
|
||||
break;
|
||||
default:
|
||||
this.multiplier = 1.3;
|
||||
break;
|
||||
}
|
||||
|
||||
pokemon.scene.queueMessage(getPokemonMessage(pokemon, `'s ${getStatName(highestStat)}\nwas heightened!`), null, false, null, true);
|
||||
|
@ -1296,118 +1296,118 @@ export class CursedTag extends BattlerTag {
|
|||
|
||||
export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourceMove: Moves, sourceId: integer): BattlerTag {
|
||||
switch (tagType) {
|
||||
case BattlerTagType.RECHARGING:
|
||||
return new RechargingTag(sourceMove);
|
||||
case BattlerTagType.FLINCHED:
|
||||
return new FlinchedTag(sourceMove);
|
||||
case BattlerTagType.INTERRUPTED:
|
||||
return new InterruptedTag(sourceMove);
|
||||
case BattlerTagType.CONFUSED:
|
||||
return new ConfusedTag(turnCount, sourceMove);
|
||||
case BattlerTagType.INFATUATED:
|
||||
return new InfatuatedTag(sourceMove, sourceId);
|
||||
case BattlerTagType.SEEDED:
|
||||
return new SeedTag(sourceId);
|
||||
case BattlerTagType.NIGHTMARE:
|
||||
return new NightmareTag();
|
||||
case BattlerTagType.FRENZY:
|
||||
return new FrenzyTag(sourceMove, sourceId);
|
||||
case BattlerTagType.CHARGING:
|
||||
return new ChargingTag(sourceMove, sourceId);
|
||||
case BattlerTagType.ENCORE:
|
||||
return new EncoreTag(sourceId);
|
||||
case BattlerTagType.HELPING_HAND:
|
||||
return new HelpingHandTag(sourceId);
|
||||
case BattlerTagType.INGRAIN:
|
||||
return new IngrainTag(sourceId);
|
||||
case BattlerTagType.AQUA_RING:
|
||||
return new AquaRingTag();
|
||||
case BattlerTagType.DROWSY:
|
||||
return new DrowsyTag();
|
||||
case BattlerTagType.TRAPPED:
|
||||
return new TrappedTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId);
|
||||
case BattlerTagType.BIND:
|
||||
return new BindTag(turnCount, sourceId);
|
||||
case BattlerTagType.WRAP:
|
||||
return new WrapTag(turnCount, sourceId);
|
||||
case BattlerTagType.FIRE_SPIN:
|
||||
return new FireSpinTag(turnCount, sourceId);
|
||||
case BattlerTagType.WHIRLPOOL:
|
||||
return new WhirlpoolTag(turnCount, sourceId);
|
||||
case BattlerTagType.CLAMP:
|
||||
return new ClampTag(turnCount, sourceId);
|
||||
case BattlerTagType.SAND_TOMB:
|
||||
return new SandTombTag(turnCount, sourceId);
|
||||
case BattlerTagType.MAGMA_STORM:
|
||||
return new MagmaStormTag(turnCount, sourceId);
|
||||
case BattlerTagType.SNAP_TRAP:
|
||||
return new SnapTrapTag(turnCount, sourceId);
|
||||
case BattlerTagType.THUNDER_CAGE:
|
||||
return new ThunderCageTag(turnCount, sourceId);
|
||||
case BattlerTagType.INFESTATION:
|
||||
return new InfestationTag(turnCount, sourceId);
|
||||
case BattlerTagType.PROTECTED:
|
||||
return new ProtectedTag(sourceMove);
|
||||
case BattlerTagType.SPIKY_SHIELD:
|
||||
return new ContactDamageProtectedTag(sourceMove, 8);
|
||||
case BattlerTagType.KINGS_SHIELD:
|
||||
return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.ATK, -1);
|
||||
case BattlerTagType.OBSTRUCT:
|
||||
return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.DEF, -2);
|
||||
case BattlerTagType.SILK_TRAP:
|
||||
return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.SPD, -1);
|
||||
case BattlerTagType.BANEFUL_BUNKER:
|
||||
return new ContactPoisonProtectedTag(sourceMove);
|
||||
case BattlerTagType.BURNING_BULWARK:
|
||||
return new ContactBurnProtectedTag(sourceMove);
|
||||
case BattlerTagType.ENDURING:
|
||||
return new EnduringTag(sourceMove);
|
||||
case BattlerTagType.STURDY:
|
||||
return new SturdyTag(sourceMove);
|
||||
case BattlerTagType.PERISH_SONG:
|
||||
return new PerishSongTag(turnCount);
|
||||
case BattlerTagType.TRUANT:
|
||||
return new TruantTag();
|
||||
case BattlerTagType.SLOW_START:
|
||||
return new SlowStartTag();
|
||||
case BattlerTagType.PROTOSYNTHESIS:
|
||||
return new WeatherHighestStatBoostTag(tagType, Abilities.PROTOSYNTHESIS, WeatherType.SUNNY, WeatherType.HARSH_SUN);
|
||||
case BattlerTagType.QUARK_DRIVE:
|
||||
return new TerrainHighestStatBoostTag(tagType, Abilities.QUARK_DRIVE, TerrainType.ELECTRIC);
|
||||
case BattlerTagType.FLYING:
|
||||
case BattlerTagType.UNDERGROUND:
|
||||
case BattlerTagType.UNDERWATER:
|
||||
case BattlerTagType.HIDDEN:
|
||||
return new HideSpriteTag(tagType, turnCount, sourceMove);
|
||||
case BattlerTagType.FIRE_BOOST:
|
||||
return new TypeBoostTag(tagType, sourceMove, Type.FIRE, 1.5, false);
|
||||
case BattlerTagType.CRIT_BOOST:
|
||||
return new CritBoostTag(tagType, sourceMove);
|
||||
case BattlerTagType.ALWAYS_CRIT:
|
||||
return new AlwaysCritTag(sourceMove);
|
||||
case BattlerTagType.NO_CRIT:
|
||||
return new BattlerTag(tagType, BattlerTagLapseType.AFTER_MOVE, turnCount, sourceMove);
|
||||
case BattlerTagType.IGNORE_ACCURACY:
|
||||
return new IgnoreAccuracyTag(sourceMove);
|
||||
case BattlerTagType.BYPASS_SLEEP:
|
||||
return new BattlerTag(BattlerTagType.BYPASS_SLEEP, BattlerTagLapseType.TURN_END, turnCount, sourceMove);
|
||||
case BattlerTagType.IGNORE_FLYING:
|
||||
return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount, sourceMove);
|
||||
case BattlerTagType.GROUNDED:
|
||||
return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount - 1, sourceMove);
|
||||
case BattlerTagType.SALT_CURED:
|
||||
return new SaltCuredTag(sourceId);
|
||||
case BattlerTagType.CURSED:
|
||||
return new CursedTag(sourceId);
|
||||
case BattlerTagType.CHARGED:
|
||||
return new TypeBoostTag(tagType, sourceMove, Type.ELECTRIC, 2, true);
|
||||
case BattlerTagType.MAGNET_RISEN:
|
||||
return new MagnetRisenTag(tagType, sourceMove);
|
||||
case BattlerTagType.MINIMIZED:
|
||||
return new MinimizeTag();
|
||||
case BattlerTagType.NONE:
|
||||
default:
|
||||
return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId);
|
||||
case BattlerTagType.RECHARGING:
|
||||
return new RechargingTag(sourceMove);
|
||||
case BattlerTagType.FLINCHED:
|
||||
return new FlinchedTag(sourceMove);
|
||||
case BattlerTagType.INTERRUPTED:
|
||||
return new InterruptedTag(sourceMove);
|
||||
case BattlerTagType.CONFUSED:
|
||||
return new ConfusedTag(turnCount, sourceMove);
|
||||
case BattlerTagType.INFATUATED:
|
||||
return new InfatuatedTag(sourceMove, sourceId);
|
||||
case BattlerTagType.SEEDED:
|
||||
return new SeedTag(sourceId);
|
||||
case BattlerTagType.NIGHTMARE:
|
||||
return new NightmareTag();
|
||||
case BattlerTagType.FRENZY:
|
||||
return new FrenzyTag(sourceMove, sourceId);
|
||||
case BattlerTagType.CHARGING:
|
||||
return new ChargingTag(sourceMove, sourceId);
|
||||
case BattlerTagType.ENCORE:
|
||||
return new EncoreTag(sourceId);
|
||||
case BattlerTagType.HELPING_HAND:
|
||||
return new HelpingHandTag(sourceId);
|
||||
case BattlerTagType.INGRAIN:
|
||||
return new IngrainTag(sourceId);
|
||||
case BattlerTagType.AQUA_RING:
|
||||
return new AquaRingTag();
|
||||
case BattlerTagType.DROWSY:
|
||||
return new DrowsyTag();
|
||||
case BattlerTagType.TRAPPED:
|
||||
return new TrappedTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId);
|
||||
case BattlerTagType.BIND:
|
||||
return new BindTag(turnCount, sourceId);
|
||||
case BattlerTagType.WRAP:
|
||||
return new WrapTag(turnCount, sourceId);
|
||||
case BattlerTagType.FIRE_SPIN:
|
||||
return new FireSpinTag(turnCount, sourceId);
|
||||
case BattlerTagType.WHIRLPOOL:
|
||||
return new WhirlpoolTag(turnCount, sourceId);
|
||||
case BattlerTagType.CLAMP:
|
||||
return new ClampTag(turnCount, sourceId);
|
||||
case BattlerTagType.SAND_TOMB:
|
||||
return new SandTombTag(turnCount, sourceId);
|
||||
case BattlerTagType.MAGMA_STORM:
|
||||
return new MagmaStormTag(turnCount, sourceId);
|
||||
case BattlerTagType.SNAP_TRAP:
|
||||
return new SnapTrapTag(turnCount, sourceId);
|
||||
case BattlerTagType.THUNDER_CAGE:
|
||||
return new ThunderCageTag(turnCount, sourceId);
|
||||
case BattlerTagType.INFESTATION:
|
||||
return new InfestationTag(turnCount, sourceId);
|
||||
case BattlerTagType.PROTECTED:
|
||||
return new ProtectedTag(sourceMove);
|
||||
case BattlerTagType.SPIKY_SHIELD:
|
||||
return new ContactDamageProtectedTag(sourceMove, 8);
|
||||
case BattlerTagType.KINGS_SHIELD:
|
||||
return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.ATK, -1);
|
||||
case BattlerTagType.OBSTRUCT:
|
||||
return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.DEF, -2);
|
||||
case BattlerTagType.SILK_TRAP:
|
||||
return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.SPD, -1);
|
||||
case BattlerTagType.BANEFUL_BUNKER:
|
||||
return new ContactPoisonProtectedTag(sourceMove);
|
||||
case BattlerTagType.BURNING_BULWARK:
|
||||
return new ContactBurnProtectedTag(sourceMove);
|
||||
case BattlerTagType.ENDURING:
|
||||
return new EnduringTag(sourceMove);
|
||||
case BattlerTagType.STURDY:
|
||||
return new SturdyTag(sourceMove);
|
||||
case BattlerTagType.PERISH_SONG:
|
||||
return new PerishSongTag(turnCount);
|
||||
case BattlerTagType.TRUANT:
|
||||
return new TruantTag();
|
||||
case BattlerTagType.SLOW_START:
|
||||
return new SlowStartTag();
|
||||
case BattlerTagType.PROTOSYNTHESIS:
|
||||
return new WeatherHighestStatBoostTag(tagType, Abilities.PROTOSYNTHESIS, WeatherType.SUNNY, WeatherType.HARSH_SUN);
|
||||
case BattlerTagType.QUARK_DRIVE:
|
||||
return new TerrainHighestStatBoostTag(tagType, Abilities.QUARK_DRIVE, TerrainType.ELECTRIC);
|
||||
case BattlerTagType.FLYING:
|
||||
case BattlerTagType.UNDERGROUND:
|
||||
case BattlerTagType.UNDERWATER:
|
||||
case BattlerTagType.HIDDEN:
|
||||
return new HideSpriteTag(tagType, turnCount, sourceMove);
|
||||
case BattlerTagType.FIRE_BOOST:
|
||||
return new TypeBoostTag(tagType, sourceMove, Type.FIRE, 1.5, false);
|
||||
case BattlerTagType.CRIT_BOOST:
|
||||
return new CritBoostTag(tagType, sourceMove);
|
||||
case BattlerTagType.ALWAYS_CRIT:
|
||||
return new AlwaysCritTag(sourceMove);
|
||||
case BattlerTagType.NO_CRIT:
|
||||
return new BattlerTag(tagType, BattlerTagLapseType.AFTER_MOVE, turnCount, sourceMove);
|
||||
case BattlerTagType.IGNORE_ACCURACY:
|
||||
return new IgnoreAccuracyTag(sourceMove);
|
||||
case BattlerTagType.BYPASS_SLEEP:
|
||||
return new BattlerTag(BattlerTagType.BYPASS_SLEEP, BattlerTagLapseType.TURN_END, turnCount, sourceMove);
|
||||
case BattlerTagType.IGNORE_FLYING:
|
||||
return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount, sourceMove);
|
||||
case BattlerTagType.GROUNDED:
|
||||
return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount - 1, sourceMove);
|
||||
case BattlerTagType.SALT_CURED:
|
||||
return new SaltCuredTag(sourceId);
|
||||
case BattlerTagType.CURSED:
|
||||
return new CursedTag(sourceId);
|
||||
case BattlerTagType.CHARGED:
|
||||
return new TypeBoostTag(tagType, sourceMove, Type.ELECTRIC, 2, true);
|
||||
case BattlerTagType.MAGNET_RISEN:
|
||||
return new MagnetRisenTag(tagType, sourceMove);
|
||||
case BattlerTagType.MINIMIZED:
|
||||
return new MinimizeTag();
|
||||
case BattlerTagType.NONE:
|
||||
default:
|
||||
return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
@ -35,41 +35,41 @@ export type BerryPredicate = (pokemon: Pokemon) => boolean;
|
|||
|
||||
export function getBerryPredicate(berryType: BerryType): BerryPredicate {
|
||||
switch (berryType) {
|
||||
case BerryType.SITRUS:
|
||||
return (pokemon: Pokemon) => pokemon.getHpRatio() < 0.5;
|
||||
case BerryType.LUM:
|
||||
return (pokemon: Pokemon) => !!pokemon.status || !!pokemon.getTag(BattlerTagType.CONFUSED);
|
||||
case BerryType.ENIGMA:
|
||||
return (pokemon: Pokemon) => !!pokemon.turnData.attacksReceived.filter(a => a.result === HitResult.SUPER_EFFECTIVE).length;
|
||||
case BerryType.LIECHI:
|
||||
case BerryType.GANLON:
|
||||
case BerryType.PETAYA:
|
||||
case BerryType.APICOT:
|
||||
case BerryType.SALAC:
|
||||
return (pokemon: Pokemon) => {
|
||||
const threshold = new Utils.NumberHolder(0.25);
|
||||
const battleStat = (berryType - BerryType.LIECHI) as BattleStat;
|
||||
applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold);
|
||||
return pokemon.getHpRatio() < threshold.value && pokemon.summonData.battleStats[battleStat] < 6;
|
||||
};
|
||||
case BerryType.LANSAT:
|
||||
return (pokemon: Pokemon) => {
|
||||
const threshold = new Utils.NumberHolder(0.25);
|
||||
applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold);
|
||||
return pokemon.getHpRatio() < 0.25 && !pokemon.getTag(BattlerTagType.CRIT_BOOST);
|
||||
};
|
||||
case BerryType.STARF:
|
||||
return (pokemon: Pokemon) => {
|
||||
const threshold = new Utils.NumberHolder(0.25);
|
||||
applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold);
|
||||
return pokemon.getHpRatio() < 0.25;
|
||||
};
|
||||
case BerryType.LEPPA:
|
||||
return (pokemon: Pokemon) => {
|
||||
const threshold = new Utils.NumberHolder(0.25);
|
||||
applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold);
|
||||
return !!pokemon.getMoveset().find(m => !m.getPpRatio());
|
||||
};
|
||||
case BerryType.SITRUS:
|
||||
return (pokemon: Pokemon) => pokemon.getHpRatio() < 0.5;
|
||||
case BerryType.LUM:
|
||||
return (pokemon: Pokemon) => !!pokemon.status || !!pokemon.getTag(BattlerTagType.CONFUSED);
|
||||
case BerryType.ENIGMA:
|
||||
return (pokemon: Pokemon) => !!pokemon.turnData.attacksReceived.filter(a => a.result === HitResult.SUPER_EFFECTIVE).length;
|
||||
case BerryType.LIECHI:
|
||||
case BerryType.GANLON:
|
||||
case BerryType.PETAYA:
|
||||
case BerryType.APICOT:
|
||||
case BerryType.SALAC:
|
||||
return (pokemon: Pokemon) => {
|
||||
const threshold = new Utils.NumberHolder(0.25);
|
||||
const battleStat = (berryType - BerryType.LIECHI) as BattleStat;
|
||||
applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold);
|
||||
return pokemon.getHpRatio() < threshold.value && pokemon.summonData.battleStats[battleStat] < 6;
|
||||
};
|
||||
case BerryType.LANSAT:
|
||||
return (pokemon: Pokemon) => {
|
||||
const threshold = new Utils.NumberHolder(0.25);
|
||||
applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold);
|
||||
return pokemon.getHpRatio() < 0.25 && !pokemon.getTag(BattlerTagType.CRIT_BOOST);
|
||||
};
|
||||
case BerryType.STARF:
|
||||
return (pokemon: Pokemon) => {
|
||||
const threshold = new Utils.NumberHolder(0.25);
|
||||
applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold);
|
||||
return pokemon.getHpRatio() < 0.25;
|
||||
};
|
||||
case BerryType.LEPPA:
|
||||
return (pokemon: Pokemon) => {
|
||||
const threshold = new Utils.NumberHolder(0.25);
|
||||
applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold);
|
||||
return !!pokemon.getMoveset().find(m => !m.getPpRatio());
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -77,64 +77,64 @@ export type BerryEffectFunc = (pokemon: Pokemon) => void;
|
|||
|
||||
export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc {
|
||||
switch (berryType) {
|
||||
case BerryType.SITRUS:
|
||||
case BerryType.ENIGMA:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
const hpHealed = new Utils.NumberHolder(Math.floor(pokemon.getMaxHp() / 4));
|
||||
applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, hpHealed);
|
||||
pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(),
|
||||
hpHealed.value, getPokemonMessage(pokemon, `'s ${getBerryName(berryType)}\nrestored its HP!`), true));
|
||||
};
|
||||
case BerryType.LUM:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
if (pokemon.status) {
|
||||
pokemon.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(pokemon.status.effect)));
|
||||
pokemon.resetStatus();
|
||||
pokemon.updateInfo();
|
||||
}
|
||||
if (pokemon.getTag(BattlerTagType.CONFUSED))
|
||||
pokemon.lapseTag(BattlerTagType.CONFUSED);
|
||||
};
|
||||
case BerryType.LIECHI:
|
||||
case BerryType.GANLON:
|
||||
case BerryType.PETAYA:
|
||||
case BerryType.APICOT:
|
||||
case BerryType.SALAC:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
const battleStat = (berryType - BerryType.LIECHI) as BattleStat;
|
||||
const statLevels = new Utils.NumberHolder(1);
|
||||
applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels);
|
||||
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ battleStat ], statLevels.value));
|
||||
};
|
||||
case BerryType.LANSAT:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
pokemon.addTag(BattlerTagType.CRIT_BOOST);
|
||||
};
|
||||
case BerryType.STARF:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
const statLevels = new Utils.NumberHolder(2);
|
||||
applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels);
|
||||
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ BattleStat.RAND ], statLevels.value));
|
||||
};
|
||||
case BerryType.LEPPA:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
const ppRestoreMove = pokemon.getMoveset().find(m => !m.getPpRatio()) ? pokemon.getMoveset().find(m => !m.getPpRatio()) : pokemon.getMoveset().find(m => m.getPpRatio() < 1);
|
||||
if(ppRestoreMove !== undefined){
|
||||
ppRestoreMove.ppUsed = Math.max(ppRestoreMove.ppUsed - 10, 0);
|
||||
pokemon.scene.queueMessage(getPokemonMessage(pokemon, ` restored PP to its move ${ppRestoreMove.getName()}\nusing its ${getBerryName(berryType)}!`));
|
||||
}
|
||||
};
|
||||
case BerryType.SITRUS:
|
||||
case BerryType.ENIGMA:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
const hpHealed = new Utils.NumberHolder(Math.floor(pokemon.getMaxHp() / 4));
|
||||
applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, hpHealed);
|
||||
pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(),
|
||||
hpHealed.value, getPokemonMessage(pokemon, `'s ${getBerryName(berryType)}\nrestored its HP!`), true));
|
||||
};
|
||||
case BerryType.LUM:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
if (pokemon.status) {
|
||||
pokemon.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(pokemon.status.effect)));
|
||||
pokemon.resetStatus();
|
||||
pokemon.updateInfo();
|
||||
}
|
||||
if (pokemon.getTag(BattlerTagType.CONFUSED))
|
||||
pokemon.lapseTag(BattlerTagType.CONFUSED);
|
||||
};
|
||||
case BerryType.LIECHI:
|
||||
case BerryType.GANLON:
|
||||
case BerryType.PETAYA:
|
||||
case BerryType.APICOT:
|
||||
case BerryType.SALAC:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
const battleStat = (berryType - BerryType.LIECHI) as BattleStat;
|
||||
const statLevels = new Utils.NumberHolder(1);
|
||||
applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels);
|
||||
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ battleStat ], statLevels.value));
|
||||
};
|
||||
case BerryType.LANSAT:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
pokemon.addTag(BattlerTagType.CRIT_BOOST);
|
||||
};
|
||||
case BerryType.STARF:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
const statLevels = new Utils.NumberHolder(2);
|
||||
applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels);
|
||||
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ BattleStat.RAND ], statLevels.value));
|
||||
};
|
||||
case BerryType.LEPPA:
|
||||
return (pokemon: Pokemon) => {
|
||||
if (pokemon.battleData)
|
||||
pokemon.battleData.berriesEaten.push(berryType);
|
||||
const ppRestoreMove = pokemon.getMoveset().find(m => !m.getPpRatio()) ? pokemon.getMoveset().find(m => !m.getPpRatio()) : pokemon.getMoveset().find(m => m.getPpRatio() < 1);
|
||||
if(ppRestoreMove !== undefined){
|
||||
ppRestoreMove.ppUsed = Math.max(ppRestoreMove.ppUsed - 10, 0);
|
||||
pokemon.scene.queueMessage(getPokemonMessage(pokemon, ` restored PP to its move ${ppRestoreMove.getName()}\nusing its ${getBerryName(berryType)}!`));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
6452
src/data/biomes.ts
6452
src/data/biomes.ts
File diff suppressed because it is too large
Load Diff
|
@ -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;
|
||||
|
@ -21,7 +21,7 @@ export function fetchDailyRunSeed(): Promise<string> {
|
|||
}
|
||||
return response.text();
|
||||
}).then(seed => resolve(seed))
|
||||
.catch(err => reject(err));
|
||||
.catch(err => reject(err));
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -72,4 +72,4 @@ function getDailyRunStarter(scene: BattleScene, starterSpeciesForm: PokemonSpeci
|
|||
};
|
||||
pokemon.destroy();
|
||||
return starter;
|
||||
}
|
||||
}
|
||||
|
|
1412
src/data/dialogue.ts
1412
src/data/dialogue.ts
File diff suppressed because it is too large
Load Diff
|
@ -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,9 +606,9 @@ function parseEggMoves(content: string): void {
|
|||
console.log(output);
|
||||
}
|
||||
|
||||
const eggMovesStr = ``;
|
||||
const eggMovesStr = '';
|
||||
if (eggMovesStr) {
|
||||
setTimeout(() => {
|
||||
parseEggMoves(eggMovesStr);
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
@ -42,12 +42,12 @@ export class Egg {
|
|||
|
||||
export function getEggTierDefaultHatchWaves(tier: EggTier): integer {
|
||||
switch (tier) {
|
||||
case EggTier.COMMON:
|
||||
return 10;
|
||||
case EggTier.GREAT:
|
||||
return 25;
|
||||
case EggTier.ULTRA:
|
||||
return 50;
|
||||
case EggTier.COMMON:
|
||||
return 10;
|
||||
case EggTier.GREAT:
|
||||
return 25;
|
||||
case EggTier.ULTRA:
|
||||
return 50;
|
||||
}
|
||||
return 100;
|
||||
}
|
||||
|
@ -56,14 +56,14 @@ export function getEggDescriptor(egg: Egg): string {
|
|||
if (egg.isManaphyEgg())
|
||||
return 'Manaphy';
|
||||
switch (egg.tier) {
|
||||
case EggTier.GREAT:
|
||||
return i18next.t('egg:greatTier');
|
||||
case EggTier.ULTRA:
|
||||
return i18next.t('egg:ultraTier');
|
||||
case EggTier.MASTER:
|
||||
return i18next.t('egg:masterTier');
|
||||
default:
|
||||
return i18next.t('egg:defaultTier');
|
||||
case EggTier.GREAT:
|
||||
return i18next.t('egg:greatTier');
|
||||
case EggTier.ULTRA:
|
||||
return i18next.t('egg:ultraTier');
|
||||
case EggTier.MASTER:
|
||||
return i18next.t('egg:masterTier');
|
||||
default:
|
||||
return i18next.t('egg:defaultTier');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -79,12 +79,12 @@ export function getEggHatchWavesMessage(hatchWaves: integer): string {
|
|||
|
||||
export function getEggGachaTypeDescriptor(scene: BattleScene, egg: Egg): string {
|
||||
switch (egg.gachaType) {
|
||||
case GachaType.LEGENDARY:
|
||||
return `${i18next.t('egg:gachaTypeLegendary')} (${getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(scene, egg.timestamp)).getName()})`;
|
||||
case GachaType.MOVE:
|
||||
return i18next.t('egg:gachaTypeMove');
|
||||
case GachaType.SHINY:
|
||||
return i18next.t('egg:gachaTypeShiny');
|
||||
case GachaType.LEGENDARY:
|
||||
return `${i18next.t('egg:gachaTypeLegendary')} (${getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(scene, egg.timestamp)).getName()})`;
|
||||
case GachaType.MOVE:
|
||||
return i18next.t('egg:gachaTypeMove');
|
||||
case GachaType.SHINY:
|
||||
return i18next.t('egg:gachaTypeShiny');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -101,11 +101,11 @@ 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];
|
||||
}, offset, EGG_SEED.toString());
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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'
|
||||
}
|
||||
|
|
|
@ -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'
|
||||
}
|
||||
|
|
|
@ -3,4 +3,4 @@ export enum EggTier {
|
|||
GREAT,
|
||||
ULTRA,
|
||||
MASTER
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1872,4 +1872,4 @@ export enum Moves {
|
|||
UPPER_HAND,
|
||||
/**{@link https://bulbapedia.bulbagarden.net/wiki/Malignant_Chain_(move) | Source} */
|
||||
MALIGNANT_CHAIN,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
@ -2175,4 +2175,4 @@ export const defaultStarterSpecies: Species[] = [
|
|||
Species.ROWLET, Species.LITTEN, Species.POPPLIO,
|
||||
Species.GROOKEY, Species.SCORBUNNY, Species.SOBBLE,
|
||||
Species.SPRIGATITO, Species.FUECOCO, Species.QUAXLY
|
||||
];
|
||||
];
|
||||
|
|
|
@ -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 ],
|
||||
|
@ -27,24 +27,24 @@ export function getLevelTotalExp(level: integer, growthRate: GrowthRate): intege
|
|||
let ret: integer;
|
||||
|
||||
switch (growthRate) {
|
||||
case GrowthRate.ERRATIC:
|
||||
ret = (Math.pow(level, 4) + (Math.pow(level, 3) * 2000)) / 3500;
|
||||
break;
|
||||
case GrowthRate.FAST:
|
||||
ret = Math.pow(level, 3) * 4 / 5;
|
||||
break;
|
||||
case GrowthRate.MEDIUM_FAST:
|
||||
ret = Math.pow(level, 3);
|
||||
break;
|
||||
case GrowthRate.MEDIUM_SLOW:
|
||||
ret = (Math.pow(level, 3) * 6 / 5) - (15 * Math.pow(level, 2)) + (100 * level) - 140;
|
||||
break;
|
||||
case GrowthRate.SLOW:
|
||||
ret = Math.pow(level, 3) * 5 / 4;
|
||||
break;
|
||||
case GrowthRate.FLUCTUATING:
|
||||
ret = (Math.pow(level, 3) * ((level / 2) + 8)) * 4 / (100 + level);
|
||||
break;
|
||||
case GrowthRate.ERRATIC:
|
||||
ret = (Math.pow(level, 4) + (Math.pow(level, 3) * 2000)) / 3500;
|
||||
break;
|
||||
case GrowthRate.FAST:
|
||||
ret = Math.pow(level, 3) * 4 / 5;
|
||||
break;
|
||||
case GrowthRate.MEDIUM_FAST:
|
||||
ret = Math.pow(level, 3);
|
||||
break;
|
||||
case GrowthRate.MEDIUM_SLOW:
|
||||
ret = (Math.pow(level, 3) * 6 / 5) - (15 * Math.pow(level, 2)) + (100 * level) - 140;
|
||||
break;
|
||||
case GrowthRate.SLOW:
|
||||
ret = Math.pow(level, 3) * 5 / 4;
|
||||
break;
|
||||
case GrowthRate.FLUCTUATING:
|
||||
ret = (Math.pow(level, 3) * ((level / 2) + 8)) * 4 / (100 + level);
|
||||
break;
|
||||
}
|
||||
|
||||
if (growthRate !== GrowthRate.MEDIUM_FAST)
|
||||
|
@ -59,17 +59,17 @@ export function getLevelRelExp(level: integer, growthRate: GrowthRate): number {
|
|||
|
||||
export function getGrowthRateColor(growthRate: GrowthRate, shadow?: boolean) {
|
||||
switch (growthRate) {
|
||||
case GrowthRate.ERRATIC:
|
||||
return !shadow ? '#f85888' : '#906060';
|
||||
case GrowthRate.FAST:
|
||||
return !shadow ? '#f8d030' : '#b8a038';
|
||||
case GrowthRate.MEDIUM_FAST:
|
||||
return !shadow ? '#78c850' : '#588040';
|
||||
case GrowthRate.MEDIUM_SLOW:
|
||||
return !shadow ? '#6890f0' : '#807870';
|
||||
case GrowthRate.SLOW:
|
||||
return !shadow ? '#f08030' : '#c03028';
|
||||
case GrowthRate.FLUCTUATING:
|
||||
return !shadow ? '#a040a0' : '#483850';
|
||||
case GrowthRate.ERRATIC:
|
||||
return !shadow ? '#f85888' : '#906060';
|
||||
case GrowthRate.FAST:
|
||||
return !shadow ? '#f8d030' : '#b8a038';
|
||||
case GrowthRate.MEDIUM_FAST:
|
||||
return !shadow ? '#78c850' : '#588040';
|
||||
case GrowthRate.MEDIUM_SLOW:
|
||||
return !shadow ? '#6890f0' : '#807870';
|
||||
case GrowthRate.SLOW:
|
||||
return !shadow ? '#f08030' : '#c03028';
|
||||
case GrowthRate.FLUCTUATING:
|
||||
return !shadow ? '#a040a0' : '#483850';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,21 +5,21 @@ export enum Gender {
|
|||
}
|
||||
|
||||
export function getGenderSymbol(gender: Gender) {
|
||||
switch (gender) {
|
||||
case Gender.MALE:
|
||||
return '♂';
|
||||
case Gender.FEMALE:
|
||||
return '♀';
|
||||
}
|
||||
return '';
|
||||
switch (gender) {
|
||||
case Gender.MALE:
|
||||
return '♂';
|
||||
case Gender.FEMALE:
|
||||
return '♀';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
export function getGenderColor(gender: Gender, shadow?: boolean) {
|
||||
switch (gender) {
|
||||
case Gender.MALE:
|
||||
return shadow ? '#006090' : '#40c8f8';
|
||||
case Gender.FEMALE:
|
||||
return shadow ? '#984038' : '#f89890';
|
||||
}
|
||||
return '#ffffff';
|
||||
}
|
||||
switch (gender) {
|
||||
case Gender.MALE:
|
||||
return shadow ? '#006090' : '#40c8f8';
|
||||
case Gender.FEMALE:
|
||||
return shadow ? '#984038' : '#f89890';
|
||||
}
|
||||
return '#ffffff';
|
||||
}
|
||||
|
|
1242
src/data/move.ts
1242
src/data/move.ts
File diff suppressed because it is too large
Load Diff
|
@ -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;
|
||||
|
@ -61,77 +61,77 @@ export function getNatureName(nature: Nature, includeStatEffects: boolean = fals
|
|||
|
||||
export function getNatureStatMultiplier(nature: Nature, stat: Stat): number {
|
||||
switch (stat) {
|
||||
case Stat.ATK:
|
||||
switch (nature) {
|
||||
case Nature.LONELY:
|
||||
case Nature.BRAVE:
|
||||
case Nature.ADAMANT:
|
||||
case Nature.NAUGHTY:
|
||||
return 1.1;
|
||||
case Nature.BOLD:
|
||||
case Nature.TIMID:
|
||||
case Nature.MODEST:
|
||||
case Nature.CALM:
|
||||
return 0.9;
|
||||
}
|
||||
break;
|
||||
case Stat.DEF:
|
||||
switch (nature) {
|
||||
case Nature.BOLD:
|
||||
case Nature.RELAXED:
|
||||
case Nature.IMPISH:
|
||||
case Nature.LAX:
|
||||
return 1.1;
|
||||
case Nature.LONELY:
|
||||
case Nature.HASTY:
|
||||
case Nature.MILD:
|
||||
case Nature.GENTLE:
|
||||
return 0.9;
|
||||
}
|
||||
break;
|
||||
case Stat.SPATK:
|
||||
switch (nature) {
|
||||
case Nature.MODEST:
|
||||
case Nature.MILD:
|
||||
case Nature.QUIET:
|
||||
case Nature.RASH:
|
||||
return 1.1;
|
||||
case Nature.ADAMANT:
|
||||
case Nature.IMPISH:
|
||||
case Nature.JOLLY:
|
||||
case Nature.CAREFUL:
|
||||
return 0.9;
|
||||
}
|
||||
break;
|
||||
case Stat.SPDEF:
|
||||
switch (nature) {
|
||||
case Nature.CALM:
|
||||
case Nature.GENTLE:
|
||||
case Nature.SASSY:
|
||||
case Nature.CAREFUL:
|
||||
return 1.1;
|
||||
case Nature.NAUGHTY:
|
||||
case Nature.LAX:
|
||||
case Nature.NAIVE:
|
||||
case Nature.RASH:
|
||||
return 0.9;
|
||||
}
|
||||
break;
|
||||
case Stat.SPD:
|
||||
switch (nature) {
|
||||
case Nature.TIMID:
|
||||
case Nature.HASTY:
|
||||
case Nature.JOLLY:
|
||||
case Nature.NAIVE:
|
||||
return 1.1;
|
||||
case Nature.BRAVE:
|
||||
case Nature.RELAXED:
|
||||
case Nature.QUIET:
|
||||
case Nature.SASSY:
|
||||
return 0.9;
|
||||
}
|
||||
break;
|
||||
case Stat.ATK:
|
||||
switch (nature) {
|
||||
case Nature.LONELY:
|
||||
case Nature.BRAVE:
|
||||
case Nature.ADAMANT:
|
||||
case Nature.NAUGHTY:
|
||||
return 1.1;
|
||||
case Nature.BOLD:
|
||||
case Nature.TIMID:
|
||||
case Nature.MODEST:
|
||||
case Nature.CALM:
|
||||
return 0.9;
|
||||
}
|
||||
break;
|
||||
case Stat.DEF:
|
||||
switch (nature) {
|
||||
case Nature.BOLD:
|
||||
case Nature.RELAXED:
|
||||
case Nature.IMPISH:
|
||||
case Nature.LAX:
|
||||
return 1.1;
|
||||
case Nature.LONELY:
|
||||
case Nature.HASTY:
|
||||
case Nature.MILD:
|
||||
case Nature.GENTLE:
|
||||
return 0.9;
|
||||
}
|
||||
break;
|
||||
case Stat.SPATK:
|
||||
switch (nature) {
|
||||
case Nature.MODEST:
|
||||
case Nature.MILD:
|
||||
case Nature.QUIET:
|
||||
case Nature.RASH:
|
||||
return 1.1;
|
||||
case Nature.ADAMANT:
|
||||
case Nature.IMPISH:
|
||||
case Nature.JOLLY:
|
||||
case Nature.CAREFUL:
|
||||
return 0.9;
|
||||
}
|
||||
break;
|
||||
case Stat.SPDEF:
|
||||
switch (nature) {
|
||||
case Nature.CALM:
|
||||
case Nature.GENTLE:
|
||||
case Nature.SASSY:
|
||||
case Nature.CAREFUL:
|
||||
return 1.1;
|
||||
case Nature.NAUGHTY:
|
||||
case Nature.LAX:
|
||||
case Nature.NAIVE:
|
||||
case Nature.RASH:
|
||||
return 0.9;
|
||||
}
|
||||
break;
|
||||
case Stat.SPD:
|
||||
switch (nature) {
|
||||
case Nature.TIMID:
|
||||
case Nature.HASTY:
|
||||
case Nature.JOLLY:
|
||||
case Nature.NAIVE:
|
||||
return 1.1;
|
||||
case Nature.BRAVE:
|
||||
case Nature.RELAXED:
|
||||
case Nature.QUIET:
|
||||
case Nature.SASSY:
|
||||
return 0.9;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import BattleScene from "../battle-scene";
|
||||
import BattleScene from '../battle-scene';
|
||||
import i18next from '../plugins/i18n';
|
||||
|
||||
export enum PokeballType {
|
||||
|
@ -8,81 +8,81 @@ export enum PokeballType {
|
|||
ROGUE_BALL,
|
||||
MASTER_BALL,
|
||||
LUXURY_BALL
|
||||
};
|
||||
}
|
||||
|
||||
export function getPokeballAtlasKey(type: PokeballType): string {
|
||||
switch (type) {
|
||||
case PokeballType.POKEBALL:
|
||||
return 'pb';
|
||||
case PokeballType.GREAT_BALL:
|
||||
return 'gb';
|
||||
case PokeballType.ULTRA_BALL:
|
||||
return 'ub';
|
||||
case PokeballType.ROGUE_BALL:
|
||||
return 'rb';
|
||||
case PokeballType.MASTER_BALL:
|
||||
return 'mb';
|
||||
case PokeballType.LUXURY_BALL:
|
||||
return 'lb';
|
||||
case PokeballType.POKEBALL:
|
||||
return 'pb';
|
||||
case PokeballType.GREAT_BALL:
|
||||
return 'gb';
|
||||
case PokeballType.ULTRA_BALL:
|
||||
return 'ub';
|
||||
case PokeballType.ROGUE_BALL:
|
||||
return 'rb';
|
||||
case PokeballType.MASTER_BALL:
|
||||
return 'mb';
|
||||
case PokeballType.LUXURY_BALL:
|
||||
return 'lb';
|
||||
}
|
||||
}
|
||||
|
||||
export function getPokeballName(type: PokeballType): string {
|
||||
let ret: string;
|
||||
switch (type) {
|
||||
case PokeballType.POKEBALL:
|
||||
ret = i18next.t('pokeball:pokeBall');
|
||||
break;
|
||||
case PokeballType.GREAT_BALL:
|
||||
ret = i18next.t('pokeball:greatBall');
|
||||
break;
|
||||
case PokeballType.ULTRA_BALL:
|
||||
ret = i18next.t('pokeball:ultraBall');
|
||||
break;
|
||||
case PokeballType.ROGUE_BALL:
|
||||
ret = i18next.t('pokeball:rogueBall');
|
||||
break;
|
||||
case PokeballType.MASTER_BALL:
|
||||
ret = i18next.t('pokeball:masterBall');
|
||||
break;
|
||||
case PokeballType.LUXURY_BALL:
|
||||
ret = i18next.t('pokeball:luxuryBall');
|
||||
break;
|
||||
case PokeballType.POKEBALL:
|
||||
ret = i18next.t('pokeball:pokeBall');
|
||||
break;
|
||||
case PokeballType.GREAT_BALL:
|
||||
ret = i18next.t('pokeball:greatBall');
|
||||
break;
|
||||
case PokeballType.ULTRA_BALL:
|
||||
ret = i18next.t('pokeball:ultraBall');
|
||||
break;
|
||||
case PokeballType.ROGUE_BALL:
|
||||
ret = i18next.t('pokeball:rogueBall');
|
||||
break;
|
||||
case PokeballType.MASTER_BALL:
|
||||
ret = i18next.t('pokeball:masterBall');
|
||||
break;
|
||||
case PokeballType.LUXURY_BALL:
|
||||
ret = i18next.t('pokeball:luxuryBall');
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
export function getPokeballCatchMultiplier(type: PokeballType): number {
|
||||
switch (type) {
|
||||
case PokeballType.POKEBALL:
|
||||
return 1;
|
||||
case PokeballType.GREAT_BALL:
|
||||
return 1.5;
|
||||
case PokeballType.ULTRA_BALL:
|
||||
return 2;
|
||||
case PokeballType.ROGUE_BALL:
|
||||
return 3;
|
||||
case PokeballType.MASTER_BALL:
|
||||
return -1;
|
||||
case PokeballType.LUXURY_BALL:
|
||||
return 1;
|
||||
case PokeballType.POKEBALL:
|
||||
return 1;
|
||||
case PokeballType.GREAT_BALL:
|
||||
return 1.5;
|
||||
case PokeballType.ULTRA_BALL:
|
||||
return 2;
|
||||
case PokeballType.ROGUE_BALL:
|
||||
return 3;
|
||||
case PokeballType.MASTER_BALL:
|
||||
return -1;
|
||||
case PokeballType.LUXURY_BALL:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
export function getPokeballTintColor(type: PokeballType): number {
|
||||
switch (type) {
|
||||
case PokeballType.POKEBALL:
|
||||
return 0xd52929;
|
||||
case PokeballType.GREAT_BALL:
|
||||
return 0x94b4de;
|
||||
case PokeballType.ULTRA_BALL:
|
||||
return 0xe6cd31;
|
||||
case PokeballType.ROGUE_BALL:
|
||||
return 0xd52929;
|
||||
case PokeballType.MASTER_BALL:
|
||||
return 0xa441bd;
|
||||
case PokeballType.LUXURY_BALL:
|
||||
return 0xffde6a;
|
||||
case PokeballType.POKEBALL:
|
||||
return 0xd52929;
|
||||
case PokeballType.GREAT_BALL:
|
||||
return 0x94b4de;
|
||||
case PokeballType.ULTRA_BALL:
|
||||
return 0xe6cd31;
|
||||
case PokeballType.ROGUE_BALL:
|
||||
return 0xd52929;
|
||||
case PokeballType.MASTER_BALL:
|
||||
return 0xa441bd;
|
||||
case PokeballType.LUXURY_BALL:
|
||||
return 0xffde6a;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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({
|
||||
|
@ -121,4 +121,4 @@ export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameOb
|
|||
};
|
||||
|
||||
doBounce();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
@ -1486,8 +1486,8 @@ export const pokemonEvolutions: PokemonEvolutions = {
|
|||
],
|
||||
[Species.ONIX]: [
|
||||
new SpeciesEvolution(Species.STEELIX, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(
|
||||
p => p.moveset.filter(m => m.getMove().type === Type.STEEL).length > 0),
|
||||
SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
p => p.moveset.filter(m => m.getMove().type === Type.STEEL).length > 0),
|
||||
SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.RHYDON]: [
|
||||
new SpeciesEvolution(Species.RHYPERIOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /* Protector */), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
|
@ -1498,7 +1498,7 @@ export const pokemonEvolutions: PokemonEvolutions = {
|
|||
[Species.SCYTHER]: [
|
||||
new SpeciesEvolution(Species.SCIZOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(
|
||||
p => p.moveset.filter(m => m.getMove().type === Type.STEEL).length > 0),
|
||||
SpeciesWildEvolutionDelay.VERY_LONG),
|
||||
SpeciesWildEvolutionDelay.VERY_LONG),
|
||||
new SpeciesEvolution(Species.KLEAVOR, 1, EvolutionItem.BLACK_AUGURITE, null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.ELECTABUZZ]: [
|
||||
|
@ -1623,10 +1623,10 @@ 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;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,12 +719,12 @@ 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)));
|
||||
}
|
||||
formChanges.push(...newFormChanges);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
@ -7,29 +7,29 @@ export enum Stat {
|
|||
SPATK,
|
||||
SPDEF,
|
||||
SPD
|
||||
};
|
||||
}
|
||||
|
||||
export function getStatName(stat: Stat, shorten: boolean = false) {
|
||||
let ret: string;
|
||||
switch (stat) {
|
||||
case Stat.HP:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.HP') : i18next.t('pokemonInfo:Stat.HPshortened');
|
||||
break;
|
||||
case Stat.ATK:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.ATK') : i18next.t('pokemonInfo:Stat.ATKshortened');
|
||||
break;
|
||||
case Stat.DEF:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.DEF') : i18next.t('pokemonInfo:Stat.DEFshortened');
|
||||
break;
|
||||
case Stat.SPATK:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.SPATK') : i18next.t('pokemonInfo:Stat.SPATKshortened');
|
||||
break;
|
||||
case Stat.SPDEF:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.SPDEF') : i18next.t('pokemonInfo:Stat.SPDEFshortened');
|
||||
break;
|
||||
case Stat.SPD:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.SPD') : i18next.t('pokemonInfo:Stat.SPDshortened');
|
||||
break;
|
||||
case Stat.HP:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.HP') : i18next.t('pokemonInfo:Stat.HPshortened');
|
||||
break;
|
||||
case Stat.ATK:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.ATK') : i18next.t('pokemonInfo:Stat.ATKshortened');
|
||||
break;
|
||||
case Stat.DEF:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.DEF') : i18next.t('pokemonInfo:Stat.DEFshortened');
|
||||
break;
|
||||
case Stat.SPATK:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.SPATK') : i18next.t('pokemonInfo:Stat.SPATKshortened');
|
||||
break;
|
||||
case Stat.SPDEF:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.SPDEF') : i18next.t('pokemonInfo:Stat.SPDEFshortened');
|
||||
break;
|
||||
case Stat.SPD:
|
||||
ret = !shorten ? i18next.t('pokemonInfo:Stat.SPD') : i18next.t('pokemonInfo:Stat.SPDshortened');
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import * as Utils from "../utils";
|
||||
import * as Utils from '../utils';
|
||||
|
||||
export enum StatusEffect {
|
||||
NONE,
|
||||
|
@ -34,18 +34,18 @@ export class Status {
|
|||
export function getStatusEffectObtainText(statusEffect: StatusEffect, sourceText?: string): string {
|
||||
const sourceClause = sourceText ? ` ${statusEffect !== StatusEffect.SLEEP ? 'by' : 'from'} ${sourceText}` : '';
|
||||
switch (statusEffect) {
|
||||
case StatusEffect.POISON:
|
||||
return `\nwas poisoned${sourceClause}!`;
|
||||
case StatusEffect.TOXIC:
|
||||
return `\nwas badly poisoned${sourceClause}!`;
|
||||
case StatusEffect.PARALYSIS:
|
||||
return ` was paralyzed${sourceClause}!\nIt may be unable to move!`;
|
||||
case StatusEffect.SLEEP:
|
||||
return `\nfell asleep${sourceClause}!`;
|
||||
case StatusEffect.FREEZE:
|
||||
return `\nwas frozen solid${sourceClause}!`;
|
||||
case StatusEffect.BURN:
|
||||
return `\nwas burned${sourceClause}!`;
|
||||
case StatusEffect.POISON:
|
||||
return `\nwas poisoned${sourceClause}!`;
|
||||
case StatusEffect.TOXIC:
|
||||
return `\nwas badly poisoned${sourceClause}!`;
|
||||
case StatusEffect.PARALYSIS:
|
||||
return ` was paralyzed${sourceClause}!\nIt may be unable to move!`;
|
||||
case StatusEffect.SLEEP:
|
||||
return `\nfell asleep${sourceClause}!`;
|
||||
case StatusEffect.FREEZE:
|
||||
return `\nwas frozen solid${sourceClause}!`;
|
||||
case StatusEffect.BURN:
|
||||
return `\nwas burned${sourceClause}!`;
|
||||
}
|
||||
|
||||
return '';
|
||||
|
@ -53,17 +53,17 @@ export function getStatusEffectObtainText(statusEffect: StatusEffect, sourceText
|
|||
|
||||
export function getStatusEffectActivationText(statusEffect: StatusEffect): string {
|
||||
switch (statusEffect) {
|
||||
case StatusEffect.POISON:
|
||||
case StatusEffect.TOXIC:
|
||||
return ' is hurt\nby poison!';
|
||||
case StatusEffect.PARALYSIS:
|
||||
return ' is paralyzed!\nIt can\'t move!';
|
||||
case StatusEffect.SLEEP:
|
||||
return ' is fast asleep.';
|
||||
case StatusEffect.FREEZE:
|
||||
return ' is\nfrozen solid!';
|
||||
case StatusEffect.BURN:
|
||||
return ' is hurt\nby its burn!';
|
||||
case StatusEffect.POISON:
|
||||
case StatusEffect.TOXIC:
|
||||
return ' is hurt\nby poison!';
|
||||
case StatusEffect.PARALYSIS:
|
||||
return ' is paralyzed!\nIt can\'t move!';
|
||||
case StatusEffect.SLEEP:
|
||||
return ' is fast asleep.';
|
||||
case StatusEffect.FREEZE:
|
||||
return ' is\nfrozen solid!';
|
||||
case StatusEffect.BURN:
|
||||
return ' is hurt\nby its burn!';
|
||||
}
|
||||
|
||||
return '';
|
||||
|
@ -71,17 +71,17 @@ export function getStatusEffectActivationText(statusEffect: StatusEffect): strin
|
|||
|
||||
export function getStatusEffectOverlapText(statusEffect: StatusEffect): string {
|
||||
switch (statusEffect) {
|
||||
case StatusEffect.POISON:
|
||||
case StatusEffect.TOXIC:
|
||||
return ' is\nalready poisoned!';
|
||||
case StatusEffect.PARALYSIS:
|
||||
return ' is\nalready paralyzed!';
|
||||
case StatusEffect.SLEEP:
|
||||
return ' is\nalready asleep!';
|
||||
case StatusEffect.FREEZE:
|
||||
return ' is\nalready frozen!';
|
||||
case StatusEffect.BURN:
|
||||
return ' is\nalready burned!';
|
||||
case StatusEffect.POISON:
|
||||
case StatusEffect.TOXIC:
|
||||
return ' is\nalready poisoned!';
|
||||
case StatusEffect.PARALYSIS:
|
||||
return ' is\nalready paralyzed!';
|
||||
case StatusEffect.SLEEP:
|
||||
return ' is\nalready asleep!';
|
||||
case StatusEffect.FREEZE:
|
||||
return ' is\nalready frozen!';
|
||||
case StatusEffect.BURN:
|
||||
return ' is\nalready burned!';
|
||||
}
|
||||
|
||||
return '';
|
||||
|
@ -89,17 +89,17 @@ export function getStatusEffectOverlapText(statusEffect: StatusEffect): string {
|
|||
|
||||
export function getStatusEffectHealText(statusEffect: StatusEffect): string {
|
||||
switch (statusEffect) {
|
||||
case StatusEffect.POISON:
|
||||
case StatusEffect.TOXIC:
|
||||
return ' was\ncured of its poison!';
|
||||
case StatusEffect.PARALYSIS:
|
||||
return ' was\nhealed of paralysis!';
|
||||
case StatusEffect.SLEEP:
|
||||
return ' woke up!';
|
||||
case StatusEffect.FREEZE:
|
||||
return ' was\ndefrosted!';
|
||||
case StatusEffect.BURN:
|
||||
return ' was\nhealed of its burn!';
|
||||
case StatusEffect.POISON:
|
||||
case StatusEffect.TOXIC:
|
||||
return ' was\ncured of its poison!';
|
||||
case StatusEffect.PARALYSIS:
|
||||
return ' was\nhealed of paralysis!';
|
||||
case StatusEffect.SLEEP:
|
||||
return ' woke up!';
|
||||
case StatusEffect.FREEZE:
|
||||
return ' was\ndefrosted!';
|
||||
case StatusEffect.BURN:
|
||||
return ' was\nhealed of its burn!';
|
||||
}
|
||||
|
||||
return '';
|
||||
|
@ -107,30 +107,30 @@ export function getStatusEffectHealText(statusEffect: StatusEffect): string {
|
|||
|
||||
export function getStatusEffectDescriptor(statusEffect: StatusEffect): string {
|
||||
switch (statusEffect) {
|
||||
case StatusEffect.POISON:
|
||||
case StatusEffect.TOXIC:
|
||||
return 'poisoning';
|
||||
case StatusEffect.PARALYSIS:
|
||||
return 'paralysis';
|
||||
case StatusEffect.SLEEP:
|
||||
return 'sleep';
|
||||
case StatusEffect.FREEZE:
|
||||
return 'freezing';
|
||||
case StatusEffect.BURN:
|
||||
return 'burn';
|
||||
case StatusEffect.POISON:
|
||||
case StatusEffect.TOXIC:
|
||||
return 'poisoning';
|
||||
case StatusEffect.PARALYSIS:
|
||||
return 'paralysis';
|
||||
case StatusEffect.SLEEP:
|
||||
return 'sleep';
|
||||
case StatusEffect.FREEZE:
|
||||
return 'freezing';
|
||||
case StatusEffect.BURN:
|
||||
return 'burn';
|
||||
}
|
||||
}
|
||||
|
||||
export function getStatusEffectCatchRateMultiplier(statusEffect: StatusEffect): number {
|
||||
switch (statusEffect) {
|
||||
case StatusEffect.POISON:
|
||||
case StatusEffect.TOXIC:
|
||||
case StatusEffect.PARALYSIS:
|
||||
case StatusEffect.BURN:
|
||||
return 1.5;
|
||||
case StatusEffect.SLEEP:
|
||||
case StatusEffect.FREEZE:
|
||||
return 2.5;
|
||||
case StatusEffect.POISON:
|
||||
case StatusEffect.TOXIC:
|
||||
case StatusEffect.PARALYSIS:
|
||||
case StatusEffect.BURN:
|
||||
return 1.5;
|
||||
case StatusEffect.SLEEP:
|
||||
case StatusEffect.FREEZE:
|
||||
return 2.5;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
@ -174,4 +174,4 @@ export function getRandomStatus(statusA: Status, statusB: Status): Status {
|
|||
|
||||
|
||||
return Utils.randIntRange(0, 2) ? statusA : statusB;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { BattleStat, getBattleStatName } from "./battle-stat";
|
||||
import { BattleStat, getBattleStatName } from './battle-stat';
|
||||
|
||||
export enum TempBattleStat {
|
||||
ATK,
|
||||
|
@ -18,19 +18,19 @@ export function getTempBattleStatName(tempBattleStat: TempBattleStat) {
|
|||
|
||||
export function getTempBattleStatBoosterItemName(tempBattleStat: TempBattleStat) {
|
||||
switch (tempBattleStat) {
|
||||
case TempBattleStat.ATK:
|
||||
return 'X Attack';
|
||||
case TempBattleStat.DEF:
|
||||
return 'X Defense';
|
||||
case TempBattleStat.SPATK:
|
||||
return 'X Sp. Atk';
|
||||
case TempBattleStat.SPDEF:
|
||||
return 'X Sp. Def';
|
||||
case TempBattleStat.SPD:
|
||||
return 'X Speed';
|
||||
case TempBattleStat.ACC:
|
||||
return 'X Accuracy';
|
||||
case TempBattleStat.CRIT:
|
||||
return 'Dire Hit';
|
||||
case TempBattleStat.ATK:
|
||||
return 'X Attack';
|
||||
case TempBattleStat.DEF:
|
||||
return 'X Defense';
|
||||
case TempBattleStat.SPATK:
|
||||
return 'X Sp. Atk';
|
||||
case TempBattleStat.SPDEF:
|
||||
return 'X Sp. Def';
|
||||
case TempBattleStat.SPD:
|
||||
return 'X Speed';
|
||||
case TempBattleStat.ACC:
|
||||
return 'X Accuracy';
|
||||
case TempBattleStat.CRIT:
|
||||
return 'Dire Hit';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
@ -32,18 +32,18 @@ export class Terrain {
|
|||
|
||||
getAttackTypeMultiplier(attackType: Type): number {
|
||||
switch (this.terrainType) {
|
||||
case TerrainType.ELECTRIC:
|
||||
if (attackType === Type.ELECTRIC)
|
||||
return 1.3;
|
||||
break;
|
||||
case TerrainType.GRASSY:
|
||||
if (attackType === Type.GRASS)
|
||||
return 1.3;
|
||||
break;
|
||||
case TerrainType.PSYCHIC:
|
||||
if (attackType === Type.PSYCHIC)
|
||||
return 1.3;
|
||||
break;
|
||||
case TerrainType.ELECTRIC:
|
||||
if (attackType === Type.ELECTRIC)
|
||||
return 1.3;
|
||||
break;
|
||||
case TerrainType.GRASSY:
|
||||
if (attackType === Type.GRASS)
|
||||
return 1.3;
|
||||
break;
|
||||
case TerrainType.PSYCHIC:
|
||||
if (attackType === Type.PSYCHIC)
|
||||
return 1.3;
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
@ -51,12 +51,12 @@ export class Terrain {
|
|||
|
||||
isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move): boolean {
|
||||
switch (this.terrainType) {
|
||||
case TerrainType.PSYCHIC:
|
||||
if (!move.getAttrs(ProtectAttr).length) {
|
||||
const priority = new Utils.IntegerHolder(move.priority);
|
||||
applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority);
|
||||
return priority.value > 0 && user.getOpponents().filter(o => targets.includes(o.getBattlerIndex())).length > 0;
|
||||
}
|
||||
case TerrainType.PSYCHIC:
|
||||
if (!move.getAttrs(ProtectAttr).length) {
|
||||
const priority = new Utils.IntegerHolder(move.priority);
|
||||
applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority);
|
||||
return priority.value > 0 && user.getOpponents().filter(o => targets.includes(o.getBattlerIndex())).length > 0;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -65,15 +65,15 @@ export class Terrain {
|
|||
|
||||
export function getTerrainColor(terrainType: TerrainType): [ integer, integer, integer ] {
|
||||
switch (terrainType) {
|
||||
case TerrainType.MISTY:
|
||||
return [ 232, 136, 200 ];
|
||||
case TerrainType.ELECTRIC:
|
||||
return [ 248, 248, 120 ];
|
||||
case TerrainType.GRASSY:
|
||||
return [ 120, 200, 80 ];
|
||||
case TerrainType.PSYCHIC:
|
||||
return [ 160, 64, 160 ];
|
||||
case TerrainType.MISTY:
|
||||
return [ 232, 136, 200 ];
|
||||
case TerrainType.ELECTRIC:
|
||||
return [ 248, 248, 120 ];
|
||||
case TerrainType.GRASSY:
|
||||
return [ 120, 200, 80 ];
|
||||
case TerrainType.PSYCHIC:
|
||||
return [ 160, 64, 160 ];
|
||||
}
|
||||
|
||||
return [ 0, 0, 0 ];
|
||||
}
|
||||
}
|
||||
|
|
618
src/data/tms.ts
618
src/data/tms.ts
|
@ -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>>
|
||||
|
@ -64181,309 +64181,309 @@ interface TmPoolTiers {
|
|||
}
|
||||
|
||||
export const tmPoolTiers: TmPoolTiers = {
|
||||
[Moves.MEGA_PUNCH]: ModifierTier.GREAT,
|
||||
[Moves.PAY_DAY]: ModifierTier.ULTRA,
|
||||
[Moves.FIRE_PUNCH]: ModifierTier.GREAT,
|
||||
[Moves.ICE_PUNCH]: ModifierTier.GREAT,
|
||||
[Moves.THUNDER_PUNCH]: ModifierTier.GREAT,
|
||||
[Moves.SWORDS_DANCE]: ModifierTier.COMMON,
|
||||
[Moves.CUT]: ModifierTier.COMMON,
|
||||
[Moves.FLY]: ModifierTier.COMMON,
|
||||
[Moves.MEGA_KICK]: ModifierTier.GREAT,
|
||||
[Moves.BODY_SLAM]: ModifierTier.GREAT,
|
||||
[Moves.TAKE_DOWN]: ModifierTier.GREAT,
|
||||
[Moves.DOUBLE_EDGE]: ModifierTier.ULTRA,
|
||||
[Moves.PIN_MISSILE]: ModifierTier.COMMON,
|
||||
[Moves.ROAR]: ModifierTier.COMMON,
|
||||
[Moves.FLAMETHROWER]: ModifierTier.ULTRA,
|
||||
[Moves.HYDRO_PUMP]: ModifierTier.ULTRA,
|
||||
[Moves.SURF]: ModifierTier.ULTRA,
|
||||
[Moves.ICE_BEAM]: ModifierTier.ULTRA,
|
||||
[Moves.BLIZZARD]: ModifierTier.ULTRA,
|
||||
[Moves.PSYBEAM]: ModifierTier.GREAT,
|
||||
[Moves.HYPER_BEAM]: ModifierTier.ULTRA,
|
||||
[Moves.LOW_KICK]: ModifierTier.COMMON,
|
||||
[Moves.STRENGTH]: ModifierTier.GREAT,
|
||||
[Moves.SOLAR_BEAM]: ModifierTier.ULTRA,
|
||||
[Moves.FIRE_SPIN]: ModifierTier.COMMON,
|
||||
[Moves.THUNDERBOLT]: ModifierTier.ULTRA,
|
||||
[Moves.THUNDER_WAVE]: ModifierTier.COMMON,
|
||||
[Moves.THUNDER]: ModifierTier.ULTRA,
|
||||
[Moves.EARTHQUAKE]: ModifierTier.ULTRA,
|
||||
[Moves.DIG]: ModifierTier.GREAT,
|
||||
[Moves.TOXIC]: ModifierTier.GREAT,
|
||||
[Moves.PSYCHIC]: ModifierTier.ULTRA,
|
||||
[Moves.AGILITY]: ModifierTier.COMMON,
|
||||
[Moves.NIGHT_SHADE]: ModifierTier.COMMON,
|
||||
[Moves.SCREECH]: ModifierTier.COMMON,
|
||||
[Moves.DOUBLE_TEAM]: ModifierTier.COMMON,
|
||||
[Moves.CONFUSE_RAY]: ModifierTier.COMMON,
|
||||
[Moves.LIGHT_SCREEN]: ModifierTier.COMMON,
|
||||
[Moves.HAZE]: ModifierTier.COMMON,
|
||||
[Moves.REFLECT]: ModifierTier.COMMON,
|
||||
[Moves.FOCUS_ENERGY]: ModifierTier.COMMON,
|
||||
[Moves.METRONOME]: ModifierTier.COMMON,
|
||||
[Moves.SELF_DESTRUCT]: ModifierTier.GREAT,
|
||||
[Moves.FIRE_BLAST]: ModifierTier.ULTRA,
|
||||
[Moves.WATERFALL]: ModifierTier.GREAT,
|
||||
[Moves.SWIFT]: ModifierTier.COMMON,
|
||||
[Moves.AMNESIA]: ModifierTier.COMMON,
|
||||
[Moves.DREAM_EATER]: ModifierTier.GREAT,
|
||||
[Moves.LEECH_LIFE]: ModifierTier.ULTRA,
|
||||
[Moves.FLASH]: ModifierTier.COMMON,
|
||||
[Moves.EXPLOSION]: ModifierTier.GREAT,
|
||||
[Moves.REST]: ModifierTier.COMMON,
|
||||
[Moves.ROCK_SLIDE]: ModifierTier.GREAT,
|
||||
[Moves.TRI_ATTACK]: ModifierTier.ULTRA,
|
||||
[Moves.SUPER_FANG]: ModifierTier.COMMON,
|
||||
[Moves.SUBSTITUTE]: ModifierTier.COMMON,
|
||||
[Moves.THIEF]: ModifierTier.GREAT,
|
||||
[Moves.SNORE]: ModifierTier.COMMON,
|
||||
[Moves.CURSE]: ModifierTier.COMMON,
|
||||
[Moves.REVERSAL]: ModifierTier.COMMON,
|
||||
[Moves.SPITE]: ModifierTier.COMMON,
|
||||
[Moves.PROTECT]: ModifierTier.COMMON,
|
||||
[Moves.SCARY_FACE]: ModifierTier.COMMON,
|
||||
[Moves.SLUDGE_BOMB]: ModifierTier.GREAT,
|
||||
[Moves.MUD_SLAP]: ModifierTier.COMMON,
|
||||
[Moves.SPIKES]: ModifierTier.COMMON,
|
||||
[Moves.ICY_WIND]: ModifierTier.GREAT,
|
||||
[Moves.OUTRAGE]: ModifierTier.ULTRA,
|
||||
[Moves.SANDSTORM]: ModifierTier.COMMON,
|
||||
[Moves.GIGA_DRAIN]: ModifierTier.ULTRA,
|
||||
[Moves.ENDURE]: ModifierTier.COMMON,
|
||||
[Moves.CHARM]: ModifierTier.COMMON,
|
||||
[Moves.FALSE_SWIPE]: ModifierTier.COMMON,
|
||||
[Moves.SWAGGER]: ModifierTier.COMMON,
|
||||
[Moves.STEEL_WING]: ModifierTier.GREAT,
|
||||
[Moves.ATTRACT]: ModifierTier.COMMON,
|
||||
[Moves.SLEEP_TALK]: ModifierTier.COMMON,
|
||||
[Moves.RETURN]: ModifierTier.ULTRA,
|
||||
[Moves.FRUSTRATION]: ModifierTier.COMMON,
|
||||
[Moves.SAFEGUARD]: ModifierTier.COMMON,
|
||||
[Moves.PAIN_SPLIT]: ModifierTier.COMMON,
|
||||
[Moves.MEGAHORN]: ModifierTier.ULTRA,
|
||||
[Moves.BATON_PASS]: ModifierTier.COMMON,
|
||||
[Moves.ENCORE]: ModifierTier.COMMON,
|
||||
[Moves.IRON_TAIL]: ModifierTier.GREAT,
|
||||
[Moves.METAL_CLAW]: ModifierTier.COMMON,
|
||||
[Moves.HIDDEN_POWER]: ModifierTier.GREAT,
|
||||
[Moves.RAIN_DANCE]: ModifierTier.COMMON,
|
||||
[Moves.SUNNY_DAY]: ModifierTier.COMMON,
|
||||
[Moves.CRUNCH]: ModifierTier.GREAT,
|
||||
[Moves.PSYCH_UP]: ModifierTier.COMMON,
|
||||
[Moves.SHADOW_BALL]: ModifierTier.ULTRA,
|
||||
[Moves.FUTURE_SIGHT]: ModifierTier.GREAT,
|
||||
[Moves.ROCK_SMASH]: ModifierTier.COMMON,
|
||||
[Moves.WHIRLPOOL]: ModifierTier.COMMON,
|
||||
[Moves.BEAT_UP]: ModifierTier.COMMON,
|
||||
[Moves.UPROAR]: ModifierTier.GREAT,
|
||||
[Moves.HEAT_WAVE]: ModifierTier.ULTRA,
|
||||
[Moves.HAIL]: ModifierTier.COMMON,
|
||||
[Moves.TORMENT]: ModifierTier.COMMON,
|
||||
[Moves.WILL_O_WISP]: ModifierTier.COMMON,
|
||||
[Moves.FACADE]: ModifierTier.GREAT,
|
||||
[Moves.FOCUS_PUNCH]: ModifierTier.COMMON,
|
||||
[Moves.NATURE_POWER]: ModifierTier.COMMON,
|
||||
[Moves.CHARGE]: ModifierTier.COMMON,
|
||||
[Moves.TAUNT]: ModifierTier.COMMON,
|
||||
[Moves.HELPING_HAND]: ModifierTier.COMMON,
|
||||
[Moves.TRICK]: ModifierTier.COMMON,
|
||||
[Moves.SUPERPOWER]: ModifierTier.ULTRA,
|
||||
[Moves.REVENGE]: ModifierTier.GREAT,
|
||||
[Moves.BRICK_BREAK]: ModifierTier.GREAT,
|
||||
[Moves.KNOCK_OFF]: ModifierTier.GREAT,
|
||||
[Moves.ENDEAVOR]: ModifierTier.COMMON,
|
||||
[Moves.SKILL_SWAP]: ModifierTier.COMMON,
|
||||
[Moves.IMPRISON]: ModifierTier.COMMON,
|
||||
[Moves.DIVE]: ModifierTier.GREAT,
|
||||
[Moves.FEATHER_DANCE]: ModifierTier.COMMON,
|
||||
[Moves.BLAZE_KICK]: ModifierTier.GREAT,
|
||||
[Moves.HYPER_VOICE]: ModifierTier.ULTRA,
|
||||
[Moves.BLAST_BURN]: ModifierTier.ULTRA,
|
||||
[Moves.HYDRO_CANNON]: ModifierTier.ULTRA,
|
||||
[Moves.WEATHER_BALL]: ModifierTier.COMMON,
|
||||
[Moves.FAKE_TEARS]: ModifierTier.COMMON,
|
||||
[Moves.AIR_CUTTER]: ModifierTier.GREAT,
|
||||
[Moves.OVERHEAT]: ModifierTier.ULTRA,
|
||||
[Moves.ROCK_TOMB]: ModifierTier.GREAT,
|
||||
[Moves.METAL_SOUND]: ModifierTier.COMMON,
|
||||
[Moves.COSMIC_POWER]: ModifierTier.COMMON,
|
||||
[Moves.SIGNAL_BEAM]: ModifierTier.GREAT,
|
||||
[Moves.SAND_TOMB]: ModifierTier.COMMON,
|
||||
[Moves.MUDDY_WATER]: ModifierTier.GREAT,
|
||||
[Moves.BULLET_SEED]: ModifierTier.GREAT,
|
||||
[Moves.AERIAL_ACE]: ModifierTier.GREAT,
|
||||
[Moves.ICICLE_SPEAR]: ModifierTier.GREAT,
|
||||
[Moves.IRON_DEFENSE]: ModifierTier.GREAT,
|
||||
[Moves.DRAGON_CLAW]: ModifierTier.ULTRA,
|
||||
[Moves.FRENZY_PLANT]: ModifierTier.ULTRA,
|
||||
[Moves.BULK_UP]: ModifierTier.COMMON,
|
||||
[Moves.BOUNCE]: ModifierTier.GREAT,
|
||||
[Moves.MUD_SHOT]: ModifierTier.GREAT,
|
||||
[Moves.POISON_TAIL]: ModifierTier.GREAT,
|
||||
[Moves.MAGICAL_LEAF]: ModifierTier.GREAT,
|
||||
[Moves.CALM_MIND]: ModifierTier.GREAT,
|
||||
[Moves.LEAF_BLADE]: ModifierTier.ULTRA,
|
||||
[Moves.DRAGON_DANCE]: ModifierTier.GREAT,
|
||||
[Moves.ROCK_BLAST]: ModifierTier.GREAT,
|
||||
[Moves.WATER_PULSE]: ModifierTier.GREAT,
|
||||
[Moves.ROOST]: ModifierTier.GREAT,
|
||||
[Moves.GRAVITY]: ModifierTier.COMMON,
|
||||
[Moves.GYRO_BALL]: ModifierTier.COMMON,
|
||||
[Moves.BRINE]: ModifierTier.GREAT,
|
||||
[Moves.TAILWIND]: ModifierTier.GREAT,
|
||||
[Moves.U_TURN]: ModifierTier.GREAT,
|
||||
[Moves.CLOSE_COMBAT]: ModifierTier.ULTRA,
|
||||
[Moves.PAYBACK]: ModifierTier.COMMON,
|
||||
[Moves.ASSURANCE]: ModifierTier.COMMON,
|
||||
[Moves.EMBARGO]: ModifierTier.COMMON,
|
||||
[Moves.FLING]: ModifierTier.COMMON,
|
||||
[Moves.POWER_SWAP]: ModifierTier.COMMON,
|
||||
[Moves.GUARD_SWAP]: ModifierTier.COMMON,
|
||||
[Moves.TOXIC_SPIKES]: ModifierTier.GREAT,
|
||||
[Moves.FLARE_BLITZ]: ModifierTier.ULTRA,
|
||||
[Moves.AURA_SPHERE]: ModifierTier.GREAT,
|
||||
[Moves.ROCK_POLISH]: ModifierTier.COMMON,
|
||||
[Moves.POISON_JAB]: ModifierTier.GREAT,
|
||||
[Moves.DARK_PULSE]: ModifierTier.GREAT,
|
||||
[Moves.SEED_BOMB]: ModifierTier.GREAT,
|
||||
[Moves.AIR_SLASH]: ModifierTier.GREAT,
|
||||
[Moves.X_SCISSOR]: ModifierTier.GREAT,
|
||||
[Moves.BUG_BUZZ]: ModifierTier.GREAT,
|
||||
[Moves.DRAGON_PULSE]: ModifierTier.GREAT,
|
||||
[Moves.POWER_GEM]: ModifierTier.GREAT,
|
||||
[Moves.DRAIN_PUNCH]: ModifierTier.GREAT,
|
||||
[Moves.VACUUM_WAVE]: ModifierTier.COMMON,
|
||||
[Moves.FOCUS_BLAST]: ModifierTier.GREAT,
|
||||
[Moves.ENERGY_BALL]: ModifierTier.GREAT,
|
||||
[Moves.BRAVE_BIRD]: ModifierTier.ULTRA,
|
||||
[Moves.EARTH_POWER]: ModifierTier.ULTRA,
|
||||
[Moves.GIGA_IMPACT]: ModifierTier.GREAT,
|
||||
[Moves.NASTY_PLOT]: ModifierTier.COMMON,
|
||||
[Moves.AVALANCHE]: ModifierTier.GREAT,
|
||||
[Moves.SHADOW_CLAW]: ModifierTier.GREAT,
|
||||
[Moves.THUNDER_FANG]: ModifierTier.GREAT,
|
||||
[Moves.ICE_FANG]: ModifierTier.GREAT,
|
||||
[Moves.FIRE_FANG]: ModifierTier.GREAT,
|
||||
[Moves.PSYCHO_CUT]: ModifierTier.GREAT,
|
||||
[Moves.ZEN_HEADBUTT]: ModifierTier.GREAT,
|
||||
[Moves.FLASH_CANNON]: ModifierTier.GREAT,
|
||||
[Moves.ROCK_CLIMB]: ModifierTier.GREAT,
|
||||
[Moves.DEFOG]: ModifierTier.COMMON,
|
||||
[Moves.TRICK_ROOM]: ModifierTier.COMMON,
|
||||
[Moves.DRACO_METEOR]: ModifierTier.ULTRA,
|
||||
[Moves.LEAF_STORM]: ModifierTier.ULTRA,
|
||||
[Moves.POWER_WHIP]: ModifierTier.ULTRA,
|
||||
[Moves.CROSS_POISON]: ModifierTier.GREAT,
|
||||
[Moves.GUNK_SHOT]: ModifierTier.ULTRA,
|
||||
[Moves.IRON_HEAD]: ModifierTier.GREAT,
|
||||
[Moves.STONE_EDGE]: ModifierTier.ULTRA,
|
||||
[Moves.STEALTH_ROCK]: ModifierTier.COMMON,
|
||||
[Moves.GRASS_KNOT]: ModifierTier.ULTRA,
|
||||
[Moves.BUG_BITE]: ModifierTier.GREAT,
|
||||
[Moves.CHARGE_BEAM]: ModifierTier.GREAT,
|
||||
[Moves.HONE_CLAWS]: ModifierTier.COMMON,
|
||||
[Moves.WONDER_ROOM]: ModifierTier.COMMON,
|
||||
[Moves.PSYSHOCK]: ModifierTier.GREAT,
|
||||
[Moves.VENOSHOCK]: ModifierTier.GREAT,
|
||||
[Moves.MAGIC_ROOM]: ModifierTier.COMMON,
|
||||
[Moves.SMACK_DOWN]: ModifierTier.COMMON,
|
||||
[Moves.SLUDGE_WAVE]: ModifierTier.GREAT,
|
||||
[Moves.HEAVY_SLAM]: ModifierTier.GREAT,
|
||||
[Moves.ELECTRO_BALL]: ModifierTier.GREAT,
|
||||
[Moves.FLAME_CHARGE]: ModifierTier.GREAT,
|
||||
[Moves.LOW_SWEEP]: ModifierTier.GREAT,
|
||||
[Moves.ACID_SPRAY]: ModifierTier.COMMON,
|
||||
[Moves.FOUL_PLAY]: ModifierTier.ULTRA,
|
||||
[Moves.ROUND]: ModifierTier.COMMON,
|
||||
[Moves.ECHOED_VOICE]: ModifierTier.COMMON,
|
||||
[Moves.STORED_POWER]: ModifierTier.COMMON,
|
||||
[Moves.ALLY_SWITCH]: ModifierTier.COMMON,
|
||||
[Moves.SCALD]: ModifierTier.GREAT,
|
||||
[Moves.HEX]: ModifierTier.GREAT,
|
||||
[Moves.SKY_DROP]: ModifierTier.GREAT,
|
||||
[Moves.QUASH]: ModifierTier.COMMON,
|
||||
[Moves.ACROBATICS]: ModifierTier.GREAT,
|
||||
[Moves.RETALIATE]: ModifierTier.GREAT,
|
||||
[Moves.WATER_PLEDGE]: ModifierTier.GREAT,
|
||||
[Moves.FIRE_PLEDGE]: ModifierTier.GREAT,
|
||||
[Moves.GRASS_PLEDGE]: ModifierTier.GREAT,
|
||||
[Moves.VOLT_SWITCH]: ModifierTier.GREAT,
|
||||
[Moves.STRUGGLE_BUG]: ModifierTier.COMMON,
|
||||
[Moves.BULLDOZE]: ModifierTier.GREAT,
|
||||
[Moves.FROST_BREATH]: ModifierTier.GREAT,
|
||||
[Moves.DRAGON_TAIL]: ModifierTier.GREAT,
|
||||
[Moves.WORK_UP]: ModifierTier.COMMON,
|
||||
[Moves.ELECTROWEB]: ModifierTier.GREAT,
|
||||
[Moves.WILD_CHARGE]: ModifierTier.GREAT,
|
||||
[Moves.DRILL_RUN]: ModifierTier.GREAT,
|
||||
[Moves.SACRED_SWORD]: ModifierTier.ULTRA,
|
||||
[Moves.RAZOR_SHELL]: ModifierTier.GREAT,
|
||||
[Moves.HEAT_CRASH]: ModifierTier.GREAT,
|
||||
[Moves.TAIL_SLAP]: ModifierTier.GREAT,
|
||||
[Moves.HURRICANE]: ModifierTier.ULTRA,
|
||||
[Moves.SNARL]: ModifierTier.COMMON,
|
||||
[Moves.PHANTOM_FORCE]: ModifierTier.ULTRA,
|
||||
[Moves.PETAL_BLIZZARD]: ModifierTier.GREAT,
|
||||
[Moves.DISARMING_VOICE]: ModifierTier.GREAT,
|
||||
[Moves.DRAINING_KISS]: ModifierTier.GREAT,
|
||||
[Moves.GRASSY_TERRAIN]: ModifierTier.COMMON,
|
||||
[Moves.MISTY_TERRAIN]: ModifierTier.COMMON,
|
||||
[Moves.PLAY_ROUGH]: ModifierTier.GREAT,
|
||||
[Moves.CONFIDE]: ModifierTier.COMMON,
|
||||
[Moves.MYSTICAL_FIRE]: ModifierTier.GREAT,
|
||||
[Moves.EERIE_IMPULSE]: ModifierTier.COMMON,
|
||||
[Moves.VENOM_DRENCH]: ModifierTier.COMMON,
|
||||
[Moves.ELECTRIC_TERRAIN]: ModifierTier.COMMON,
|
||||
[Moves.DAZZLING_GLEAM]: ModifierTier.ULTRA,
|
||||
[Moves.INFESTATION]: ModifierTier.COMMON,
|
||||
[Moves.DRAGON_ASCENT]: ModifierTier.ULTRA,
|
||||
[Moves.DARKEST_LARIAT]: ModifierTier.GREAT,
|
||||
[Moves.HIGH_HORSEPOWER]: ModifierTier.ULTRA,
|
||||
[Moves.SOLAR_BLADE]: ModifierTier.GREAT,
|
||||
[Moves.THROAT_CHOP]: ModifierTier.GREAT,
|
||||
[Moves.POLLEN_PUFF]: ModifierTier.GREAT,
|
||||
[Moves.PSYCHIC_TERRAIN]: ModifierTier.COMMON,
|
||||
[Moves.LUNGE]: ModifierTier.GREAT,
|
||||
[Moves.SPEED_SWAP]: ModifierTier.COMMON,
|
||||
[Moves.SMART_STRIKE]: ModifierTier.GREAT,
|
||||
[Moves.BRUTAL_SWING]: ModifierTier.GREAT,
|
||||
[Moves.PSYCHIC_FANGS]: ModifierTier.GREAT,
|
||||
[Moves.STOMPING_TANTRUM]: ModifierTier.GREAT,
|
||||
[Moves.LIQUIDATION]: ModifierTier.ULTRA,
|
||||
[Moves.BODY_PRESS]: ModifierTier.ULTRA,
|
||||
[Moves.BREAKING_SWIPE]: ModifierTier.GREAT,
|
||||
[Moves.STEEL_BEAM]: ModifierTier.ULTRA,
|
||||
[Moves.EXPANDING_FORCE]: ModifierTier.GREAT,
|
||||
[Moves.STEEL_ROLLER]: ModifierTier.COMMON,
|
||||
[Moves.SCALE_SHOT]: ModifierTier.ULTRA,
|
||||
[Moves.METEOR_BEAM]: ModifierTier.GREAT,
|
||||
[Moves.MISTY_EXPLOSION]: ModifierTier.COMMON,
|
||||
[Moves.GRASSY_GLIDE]: ModifierTier.COMMON,
|
||||
[Moves.RISING_VOLTAGE]: ModifierTier.COMMON,
|
||||
[Moves.TERRAIN_PULSE]: ModifierTier.COMMON,
|
||||
[Moves.SKITTER_SMACK]: ModifierTier.GREAT,
|
||||
[Moves.BURNING_JEALOUSY]: ModifierTier.GREAT,
|
||||
[Moves.LASH_OUT]: ModifierTier.GREAT,
|
||||
[Moves.POLTERGEIST]: ModifierTier.ULTRA,
|
||||
[Moves.CORROSIVE_GAS]: ModifierTier.COMMON,
|
||||
[Moves.COACHING]: ModifierTier.COMMON,
|
||||
[Moves.FLIP_TURN]: ModifierTier.COMMON,
|
||||
[Moves.TRIPLE_AXEL]: ModifierTier.COMMON,
|
||||
[Moves.DUAL_WINGBEAT]: ModifierTier.COMMON,
|
||||
[Moves.SCORCHING_SANDS]: ModifierTier.GREAT,
|
||||
[Moves.TERA_BLAST]: ModifierTier.GREAT,
|
||||
[Moves.ICE_SPINNER]: ModifierTier.GREAT,
|
||||
[Moves.SNOWSCAPE]: ModifierTier.COMMON,
|
||||
[Moves.POUNCE]: ModifierTier.COMMON,
|
||||
[Moves.TRAILBLAZE]: ModifierTier.COMMON,
|
||||
[Moves.CHILLING_WATER]: ModifierTier.COMMON,
|
||||
[Moves.HARD_PRESS]: ModifierTier.GREAT,
|
||||
[Moves.DRAGON_CHEER]: ModifierTier.COMMON,
|
||||
[Moves.ALLURING_VOICE]: ModifierTier.GREAT,
|
||||
[Moves.TEMPER_FLARE]: ModifierTier.GREAT,
|
||||
[Moves.SUPERCELL_SLAM]: ModifierTier.GREAT,
|
||||
[Moves.PSYCHIC_NOISE]: ModifierTier.GREAT,
|
||||
[Moves.UPPER_HAND]: ModifierTier.COMMON,
|
||||
};
|
||||
[Moves.MEGA_PUNCH]: ModifierTier.GREAT,
|
||||
[Moves.PAY_DAY]: ModifierTier.ULTRA,
|
||||
[Moves.FIRE_PUNCH]: ModifierTier.GREAT,
|
||||
[Moves.ICE_PUNCH]: ModifierTier.GREAT,
|
||||
[Moves.THUNDER_PUNCH]: ModifierTier.GREAT,
|
||||
[Moves.SWORDS_DANCE]: ModifierTier.COMMON,
|
||||
[Moves.CUT]: ModifierTier.COMMON,
|
||||
[Moves.FLY]: ModifierTier.COMMON,
|
||||
[Moves.MEGA_KICK]: ModifierTier.GREAT,
|
||||
[Moves.BODY_SLAM]: ModifierTier.GREAT,
|
||||
[Moves.TAKE_DOWN]: ModifierTier.GREAT,
|
||||
[Moves.DOUBLE_EDGE]: ModifierTier.ULTRA,
|
||||
[Moves.PIN_MISSILE]: ModifierTier.COMMON,
|
||||
[Moves.ROAR]: ModifierTier.COMMON,
|
||||
[Moves.FLAMETHROWER]: ModifierTier.ULTRA,
|
||||
[Moves.HYDRO_PUMP]: ModifierTier.ULTRA,
|
||||
[Moves.SURF]: ModifierTier.ULTRA,
|
||||
[Moves.ICE_BEAM]: ModifierTier.ULTRA,
|
||||
[Moves.BLIZZARD]: ModifierTier.ULTRA,
|
||||
[Moves.PSYBEAM]: ModifierTier.GREAT,
|
||||
[Moves.HYPER_BEAM]: ModifierTier.ULTRA,
|
||||
[Moves.LOW_KICK]: ModifierTier.COMMON,
|
||||
[Moves.STRENGTH]: ModifierTier.GREAT,
|
||||
[Moves.SOLAR_BEAM]: ModifierTier.ULTRA,
|
||||
[Moves.FIRE_SPIN]: ModifierTier.COMMON,
|
||||
[Moves.THUNDERBOLT]: ModifierTier.ULTRA,
|
||||
[Moves.THUNDER_WAVE]: ModifierTier.COMMON,
|
||||
[Moves.THUNDER]: ModifierTier.ULTRA,
|
||||
[Moves.EARTHQUAKE]: ModifierTier.ULTRA,
|
||||
[Moves.DIG]: ModifierTier.GREAT,
|
||||
[Moves.TOXIC]: ModifierTier.GREAT,
|
||||
[Moves.PSYCHIC]: ModifierTier.ULTRA,
|
||||
[Moves.AGILITY]: ModifierTier.COMMON,
|
||||
[Moves.NIGHT_SHADE]: ModifierTier.COMMON,
|
||||
[Moves.SCREECH]: ModifierTier.COMMON,
|
||||
[Moves.DOUBLE_TEAM]: ModifierTier.COMMON,
|
||||
[Moves.CONFUSE_RAY]: ModifierTier.COMMON,
|
||||
[Moves.LIGHT_SCREEN]: ModifierTier.COMMON,
|
||||
[Moves.HAZE]: ModifierTier.COMMON,
|
||||
[Moves.REFLECT]: ModifierTier.COMMON,
|
||||
[Moves.FOCUS_ENERGY]: ModifierTier.COMMON,
|
||||
[Moves.METRONOME]: ModifierTier.COMMON,
|
||||
[Moves.SELF_DESTRUCT]: ModifierTier.GREAT,
|
||||
[Moves.FIRE_BLAST]: ModifierTier.ULTRA,
|
||||
[Moves.WATERFALL]: ModifierTier.GREAT,
|
||||
[Moves.SWIFT]: ModifierTier.COMMON,
|
||||
[Moves.AMNESIA]: ModifierTier.COMMON,
|
||||
[Moves.DREAM_EATER]: ModifierTier.GREAT,
|
||||
[Moves.LEECH_LIFE]: ModifierTier.ULTRA,
|
||||
[Moves.FLASH]: ModifierTier.COMMON,
|
||||
[Moves.EXPLOSION]: ModifierTier.GREAT,
|
||||
[Moves.REST]: ModifierTier.COMMON,
|
||||
[Moves.ROCK_SLIDE]: ModifierTier.GREAT,
|
||||
[Moves.TRI_ATTACK]: ModifierTier.ULTRA,
|
||||
[Moves.SUPER_FANG]: ModifierTier.COMMON,
|
||||
[Moves.SUBSTITUTE]: ModifierTier.COMMON,
|
||||
[Moves.THIEF]: ModifierTier.GREAT,
|
||||
[Moves.SNORE]: ModifierTier.COMMON,
|
||||
[Moves.CURSE]: ModifierTier.COMMON,
|
||||
[Moves.REVERSAL]: ModifierTier.COMMON,
|
||||
[Moves.SPITE]: ModifierTier.COMMON,
|
||||
[Moves.PROTECT]: ModifierTier.COMMON,
|
||||
[Moves.SCARY_FACE]: ModifierTier.COMMON,
|
||||
[Moves.SLUDGE_BOMB]: ModifierTier.GREAT,
|
||||
[Moves.MUD_SLAP]: ModifierTier.COMMON,
|
||||
[Moves.SPIKES]: ModifierTier.COMMON,
|
||||
[Moves.ICY_WIND]: ModifierTier.GREAT,
|
||||
[Moves.OUTRAGE]: ModifierTier.ULTRA,
|
||||
[Moves.SANDSTORM]: ModifierTier.COMMON,
|
||||
[Moves.GIGA_DRAIN]: ModifierTier.ULTRA,
|
||||
[Moves.ENDURE]: ModifierTier.COMMON,
|
||||
[Moves.CHARM]: ModifierTier.COMMON,
|
||||
[Moves.FALSE_SWIPE]: ModifierTier.COMMON,
|
||||
[Moves.SWAGGER]: ModifierTier.COMMON,
|
||||
[Moves.STEEL_WING]: ModifierTier.GREAT,
|
||||
[Moves.ATTRACT]: ModifierTier.COMMON,
|
||||
[Moves.SLEEP_TALK]: ModifierTier.COMMON,
|
||||
[Moves.RETURN]: ModifierTier.ULTRA,
|
||||
[Moves.FRUSTRATION]: ModifierTier.COMMON,
|
||||
[Moves.SAFEGUARD]: ModifierTier.COMMON,
|
||||
[Moves.PAIN_SPLIT]: ModifierTier.COMMON,
|
||||
[Moves.MEGAHORN]: ModifierTier.ULTRA,
|
||||
[Moves.BATON_PASS]: ModifierTier.COMMON,
|
||||
[Moves.ENCORE]: ModifierTier.COMMON,
|
||||
[Moves.IRON_TAIL]: ModifierTier.GREAT,
|
||||
[Moves.METAL_CLAW]: ModifierTier.COMMON,
|
||||
[Moves.HIDDEN_POWER]: ModifierTier.GREAT,
|
||||
[Moves.RAIN_DANCE]: ModifierTier.COMMON,
|
||||
[Moves.SUNNY_DAY]: ModifierTier.COMMON,
|
||||
[Moves.CRUNCH]: ModifierTier.GREAT,
|
||||
[Moves.PSYCH_UP]: ModifierTier.COMMON,
|
||||
[Moves.SHADOW_BALL]: ModifierTier.ULTRA,
|
||||
[Moves.FUTURE_SIGHT]: ModifierTier.GREAT,
|
||||
[Moves.ROCK_SMASH]: ModifierTier.COMMON,
|
||||
[Moves.WHIRLPOOL]: ModifierTier.COMMON,
|
||||
[Moves.BEAT_UP]: ModifierTier.COMMON,
|
||||
[Moves.UPROAR]: ModifierTier.GREAT,
|
||||
[Moves.HEAT_WAVE]: ModifierTier.ULTRA,
|
||||
[Moves.HAIL]: ModifierTier.COMMON,
|
||||
[Moves.TORMENT]: ModifierTier.COMMON,
|
||||
[Moves.WILL_O_WISP]: ModifierTier.COMMON,
|
||||
[Moves.FACADE]: ModifierTier.GREAT,
|
||||
[Moves.FOCUS_PUNCH]: ModifierTier.COMMON,
|
||||
[Moves.NATURE_POWER]: ModifierTier.COMMON,
|
||||
[Moves.CHARGE]: ModifierTier.COMMON,
|
||||
[Moves.TAUNT]: ModifierTier.COMMON,
|
||||
[Moves.HELPING_HAND]: ModifierTier.COMMON,
|
||||
[Moves.TRICK]: ModifierTier.COMMON,
|
||||
[Moves.SUPERPOWER]: ModifierTier.ULTRA,
|
||||
[Moves.REVENGE]: ModifierTier.GREAT,
|
||||
[Moves.BRICK_BREAK]: ModifierTier.GREAT,
|
||||
[Moves.KNOCK_OFF]: ModifierTier.GREAT,
|
||||
[Moves.ENDEAVOR]: ModifierTier.COMMON,
|
||||
[Moves.SKILL_SWAP]: ModifierTier.COMMON,
|
||||
[Moves.IMPRISON]: ModifierTier.COMMON,
|
||||
[Moves.DIVE]: ModifierTier.GREAT,
|
||||
[Moves.FEATHER_DANCE]: ModifierTier.COMMON,
|
||||
[Moves.BLAZE_KICK]: ModifierTier.GREAT,
|
||||
[Moves.HYPER_VOICE]: ModifierTier.ULTRA,
|
||||
[Moves.BLAST_BURN]: ModifierTier.ULTRA,
|
||||
[Moves.HYDRO_CANNON]: ModifierTier.ULTRA,
|
||||
[Moves.WEATHER_BALL]: ModifierTier.COMMON,
|
||||
[Moves.FAKE_TEARS]: ModifierTier.COMMON,
|
||||
[Moves.AIR_CUTTER]: ModifierTier.GREAT,
|
||||
[Moves.OVERHEAT]: ModifierTier.ULTRA,
|
||||
[Moves.ROCK_TOMB]: ModifierTier.GREAT,
|
||||
[Moves.METAL_SOUND]: ModifierTier.COMMON,
|
||||
[Moves.COSMIC_POWER]: ModifierTier.COMMON,
|
||||
[Moves.SIGNAL_BEAM]: ModifierTier.GREAT,
|
||||
[Moves.SAND_TOMB]: ModifierTier.COMMON,
|
||||
[Moves.MUDDY_WATER]: ModifierTier.GREAT,
|
||||
[Moves.BULLET_SEED]: ModifierTier.GREAT,
|
||||
[Moves.AERIAL_ACE]: ModifierTier.GREAT,
|
||||
[Moves.ICICLE_SPEAR]: ModifierTier.GREAT,
|
||||
[Moves.IRON_DEFENSE]: ModifierTier.GREAT,
|
||||
[Moves.DRAGON_CLAW]: ModifierTier.ULTRA,
|
||||
[Moves.FRENZY_PLANT]: ModifierTier.ULTRA,
|
||||
[Moves.BULK_UP]: ModifierTier.COMMON,
|
||||
[Moves.BOUNCE]: ModifierTier.GREAT,
|
||||
[Moves.MUD_SHOT]: ModifierTier.GREAT,
|
||||
[Moves.POISON_TAIL]: ModifierTier.GREAT,
|
||||
[Moves.MAGICAL_LEAF]: ModifierTier.GREAT,
|
||||
[Moves.CALM_MIND]: ModifierTier.GREAT,
|
||||
[Moves.LEAF_BLADE]: ModifierTier.ULTRA,
|
||||
[Moves.DRAGON_DANCE]: ModifierTier.GREAT,
|
||||
[Moves.ROCK_BLAST]: ModifierTier.GREAT,
|
||||
[Moves.WATER_PULSE]: ModifierTier.GREAT,
|
||||
[Moves.ROOST]: ModifierTier.GREAT,
|
||||
[Moves.GRAVITY]: ModifierTier.COMMON,
|
||||
[Moves.GYRO_BALL]: ModifierTier.COMMON,
|
||||
[Moves.BRINE]: ModifierTier.GREAT,
|
||||
[Moves.TAILWIND]: ModifierTier.GREAT,
|
||||
[Moves.U_TURN]: ModifierTier.GREAT,
|
||||
[Moves.CLOSE_COMBAT]: ModifierTier.ULTRA,
|
||||
[Moves.PAYBACK]: ModifierTier.COMMON,
|
||||
[Moves.ASSURANCE]: ModifierTier.COMMON,
|
||||
[Moves.EMBARGO]: ModifierTier.COMMON,
|
||||
[Moves.FLING]: ModifierTier.COMMON,
|
||||
[Moves.POWER_SWAP]: ModifierTier.COMMON,
|
||||
[Moves.GUARD_SWAP]: ModifierTier.COMMON,
|
||||
[Moves.TOXIC_SPIKES]: ModifierTier.GREAT,
|
||||
[Moves.FLARE_BLITZ]: ModifierTier.ULTRA,
|
||||
[Moves.AURA_SPHERE]: ModifierTier.GREAT,
|
||||
[Moves.ROCK_POLISH]: ModifierTier.COMMON,
|
||||
[Moves.POISON_JAB]: ModifierTier.GREAT,
|
||||
[Moves.DARK_PULSE]: ModifierTier.GREAT,
|
||||
[Moves.SEED_BOMB]: ModifierTier.GREAT,
|
||||
[Moves.AIR_SLASH]: ModifierTier.GREAT,
|
||||
[Moves.X_SCISSOR]: ModifierTier.GREAT,
|
||||
[Moves.BUG_BUZZ]: ModifierTier.GREAT,
|
||||
[Moves.DRAGON_PULSE]: ModifierTier.GREAT,
|
||||
[Moves.POWER_GEM]: ModifierTier.GREAT,
|
||||
[Moves.DRAIN_PUNCH]: ModifierTier.GREAT,
|
||||
[Moves.VACUUM_WAVE]: ModifierTier.COMMON,
|
||||
[Moves.FOCUS_BLAST]: ModifierTier.GREAT,
|
||||
[Moves.ENERGY_BALL]: ModifierTier.GREAT,
|
||||
[Moves.BRAVE_BIRD]: ModifierTier.ULTRA,
|
||||
[Moves.EARTH_POWER]: ModifierTier.ULTRA,
|
||||
[Moves.GIGA_IMPACT]: ModifierTier.GREAT,
|
||||
[Moves.NASTY_PLOT]: ModifierTier.COMMON,
|
||||
[Moves.AVALANCHE]: ModifierTier.GREAT,
|
||||
[Moves.SHADOW_CLAW]: ModifierTier.GREAT,
|
||||
[Moves.THUNDER_FANG]: ModifierTier.GREAT,
|
||||
[Moves.ICE_FANG]: ModifierTier.GREAT,
|
||||
[Moves.FIRE_FANG]: ModifierTier.GREAT,
|
||||
[Moves.PSYCHO_CUT]: ModifierTier.GREAT,
|
||||
[Moves.ZEN_HEADBUTT]: ModifierTier.GREAT,
|
||||
[Moves.FLASH_CANNON]: ModifierTier.GREAT,
|
||||
[Moves.ROCK_CLIMB]: ModifierTier.GREAT,
|
||||
[Moves.DEFOG]: ModifierTier.COMMON,
|
||||
[Moves.TRICK_ROOM]: ModifierTier.COMMON,
|
||||
[Moves.DRACO_METEOR]: ModifierTier.ULTRA,
|
||||
[Moves.LEAF_STORM]: ModifierTier.ULTRA,
|
||||
[Moves.POWER_WHIP]: ModifierTier.ULTRA,
|
||||
[Moves.CROSS_POISON]: ModifierTier.GREAT,
|
||||
[Moves.GUNK_SHOT]: ModifierTier.ULTRA,
|
||||
[Moves.IRON_HEAD]: ModifierTier.GREAT,
|
||||
[Moves.STONE_EDGE]: ModifierTier.ULTRA,
|
||||
[Moves.STEALTH_ROCK]: ModifierTier.COMMON,
|
||||
[Moves.GRASS_KNOT]: ModifierTier.ULTRA,
|
||||
[Moves.BUG_BITE]: ModifierTier.GREAT,
|
||||
[Moves.CHARGE_BEAM]: ModifierTier.GREAT,
|
||||
[Moves.HONE_CLAWS]: ModifierTier.COMMON,
|
||||
[Moves.WONDER_ROOM]: ModifierTier.COMMON,
|
||||
[Moves.PSYSHOCK]: ModifierTier.GREAT,
|
||||
[Moves.VENOSHOCK]: ModifierTier.GREAT,
|
||||
[Moves.MAGIC_ROOM]: ModifierTier.COMMON,
|
||||
[Moves.SMACK_DOWN]: ModifierTier.COMMON,
|
||||
[Moves.SLUDGE_WAVE]: ModifierTier.GREAT,
|
||||
[Moves.HEAVY_SLAM]: ModifierTier.GREAT,
|
||||
[Moves.ELECTRO_BALL]: ModifierTier.GREAT,
|
||||
[Moves.FLAME_CHARGE]: ModifierTier.GREAT,
|
||||
[Moves.LOW_SWEEP]: ModifierTier.GREAT,
|
||||
[Moves.ACID_SPRAY]: ModifierTier.COMMON,
|
||||
[Moves.FOUL_PLAY]: ModifierTier.ULTRA,
|
||||
[Moves.ROUND]: ModifierTier.COMMON,
|
||||
[Moves.ECHOED_VOICE]: ModifierTier.COMMON,
|
||||
[Moves.STORED_POWER]: ModifierTier.COMMON,
|
||||
[Moves.ALLY_SWITCH]: ModifierTier.COMMON,
|
||||
[Moves.SCALD]: ModifierTier.GREAT,
|
||||
[Moves.HEX]: ModifierTier.GREAT,
|
||||
[Moves.SKY_DROP]: ModifierTier.GREAT,
|
||||
[Moves.QUASH]: ModifierTier.COMMON,
|
||||
[Moves.ACROBATICS]: ModifierTier.GREAT,
|
||||
[Moves.RETALIATE]: ModifierTier.GREAT,
|
||||
[Moves.WATER_PLEDGE]: ModifierTier.GREAT,
|
||||
[Moves.FIRE_PLEDGE]: ModifierTier.GREAT,
|
||||
[Moves.GRASS_PLEDGE]: ModifierTier.GREAT,
|
||||
[Moves.VOLT_SWITCH]: ModifierTier.GREAT,
|
||||
[Moves.STRUGGLE_BUG]: ModifierTier.COMMON,
|
||||
[Moves.BULLDOZE]: ModifierTier.GREAT,
|
||||
[Moves.FROST_BREATH]: ModifierTier.GREAT,
|
||||
[Moves.DRAGON_TAIL]: ModifierTier.GREAT,
|
||||
[Moves.WORK_UP]: ModifierTier.COMMON,
|
||||
[Moves.ELECTROWEB]: ModifierTier.GREAT,
|
||||
[Moves.WILD_CHARGE]: ModifierTier.GREAT,
|
||||
[Moves.DRILL_RUN]: ModifierTier.GREAT,
|
||||
[Moves.SACRED_SWORD]: ModifierTier.ULTRA,
|
||||
[Moves.RAZOR_SHELL]: ModifierTier.GREAT,
|
||||
[Moves.HEAT_CRASH]: ModifierTier.GREAT,
|
||||
[Moves.TAIL_SLAP]: ModifierTier.GREAT,
|
||||
[Moves.HURRICANE]: ModifierTier.ULTRA,
|
||||
[Moves.SNARL]: ModifierTier.COMMON,
|
||||
[Moves.PHANTOM_FORCE]: ModifierTier.ULTRA,
|
||||
[Moves.PETAL_BLIZZARD]: ModifierTier.GREAT,
|
||||
[Moves.DISARMING_VOICE]: ModifierTier.GREAT,
|
||||
[Moves.DRAINING_KISS]: ModifierTier.GREAT,
|
||||
[Moves.GRASSY_TERRAIN]: ModifierTier.COMMON,
|
||||
[Moves.MISTY_TERRAIN]: ModifierTier.COMMON,
|
||||
[Moves.PLAY_ROUGH]: ModifierTier.GREAT,
|
||||
[Moves.CONFIDE]: ModifierTier.COMMON,
|
||||
[Moves.MYSTICAL_FIRE]: ModifierTier.GREAT,
|
||||
[Moves.EERIE_IMPULSE]: ModifierTier.COMMON,
|
||||
[Moves.VENOM_DRENCH]: ModifierTier.COMMON,
|
||||
[Moves.ELECTRIC_TERRAIN]: ModifierTier.COMMON,
|
||||
[Moves.DAZZLING_GLEAM]: ModifierTier.ULTRA,
|
||||
[Moves.INFESTATION]: ModifierTier.COMMON,
|
||||
[Moves.DRAGON_ASCENT]: ModifierTier.ULTRA,
|
||||
[Moves.DARKEST_LARIAT]: ModifierTier.GREAT,
|
||||
[Moves.HIGH_HORSEPOWER]: ModifierTier.ULTRA,
|
||||
[Moves.SOLAR_BLADE]: ModifierTier.GREAT,
|
||||
[Moves.THROAT_CHOP]: ModifierTier.GREAT,
|
||||
[Moves.POLLEN_PUFF]: ModifierTier.GREAT,
|
||||
[Moves.PSYCHIC_TERRAIN]: ModifierTier.COMMON,
|
||||
[Moves.LUNGE]: ModifierTier.GREAT,
|
||||
[Moves.SPEED_SWAP]: ModifierTier.COMMON,
|
||||
[Moves.SMART_STRIKE]: ModifierTier.GREAT,
|
||||
[Moves.BRUTAL_SWING]: ModifierTier.GREAT,
|
||||
[Moves.PSYCHIC_FANGS]: ModifierTier.GREAT,
|
||||
[Moves.STOMPING_TANTRUM]: ModifierTier.GREAT,
|
||||
[Moves.LIQUIDATION]: ModifierTier.ULTRA,
|
||||
[Moves.BODY_PRESS]: ModifierTier.ULTRA,
|
||||
[Moves.BREAKING_SWIPE]: ModifierTier.GREAT,
|
||||
[Moves.STEEL_BEAM]: ModifierTier.ULTRA,
|
||||
[Moves.EXPANDING_FORCE]: ModifierTier.GREAT,
|
||||
[Moves.STEEL_ROLLER]: ModifierTier.COMMON,
|
||||
[Moves.SCALE_SHOT]: ModifierTier.ULTRA,
|
||||
[Moves.METEOR_BEAM]: ModifierTier.GREAT,
|
||||
[Moves.MISTY_EXPLOSION]: ModifierTier.COMMON,
|
||||
[Moves.GRASSY_GLIDE]: ModifierTier.COMMON,
|
||||
[Moves.RISING_VOLTAGE]: ModifierTier.COMMON,
|
||||
[Moves.TERRAIN_PULSE]: ModifierTier.COMMON,
|
||||
[Moves.SKITTER_SMACK]: ModifierTier.GREAT,
|
||||
[Moves.BURNING_JEALOUSY]: ModifierTier.GREAT,
|
||||
[Moves.LASH_OUT]: ModifierTier.GREAT,
|
||||
[Moves.POLTERGEIST]: ModifierTier.ULTRA,
|
||||
[Moves.CORROSIVE_GAS]: ModifierTier.COMMON,
|
||||
[Moves.COACHING]: ModifierTier.COMMON,
|
||||
[Moves.FLIP_TURN]: ModifierTier.COMMON,
|
||||
[Moves.TRIPLE_AXEL]: ModifierTier.COMMON,
|
||||
[Moves.DUAL_WINGBEAT]: ModifierTier.COMMON,
|
||||
[Moves.SCORCHING_SANDS]: ModifierTier.GREAT,
|
||||
[Moves.TERA_BLAST]: ModifierTier.GREAT,
|
||||
[Moves.ICE_SPINNER]: ModifierTier.GREAT,
|
||||
[Moves.SNOWSCAPE]: ModifierTier.COMMON,
|
||||
[Moves.POUNCE]: ModifierTier.COMMON,
|
||||
[Moves.TRAILBLAZE]: ModifierTier.COMMON,
|
||||
[Moves.CHILLING_WATER]: ModifierTier.COMMON,
|
||||
[Moves.HARD_PRESS]: ModifierTier.GREAT,
|
||||
[Moves.DRAGON_CHEER]: ModifierTier.COMMON,
|
||||
[Moves.ALLURING_VOICE]: ModifierTier.GREAT,
|
||||
[Moves.TEMPER_FLARE]: ModifierTier.GREAT,
|
||||
[Moves.SUPERCELL_SLAM]: ModifierTier.GREAT,
|
||||
[Moves.PSYCHIC_NOISE]: ModifierTier.GREAT,
|
||||
[Moves.UPPER_HAND]: ModifierTier.COMMON,
|
||||
};
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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]+(?: & [a-z]+)?)<\/a>/i.exec(content);
|
||||
if (nameMatch)
|
||||
(female || forceFemale ? femaleTrainerNames : trainerNames).add(nameMatch[1].replace('&', '&'));
|
||||
|
@ -156,7 +156,7 @@ function fetchAndPopulateTrainerNames(url: string, parser: DOMParser, trainerNam
|
|||
}
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/*export function scrapeTrainerNames() {
|
||||
|
@ -190,4 +190,4 @@ function fetchAndPopulateTrainerNames(url: string, parser: DOMParser, trainerNam
|
|||
output += `\n};`;
|
||||
console.log(output);
|
||||
});
|
||||
}*/
|
||||
}*/
|
||||
|
|
986
src/data/type.ts
986
src/data/type.ts
File diff suppressed because it is too large
Load Diff
|
@ -8,11 +8,11 @@ export const variantColorCache = {};
|
|||
|
||||
export function getVariantTint(variant: Variant): integer {
|
||||
switch (variant) {
|
||||
case 0:
|
||||
return 0xf8c020;
|
||||
case 1:
|
||||
return 0x20f8f0;
|
||||
case 2:
|
||||
return 0xe81048;
|
||||
case 0:
|
||||
return 0xf8c020;
|
||||
case 1:
|
||||
return 0x20f8f0;
|
||||
case 2:
|
||||
return 0xe81048;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
@ -42,10 +42,10 @@ export class Weather {
|
|||
|
||||
isImmutable(): boolean {
|
||||
switch (this.weatherType) {
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
case WeatherType.HARSH_SUN:
|
||||
case WeatherType.STRONG_WINDS:
|
||||
return true;
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
case WeatherType.HARSH_SUN:
|
||||
case WeatherType.STRONG_WINDS:
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -53,9 +53,9 @@ export class Weather {
|
|||
|
||||
isDamaging(): boolean {
|
||||
switch (this.weatherType) {
|
||||
case WeatherType.SANDSTORM:
|
||||
case WeatherType.HAIL:
|
||||
return true;
|
||||
case WeatherType.SANDSTORM:
|
||||
case WeatherType.HAIL:
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -63,10 +63,10 @@ export class Weather {
|
|||
|
||||
isTypeDamageImmune(type: Type): boolean {
|
||||
switch (this.weatherType) {
|
||||
case WeatherType.SANDSTORM:
|
||||
return type === Type.GROUND || type === Type.ROCK || type === Type.STEEL;
|
||||
case WeatherType.HAIL:
|
||||
return type === Type.ICE;
|
||||
case WeatherType.SANDSTORM:
|
||||
return type === Type.GROUND || type === Type.ROCK || type === Type.STEEL;
|
||||
case WeatherType.HAIL:
|
||||
return type === Type.ICE;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -74,20 +74,20 @@ export class Weather {
|
|||
|
||||
getAttackTypeMultiplier(attackType: Type): number {
|
||||
switch (this.weatherType) {
|
||||
case WeatherType.SUNNY:
|
||||
case WeatherType.HARSH_SUN:
|
||||
if (attackType === Type.FIRE)
|
||||
return 1.5;
|
||||
if (attackType === Type.WATER)
|
||||
return 0.5;
|
||||
break;
|
||||
case WeatherType.RAIN:
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
if (attackType === Type.FIRE)
|
||||
return 0.5;
|
||||
if (attackType === Type.WATER)
|
||||
return 1.5;
|
||||
break;
|
||||
case WeatherType.SUNNY:
|
||||
case WeatherType.HARSH_SUN:
|
||||
if (attackType === Type.FIRE)
|
||||
return 1.5;
|
||||
if (attackType === Type.WATER)
|
||||
return 0.5;
|
||||
break;
|
||||
case WeatherType.RAIN:
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
if (attackType === Type.FIRE)
|
||||
return 0.5;
|
||||
if (attackType === Type.WATER)
|
||||
return 1.5;
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
@ -95,10 +95,10 @@ export class Weather {
|
|||
|
||||
isMoveWeatherCancelled(move: Move): boolean {
|
||||
switch (this.weatherType) {
|
||||
case WeatherType.HARSH_SUN:
|
||||
return move instanceof AttackMove && move.type === Type.WATER;
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
return move instanceof AttackMove && move.type === Type.FIRE;
|
||||
case WeatherType.HARSH_SUN:
|
||||
return move instanceof AttackMove && move.type === Type.WATER;
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
return move instanceof AttackMove && move.type === Type.FIRE;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -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;
|
||||
|
@ -121,24 +121,24 @@ export class Weather {
|
|||
|
||||
export function getWeatherStartMessage(weatherType: WeatherType): string {
|
||||
switch (weatherType) {
|
||||
case WeatherType.SUNNY:
|
||||
return i18next.t('weather:sunnyStartMessage');
|
||||
case WeatherType.RAIN:
|
||||
return i18next.t('weather:rainStartMessage');
|
||||
case WeatherType.SANDSTORM:
|
||||
return i18next.t('weather:sandstormStartMessage');
|
||||
case WeatherType.HAIL:
|
||||
return i18next.t('weather:hailStartMessage');
|
||||
case WeatherType.SNOW:
|
||||
return i18next.t('weather:snowStartMessage');
|
||||
case WeatherType.FOG:
|
||||
return i18next.t('weather:fogStartMessage');
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
return i18next.t('weather:heavyRainStartMessage');
|
||||
case WeatherType.HARSH_SUN:
|
||||
return i18next.t('weather:harshSunStartMessage');
|
||||
case WeatherType.STRONG_WINDS:
|
||||
return i18next.t('weather:strongWindsStartMessage');
|
||||
case WeatherType.SUNNY:
|
||||
return i18next.t('weather:sunnyStartMessage');
|
||||
case WeatherType.RAIN:
|
||||
return i18next.t('weather:rainStartMessage');
|
||||
case WeatherType.SANDSTORM:
|
||||
return i18next.t('weather:sandstormStartMessage');
|
||||
case WeatherType.HAIL:
|
||||
return i18next.t('weather:hailStartMessage');
|
||||
case WeatherType.SNOW:
|
||||
return i18next.t('weather:snowStartMessage');
|
||||
case WeatherType.FOG:
|
||||
return i18next.t('weather:fogStartMessage');
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
return i18next.t('weather:heavyRainStartMessage');
|
||||
case WeatherType.HARSH_SUN:
|
||||
return i18next.t('weather:harshSunStartMessage');
|
||||
case WeatherType.STRONG_WINDS:
|
||||
return i18next.t('weather:strongWindsStartMessage');
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -146,24 +146,24 @@ export function getWeatherStartMessage(weatherType: WeatherType): string {
|
|||
|
||||
export function getWeatherLapseMessage(weatherType: WeatherType): string {
|
||||
switch (weatherType) {
|
||||
case WeatherType.SUNNY:
|
||||
return i18next.t('weather:sunnyLapseMessage');
|
||||
case WeatherType.RAIN:
|
||||
return i18next.t('weather:rainLapseMessage');
|
||||
case WeatherType.SANDSTORM:
|
||||
return i18next.t('weather:sandstormLapseMessage');
|
||||
case WeatherType.HAIL:
|
||||
return i18next.t('weather:hailLapseMessage');
|
||||
case WeatherType.SNOW:
|
||||
return i18next.t('weather:snowLapseMessage');
|
||||
case WeatherType.FOG:
|
||||
return i18next.t('weather:fogLapseMessage');
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
return i18next.t('weather:heavyRainLapseMessage');
|
||||
case WeatherType.HARSH_SUN:
|
||||
return i18next.t('weather:harshSunLapseMessage');
|
||||
case WeatherType.STRONG_WINDS:
|
||||
return i18next.t('weather:strongWindsLapseMessage');
|
||||
case WeatherType.SUNNY:
|
||||
return i18next.t('weather:sunnyLapseMessage');
|
||||
case WeatherType.RAIN:
|
||||
return i18next.t('weather:rainLapseMessage');
|
||||
case WeatherType.SANDSTORM:
|
||||
return i18next.t('weather:sandstormLapseMessage');
|
||||
case WeatherType.HAIL:
|
||||
return i18next.t('weather:hailLapseMessage');
|
||||
case WeatherType.SNOW:
|
||||
return i18next.t('weather:snowLapseMessage');
|
||||
case WeatherType.FOG:
|
||||
return i18next.t('weather:fogLapseMessage');
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
return i18next.t('weather:heavyRainLapseMessage');
|
||||
case WeatherType.HARSH_SUN:
|
||||
return i18next.t('weather:harshSunLapseMessage');
|
||||
case WeatherType.STRONG_WINDS:
|
||||
return i18next.t('weather:strongWindsLapseMessage');
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -171,10 +171,10 @@ export function getWeatherLapseMessage(weatherType: WeatherType): string {
|
|||
|
||||
export function getWeatherDamageMessage(weatherType: WeatherType, pokemon: Pokemon): string {
|
||||
switch (weatherType) {
|
||||
case WeatherType.SANDSTORM:
|
||||
return i18next.t('weather:sandstormDamageMessage', {pokemonPrefix: getPokemonPrefix(pokemon), pokemonName: pokemon.name});
|
||||
case WeatherType.HAIL:
|
||||
return i18next.t('weather:hailDamageMessage', {pokemonPrefix: getPokemonPrefix(pokemon), pokemonName: pokemon.name});
|
||||
case WeatherType.SANDSTORM:
|
||||
return i18next.t('weather:sandstormDamageMessage', {pokemonPrefix: getPokemonPrefix(pokemon), pokemonName: pokemon.name});
|
||||
case WeatherType.HAIL:
|
||||
return i18next.t('weather:hailDamageMessage', {pokemonPrefix: getPokemonPrefix(pokemon), pokemonName: pokemon.name});
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -182,24 +182,24 @@ export function getWeatherDamageMessage(weatherType: WeatherType, pokemon: Pokem
|
|||
|
||||
export function getWeatherClearMessage(weatherType: WeatherType): string {
|
||||
switch (weatherType) {
|
||||
case WeatherType.SUNNY:
|
||||
return i18next.t('weather:sunnyClearMessage');
|
||||
case WeatherType.RAIN:
|
||||
return i18next.t('weather:rainClearMessage');
|
||||
case WeatherType.SANDSTORM:
|
||||
return i18next.t('weather:sandstormClearMessage');
|
||||
case WeatherType.HAIL:
|
||||
return i18next.t('weather:hailClearMessage');
|
||||
case WeatherType.SNOW:
|
||||
return i18next.t('weather:snowClearMessage');
|
||||
case WeatherType.FOG:
|
||||
return i18next.t('weather:fogClearMessage');
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
return i18next.t('weather:heavyRainClearMessage');
|
||||
case WeatherType.HARSH_SUN:
|
||||
return i18next.t('weather:harshSunClearMessage');
|
||||
case WeatherType.STRONG_WINDS:
|
||||
return i18next.t('weather:strongWindsClearMessage');
|
||||
case WeatherType.SUNNY:
|
||||
return i18next.t('weather:sunnyClearMessage');
|
||||
case WeatherType.RAIN:
|
||||
return i18next.t('weather:rainClearMessage');
|
||||
case WeatherType.SANDSTORM:
|
||||
return i18next.t('weather:sandstormClearMessage');
|
||||
case WeatherType.HAIL:
|
||||
return i18next.t('weather:hailClearMessage');
|
||||
case WeatherType.SNOW:
|
||||
return i18next.t('weather:snowClearMessage');
|
||||
case WeatherType.FOG:
|
||||
return i18next.t('weather:fogClearMessage');
|
||||
case WeatherType.HEAVY_RAIN:
|
||||
return i18next.t('weather:heavyRainClearMessage');
|
||||
case WeatherType.HARSH_SUN:
|
||||
return i18next.t('weather:harshSunClearMessage');
|
||||
case WeatherType.STRONG_WINDS:
|
||||
return i18next.t('weather:strongWindsClearMessage');
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -207,33 +207,33 @@ export function getWeatherClearMessage(weatherType: WeatherType): string {
|
|||
|
||||
export function getTerrainStartMessage(terrainType: TerrainType): string {
|
||||
switch (terrainType) {
|
||||
case TerrainType.MISTY:
|
||||
return 'Mist swirled around the battlefield!';
|
||||
case TerrainType.ELECTRIC:
|
||||
return 'An electric current ran across the battlefield!';
|
||||
case TerrainType.GRASSY:
|
||||
return 'Grass grew to cover the battlefield!';
|
||||
case TerrainType.PSYCHIC:
|
||||
return 'The battlefield got weird!';
|
||||
case TerrainType.MISTY:
|
||||
return 'Mist swirled around the battlefield!';
|
||||
case TerrainType.ELECTRIC:
|
||||
return 'An electric current ran across the battlefield!';
|
||||
case TerrainType.GRASSY:
|
||||
return 'Grass grew to cover the battlefield!';
|
||||
case TerrainType.PSYCHIC:
|
||||
return 'The battlefield got weird!';
|
||||
}
|
||||
}
|
||||
|
||||
export function getTerrainClearMessage(terrainType: TerrainType): string {
|
||||
switch (terrainType) {
|
||||
case TerrainType.MISTY:
|
||||
return 'The mist disappeared from the battlefield.';
|
||||
case TerrainType.ELECTRIC:
|
||||
return 'The electricity disappeared from the battlefield.';
|
||||
case TerrainType.GRASSY:
|
||||
return 'The grass disappeared from the battlefield.';
|
||||
case TerrainType.PSYCHIC:
|
||||
return 'The weirdness disappeared from the battlefield!';
|
||||
case TerrainType.MISTY:
|
||||
return 'The mist disappeared from the battlefield.';
|
||||
case TerrainType.ELECTRIC:
|
||||
return 'The electricity disappeared from the battlefield.';
|
||||
case TerrainType.GRASSY:
|
||||
return 'The grass disappeared from the battlefield.';
|
||||
case TerrainType.PSYCHIC:
|
||||
return 'The weirdness disappeared from the battlefield!';
|
||||
}
|
||||
}
|
||||
|
||||
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!`);
|
||||
}
|
||||
|
||||
|
@ -246,119 +246,119 @@ export function getRandomWeatherType(arena: any /* Importing from arena causes a
|
|||
let weatherPool: WeatherPoolEntry[] = [];
|
||||
const hasSun = arena.getTimeOfDay() < 2;
|
||||
switch (arena.biomeType) {
|
||||
case Biome.GRASS:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 7 }
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 3 });
|
||||
break;
|
||||
case Biome.TALL_GRASS:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 8 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 5 },
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 8 });
|
||||
break;
|
||||
case Biome.FOREST:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 8 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 5 }
|
||||
];
|
||||
break;
|
||||
case Biome.SEA:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 3 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 12 }
|
||||
];
|
||||
break;
|
||||
case Biome.SWAMP:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 3 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 4 },
|
||||
{ weatherType: WeatherType.FOG, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.BEACH:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 8 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 3 }
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 5 });
|
||||
break;
|
||||
case Biome.LAKE:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 10 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 5 },
|
||||
{ weatherType: WeatherType.FOG, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.SEABED:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.RAIN, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.BADLANDS:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 8 },
|
||||
{ weatherType: WeatherType.SANDSTORM, weight: 2 }
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 5 });
|
||||
break;
|
||||
case Biome.DESERT:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.SANDSTORM, weight: 2 }
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 });
|
||||
break;
|
||||
case Biome.ICE_CAVE:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 3 },
|
||||
{ weatherType: WeatherType.SNOW, weight: 4 },
|
||||
{ weatherType: WeatherType.HAIL, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.MEADOW:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 2 }
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 });
|
||||
case Biome.VOLCANO:
|
||||
weatherPool = [
|
||||
{ weatherType: hasSun ? WeatherType.SUNNY : WeatherType.NONE, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.GRAVEYARD:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 3 },
|
||||
{ weatherType: WeatherType.FOG, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.JUNGLE:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 8 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 2 }
|
||||
];
|
||||
break;
|
||||
case Biome.SNOWY_FOREST:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.SNOW, weight: 7 },
|
||||
{ weatherType: WeatherType.HAIL, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.ISLAND:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 5 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 1 },
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 });
|
||||
break;
|
||||
case Biome.GRASS:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 7 }
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 3 });
|
||||
break;
|
||||
case Biome.TALL_GRASS:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 8 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 5 },
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 8 });
|
||||
break;
|
||||
case Biome.FOREST:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 8 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 5 }
|
||||
];
|
||||
break;
|
||||
case Biome.SEA:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 3 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 12 }
|
||||
];
|
||||
break;
|
||||
case Biome.SWAMP:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 3 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 4 },
|
||||
{ weatherType: WeatherType.FOG, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.BEACH:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 8 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 3 }
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 5 });
|
||||
break;
|
||||
case Biome.LAKE:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 10 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 5 },
|
||||
{ weatherType: WeatherType.FOG, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.SEABED:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.RAIN, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.BADLANDS:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 8 },
|
||||
{ weatherType: WeatherType.SANDSTORM, weight: 2 }
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 5 });
|
||||
break;
|
||||
case Biome.DESERT:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.SANDSTORM, weight: 2 }
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 });
|
||||
break;
|
||||
case Biome.ICE_CAVE:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 3 },
|
||||
{ weatherType: WeatherType.SNOW, weight: 4 },
|
||||
{ weatherType: WeatherType.HAIL, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.MEADOW:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 2 }
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 });
|
||||
case Biome.VOLCANO:
|
||||
weatherPool = [
|
||||
{ weatherType: hasSun ? WeatherType.SUNNY : WeatherType.NONE, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.GRAVEYARD:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 3 },
|
||||
{ weatherType: WeatherType.FOG, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.JUNGLE:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 8 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 2 }
|
||||
];
|
||||
break;
|
||||
case Biome.SNOWY_FOREST:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.SNOW, weight: 7 },
|
||||
{ weatherType: WeatherType.HAIL, weight: 1 }
|
||||
];
|
||||
break;
|
||||
case Biome.ISLAND:
|
||||
weatherPool = [
|
||||
{ weatherType: WeatherType.NONE, weight: 5 },
|
||||
{ weatherType: WeatherType.RAIN, weight: 1 },
|
||||
];
|
||||
if (hasSun)
|
||||
weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 });
|
||||
break;
|
||||
}
|
||||
|
||||
if (weatherPool.length > 1) {
|
||||
|
@ -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;
|
||||
|
@ -377,4 +377,4 @@ export function getRandomWeatherType(arena: any /* Importing from arena causes a
|
|||
return weatherPool.length
|
||||
? weatherPool[0].weatherType
|
||||
: WeatherType.NONE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,4 +10,4 @@ export function getSession() {
|
|||
if (!sessionStr)
|
||||
return null;
|
||||
return JSON.parse(atob(sessionStr));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
@ -366,34 +366,34 @@ export class EggHatchPhase extends Phase {
|
|||
let maxStarterValue: integer;
|
||||
|
||||
switch (this.egg.tier) {
|
||||
case EggTier.GREAT:
|
||||
minStarterValue = 4;
|
||||
maxStarterValue = 5;
|
||||
break;
|
||||
case EggTier.ULTRA:
|
||||
minStarterValue = 6;
|
||||
maxStarterValue = 7;
|
||||
break;
|
||||
case EggTier.MASTER:
|
||||
minStarterValue = 8;
|
||||
maxStarterValue = 9;
|
||||
break;
|
||||
default:
|
||||
minStarterValue = 1;
|
||||
maxStarterValue = 3;
|
||||
break;
|
||||
case EggTier.GREAT:
|
||||
minStarterValue = 4;
|
||||
maxStarterValue = 5;
|
||||
break;
|
||||
case EggTier.ULTRA:
|
||||
minStarterValue = 6;
|
||||
maxStarterValue = 7;
|
||||
break;
|
||||
case EggTier.MASTER:
|
||||
minStarterValue = 8;
|
||||
maxStarterValue = 9;
|
||||
break;
|
||||
default:
|
||||
minStarterValue = 1;
|
||||
maxStarterValue = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
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())
|
||||
|
@ -434,4 +434,4 @@ export class EggHatchPhase extends Phase {
|
|||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
export enum UiTheme {
|
||||
DEFAULT,
|
||||
LEGACY
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
@ -522,4 +522,4 @@ export class EndEvolutionPhase extends Phase {
|
|||
|
||||
this.scene.ui.setModeForceTransition(Mode.MESSAGE).then(() => this.end());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
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) {
|
||||
case PokeballType.POKEBALL:
|
||||
doDefaultPbOpenParticles(scene, x, y, 48);
|
||||
break;
|
||||
case PokeballType.GREAT_BALL:
|
||||
doDefaultPbOpenParticles(scene, x, y, 96);
|
||||
break;
|
||||
case PokeballType.ULTRA_BALL:
|
||||
doUbOpenParticles(scene, x, y, 8);
|
||||
break;
|
||||
case PokeballType.ROGUE_BALL:
|
||||
doUbOpenParticles(scene, x, y, 10);
|
||||
break;
|
||||
case PokeballType.MASTER_BALL:
|
||||
doMbOpenParticles(scene, x, y);
|
||||
break;
|
||||
case PokeballType.POKEBALL:
|
||||
doDefaultPbOpenParticles(scene, x, y, 48);
|
||||
break;
|
||||
case PokeballType.GREAT_BALL:
|
||||
doDefaultPbOpenParticles(scene, x, y, 96);
|
||||
break;
|
||||
case PokeballType.ULTRA_BALL:
|
||||
doUbOpenParticles(scene, x, y, 8);
|
||||
break;
|
||||
case PokeballType.ROGUE_BALL:
|
||||
doUbOpenParticles(scene, x, y, 10);
|
||||
break;
|
||||
case PokeballType.MASTER_BALL:
|
||||
doMbOpenParticles(scene, x, y);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
});
|
||||
|
@ -177,4 +177,4 @@ export function sin(index: integer, amplitude: integer): number {
|
|||
|
||||
export function cos(index: integer, amplitude: integer): number {
|
||||
return amplitude * Math.cos(index * (Math.PI / 128));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
@ -108,18 +108,18 @@ export class Arena {
|
|||
|
||||
if (ret.subLegendary || ret.legendary || ret.mythical) {
|
||||
switch (true) {
|
||||
case (ret.baseTotal >= 720):
|
||||
regen = level < 90;
|
||||
break;
|
||||
case (ret.baseTotal >= 670):
|
||||
regen = level < 70;
|
||||
break;
|
||||
case (ret.baseTotal >= 580):
|
||||
regen = level < 50;
|
||||
break;
|
||||
default:
|
||||
regen = level < 30;
|
||||
break;
|
||||
case (ret.baseTotal >= 720):
|
||||
regen = level < 90;
|
||||
break;
|
||||
case (ret.baseTotal >= 670):
|
||||
regen = level < 70;
|
||||
break;
|
||||
case (ret.baseTotal >= 580):
|
||||
regen = level < 50;
|
||||
break;
|
||||
default:
|
||||
regen = level < 30;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -156,41 +156,41 @@ export class Arena {
|
|||
|
||||
getSpeciesFormIndex(species: PokemonSpecies): integer {
|
||||
switch (species.speciesId) {
|
||||
case Species.BURMY:
|
||||
case Species.WORMADAM:
|
||||
switch (this.biomeType) {
|
||||
case Biome.BEACH:
|
||||
return 1;
|
||||
case Biome.SLUM:
|
||||
return 2;
|
||||
}
|
||||
break;
|
||||
case Species.ROTOM:
|
||||
switch (this.biomeType) {
|
||||
case Biome.VOLCANO:
|
||||
return 1;
|
||||
case Biome.SEA:
|
||||
return 2;
|
||||
case Biome.ICE_CAVE:
|
||||
return 3;
|
||||
case Biome.MOUNTAIN:
|
||||
return 4;
|
||||
case Biome.TALL_GRASS:
|
||||
return 5;
|
||||
}
|
||||
break;
|
||||
case Species.LYCANROC:
|
||||
const timeOfDay = this.getTimeOfDay();
|
||||
switch (timeOfDay) {
|
||||
case TimeOfDay.DAY:
|
||||
case TimeOfDay.DAWN:
|
||||
return 0;
|
||||
case TimeOfDay.DUSK:
|
||||
return 2;
|
||||
case TimeOfDay.NIGHT:
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case Species.BURMY:
|
||||
case Species.WORMADAM:
|
||||
switch (this.biomeType) {
|
||||
case Biome.BEACH:
|
||||
return 1;
|
||||
case Biome.SLUM:
|
||||
return 2;
|
||||
}
|
||||
break;
|
||||
case Species.ROTOM:
|
||||
switch (this.biomeType) {
|
||||
case Biome.VOLCANO:
|
||||
return 1;
|
||||
case Biome.SEA:
|
||||
return 2;
|
||||
case Biome.ICE_CAVE:
|
||||
return 3;
|
||||
case Biome.MOUNTAIN:
|
||||
return 4;
|
||||
case Biome.TALL_GRASS:
|
||||
return 5;
|
||||
}
|
||||
break;
|
||||
case Species.LYCANROC:
|
||||
const timeOfDay = this.getTimeOfDay();
|
||||
switch (timeOfDay) {
|
||||
case TimeOfDay.DAY:
|
||||
case TimeOfDay.DAWN:
|
||||
return 0;
|
||||
case TimeOfDay.DUSK:
|
||||
return 2;
|
||||
case TimeOfDay.NIGHT:
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -198,70 +198,70 @@ export class Arena {
|
|||
|
||||
getTypeForBiome() {
|
||||
switch (this.biomeType) {
|
||||
case Biome.TOWN:
|
||||
case Biome.PLAINS:
|
||||
case Biome.METROPOLIS:
|
||||
return Type.NORMAL;
|
||||
case Biome.GRASS:
|
||||
case Biome.TALL_GRASS:
|
||||
return Type.GRASS;
|
||||
case Biome.FOREST:
|
||||
case Biome.JUNGLE:
|
||||
return Type.BUG;
|
||||
case Biome.SLUM:
|
||||
case Biome.SWAMP:
|
||||
return Type.POISON;
|
||||
case Biome.SEA:
|
||||
case Biome.BEACH:
|
||||
case Biome.LAKE:
|
||||
case Biome.SEABED:
|
||||
return Type.WATER;
|
||||
case Biome.MOUNTAIN:
|
||||
return Type.FLYING;
|
||||
case Biome.BADLANDS:
|
||||
return Type.GROUND;
|
||||
case Biome.CAVE:
|
||||
case Biome.DESERT:
|
||||
return Type.ROCK;
|
||||
case Biome.ICE_CAVE:
|
||||
case Biome.SNOWY_FOREST:
|
||||
return Type.ICE;
|
||||
case Biome.MEADOW:
|
||||
case Biome.FAIRY_CAVE:
|
||||
case Biome.ISLAND:
|
||||
return Type.FAIRY;
|
||||
case Biome.POWER_PLANT:
|
||||
return Type.ELECTRIC;
|
||||
case Biome.VOLCANO:
|
||||
return Type.FIRE;
|
||||
case Biome.GRAVEYARD:
|
||||
case Biome.TEMPLE:
|
||||
return Type.GHOST;
|
||||
case Biome.DOJO:
|
||||
case Biome.CONSTRUCTION_SITE:
|
||||
return Type.FIGHTING;
|
||||
case Biome.FACTORY:
|
||||
case Biome.LABORATORY:
|
||||
return Type.STEEL;
|
||||
case Biome.RUINS:
|
||||
case Biome.SPACE:
|
||||
return Type.PSYCHIC;
|
||||
case Biome.WASTELAND:
|
||||
case Biome.END:
|
||||
return Type.DRAGON;
|
||||
case Biome.ABYSS:
|
||||
return Type.DARK;
|
||||
default:
|
||||
return Type.UNKNOWN;
|
||||
case Biome.TOWN:
|
||||
case Biome.PLAINS:
|
||||
case Biome.METROPOLIS:
|
||||
return Type.NORMAL;
|
||||
case Biome.GRASS:
|
||||
case Biome.TALL_GRASS:
|
||||
return Type.GRASS;
|
||||
case Biome.FOREST:
|
||||
case Biome.JUNGLE:
|
||||
return Type.BUG;
|
||||
case Biome.SLUM:
|
||||
case Biome.SWAMP:
|
||||
return Type.POISON;
|
||||
case Biome.SEA:
|
||||
case Biome.BEACH:
|
||||
case Biome.LAKE:
|
||||
case Biome.SEABED:
|
||||
return Type.WATER;
|
||||
case Biome.MOUNTAIN:
|
||||
return Type.FLYING;
|
||||
case Biome.BADLANDS:
|
||||
return Type.GROUND;
|
||||
case Biome.CAVE:
|
||||
case Biome.DESERT:
|
||||
return Type.ROCK;
|
||||
case Biome.ICE_CAVE:
|
||||
case Biome.SNOWY_FOREST:
|
||||
return Type.ICE;
|
||||
case Biome.MEADOW:
|
||||
case Biome.FAIRY_CAVE:
|
||||
case Biome.ISLAND:
|
||||
return Type.FAIRY;
|
||||
case Biome.POWER_PLANT:
|
||||
return Type.ELECTRIC;
|
||||
case Biome.VOLCANO:
|
||||
return Type.FIRE;
|
||||
case Biome.GRAVEYARD:
|
||||
case Biome.TEMPLE:
|
||||
return Type.GHOST;
|
||||
case Biome.DOJO:
|
||||
case Biome.CONSTRUCTION_SITE:
|
||||
return Type.FIGHTING;
|
||||
case Biome.FACTORY:
|
||||
case Biome.LABORATORY:
|
||||
return Type.STEEL;
|
||||
case Biome.RUINS:
|
||||
case Biome.SPACE:
|
||||
return Type.PSYCHIC;
|
||||
case Biome.WASTELAND:
|
||||
case Biome.END:
|
||||
return Type.DRAGON;
|
||||
case Biome.ABYSS:
|
||||
return Type.DARK;
|
||||
default:
|
||||
return Type.UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
getBgTerrainColorRatioForBiome(): number {
|
||||
switch (this.biomeType) {
|
||||
case Biome.SPACE:
|
||||
return 1;
|
||||
case Biome.END:
|
||||
return 0;
|
||||
case Biome.SPACE:
|
||||
return 1;
|
||||
case Biome.END:
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 131 / 180;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -362,52 +362,52 @@ export class Arena {
|
|||
|
||||
getTrainerChance(): integer {
|
||||
switch (this.biomeType) {
|
||||
case Biome.METROPOLIS:
|
||||
return 2;
|
||||
case Biome.SLUM:
|
||||
case Biome.BEACH:
|
||||
case Biome.DOJO:
|
||||
case Biome.CONSTRUCTION_SITE:
|
||||
return 4;
|
||||
case Biome.PLAINS:
|
||||
case Biome.GRASS:
|
||||
case Biome.LAKE:
|
||||
case Biome.CAVE:
|
||||
return 6;
|
||||
case Biome.TALL_GRASS:
|
||||
case Biome.FOREST:
|
||||
case Biome.SEA:
|
||||
case Biome.SWAMP:
|
||||
case Biome.MOUNTAIN:
|
||||
case Biome.BADLANDS:
|
||||
case Biome.DESERT:
|
||||
case Biome.MEADOW:
|
||||
case Biome.POWER_PLANT:
|
||||
case Biome.GRAVEYARD:
|
||||
case Biome.FACTORY:
|
||||
case Biome.SNOWY_FOREST:
|
||||
return 8;
|
||||
case Biome.ICE_CAVE:
|
||||
case Biome.VOLCANO:
|
||||
case Biome.RUINS:
|
||||
case Biome.WASTELAND:
|
||||
case Biome.JUNGLE:
|
||||
case Biome.FAIRY_CAVE:
|
||||
return 12;
|
||||
case Biome.SEABED:
|
||||
case Biome.ABYSS:
|
||||
case Biome.SPACE:
|
||||
case Biome.TEMPLE:
|
||||
return 16;
|
||||
default:
|
||||
return 0;
|
||||
case Biome.METROPOLIS:
|
||||
return 2;
|
||||
case Biome.SLUM:
|
||||
case Biome.BEACH:
|
||||
case Biome.DOJO:
|
||||
case Biome.CONSTRUCTION_SITE:
|
||||
return 4;
|
||||
case Biome.PLAINS:
|
||||
case Biome.GRASS:
|
||||
case Biome.LAKE:
|
||||
case Biome.CAVE:
|
||||
return 6;
|
||||
case Biome.TALL_GRASS:
|
||||
case Biome.FOREST:
|
||||
case Biome.SEA:
|
||||
case Biome.SWAMP:
|
||||
case Biome.MOUNTAIN:
|
||||
case Biome.BADLANDS:
|
||||
case Biome.DESERT:
|
||||
case Biome.MEADOW:
|
||||
case Biome.POWER_PLANT:
|
||||
case Biome.GRAVEYARD:
|
||||
case Biome.FACTORY:
|
||||
case Biome.SNOWY_FOREST:
|
||||
return 8;
|
||||
case Biome.ICE_CAVE:
|
||||
case Biome.VOLCANO:
|
||||
case Biome.RUINS:
|
||||
case Biome.WASTELAND:
|
||||
case Biome.JUNGLE:
|
||||
case Biome.FAIRY_CAVE:
|
||||
return 12;
|
||||
case Biome.SEABED:
|
||||
case Biome.ABYSS:
|
||||
case Biome.SPACE:
|
||||
case Biome.TEMPLE:
|
||||
return 16;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
getTimeOfDay(): TimeOfDay {
|
||||
switch (this.biomeType) {
|
||||
case Biome.ABYSS:
|
||||
return TimeOfDay.NIGHT;
|
||||
case Biome.ABYSS:
|
||||
return TimeOfDay.NIGHT;
|
||||
}
|
||||
|
||||
const waveCycle = ((this.scene.currentBattle?.waveIndex || 0) + this.scene.waveCycleOffset) % 40;
|
||||
|
@ -426,28 +426,28 @@ export class Arena {
|
|||
|
||||
isOutside(): boolean {
|
||||
switch (this.biomeType) {
|
||||
case Biome.SEABED:
|
||||
case Biome.CAVE:
|
||||
case Biome.ICE_CAVE:
|
||||
case Biome.POWER_PLANT:
|
||||
case Biome.DOJO:
|
||||
case Biome.FACTORY:
|
||||
case Biome.ABYSS:
|
||||
case Biome.FAIRY_CAVE:
|
||||
case Biome.TEMPLE:
|
||||
case Biome.LABORATORY:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
case Biome.SEABED:
|
||||
case Biome.CAVE:
|
||||
case Biome.ICE_CAVE:
|
||||
case Biome.POWER_PLANT:
|
||||
case Biome.DOJO:
|
||||
case Biome.FACTORY:
|
||||
case Biome.ABYSS:
|
||||
case Biome.FAIRY_CAVE:
|
||||
case Biome.TEMPLE:
|
||||
case Biome.LABORATORY:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
getDayTint(): [integer, integer, integer] {
|
||||
switch (this.biomeType) {
|
||||
case Biome.ABYSS:
|
||||
return [ 64, 64, 64 ];
|
||||
default:
|
||||
return [ 128, 128, 128 ];
|
||||
case Biome.ABYSS:
|
||||
return [ 64, 64, 64 ];
|
||||
default:
|
||||
return [ 128, 128, 128 ];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -456,25 +456,25 @@ export class Arena {
|
|||
return [ 0, 0, 0 ];
|
||||
|
||||
switch (this.biomeType) {
|
||||
default:
|
||||
return [ 98, 48, 73 ].map(c => Math.round((c + 128) / 2)) as [integer, integer, integer];
|
||||
default:
|
||||
return [ 98, 48, 73 ].map(c => Math.round((c + 128) / 2)) as [integer, integer, integer];
|
||||
}
|
||||
}
|
||||
|
||||
getNightTint(): [integer, integer, integer] {
|
||||
switch (this.biomeType) {
|
||||
case Biome.ABYSS:
|
||||
case Biome.SPACE:
|
||||
case Biome.END:
|
||||
return this.getDayTint();
|
||||
case Biome.ABYSS:
|
||||
case Biome.SPACE:
|
||||
case Biome.END:
|
||||
return this.getDayTint();
|
||||
}
|
||||
|
||||
if (!this.isOutside())
|
||||
return [ 64, 64, 64 ];
|
||||
|
||||
switch (this.biomeType) {
|
||||
default:
|
||||
return [ 48, 48, 98 ];
|
||||
default:
|
||||
return [ 48, 48, 98 ];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -489,11 +489,11 @@ export class Arena {
|
|||
if (side !== ArenaTagSide.BOTH)
|
||||
tags = tags.filter(t => t.side === side);
|
||||
tags.forEach(t => t.apply(this, args));
|
||||
}
|
||||
}
|
||||
|
||||
applyTags(tagType: ArenaTagType | { new(...args: any[]): ArenaTag }, ...args: any[]): void {
|
||||
this.applyTagsForSide(tagType, ArenaTagSide.BOTH, ...args);
|
||||
}
|
||||
}
|
||||
|
||||
addTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves, sourceId: integer, side: ArenaTagSide = ArenaTagSide.BOTH, targetIndex?: BattlerIndex): boolean {
|
||||
const existingTag = this.getTagOnSide(tagType, side);
|
||||
|
@ -567,74 +567,74 @@ export class Arena {
|
|||
|
||||
getBgmLoopPoint(): number {
|
||||
switch (this.biomeType) {
|
||||
case Biome.TOWN:
|
||||
return 7.288;
|
||||
case Biome.PLAINS:
|
||||
return 7.693;
|
||||
case Biome.GRASS:
|
||||
return 1.995;
|
||||
case Biome.TALL_GRASS:
|
||||
return 9.608;
|
||||
case Biome.METROPOLIS:
|
||||
return 141.470;
|
||||
case Biome.FOREST:
|
||||
return 4.294;
|
||||
case Biome.SEA:
|
||||
return 1.672;
|
||||
case Biome.SWAMP:
|
||||
return 4.461;
|
||||
case Biome.BEACH:
|
||||
return 3.462;
|
||||
case Biome.LAKE:
|
||||
return 5.350;
|
||||
case Biome.SEABED:
|
||||
return 2.629;
|
||||
case Biome.MOUNTAIN:
|
||||
return 4.018;
|
||||
case Biome.BADLANDS:
|
||||
return 17.790;
|
||||
case Biome.CAVE:
|
||||
return 14.240;
|
||||
case Biome.DESERT:
|
||||
return 1.143;
|
||||
case Biome.ICE_CAVE:
|
||||
return 15.010;
|
||||
case Biome.MEADOW:
|
||||
return 3.891;
|
||||
case Biome.POWER_PLANT:
|
||||
return 2.810;
|
||||
case Biome.VOLCANO:
|
||||
return 5.116;
|
||||
case Biome.GRAVEYARD:
|
||||
return 3.232;
|
||||
case Biome.DOJO:
|
||||
return 6.205;
|
||||
case Biome.FACTORY:
|
||||
return 4.985;
|
||||
case Biome.RUINS:
|
||||
return 2.270;
|
||||
case Biome.WASTELAND:
|
||||
return 6.336;
|
||||
case Biome.ABYSS:
|
||||
return 5.130;
|
||||
case Biome.SPACE:
|
||||
return 21.347;
|
||||
case Biome.CONSTRUCTION_SITE:
|
||||
return 1.222;
|
||||
case Biome.JUNGLE:
|
||||
return 0.000;
|
||||
case Biome.FAIRY_CAVE:
|
||||
return 4.542;
|
||||
case Biome.TEMPLE:
|
||||
return 2.547;
|
||||
case Biome.ISLAND:
|
||||
return 2.751;
|
||||
case Biome.LABORATORY:
|
||||
return 114.862;
|
||||
case Biome.SLUM:
|
||||
return 1.221;
|
||||
case Biome.SNOWY_FOREST:
|
||||
return 3.047;
|
||||
case Biome.TOWN:
|
||||
return 7.288;
|
||||
case Biome.PLAINS:
|
||||
return 7.693;
|
||||
case Biome.GRASS:
|
||||
return 1.995;
|
||||
case Biome.TALL_GRASS:
|
||||
return 9.608;
|
||||
case Biome.METROPOLIS:
|
||||
return 141.470;
|
||||
case Biome.FOREST:
|
||||
return 4.294;
|
||||
case Biome.SEA:
|
||||
return 1.672;
|
||||
case Biome.SWAMP:
|
||||
return 4.461;
|
||||
case Biome.BEACH:
|
||||
return 3.462;
|
||||
case Biome.LAKE:
|
||||
return 5.350;
|
||||
case Biome.SEABED:
|
||||
return 2.629;
|
||||
case Biome.MOUNTAIN:
|
||||
return 4.018;
|
||||
case Biome.BADLANDS:
|
||||
return 17.790;
|
||||
case Biome.CAVE:
|
||||
return 14.240;
|
||||
case Biome.DESERT:
|
||||
return 1.143;
|
||||
case Biome.ICE_CAVE:
|
||||
return 15.010;
|
||||
case Biome.MEADOW:
|
||||
return 3.891;
|
||||
case Biome.POWER_PLANT:
|
||||
return 2.810;
|
||||
case Biome.VOLCANO:
|
||||
return 5.116;
|
||||
case Biome.GRAVEYARD:
|
||||
return 3.232;
|
||||
case Biome.DOJO:
|
||||
return 6.205;
|
||||
case Biome.FACTORY:
|
||||
return 4.985;
|
||||
case Biome.RUINS:
|
||||
return 2.270;
|
||||
case Biome.WASTELAND:
|
||||
return 6.336;
|
||||
case Biome.ABYSS:
|
||||
return 5.130;
|
||||
case Biome.SPACE:
|
||||
return 21.347;
|
||||
case Biome.CONSTRUCTION_SITE:
|
||||
return 1.222;
|
||||
case Biome.JUNGLE:
|
||||
return 0.000;
|
||||
case Biome.FAIRY_CAVE:
|
||||
return 4.542;
|
||||
case Biome.TEMPLE:
|
||||
return 2.547;
|
||||
case Biome.ISLAND:
|
||||
return 2.751;
|
||||
case Biome.LABORATORY:
|
||||
return 114.862;
|
||||
case Biome.SLUM:
|
||||
return 1.221;
|
||||
case Biome.SNOWY_FOREST:
|
||||
return 3.047;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -645,32 +645,32 @@ export function getBiomeKey(biome: Biome): string {
|
|||
|
||||
export function getBiomeHasProps(biomeType: Biome): boolean {
|
||||
switch (biomeType) {
|
||||
case Biome.METROPOLIS:
|
||||
case Biome.BEACH:
|
||||
case Biome.LAKE:
|
||||
case Biome.SEABED:
|
||||
case Biome.MOUNTAIN:
|
||||
case Biome.BADLANDS:
|
||||
case Biome.CAVE:
|
||||
case Biome.DESERT:
|
||||
case Biome.ICE_CAVE:
|
||||
case Biome.MEADOW:
|
||||
case Biome.POWER_PLANT:
|
||||
case Biome.VOLCANO:
|
||||
case Biome.GRAVEYARD:
|
||||
case Biome.FACTORY:
|
||||
case Biome.RUINS:
|
||||
case Biome.WASTELAND:
|
||||
case Biome.ABYSS:
|
||||
case Biome.CONSTRUCTION_SITE:
|
||||
case Biome.JUNGLE:
|
||||
case Biome.FAIRY_CAVE:
|
||||
case Biome.TEMPLE:
|
||||
case Biome.SNOWY_FOREST:
|
||||
case Biome.ISLAND:
|
||||
case Biome.LABORATORY:
|
||||
case Biome.END:
|
||||
return true;
|
||||
case Biome.METROPOLIS:
|
||||
case Biome.BEACH:
|
||||
case Biome.LAKE:
|
||||
case Biome.SEABED:
|
||||
case Biome.MOUNTAIN:
|
||||
case Biome.BADLANDS:
|
||||
case Biome.CAVE:
|
||||
case Biome.DESERT:
|
||||
case Biome.ICE_CAVE:
|
||||
case Biome.MEADOW:
|
||||
case Biome.POWER_PLANT:
|
||||
case Biome.VOLCANO:
|
||||
case Biome.GRAVEYARD:
|
||||
case Biome.FACTORY:
|
||||
case Biome.RUINS:
|
||||
case Biome.WASTELAND:
|
||||
case Biome.ABYSS:
|
||||
case Biome.CONSTRUCTION_SITE:
|
||||
case Biome.JUNGLE:
|
||||
case Biome.FAIRY_CAVE:
|
||||
case Biome.TEMPLE:
|
||||
case Biome.SNOWY_FOREST:
|
||||
case Biome.ISLAND:
|
||||
case Biome.LABORATORY:
|
||||
case Biome.END:
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -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,
|
||||
|
@ -750,4 +750,4 @@ export class ArenaBase extends Phaser.GameObjects.Container {
|
|||
}, (this.scene as BattleScene).currentBattle?.waveIndex || 0, (this.scene as BattleScene).waveSeed);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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[]>;
|
||||
|
@ -25,21 +25,21 @@ export default class DamageNumberHandler {
|
|||
let [ textColor, shadowColor ] = [ null, null ];
|
||||
|
||||
switch (result) {
|
||||
case HitResult.SUPER_EFFECTIVE:
|
||||
[ textColor, shadowColor ] = [ '#f8d030', '#b8a038' ];
|
||||
break;
|
||||
case HitResult.NOT_VERY_EFFECTIVE:
|
||||
[ textColor, shadowColor ] = [ '#f08030', '#c03028' ];
|
||||
break;
|
||||
case HitResult.ONE_HIT_KO:
|
||||
[ textColor, shadowColor ] = [ '#a040a0', '#483850' ];
|
||||
break;
|
||||
case HitResult.HEAL:
|
||||
[ textColor, shadowColor ] = [ '#78c850', '#588040' ];
|
||||
break;
|
||||
default:
|
||||
[ textColor, shadowColor ] = [ '#ffffff', '#636363' ];
|
||||
break;
|
||||
case HitResult.SUPER_EFFECTIVE:
|
||||
[ textColor, shadowColor ] = [ '#f8d030', '#b8a038' ];
|
||||
break;
|
||||
case HitResult.NOT_VERY_EFFECTIVE:
|
||||
[ textColor, shadowColor ] = [ '#f08030', '#c03028' ];
|
||||
break;
|
||||
case HitResult.ONE_HIT_KO:
|
||||
[ textColor, shadowColor ] = [ '#a040a0', '#483850' ];
|
||||
break;
|
||||
case HitResult.HEAL:
|
||||
[ textColor, shadowColor ] = [ '#78c850', '#588040' ];
|
||||
break;
|
||||
default:
|
||||
[ textColor, shadowColor ] = [ '#ffffff', '#636363' ];
|
||||
break;
|
||||
}
|
||||
|
||||
if (textColor)
|
||||
|
@ -168,4 +168,4 @@ export default class DamageNumberHandler {
|
|||
]
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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,
|
||||
|
@ -49,14 +49,14 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
|||
}
|
||||
|
||||
switch (this.variant) {
|
||||
case TrainerVariant.FEMALE:
|
||||
if (!this.config.hasGenders)
|
||||
variant = TrainerVariant.DEFAULT;
|
||||
break;
|
||||
case TrainerVariant.DOUBLE:
|
||||
if (!this.config.hasDouble)
|
||||
variant = TrainerVariant.DEFAULT;
|
||||
break;
|
||||
case TrainerVariant.FEMALE:
|
||||
if (!this.config.hasGenders)
|
||||
variant = TrainerVariant.DEFAULT;
|
||||
break;
|
||||
case TrainerVariant.DOUBLE:
|
||||
if (!this.config.hasDouble)
|
||||
variant = TrainerVariant.DEFAULT;
|
||||
break;
|
||||
}
|
||||
|
||||
console.log(Object.keys(trainerPartyTemplates)[Object.values(trainerPartyTemplates).indexOf(this.getPartyTemplate())]);
|
||||
|
@ -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;
|
||||
|
@ -190,21 +190,21 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
|||
const strength = partyTemplate.getStrength(i);
|
||||
|
||||
switch (strength) {
|
||||
case PartyMemberStrength.WEAKER:
|
||||
multiplier = 0.95;
|
||||
break;
|
||||
case PartyMemberStrength.WEAK:
|
||||
multiplier = 1.0;
|
||||
break;
|
||||
case PartyMemberStrength.AVERAGE:
|
||||
multiplier = 1.1;
|
||||
break;
|
||||
case PartyMemberStrength.STRONG:
|
||||
multiplier = 1.2;
|
||||
break;
|
||||
case PartyMemberStrength.STRONGER:
|
||||
multiplier = 1.25;
|
||||
break;
|
||||
case PartyMemberStrength.WEAKER:
|
||||
multiplier = 0.95;
|
||||
break;
|
||||
case PartyMemberStrength.WEAK:
|
||||
multiplier = 1.0;
|
||||
break;
|
||||
case PartyMemberStrength.AVERAGE:
|
||||
multiplier = 1.1;
|
||||
break;
|
||||
case PartyMemberStrength.STRONG:
|
||||
multiplier = 1.2;
|
||||
break;
|
||||
case PartyMemberStrength.STRONGER:
|
||||
multiplier = 1.25;
|
||||
break;
|
||||
}
|
||||
|
||||
let levelOffset = 0;
|
||||
|
@ -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;
|
||||
|
@ -366,16 +366,16 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
|||
|
||||
getPartyMemberModifierChanceMultiplier(index: integer): number {
|
||||
switch (this.getPartyTemplate().getStrength(index)) {
|
||||
case PartyMemberStrength.WEAKER:
|
||||
return 0.75;
|
||||
case PartyMemberStrength.WEAK:
|
||||
return 0.675;
|
||||
case PartyMemberStrength.AVERAGE:
|
||||
return 0.5625;
|
||||
case PartyMemberStrength.STRONG:
|
||||
return 0.45;
|
||||
case PartyMemberStrength.STRONGER:
|
||||
return 0.375;
|
||||
case PartyMemberStrength.WEAKER:
|
||||
return 0.75;
|
||||
case PartyMemberStrength.WEAK:
|
||||
return 0.675;
|
||||
case PartyMemberStrength.AVERAGE:
|
||||
return 0.5625;
|
||||
case PartyMemberStrength.STRONG:
|
||||
return 0.45;
|
||||
case PartyMemberStrength.STRONGER:
|
||||
return 0.375;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -507,4 +507,4 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
|||
|
||||
export default interface Trainer {
|
||||
scene: BattleScene
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() ];
|
||||
|
||||
|
@ -288,4 +288,4 @@ export class QuietFormChangePhase extends BattlePhase {
|
|||
|
||||
super.end();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
@ -55,10 +55,10 @@ export class GameMode implements GameModeConfig {
|
|||
if (Overrides.STARTING_LEVEL_OVERRIDE)
|
||||
return Overrides.STARTING_LEVEL_OVERRIDE;
|
||||
switch (this.modeId) {
|
||||
case GameModes.DAILY:
|
||||
return 20;
|
||||
default:
|
||||
return 5;
|
||||
case GameModes.DAILY:
|
||||
return 20;
|
||||
default:
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -80,19 +80,19 @@ export class GameMode implements GameModeConfig {
|
|||
*/
|
||||
getStartingBiome(scene: BattleScene): Biome {
|
||||
switch (this.modeId) {
|
||||
case GameModes.DAILY:
|
||||
return scene.generateRandomBiome(this.getWaveForDifficulty(1));
|
||||
default:
|
||||
return Overrides.STARTING_BIOME_OVERRIDE || Biome.TOWN;
|
||||
case GameModes.DAILY:
|
||||
return scene.generateRandomBiome(this.getWaveForDifficulty(1));
|
||||
default:
|
||||
return Overrides.STARTING_BIOME_OVERRIDE || Biome.TOWN;
|
||||
}
|
||||
}
|
||||
|
||||
getWaveForDifficulty(waveIndex: integer, ignoreCurveChanges: boolean = false): integer {
|
||||
switch (this.modeId) {
|
||||
case GameModes.DAILY:
|
||||
return waveIndex + 30 + (!ignoreCurveChanges ? Math.floor(waveIndex / 5) : 0);
|
||||
default:
|
||||
return waveIndex;
|
||||
case GameModes.DAILY:
|
||||
return waveIndex + 30 + (!ignoreCurveChanges ? Math.floor(waveIndex / 5) : 0);
|
||||
default:
|
||||
return waveIndex;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -130,10 +130,10 @@ export class GameMode implements GameModeConfig {
|
|||
|
||||
isTrainerBoss(waveIndex: integer, biomeType: Biome, offsetGym: boolean): boolean {
|
||||
switch (this.modeId) {
|
||||
case GameModes.DAILY:
|
||||
return waveIndex > 10 && waveIndex < 50 && !(waveIndex % 10);
|
||||
default:
|
||||
return (waveIndex % 30) === (offsetGym ? 0 : 20) && (biomeType !== Biome.END || this.isClassic || this.isWaveFinal(waveIndex));
|
||||
case GameModes.DAILY:
|
||||
return waveIndex > 10 && waveIndex < 50 && !(waveIndex % 10);
|
||||
default:
|
||||
return (waveIndex % 30) === (offsetGym ? 0 : 20) && (biomeType !== Biome.END || this.isClassic || this.isWaveFinal(waveIndex));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -149,46 +149,46 @@ export class GameMode implements GameModeConfig {
|
|||
|
||||
isWaveFinal(waveIndex: integer): boolean {
|
||||
switch (this.modeId) {
|
||||
case GameModes.CLASSIC:
|
||||
return waveIndex === 200;
|
||||
case GameModes.ENDLESS:
|
||||
case GameModes.SPLICED_ENDLESS:
|
||||
return !(waveIndex % 250);
|
||||
case GameModes.DAILY:
|
||||
return waveIndex === 50;
|
||||
case GameModes.CLASSIC:
|
||||
return waveIndex === 200;
|
||||
case GameModes.ENDLESS:
|
||||
case GameModes.SPLICED_ENDLESS:
|
||||
return !(waveIndex % 250);
|
||||
case GameModes.DAILY:
|
||||
return waveIndex === 50;
|
||||
}
|
||||
}
|
||||
|
||||
getClearScoreBonus(): integer {
|
||||
switch (this.modeId) {
|
||||
case GameModes.CLASSIC:
|
||||
return 5000;
|
||||
case GameModes.DAILY:
|
||||
return 2500;
|
||||
case GameModes.CLASSIC:
|
||||
return 5000;
|
||||
case GameModes.DAILY:
|
||||
return 2500;
|
||||
}
|
||||
}
|
||||
|
||||
getEnemyModifierChance(isBoss: boolean): integer {
|
||||
switch (this.modeId) {
|
||||
case GameModes.CLASSIC:
|
||||
case GameModes.DAILY:
|
||||
return !isBoss ? 18 : 6;
|
||||
case GameModes.ENDLESS:
|
||||
case GameModes.SPLICED_ENDLESS:
|
||||
return !isBoss ? 12 : 4;
|
||||
case GameModes.CLASSIC:
|
||||
case GameModes.DAILY:
|
||||
return !isBoss ? 18 : 6;
|
||||
case GameModes.ENDLESS:
|
||||
case GameModes.SPLICED_ENDLESS:
|
||||
return !isBoss ? 12 : 4;
|
||||
}
|
||||
}
|
||||
|
||||
getName(): string {
|
||||
switch (this.modeId) {
|
||||
case GameModes.CLASSIC:
|
||||
return 'Classic';
|
||||
case GameModes.ENDLESS:
|
||||
return 'Endless';
|
||||
case GameModes.SPLICED_ENDLESS:
|
||||
return 'Endless (Spliced)';
|
||||
case GameModes.DAILY:
|
||||
return 'Daily Run';
|
||||
case GameModes.CLASSIC:
|
||||
return 'Classic';
|
||||
case GameModes.ENDLESS:
|
||||
return 'Endless';
|
||||
case GameModes.SPLICED_ENDLESS:
|
||||
return 'Endless (Spliced)';
|
||||
case GameModes.DAILY:
|
||||
return 'Daily Run';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -198,4 +198,4 @@ export const gameModes = Object.freeze({
|
|||
[GameModes.ENDLESS]: new GameMode(GameModes.ENDLESS, { isEndless: true, hasShortBiomes: true, hasRandomBosses: true }),
|
||||
[GameModes.SPLICED_ENDLESS]: new GameMode(GameModes.SPLICED_ENDLESS, { isEndless: true, hasShortBiomes: true, hasRandomBosses: true, isSplicedOnly: true }),
|
||||
[GameModes.DAILY]: new GameMode(GameModes.DAILY, { isDaily: true, hasTrainers: true, hasNoShop: true })
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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;
|
||||
|
@ -46,19 +46,19 @@ const repeatInputDelayMillis = 250;
|
|||
* providing a unified interface for all input-related interactions.
|
||||
*/
|
||||
export class InputsController {
|
||||
private buttonKeys: Phaser.Input.Keyboard.Key[][];
|
||||
private gamepads: Array<string> = new Array();
|
||||
private scene: Phaser.Scene;
|
||||
private buttonKeys: Phaser.Input.Keyboard.Key[][];
|
||||
private gamepads: Array<string> = new Array();
|
||||
private scene: Phaser.Scene;
|
||||
|
||||
private buttonLock: Button;
|
||||
private buttonLock2: Button;
|
||||
private interactions: Map<Button, Map<string, boolean>> = new Map();
|
||||
private time: Time;
|
||||
private player: Map<String, GamepadMapping> = new Map();
|
||||
private buttonLock: Button;
|
||||
private buttonLock2: Button;
|
||||
private interactions: Map<Button, Map<string, boolean>> = new Map();
|
||||
private time: Time;
|
||||
private player: Map<String, GamepadMapping> = new Map();
|
||||
|
||||
private gamepadSupport: boolean = true;
|
||||
private gamepadSupport: boolean = true;
|
||||
|
||||
/**
|
||||
/**
|
||||
* Initializes a new instance of the game control system, setting up initial state and configurations.
|
||||
*
|
||||
* @param scene - The Phaser scene associated with this instance.
|
||||
|
@ -69,25 +69,25 @@ export class InputsController {
|
|||
* Specific buttons like MENU and STATS are set not to repeat their actions.
|
||||
* It concludes by calling the `init` method to complete the setup.
|
||||
*/
|
||||
constructor(scene: Phaser.Scene) {
|
||||
this.scene = scene;
|
||||
this.time = this.scene.time;
|
||||
this.buttonKeys = [];
|
||||
constructor(scene: Phaser.Scene) {
|
||||
this.scene = scene;
|
||||
this.time = this.scene.time;
|
||||
this.buttonKeys = [];
|
||||
|
||||
for (const b of Utils.getEnumValues(Button)) {
|
||||
this.interactions[b] = {
|
||||
pressTime: false,
|
||||
isPressed: false,
|
||||
source: null,
|
||||
}
|
||||
}
|
||||
// We don't want the menu key to be repeated
|
||||
delete this.interactions[Button.MENU];
|
||||
delete this.interactions[Button.STATS];
|
||||
this.init();
|
||||
for (const b of Utils.getEnumValues(Button)) {
|
||||
this.interactions[b] = {
|
||||
pressTime: false,
|
||||
isPressed: false,
|
||||
source: null,
|
||||
};
|
||||
}
|
||||
// We don't want the menu key to be repeated
|
||||
delete this.interactions[Button.MENU];
|
||||
delete this.interactions[Button.STATS];
|
||||
this.init();
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Sets up event handlers and initializes gamepad and keyboard controls.
|
||||
*
|
||||
* @remarks
|
||||
|
@ -95,46 +95,46 @@ export class InputsController {
|
|||
* It handles gamepad connections/disconnections and button press events, and ensures keyboard controls are set up.
|
||||
* Additionally, it manages the game's behavior when it loses focus to prevent unwanted game actions during this state.
|
||||
*/
|
||||
init(): void {
|
||||
this.events = new Phaser.Events.EventEmitter();
|
||||
this.scene.game.events.on(Phaser.Core.Events.BLUR, () => {
|
||||
this.loseFocus()
|
||||
})
|
||||
init(): void {
|
||||
this.events = new Phaser.Events.EventEmitter();
|
||||
this.scene.game.events.on(Phaser.Core.Events.BLUR, () => {
|
||||
this.loseFocus();
|
||||
});
|
||||
|
||||
if (typeof this.scene.input.gamepad !== 'undefined') {
|
||||
this.scene.input.gamepad.on('connected', function (thisGamepad) {
|
||||
this.refreshGamepads();
|
||||
this.setupGamepad(thisGamepad);
|
||||
}, this);
|
||||
if (typeof this.scene.input.gamepad !== 'undefined') {
|
||||
this.scene.input.gamepad.on('connected', function (thisGamepad) {
|
||||
this.refreshGamepads();
|
||||
this.setupGamepad(thisGamepad);
|
||||
}, this);
|
||||
|
||||
// Check to see if the gamepad has already been setup by the browser
|
||||
this.scene.input.gamepad.refreshPads();
|
||||
if (this.scene.input.gamepad.total) {
|
||||
this.refreshGamepads();
|
||||
for (const thisGamepad of this.gamepads) {
|
||||
this.scene.input.gamepad.emit('connected', thisGamepad);
|
||||
}
|
||||
}
|
||||
|
||||
this.scene.input.gamepad.on('down', this.gamepadButtonDown, this);
|
||||
this.scene.input.gamepad.on('up', this.gamepadButtonUp, this);
|
||||
// Check to see if the gamepad has already been setup by the browser
|
||||
this.scene.input.gamepad.refreshPads();
|
||||
if (this.scene.input.gamepad.total) {
|
||||
this.refreshGamepads();
|
||||
for (const thisGamepad of this.gamepads) {
|
||||
this.scene.input.gamepad.emit('connected', thisGamepad);
|
||||
}
|
||||
}
|
||||
|
||||
// Keyboard
|
||||
this.setupKeyboardControls();
|
||||
this.scene.input.gamepad.on('down', this.gamepadButtonDown, this);
|
||||
this.scene.input.gamepad.on('up', this.gamepadButtonUp, this);
|
||||
}
|
||||
|
||||
/**
|
||||
// Keyboard
|
||||
this.setupKeyboardControls();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles actions to take when the game loses focus, such as deactivating pressed keys.
|
||||
*
|
||||
* @remarks
|
||||
* This method is triggered when the game or the browser tab loses focus. It ensures that any keys pressed are deactivated to prevent stuck keys affecting gameplay when the game is not active.
|
||||
*/
|
||||
loseFocus(): void {
|
||||
this.deactivatePressedKey();
|
||||
}
|
||||
loseFocus(): void {
|
||||
this.deactivatePressedKey();
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Enables or disables support for gamepad input.
|
||||
*
|
||||
* @param value - A boolean indicating whether gamepad support should be enabled (true) or disabled (false).
|
||||
|
@ -142,17 +142,17 @@ export class InputsController {
|
|||
* @remarks
|
||||
* This method toggles gamepad support. If disabled, it also ensures that all currently pressed gamepad buttons are deactivated to avoid stuck inputs.
|
||||
*/
|
||||
setGamepadSupport(value: boolean): void {
|
||||
if (value) {
|
||||
this.gamepadSupport = true;
|
||||
} else {
|
||||
this.gamepadSupport = false;
|
||||
// if we disable the gamepad, we want to release every key pressed
|
||||
this.deactivatePressedKey();
|
||||
}
|
||||
setGamepadSupport(value: boolean): void {
|
||||
if (value) {
|
||||
this.gamepadSupport = true;
|
||||
} else {
|
||||
this.gamepadSupport = false;
|
||||
// if we disable the gamepad, we want to release every key pressed
|
||||
this.deactivatePressedKey();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Updates the interaction handling by processing input states.
|
||||
* This method gives priority to certain buttons by reversing the order in which they are checked.
|
||||
*
|
||||
|
@ -165,30 +165,30 @@ export class InputsController {
|
|||
* Special handling is applied if gamepad support is disabled but a gamepad source is still triggering inputs,
|
||||
* preventing potential infinite loops by removing the last processed movement time for the button.
|
||||
*/
|
||||
update(): void {
|
||||
for (const b of Utils.getEnumValues(Button).reverse()) {
|
||||
if (
|
||||
this.interactions.hasOwnProperty(b) &&
|
||||
update(): void {
|
||||
for (const b of Utils.getEnumValues(Button).reverse()) {
|
||||
if (
|
||||
this.interactions.hasOwnProperty(b) &&
|
||||
this.repeatInputDurationJustPassed(b) &&
|
||||
this.interactions[b].isPressed
|
||||
) {
|
||||
// Prevents repeating button interactions when gamepad support is disabled.
|
||||
if (!this.gamepadSupport && this.interactions[b].source === 'gamepad') {
|
||||
// Deletes the last interaction for a button if gamepad is disabled.
|
||||
this.delLastProcessedMovementTime(b);
|
||||
return;
|
||||
}
|
||||
// Emits an event for the button press.
|
||||
this.events.emit('input_down', {
|
||||
controller_type: this.interactions[b].source,
|
||||
button: b,
|
||||
});
|
||||
this.setLastProcessedMovementTime(b, this.interactions[b].source);
|
||||
}
|
||||
) {
|
||||
// Prevents repeating button interactions when gamepad support is disabled.
|
||||
if (!this.gamepadSupport && this.interactions[b].source === 'gamepad') {
|
||||
// Deletes the last interaction for a button if gamepad is disabled.
|
||||
this.delLastProcessedMovementTime(b);
|
||||
return;
|
||||
}
|
||||
// Emits an event for the button press.
|
||||
this.events.emit('input_down', {
|
||||
controller_type: this.interactions[b].source,
|
||||
button: b,
|
||||
});
|
||||
this.setLastProcessedMovementTime(b, this.interactions[b].source);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Configures a gamepad for use based on its device ID.
|
||||
*
|
||||
* @param thisGamepad - The gamepad to set up.
|
||||
|
@ -198,13 +198,13 @@ export class InputsController {
|
|||
* It updates the player's gamepad mapping based on the identified configuration, ensuring
|
||||
* that the gamepad controls are correctly mapped to in-game actions.
|
||||
*/
|
||||
setupGamepad(thisGamepad: Phaser.Input.Gamepad.Gamepad): void {
|
||||
let gamepadID = thisGamepad.id.toLowerCase();
|
||||
const mappedPad = this.mapGamepad(gamepadID);
|
||||
this.player['mapping'] = mappedPad.gamepadMapping;
|
||||
}
|
||||
setupGamepad(thisGamepad: Phaser.Input.Gamepad.Gamepad): void {
|
||||
const gamepadID = thisGamepad.id.toLowerCase();
|
||||
const mappedPad = this.mapGamepad(gamepadID);
|
||||
this.player['mapping'] = mappedPad.gamepadMapping;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Refreshes and re-indexes the list of connected gamepads.
|
||||
*
|
||||
* @remarks
|
||||
|
@ -212,18 +212,18 @@ export class InputsController {
|
|||
* It corrects the index of each gamepad to account for any previously undefined entries,
|
||||
* ensuring that all gamepads are properly indexed and can be accurately referenced within the game.
|
||||
*/
|
||||
refreshGamepads(): void {
|
||||
// Sometimes, gamepads are undefined. For some reason.
|
||||
this.gamepads = this.scene.input.gamepad.gamepads.filter(function (el) {
|
||||
return el != null;
|
||||
});
|
||||
refreshGamepads(): void {
|
||||
// Sometimes, gamepads are undefined. For some reason.
|
||||
this.gamepads = this.scene.input.gamepad.gamepads.filter(function (el) {
|
||||
return el != null;
|
||||
});
|
||||
|
||||
for (const [index, thisGamepad] of this.gamepads.entries()) {
|
||||
thisGamepad.index = index; // Overwrite the gamepad index, in case we had undefined gamepads earlier
|
||||
}
|
||||
for (const [index, thisGamepad] of this.gamepads.entries()) {
|
||||
thisGamepad.index = index; // Overwrite the gamepad index, in case we had undefined gamepads earlier
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Retrieves the current gamepad mapping for in-game actions.
|
||||
*
|
||||
* @returns An object mapping gamepad buttons to in-game actions based on the player's current gamepad configuration.
|
||||
|
@ -234,31 +234,31 @@ export class InputsController {
|
|||
* The mapping includes directional controls, action buttons, and system commands among others,
|
||||
* adjusted for any custom settings such as swapped action buttons.
|
||||
*/
|
||||
getActionGamepadMapping(): ActionGamepadMapping {
|
||||
const gamepadMapping = {};
|
||||
if (!this.player?.mapping) return gamepadMapping;
|
||||
gamepadMapping[this.player.mapping.LC_N] = Button.UP;
|
||||
gamepadMapping[this.player.mapping.LC_S] = Button.DOWN;
|
||||
gamepadMapping[this.player.mapping.LC_W] = Button.LEFT;
|
||||
gamepadMapping[this.player.mapping.LC_E] = Button.RIGHT;
|
||||
gamepadMapping[this.player.mapping.TOUCH] = Button.SUBMIT;
|
||||
gamepadMapping[this.player.mapping.RC_S] = this.scene.abSwapped ? Button.CANCEL : Button.ACTION;
|
||||
gamepadMapping[this.player.mapping.RC_E] = this.scene.abSwapped ? Button.ACTION : Button.CANCEL;
|
||||
gamepadMapping[this.player.mapping.SELECT] = Button.STATS;
|
||||
gamepadMapping[this.player.mapping.START] = Button.MENU;
|
||||
gamepadMapping[this.player.mapping.RB] = Button.CYCLE_SHINY;
|
||||
gamepadMapping[this.player.mapping.LB] = Button.CYCLE_FORM;
|
||||
gamepadMapping[this.player.mapping.LT] = Button.CYCLE_GENDER;
|
||||
gamepadMapping[this.player.mapping.RT] = Button.CYCLE_ABILITY;
|
||||
gamepadMapping[this.player.mapping.RC_W] = Button.CYCLE_NATURE;
|
||||
gamepadMapping[this.player.mapping.RC_N] = Button.CYCLE_VARIANT;
|
||||
gamepadMapping[this.player.mapping.LS] = Button.SPEED_UP;
|
||||
gamepadMapping[this.player.mapping.RS] = Button.SLOW_DOWN;
|
||||
getActionGamepadMapping(): ActionGamepadMapping {
|
||||
const gamepadMapping = {};
|
||||
if (!this.player?.mapping) return gamepadMapping;
|
||||
gamepadMapping[this.player.mapping.LC_N] = Button.UP;
|
||||
gamepadMapping[this.player.mapping.LC_S] = Button.DOWN;
|
||||
gamepadMapping[this.player.mapping.LC_W] = Button.LEFT;
|
||||
gamepadMapping[this.player.mapping.LC_E] = Button.RIGHT;
|
||||
gamepadMapping[this.player.mapping.TOUCH] = Button.SUBMIT;
|
||||
gamepadMapping[this.player.mapping.RC_S] = this.scene.abSwapped ? Button.CANCEL : Button.ACTION;
|
||||
gamepadMapping[this.player.mapping.RC_E] = this.scene.abSwapped ? Button.ACTION : Button.CANCEL;
|
||||
gamepadMapping[this.player.mapping.SELECT] = Button.STATS;
|
||||
gamepadMapping[this.player.mapping.START] = Button.MENU;
|
||||
gamepadMapping[this.player.mapping.RB] = Button.CYCLE_SHINY;
|
||||
gamepadMapping[this.player.mapping.LB] = Button.CYCLE_FORM;
|
||||
gamepadMapping[this.player.mapping.LT] = Button.CYCLE_GENDER;
|
||||
gamepadMapping[this.player.mapping.RT] = Button.CYCLE_ABILITY;
|
||||
gamepadMapping[this.player.mapping.RC_W] = Button.CYCLE_NATURE;
|
||||
gamepadMapping[this.player.mapping.RC_N] = Button.CYCLE_VARIANT;
|
||||
gamepadMapping[this.player.mapping.LS] = Button.SPEED_UP;
|
||||
gamepadMapping[this.player.mapping.RS] = Button.SLOW_DOWN;
|
||||
|
||||
return gamepadMapping;
|
||||
}
|
||||
return gamepadMapping;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles the 'down' event for gamepad buttons, emitting appropriate events and updating the interaction state.
|
||||
*
|
||||
* @param pad - The gamepad on which the button press occurred.
|
||||
|
@ -271,20 +271,20 @@ export class InputsController {
|
|||
* - Checks if the pressed button is mapped to a game action.
|
||||
* - If mapped, emits an 'input_down' event with the controller type and button action, and updates the interaction of this button.
|
||||
*/
|
||||
gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
|
||||
if (!this.gamepadSupport) return;
|
||||
const actionMapping = this.getActionGamepadMapping();
|
||||
const buttonDown = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index];
|
||||
if (buttonDown !== undefined) {
|
||||
this.events.emit('input_down', {
|
||||
controller_type: 'gamepad',
|
||||
button: buttonDown,
|
||||
});
|
||||
this.setLastProcessedMovementTime(buttonDown, 'gamepad');
|
||||
}
|
||||
gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
|
||||
if (!this.gamepadSupport) return;
|
||||
const actionMapping = this.getActionGamepadMapping();
|
||||
const buttonDown = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index];
|
||||
if (buttonDown !== undefined) {
|
||||
this.events.emit('input_down', {
|
||||
controller_type: 'gamepad',
|
||||
button: buttonDown,
|
||||
});
|
||||
this.setLastProcessedMovementTime(buttonDown, 'gamepad');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles the 'up' event for gamepad buttons, emitting appropriate events and clearing the interaction state.
|
||||
*
|
||||
* @param pad - The gamepad on which the button release occurred.
|
||||
|
@ -297,20 +297,20 @@ export class InputsController {
|
|||
* - Checks if the released button is mapped to a game action.
|
||||
* - If mapped, emits an 'input_up' event with the controller type and button action, and clears the interaction for this button.
|
||||
*/
|
||||
gamepadButtonUp(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
|
||||
if (!this.gamepadSupport) return;
|
||||
const actionMapping = this.getActionGamepadMapping();
|
||||
const buttonUp = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index];
|
||||
if (buttonUp !== undefined) {
|
||||
this.events.emit('input_up', {
|
||||
controller_type: 'gamepad',
|
||||
button: buttonUp,
|
||||
});
|
||||
this.delLastProcessedMovementTime(buttonUp);
|
||||
}
|
||||
gamepadButtonUp(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
|
||||
if (!this.gamepadSupport) return;
|
||||
const actionMapping = this.getActionGamepadMapping();
|
||||
const buttonUp = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index];
|
||||
if (buttonUp !== undefined) {
|
||||
this.events.emit('input_up', {
|
||||
controller_type: 'gamepad',
|
||||
button: buttonUp,
|
||||
});
|
||||
this.delLastProcessedMovementTime(buttonUp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Configures keyboard controls for the game, mapping physical keys to game actions.
|
||||
*
|
||||
* @remarks
|
||||
|
@ -328,43 +328,43 @@ export class InputsController {
|
|||
* Post-setup, it initializes touch controls (if applicable) and starts listening for keyboard inputs using
|
||||
* `listenInputKeyboard`, ensuring that all configured keys are actively monitored for player interactions.
|
||||
*/
|
||||
setupKeyboardControls(): void {
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
const keyConfig = {
|
||||
[Button.UP]: [keyCodes.UP, keyCodes.W],
|
||||
[Button.DOWN]: [keyCodes.DOWN, keyCodes.S],
|
||||
[Button.LEFT]: [keyCodes.LEFT, keyCodes.A],
|
||||
[Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D],
|
||||
[Button.SUBMIT]: [keyCodes.ENTER],
|
||||
[Button.ACTION]: [keyCodes.SPACE, keyCodes.Z],
|
||||
[Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X],
|
||||
[Button.MENU]: [keyCodes.ESC, keyCodes.M],
|
||||
[Button.STATS]: [keyCodes.SHIFT, keyCodes.C],
|
||||
[Button.CYCLE_SHINY]: [keyCodes.R],
|
||||
[Button.CYCLE_FORM]: [keyCodes.F],
|
||||
[Button.CYCLE_GENDER]: [keyCodes.G],
|
||||
[Button.CYCLE_ABILITY]: [keyCodes.E],
|
||||
[Button.CYCLE_NATURE]: [keyCodes.N],
|
||||
[Button.CYCLE_VARIANT]: [keyCodes.V],
|
||||
[Button.SPEED_UP]: [keyCodes.PLUS],
|
||||
[Button.SLOW_DOWN]: [keyCodes.MINUS]
|
||||
};
|
||||
const mobileKeyConfig = {};
|
||||
for (const b of Utils.getEnumValues(Button)) {
|
||||
const keys: Phaser.Input.Keyboard.Key[] = [];
|
||||
if (keyConfig.hasOwnProperty(b)) {
|
||||
for (let k of keyConfig[b])
|
||||
keys.push(this.scene.input.keyboard.addKey(k, false));
|
||||
mobileKeyConfig[Button[b]] = keys[0];
|
||||
}
|
||||
this.buttonKeys[b] = keys;
|
||||
}
|
||||
|
||||
initTouchControls(mobileKeyConfig);
|
||||
this.listenInputKeyboard();
|
||||
setupKeyboardControls(): void {
|
||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
||||
const keyConfig = {
|
||||
[Button.UP]: [keyCodes.UP, keyCodes.W],
|
||||
[Button.DOWN]: [keyCodes.DOWN, keyCodes.S],
|
||||
[Button.LEFT]: [keyCodes.LEFT, keyCodes.A],
|
||||
[Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D],
|
||||
[Button.SUBMIT]: [keyCodes.ENTER],
|
||||
[Button.ACTION]: [keyCodes.SPACE, keyCodes.Z],
|
||||
[Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X],
|
||||
[Button.MENU]: [keyCodes.ESC, keyCodes.M],
|
||||
[Button.STATS]: [keyCodes.SHIFT, keyCodes.C],
|
||||
[Button.CYCLE_SHINY]: [keyCodes.R],
|
||||
[Button.CYCLE_FORM]: [keyCodes.F],
|
||||
[Button.CYCLE_GENDER]: [keyCodes.G],
|
||||
[Button.CYCLE_ABILITY]: [keyCodes.E],
|
||||
[Button.CYCLE_NATURE]: [keyCodes.N],
|
||||
[Button.CYCLE_VARIANT]: [keyCodes.V],
|
||||
[Button.SPEED_UP]: [keyCodes.PLUS],
|
||||
[Button.SLOW_DOWN]: [keyCodes.MINUS]
|
||||
};
|
||||
const mobileKeyConfig = {};
|
||||
for (const b of Utils.getEnumValues(Button)) {
|
||||
const keys: Phaser.Input.Keyboard.Key[] = [];
|
||||
if (keyConfig.hasOwnProperty(b)) {
|
||||
for (const k of keyConfig[b])
|
||||
keys.push(this.scene.input.keyboard.addKey(k, false));
|
||||
mobileKeyConfig[Button[b]] = keys[0];
|
||||
}
|
||||
this.buttonKeys[b] = keys;
|
||||
}
|
||||
|
||||
/**
|
||||
initTouchControls(mobileKeyConfig);
|
||||
this.listenInputKeyboard();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up event listeners for keyboard inputs on all registered keys.
|
||||
*
|
||||
* @remarks
|
||||
|
@ -382,28 +382,28 @@ export class InputsController {
|
|||
* This setup ensures that each key on the keyboard is monitored for press and release events,
|
||||
* and that these events are properly communicated within the system.
|
||||
*/
|
||||
listenInputKeyboard(): void {
|
||||
this.buttonKeys.forEach((row, index) => {
|
||||
for (const key of row) {
|
||||
key.on('down', () => {
|
||||
this.events.emit('input_down', {
|
||||
controller_type: 'keyboard',
|
||||
button: index,
|
||||
});
|
||||
this.setLastProcessedMovementTime(index, 'keyboard');
|
||||
});
|
||||
key.on('up', () => {
|
||||
this.events.emit('input_up', {
|
||||
controller_type: 'keyboard',
|
||||
button: index,
|
||||
});
|
||||
this.delLastProcessedMovementTime(index);
|
||||
});
|
||||
}
|
||||
listenInputKeyboard(): void {
|
||||
this.buttonKeys.forEach((row, index) => {
|
||||
for (const key of row) {
|
||||
key.on('down', () => {
|
||||
this.events.emit('input_down', {
|
||||
controller_type: 'keyboard',
|
||||
button: index,
|
||||
});
|
||||
this.setLastProcessedMovementTime(index, 'keyboard');
|
||||
});
|
||||
}
|
||||
key.on('up', () => {
|
||||
this.events.emit('input_up', {
|
||||
controller_type: 'keyboard',
|
||||
button: index,
|
||||
});
|
||||
this.delLastProcessedMovementTime(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Maps a gamepad ID to a specific gamepad configuration based on the ID's characteristics.
|
||||
*
|
||||
* @param id - The gamepad ID string, typically representing a unique identifier for a gamepad model or make.
|
||||
|
@ -416,33 +416,33 @@ export class InputsController {
|
|||
* - If the ID contains '054c', it is identified as a DualShock gamepad.
|
||||
* If no specific identifiers are recognized, a generic gamepad configuration is returned.
|
||||
*/
|
||||
mapGamepad(id: string): GamepadConfig {
|
||||
id = id.toLowerCase();
|
||||
mapGamepad(id: string): GamepadConfig {
|
||||
id = id.toLowerCase();
|
||||
|
||||
if (id.includes('081f') && id.includes('e401')) {
|
||||
return pad_unlicensedSNES;
|
||||
} else if (id.includes('xbox') && id.includes('360')) {
|
||||
return pad_xbox360;
|
||||
} else if (id.includes('054c')) {
|
||||
return pad_dualshock;
|
||||
}
|
||||
|
||||
return pad_generic;
|
||||
if (id.includes('081f') && id.includes('e401')) {
|
||||
return pad_unlicensedSNES;
|
||||
} else if (id.includes('xbox') && id.includes('360')) {
|
||||
return pad_xbox360;
|
||||
} else if (id.includes('054c')) {
|
||||
return pad_dualshock;
|
||||
}
|
||||
|
||||
/**
|
||||
return pad_generic;
|
||||
}
|
||||
|
||||
/**
|
||||
* repeatInputDurationJustPassed returns true if @param button has been held down long
|
||||
* enough to fire a repeated input. A button must claim the buttonLock before
|
||||
* firing a repeated input - this is to prevent multiple buttons from firing repeatedly.
|
||||
*/
|
||||
repeatInputDurationJustPassed(button: Button): boolean {
|
||||
if (!this.isButtonLocked(button)) return false;
|
||||
if (this.time.now - this.interactions[button].pressTime >= repeatInputDelayMillis) {
|
||||
return true;
|
||||
}
|
||||
repeatInputDurationJustPassed(button: Button): boolean {
|
||||
if (!this.isButtonLocked(button)) return false;
|
||||
if (this.time.now - this.interactions[button].pressTime >= repeatInputDelayMillis) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* This method updates the interaction state to reflect that the button is pressed.
|
||||
*
|
||||
* @param button - The button for which to set the interaction.
|
||||
|
@ -457,15 +457,15 @@ export class InputsController {
|
|||
*
|
||||
* Additionally, this method locks the button (by calling `setButtonLock`) to prevent it from being re-processed until it is released, ensuring that each press is handled distinctly.
|
||||
*/
|
||||
setLastProcessedMovementTime(button: Button, source: String = 'keyboard'): void {
|
||||
if (!this.interactions.hasOwnProperty(button)) return;
|
||||
this.setButtonLock(button);
|
||||
this.interactions[button].pressTime = this.time.now;
|
||||
this.interactions[button].isPressed = true;
|
||||
this.interactions[button].source = source;
|
||||
}
|
||||
setLastProcessedMovementTime(button: Button, source: String = 'keyboard'): void {
|
||||
if (!this.interactions.hasOwnProperty(button)) return;
|
||||
this.setButtonLock(button);
|
||||
this.interactions[button].pressTime = this.time.now;
|
||||
this.interactions[button].isPressed = true;
|
||||
this.interactions[button].source = source;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Clears the last interaction for a specified button.
|
||||
*
|
||||
* @param button - The button for which to clear the interaction.
|
||||
|
@ -479,15 +479,15 @@ export class InputsController {
|
|||
*
|
||||
* It releases the button lock, which prevents the button from being processed repeatedly until it's explicitly released.
|
||||
*/
|
||||
delLastProcessedMovementTime(button: Button): void {
|
||||
if (!this.interactions.hasOwnProperty(button)) return;
|
||||
this.releaseButtonLock(button);
|
||||
this.interactions[button].pressTime = null;
|
||||
this.interactions[button].isPressed = false;
|
||||
this.interactions[button].source = null;
|
||||
}
|
||||
delLastProcessedMovementTime(button: Button): void {
|
||||
if (!this.interactions.hasOwnProperty(button)) return;
|
||||
this.releaseButtonLock(button);
|
||||
this.interactions[button].pressTime = null;
|
||||
this.interactions[button].isPressed = false;
|
||||
this.interactions[button].source = null;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Deactivates all currently pressed keys and resets their interaction states.
|
||||
*
|
||||
* @remarks
|
||||
|
@ -505,19 +505,19 @@ export class InputsController {
|
|||
*
|
||||
* This method is typically called when needing to ensure that all inputs are neutralized.
|
||||
*/
|
||||
deactivatePressedKey(): void {
|
||||
this.releaseButtonLock(this.buttonLock);
|
||||
this.releaseButtonLock(this.buttonLock2);
|
||||
for (const b of Utils.getEnumValues(Button)) {
|
||||
if (this.interactions.hasOwnProperty(b)) {
|
||||
this.interactions[b].pressTime = null;
|
||||
this.interactions[b].isPressed = false;
|
||||
this.interactions[b].source = null;
|
||||
}
|
||||
}
|
||||
deactivatePressedKey(): void {
|
||||
this.releaseButtonLock(this.buttonLock);
|
||||
this.releaseButtonLock(this.buttonLock2);
|
||||
for (const b of Utils.getEnumValues(Button)) {
|
||||
if (this.interactions.hasOwnProperty(b)) {
|
||||
this.interactions[b].pressTime = null;
|
||||
this.interactions[b].isPressed = false;
|
||||
this.interactions[b].source = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Checks if a specific button is currently locked.
|
||||
*
|
||||
* @param button - The button to check for a lock status.
|
||||
|
@ -527,11 +527,11 @@ export class InputsController {
|
|||
* This method is used to determine if a given button is currently prevented from being processed due to a lock.
|
||||
* It checks against two separate lock variables, allowing for up to two buttons to be locked simultaneously.
|
||||
*/
|
||||
isButtonLocked(button: Button): boolean {
|
||||
return (this.buttonLock === button || this.buttonLock2 === button);
|
||||
}
|
||||
isButtonLocked(button: Button): boolean {
|
||||
return (this.buttonLock === button || this.buttonLock2 === button);
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Sets a lock on a given button if it is not already locked.
|
||||
*
|
||||
* @param button - The button to lock.
|
||||
|
@ -542,15 +542,15 @@ export class InputsController {
|
|||
* If not, it locks the button using the first available lock variable.
|
||||
* This mechanism allows for up to two buttons to be locked at the same time.
|
||||
*/
|
||||
setButtonLock(button: Button): void {
|
||||
if (this.buttonLock === button || this.buttonLock2 === button) return;
|
||||
if (this.buttonLock === button) this.buttonLock2 = button;
|
||||
else if (this.buttonLock2 === button) this.buttonLock = button;
|
||||
else if (!!this.buttonLock) this.buttonLock2 = button;
|
||||
else this.buttonLock = button;
|
||||
}
|
||||
setButtonLock(button: Button): void {
|
||||
if (this.buttonLock === button || this.buttonLock2 === button) return;
|
||||
if (this.buttonLock === button) this.buttonLock2 = button;
|
||||
else if (this.buttonLock2 === button) this.buttonLock = button;
|
||||
else if (!!this.buttonLock) this.buttonLock2 = button;
|
||||
else this.buttonLock = button;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Releases a lock on a specific button, allowing it to be processed again.
|
||||
*
|
||||
* @param button - The button whose lock is to be released.
|
||||
|
@ -560,8 +560,8 @@ export class InputsController {
|
|||
* If either lock matches the specified button, that lock is cleared.
|
||||
* This action frees the button to be processed again, ensuring it can respond to new inputs.
|
||||
*/
|
||||
releaseButtonLock(button: Button): void {
|
||||
if (this.buttonLock === button) this.buttonLock = null;
|
||||
else if (this.buttonLock2 === button) this.buttonLock2 = null;
|
||||
}
|
||||
}
|
||||
releaseButtonLock(button: Button): void {
|
||||
if (this.buttonLock === button) this.buttonLock = null;
|
||||
else if (this.buttonLock2 === button) this.buttonLock2 = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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}`);
|
||||
});
|
||||
|
||||
|
@ -360,33 +360,33 @@ export class LoadingScene extends SceneBase {
|
|||
|
||||
this.load.on('filecomplete', key => {
|
||||
switch (key) {
|
||||
case 'intro_dark':
|
||||
intro.load('intro_dark');
|
||||
intro.on('complete', () => {
|
||||
this.tweens.add({
|
||||
targets: intro,
|
||||
duration: 500,
|
||||
alpha: 0,
|
||||
ease: 'Sine.easeIn'
|
||||
});
|
||||
loadingGraphics.map(g => g.setVisible(true));
|
||||
case 'intro_dark':
|
||||
intro.load('intro_dark');
|
||||
intro.on('complete', () => {
|
||||
this.tweens.add({
|
||||
targets: intro,
|
||||
duration: 500,
|
||||
alpha: 0,
|
||||
ease: 'Sine.easeIn'
|
||||
});
|
||||
intro.play();
|
||||
break;
|
||||
case 'loading_bg':
|
||||
bg.setTexture('loading_bg');
|
||||
if (mobile)
|
||||
bg.setVisible(true);
|
||||
break;
|
||||
case 'logo':
|
||||
logo.setTexture('logo');
|
||||
if (mobile)
|
||||
logo.setVisible(true);
|
||||
break;
|
||||
loadingGraphics.map(g => g.setVisible(true));
|
||||
});
|
||||
intro.play();
|
||||
break;
|
||||
case 'loading_bg':
|
||||
bg.setTexture('loading_bg');
|
||||
if (mobile)
|
||||
bg.setVisible(true);
|
||||
break;
|
||||
case 'logo':
|
||||
logo.setTexture('logo');
|
||||
if (mobile)
|
||||
logo.setVisible(true);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
} as const;
|
||||
|
|
|
@ -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?",
|
||||
} as const;
|
||||
'fight': 'Kampf',
|
||||
'ball': 'Ball',
|
||||
'pokemon': 'Pokémon',
|
||||
'run': 'Fliehen',
|
||||
'actionMessage': 'Was soll\n{{pokemonName}} tun?',
|
||||
} as const;
|
||||
|
|
|
@ -1,51 +1,51 @@
|
|||
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,
|
||||
abilityTriggers: abilityTriggers,
|
||||
battle: battle,
|
||||
commandUiHandler: commandUiHandler,
|
||||
egg: egg,
|
||||
fightUiHandler: fightUiHandler,
|
||||
growth: growth,
|
||||
menu: menu,
|
||||
menuUiHandler: menuUiHandler,
|
||||
modifierType: modifierType,
|
||||
move: move,
|
||||
nature: nature,
|
||||
pokeball: pokeball,
|
||||
pokemon: pokemon,
|
||||
pokemonInfo: pokemonInfo,
|
||||
splashMessages: splashMessages,
|
||||
starterSelectUiHandler: starterSelectUiHandler,
|
||||
titles: titles,
|
||||
trainerClasses: trainerClasses,
|
||||
trainerNames: trainerNames,
|
||||
tutorial: tutorial,
|
||||
weather: weather,
|
||||
battleMessageUiHandler: battleMessageUiHandler,
|
||||
berry: berry,
|
||||
voucher: voucher,
|
||||
}
|
||||
ability: ability,
|
||||
abilityTriggers: abilityTriggers,
|
||||
battle: battle,
|
||||
commandUiHandler: commandUiHandler,
|
||||
egg: egg,
|
||||
fightUiHandler: fightUiHandler,
|
||||
growth: growth,
|
||||
menu: menu,
|
||||
menuUiHandler: menuUiHandler,
|
||||
modifierType: modifierType,
|
||||
move: move,
|
||||
nature: nature,
|
||||
pokeball: pokeball,
|
||||
pokemon: pokemon,
|
||||
pokemonInfo: pokemonInfo,
|
||||
splashMessages: splashMessages,
|
||||
starterSelectUiHandler: starterSelectUiHandler,
|
||||
titles: titles,
|
||||
trainerClasses: trainerClasses,
|
||||
trainerNames: trainerNames,
|
||||
tutorial: tutorial,
|
||||
weather: weather,
|
||||
battleMessageUiHandler: battleMessageUiHandler,
|
||||
berry: berry,
|
||||
voucher: voucher,
|
||||
};
|
||||
|
|
|
@ -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"
|
||||
} as const;
|
||||
'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;
|
||||
|
|
|
@ -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",
|
||||
} as const;
|
||||
'pp': 'AP',
|
||||
'power': 'Stärke',
|
||||
'accuracy': 'Genauigkeit',
|
||||
} as const;
|
||||
|
|
|
@ -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"
|
||||
} as const;
|
||||
'Erratic': 'Unregelmäßig',
|
||||
'Fast': 'Schnell',
|
||||
'Medium_Fast': 'Schneller',
|
||||
'Medium_Slow': 'Langsamer',
|
||||
'Slow': 'Langsam',
|
||||
'Fluctuating': 'Schwankend'
|
||||
} as const;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
} as const;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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"
|
||||
} as const;
|
||||
'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;
|
||||
|
|
|
@ -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",
|
||||
} as const;
|
||||
'pokeBall': 'Pokéball',
|
||||
'greatBall': 'Superball',
|
||||
'ultraBall': 'Hyperball',
|
||||
'rogueBall': 'Rogueball',
|
||||
'masterBall': 'Meisterball',
|
||||
'luxuryBall': 'Luxusball',
|
||||
} as const;
|
||||
|
|
|
@ -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",
|
||||
},
|
||||
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',
|
||||
},
|
||||
|
||||
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",
|
||||
},
|
||||
} as const;
|
||||
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',
|
||||
},
|
||||
} as const;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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!",
|
||||
} as const;
|
||||
'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;
|
||||
|
|
|
@ -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'
|
||||
};
|
||||
|
|
|
@ -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",
|
||||
// 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.
|
||||
'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",
|
||||
} as const;
|
||||
'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;
|
||||
|
|
|
@ -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,10 +37,10 @@ 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.
|
||||
$Es gibt sogar Pokémon, die du nur aus Eiern erhalten kannst.
|
||||
$Es gibt drei Gacha-Maschinen mit je unterschiedlichen Boni,\nalso such' dir die aus, die dir am besten gefällt!`,
|
||||
} as const;
|
||||
} as const;
|
||||
|
|
|
@ -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}}"
|
||||
} as const;
|
||||
'vouchers': 'Vouchers',
|
||||
'eggVoucher': 'Egg Voucher',
|
||||
'eggVoucherPlus': 'Egg Voucher Plus',
|
||||
'eggVoucherPremium': 'Egg Voucher Premium',
|
||||
'eggVoucherGold': 'Egg Voucher Gold',
|
||||
'locked': 'Locked',
|
||||
'defeatTrainer': 'Defeat {{trainerName}}'
|
||||
} as const;
|
||||
|
|
|
@ -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.',
|
||||
};
|
||||
|
|
|
@ -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!`,
|
||||
} as const;
|
||||
'blockRecoilDamage' : '{{pokemonName}}\'s {{abilityName}}\nprotected it from recoil!',
|
||||
'badDreams': '{{pokemonName}} is tormented!',
|
||||
} as const;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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",
|
||||
} as const;
|
||||
'ivBest': 'Best',
|
||||
'ivFantastic': 'Fantastic',
|
||||
'ivVeryGood': 'Very Good',
|
||||
'ivPrettyGood': 'Pretty Good',
|
||||
'ivDecent': 'Decent',
|
||||
'ivNoGood': 'No Good',
|
||||
} as const;
|
||||
|
|
|
@ -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}}?"
|
||||
} as const;
|
||||
'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;
|
||||
|
|
|
@ -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;
|
||||
} as const;
|
||||
|
|
|
@ -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?",
|
||||
} as const;
|
||||
'fight': 'Fight',
|
||||
'ball': 'Ball',
|
||||
'pokemon': 'Pokémon',
|
||||
'run': 'Run',
|
||||
'actionMessage': 'What will\n{{pokemonName}} do?',
|
||||
} as const;
|
||||
|
|
|
@ -1,51 +1,51 @@
|
|||
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,
|
||||
abilityTriggers: abilityTriggers,
|
||||
battle: battle,
|
||||
commandUiHandler: commandUiHandler,
|
||||
egg: egg,
|
||||
fightUiHandler: fightUiHandler,
|
||||
growth: growth,
|
||||
menu: menu,
|
||||
menuUiHandler: menuUiHandler,
|
||||
modifierType: modifierType,
|
||||
move: move,
|
||||
nature: nature,
|
||||
pokeball: pokeball,
|
||||
pokemon: pokemon,
|
||||
pokemonInfo: pokemonInfo,
|
||||
splashMessages: splashMessages,
|
||||
starterSelectUiHandler: starterSelectUiHandler,
|
||||
titles: titles,
|
||||
trainerClasses: trainerClasses,
|
||||
trainerNames: trainerNames,
|
||||
tutorial: tutorial,
|
||||
weather: weather,
|
||||
battleMessageUiHandler: battleMessageUiHandler,
|
||||
berry: berry,
|
||||
voucher: voucher,
|
||||
}
|
||||
ability: ability,
|
||||
abilityTriggers: abilityTriggers,
|
||||
battle: battle,
|
||||
commandUiHandler: commandUiHandler,
|
||||
egg: egg,
|
||||
fightUiHandler: fightUiHandler,
|
||||
growth: growth,
|
||||
menu: menu,
|
||||
menuUiHandler: menuUiHandler,
|
||||
modifierType: modifierType,
|
||||
move: move,
|
||||
nature: nature,
|
||||
pokeball: pokeball,
|
||||
pokemon: pokemon,
|
||||
pokemonInfo: pokemonInfo,
|
||||
splashMessages: splashMessages,
|
||||
starterSelectUiHandler: starterSelectUiHandler,
|
||||
titles: titles,
|
||||
trainerClasses: trainerClasses,
|
||||
trainerNames: trainerNames,
|
||||
tutorial: tutorial,
|
||||
weather: weather,
|
||||
battleMessageUiHandler: battleMessageUiHandler,
|
||||
berry: berry,
|
||||
voucher: voucher,
|
||||
};
|
||||
|
|
|
@ -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"
|
||||
} as const;
|
||||
'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;
|
||||
|
|
|
@ -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",
|
||||
} as const;
|
||||
'pp': 'PP',
|
||||
'power': 'Power',
|
||||
'accuracy': 'Accuracy',
|
||||
} as const;
|
||||
|
|
|
@ -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"
|
||||
} as const;
|
||||
'Erratic': 'Erratic',
|
||||
'Fast': 'Fast',
|
||||
'Medium_Fast': 'Medium Fast',
|
||||
'Medium_Slow': 'Medium Slow',
|
||||
'Slow': 'Slow',
|
||||
'Fluctuating': 'Fluctuating'
|
||||
} as const;
|
||||
|
|
|
@ -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?"
|
||||
} as const;
|
||||
'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;
|
||||
|
|
|
@ -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",
|
||||
} as const;
|
||||
'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;
|
||||
|
|
|
@ -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;
|
||||
} as const;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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"
|
||||
} as const;
|
||||
'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;
|
||||
|
|
|
@ -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",
|
||||
} as const;
|
||||
'pokeBall': 'Poké Ball',
|
||||
'greatBall': 'Great Ball',
|
||||
'ultraBall': 'Ultra Ball',
|
||||
'rogueBall': 'Rogue Ball',
|
||||
'masterBall': 'Master Ball',
|
||||
'luxuryBall': 'Luxury Ball',
|
||||
} as const;
|
||||
|
|
|
@ -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"
|
||||
},
|
||||
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'
|
||||
},
|
||||
|
||||
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",
|
||||
},
|
||||
} as const;
|
||||
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',
|
||||
},
|
||||
} as const;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue