mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-05 16:02:20 +02:00
Compare commits
11 Commits
5fe69fff9c
...
8a8a2e128a
Author | SHA1 | Date | |
---|---|---|---|
|
8a8a2e128a | ||
|
ff086ca492 | ||
|
8d83417cee | ||
|
2aa9180745 | ||
|
364b19df5d | ||
|
0e84313862 | ||
|
55105bf79a | ||
|
f1e97f3b38 | ||
|
7f003d46ca | ||
|
2a15e090ce | ||
|
4a29532b5e |
3
.gitignore
vendored
3
.gitignore
vendored
@ -24,6 +24,9 @@ dist-ssr
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
# Docummentation
|
||||
docs/*
|
||||
|
||||
public/images/trainer/convert/*
|
||||
public/images/battle_anims/input/*.png
|
||||
public/images/pokemon/input/*.png
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"textures": [
|
||||
{
|
||||
"image": "student_f.png",
|
||||
"image": "school_kid_f.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 192,
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
@ -1,7 +1,7 @@
|
||||
{
|
||||
"textures": [
|
||||
{
|
||||
"image": "student_m.png",
|
||||
"image": "school_kid_m.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 178,
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
171
src/data/move.ts
171
src/data/move.ts
@ -1,6 +1,6 @@
|
||||
import { Moves } from "./enums/moves";
|
||||
import { ChargeAnim, MoveChargeAnim, initMoveAnim, loadMoveAnimAssets } from "./battle-anims";
|
||||
import { BattleEndPhase, MovePhase, NewBattlePhase, PartyStatusCurePhase, PokemonHealPhase, StatChangePhase, SwitchSummonPhase } from "../phases";
|
||||
import { BattleEndPhase, MoveEffectPhase, MovePhase, NewBattlePhase, PartyStatusCurePhase, PokemonHealPhase, StatChangePhase, SwitchSummonPhase } from "../phases";
|
||||
import { BattleStat, getBattleStatName } from "./battle-stat";
|
||||
import { EncoreTag } from "./battler-tags";
|
||||
import { BattlerTagType } from "./enums/battler-tag-type";
|
||||
@ -33,20 +33,26 @@ export enum MoveCategory {
|
||||
}
|
||||
|
||||
export enum MoveTarget {
|
||||
/** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_the_user Moves that target the User} */
|
||||
USER,
|
||||
OTHER,
|
||||
ALL_OTHERS,
|
||||
NEAR_OTHER,
|
||||
/** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_all_adjacent_Pok%C3%A9mon Moves that target all adjacent Pokemon} */
|
||||
ALL_NEAR_OTHERS,
|
||||
NEAR_ENEMY,
|
||||
/** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_all_adjacent_foes Moves that taret all adjacent foes} */
|
||||
ALL_NEAR_ENEMIES,
|
||||
RANDOM_NEAR_ENEMY,
|
||||
ALL_ENEMIES,
|
||||
/** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Counterattacks Counterattacks} */
|
||||
ATTACKER,
|
||||
/** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_one_adjacent_ally Moves that target one adjacent ally} */
|
||||
NEAR_ALLY,
|
||||
ALLY,
|
||||
USER_OR_NEAR_ALLY,
|
||||
USER_AND_ALLIES,
|
||||
/** {@link https://bulbapedia.bulbagarden.net/wiki/Category:Moves_that_target_all_Pok%C3%A9mon Moves that target all Pokemon} */
|
||||
ALL,
|
||||
USER_SIDE,
|
||||
ENEMY_SIDE,
|
||||
@ -67,8 +73,8 @@ export enum MoveFlags {
|
||||
PUNCHING_MOVE = 1 << 8,
|
||||
SLICING_MOVE = 1 << 9,
|
||||
/**
|
||||
* Indicates a move should be affected by {@link Abilities.RECKLESS}
|
||||
* @see {@link Move.recklessMove()}
|
||||
* Indicates a move should be affected by {@linkcode Abilities.RECKLESS}
|
||||
* @see {@linkcode Move.recklessMove()}
|
||||
*/
|
||||
RECKLESS_MOVE = 1 << 10,
|
||||
BALLBOMB_MOVE = 1 << 11,
|
||||
@ -277,10 +283,10 @@ export default class Move implements Localizable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the {@link MoveFlags.RECKLESS_MOVE} flag for the calling Move
|
||||
* @see {@link Abilities.RECKLESS}
|
||||
* @param {boolean} recklessMove The value to set the flag to
|
||||
* @returns {Move} The {@link Move} that called this function
|
||||
* Sets the {@linkcode MoveFlags.RECKLESS_MOVE} flag for the calling Move
|
||||
* @see {@linkcode Abilities.RECKLESS}
|
||||
* @param recklessMove The value to set the flag to
|
||||
* @returns The {@linkcode Move} that called this function
|
||||
*/
|
||||
recklessMove(recklessMove?: boolean): this {
|
||||
this.setFlag(MoveFlags.RECKLESS_MOVE, recklessMove);
|
||||
@ -435,11 +441,12 @@ export class SelfStatusMove extends Move {
|
||||
}
|
||||
|
||||
/**
|
||||
* Base class defining all {@link Move} Attributes
|
||||
* Base class defining all {@linkcode Move} Attributes
|
||||
* @abstract
|
||||
* @see {@linkcode apply}
|
||||
*/
|
||||
export abstract class MoveAttr {
|
||||
/** Should this {@link Move} target the user? */
|
||||
/** Should this {@linkcode Move} target the user? */
|
||||
public selfTarget: boolean;
|
||||
|
||||
constructor(selfTarget: boolean = false) {
|
||||
@ -448,13 +455,13 @@ export abstract class MoveAttr {
|
||||
|
||||
/**
|
||||
* Applies move attributes
|
||||
* @see {@link applyMoveAttrsInternal}
|
||||
* @see {@linkcode applyMoveAttrsInternal}
|
||||
* @virtual
|
||||
* @param user The {@link Pokemon} using the move
|
||||
* @param target The target {@link Pokemon} of the move
|
||||
* @param move The {@link Move} being used
|
||||
* @param user {@linkcode Pokemon} using the move
|
||||
* @param target {@linkcode Pokemon} target of the move
|
||||
* @param move {@linkcode Move} with this attribute
|
||||
* @param args Set of unique arguments needed by this attribute
|
||||
* @returns true if the application succeeds
|
||||
* @returns true if application of the ability succeeds
|
||||
*/
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean | Promise<boolean> {
|
||||
return true;
|
||||
@ -462,7 +469,7 @@ export abstract class MoveAttr {
|
||||
|
||||
/**
|
||||
* @virtual
|
||||
* @returns the {@link MoveCondition} or {@link MoveConditionFunc} for this {@link Move}
|
||||
* @returns the {@linkcode MoveCondition} or {@linkcode MoveConditionFunc} for this {@linkcode Move}
|
||||
*/
|
||||
getCondition(): MoveCondition | MoveConditionFunc {
|
||||
return null;
|
||||
@ -470,11 +477,11 @@ export abstract class MoveAttr {
|
||||
|
||||
/**
|
||||
* @virtual
|
||||
* @param user The {@link Pokemon} using the move
|
||||
* @param target The target {@link Pokemon} of the move
|
||||
* @param move The {@link Move} being used
|
||||
* @param cancelled A {@link Utils.BooleanHolder} which stores if the move should fail
|
||||
* @returns the string representing failure of this {@link Move}
|
||||
* @param user {@linkcode Pokemon} using the move
|
||||
* @param target {@linkcode Pokemon} target of the move
|
||||
* @param move {@linkcode Move} with this attribute
|
||||
* @param cancelled {@linkcode Utils.BooleanHolder} which stores if the move should fail
|
||||
* @returns the string representing failure of this {@linkcode Move}
|
||||
*/
|
||||
getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null {
|
||||
return null;
|
||||
@ -482,7 +489,7 @@ export abstract class MoveAttr {
|
||||
|
||||
/**
|
||||
* Used by the Enemy AI to rank an attack based on a given user
|
||||
* @see {@link EnemyPokemon.getNextMove}
|
||||
* @see {@linkcode EnemyPokemon.getNextMove}
|
||||
* @virtual
|
||||
*/
|
||||
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
|
||||
@ -491,7 +498,7 @@ export abstract class MoveAttr {
|
||||
|
||||
/**
|
||||
* Used by the Enemy AI to rank an attack based on a given target
|
||||
* @see {@link EnemyPokemon.getNextMove}
|
||||
* @see {@linkcode EnemyPokemon.getNextMove}
|
||||
* @virtual
|
||||
*/
|
||||
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
|
||||
@ -509,9 +516,14 @@ export enum MoveEffectTrigger {
|
||||
|
||||
/** Base class defining all Move Effect Attributes
|
||||
* @extends MoveAttr
|
||||
* @see {@linkcode apply}
|
||||
*/
|
||||
export class MoveEffectAttr extends MoveAttr {
|
||||
/** Defines when this effect should trigger in the move's effect order
|
||||
* @see {@linkcode MoveEffectPhase.start}
|
||||
*/
|
||||
public trigger: MoveEffectTrigger;
|
||||
/** Should this effect only apply on the first hit? */
|
||||
public firstHitOnly: boolean;
|
||||
|
||||
constructor(selfTarget?: boolean, trigger?: MoveEffectTrigger, firstHitOnly: boolean = false) {
|
||||
@ -521,20 +533,20 @@ export class MoveEffectAttr extends MoveAttr {
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether the {@link Move}'s effects are valid to {@link apply}
|
||||
* Determines whether the {@linkcode Move}'s effects are valid to {@linkcode apply}
|
||||
* @virtual
|
||||
* @param user The {@link Pokemon} using the move
|
||||
* @param target The target {@link Pokemon} of the move
|
||||
* @param move The {@link Move} being used
|
||||
* @param user {@linkcode Pokemon} using the move
|
||||
* @param target {@linkcode Pokemon} target of the move
|
||||
* @param move {@linkcode Move} with this attribute
|
||||
* @param args Set of unique arguments needed by this attribute
|
||||
* @returns true if the application succeeds
|
||||
* @returns true if basic application of the ability attribute should be possible
|
||||
*/
|
||||
canApply(user: Pokemon, target: Pokemon, move: Move, args: any[]) {
|
||||
return !! (this.selfTarget ? user.hp && !user.getTag(BattlerTagType.FRENZY) : target.hp)
|
||||
&& (this.selfTarget || !target.getTag(BattlerTagType.PROTECTED) || move.hasFlag(MoveFlags.IGNORE_PROTECT));
|
||||
}
|
||||
|
||||
/** Applies move effects so long as they are able based on {@link canApply} */
|
||||
/** Applies move effects so long as they are able based on {@linkcode canApply} */
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean | Promise<boolean> {
|
||||
return this.canApply(user, target, move, args);
|
||||
}
|
||||
@ -792,7 +804,7 @@ export class RecoilAttr extends MoveEffectAttr {
|
||||
/**
|
||||
* Attribute used for moves which self KO the user regardless if the move hits a target
|
||||
* @extends MoveEffectAttr
|
||||
* @see {@link apply}
|
||||
* @see {@linkcode apply}
|
||||
**/
|
||||
export class SacrificialAttr extends MoveEffectAttr {
|
||||
constructor() {
|
||||
@ -801,9 +813,9 @@ export class SacrificialAttr extends MoveEffectAttr {
|
||||
|
||||
/**
|
||||
* Deals damage to the user equal to their current hp
|
||||
* @param user Pokemon that used the move
|
||||
* @param target The target of the move
|
||||
* @param move Move with this attribute
|
||||
* @param user {@linkcode Pokemon} that used the move
|
||||
* @param target {@linkcode Pokemon} target of the move
|
||||
* @param move {@linkcode Move} with this attribute
|
||||
* @param args N/A
|
||||
* @returns true if the function succeeds
|
||||
**/
|
||||
@ -824,7 +836,7 @@ export class SacrificialAttr extends MoveEffectAttr {
|
||||
/**
|
||||
* Attribute used for moves which self KO the user but only if the move hits a target
|
||||
* @extends MoveEffectAttr
|
||||
* @see {@link apply}
|
||||
* @see {@linkcode apply}
|
||||
**/
|
||||
export class SacrificialAttrOnHit extends MoveEffectAttr {
|
||||
constructor() {
|
||||
@ -833,14 +845,13 @@ export class SacrificialAttrOnHit extends MoveEffectAttr {
|
||||
|
||||
/**
|
||||
* Deals damage to the user equal to their current hp if the move lands
|
||||
* @param user Pokemon that used the move
|
||||
* @param target The target of the move
|
||||
* @param move Move with this attribute
|
||||
* @param user {@linkcode Pokemon} that used the move
|
||||
* @param target {@linkcode Pokemon} target of the move
|
||||
* @param move {@linkcode Move} with this attribute
|
||||
* @param args N/A
|
||||
* @returns true if the function succeeds
|
||||
**/
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
|
||||
// If the move fails to hit a target, then the user does not faint and the function returns false
|
||||
if (!super.apply(user, target, move, args))
|
||||
return false;
|
||||
@ -860,7 +871,9 @@ export class SacrificialAttrOnHit extends MoveEffectAttr {
|
||||
|
||||
/**
|
||||
* Attribute used for moves which cut the user's Max HP in half.
|
||||
* Triggers using POST_TARGET.
|
||||
* Triggers using {@linkcode MoveEffectTrigger.POST_TARGET}.
|
||||
* @extends MoveEffectAttr
|
||||
* @see {@linkcode apply}
|
||||
*/
|
||||
export class HalfSacrificialAttr extends MoveEffectAttr {
|
||||
constructor() {
|
||||
@ -869,9 +882,9 @@ export class HalfSacrificialAttr extends MoveEffectAttr {
|
||||
|
||||
/**
|
||||
* Cut's the user's Max HP in half and displays the appropriate recoil message
|
||||
* @param user Pokemon that used the move
|
||||
* @param user {@linkcode Pokemon} that used the move
|
||||
* @param target N/A
|
||||
* @param move Move with this attribute
|
||||
* @param move {@linkcode Move} with this attribute
|
||||
* @param args N/A
|
||||
* @returns true if the function succeeds
|
||||
*/
|
||||
@ -905,12 +918,12 @@ export enum MultiHitType {
|
||||
}
|
||||
|
||||
/**
|
||||
* Heals the user or target by {@link healRatio} depending on the value of {@link selfTarget}
|
||||
* Heals the user or target by {@linkcode healRatio} depending on the value of {@linkcode selfTarget}
|
||||
* @extends MoveEffectAttr
|
||||
* @see {@link apply}
|
||||
* @see {@linkcode apply}
|
||||
*/
|
||||
export class HealAttr extends MoveEffectAttr {
|
||||
/** The percentage of {@link Stat.HP} to heal */
|
||||
/** The percentage of {@linkcode Stat.HP} to heal */
|
||||
private healRatio: number;
|
||||
/** Should an animation be shown? */
|
||||
private showAnim: boolean;
|
||||
@ -928,7 +941,7 @@ export class HealAttr extends MoveEffectAttr {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link PokemonHealPhase}.
|
||||
* Creates a new {@linkcode PokemonHealPhase}.
|
||||
* This heals the target and shows the appropriate message.
|
||||
*/
|
||||
addHealPhase(target: Pokemon, healRatio: number) {
|
||||
@ -944,11 +957,13 @@ export class HealAttr extends MoveEffectAttr {
|
||||
|
||||
/**
|
||||
* Cures the user's party of non-volatile status conditions, ie. Heal Bell, Aromatherapy
|
||||
* @param {string} message Message to display after using move
|
||||
* @param {Abilities} abilityCondition Skips mons with this ability, ie. Soundproof
|
||||
* @extends MoveEffectAttr
|
||||
* @see {@linkcode apply}
|
||||
*/
|
||||
export class PartyStatusCureAttr extends MoveEffectAttr {
|
||||
/** Message to display after using move */
|
||||
private message: string;
|
||||
/** Skips mons with this ability, ie. Soundproof */
|
||||
private abilityCondition: Abilities;
|
||||
|
||||
constructor(message: string, abilityCondition: Abilities) {
|
||||
@ -1000,19 +1015,23 @@ export class SacrificialFullRestoreAttr extends SacrificialAttr {
|
||||
/**
|
||||
* Attribute used for moves which ignore type-based debuffs from weather, namely Hydro Steam.
|
||||
* Called during damage calculation after getting said debuff from getAttackTypeMultiplier in the Pokemon class.
|
||||
* @extends MoveAttr
|
||||
* @see {@linkcode apply}
|
||||
*/
|
||||
export class IgnoreWeatherTypeDebuffAttr extends MoveAttr {
|
||||
/** The {@linkcode WeatherType} this move ignores */
|
||||
public weather: WeatherType;
|
||||
|
||||
constructor(weather: WeatherType){
|
||||
super();
|
||||
this.weather = weather;
|
||||
}
|
||||
/**
|
||||
* Changes the type-based weather modifier if this move's power would be reduced by it
|
||||
* @param user Pokemon that used the move
|
||||
* @param user {@linkcode Pokemon} that used the move
|
||||
* @param target N/A
|
||||
* @param move Move with this attribute
|
||||
* @param args [0] Utils.NumberHolder for arenaAttackTypeMultiplier
|
||||
* @param move {@linkcode Move} with this attribute
|
||||
* @param args [0] {@linkcode Utils.NumberHolder} for arenaAttackTypeMultiplier
|
||||
* @returns true if the function succeeds
|
||||
*/
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
@ -1072,15 +1091,15 @@ export class SandHealAttr extends WeatherHealAttr {
|
||||
}
|
||||
|
||||
/**
|
||||
* Heals the target or the user by either {@link normalHealRatio} or {@link boostedHealRatio}
|
||||
* depending on the evaluation of {@link condition}
|
||||
* Heals the target or the user by either {@linkcode normalHealRatio} or {@linkcode boostedHealRatio}
|
||||
* depending on the evaluation of {@linkcode condition}
|
||||
* @extends HealAttr
|
||||
* @see {@link apply}
|
||||
* @see {@linkcode apply}
|
||||
*/
|
||||
export class BoostHealAttr extends HealAttr {
|
||||
/** Healing received when {@link condition} is false */
|
||||
/** Healing received when {@linkcode condition} is false */
|
||||
private normalHealRatio?: number;
|
||||
/** Healing received when {@link condition} is true */
|
||||
/** Healing received when {@linkcode condition} is true */
|
||||
private boostedHealRatio?: number;
|
||||
/** The lambda expression to check against when boosting the healing value */
|
||||
private condition?: MoveConditionFunc;
|
||||
@ -1093,9 +1112,9 @@ export class BoostHealAttr extends HealAttr {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param user The Pokemon using this move
|
||||
* @param target The target Pokemon of this move
|
||||
* @param move This move
|
||||
* @param user {@linkcode Pokemon} using the move
|
||||
* @param target {@linkcode Pokemon} target of the move
|
||||
* @param move {@linkcode Move} with this attribute
|
||||
* @param args N/A
|
||||
* @returns true if the move was successful
|
||||
*/
|
||||
@ -1464,15 +1483,17 @@ export class BypassSleepAttr extends MoveAttr {
|
||||
/**
|
||||
* Attribute used for moves that bypass the burn damage reduction of physical moves, currently only facade
|
||||
* Called during damage calculation
|
||||
* @param user N/A
|
||||
* @param target N/A
|
||||
* @param move Move with this attribute
|
||||
* @param args Utils.BooleanHolder for burnDamageReductionCancelled
|
||||
* @returns true if the function succeeds
|
||||
* @extends MoveAttr
|
||||
* @see {@linkcode apply}
|
||||
*/
|
||||
export class BypassBurnDamageReductionAttr extends MoveAttr {
|
||||
|
||||
/** Prevents the move's damage from being reduced by burn */
|
||||
/** Prevents the move's damage from being reduced by burn
|
||||
* @param user N/A
|
||||
* @param target N/A
|
||||
* @param move {@linkcode Move} with this attribute
|
||||
* @param args [0] {@linkcode Utils.BooleanHolder} for burnDamageReductionCancelled
|
||||
* @returns true if the function succeeds
|
||||
*/
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
(args[0] as Utils.BooleanHolder).value = true;
|
||||
|
||||
@ -2482,16 +2503,19 @@ export class ThunderAccuracyAttr extends VariableAccuracyAttr {
|
||||
|
||||
/**
|
||||
* Attribute used for moves which never miss
|
||||
* against Pokemon with the {@link BattlerTagType.MINIMIZED}
|
||||
* @see {@link apply}
|
||||
* against Pokemon with the {@linkcode BattlerTagType.MINIMIZED}
|
||||
* @extends VariableAccuracyAttr
|
||||
* @see {@linkcode apply}
|
||||
*/
|
||||
export class MinimizeAccuracyAttr extends VariableAccuracyAttr {
|
||||
/**
|
||||
* @see {@linkcode apply}
|
||||
* @param user N/A
|
||||
* @param target Target of the move
|
||||
* @param target {@linkcode Pokemon} target of the move
|
||||
* @param move N/A
|
||||
* @param args [0] Accuracy of the move to be modified
|
||||
* @returns true if the function succeeds
|
||||
*/
|
||||
export class MinimizeAccuracyAttr extends VariableAccuracyAttr{
|
||||
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
if (target.getTag(BattlerTagType.MINIMIZED)){
|
||||
const accuracy = args[0] as Utils.NumberHolder
|
||||
@ -3259,11 +3283,14 @@ export class FaintCountdownAttr extends AddBattlerTagAttr {
|
||||
}
|
||||
}
|
||||
|
||||
/** Attribute used when a move hits a {@link BattlerTagType} for double damage */
|
||||
/**
|
||||
* Attribute used when a move hits a {@linkcode BattlerTagType} for double damage
|
||||
* @extends MoveAttr
|
||||
*/
|
||||
export class HitsTagAttr extends MoveAttr {
|
||||
/** The {@link BattlerTagType} this move hits */
|
||||
/** The {@linkcode BattlerTagType} this move hits */
|
||||
public tagType: BattlerTagType;
|
||||
/** Should this move deal double damage against {@link HitsTagAttr.tagType}? */
|
||||
/** Should this move deal double damage against {@linkcode HitsTagAttr.tagType}? */
|
||||
public doubleDamage: boolean;
|
||||
|
||||
constructor(tagType: BattlerTagType, doubleDamage?: boolean) {
|
||||
|
@ -229,19 +229,17 @@ export class TrainerConfig {
|
||||
}
|
||||
|
||||
setName(name: string): TrainerConfig {
|
||||
if (name === 'Finn' || name === 'Ivy') {
|
||||
if (name === 'Finn') {
|
||||
// Give the rival a localized name
|
||||
// First check if i18n is initialized
|
||||
if (!getIsInitialized()) {
|
||||
initI18n();
|
||||
}
|
||||
if (name === 'Finn') {
|
||||
this.name = i18next.t('trainerNames:rival');
|
||||
}
|
||||
if (name === 'Ivy') {
|
||||
this.name = i18next.t('trainerNames:rival_female');
|
||||
name = i18next.t('trainerNames:rival');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
this.name = name;
|
||||
return this;
|
||||
@ -284,8 +282,18 @@ export class TrainerConfig {
|
||||
}
|
||||
|
||||
setHasGenders(nameFemale?: string, femaleEncounterBgm?: TrainerType | string): TrainerConfig {
|
||||
this.hasGenders = true;
|
||||
if (nameFemale === 'Ivy') {
|
||||
// Give the rival a localized name
|
||||
// First check if i18n is initialized
|
||||
if (!getIsInitialized()) {
|
||||
initI18n();
|
||||
}
|
||||
this.nameFemale = i18next.t('trainerNames:rival_female');
|
||||
} else {
|
||||
this.nameFemale = nameFemale;
|
||||
}
|
||||
|
||||
this.hasGenders = true;
|
||||
if (femaleEncounterBgm)
|
||||
this.femaleEncounterBgm = typeof femaleEncounterBgm === 'number' ? TrainerType[femaleEncounterBgm].toString().replace(/\_/g, ' ').toLowerCase() : femaleEncounterBgm;
|
||||
return this;
|
||||
@ -391,6 +399,9 @@ export class TrainerConfig {
|
||||
}
|
||||
|
||||
initForGymLeader(signatureSpecies: (Species | Species[])[], ...specialtyTypes: Type[]): TrainerConfig {
|
||||
if (!getIsInitialized()) {
|
||||
initI18n();
|
||||
}
|
||||
|
||||
this.setPartyTemplateFunc(getGymLeaderPartyTemplate);
|
||||
signatureSpecies.forEach((speciesPool, s) => {
|
||||
@ -423,7 +434,9 @@ export class TrainerConfig {
|
||||
}
|
||||
|
||||
initForEliteFour(signatureSpecies: (Species | Species[])[], ...specialtyTypes: Type[]): TrainerConfig {
|
||||
|
||||
if (!getIsInitialized()) {
|
||||
initI18n();
|
||||
}
|
||||
|
||||
this.setPartyTemplates(trainerPartyTemplates.ELITE_FOUR);
|
||||
signatureSpecies.forEach((speciesPool, s) => {
|
||||
@ -451,7 +464,9 @@ export class TrainerConfig {
|
||||
}
|
||||
|
||||
initForChampion(signatureSpecies: (Species | Species[])[]): TrainerConfig {
|
||||
|
||||
if (!getIsInitialized()) {
|
||||
initI18n();
|
||||
}
|
||||
this.setPartyTemplates(trainerPartyTemplates.CHAMPION);
|
||||
signatureSpecies.forEach((speciesPool, s) => {
|
||||
if (!Array.isArray(speciesPool))
|
||||
@ -721,7 +736,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
[TrainerType.SMASHER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
|
||||
[TrainerType.SNOW_WORKER]: new TrainerConfig(++t).setName('Worker').setHasGenders().setHasDouble('Workers').setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => s.isOfType(Type.ICE) || s.isOfType(Type.STEEL)),
|
||||
[TrainerType.STRIKER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
|
||||
[TrainerType.SCHOOL_KID]: new TrainerConfig(++t).setMoneyMultiplier(0.75).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders(undefined, 'lass').setHasDouble('Students')
|
||||
[TrainerType.SCHOOL_KID]: new TrainerConfig(++t).setMoneyMultiplier(0.75).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders(undefined, 'lass').setHasDouble('School Kids')
|
||||
.setSpeciesPools({
|
||||
[TrainerPoolTier.COMMON]: [ Species.ODDISH, Species.EXEGGCUTE, Species.TEDDIURSA, Species.WURMPLE, Species.RALTS, Species.SHROOMISH, Species.FLETCHLING ],
|
||||
[TrainerPoolTier.UNCOMMON]: [ Species.VOLTORB, Species.WHISMUR, Species.MEDITITE, Species.MIME_JR, Species.NYMBLE ],
|
||||
|
@ -3,6 +3,7 @@ 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}}!",
|
||||
@ -33,7 +34,7 @@ export const battle: SimpleTranslationEntries = {
|
||||
"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 Levellimit\nhat sich zu {{levelCap}} erhöht!",
|
||||
"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!",
|
||||
|
@ -16,22 +16,29 @@ export const titles: SimpleTranslationEntries = {
|
||||
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",
|
||||
@ -39,6 +46,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"doctor_female": "Ärztin",
|
||||
"fishermen": "Angler",
|
||||
"fishermen_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",
|
||||
@ -52,6 +60,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"linebacker": "Footballer",
|
||||
"maid": "Zofe",
|
||||
"madame": "Madam",
|
||||
"medical_team": "Mediziner",
|
||||
"musican": "Musiker",
|
||||
"hex_maniac": "Hexe",
|
||||
"nurse": "Pflegerin",
|
||||
@ -59,35 +68,45 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"officer": "Polizist",
|
||||
"parasol_lady": "Schirmdame",
|
||||
"pilot": "Pilot",
|
||||
"pokefan": "Pokéfan",
|
||||
"poké_fan": "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_rangers": "Pokémon-Ranger",
|
||||
"ranger": "Ranger",
|
||||
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
|
||||
"rich_kid": "Schnösel",
|
||||
"restaurant_staff": "Restaurant Angestellte",
|
||||
"rich_boy": "Schnösel",
|
||||
"rich_couple": "Reiches Paar",
|
||||
"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
|
||||
|
@ -3,6 +3,7 @@ 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}}!",
|
||||
|
@ -16,22 +16,29 @@ export const titles: SimpleTranslationEntries = {
|
||||
export const trainerClasses: SimpleTranslationEntries = {
|
||||
"ace_trainer": "Ace Trainer",
|
||||
"ace_trainer_female": "Ace Trainer",
|
||||
"ace_duo": "Ace Duo",
|
||||
"artist": "Artist",
|
||||
"artist_female": "Artist",
|
||||
"backers": "Backers",
|
||||
"backpacker": "Backpacker",
|
||||
"backpacker_female": "Backpacker",
|
||||
"backpackers": "Backpackers",
|
||||
"baker": "Baker",
|
||||
"battle_girl": "Battle Girl",
|
||||
"beauty": "Beauty",
|
||||
"beginners": "Beginners",
|
||||
"biker": "Biker",
|
||||
"black_belt": "Black Belt",
|
||||
"breeder": "Breeder",
|
||||
"breeder_female": "Breeder",
|
||||
"breeders": "Breeders",
|
||||
"clerk": "Clerk",
|
||||
"clerk_female": "Clerk",
|
||||
"colleagues": "Colleagues",
|
||||
"crush_kin": "Crush Kin",
|
||||
"cyclist": "Cyclist",
|
||||
"cyclist_female": "Cyclist",
|
||||
"cyclists": "Cyclists",
|
||||
"dancer": "Dancer",
|
||||
"dancer_female": "Dancer",
|
||||
"depot_agent": "Depot Agent",
|
||||
@ -39,6 +46,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"doctor_female": "Doctor",
|
||||
"fishermen": "Fishermen",
|
||||
"fishermen_female": "Fishermen",
|
||||
"gentleman": "Gentleman",
|
||||
"guitarist": "Guitarist",
|
||||
"guitarist_female": "Guitarist",
|
||||
"harlequin": "Harlequin",
|
||||
@ -52,6 +60,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"linebacker": "Linebacker",
|
||||
"maid": "Maid",
|
||||
"madame": "Madame",
|
||||
"medical_team": "Medical Team",
|
||||
"musican": "Musician",
|
||||
"hex_maniac": "Hex Maniac",
|
||||
"nurse": "Nurse",
|
||||
@ -59,32 +68,44 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"officer": "Officer",
|
||||
"parasol_lady": "Parasol Lady",
|
||||
"pilot": "Pilot",
|
||||
"pokefan": "Poké Fan",
|
||||
"poké_fan": "Poké Fan",
|
||||
"poké_fan_family": "Poké Fan Family",
|
||||
"preschooler": "Preschooler",
|
||||
"preschooler_female": "Preschooler",
|
||||
"preschoolers": "Preschoolers",
|
||||
"psychic": "Psychic",
|
||||
"psychic_female": "Psychic",
|
||||
"psychics": "Psychics",
|
||||
"pokémon_ranger": "Pokémon Ranger",
|
||||
"pokémon_rangers": "Pokémon Ranger",
|
||||
"ranger": "Ranger",
|
||||
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
|
||||
"rich_kid": "Rich Boy",
|
||||
"restaurant_staff": "Restaurant Staff",
|
||||
"rich_boy": "Rich Boy",
|
||||
"rich_couple": "Rich Couple",
|
||||
"rich_kids": "Rich Kids",
|
||||
"roughneck": "Roughneck",
|
||||
"scientist": "Scientist",
|
||||
"scientist_female": "Scientist",
|
||||
"scientists": "Scientists",
|
||||
"smasher": "Smasher",
|
||||
"snow_worker": "Snow Worker",
|
||||
"snow_worker_female": "Snow Worker",
|
||||
"striker": "Striker",
|
||||
"school_kid": "School Kid",
|
||||
"school_kid_female": "School Kid",
|
||||
"school_kids": "School Kids",
|
||||
"swimmer": "Swimmer",
|
||||
"swimmer_female": "Swimmer",
|
||||
"swimmers": "Swimmers",
|
||||
"twins": "Twins",
|
||||
"veteran": "Veteran",
|
||||
"veteran_female": "Veteran",
|
||||
"veteran_duo": "Veteran Duo",
|
||||
"waiter": "Waiter",
|
||||
"waitress": "Waitress",
|
||||
"worker": "Worker",
|
||||
"worker_female": "Worker",
|
||||
"workers": "Workers",
|
||||
"youngster": "Youngster"
|
||||
} as const;
|
||||
|
||||
|
@ -3,6 +3,7 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
export const battle: SimpleTranslationEntries = {
|
||||
"bossAppeared": "¡{{bossName}} te corta el paso!",
|
||||
"trainerAppeared": "¡{{trainerName}}\nte desafía!",
|
||||
"trainerAppearedDouble": "{{trainerName}}\nwould like to battle!",
|
||||
"singleWildAppeared": "¡Un {{pokemonName}} salvaje te corta el paso!",
|
||||
"multiWildAppeared": "¡Un {{pokemonName1}} y un {{pokemonName2}} salvajes\nte cortan el paso!",
|
||||
"playerComeBack": "¡{{pokemonName}}, ven aquí!",
|
||||
|
@ -16,22 +16,29 @@ export const titles: SimpleTranslationEntries = {
|
||||
export const trainerClasses: SimpleTranslationEntries = {
|
||||
"ace_trainer": "Ace Trainer",
|
||||
"ace_trainer_female": "Ace Trainer",
|
||||
"ace_duo": "Ace Duo",
|
||||
"artist": "Artist",
|
||||
"artist_female": "Artist",
|
||||
"backers": "Backers",
|
||||
"backpacker": "Backpacker",
|
||||
"backpacker_female": "Backpacker",
|
||||
"backpackers": "Backpackers",
|
||||
"baker": "Baker",
|
||||
"battle_girl": "Battle Girl",
|
||||
"beauty": "Beauty",
|
||||
"beginners": "Beginners",
|
||||
"biker": "Biker",
|
||||
"black_belt": "Black Belt",
|
||||
"breeder": "Breeder",
|
||||
"breeder_female": "Breeder",
|
||||
"breeders": "Breeders",
|
||||
"clerk": "Clerk",
|
||||
"clerk_female": "Clerk",
|
||||
"colleagues": "Colleagues",
|
||||
"crush_kin": "Crush Kin",
|
||||
"cyclist": "Cyclist",
|
||||
"cyclist_female": "Cyclist",
|
||||
"cyclists": "Cyclists",
|
||||
"dancer": "Dancer",
|
||||
"dancer_female": "Dancer",
|
||||
"depot_agent": "Depot Agent",
|
||||
@ -39,6 +46,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"doctor_female": "Doctor",
|
||||
"fishermen": "Fishermen",
|
||||
"fishermen_female": "Fishermen",
|
||||
"gentleman": "Gentleman",
|
||||
"guitarist": "Guitarist",
|
||||
"guitarist_female": "Guitarist",
|
||||
"harlequin": "Harlequin",
|
||||
@ -52,6 +60,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"linebacker": "Linebacker",
|
||||
"maid": "Maid",
|
||||
"madame": "Madame",
|
||||
"medical_team": "Medical Team",
|
||||
"musican": "Musician",
|
||||
"hex_maniac": "Hex Maniac",
|
||||
"nurse": "Nurse",
|
||||
@ -59,32 +68,44 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"officer": "Officer",
|
||||
"parasol_lady": "Parasol Lady",
|
||||
"pilot": "Pilot",
|
||||
"pokefan": "Poké Fan",
|
||||
"poké_fan": "Poké Fan",
|
||||
"poké_fan_family": "Poké Fan Family",
|
||||
"preschooler": "Preschooler",
|
||||
"preschooler_female": "Preschooler",
|
||||
"preschoolers": "Preschoolers",
|
||||
"psychic": "Psychic",
|
||||
"psychic_female": "Psychic",
|
||||
"psychics": "Psychics",
|
||||
"pokémon_ranger": "Pokémon Ranger",
|
||||
"pokémon_rangers": "Pokémon Ranger",
|
||||
"ranger": "Ranger",
|
||||
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
|
||||
"rich_kid": "Rich Boy",
|
||||
"restaurant_staff": "Restaurant Staff",
|
||||
"rich_boy": "Rich Boy",
|
||||
"rich_couple": "Rich Couple",
|
||||
"rich_kids": "Rich Kids",
|
||||
"roughneck": "Roughneck",
|
||||
"scientist": "Scientist",
|
||||
"scientist_female": "Scientist",
|
||||
"scientists": "Scientists",
|
||||
"smasher": "Smasher",
|
||||
"snow_worker": "Snow Worker",
|
||||
"snow_worker_female": "Snow Worker",
|
||||
"striker": "Striker",
|
||||
"school_kid": "School Kid",
|
||||
"school_kid_female": "School Kid",
|
||||
"school_kids": "School Kids",
|
||||
"swimmer": "Swimmer",
|
||||
"swimmer_female": "Swimmer",
|
||||
"swimmers": "Swimmers",
|
||||
"twins": "Twins",
|
||||
"veteran": "Veteran",
|
||||
"veteran_female": "Veteran",
|
||||
"veteran_duo": "Veteran Duo",
|
||||
"waiter": "Waiter",
|
||||
"waitress": "Waitress",
|
||||
"worker": "Worker",
|
||||
"worker_female": "Worker",
|
||||
"workers": "Workers",
|
||||
"youngster": "Youngster"
|
||||
} as const;
|
||||
|
||||
|
@ -1109,7 +1109,7 @@ export const ability: AbilityTranslationEntries = {
|
||||
name: "Turbine Éolienne",
|
||||
description: "Si le Pokémon est touché par une capacité faisant appel au vent, il se charge en électricité.",
|
||||
},
|
||||
zerotoHero: {
|
||||
zeroToHero: {
|
||||
name: "Supermutation",
|
||||
description: "Le Pokémon prend sa Forme Super en quittant le combat.",
|
||||
},
|
||||
@ -1129,23 +1129,23 @@ export const ability: AbilityTranslationEntries = {
|
||||
name: "Charge Quantique",
|
||||
description: "Quand un champ électrifié est actif ou que le Pokémon tient une capsule d’Énergie Booster, sa stat la plus élevée augmente.",
|
||||
},
|
||||
goodasGold: {
|
||||
goodAsGold: {
|
||||
name: "Corps en Or",
|
||||
description: "Le corps en or pur et robuste du Pokémon l’immunise contre les capacités de statut des autres Pokémon.",
|
||||
},
|
||||
vesselofRuin: {
|
||||
vesselOfRuin: {
|
||||
name: "Urne du Fléau",
|
||||
description: "Le pouvoir de l’urne qui appelle le fléau affaiblit l’Attaque Spéciale de tous les autres Pokémon.",
|
||||
},
|
||||
swordofRuin: {
|
||||
swordOfRuin: {
|
||||
name: "Épée du Fléau",
|
||||
description: "Le pouvoir de l’épée qui appelle le fléau affaiblit la Défense de tous les autres Pokémon.",
|
||||
},
|
||||
tabletsofRuin: {
|
||||
tabletsOfRuin: {
|
||||
name: "Bois du Fléau",
|
||||
description: "Le pouvoir du bois qui appelle le fléau affaiblit l’Attaque de tous les autres Pokémon.",
|
||||
},
|
||||
beadsofRuin: {
|
||||
beadsOfRuin: {
|
||||
name: "Perles du Fléau",
|
||||
description: "Le pouvoir des perles qui appellent le fléau affaiblit la Défense Spéciale de tous les autres Pokémon.",
|
||||
},
|
||||
|
@ -1,11 +1,12 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const battle: SimpleTranslationEntries = {
|
||||
"bossAppeared": "Un {{bossName}} apparaît.",
|
||||
"bossAppeared": "Un {{bossName}} apparait.",
|
||||
"trainerAppeared": "Un combat est lancé\npar {{trainerName}} !",
|
||||
"singleWildAppeared": "Un {{pokemonName}} sauvage apparaît !",
|
||||
"trainerAppearedDouble": "Un combat est lancé\npar {{trainerName}} !",
|
||||
"singleWildAppeared": "Un {{pokemonName}} sauvage apparait !",
|
||||
"multiWildAppeared": "Un {{pokemonName1}} et un {{pokemonName2}}\nsauvages apparaissent !",
|
||||
"playerComeBack": "{{pokemonName}}, on change !\nReviens !",
|
||||
"playerComeBack": "{{pokemonName}} !\nReviens !",
|
||||
"trainerComeBack": "{{trainerName}} retire {{pokemonName}} !",
|
||||
"playerGo": "{{pokemonName}} ! Go !",
|
||||
"trainerGo": "{{pokemonName}} est envoyé par\n{{trainerName}} !",
|
||||
|
@ -1,37 +1,37 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const splashMessages: SimpleTranslationEntries = {
|
||||
"battlesWon": "Battles Won!",
|
||||
"joinTheDiscord": "Join the Discord!",
|
||||
"infiniteLevels": "Infinite Levels!",
|
||||
"everythingStacks": "Everything Stacks!",
|
||||
"battlesWon": "combats gagnés !",
|
||||
"joinTheDiscord": "Rejoins le Discord !",
|
||||
"infiniteLevels": "Niveaux infinis !",
|
||||
"everythingStacks": "Tout se cumule !",
|
||||
"optionalSaveScumming": "Optional Save Scumming!",
|
||||
"biomes": "35 Biomes!",
|
||||
"biomes": "35 biomes !",
|
||||
"openSource": "Open Source !",
|
||||
"playWithSpeed": "Play with 5x Speed!",
|
||||
"liveBugTesting": "Live Bug Testing!",
|
||||
"heavyInfluence": "Heavy RoR2 Influence!",
|
||||
"pokemonRiskAndPokemonRain": "Pokémon Risk and Pokémon Rain!",
|
||||
"nowWithMoreSalt": "Now with 33% More Salt!",
|
||||
"infiniteFusionAtHome": "Infinite Fusion at Home!",
|
||||
"brokenEggMoves": "Broken Egg Moves!",
|
||||
"magnificent": "Magnificent!",
|
||||
"playWithSpeed": "Joue en vitesse x5 !",
|
||||
"liveBugTesting": "Tests de bugs en direct !",
|
||||
"heavyInfluence": "Grosse influence de RoR2 !",
|
||||
"pokemonRiskAndPokemonRain": "Pokémon Risk et Pokémon Rain !",
|
||||
"nowWithMoreSalt": "Désormais avec 33% de sel en plus !",
|
||||
"infiniteFusionAtHome": "Infinite Fusion, chez vous !",
|
||||
"brokenEggMoves": "Des Capacités Œuf craquées !",
|
||||
"magnificent": "Magnifique !",
|
||||
"mubstitute": "Mubstitute !",
|
||||
"thatsCrazy": "That\'s Crazy!",
|
||||
"oranceJuice": "Orance Juice!",
|
||||
"questionableBalancing": "Questionable Balancing!",
|
||||
"coolShaders": "Cool Shaders!",
|
||||
"aiFree": "AI-Free!",
|
||||
"suddenDifficultySpikes": "Sudden Difficulty Spikes!",
|
||||
"basedOnAnUnfinishedFlashGame": "Based on an Unfinished Flash Game!",
|
||||
"moreAddictiveThanIntended": "More Addictive than Intended!",
|
||||
"mostlyConsistentSeeds": "Mostly Consistent Seeds!",
|
||||
"achievementPointsDontDoAnything": "Achievement Points Don\'t Do Anything!",
|
||||
"youDoNotStartAtLevel": "You Do Not Start at Level 2000!",
|
||||
"dontTalkAboutTheManaphyEggIncident": "Don\'t Talk About the Manaphy Egg Incident!",
|
||||
"alsoTryPokengine": "Also Try Pokéngine!",
|
||||
"alsoTryEmeraldRogue": "Also Try Emerald Rogue!",
|
||||
"alsoTryRadicalRed": "Also Try Radical Red!",
|
||||
"thatsCrazy": "C’est une dinguerie !",
|
||||
"oranceJuice": "Jus d’orange !",
|
||||
"questionableBalancing": "Équilibrage douteux !",
|
||||
"coolShaders": "Cool shaders !",
|
||||
"aiFree": "Garanti sans IA !",
|
||||
"suddenDifficultySpikes": "De soudains pics de difficultés !",
|
||||
"basedOnAnUnfinishedFlashGame": "Basé sur un jeu Flash abandonné !",
|
||||
"moreAddictiveThanIntended": "Plus addictif que prévu !",
|
||||
"mostlyConsistentSeeds": "Des seeds à peu près stables !",
|
||||
"achievementPointsDontDoAnything": "Les Points de Succès servent à rien !",
|
||||
"youDoNotStartAtLevel": "Ne commence pas au Niveau 2000 !",
|
||||
"dontTalkAboutTheManaphyEggIncident": "Ne parle pas de l'incident de l’Œuf de Manaphy !",
|
||||
"alsoTryPokengine": "Essaye aussi Pokéngine !",
|
||||
"alsoTryEmeraldRogue": "Essaye aussi Emerald Rogue!",
|
||||
"alsoTryRadicalRed": "Essaye aussi Radical Red !",
|
||||
"eeveeExpo": "Eevee Expo !",
|
||||
"ynoproject": "YNOproject !",
|
||||
} as const;
|
@ -16,22 +16,29 @@ export const titles: SimpleTranslationEntries = {
|
||||
export const trainerClasses: SimpleTranslationEntries = {
|
||||
"ace_trainer": "Topdresseur",
|
||||
"ace_trainer_female": "Topdresseuse",
|
||||
"ace_duo": "Topdresseurs",
|
||||
"artist": "Artiste",
|
||||
"artist_female": "Artiste",
|
||||
"backers": "Pompom Girls",
|
||||
"backpacker": "Randonneur",
|
||||
"backpacker_female": "Randonneuse",
|
||||
"backpackers": "Randonneurs",
|
||||
"baker": "Boulangère",
|
||||
"battle_girl": "Combattante",
|
||||
"beauty": "Canon",
|
||||
"beginners": "Beginners",
|
||||
"biker": "Motard",
|
||||
"black_belt": "Karatéka",
|
||||
"breeder": "Éleveur",
|
||||
"breeder_female": "Éleveuse",
|
||||
"breeders": "Éleveurs",
|
||||
"clerk": "Employé",
|
||||
"clerk_female": "Employée",
|
||||
"colleagues": "Collègues de Bureau",
|
||||
"crush_kin": "Crush Kin",
|
||||
"cyclist": "Cycliste",
|
||||
"cyclist_female": "Cycliste",
|
||||
"cyclists": "Cyclistes",
|
||||
"dancer": "Danseur",
|
||||
"dancer_female": "Danseuse",
|
||||
"depot_agent": "Cheminot",
|
||||
@ -39,6 +46,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"doctor_female": "Docteure",
|
||||
"fishermen": "Pêcheur",
|
||||
"fishermen_female": "Pêcheuse",
|
||||
"gentleman": "Gentleman",
|
||||
"guitarist": "Guitariste",
|
||||
"guitarist_female": "Guitariste",
|
||||
"harlequin": "Clown",
|
||||
@ -53,38 +61,51 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"maid": "Gouvernante",
|
||||
"madame": "Mondaine",
|
||||
"musican": "Musicien",
|
||||
"hex_maniac": "Hex Maniac",
|
||||
"medical_team": "Médecins",
|
||||
"hex_maniac": "Mystimaniac",
|
||||
"nurse": "Infirmière",
|
||||
"nursery_aide": "Institutrice",
|
||||
"officer": "Policier",
|
||||
"parasol_lady": "Sœur Parasol",
|
||||
"pilot": "Pilote",
|
||||
"pokefan": "Pokéfan",
|
||||
"poké_fan": "Poké Fan",
|
||||
"poké_fan_family": "Couple de Pokéfans",
|
||||
"preschooler": "Petit",
|
||||
"preschooler_female": "Petite",
|
||||
"preschoolers": "Petits",
|
||||
"psychic": "Kinésiste",
|
||||
"psychic_female": "Kinésiste",
|
||||
"psychics": "Kinésistes",
|
||||
"pokémon_ranger": "Pokémon Ranger",
|
||||
"pokémon_rangers": "Pokémon Rangers",
|
||||
"ranger": "Ranger",
|
||||
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
|
||||
"rich_kid": "Richard",
|
||||
"restaurant_staff": "Serveurs",
|
||||
"rich_boy": "Richard",
|
||||
"rich_couple": "Couple de Bourgeois",
|
||||
"rich_kids": "Richards",
|
||||
"roughneck": "Loubard",
|
||||
"scientist": "Scientifique",
|
||||
"scientist_female": "Scientifique",
|
||||
"scientists": "Scientifiques",
|
||||
"smasher": "Tenniswoman",
|
||||
"snow_worker": "Ouvrier Alpin",
|
||||
"snow_worker_female": "Ouvrière Alpine",
|
||||
"striker": "Footballeur",
|
||||
"school_kid": "Élève",
|
||||
"school_kid_female": "Élève",
|
||||
"school_kids": "Élèves",
|
||||
"swimmer": "Nageur",
|
||||
"swimmer_female": "Nageuse",
|
||||
"swimmers": "Nageurs",
|
||||
"twins": "Jumelles",
|
||||
"veteran": "Vénérable",
|
||||
"veteran_female": "Vénérable",
|
||||
"veteran_duo": "Vénérables",
|
||||
"waiter": "Serveur",
|
||||
"waitress": "Serveuse",
|
||||
"worker": "Ouvrier",
|
||||
"worker_female": "Ouvrière",
|
||||
"workers": "Ouvriers",
|
||||
"youngster": "Gamin"
|
||||
} as const;
|
||||
|
||||
|
@ -3,6 +3,7 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
export const battle: SimpleTranslationEntries = {
|
||||
"bossAppeared": "{{bossName}} è apparso.",
|
||||
"trainerAppeared": "{{trainerName}}\nvuole combattere!",
|
||||
"trainerAppearedDouble": "{{trainerName}}\nwould like to battle!",
|
||||
"singleWildAppeared": "Appare {{pokemonName}} selvatico!",
|
||||
"multiWildAppeared": "Appaiono {{pokemonName1}}\ne {{pokemonName2}} salvatici!",
|
||||
"playerComeBack": "Rientra, {{pokemonName}}!",
|
||||
|
@ -16,22 +16,29 @@ export const titles: SimpleTranslationEntries = {
|
||||
export const trainerClasses: SimpleTranslationEntries = {
|
||||
"ace_trainer": "Ace Trainer",
|
||||
"ace_trainer_female": "Ace Trainer",
|
||||
"ace_duo": "Ace Duo",
|
||||
"artist": "Artist",
|
||||
"artist_female": "Artist",
|
||||
"backers": "Backers",
|
||||
"backpacker": "Backpacker",
|
||||
"backpacker_female": "Backpacker",
|
||||
"backpackers": "Backpackers",
|
||||
"baker": "Baker",
|
||||
"battle_girl": "Battle Girl",
|
||||
"beauty": "Beauty",
|
||||
"beginners": "Beginners",
|
||||
"biker": "Biker",
|
||||
"black_belt": "Black Belt",
|
||||
"breeder": "Breeder",
|
||||
"breeder_female": "Breeder",
|
||||
"breeders": "Breeders",
|
||||
"clerk": "Clerk",
|
||||
"clerk_female": "Clerk",
|
||||
"colleagues": "Colleagues",
|
||||
"crush_kin": "Crush Kin",
|
||||
"cyclist": "Cyclist",
|
||||
"cyclist_female": "Cyclist",
|
||||
"cyclists": "Cyclists",
|
||||
"dancer": "Dancer",
|
||||
"dancer_female": "Dancer",
|
||||
"depot_agent": "Depot Agent",
|
||||
@ -39,6 +46,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"doctor_female": "Doctor",
|
||||
"fishermen": "Fishermen",
|
||||
"fishermen_female": "Fishermen",
|
||||
"gentleman": "Gentleman",
|
||||
"guitarist": "Guitarist",
|
||||
"guitarist_female": "Guitarist",
|
||||
"harlequin": "Harlequin",
|
||||
@ -52,6 +60,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"linebacker": "Linebacker",
|
||||
"maid": "Maid",
|
||||
"madame": "Madame",
|
||||
"medical_team": "Medical Team",
|
||||
"musican": "Musician",
|
||||
"hex_maniac": "Hex Maniac",
|
||||
"nurse": "Nurse",
|
||||
@ -59,32 +68,44 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"officer": "Officer",
|
||||
"parasol_lady": "Parasol Lady",
|
||||
"pilot": "Pilot",
|
||||
"pokefan": "Poké Fan",
|
||||
"poké_fan": "Poké Fan",
|
||||
"poké_fan_family": "Poké Fan Family",
|
||||
"preschooler": "Preschooler",
|
||||
"preschooler_female": "Preschooler",
|
||||
"preschoolers": "Preschoolers",
|
||||
"psychic": "Psychic",
|
||||
"psychic_female": "Psychic",
|
||||
"psychics": "Psychics",
|
||||
"pokémon_ranger": "Pokémon Ranger",
|
||||
"pokémon_rangers": "Pokémon Ranger",
|
||||
"ranger": "Ranger",
|
||||
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
|
||||
"rich_kid": "Rich Boy",
|
||||
"restaurant_staff": "Restaurant Staff",
|
||||
"rich_boy": "Rich Boy",
|
||||
"rich_couple": "Rich Couple",
|
||||
"rich_kids": "Rich Kids",
|
||||
"roughneck": "Roughneck",
|
||||
"scientist": "Scientist",
|
||||
"scientist_female": "Scientist",
|
||||
"scientists": "Scientists",
|
||||
"smasher": "Smasher",
|
||||
"snow_worker": "Snow Worker",
|
||||
"snow_worker_female": "Snow Worker",
|
||||
"striker": "Striker",
|
||||
"school_kid": "School Kid",
|
||||
"school_kid_female": "School Kid",
|
||||
"school_kids": "School Kids",
|
||||
"swimmer": "Swimmer",
|
||||
"swimmer_female": "Swimmer",
|
||||
"swimmers": "Swimmers",
|
||||
"twins": "Twins",
|
||||
"veteran": "Veteran",
|
||||
"veteran_female": "Veteran",
|
||||
"veteran_duo": "Veteran Duo",
|
||||
"waiter": "Waiter",
|
||||
"waitress": "Waitress",
|
||||
"worker": "Worker",
|
||||
"worker_female": "Worker",
|
||||
"workers": "Workers",
|
||||
"youngster": "Youngster"
|
||||
} as const;
|
||||
|
||||
|
@ -3,6 +3,7 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
export const battle: SimpleTranslationEntries = {
|
||||
"bossAppeared": "{{bossName}} apareceu.",
|
||||
"trainerAppeared": "{{trainerName}}\nquer batalhar!",
|
||||
"trainerAppearedDouble": "{{trainerName}}\nwould like to battle!",
|
||||
"singleWildAppeared": "Um {{pokemonName}} selvagem apareceu!",
|
||||
"multiWildAppeared": "Um {{pokemonName1}} e um {{pokemonName2}} selvagens\napareceram!",
|
||||
"playerComeBack": "{{pokemonName}}, retorne!",
|
||||
|
@ -16,22 +16,29 @@ export const titles: SimpleTranslationEntries = {
|
||||
export const trainerClasses: SimpleTranslationEntries = {
|
||||
"ace_trainer": "Trinador Ás",
|
||||
"ace_trainer_female": "Trinadora Ás",
|
||||
"ace_duo": "Ace Duo",
|
||||
"artist": "Artista",
|
||||
"artist_female": "Artista",
|
||||
"backpackers": "Backpackers",
|
||||
"backers": "Torcedores",
|
||||
"backpacker": "Mochileiro",
|
||||
"backpacker_female": "Mochileira",
|
||||
"baker": "Padeira",
|
||||
"battle_girl": "Lutadora",
|
||||
"beauty": "Modelo",
|
||||
"beginners": "Beginners",
|
||||
"biker": "Motoqueiro",
|
||||
"black_belt": "Faixa Preta",
|
||||
"breeder": "Criador",
|
||||
"breeder_female": "Criadora",
|
||||
"breeders": "Breeders",
|
||||
"clerk": "Funcionário",
|
||||
"clerk_female": "Funcionária",
|
||||
"colleagues": "Colleagues",
|
||||
"crush_kin": "Crush Kin",
|
||||
"cyclist": "Ciclista",
|
||||
"cyclist_female": "Ciclista",
|
||||
"cyclists": "Cyclists",
|
||||
"dancer": "Dançarino",
|
||||
"dancer_female": "Dançarina",
|
||||
"depot_agent": "Ferroviário",
|
||||
@ -39,6 +46,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"doctor_female": "Doutora",
|
||||
"fishermen": "Pescador",
|
||||
"fishermen_female": "Pescadora",
|
||||
"gentleman": "Gentleman",
|
||||
"guitarist": "Guitarrista",
|
||||
"guitarist_female": "Guitarrista",
|
||||
"harlequin": "Arlequim",
|
||||
@ -53,38 +61,51 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"maid": "Doméstica",
|
||||
"madame": "Madame",
|
||||
"musican": "Músico",
|
||||
"medical_team": "Medical Team",
|
||||
"hex_maniac": "Ocultista",
|
||||
"nurse": "Enfermeira",
|
||||
"nursery_aide": "Professora do Berçário",
|
||||
"officer": "Policial",
|
||||
"parasol_lady": "Moça de Sombrinha",
|
||||
"pilot": "Piloto",
|
||||
"pokefan": "Pokefã",
|
||||
"poké_fan": "Pokefã",
|
||||
"poké_fan_family": "Poké Fan Family",
|
||||
"preschooler": "Menino do Prezinho",
|
||||
"preschooler_female": "Menina do Prezinho",
|
||||
"preschoolers": "Preschoolers",
|
||||
"psychic": "Médium",
|
||||
"psychic_female": "Médium",
|
||||
"psychics": "Psychics",
|
||||
"pokémon_ranger": "Pokémon Ranger",
|
||||
"pokémon_rangers": "Pokémon Ranger",
|
||||
"ranger": "Guarda",
|
||||
"rich": "Cavalheira", // Gentleman is the english name but the trainerType is rich
|
||||
"rich_kid": "Riquinho",
|
||||
"restaurant_staff": "Restaurant Staff",
|
||||
"rich_boy": "Rich Boy",
|
||||
"rich_couple": "Rich Couple",
|
||||
"rich_kids": "Rich Kids",
|
||||
"roughneck": "Arruaceiro",
|
||||
"scientist": "Cientista",
|
||||
"scientist_female": "Cientista",
|
||||
"scientists": "Scientists",
|
||||
"smasher": "Tenista",
|
||||
"snow_worker": "Operário da Neve",
|
||||
"snow_worker_female": "Operária da Neve",
|
||||
"striker": "Atacante",
|
||||
"school_kid": "Estudante",
|
||||
"school_kid_female": "Estudante",
|
||||
"school_kids": "School Kids",
|
||||
"swimmer": "Nadador",
|
||||
"swimmer_female": "Nadadora",
|
||||
"swimmers": "Swimmers",
|
||||
"twins": "Gêmeos",
|
||||
"veteran": "Veterano",
|
||||
"veteran_female": "Veterana",
|
||||
"veteran_duo": "Veteran Duo",
|
||||
"waiter": "Garçom",
|
||||
"waitress": "Garçonete",
|
||||
"worker": "Operário",
|
||||
"worker_female": "Operária",
|
||||
"workers": "Workers",
|
||||
"youngster": "Jovem",
|
||||
} as const;
|
||||
|
||||
|
@ -3,6 +3,7 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
export const battle: SimpleTranslationEntries = {
|
||||
"bossAppeared": "{{bossName}} 出现了。",
|
||||
"trainerAppeared": "{{trainerName}}\n想要和你对战!",
|
||||
"trainerAppearedDouble": "{{trainerName}}\nwould like to battle!",
|
||||
"singleWildAppeared": "一只野生 {{pokemonName}} 出现了。!",
|
||||
"multiWildAppeared": "野生的 {{pokemonName1}}\n和 {{pokemonName2}} 出现了。!",
|
||||
"playerComeBack": "回来吧, {{pokemonName}}!",
|
||||
|
@ -16,22 +16,29 @@ export const titles: SimpleTranslationEntries = {
|
||||
export const trainerClasses: SimpleTranslationEntries = {
|
||||
"ace_trainer": "Ace Trainer",
|
||||
"ace_trainer_female": "Ace Trainer",
|
||||
"ace_duo": "Ace Duo",
|
||||
"artist": "Artist",
|
||||
"artist_female": "Artist",
|
||||
"backers": "Backers",
|
||||
"backpacker": "Backpacker",
|
||||
"backpacker_female": "Backpacker",
|
||||
"backpackers": "Backpackers",
|
||||
"baker": "Baker",
|
||||
"battle_girl": "Battle Girl",
|
||||
"beauty": "Beauty",
|
||||
"beginners": "Beginners",
|
||||
"biker": "Biker",
|
||||
"black_belt": "Black Belt",
|
||||
"breeder": "Breeder",
|
||||
"breeder_female": "Breeder",
|
||||
"breeders": "Breeders",
|
||||
"clerk": "Clerk",
|
||||
"clerk_female": "Clerk",
|
||||
"colleagues": "Colleagues",
|
||||
"crush_kin": "Crush Kin",
|
||||
"cyclist": "Cyclist",
|
||||
"cyclist_female": "Cyclist",
|
||||
"cyclists": "Cyclists",
|
||||
"dancer": "Dancer",
|
||||
"dancer_female": "Dancer",
|
||||
"depot_agent": "Depot Agent",
|
||||
@ -39,6 +46,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"doctor_female": "Doctor",
|
||||
"fishermen": "Fishermen",
|
||||
"fishermen_female": "Fishermen",
|
||||
"gentleman": "Gentleman",
|
||||
"guitarist": "Guitarist",
|
||||
"guitarist_female": "Guitarist",
|
||||
"harlequin": "Harlequin",
|
||||
@ -52,6 +60,7 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"linebacker": "Linebacker",
|
||||
"maid": "Maid",
|
||||
"madame": "Madame",
|
||||
"medical_team": "Medical Team",
|
||||
"musican": "Musician",
|
||||
"hex_maniac": "Hex Maniac",
|
||||
"nurse": "Nurse",
|
||||
@ -59,32 +68,44 @@ export const trainerClasses: SimpleTranslationEntries = {
|
||||
"officer": "Officer",
|
||||
"parasol_lady": "Parasol Lady",
|
||||
"pilot": "Pilot",
|
||||
"pokefan": "Poké Fan",
|
||||
"poké_fan": "Poké Fan",
|
||||
"poké_fan_family": "Poké Fan Family",
|
||||
"preschooler": "Preschooler",
|
||||
"preschooler_female": "Preschooler",
|
||||
"preschoolers": "Preschoolers",
|
||||
"psychic": "Psychic",
|
||||
"psychic_female": "Psychic",
|
||||
"psychics": "Psychics",
|
||||
"pokémon_ranger": "Pokémon Ranger",
|
||||
"pokémon_rangers": "Pokémon Ranger",
|
||||
"ranger": "Ranger",
|
||||
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
|
||||
"rich_kid": "Rich Boy",
|
||||
"restaurant_staff": "Restaurant Staff",
|
||||
"rich_boy": "Rich Boy",
|
||||
"rich_couple": "Rich Couple",
|
||||
"rich_kids": "Rich Kids",
|
||||
"roughneck": "Roughneck",
|
||||
"scientist": "Scientist",
|
||||
"scientist_female": "Scientist",
|
||||
"scientists": "Scientists",
|
||||
"smasher": "Smasher",
|
||||
"snow_worker": "Snow Worker",
|
||||
"snow_worker_female": "Snow Worker",
|
||||
"striker": "Striker",
|
||||
"school_kid": "School Kid",
|
||||
"school_kid_female": "School Kid",
|
||||
"school_kids": "School Kids",
|
||||
"swimmer": "Swimmer",
|
||||
"swimmer_female": "Swimmer",
|
||||
"swimmers": "Swimmers",
|
||||
"twins": "Twins",
|
||||
"veteran": "Veteran",
|
||||
"veteran_female": "Veteran",
|
||||
"veteran_duo": "Veteran Duo",
|
||||
"waiter": "Waiter",
|
||||
"waitress": "Waitress",
|
||||
"worker": "Worker",
|
||||
"worker_female": "Worker",
|
||||
"workers": "Workers",
|
||||
"youngster": "Youngster"
|
||||
} as const;
|
||||
|
||||
@ -214,5 +235,6 @@ export const trainerNames: SimpleTranslationEntries = {
|
||||
"nemona": "Nemona",
|
||||
"kieran": "Kieran",
|
||||
"leon": "Leon",
|
||||
"rival": "Rival",
|
||||
"rival": "Finn",
|
||||
"rival_female": "Ivy",
|
||||
} as const;
|
||||
|
@ -841,8 +841,15 @@ export class EncounterPhase extends BattlePhase {
|
||||
if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS)
|
||||
return i18next.t('battle:bossAppeared', {bossName: enemyField[0].name});
|
||||
|
||||
if (this.scene.currentBattle.battleType === BattleType.TRAINER)
|
||||
if (this.scene.currentBattle.battleType === BattleType.TRAINER) {
|
||||
if (this.scene.currentBattle.double) {
|
||||
return i18next.t('battle:trainerAppearedDouble', {trainerName: this.scene.currentBattle.trainer.getName(TrainerSlot.NONE, true)});
|
||||
|
||||
}
|
||||
else {
|
||||
return i18next.t('battle:trainerAppeared', {trainerName: this.scene.currentBattle.trainer.getName(TrainerSlot.NONE, true)});
|
||||
}
|
||||
}
|
||||
|
||||
return enemyField.length === 1
|
||||
? i18next.t('battle:singleWildAppeared', {pokemonName: enemyField[0].name})
|
||||
|
Loading…
Reference in New Issue
Block a user