Merge pull request #4403 from flx-sta/translations/sync-beta-2024-09-24

Sync `beta` -> `translation` | 2024-09-24
This commit is contained in:
Frederico Santos 2024-09-24 16:22:26 +01:00 committed by GitHub
commit d8492c013a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
501 changed files with 9889 additions and 1380 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -366,6 +366,10 @@ export class TypeImmunityAbAttr extends PreDefendAbAttr {
return false;
}
getImmuneType(): Type | null {
return this.immuneType;
}
override getCondition(): AbAttrCondition | null {
return this.condition;
}
@ -4296,6 +4300,10 @@ export class ReduceBerryUseThresholdAbAttr extends AbAttr {
}
}
/**
* Ability attribute used for abilites that change the ability owner's weight
* Used for Heavy Metal (doubling weight) and Light Metal (halving weight)
*/
export class WeightMultiplierAbAttr extends AbAttr {
private multiplier: integer;

View File

@ -2281,6 +2281,36 @@ export class TarShotTag extends BattlerTag {
}
}
/**
* Battler Tag that keeps track of how many times the user has Autotomized
* Each count of Autotomization reduces the weight by 100kg
*/
export class AutotomizedTag extends BattlerTag {
public autotomizeCount: number = 0;
constructor(sourceMove: Moves = Moves.AUTOTOMIZE) {
super(BattlerTagType.AUTOTOMIZED, BattlerTagLapseType.CUSTOM, 1, sourceMove);
}
/**
* Adds an autotomize count to the Pokemon. Each stack reduces weight by 100kg
* If the Pokemon is over 0.1kg it also displays a message.
* @param pokemon The Pokemon that is being autotomized
*/
onAdd(pokemon: Pokemon): void {
const minWeight = 0.1;
if (pokemon.getWeight() > minWeight) {
pokemon.scene.queueMessage(i18next.t("battlerTags:autotomizeOnAdd", {
pokemonNameWithAffix: getPokemonNameWithAffix(pokemon)
}));
}
this.autotomizeCount += 1;
}
onOverlap(pokemon: Pokemon): void {
this.onAdd(pokemon);
}
}
export class SubstituteTag extends BattlerTag {
/** The substitute's remaining HP. If HP is depleted, the Substitute fades. */
public hp: number;
@ -2568,6 +2598,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: number, source
return new GorillaTacticsTag();
case BattlerTagType.SUBSTITUTE:
return new SubstituteTag(sourceMove, sourceId);
case BattlerTagType.AUTOTOMIZED:
return new AutotomizedTag();
case BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON:
return new MysteryEncounterPostSummonTag();
case BattlerTagType.HEAL_BLOCK:

View File

@ -447,30 +447,6 @@ export class SingleGenerationChallenge extends Challenge {
applyFixedBattle(waveIndex: Number, battleConfig: FixedBattleConfig): boolean {
let trainerTypes: TrainerType[] = [];
switch (waveIndex) {
case 35:
trainerTypes = [ TrainerType.ROCKET_GRUNT, TrainerType.ROCKET_GRUNT, Utils.randSeedItem([ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ]), TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, Utils.randSeedItem([ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ]), TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ];
break;
case 62:
trainerTypes = [ TrainerType.ROCKET_GRUNT, TrainerType.ROCKET_GRUNT, Utils.randSeedItem([ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ]), TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, Utils.randSeedItem([ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ]), TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ];
break;
case 64:
trainerTypes = [ TrainerType.ROCKET_GRUNT, TrainerType.ROCKET_GRUNT, Utils.randSeedItem([ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ]), TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, Utils.randSeedItem([ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ]), TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ];
break;
case 66:
trainerTypes = [ Utils.randSeedItem([ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ]), Utils.randSeedItem([ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ]), Utils.randSeedItem([ TrainerType.TABITHA, TrainerType.COURTNEY, TrainerType.MATT, TrainerType.SHELLY ]), Utils.randSeedItem([ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ]), Utils.randSeedItem([ TrainerType.ZINZOLIN, TrainerType.ROOD ]), Utils.randSeedItem([ TrainerType.XEROSIC, TrainerType.BRYONY ]), Utils.randSeedItem([ TrainerType.FABA, TrainerType.PLUMERIA ]), TrainerType.OLEANA, Utils.randSeedItem([ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]) ];
break;
case 112:
trainerTypes = [ TrainerType.ROCKET_GRUNT, TrainerType.ROCKET_GRUNT, Utils.randSeedItem([ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ]), TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, Utils.randSeedItem([ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ]), TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ];
break;
case 114:
trainerTypes = [ Utils.randSeedItem([ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ]), Utils.randSeedItem([ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ]), Utils.randSeedItem([ TrainerType.TABITHA, TrainerType.COURTNEY, TrainerType.MATT, TrainerType.SHELLY ]), Utils.randSeedItem([ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ]), Utils.randSeedItem([ TrainerType.ZINZOLIN, TrainerType.ROOD ]), Utils.randSeedItem([ TrainerType.XEROSIC, TrainerType.BRYONY ]), Utils.randSeedItem([ TrainerType.FABA, TrainerType.PLUMERIA ]), TrainerType.OLEANA, Utils.randSeedItem([ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]) ];
break;
case 115:
trainerTypes = [ TrainerType.ROCKET_BOSS_GIOVANNI_1, TrainerType.ROCKET_BOSS_GIOVANNI_1, Utils.randSeedItem([ TrainerType.MAXIE, TrainerType.ARCHIE ]), TrainerType.CYRUS, TrainerType.GHETSIS, TrainerType.LYSANDRE, Utils.randSeedItem([ TrainerType.LUSAMINE, TrainerType.GUZMA ]), TrainerType.ROSE, TrainerType.PENNY ];
break;
case 165:
trainerTypes = [ TrainerType.ROCKET_BOSS_GIOVANNI_2, TrainerType.ROCKET_BOSS_GIOVANNI_2, Utils.randSeedItem([ TrainerType.MAXIE_2, TrainerType.ARCHIE_2 ]), TrainerType.CYRUS_2, TrainerType.GHETSIS_2, TrainerType.LYSANDRE_2, Utils.randSeedItem([ TrainerType.LUSAMINE_2, TrainerType.GUZMA_2 ]), TrainerType.ROSE_2, TrainerType.PENNY_2 ];
break;
case 182:
trainerTypes = [ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, Utils.randSeedItem([ TrainerType.HALA, TrainerType.MOLAYNE ]), TrainerType.MARNIE_ELITE, TrainerType.RIKA ];
break;

View File

@ -5174,31 +5174,29 @@ export class RevivalBlessingAttr extends MoveEffectAttr {
}
export class ForceSwitchOutAttr extends MoveEffectAttr {
private user: boolean;
private batonPass: boolean;
constructor(user?: boolean, batonPass?: boolean) {
constructor(
private selfSwitch: boolean = false,
private batonPass: boolean = false
) {
super(false, MoveEffectTrigger.POST_APPLY, false, true);
this.user = !!user;
this.batonPass = !!batonPass;
}
isBatonPass() {
return this.batonPass;
}
// TODO: Why is this a Promise?
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise<boolean> {
return new Promise(resolve => {
// Check if the move category is not STATUS or if the switch out condition is not met
if (!this.getSwitchOutCondition()(user, target, move)) {
return resolve(false);
}
// Move the switch out logic inside the conditional block
// This ensures that the switch out only happens when the conditions are met
const switchOutTarget = this.user ? user : target;
if (switchOutTarget instanceof PlayerPokemon) {
// Move the switch out logic inside the conditional block
// This ensures that the switch out only happens when the conditions are met
const switchOutTarget = this.selfSwitch ? user : target;
if (switchOutTarget instanceof PlayerPokemon) {
switchOutTarget.leaveField(!this.batonPass);
if (switchOutTarget.hp > 0) {
@ -5207,41 +5205,43 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
} else {
resolve(false);
}
return;
} else if (user.scene.currentBattle.battleType !== BattleType.WILD) {
// Switch out logic for trainer battles
return;
} else if (user.scene.currentBattle.battleType !== BattleType.WILD) {
// Switch out logic for trainer battles
switchOutTarget.leaveField(!this.batonPass);
if (switchOutTarget.hp > 0) {
// for opponent switching out
user.scene.prependToPhase(new SwitchSummonPhase(user.scene, switchOutTarget.getFieldIndex(), (user.scene.currentBattle.trainer ? user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0), false, this.batonPass, false), MoveEndPhase);
if (switchOutTarget.hp > 0) {
// for opponent switching out
user.scene.prependToPhase(new SwitchSummonPhase(user.scene, switchOutTarget.getFieldIndex(),
(user.scene.currentBattle.trainer ? user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0),
false, this.batonPass, false), MoveEndPhase);
}
} else {
// Switch out logic for everything else (eg: WILD battles)
switchOutTarget.leaveField(false);
} else {
// Switch out logic for everything else (eg: WILD battles)
switchOutTarget.leaveField(false);
if (switchOutTarget.hp) {
user.scene.queueMessage(i18next.t("moveTriggers:fled", {pokemonName: getPokemonNameWithAffix(switchOutTarget)}), null, true, 500);
if (switchOutTarget.hp) {
user.scene.queueMessage(i18next.t("moveTriggers:fled", {pokemonName: getPokemonNameWithAffix(switchOutTarget)}), null, true, 500);
// in double battles redirect potential moves off fled pokemon
if (switchOutTarget.scene.currentBattle.double) {
const allyPokemon = switchOutTarget.getAlly();
switchOutTarget.scene.redirectPokemonMoves(switchOutTarget, allyPokemon);
}
}
}
if (!switchOutTarget.getAlly()?.isActive(true)) {
user.scene.clearEnemyHeldItemModifiers();
if (!switchOutTarget.getAlly()?.isActive(true)) {
user.scene.clearEnemyHeldItemModifiers();
if (switchOutTarget.hp) {
user.scene.pushPhase(new BattleEndPhase(user.scene));
user.scene.pushPhase(new NewBattlePhase(user.scene));
}
}
}
if (switchOutTarget.hp) {
user.scene.pushPhase(new BattleEndPhase(user.scene));
user.scene.pushPhase(new NewBattlePhase(user.scene));
}
}
}
resolve(true);
});
resolve(true);
});
}
getCondition(): MoveConditionFunc {
@ -5256,29 +5256,33 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
getSwitchOutCondition(): MoveConditionFunc {
return (user, target, move) => {
const switchOutTarget = (this.user ? user : target);
const switchOutTarget = (this.selfSwitch ? user : target);
const player = switchOutTarget instanceof PlayerPokemon;
if (!this.user && move.hitsSubstitute(user, target)) {
return false;
if (!this.selfSwitch) {
if (move.hitsSubstitute(user, target)) {
return false;
}
const blockedByAbility = new Utils.BooleanHolder(false);
applyAbAttrs(ForceSwitchOutImmunityAbAttr, target, blockedByAbility);
return !blockedByAbility.value;
}
if (!this.user && move.category === MoveCategory.STATUS && (target.hasAbilityWithAttr(ForceSwitchOutImmunityAbAttr))) {
return false;
}
if (!player && !user.scene.currentBattle.battleType) {
if (!player && user.scene.currentBattle.battleType === BattleType.WILD) {
if (this.batonPass) {
return false;
}
// Don't allow wild opponents to flee on the boss stage since it can ruin a run early on
if (!(user.scene.currentBattle.waveIndex % 10)) {
if (user.scene.currentBattle.waveIndex % 10 === 0) {
return false;
}
}
const party = player ? user.scene.getParty() : user.scene.getEnemyParty();
return (!player && !user.scene.currentBattle.battleType) || party.filter(p => p.isAllowedInBattle() && (player || (p as EnemyPokemon).trainerSlot === (switchOutTarget as EnemyPokemon).trainerSlot)).length > user.scene.currentBattle.getBattlerCount();
return (!player && !user.scene.currentBattle.battleType)
|| party.filter(p => p.isAllowedInBattle()
&& (player || (p as EnemyPokemon).trainerSlot === (switchOutTarget as EnemyPokemon).trainerSlot)).length > user.scene.currentBattle.getBattlerCount();
};
}
@ -5286,8 +5290,8 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
if (!user.scene.getEnemyParty().find(p => p.isActive() && !p.isOnField())) {
return -20;
}
let ret = this.user ? Math.floor((1 - user.getHpRatio()) * 20) : super.getUserBenefitScore(user, target, move);
if (this.user && this.batonPass) {
let ret = this.selfSwitch ? Math.floor((1 - user.getHpRatio()) * 20) : super.getUserBenefitScore(user, target, move);
if (this.selfSwitch && this.batonPass) {
const statStageTotal = user.getStatStages().reduce((s: integer, total: integer) => total += s, 0);
ret = ret / 2 + (Phaser.Tweens.Builders.GetEaseFunction("Sine.easeOut")(Math.min(Math.abs(statStageTotal), 10) / 10) * (statStageTotal >= 0 ? 10 : -10));
}
@ -8105,7 +8109,7 @@ export function initMoves() {
.attr(MovePowerMultiplierAttr, (user, target, move) => target.status && (target.status.effect === StatusEffect.POISON || target.status.effect === StatusEffect.TOXIC) ? 2 : 1),
new SelfStatusMove(Moves.AUTOTOMIZE, Type.STEEL, -1, 15, -1, 0, 5)
.attr(StatStageChangeAttr, [ Stat.SPD ], 2, true)
.partial(),
.attr(AddBattlerTagAttr, BattlerTagType.AUTOTOMIZED, true),
new SelfStatusMove(Moves.RAGE_POWDER, Type.BUG, -1, 20, -1, 2, 5)
.powderMove()
.attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, true),

View File

@ -339,7 +339,7 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig:
loadEnemyAssets.push(enemyPokemon.loadAssets());
console.log(enemyPokemon.name, enemyPokemon.species.speciesId, enemyPokemon.stats);
console.log(`Pokemon: ${enemyPokemon.name}`, `Species ID: ${enemyPokemon.species.speciesId}`, `Stats: ${enemyPokemon.stats}`, `Ability: ${enemyPokemon.getAbility().name}`, `Passive Ability: ${enemyPokemon.getPassiveAbility().name}`);
});
scene.pushPhase(new MysteryEncounterBattlePhase(scene, partyConfig.disableSwitch));

View File

@ -2067,7 +2067,7 @@ export const trainerConfigs: TrainerConfigs = {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.formIndex = Utils.randSeedInt(5, 1); // Shock, Burn, Chill, or Douse Drive
p.formIndex = Utils.randSeedInt(4, 1); // Shock, Burn, Chill, or Douse Drive
}))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.BASCULEGION, Species.JELLICENT ], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();

View File

@ -79,6 +79,7 @@ export enum BattlerTagType {
TAR_SHOT = "TAR_SHOT",
BURNED_UP = "BURNED_UP",
DOUBLE_SHOCKED = "DOUBLE_SHOCKED",
AUTOTOMIZED = "AUTOTOMIZED",
MYSTERY_ENCOUNTER_POST_SUMMON = "MYSTERY_ENCOUNTER_POST_SUMMON",
HEAL_BLOCK = "HEAL_BLOCK",
}

View File

@ -17,7 +17,7 @@ import { initMoveAnim, loadMoveAnimAssets } from "../data/battle-anims";
import { Status, StatusEffect, getRandomStatus } from "../data/status-effect";
import { pokemonEvolutions, pokemonPrevolutions, SpeciesFormEvolution, SpeciesEvolutionCondition, FusionSpeciesFormEvolution } from "../data/pokemon-evolutions";
import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from "../data/tms";
import { BattlerTag, BattlerTagLapseType, EncoreTag, GroundedTag, HighestStatBoostTag, SubstituteTag, TypeImmuneTag, getBattlerTag, SemiInvulnerableTag, TypeBoostTag, MoveRestrictionBattlerTag, ExposedTag, DragonCheerTag, CritBoostTag, TrappedTag, TarShotTag } from "../data/battler-tags";
import { BattlerTag, BattlerTagLapseType, EncoreTag, GroundedTag, HighestStatBoostTag, SubstituteTag, TypeImmuneTag, getBattlerTag, SemiInvulnerableTag, TypeBoostTag, MoveRestrictionBattlerTag, ExposedTag, DragonCheerTag, CritBoostTag, TrappedTag, TarShotTag, AutotomizedTag } from "../data/battler-tags";
import { WeatherType } from "../data/weather";
import { ArenaTagSide, NoCritTag, WeakenMoveScreenTag } from "../data/arena-tag";
import { Ability, AbAttr, StatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, IgnoreOpponentStatStagesAbAttr, MoveImmunityAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyStatMultiplierAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr, DamageBoostAbAttr, IgnoreTypeStatusEffectImmunityAbAttr, ConditionalCritAbAttr, applyFieldStatMultiplierAbAttrs, FieldMultiplyStatAbAttr, AddSecondStrikeAbAttr, UserFieldStatusEffectImmunityAbAttr, UserFieldBattlerTagImmunityAbAttr, BattlerTagImmunityAbAttr, MoveTypeChangeAbAttr, FullHpResistTypeAbAttr, applyCheckTrappedAbAttrs, CheckTrappedAbAttr, PostSetStatusAbAttr, applyPostSetStatusAbAttrs } from "../data/ability";
@ -1427,11 +1427,23 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
return false;
}
/**
* Gets the weight of the Pokemon with subtractive modifiers (Autotomize) happening first
* and then multiplicative modifiers happening after (Heavy Metal and Light Metal)
* @returns the kg of the Pokemon (minimum of 0.1)
*/
getWeight(): number {
const weight = new Utils.NumberHolder(this.species.weight);
const autotomizedTag = this.getTag(AutotomizedTag);
let weightRemoved = 0;
if (!Utils.isNullOrUndefined(autotomizedTag)) {
weightRemoved = 100 * autotomizedTag!.autotomizeCount;
}
const minWeight = 0.1;
const weight = new Utils.NumberHolder(this.species.weight - weightRemoved);
// This will trigger the ability overlay so only call this function when necessary
applyAbAttrs(WeightMultiplierAbAttr, this, null, false, weight);
return weight.value;
return Math.max(minWeight, weight.value);
}
/**

View File

@ -1,5 +1,4 @@
import { GachaType } from "./enums/gacha-types";
import { trainerConfigs } from "./data/trainer-config";
import { getBiomeHasProps } from "./field/arena";
import CacheBustedLoaderPlugin from "./plugins/cache-busted-loader-plugin";
import { SceneBase } from "./scene-base";
@ -21,7 +20,6 @@ import i18next from "i18next";
import { initStatsKeys } from "./ui/game-stats-ui-handler";
import { initVouchers } from "./system/voucher";
import { Biome } from "#enums/biome";
import { TrainerType } from "#enums/trainer-type";
import {initMysteryEncounters} from "#app/data/mystery-encounters/mystery-encounters";
export class LoadingScene extends SceneBase {
@ -208,14 +206,6 @@ export class LoadingScene extends SceneBase {
this.loadAtlas("trainer_f_back", "trainer");
this.loadAtlas("trainer_f_back_pb", "trainer");
Utils.getEnumValues(TrainerType).map(tt => {
const config = trainerConfigs[tt];
this.loadAtlas(config.getSpriteKey(), "trainer");
if (config.doubleOnly || config.hasDouble) {
this.loadAtlas(config.getSpriteKey(true), "trainer");
}
});
// Load character sprites
this.loadAtlas("c_rival_m", "character", "rival_m");
this.loadAtlas("c_rival_f", "character", "rival_f");

View File

@ -53,7 +53,49 @@ import terrain from "./terrain.json";
import modifierSelectUiHandler from "./modifier-select-ui-handler.json";
import moveTriggers from "./move-trigger.json";
import runHistory from "./run-history.json";
import mysteryEncounterMessages from "./mystery-encounter-messages.json";
import lostAtSea from "./mystery-encounters/lost-at-sea-dialogue.json";
import mysteriousChest from "./mystery-encounters/mysterious-chest-dialogue.json";
import mysteriousChallengers from "./mystery-encounters/mysterious-challengers-dialogue.json";
import darkDeal from "./mystery-encounters/dark-deal-dialogue.json";
import departmentStoreSale from "./mystery-encounters/department-store-sale-dialogue.json";
import fieldTrip from "./mystery-encounters/field-trip-dialogue.json";
import fieryFallout from "./mystery-encounters/fiery-fallout-dialogue.json";
import fightOrFlight from "./mystery-encounters/fight-or-flight-dialogue.json";
import safariZone from "./mystery-encounters/safari-zone-dialogue.json";
import shadyVitaminDealer from "./mystery-encounters/shady-vitamin-dealer-dialogue.json";
import slumberingSnorlax from "./mystery-encounters/slumbering-snorlax-dialogue.json";
import trainingSession from "./mystery-encounters/training-session-dialogue.json";
import theStrongStuff from "./mystery-encounters/the-strong-stuff-dialogue.json";
import pokemonSalesman from "./mystery-encounters/the-pokemon-salesman-dialogue.json";
import offerYouCantRefuse from "./mystery-encounters/an-offer-you-cant-refuse-dialogue.json";
import delibirdy from "./mystery-encounters/delibirdy-dialogue.json";
import absoluteAvarice from "./mystery-encounters/absolute-avarice-dialogue.json";
import aTrainersTest from "./mystery-encounters/a-trainers-test-dialogue.json";
import trashToTreasure from "./mystery-encounters/trash-to-treasure-dialogue.json";
import berriesAbound from "./mystery-encounters/berries-abound-dialogue.json";
import clowningAround from "./mystery-encounters/clowning-around-dialogue.json";
import partTimer from "./mystery-encounters/part-timer-dialogue.json";
import dancingLessons from "./mystery-encounters/dancing-lessons-dialogue.json";
import weirdDream from "./mystery-encounters/weird-dream-dialogue.json";
import theWinstrateChallenge from "./mystery-encounters/the-winstrate-challenge-dialogue.json";
import teleportingHijinks from "./mystery-encounters/teleporting-hijinks-dialogue.json";
import bugTypeSuperfan from "./mystery-encounters/bug-type-superfan-dialogue.json";
import funAndGames from "./mystery-encounters/fun-and-games-dialogue.json";
import uncommonBreed from "./mystery-encounters/uncommon-breed-dialogue.json";
import globalTradeSystem from "./mystery-encounters/global-trade-system-dialogue.json";
import expertPokemonBreeder from "./mystery-encounters/the-expert-pokemon-breeder-dialogue.json";
/**
* Dialogue/Text token injection patterns that can be used:
* - `$` will be treated as a new line for Message and Dialogue strings.
* - `@d{<number>}` will add a time delay to text animation for Message and Dialogue strings.
* - `@s{<sound_effect_key>}` will play a specified sound effect for Message and Dialogue strings.
* - `@f{<number>}` will fade the screen to black for the given duration, then fade back in for Message and Dialogue strings.
* - `{{<token>}}` (MYSTERY ENCOUNTERS ONLY) will auto-inject the matching dialogue token value that is stored in {@link IMysteryEncounter.dialogueTokens}.
* - (see [i18next interpolations](https://www.i18next.com/translation-function/interpolation)) for more details.
* - `@[<TextStyle>]{<text>}` (STATIC TEXT ONLY, NOT USEABLE WITH {@link UI.showText()} OR {@link UI.showDialogue()}) will auto-color the given text to a specified {@link TextStyle} (e.g. `TextStyle.SUMMARY_GREEN`).
*/
export const caEsConfig = {
ability,
abilityTriggers,
@ -110,4 +152,40 @@ export const caEsConfig = {
modifierSelectUiHandler,
moveTriggers,
runHistory,
mysteryEncounter: {
// DO NOT REMOVE
"unit_test_dialogue": "{{test}}{{test}} {{test{{test}}}} {{test1}} {{test\}} {{test\\}} {{test\\\}} {test}}",
mysteriousChallengers,
mysteriousChest,
darkDeal,
fightOrFlight,
slumberingSnorlax,
trainingSession,
departmentStoreSale,
shadyVitaminDealer,
fieldTrip,
safariZone,
lostAtSea,
fieryFallout,
theStrongStuff,
pokemonSalesman,
offerYouCantRefuse,
delibirdy,
absoluteAvarice,
aTrainersTest,
trashToTreasure,
berriesAbound,
clowningAround,
partTimer,
dancingLessons,
weirdDream,
theWinstrateChallenge,
teleportingHijinks,
bugTypeSuperfan,
funAndGames,
uncommonBreed,
globalTradeSystem,
expertPokemonBreeder
},
mysteryEncounterMessages
};

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -273,5 +273,9 @@
"INVERSE_BATTLE": {
"name": "Spieglein, Spieglein an der Wand",
"description": "Schließe die 'Umkehrkampf' Herausforderung ab"
},
"BREEDERS_IN_SPACE": {
"name": "Züchter im Weltall!",
"description": "Besiege die Pokémon-Züchter-Expertin im Stratosphären Biome."
}
}

View File

@ -14,6 +14,10 @@
"moneyWon": "Du gewinnst {{moneyAmount}} ₽!",
"moneyPickedUp": "Du hebst {{moneyAmount}} ₽ auf!",
"pokemonCaught": "{{pokemonName}} wurde gefangen!",
"pokemonObtained": "Du erhältst {{pokemonName}}!",
"pokemonBrokeFree": "Mist!\nDas Pokémon hat sich befreit!",
"pokemonFled": "Das wilde {{pokemonName}} ist geflohen!",
"playerFled": "Du bist vor dem wilden {{pokemonName}} geflohen!",
"addedAsAStarter": "{{pokemonName}} wurde als Starterpokémon hinzugefügt!",
"partyFull": "Dein Team ist voll. Möchtest du ein Pokémon durch {{pokemonName}} ersetzen?",
"pokemon": "Pokémon",
@ -49,6 +53,7 @@
"noPokeballTrainer": "Du kannst das Pokémon eines anderen Trainers nicht fangen!",
"noPokeballMulti": "Du kannst erst einen Pokéball werfen, wenn nur noch ein Pokémon übrig ist!",
"noPokeballStrong": "Das Ziel-Pokémon ist zu stark, um gefangen zu werden! Du musst es zuerst schwächen!",
"noPokeballMysteryEncounter": "You aren't able to\ncatch this Pokémon!",
"noEscapeForce": "Eine unsichtbare Kraft verhindert die Flucht.",
"noEscapeTrainer": "Du kannst nicht aus einem Trainerkampf fliehen!",
"noEscapePokemon": "{{moveName}} von {{pokemonName}} verhindert {{escapeVerb}}!",
@ -97,6 +102,7 @@
"congratulations": "Glückwunsch!",
"beatModeFirstTime": "{{speciesName}} hat den {{gameMode}} Modus zum ersten Mal beendet! Du erhältst {{newModifier}}!",
"eggSkipPrompt": "Zur Ei-Zusammenfassung springen?",
"mysteryEncounterAppeared": "Was ist das?",
"battlerTagsHealBlock": "{{pokemonNameWithAffix}} kann nicht geheilt werden, da die Heilung blockiert wird!",
"battlerTagsHealBlockOnRemove": "{{pokemonNameWithAffix}} kann wieder geheilt werden!"
}

View File

@ -77,20 +77,20 @@
"end_summit": "PMDDX Gipfel des Himmelturms",
"battle_rocket_grunt": "HGSS Vs. Team Rocket Rüpel",
"battle_aqua_magma_grunt": "ORAS Vs. Team Aqua & Magma",
"battle_galactic_grunt": "BDSP Vs. Team Galaktik Rüpel",
"battle_galactic_grunt": "SDLP Vs. Team Galaktik Rüpel",
"battle_plasma_grunt": "SW Vs. Team Plasma Rüpel",
"battle_flare_grunt": "XY Vs. Team Flare Rüpel",
"battle_aether_grunt": "SM Vs. Æther Foundation",
"battle_skull_grunt": "SM Vs. Team Skull Rüpel",
"battle_macro_grunt": "SWSH Vs. Trainer",
"battle_star_grunt": "KAPU Vs. Team Star",
"battle_galactic_admin": "BDSP Vs. Team Galactic Commander",
"battle_galactic_admin": "SDLP Vs. Team Galactic Commander",
"battle_skull_admin": "SM Vs. Team Skull Vorstand",
"battle_oleana": "SWSH Vs. Olivia",
"battle_star_admin": "KAPU Vs. Team Star Boss",
"battle_rocket_boss": "USUM Vs. Giovanni",
"battle_aqua_magma_boss": "ORAS Vs. Team Aqua & Magma Boss",
"battle_galactic_boss": "BDSP Vs. Zyrus",
"battle_galactic_boss": "SDLP Vs. Zyrus",
"battle_plasma_boss": "S2W2 Vs. G-Cis",
"battle_flare_boss": "XY Vs. Flordelis",
"battle_aether_boss": "SM Vs. Samantha",
@ -149,5 +149,11 @@
"encounter_youngster": "SW Trainerblicke treffen sich (Knirps)",
"heal": "SW Pokémon-Heilung",
"menu": "PMD Erkundungsteam Himmel Willkommen in der Welt der Pokémon!",
"title": "PMD Erkundungsteam Himmel Top-Menü-Thema"
"title": "PMD Erkundungsteam Himmel Top-Menü-Thema",
"mystery_encounter_weird_dream": "PMD Erkundungsteam Himmel Zeitturmspitze",
"mystery_encounter_fun_and_games": "PMD Erkundungsteam Himmel Gildenmeister Knuddeluff",
"mystery_encounter_gen_5_gts": "SW GTS",
"mystery_encounter_gen_6_gts": "XY GTS",
"mystery_encounter_delibirdy": "Firel - DeliDelivery!"
}

View File

@ -53,7 +53,49 @@ import terrain from "./terrain.json";
import modifierSelectUiHandler from "./modifier-select-ui-handler.json";
import moveTriggers from "./move-trigger.json";
import runHistory from "./run-history.json";
import mysteryEncounterMessages from "./mystery-encounter-messages.json";
import lostAtSea from "./mystery-encounters/lost-at-sea-dialogue.json";
import mysteriousChest from "./mystery-encounters/mysterious-chest-dialogue.json";
import mysteriousChallengers from "./mystery-encounters/mysterious-challengers-dialogue.json";
import darkDeal from "./mystery-encounters/dark-deal-dialogue.json";
import departmentStoreSale from "./mystery-encounters/department-store-sale-dialogue.json";
import fieldTrip from "./mystery-encounters/field-trip-dialogue.json";
import fieryFallout from "./mystery-encounters/fiery-fallout-dialogue.json";
import fightOrFlight from "./mystery-encounters/fight-or-flight-dialogue.json";
import safariZone from "./mystery-encounters/safari-zone-dialogue.json";
import shadyVitaminDealer from "./mystery-encounters/shady-vitamin-dealer-dialogue.json";
import slumberingSnorlax from "./mystery-encounters/slumbering-snorlax-dialogue.json";
import trainingSession from "./mystery-encounters/training-session-dialogue.json";
import theStrongStuff from "./mystery-encounters/the-strong-stuff-dialogue.json";
import pokemonSalesman from "./mystery-encounters/the-pokemon-salesman-dialogue.json";
import offerYouCantRefuse from "./mystery-encounters/an-offer-you-cant-refuse-dialogue.json";
import delibirdy from "./mystery-encounters/delibirdy-dialogue.json";
import absoluteAvarice from "./mystery-encounters/absolute-avarice-dialogue.json";
import aTrainersTest from "./mystery-encounters/a-trainers-test-dialogue.json";
import trashToTreasure from "./mystery-encounters/trash-to-treasure-dialogue.json";
import berriesAbound from "./mystery-encounters/berries-abound-dialogue.json";
import clowningAround from "./mystery-encounters/clowning-around-dialogue.json";
import partTimer from "./mystery-encounters/part-timer-dialogue.json";
import dancingLessons from "./mystery-encounters/dancing-lessons-dialogue.json";
import weirdDream from "./mystery-encounters/weird-dream-dialogue.json";
import theWinstrateChallenge from "./mystery-encounters/the-winstrate-challenge-dialogue.json";
import teleportingHijinks from "./mystery-encounters/teleporting-hijinks-dialogue.json";
import bugTypeSuperfan from "./mystery-encounters/bug-type-superfan-dialogue.json";
import funAndGames from "./mystery-encounters/fun-and-games-dialogue.json";
import uncommonBreed from "./mystery-encounters/uncommon-breed-dialogue.json";
import globalTradeSystem from "./mystery-encounters/global-trade-system-dialogue.json";
import expertPokemonBreeder from "./mystery-encounters/the-expert-pokemon-breeder-dialogue.json";
/**
* Dialogue/Text token injection patterns that can be used:
* - `$` will be treated as a new line for Message and Dialogue strings.
* - `@d{<number>}` will add a time delay to text animation for Message and Dialogue strings.
* - `@s{<sound_effect_key>}` will play a specified sound effect for Message and Dialogue strings.
* - `@f{<number>}` will fade the screen to black for the given duration, then fade back in for Message and Dialogue strings.
* - `{{<token>}}` (MYSTERY ENCOUNTERS ONLY) will auto-inject the matching dialogue token value that is stored in {@link IMysteryEncounter.dialogueTokens}.
* - (see [i18next interpolations](https://www.i18next.com/translation-function/interpolation)) for more details.
* - `@[<TextStyle>]{<text>}` (STATIC TEXT ONLY, NOT USEABLE WITH {@link UI.showText()} OR {@link UI.showDialogue()}) will auto-color the given text to a specified {@link TextStyle} (e.g. `TextStyle.SUMMARY_GREEN`).
*/
export const deConfig = {
ability,
abilityTriggers,
@ -110,4 +152,40 @@ export const deConfig = {
modifierSelectUiHandler,
moveTriggers,
runHistory,
mysteryEncounter: {
// DO NOT REMOVE
"unit_test_dialogue": "{{test}}{{test}} {{test{{test}}}} {{test1}} {{test\}} {{test\\}} {{test\\\}} {test}}",
mysteriousChallengers,
mysteriousChest,
darkDeal,
fightOrFlight,
slumberingSnorlax,
trainingSession,
departmentStoreSale,
shadyVitaminDealer,
fieldTrip,
safariZone,
lostAtSea,
fieryFallout,
theStrongStuff,
pokemonSalesman,
offerYouCantRefuse,
delibirdy,
absoluteAvarice,
aTrainersTest,
trashToTreasure,
berriesAbound,
clowningAround,
partTimer,
dancingLessons,
weirdDream,
theWinstrateChallenge,
teleportingHijinks,
bugTypeSuperfan,
funAndGames,
uncommonBreed,
globalTradeSystem,
expertPokemonBreeder
},
mysteryEncounterMessages
};

View File

@ -1026,6 +1026,116 @@
"1": "Du bist unfassbar stark. Kein Wunder, dass die anderen Bosse gegen dich verloren haben..."
}
},
"stat_trainer_buck": {
"encounter": {
"1": "...Ich sag dir jetzt mal was. Ich bin echt stark. Tue überrascht!",
"2": "Ich fühle, wie meine Pokémon in ihren Pokébällen zittern!"
},
"victory": {
"1": "Hehehehe! So heiß bist du!",
"2": "Hehehehe! So heiß bist du!"
},
"defeat": {
"1": "Whoa! Du scheinst ja wirklich erschöpft zu sein.",
"2": "Whoa! Du scheinst ja wirklich erschöpft zu sein."
}
},
"stat_trainer_cheryl": {
"encounter": {
"1": "Meine Pokémon können es kaum erwarten, zu kämpfen.",
"2": "Ich sollte dich warnen, meine Pokémon können ziemlich wild sein."
},
"victory": {
"1": "Ein gutes Verhältnis von Angriff und Verteidigung... Das ist nicht einfach.",
"2": "Ein gutes Verhältnis von Angriff und Verteidigung... Das ist nicht einfach."
},
"defeat": {
"1": "Brauchen deine Pokémon Heilung?",
"2": "Brauchen deine Pokémon Heilung?"
}
},
"stat_trainer_marley": {
"encounter": {
"1": "...OK. Ich werde mein Bestes geben.",
"2": "...OK. Ich werde nicht verlieren...!"
},
"victory": {
"1": "... Awww.",
"2": "... Awww."
},
"defeat": {
"1": "... Auf Wiedersehen.",
"2": "... Auf Wiedersehen."
}
},
"stat_trainer_mira": {
"encounter": {
"1": "Du wirst von Mira schockiert sein!",
"2": "Mira wird dir zeigen, dass Mira sich nicht mehr verirrt!"
},
"victory": {
"1": "Mira wundern, ob sie in diesem Land weit kommen kann.",
"2": "Mira wundern, ob sie in diesem Land weit kommen kann."
},
"defeat": {
"1": "Mira wuss, dass sie gewinnen würde!",
"2": "Mira wuss, dass sie gewinnen würde!"
}
},
"stat_trainer_riley": {
"encounter": {
"1": "Kämpfe sind unsere Art der Begrüßung.",
"2": "Wir setzen alles daran, deine Pokémon zu besiegen."
},
"victory": {
"1": "Manchmal kämpfen wir, und manchmal schließen wir uns zusammen...\n$Es ist großartig, wie Trainer interagieren können.",
"2": "Manchmal kämpfen wir, und manchmal schließen wir uns zusammen...\n$Es ist großartig, wie Trainer interagieren können."
},
"defeat": {
"1": "Du hast dich gut geschlagen. Bis zum nächsten Mal.",
"2": "Du hast dich gut geschlagen. Bis zum nächsten Mal."
}
},
"winstrates_victor": {
"encounter": {
"1": "Das ist der Kampfgeist den ich sehen will! Ich mag dich!"
},
"victory": {
"1": "Ahh! Du bist stärker als ich dachte!"
}
},
"winstrates_victoria": {
"encounter": {
"1": "Mein Gott! Bist du nicht etwas jung?\n$Du musst ein ziemlich guter Trainer sein, um meinen Mann zu besiegen.\n$Jetzt bin ich wohl an der Reihe!"
},
"victory": {
"1": "Waas? Wie stark bist du denn?"
}
},
"winstrates_vivi": {
"encounter": {
"1": "Du bist stärker als Mama? Wow! Aber ich bin auch stark! Wirklich! Ehrlich!"
},
"victory": {
"1": "Huh? Habe ich wirklich verloren?\nSchnief... Omaaa!"
}
},
"winstrates_vicky": {
"encounter": {
"1": "Wie kannst du es wagen, meine kostbare Enkelin zum Weinen zu bringen!\n$Ich sehe, ich muss dir eine Lektion erteilen.\n$Mach dich bereit, eine Niederlage zu erleiden!"
},
"victory": {
"1": "Wow! So stark!\nMeine Enkelin hat nicht gelogen."
}
},
"winstrates_vito": {
"encounter": {
"1": "Ich habe zusammen mit meiner ganzen Familie trainiert, mit jedem von uns!\n$Ich verliere gegen niemanden!"
},
"victory": {
"1": "Ich war besser als jeder in meiner Familie. Ich habe noch nie verloren..."
}
},
"brock": {
"encounter": {
"1": "Meine Expertise in Bezug auf Gesteins-Pokémon wird dich besiegen! Komm schon!",

View File

@ -11,6 +11,7 @@
"gachaTypeLegendary": "Erhöhte Chance auf legendäre Eier.",
"gachaTypeMove": "Erhöhte Chance auf Eier mit seltenen Attacken.",
"gachaTypeShiny": "Erhöhte Chance auf schillernde Eier.",
"eventType": "Geheimnisvolles Ereignis",
"selectMachine": "Wähle eine Maschine.",
"notEnoughVouchers": "Du hast nicht genug Ei-Gutscheine!",
"tooManyEggs": "Du hast schon zu viele Eier!",
@ -23,4 +24,4 @@
"moveUPGacha": "Mehr\nEi-Attacken!",
"shinyUPGacha": "Mehr\nSchillernde!",
"legendaryUPGacha": "erscheint\nöfter!"
}
}

View File

@ -8,5 +8,7 @@
"lockRaritiesDesc": "Setze die Seltenheit der Items fest. (Beeinflusst die Rollkosten).",
"checkTeamDesc": "Überprüfe dein Team or nutze Formänderungsitems.",
"rerollCost": "{{formattedMoney}}₽",
"itemCost": "{{formattedMoney}}₽"
}
"itemCost": "{{formattedMoney}}₽",
"continueNextWaveButton": "Fortfahren",
"continueNextWaveDescription": "Zur nächsten Welle fortfahren."
}

View File

@ -68,6 +68,20 @@
"BaseStatBoosterModifierType": {
"description": "Erhöht den {{stat}} Basiswert des Trägers um 10%. Das Stapellimit erhöht sich, je höher dein IS-Wert ist."
},
"PokemonBaseStatTotalModifierType": {
"name": "Pottrottsaft",
"description": "{{increaseDecrease}} alle Basiswerte des Trägers um {{statValue}}. Du wurdest von Pottrott {{blessCurse}}.",
"extra": {
"increase": "Erhöht",
"decrease": "Verringert",
"blessed": "gesegnet",
"cursed": "verflucht"
}
},
"PokemonBaseStatFlatModifierType": {
"name": "Spezialität",
"description": "Erhöht den {{stats}}-Wert des Trägers um {{statValue}}. Nach einem komischen Traum gefunden."
},
"AllPokemonFullHpRestoreModifierType": {
"description": "Stellt 100% der KP aller Pokémon her."
},
@ -401,7 +415,13 @@
"ENEMY_FUSED_CHANCE": {
"name": "Fusionsmarke",
"description": "Fügt eine 1%ige Chance hinzu, dass ein wildes Pokémon eine Fusion ist."
}
},
"MYSTERY_ENCOUNTER_SHUCKLE_JUICE": { "name": "Pottrottsaft" },
"MYSTERY_ENCOUNTER_BLACK_SLUDGE": { "name": "Giftschleim", "description": "Der Geruch ist so stark, dass die Geschäfte ihre Items nur zu einem stark erhöhten Preis verkaufen." },
"MYSTERY_ENCOUNTER_MACHO_BRACE": { "name": "Machoschiene", "description": "Das Besiegen eines Pokémon gewährt dem Besitzer einen Machoschiene-Stapel. Jeder Stapel steigert die Werte leicht, mit einem zusätzlichen Bonus bei maximalen Stapeln." },
"MYSTERY_ENCOUNTER_OLD_GATEAU": { "name": "Spezialität", "description": "Erhöht den {{stats}}-Wert des Trägers um {{statValue}}." },
"MYSTERY_ENCOUNTER_GOLDEN_BUG_NET": { "name": "Golden Bug Net", "description": "Erhöht die Chance, dass der Besitzer mehr Pokémon vom Typ Käfer findet. Hat ein seltsames Gewicht." }
},
"SpeciesBoosterItem": {
"LIGHT_BALL": {

View File

@ -0,0 +1,7 @@
{
"paid_money": "Du bezahlst {{amount, number}} ₽.",
"receive_money": "Du erhältst {{amount, number}} ₽!",
"affects_pokedex": "Beeinflusst Pokédex-Daten",
"cancel_option": "Zurück zur Auswahl der Begegnungsoptionen.",
"view_party_button": "Team überprüfen"
}

View File

@ -0,0 +1,47 @@
{
"intro": "Ein sehr starker Trainer kommt auf dich zu...",
"buck": {
"intro_dialogue": "Yo, Trainer! Mein Name ist Avenaro.$Ich habe ein super Angebot für einen starken Trainer wie dich!$Ich trage zwei seltene Pokémon-Eier bei mir, aber ich möchte, dass sich jemand anderes um eines kümmert.$Wenn du mir beweisen kannst, dass du ein starker Trainer bist, werde ich dir das seltenere Ei geben!",
"accept": "Wohooo! Ich bin Feuer und Flamme!",
"decline": "Manno, es sieht so aus, als wäre dein Team nicht in Bestform.$Hier, lass mich dir helfen."
},
"cheryl": {
"intro_dialogue": "Hallo mein Name ist Raissa, ich habe eine besondere Bitte an dich, einen starken Trainer.$Ich trage zwei seltene Pokémon-Eier bei mir, aber ich möchte, dass sich jemand anderes um eines kümmert.$Wenn du mir beweisen kannst, dass du ein starker Trainer bist, werde ich dir das seltenere Ei geben!",
"accept": "Ich hoffe, du bist bereit!",
"decline": "Ich verstehe, es sieht so aus, als wäre dein Team nicht in der besten Verfassung.$Hier, lass mich dir helfen."
},
"marley": {
"intro_dialogue": "...@d{64} Ich bin Charlie.$Ich habe ein Angebot für dich...$Ich trage zwei Pokémon-Eier bei mir, aber ich möchte, dass sich jemand anderes um eines kümmert.$Wenn du stärker bist als ich, werde ich dir das seltenere Ei geben.",
"accept": "...So ist das also.",
"decline": "...Deine Pokémon sehen verletzt aus...Lass mich helfen."
},
"mira": {
"intro_dialogue": "Hi, ich bin Orisa!$Ich habe eine Bitte an dich, einen starken Trainer.$Ich trage zwei seltene Pokémon-Eier bei mir, aber ich möchte, dass sich jemand anderes um eines kümmert.$Wenn du mir beweisen kannst, dass du ein starker Trainer bist, werde ich dir das seltenere Ei geben!",
"accept": "Du wirst Orisa herausfordern? Juhu!",
"decline": "Aww, kein Kampf? Das ist okay!$Hier, Orisa wird dein Team heilen!"
},
"riley": {
"intro_dialogue": "Ich Urs, ich habe eine Bitte an dich, einen starken Trainer.$Ich trage zwei seltene Pokémon-Eier bei mir, aber ich möchte, dass sich jemand anderes um eines kümmert.$Wenn du mir beweisen kannst, dass du ein starker Trainer bist, werde ich dir das seltenere Ei geben!",
"accept": "Dieser Blick...Lass uns das machen.",
"decline": "Ich verstehe, dein Team sieht geschlagen aus.$Hier, lass mich dir helfen."
},
"title": "Ein Trainer-Test",
"description": "Es scheint als würde dieser Trainer dir ein Ei geben, egal wie du dich entscheidest. Wenn du es jedoch schaffst, diesen starken Trainer zu besiegen, wirst du ein viel selteneres Ei erhalten.",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Die Herausforderung annehmen",
"tooltip": "(-) Schwerer Kampf\n(+) Erhalte ein @[TOOLTIP_TITLE]{Sehr seltenes Ei}"
},
"2": {
"label": "Die Herausforderung ablehnen",
"tooltip": "(+) Team wird geheilt\n(+) Erhalte ein @[TOOLTIP_TITLE]{Ei}"
}
},
"eggTypes": {
"rare": "seltenes Ei",
"epic": "episches Ei",
"legendary": "legendäres Ei"
},
"outro": "{{statTrainerName}} gibt dir ein {{eggType}}!"
}

View File

@ -0,0 +1,25 @@
{
"intro": "Ein {{greedentName}} überfällt dich und stiehlt die Beeren deines Teams!",
"title": "Absoluter Geiz",
"description": "Der {{greedentName}} hat dich total überrascht und all deine Beeren gestohlen!\nEs sieht so aus, als ob das {{greedentName}} sie gleich essen würde, aber dann hält es inne und sieht dich interessiert an.",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Kampf beginnen",
"tooltip": "(-) Schwerer Kampf\n(+) Belohnungen aus seinem Beerenversteck",
"selected": "Der {{greedentName}} füllt seine Backen und bereitet sich auf den Kampf vor!",
"boss_enraged": "{{greedentName}} Liebe für Essen hat es aufgebracht!",
"food_stash": "Es scheint, als ob das {{greedentName}} ein riesiges Nahrungslager bewacht hat!$Jedes Pokémon in deinem Team erhält {{foodReward}}!"
},
"2": {
"label": "Verhandeln",
"tooltip": "(+) Einige Beeren zurückbekommen",
"selected": "Deine Bitte berührt das {{greedentName}}.$Es gibt dir nicht alle Beeren zurück, aber wirft dir trotzdem ein paar zu."
},
"3": {
"label": "Beeren überlassen",
"tooltip": "(-) Alle Beeren verlieren\n(?) Das {{greedentName}} wird dich mögen",
"selected": "Das {{greedentName}} verschlingt den gesamten Beerenversteck in einem Blitz!$Es klopft sich auf den Bauch und sieht dich dankbar an.$Vielleicht könntest du ihm auf deinem Abenteuer mehr Beeren geben...$@s{level_up_fanfare}Das {{greedentName}} möchte sich deiner Gruppe anschließen!"
}
}
}

View File

@ -0,0 +1,26 @@
{
"intro": "Du wirst von einem reich aussehenden Jungen aufgehalten.",
"speaker": "Reicher Junge",
"intro_dialogue": "Guten Tag!$Ich kann nicht anders, als zu bemerken, dass dein\n{{strongestPokemon}} einfach göttlich aussieht!$Ich habe schon immer ein Pokémon wie dieses haben wollen!$Ich würde es dir großzügig bezahlen, und dir auch diesen alten Kram geben!",
"title": "Ein Angebot das du nicht ablehnen kannst",
"description": "Dir wird ein @[TOOLTIP_TITLE]{Schillerpin} und {{price, money}} für dein {{strongestPokemon}} angeboten!\nEs ist ein extrem gutes Angebot, aber kannst du es wirklich ertragen, dich von einem so starken Teammitglied zu trennen?",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Den Deal annehmen",
"tooltip": "(-) Verliere {{strongestPokemon}}\n(+) Erhalte einen @[TOOLTIP_TITLE]{Schillerpin}\n(+) Erhalte {{price, money}}",
"selected": "Wunderbar!@d{32} Komm mit, {{strongestPokemon}}!$Es ist Zeit, dich allen im Yachtclub zu zeigen!$Die werden so neidisch sein!"
},
"2": {
"label": "Das Kind erpressen",
"tooltip": "(+) {{option2PrimaryName}} setzt {{moveOrAbility}} ein\n(+) Erhalte {{price, money}}",
"tooltip_disabled": "Dein Pokémon muss bestimmte Attacken oder Fähigkeiten haben, um diese Option zu wählen",
"selected": "Mein Gott, wir werden ausgeraubt, {{liepardName}}!$Du wirst von meinen Anwälten hören!"
},
"3": {
"label": "Weggehen",
"tooltip": "(-) Keine Belohnung",
"selected": "Was ein beschissener Tag...$Ach, was solls. Lass uns zurück zum Yachtclub gehen, {{liepardName}}."
}
}
}

View File

@ -0,0 +1,26 @@
{
"intro": "Da ist ein riesiger Beerenstrauch in der Nähe dieses Pokémons!",
"title": "Überall Beeren",
"description": "Es scheint, als ob ein starkes Pokémon einen Beerenstrauch bewacht. Ein Kampf wäre der direkte Weg, aber es sieht stark aus. Vielleicht könnte ein schnelles Pokémon ein paar Beeren schnappen, ohne erwischt zu werden?",
"query": "Was wirst du tun?",
"berries": "Berren!",
"option": {
"1": {
"label": "Kampf beginnen",
"tooltip": "(-) Schwerer Kampf\n(+) Beeren erhalten",
"selected": "Du trittst dem Pokémon ohne Furcht entgegen."
},
"2": {
"label": "Zum Strauch rennen",
"tooltip": "(-) {{fastestPokemon}} nutzt seine Geschwindigkeit\n(+) Beeren erhalten",
"selected": "Dein {{fastestPokemon}} rennt zum Strauch!$Es schafft es, {{numBerries}} zu schnappen, bevor das {{enemyPokemon}} reagieren kann!$Du ziehst dich schnell mit deiner neuen Beute zurück.",
"selected_bad": "Dein {{fastestPokemon}} rennt zum Strauch!$Oh nein! Das {{enemyPokemon}} war schneller und hat den Weg blockiert!",
"boss_enraged": "Das gegnerische {{enemyPokemon}} ist wütend geworden!"
},
"3": {
"label": "Verlassen",
"tooltip": "(-) Keine Belohnung",
"selected": "Du lässt das starke Pokémon mit seinem Item zurück und gehst weiter."
}
}
}

View File

@ -0,0 +1,40 @@
{
"intro": "Ein ungewöhnlicher Trainer mit allerlei Käfer-Schnickschnack versperrt dir den Weg!",
"intro_dialogue": "Hey, Trainer! Ich bin auf einer Mission, um die seltensten Käfer-Pokémon zu finden!$Du musst Käfer-Pokémon auch lieben, oder? Jeder liebt Käfer-Pokémon!",
"title": "Der Käfersammler-Superfan",
"speaker": "Käfersammler-Superfan",
"description": "Der Trainer plappert drauf los, ohne auf eine Antwort zu warten...\nEs scheint, als gäbe es nur einen Weg, um aus dieser Situation herauszukommen... Die Aufmerksamkeit des Trainers zu erregen!",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Pokémon-Kampf",
"tooltip": "(-) Herausfordernder Kampf\n(+) Einem Pokémon eine Käfer-Attacke beibringen",
"selected": "Ein Pokémon-Kampf? Meine Käfer-Pokémon sind mehr als bereit für dich!"
},
"2": {
"label": "Käfer-Pokémon zeigen",
"tooltip": "(+) Erhalte ein Geschenk",
"disabled_tooltip": "Du brauchst mindestens 1 Käfer-Pokémon in deinem Team, um das auszuwählen.",
"selected": "Du zeigst dem Trainer all deine Käfer-Pokémon...",
"selected_0_to_1": "Huh? Du hast nur {{numBugTypes}} Käfer-Pokémon...$Ich verschwende hier meine Zeit...",
"selected_2_to_3": "Hey, du hast {{numBugTypes}}! Nicht schlecht.$Hier, das könnte dir auf deiner Reise helfen, mehr zu fangen!",
"selected_4_to_5": "Was? Du hast {{numBugTypes}}? Nicht schlecht!$Du bist noch nicht ganz auf meinem Level, aber ich kann mich in dir erkennen! $Nimm das, mein junger Padawan!",
"selected_6": "Wow! {{numBugTypes}}!$Du musst Käfer-Pokémon fast so sehr lieben wie ich!$Hier, nimm das als Zeichen unserer Kameradschaft!"
},
"3": {
"label": "Verschenke ein Käfer-Item",
"tooltip": "(-) Du gibst dem Trainer ein {{requiredBugItems}}\n(+) Erhalte ein Geschenk",
"disabled_tooltip": "Du brauchst ein {{requiredBugItems}}, um das auszuwählen.",
"select_prompt": "Wählen Sie ein Item aus, um es zu verschenken.",
"invalid_selection": "Das Pokémon hat kein solches Item.",
"selected": "Du gibst {{selectedItem}} an dem Trainer .",
"selected_dialogue": "Wow! {{selectedItem}}, für mich? Du bist nicht so schlecht, Junge!$Als Zeichen meiner Anerkennung möchte ich, dass du dieses besondere Geschenk bekommst!$Es wurde in meiner Familie weitergegeben, und jetzt möchte ich, dass du es hast!"
}
},
"battle_won": "Dein Wissen und Können waren perfekt, um unsere Schwächen auszunutzen!$Als Gegenleistung für die wertvolle Lektion, erlaube mir, einem deiner Pokémon eine Käfer-Attacke beizubringen!",
"teach_move_prompt": "Wähle eine Attacke aus die du deinem Pokémon beibringen möchtest.",
"confirm_no_teach": "Bist du sicher, dass du keine dieser großartigen Attacken lernen möchtest?",
"outro": "Ich sehe großartige Käfer-Pokémon in deiner Zukunft! Mögen sich unsere Wege wieder kreuzen!$Mach's gut!",
"numBugTypes_one": "{{count}} Käfer-Pokémon",
"numBugTypes_other": "{{count}} Käfer-Pokémon"
}

View File

@ -0,0 +1,35 @@
{
"intro": "Es ist...@d{64} ein Clown?",
"speaker": "Clown",
"intro_dialogue": "Du tollpatschiger Trottel, bereite dich auf einen brillanten Kampf vor!\nDu wirst von diesem prügelnden Straßenmusikanten besiegt!",
"title": "Rumgeblödel",
"description": "Irgendwas stimmt nicht mit dieser Begegnung. Der Clown scheint darauf aus zu sein, dich zu einem Kampf zu provozieren, aber zu welchem Zweck?\n\nDas {{blacephalonName}} ist besonders seltsam, als hätte es @[TOOLTIP_TITLE]{seltsame Typen} und eine @[TOOLTIP_TITLE]{Fähigkeit.}",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Kampf beginnen",
"tooltip": "(-) Komischer Kampf\n(?) Beeinflusst Pokémon-Fähigkeiten",
"selected": "Deine erbärmlichen Pokémon sind bereit für eine erbärmliche Vorstellung!",
"apply_ability_dialogue": "Eine sensationelle Vorstellung! Dein Können passt zu einer sensationellen Fähigkeit als Beute!",
"apply_ability_message": "Der Clown bietet an, die Fähigkeit eines deiner Pokémon dauerhaft auf {{ability}} zu wechseln!",
"ability_prompt": "Soll eines deiner Pokémon die Fähigkeit {{ability}} dauerhaft erlangen?",
"ability_gained": "@s{level_up_fanfare}{{chosenPokemon}} hat die Fähigkeit {{ability}} erhalten!"
},
"2": {
"label": "Nicht provozieren lassen",
"tooltip": "(-) Der Clown ist beleidigt\n(?) Beeinflusst Pokémon-Items",
"selected": "Du erbärmlicher Feigling, du verweigerst einen wunderbaren Kampf? Fühle meinen Zorn!",
"selected_2": "Das {{blacephalonName}} des Clowns verwendet Trickbetrug! Alle Items deines {{switchPokemon}} wurden zufällig vertauscht!",
"selected_3": "Meine perfekte List hat dich in die Irre geführt!"
},
"3": {
"label": "Die Beleidigungen erwidern",
"tooltip": "(-) Den Clown verärgern\n(?) Beeinflusst Pokémon-Typen",
"selected": "Du erbärmlicher Feigling verweigerst einen wunderbaren Kampf? Fühle meinen Zorn!",
"selected_2": "Das {{blacephalonName}} des Clowns verwendet eine seltsame Attacke! Alle Typen deines Teams wurden zufällig vertauscht!",
"selected_3": "Meine perfekte List hat dich in die Irre geführt!"
}
},
"outro": "Der Clown und seine Kumpanen verschwinden in einer Rauchwolke."
}

View File

@ -0,0 +1,27 @@
{
"intro": "Ein {{oricorioName}} tanzt traurig allein, ohne einen Partner.",
"title": "Tanzstunden",
"description": "Das {{oricorioName}} scheint nicht aggressiv zu sein, im Gegenteil, es scheint traurig zu sein.\nVielleicht möchte es einfach nur mit jemandem tanzen...",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Kampf beginnen",
"tooltip": "(-) Schwerer Kampf\n(+) Erhalte ein Stab",
"selected": "Das {{oricorioName}} ist verstört und verteidigt sich!",
"boss_enraged": "Das {{oricorioName}} ist wütend und steigert seine Werte!"
},
"2": {
"label": "Lerne den Tanz",
"tooltip": "(+) Bringe einem Pokémon Wecktanz bei",
"selected": "Du schaust dem {{oricorioName}} genau zu, wie es seinen Tanz aufführt...$@s{level_up_fanfare}Dein {{selectedPokemon}} hat von {{oricorioName}} gelernt!"
},
"3": {
"label": "Zeig einen Tanz",
"tooltip": "(-) Bringe dem {{oricorioName}} einen Tanz bei\n(+) Das {{oricorioName}} wird dich mögen",
"disabled_tooltip": "Dein Pokémon muss einen Tanz beherrschen, um diese Option zu wählen.",
"select_prompt": "Wählen Sie eine Tanzattacke aus, die verwendet werden soll.",
"selected": "Das {{oricorioName}} schaut fasziniert zu, wie {{selectedPokemon}} {{selectedMove}} vorführt!$Es liebt die Vorführung!$@s{level_up_fanfare}Das {{oricorioName}} möchte sich dir anschließen!"
}
},
"invalid_selection": "Das Pokémon kennt keine Tanzattacke"
}

View File

@ -0,0 +1,24 @@
{
"intro": "Ein seltsamer Mann in einem zerrissenen Mantel steht dir im Weg...",
"speaker": "Seltsamer Mann",
"intro_dialogue": "Hey, du!$Ich habe an einem neuen Gerät gearbeitet, um die verborgene Kraft eines Pokémon zum Vorschein zu bringen!$Es bindet die Atome des Pokémon auf molekularer Ebene vollständig neu und bringt sie in eine$weitaus mächtigere Form.$Hehe...@d{64} Ich brauche nur ein paar Opf-@d{32} Ähm, Testpersonen, um zu beweisen, dass es funktioniert.",
"title": "Dunkler Handel",
"description": "Der verstörende Typ hält einige Pokébälle hoch.\n\"Es wird such für dich lohnen! Du kannst diese tollen Pokébälle als Bezahlung haben, alles was ich brauche ist ein Pokémon aus deinem Team! Hehe...\"",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Aktzeptieren",
"tooltip": "(+) 5 Roguebälle\n(?) Ein zufälliges Pokémon wird verbessert",
"selected_dialogue": "Lass mich mal sehen...${{pokeName}} ist eine gute Wahl!$Denk dran, ich bin nicht verantwortlich, wenn etwas schief geht!@d{32} Hehe...",
"selected_message": "Der Mann übergibt dir 5 Roguebälle.${{pokeName}} springt in die seltsame Maschine...$Blinkende Lichter und seltsame Geräusche kommen aus der Maschine!$...@d{96} Etwas kommt aus der Maschine,\nwütend und wild!"
},
"2": {
"label": "Ablehnen",
"tooltip": "(-) Keine Belohnung",
"selected": "Du willst einem armen Kerl nicht helfen? Pah!"
}
},
"outro": "Nach der schrecklichen Begegnung, sammelst du dich und gehst weiter."
}

View File

@ -0,0 +1,29 @@
{
"intro": "Ein Schwarm {{delibirdName}} ist aufgetaucht!",
"title": "Botogel-Bande",
"description": "Die {{delibirdName}} schauen dich erwartungsvoll an, als ob sie etwas wollen. Vielleicht würde es sie zufriedenstellen, wenn du ihnen ein Item oder etwas Geld gibst?",
"query": "Was möchtest du ihnen geben?",
"invalid_selection": "Das Pokémon hat kein solches Item.",
"option": {
"1": {
"label": "Geld geben",
"tooltip": "(-) Den {{delibirdName}} {{money, money}} geben\n(+) Erhalte ein Geschenk",
"selected": "Du wirfst das Geld zu den {{delibirdName}}, die aufgeregt miteinander schnattern.$Sie drehen sich zu dir um und geben dir glücklich ein Geschenk!"
},
"2": {
"label": "Futter geben",
"tooltip": "(-) Gib den {{delibirdName}} eine Beere oder einen Belebersamen\n(+) Erhalte ein Geschenk",
"select_prompt": "Wähle ein Item aus.",
"selected": "Du wirfst {{chosenItem}} zu den {{delibirdName}}, die aufgeregt miteinander schnattern.$Sie drehen sich zu dir um und geben dir glücklich ein Geschenk!"
},
"3": {
"label": "Ein Item geben",
"tooltip": "(-) Gebe den {{delibirdName}} ein Item\n(+) Erhalte ein Geschenk",
"select_prompt": "Wähle ein Item aus.",
"selected": "Du wirfst {{chosenItem}} zu den {{delibirdName}}, die aufgeregt miteinander schnattern.$Sie drehen sich zu dir um und geben dir glücklich ein Geschenk!"
}
},
"outro": "Die {{delibirdName}} watscheln glücklich davon.$Was für ein seltsamer kleiner Austausch!"
}

View File

@ -0,0 +1,27 @@
{
"intro": "Es ist eine Dame mit vielen Einkaufstüten.",
"speaker": "Einkäuferin",
"intro_dialogue": "Hallo! Bist du auch wegen der tollen Angebote hier?$Es gibt einen speziellen Gutschein, den du während des Verkaufs einlösen kannst!$Ich habe einen zusätzlichen. Hier, bitte!",
"title": "Einkaufszentrum-Verkauf",
"description": "Es gibt Angebote in jede Richtung! Es sieht so aus, als ob es 4 Kassen gibt, an denen du den Gutschein gegen verschiedene Artikel eintauschen kannst. Die Möglichkeiten sind endlos!",
"query": "Welche Kasse wählst du?",
"option": {
"1": {
"label": "TM-Kasse",
"tooltip": "(+) TM Shop"
},
"2": {
"label": "Nährstoff-Kasse",
"tooltip": "(+) Nährstoff Shop"
},
"3": {
"label": "Kampf-Item-Kasse",
"tooltip": "(+) X-Item Shop"
},
"4": {
"label": "Pokéball-Kasse",
"tooltip": "(+) Pokéball Shop"
}
},
"outro": "Was für ein Schnäppchen! Du solltest öfter hier einkaufen."
}

View File

@ -1,14 +1,31 @@
{
"intro": "Es ist eine Lehrer mit seiner Klasse!",
"speaker": "Lehrer",
"intro_dialogue": "Hallo! \nHätten Sie einen Moment?$Ich unterrichte meinen Schülern aktuell in Pokémon Attacken \nund würde gerne eine Demonstration zeigen.$Würde es Ihnen was ausmachen\neine Attacke eines Ihrer Pokemon zu präsentieren?",
"title": "Wandertag",
"intro": "Eine Lehrerin und ein paar Schulkinder stehen auf einmal vor dir!",
"speaker": "Lehrerin",
"intro_dialogue": "Hallo! Könntest du eine Minute für meine Schüler erübrigen?$Ich bringe ihnen gerade bei, wie Pokémon-Attacken funktionieren und würde ihnen gerne$eine Demonstration zeigen.$Würdest du uns eine Attacke deines Pokémon vorführen?",
"title": "Exkursion",
"description": "Eine Lehrerin fragt nach einer Attackenvorführung eines Pokémon. Je nachdem, welche Attacke du wählst, hat sie vielleicht etwas Nützliches für dich als Belohnung.",
"query": "Welchen Attacken-Typ wählst du?",
"option": {
"1": {
"label": "Physische Attacke",
"tooltip": "(+) Physische Item-Belohnungen"
},
"2": {
"label": "Eine Spezialattacke"
}
"label": "Spezielle Attacke",
"tooltip": "(+) Spezielle Item-Belohnungen"
},
"3": {
"label": "Status-Attacke",
"tooltip": "(+) Status Item-Belohnungen"
},
"selected": "{{pokeName}} zeigt eine beeindruckende Vorführung von {{move}}!"
},
"status": "Status",
"physical": "Physisch",
"special": "Spezial"
}
"second_option_prompt": "Wähle eine Attacke die dein Pokémon einsetzen soll.",
"incorrect": "...$Das ist keine {{moveCategory}}Attacke!\nEs tut mir leid, aber ich kann dir nichts geben.$Kommt Kinder, wir suchen uns woanders einen besseren Trainer.",
"incorrect_exp": "Es scheint, als hättest du eine wertvolle Lektion gelernt?$Dein Pokémon hat auch etwas Erfahrung gesammelt.",
"correct": "Ich dank dir vielmals für deine Freundlichkeit!$Ich hoffe, diese Items sind nützlich für dich.",
"correct_exp": "{{pokeName}} hat auch etwas wertvolle Erfahrung gesammelt!",
"status": "Status-",
"physical": "physische ",
"special": "spezielle "
}

View File

@ -0,0 +1,26 @@
{
"intro": "Du hast einen Sturm aus Rauch und Asche entdeckt!",
"title": "Feurige Folgen",
"description": "Die umherwirbelnde Asche und Glut haben die Sicht auf fast Null reduziert. Es scheint, als könnte es eine... Quelle geben, die diese Bedingungen verursacht. Aber was könnte hinter einem Phänomen dieser Größe stecken?",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Finde die Quelle",
"tooltip": "(?) Entdecke die Quelle\n(-) Schwieriger Kampf",
"selected": "Du hast die Quelle des Sturms gefunden!$Es sind zwei {{volcaronaName}}, die in der Mitte eines Paarungstanzes sind!$Sie nehmen die Unterbrechung nicht gut auf und greifen an!"
},
"2": {
"label": "Sich einigeln",
"tooltip": "(-) Die Folgen des Wetters erleiden",
"selected": "Die Folgen des Wetters sind verheerend!$Deine Pokémon nehmen 20% ihrer maximalen KP als Schaden!",
"target_burned": "Dein {{burnedPokemon}} wurde auch verbrannt!"
},
"3": {
"label": "Dein Feuer-Pokémon hilft",
"tooltip": "(+) Das Wetter klärt auf\n(+) Erhalte ein Holzkohle",
"disabled_tooltip": "Du benötigst mindestens 2 Feuer-Pokémon, um diese Option auszuwählen",
"selected": "Dein {{option3PrimaryName}} und {{option3SecondaryName}} führen dich zu zwei {{volcaronaName}}, die in der Mitte eines Paarungstanzes sind!$Zum Glück können deine Pokémon sie beruhigen,und sie ziehen ohne Probleme ab."
}
},
"found_charcoal": "Nachdem das Wetter aufklart, entdeckt dein {{leadPokemon}} etwas auf dem Boden.$@s{item_fanfare}{{leadPokemon}} erhält eine Holzkohle!"
}

View File

@ -0,0 +1,25 @@
{
"intro": "Etwas Glänzendes liegt auf dem Boden in der Nähe dieses Pokémons!",
"title": "Kampf oder Flucht",
"description": "Es scheint, als würde ein starkes Pokémon ein Item bewachen. Ein Kampf wäre der direkte Weg, aber es sieht stark aus. Vielleicht könntest du das Item stehlen, wenn du das richtige Pokémon für den Job hast.",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Kampf beginnen",
"tooltip": "(-) Schwerer Kampf\n(+) Neues Item",
"selected": "Du trittst dem Pokémon ohne Furcht entgegen.",
"stat_boost": "Die Stärke von {{enemyPokemon}} erhöht einen seiner Werte!"
},
"2": {
"label": "Das Item stehlen",
"disabled_tooltip": "Dein Pokémon muss eine bestimmte Attacken beherrschen, um diese Option zu wählen.",
"tooltip": "(+) {{option2PrimaryName}} setzt {{option2PrimaryMove}} ein",
"selected": ".@d{32}.@d{32}.@d{32}$Dein {{option2PrimaryName}} hilft dir und setzt {{option2PrimaryMove}} ein!$Du hast das Item gestohlen!"
},
"3": {
"label": "Verlassen",
"tooltip": "(-) Keine Belohnung",
"selected": "Du lässt das starke Pokémon mit seinem Item zurück und gehst weiter."
}
}
}

View File

@ -0,0 +1,30 @@
{
"intro_dialogue": "Kommen Sie näher, meine Damen und Herren!$Versuchen Sie Ihr Glück mit dem brandneuen {{wobbuffetName}}-Hau-den-Lukas!",
"speaker": "Animateur",
"title": "Spaß und Spiele!",
"description": "Du hast ein {{wobbuffetName}} gefunden, das ein Spiel spielt! Du hast @[TOOLTIP_TITLE]{3 Züge}, um das {{wobbuffetName}} so nah wie möglich an @[TOOLTIP_TITLE]{1 KP} heranzubringen, @[TOOLTIP_TITLE]{ohne es zu besiegen}, damit es eine riesige Gegenattacke auf der Glockenmaschine ausführen kann.\nAber sei vorsichtig! Wenn du das {{wobbuffetName}} besiegst, musst du die Kosten für die Wiederbelebung bezahlen!",
"query": "Möchtest du spielen?",
"option": {
"1": {
"label": "Das Spiel spielen",
"tooltip": "(-) Zahle {{option1Money, money}}\n(+) Spiele {{wobbuffetName}} Hau-den-Lukas",
"selected": "Zeit dein Glück herauszufordern!"
},
"2": {
"label": "Weggehen",
"tooltip": "(-) Keine Belohnung",
"selected": "Du beeilst dich auf deinem Weg, mit einem leichten Gefühl der Reue."
}
},
"ko": "Oh nein! Das {{wobbuffetName}} ist ohnmächtig geworden!$Du verlierst das Spiel und musst die Kosten für die Wiederbelebung bezahlen...",
"charging_continue": "Das {{wobbuffetName}} lädt seine Gegenattacke auf!",
"turn_remaining_3": "Drei Runden verbleiben!",
"turn_remaining_2": "Zwei Runden verbleiben!",
"turn_remaining_1": "Nur noch eine Runde!",
"end_game": "Die Zeit ist um!$Das {{wobbuffetName}} holt zum Gegenangriff aus und@d{16}.@d{16}.@d{16}.",
"best_result": "Das {{wobbuffetName}} schlägt so hart auf den Knopf, dass die Glocke vom oberen Teil abbricht!$Du gewinnst den Hauptpreis!",
"great_result": "Das {{wobbuffetName}} schlägt den Knopf so hart, dass die Glocke fast getroffen wird!$So nah! Du gewinnst den zweiten Preis!",
"good_result": "Das {{wobbuffetName}} trifft den Knopf stark genug, um die Hälfte der Skala zu erreichen!$Du verdienst den dritten Preis!",
"bad_result": "Das {{wobbuffetName}} trifft den Knopf kaum und nichts passiert...$Oh nein! Du gewinnst nichts!",
"outro": "Das war ein lustiges kleines Spiel!"
}

View File

@ -0,0 +1,32 @@
{
"intro": "Es ist eine Schnittstelle für die Globale Tauschstation, das GTS.",
"title": "Das GTS",
"description": "Ah, das GTS! Ein technologisches Wunder, mit dem du dich mit jedem auf der Welt verbinden kannst, um Pokémon mit ihnen zu tauschen! Wird das Glück dir heute hold sein?",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Tauschangebote prüfen",
"tooltip": "(+) Wähle ein Tauschangebot für eines deiner Pokémon aus",
"trade_options_prompt": "Wähle ein Pokémon aus, das du erhalten möchtest."
},
"2": {
"label": "Zaubertausch",
"tooltip": "(+) Seine eine deiner Pokémon an die GTS und erhalte ein zufälliges Pokémon im Austausch"
},
"3": {
"label": "Tausche ein Item",
"trade_options_prompt": "Wähle ein Item aus, das du senden möchtest.",
"invalid_selection": "Dieses Pokémon hat keine Items die getauscht werden können.",
"tooltip": "(+) Sende eines deiner Items an die GTS und erhalte ein zufälliges Item im Austausch"
},
"4": {
"label": "Weggehen",
"tooltip": "(-) Keine Belohnung",
"selected": "Heute ist keine Zeit zum Tauschen! Du gehst weiter."
}
},
"pokemon_trade_selected": "{{tradedPokemon}} wird an {{tradeTrainerName}} gesendet.",
"pokemon_trade_goodbye": "Machs gut, {{tradedPokemon}}!",
"item_trade_selected": "{{chosenItem}} wird an {{tradeTrainerName}} gesendet.$.@d{64}.@d{64}.@d{64}\n@s{level_up_fanfare}Tausch abgeschlossen!$Du hast {{itemName}} von {{tradeTrainerName}} erhalten!",
"trade_received": "@s{evolution_fanfare}{{tradeTrainerName}} hat dir {{received}} geschickt!"
}

View File

@ -0,0 +1,28 @@
{
"intro": "Du warst auf dem Meer umhergeirrt und effektiv nirgendwohin gekommen.",
"title": "Verloren auf See",
"description": "Die See ist in diesem Gebiet stürmisch und du hast kaum noch Energie. Das ist schlecht. Gibt es einen Ausweg aus der Situation?",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "{{option1PrimaryName}} kann helfen",
"label_disabled": "Kein {{option1RequiredMove}}",
"tooltip": "(+) {{option1PrimaryName}} rettet dich\n(+) {{option1PrimaryName}} erhält etwas EP",
"tooltip_disabled": "Du hast kein Pokémon, das {{option1RequiredMove}} erlernen kann",
"selected": "{{option1PrimaryName}} schwimmt voraus und führt dich zurück auf den richtigen Weg.${{option1PrimaryName}} scheint auch stärker geworden zu sein in dieser Zeit der Not!"
},
"2": {
"label": "{{option2PrimaryName}} kann helfen",
"label_disabled": "Kein {{option2RequiredMove}}",
"tooltip": "(+) {{option2PrimaryName}} rettet dich\n(+) {{option2PrimaryName}} erhält etwas EP",
"tooltip_disabled": "Du hast kein Pokémon, das {{option2RequiredMove}} erlernen kann",
"selected": "{{option2PrimaryName}} fliegt vor deinem Boot und führt dich zurück auf den richtigen Weg.${{option2PrimaryName}} scheint auch stärker geworden zu sein in dieser Zeit der Not!"
},
"3": {
"label": "Umherirren",
"tooltip": "(-) Jedes deiner Pokémon verliert {{damagePercentage}}% seiner maximalen KP",
"selected": "Du treibst im Boot umher, steuerst ohne Richtung, bis du endlich ein Wahrzeichen siehst, das du wiedererkennst.$Du und deine Pokémon sind erschöpft von dem ganzen Vorfall."
}
},
"outro": "Du bist wieder auf dem richtigen Weg."
}

View File

@ -0,0 +1,22 @@
{
"intro": "Mysteriöse Herausforderer sind aufgetaucht!",
"title": "Mysteriöse Herausforderer",
"description": "Wenn du einen Herausforderer besiegst, könntest du sie beeindrucken und eine Belohnung erhalten. Aber manche sehen ziemlich stark aus. Bist du bereit für die Herausforderung?",
"query": "Wen wirst du bekämpfen?",
"option": {
"1": {
"label": "Schlauer Trainer",
"tooltip": "(-) Standardkampf\n(+) TM Belohnungen"
},
"2": {
"label": "Starker Trainer",
"tooltip": "(-) Harter Kampf\n(+) Gute Belohnungen"
},
"3": {
"label": "Mächtigster Trainer",
"tooltip": "(-) Brutaler Kampf\n(+) Großartige Belohnungen"
},
"selected": "Der Herausforderer tritt vor..."
},
"outro": "Der mysteriöse Herausforderer wurde besiegt!"
}

View File

@ -0,0 +1,23 @@
{
"intro": "Du hast...@d{32} eine Truhe gefunden?",
"title": "Die mysteriöse Truhe",
"description": "Eine wunderschön verzierte Truhe steht auf dem Boden. Da muss doch etwas Gutes drin sein... oder?",
"query": "Wirst du sie öffnen?",
"option": {
"1": {
"label": "Öffnen",
"tooltip": "@[SUMMARY_BLUE]{({{trapPercent}}%) Etwas Schreckliches}\n@[SUMMARY_GREEN]{({{commonPercent}}%) Standard Belohnung}\n@[SUMMARY_GREEN]{({{ultraPercent}}%) Gute Belohnung}\n@[SUMMARY_GREEN]{({{roguePercent}}%) Großartige Belohnung}\n@[SUMMARY_GREEN]{({{masterPercent}}%) Erstaunliche Belohnung}",
"selected": "Du öffnest die Truhe und findest...",
"normal": "Einfach ein paar normale Werkzeuge und Gegenstände.",
"good": "Ein paar ziemlich gute Werkzeuge und Gegenstände.",
"great": "Ein paar großartige Werkzeuge und Gegenstände.",
"amazing": "Ein erstaunlichen Gegenstand!",
"bad": "Oh nein!@d{32}\nDie Truhe war tatsächlich ein {{gimmighoulName}}!$Dein {{pokeName}} springt schützend vor dich aber wird dabei besiegt!"
},
"2": {
"label": "Zu riskant, weggehen",
"tooltip": "(-) Keine Belohnung",
"selected": "Du gehst schnell weiter, mit einem leichten Gefühl der Reue."
}
}
}

View File

@ -0,0 +1,31 @@
{
"intro": "Eine geschäftige Person spricht dich an.",
"speaker": "Arbeitende Person",
"intro_dialogue": "Du siehst aus, als hättest du viele fähige Pokémon!$Wir können dich bezahlen, wenn du uns bei einigen Teilzeitjobs hilfst!",
"title": "Teilzeitjob",
"description": "Es scheint, als gäbe es viele Aufgaben, die erledigt werden müssen. Je besser dein Pokémon für eine Aufgabe geeignet ist, desto mehr Geld kann es verdienen.",
"query": "Welchen Job wählst du?",
"invalid_selection": "Das Pokémon muss genug KP haben.",
"option": {
"1": {
"label": "Lieferdienst",
"tooltip": "(-) Dein Pokémon nutzt seine Geschwindigkeit\n(+) Verdiene @[MONEY]{Geld}",
"selected": "Dein {{selectedPokemon}} arbeitet eine Schicht lang damit, Bestellungen an Kunden auszuliefern."
},
"2": {
"label": "Lagerarbeit",
"tooltip": "(-) Dein Pokémon nutzt seine Stärke und Ausdauer\n(+) Verdiene @[MONEY]{Geld}",
"selected": "Dein {{selectedPokemon}} arbeitet eine Schicht lang damit, Gegenstände im Lager zu bewegen."
},
"3": {
"label": "Verkäufer",
"tooltip": "(-) Dein {{option3PrimaryName}} nutzt {{option3PrimaryMove}}\n(+) Verdiene @[MONEY]{Geld}",
"disabled_tooltip": "Dein Pokémon muss bestimmte Attacken kennen, um diesen Job zu erledigen",
"selected": "Dein {{option3PrimaryName}} verbringt den Tag damit, {{option3PrimaryMove}} einzusetzen, um Kunden in den Laden zu locken!"
}
},
"job_complete_good": "Danke für die Hilfe! Dein {{selectedPokemon}} war unglaublich hilfreich!$Hier ist dein Gehalt für den Tag.",
"job_complete_bad": "Dein {{selectedPokemon}} hat uns ein wenig geholfen!$Hier ist dein Gehalt für den Tag.",
"pokemon_tired": "Dein {{selectedPokemon}} ist erschöpft! Die AP aller seiner Attacken wurden auf 2 reduziert!",
"outro": "Komm doch bald wieder und hilf uns erneut!"
}

View File

@ -0,0 +1,46 @@
{
"intro": "Es ist die Safari-Zone!",
"title": "Die Safari-Zone",
"description": "Es gibt alle Arten von seltenen und besonderen Pokémon, die hier gefunden werden können!\nWenn du dich entscheidest, einzutreten, hast du kannst du in den nächsten 3 Wellen versuchen, besondere Pokémon zu fangen.\nAber sei gewarnt, diese Pokémon können fliehen, bevor du sie fangen kannst!",
"query": "Willst du eintreten?",
"option": {
"1": {
"label": "Eintreten",
"tooltip": "(-) Zahle {{option1Money, money}}\n@[SUMMARY_GREEN]{(?) Safari Zone}",
"selected": "Zeit, dein Glück herauszufordern!"
},
"2": {
"label": "Weggehen",
"tooltip": "(-) Keine Belohnung",
"selected": "Du gehst deines Weges, mit einem leichten Gefühl der Reue."
}
},
"safari": {
"1": {
"label": "Pokéball werfen",
"tooltip": "(+) Werfe einen Pokéball",
"selected": "Du wirfst einen Pokéball!"
},
"2": {
"label": "Köder werfen",
"tooltip": "(+) Erhöht die Fangrate\n(-) Erhöht die Fluchtchance",
"selected": "Du wirfst einen Köder!"
},
"3": {
"label":"Matsch werfen",
"tooltip": "(+) Vermindert die Fluchtchance\n(-) Chance, die Fangrate zu verringern",
"selected": "Du wirst ein wenig Matsch!"
},
"4": {
"label": "Fliehen",
"tooltip": "(?) Fliehe vor diesem Pokémon"
},
"watching": "{{pokemonName}} beobachtet alles aufmerksam!",
"eating": "{{pokemonName}} frisst!",
"busy_eating": "{{pokemonName}} konzentriert sich aufs Futter!",
"angry": "{{pokemonName}} ist wütend!",
"beside_itself_angry": "{{pokemonName}} ist außer sich vor Wut!",
"remaining_count": "{{remainingCount}} Pokémon übrig!"
},
"outro": "Das war ein spannendes Abenteuer in der Safari-Zone!"
}

View File

@ -0,0 +1,27 @@
{
"intro": "Ein Mann in einem dunklen Mantel kommt auf dich zu.",
"speaker": "Zwielichtiger Verkäufer",
"intro_dialogue": ".@d{16}.@d{16}.@d{16}$Ich habe die Ware, wenn du das Geld hast.$Aber sei sicher, dass deine Pokémon es vertragen können.",
"title": "Der Nährstoff-Verkäufer",
"description": "Der Mann öffnet seinen Mantel und zeigt dir einige Pokémon-Nährstoffe. Die Preise, die er nennt, scheinen ein wirklich gutes Angebot zu sein. Fast zu gut...\nEr bietet dir zwei Möglichkeiten zur Auswahl an.",
"query": "Welches Angebot wirst du wählen?",
"invalid_selection": "Pokémon must be healthy enough.",
"option": {
"1": {
"label": "Der billige Deal",
"tooltip": "(-) Zahle {{option1Money, money}}\n(-) Nebenwirkungen?\n(+) Das gewählte Pokémon erhält 2 zufällige Nährstoffe"
},
"2": {
"label": "Der teure Deal",
"tooltip": "(-) Zahle {{option2Money, money}}\n(+) Das gewählte Pokémon erhält 2 zufällige Nährstoffe"
},
"3": {
"label": "Weggehen",
"tooltip": "(-) Keine Belohnung",
"selected": "Ey, hätte ich nicht gedacht, dass du ein Feigling bist."
},
"selected": "Der Mann überreicht dir zwei Flaschen und verschwindet schnell.${{selectedPokemon}} erhält {{boost1}} und {{boost2}} Nährstoffe!"
},
"cheap_side_effects": "Aber die Medizin hatte Nebenwirkungen!$Dein {{selectedPokemon}} nimmt etwas Schaden,\nund sein Wesen wurde zu {{newNature}} geändert!",
"no_bad_effects": "Es scheint, als hätten die Nährstoffe keine Nebenwirkungen."
}

View File

@ -0,0 +1,25 @@
{
"intro": "Als du einen schmalen Pfad entlang gehst, siehst du eine riesige Silhouette, die deinen Weg blockiert.$Du kommst näher, um zu sehen, dass ein {{snorlaxName}} friedlich schläft.$Es scheint, als gäbe es keinen Weg daran vorbei.",
"title": "Schlafendes {{snorlaxName}}",
"description": "Du könntest es angreifen, um es zum Bewegen zu bringen, oder einfach warten, bis es aufwacht. Wer weiß, wie lange das dauern könnte...",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Kampf beginnen",
"tooltip": "(-) Schlafendes {{snorlaxName}} greift an\n(+) Spezielle Belohnung",
"selected": "Du trittst dem Pokémon ohne Furcht entgegen."
},
"2": {
"label":"Warte, bis es sich bewegt",
"tooltip": "(-) Warte eine lange Zeit\n(+) Dein Team wird geheilt",
"selected": ".@d{32}.@d{32}.@d{32}$Du wartest sehr lange, bis das {{snorlaxName}} endlich aufwacht. Dein Team wird schläfrig...",
"rest_result": "Nachdem ihr alle aufgewacht seid, ist das {{snorlaxName}} nirgends zu finden - aber deine Pokémon sind alle geheilt!"
},
"3": {
"label": "Klaue seine Items",
"tooltip": "(+) {{option3PrimaryName}} setzt {{option3PrimaryMove}} ein\n(+) Spezielle Belohnung",
"disabled_tooltip": "Dein Pokémon muss bestimmte Attacken beherrschen, um diese Option zu wählen.",
"selected": "Dein {{option3PrimaryName}} setzt {{option3PrimaryMove}} ein!$@s{item_fanfare}Es stiehlt die Überreste des schlafenden {{snorlaxName}}s und ihr macht euch aus dem Staub!"
}
}
}

View File

@ -0,0 +1,27 @@
{
"intro": "Es ist eine seltsame Maschine, die laut summt...",
"title": "Teleportierende Streiche",
"description": "Die Maschine hat ein Schild, auf dem steht:\n\"Geld einwerfen und in die Kapsel steigen.\"\nVielleicht kann sie dich irgendwohin transportieren...",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Geld einwerfen",
"tooltip": "(-) Bezahle {{price, money}}\n(?) Teleportiere dich in ein neues Biom",
"selected": "Du wirfst etwas Geld ein, und die Kapsel öffnet sich.\nDu steigst ein..."
},
"2": {
"label": "Ein Pokémon hilft",
"tooltip": "(-) {{option2PrimaryName}} hilft\n(+) {{option2PrimaryName}} erhält EXP\n(?) Teleportiere dich in ein neues Biom",
"disabled_tooltip": "Du brauchst ein Stahl- oder Elektro-Pokémon, um diese Option zu wählen.",
"selected": "Der Typ von {{option2PrimaryName}} ermöglicht es ihm, die Bezahlschranke der Maschine zu umgehen!$Die Kapsel öffnet sich, und du steigst ein..."
},
"3": {
"label": "Maschine inspizieren",
"tooltip": "(-) Pokémon-Kampf",
"selected": "Du wirst von den blinkenden Lichtern und den seltsamen Geräuschen der Maschine angezogen...$Du bemerkst nicht einmal, wie ein wildes Pokémon sich anschleicht und dich überfällt!"
}
},
"transport": "Die Maschine zittert heftig und macht seltsame Geräusche!$Kaum hat es begonnen, wird es wieder ruhig.",
"attacked": "Du trittst in eine völlig neue Gegend und erschreckst ein wildes Pokémon!$Das wilde Pokémon greift an!",
"boss_enraged": "Das wilde {{enemyPokemon}} ist wütend geworden!"
}

View File

@ -0,0 +1,31 @@
{
"intro": "Ein Trainer mit vielen Pokémon-Eiern!",
"intro_dialogue": "Hey Trainer!$Es sieht so aus, als ob einige deiner Pokémon sich ein wenig niedergeschlagen fühlen.$Warum kämpfst du nicht gegen mich, um sie aufzumuntern?",
"title": "Triff die Pokémon-Züchter-Expertin!",
"description": "Du wurdest zu einem Kampf herausgefordert, bei dem du nur @[TOOLTIP_TITLE]{ein einziges Pokémon verwenden darfst}. Es könnte schwierig werden, aber es würde sicherlich die Bindung vertiefen, die du mit dem Pokémon hast, das du wählst!$Wenn du gewinnst, wird die Züchterin dir einige @[TOOLTIP_TITLE]{Pokémon-Eier} geben!",
"query": "Wer wird für dich kämpfen?",
"cleffa_1_nickname": "Ass-Pii-Rin",
"cleffa_2_nickname": "Pi-mal-Daumen",
"cleffa_3_nickname": "Pii-cknick",
"option": {
"1": {
"label": "{{pokemon1Name}}",
"tooltip_base": "(-) Harter Kampf\n(+) Erhöhe Freundschaft mit {{pokemon1Name}}"
},
"2": {
"label": "{{pokemon2Name}}",
"tooltip_base": "(-) Harter Kampf\n(+) Erhöhe Freundschaft mit {{pokemon2Name}}"
},
"3": {
"label": "{{pokemon3Name}}",
"tooltip_base": "(-) Harter Kampf\n(+) Erhöhe Freundschaft mit {{pokemon3Name}}"
},
"selected": "Lass uns beginnen!"
},
"outro": "Schau wie glücklich dein {{chosenPokemon}} nun ist!$Hier, diese Pokémon-Eier kannst du auch haben.",
"outro_failed": "Wie enttäuschend...$Es sieht so aus, als hättest du noch einen langen Weg vor dir, um das Vertrauen deines Pokémon zu gewinnen!",
"gained_eggs": "@s{item_fanfare}Du erhählst {{numEggs}}!",
"eggs_tooltip": "\n(+) Erhalte {{eggs}}",
"numEggs_one": "{{count}} Ei der Stufe {{rarity}}",
"numEggs_other": "{{count}} Eier der Stufe {{rarity}}"
}

View File

@ -0,0 +1,23 @@
{
"intro": "Ein fröhlicher älterer Mann kommt auf dich zu.",
"speaker": "Reicher Mann",
"intro_dialogue": "Hallo! Ich habe ein Angebot, das du nicht ablehnen kannst!",
"title": "Der Pokémon-Verkäufer",
"description": "Dieses {{purchasePokemon}} ist extrem einzigartig und hat eine Fähigkeit, die normalerweise nicht bei seiner Art zu finden ist! Ich lasse dich dieses tolle {{purchasePokemon}} für gerade einmal {{price, money}} haben!\"\n\"Was sagst du dazu?\"",
"description_shiny": "Dieses {{purchasePokemon}} ist extrem einzigartig und hat eine Farbe, die normalerweise nicht bei seiner Art zu finden ist! Ich lasse dich dieses tolle {{purchasePokemon}} für gerade einmal {{price, money}} haben!\"\n\"Was sagst du dazu?\"",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Akzeptieren",
"tooltip": "(-) Bezahlen {{price, money}}\n(+) Erhalte ein {{purchasePokemon}} mit seiner versteckten Fähigkeit",
"tooltip_shiny": "(-) Bezahlen {{price, money}}\n(+) Erhalte ein schillerndes {{purchasePokemon}}",
"selected_message": "Du bezahlst einen unverschämten Betrag und kaufst das {{purchasePokemon}}.",
"selected_dialogue": "Ausgezeichnete Wahl!$Ich sehe, dass du ein gutes Auge für Geschäfte hast.$Oh, ja...@d{64} Rückgaben werden nicht akzeptiert, hast du das verstanden?"
},
"2": {
"label": "Ablehnen",
"tooltip": "(-) Keine Belohnung",
"selected": "Nein?@d{32} Du sagst nein?$Ich mache das nur als Gefallen für dich!"
}
}
}

View File

@ -0,0 +1,21 @@
{
"intro": "Es ist ein riesiger {{shuckleName}} und ein riesiger Vorrat an... Saft?",
"title": "Das gute Zeug",
"description": "Das {{shuckleName}} das deinen Weg blockiert, sieht unglaublich stark aus. In der Zwischenzeit strahlt der Saft daneben eine Art Kraft aus.\nDas {{shuckleName}} streckt seine Fühler in deine Richtung aus. Es scheint, als wolle es etwas tun...",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Dem {{shuckleName}} näher kommen",
"tooltip": "(?) Etwas Schreckliches oder Wunderbares könnte passieren",
"selected": "Dir wird schwarz vor Augen...",
"selected_2": "@f{150}Als du aufwachst, ist das {{shuckleName}} verschwunden und der Saftvorrat komplett geleert.${{highBstPokemon1}} und {{highBstPokemon2}} fühlen eine schreckliche Lethargie über sich kommen!$Ihre Basiswerte wurden um {{reductionValue}} reduziert!$Deine verbleibenden Pokémon fühlen jedoch eine unglaubliche Vitalität!$Ihre Basiswerte werden um {{increaseValue}} erhöht!"
},
"2": {
"label": "Das {{shuckleName}} bekämpfen",
"tooltip": "(-) Schwieriger Kampf\n(+) Spezielle Belohnungen",
"selected": "Das {{shuckleName}} wird wütend und trinkt etwas von seinem Saft, bevor es angreift!",
"stat_boost": "Der Saft des {{shuckleName}} erhöht seine Werte!"
}
},
"outro": "Was ist hier gerade passiert?"
}

View File

@ -0,0 +1,22 @@
{
"intro": "Eine Familie steht vor ihrem Haus!",
"speaker": "Die Sihgers",
"intro_dialogue": "Wir sind die Sihgers!$Wie wäre es, wenn du gegen unsere Familie in einer Reihe von Pokémon-Kämpfen antrittst?",
"title": "Die Sihgers-Herausforderung",
"description": "Die Sihgers sind eine Familie von 5 Trainern, und sie wollen kämpfen! Wenn du sie alle hintereinander besiegst, bekommst du einen grandiosen Preis. Aber kannst du die Hitze aushalten?",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Die Herausforderung annehmen",
"tooltip": "(-) Brutaler Kampf\n(+) Spezielle Belohnung",
"selected": "Lass die Herausforderung beginnen!"
},
"2": {
"label": "Die Herausforderung ablehnen",
"tooltip": "(+) Team wird geheilt\n(+) Erhalte ein Supersondererbonbon",
"selected": "Das ist zu schade. Dein Team sieht ziemlich mitgenommen aus, warum ruhst du dich nicht eine Weile aus?"
}
},
"victory": "Glückwunsch, du hast unsere Herausforderung gemeistert!$Zuerst möchten wir dir diesen Gutschein geben.",
"victory_2": "Außerdem benutzt unsere Familie diese Machoschiene, um unsere Pokémon effektiver zu tranieren.$Du brauchst es vielleicht nicht, da du uns alle geschlagen hast, aber wir hoffen, dass du es trotzdem annimmst!"
}

View File

@ -0,0 +1,33 @@
{
"intro": "Du stolperst über einige Trainingsutensilien und Vorräte.",
"title": "Traningssitzung",
"description": "Diese Vorräte sehen so aus, als könnten sie verwendet werden, um ein Mitglied deines Teams zu trainieren! Es gibt ein paar Möglichkeiten, wie du dein Pokémon trainieren könntest, indem du gegen es mit dem Rest deines Teams kämpfst.",
"query": "Wie möchtest du trainieren?",
"invalid_selection": "Pokémon muss genügend KP haben.",
"option": {
"1": {
"label": "Leichtes Training",
"tooltip": "(-) Leichter Kampf\n(+) Verbessere 2 zufällige IS-Werte des Pokémon",
"finished": "{{selectedPokemon}} kommt zurück, fühlt sich erschöpft aber zufrieden!$Seine {{stat1}} und {{stat2}} IS-Werte wurden verbessert!"
},
"2": {
"label": "Moderates Training",
"tooltip": "(-) Moderater Kampf\n(+) Ändere das Wesen des Pokémon",
"select_prompt": "Wähle ein neues Wesen aus, um dein Pokémon zu trainieren.",
"finished": "{{selectedPokemon}} kehrt zurück, fühlt sich erschöpft aber zufrieden!$Es hat nun ein neues Wesen: {{nature}}!"
},
"3": {
"label": "Schweres Training",
"tooltip": "(-) Harter Kampf\n(+) Ändere die Fähigkeit des Pokémon",
"select_prompt": "Wähle eine neue Fähigkeit aus, um dein Pokémon zu trainieren.",
"finished": "{{selectedPokemon}} kehrt zurück, fühlt sich erschöpft aber zufrieden!$Seine Fähigkeit wurde zu {{ability}} geändert!"
},
"4": {
"label": "Weggehen",
"tooltip": "(-) Keine Belohnung",
"selected": "Du hast keine Zeit für Training und gehst weiter."
},
"selected": "{{selectedPokemon}} bewegt sich über die Lichtung, um dir gegenüberzutreten..."
},
"outro": "Das war eine erfolgreiche Trainingssitzung!"
}

View File

@ -0,0 +1,20 @@
{
"intro":"Ein riesieger Haufen Müll. Wo kommt der auf einmal her?",
"title": "Vom Müllhaufen zum Schatzhaufen",
"description": "Der Müllberg ragt über dir auf und du kannst einige wertvolle Gegenstände im Müll entdecken. Bist du sicher, dass du dich in den Dreck wälzen willst, um sie zu bekommen?",
"query": "Was willst du tun?",
"option": {
"1": {
"label": "Nach Wertsachen suchen",
"tooltip": "(-) Heilitems kosten ab jetzt das Dreifache\n(+) Erhalte tolle Items",
"selected": "Du arbeitest dich durch den Müllhaufen und wirst von Dreck überzogen.$Kein respektabler Ladenbesitzer wird dir in deinem schmutzigen Zustand etwas verkaufen!$Aber es gibt ja auch andere... weniger respektable.$Natürlich verlangen sie höhere Preise.$Aber du hast einige unglaubliche Items im Müll gefunden!"
},
"2": {
"label": "Genauer untersuchen",
"tooltip": "(?) Finde die Quelle des Mülls",
"selected": "Du wanderst um den Müllhaufen herum und suchst nach Hinweisen, wie dieser hier gelandet sein könnte...",
"selected_2": "Der Müll bewegt sich! Es war nicht nur Müll, es war ein Pokémon!"
}
}
}

View File

@ -0,0 +1,26 @@
{
"intro": "Das ist kein gewöhnliches Pokémon!",
"title": "Ungewöhnliche Züchtung",
"description": "Das {{enemyPokemon}} sieht im Vergleich zu anderen seiner Art besonders aus. @[TOOLTIP_TITLE]{Vielleicht kennt es einen besondere Attacke?} Du könntest es einfach bekämpfen und fangen, aber es gibt vielleicht auch eine Möglichkeit, es zu befreunden.",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Kampf beginnen",
"tooltip": "(-) Schwieriger Kampf\n(+) Starkes fangbares Pokémon",
"selected": "Du stellst dich dem {{enemyPokemon}} ohne Furcht.",
"stat_boost": "Die gesteigerten Fähigkeiten des {{enemyPokemon}} erhöhen seine Werte!"
},
"2": {
"label": "Ihm Futter geben",
"disabled_tooltip": "Du brauchst 4 Beeren, um diese Option zu wählen",
"tooltip": "(-) Gib 4 Beeren\n(+) Das {{enemyPokemon}} mag dich",
"selected": "Du wirfst die Beeren zu {{enemyPokemon}}!$Es frisst sie glücklich!$Das {{enemyPokemon}} möchte sich dir anschließen!"
},
"3": {
"label": "Es befreunden",
"disabled_tooltip": "Dein Pokémon muss bestimmte Attacken kennen, um diese Option zu wählen",
"tooltip": "(+) {{option3PrimaryName}} setzt {{option3PrimaryMove}} ein\n(+) Das {{enemyPokemon}} mag dich",
"selected": "Dein {{option3PrimaryName}} setzt {{option3PrimaryMove}} ein, um das {{enemyPokemon}} zu bezaubern!$Das {{enemyPokemon}} möchte sich dir anschließen!"
}
}
}

View File

@ -0,0 +1,22 @@
{
"intro": "Eine schemenhafte Frau versperrt dir den Weg. Irgendetwas an ihr ist beunruhigend...",
"speaker": "Frau",
"intro_dialogue": "Ich habe deine Zukünfte gesehen, deine Vergangenheiten...$Siehst du sie auch?",
"title": "???",
"description": "Die Worte der Frau hallen in deinem Kopf wider. Es war nicht nur eine einzelne Stimme, sondern eine unendliche Vielzahl aus allen Zeiten und Realitäten. Dir wird schwindelig, die Frage bleibt in deinem Kopf hängen...\n@[TOOLTIP_TITLE]{\"Ich habe deine Zukünfte gesehen, deine Vergangenheiten...Siehst du sie auch?\"}",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "\"Ich sehe sie\"",
"tooltip": "@[SUMMARY_GREEN]{(?) Beeinflusst deine Pokémon}",
"selected": "Ihre Hand berührt dich und alles wird schwarz.$Dann...@d{64} Du siehst alles. Jede Zeitlinie, all deine verschiedenen Ichs, Vergangenheit und Zukunft.$Alles, was dich ausmacht, alles, was du sein wirst...@d{64}",
"cutscene": "Du siehst deine Pokémon,@d{32} wie sie sich aus jeder Realität vereinen, um etwas Neues zu werden...@d{64}",
"dream_complete": "Als du erwachst, ist die Frau - war es eine Frau oder ein Geist? - verschwunden...$.@d{32}.@d{32}.@d{32}$Dein Pokémon-Team hat sich verändert... Oder ist es das gleiche Team, das du schon immer hattest?"
},
"2": {
"label": "Schnell wegrennen",
"tooltip": "(-) Beeinflusst deine Pokémon",
"selected": "Du reißt deinen Geist aus einem betäubenden Griff und fliehst hastig.$Als du schließlich anhältst, um dich zu sammeln, überprüfst du die Pokémon in deinem Team.$Aus irgendeinem Grund hat sich das Level aller Pokémon verringert!"
}
}
}

View File

@ -15,6 +15,7 @@
"UNPAUSE_EVOLUTION": "Entwicklung fortsetzen",
"REVIVE": "Wiederbeleben",
"RENAME": "Umbenennen",
"SELECT": "Auswählen",
"choosePokemon": "Wähle ein Pokémon.",
"doWhatWithThisPokemon": "Was soll mit diesem Pokémon geschehen?",
"noEnergy": "{{pokemonName}} ist nicht fit genug, um zu kämpfen!",
@ -44,4 +45,4 @@
"untilWeMeetAgain": "Bis wir uns wiedersehen, {{pokemonName}}!",
"sayonara": "Sayonara, {{pokemonName}}!",
"smellYaLater": "Also dann, man riecht sich! Ciao!, {{pokemonName}}!"
}
}

View File

@ -167,5 +167,19 @@
"alder_iris_double": "Lauro & Lilia",
"iris_alder_double": "Lilia & Lauro",
"piers_marnie_double": "Nezz & Mary",
"marnie_piers_double": "Mary & Nezz"
"marnie_piers_double": "Mary & Nezz",
"buck": "Avenaro",
"cheryl": "Raissa",
"marley": "Charlie",
"mira": "Orisa",
"riley": "Urs",
"victor": "Viktor",
"victoria": "Viktoria",
"vivi": "Sieglinde",
"vicky": "Vicky",
"vito": "Paul",
"bug_type_superfan": "Käfersammler-Superfan",
"expert_pokemon_breeder": "Pokémon-Züchter-Expertin"
}

View File

@ -35,5 +35,7 @@
"aether_admin": "Æther-Regionalleiter",
"skull_admin": "Team Skull Vorstand",
"macro_admin": "Vizepräsidentin von Macro Cosmos",
"star_admin": "Team Star Boss"
"star_admin": "Team Star Boss",
"the_winstrates": "Sihgers"
}

View File

@ -73,5 +73,6 @@
"tarShotOnAdd": "{{pokemonNameWithAffix}} became weaker to fire!",
"substituteOnAdd": "{{pokemonNameWithAffix}} put in a substitute!",
"substituteOnHit": "The substitute took damage for {{pokemonNameWithAffix}}!",
"substituteOnRemove": "{{pokemonNameWithAffix}}'s substitute faded!"
"substituteOnRemove": "{{pokemonNameWithAffix}}'s substitute faded!",
"autotomizeOnAdd": "{{pokemonNameWIthAffix}} became nimble!"
}

View File

@ -55,36 +55,36 @@ import moveTriggers from "./move-trigger.json";
import runHistory from "./run-history.json";
import mysteryEncounterMessages from "./mystery-encounter-messages.json";
import lostAtSea from "./mystery-encounters/lost-at-sea-dialogue.json";
import mysteriousChest from "#app/locales/en/mystery-encounters/mysterious-chest-dialogue.json";
import mysteriousChallengers from "#app/locales/en/mystery-encounters/mysterious-challengers-dialogue.json";
import darkDeal from "#app/locales/en/mystery-encounters/dark-deal-dialogue.json";
import departmentStoreSale from "#app/locales/en/mystery-encounters/department-store-sale-dialogue.json";
import fieldTrip from "#app/locales/en/mystery-encounters/field-trip-dialogue.json";
import fieryFallout from "#app/locales/en/mystery-encounters/fiery-fallout-dialogue.json";
import fightOrFlight from "#app/locales/en/mystery-encounters/fight-or-flight-dialogue.json";
import safariZone from "#app/locales/en/mystery-encounters/safari-zone-dialogue.json";
import shadyVitaminDealer from "#app/locales/en/mystery-encounters/shady-vitamin-dealer-dialogue.json";
import slumberingSnorlax from "#app/locales/en/mystery-encounters/slumbering-snorlax-dialogue.json";
import trainingSession from "#app/locales/en/mystery-encounters/training-session-dialogue.json";
import theStrongStuff from "#app/locales/en/mystery-encounters/the-strong-stuff-dialogue.json";
import pokemonSalesman from "#app/locales/en/mystery-encounters/the-pokemon-salesman-dialogue.json";
import offerYouCantRefuse from "#app/locales/en/mystery-encounters/an-offer-you-cant-refuse-dialogue.json";
import delibirdy from "#app/locales/en/mystery-encounters/delibirdy-dialogue.json";
import absoluteAvarice from "#app/locales/en/mystery-encounters/absolute-avarice-dialogue.json";
import aTrainersTest from "#app/locales/en/mystery-encounters/a-trainers-test-dialogue.json";
import trashToTreasure from "#app/locales/en/mystery-encounters/trash-to-treasure-dialogue.json";
import berriesAbound from "#app/locales/en/mystery-encounters/berries-abound-dialogue.json";
import clowningAround from "#app/locales/en/mystery-encounters/clowning-around-dialogue.json";
import partTimer from "#app/locales/en/mystery-encounters/part-timer-dialogue.json";
import dancingLessons from "#app/locales/en/mystery-encounters/dancing-lessons-dialogue.json";
import weirdDream from "#app/locales/en/mystery-encounters/weird-dream-dialogue.json";
import theWinstrateChallenge from "#app/locales/en/mystery-encounters/the-winstrate-challenge-dialogue.json";
import teleportingHijinks from "#app/locales/en/mystery-encounters/teleporting-hijinks-dialogue.json";
import bugTypeSuperfan from "#app/locales/en/mystery-encounters/bug-type-superfan-dialogue.json";
import funAndGames from "#app/locales/en/mystery-encounters/fun-and-games-dialogue.json";
import uncommonBreed from "#app/locales/en/mystery-encounters/uncommon-breed-dialogue.json";
import globalTradeSystem from "#app/locales/en/mystery-encounters/global-trade-system-dialogue.json";
import expertPokemonBreeder from "#app/locales/en/mystery-encounters/the-expert-pokemon-breeder-dialogue.json";
import mysteriousChest from "./mystery-encounters/mysterious-chest-dialogue.json";
import mysteriousChallengers from "./mystery-encounters/mysterious-challengers-dialogue.json";
import darkDeal from "./mystery-encounters/dark-deal-dialogue.json";
import departmentStoreSale from "./mystery-encounters/department-store-sale-dialogue.json";
import fieldTrip from "./mystery-encounters/field-trip-dialogue.json";
import fieryFallout from "./mystery-encounters/fiery-fallout-dialogue.json";
import fightOrFlight from "./mystery-encounters/fight-or-flight-dialogue.json";
import safariZone from "./mystery-encounters/safari-zone-dialogue.json";
import shadyVitaminDealer from "./mystery-encounters/shady-vitamin-dealer-dialogue.json";
import slumberingSnorlax from "./mystery-encounters/slumbering-snorlax-dialogue.json";
import trainingSession from "./mystery-encounters/training-session-dialogue.json";
import theStrongStuff from "./mystery-encounters/the-strong-stuff-dialogue.json";
import pokemonSalesman from "./mystery-encounters/the-pokemon-salesman-dialogue.json";
import offerYouCantRefuse from "./mystery-encounters/an-offer-you-cant-refuse-dialogue.json";
import delibirdy from "./mystery-encounters/delibirdy-dialogue.json";
import absoluteAvarice from "./mystery-encounters/absolute-avarice-dialogue.json";
import aTrainersTest from "./mystery-encounters/a-trainers-test-dialogue.json";
import trashToTreasure from "./mystery-encounters/trash-to-treasure-dialogue.json";
import berriesAbound from "./mystery-encounters/berries-abound-dialogue.json";
import clowningAround from "./mystery-encounters/clowning-around-dialogue.json";
import partTimer from "./mystery-encounters/part-timer-dialogue.json";
import dancingLessons from "./mystery-encounters/dancing-lessons-dialogue.json";
import weirdDream from "./mystery-encounters/weird-dream-dialogue.json";
import theWinstrateChallenge from "./mystery-encounters/the-winstrate-challenge-dialogue.json";
import teleportingHijinks from "./mystery-encounters/teleporting-hijinks-dialogue.json";
import bugTypeSuperfan from "./mystery-encounters/bug-type-superfan-dialogue.json";
import funAndGames from "./mystery-encounters/fun-and-games-dialogue.json";
import uncommonBreed from "./mystery-encounters/uncommon-breed-dialogue.json";
import globalTradeSystem from "./mystery-encounters/global-trade-system-dialogue.json";
import expertPokemonBreeder from "./mystery-encounters/the-expert-pokemon-breeder-dialogue.json";
/**
* Dialogue/Text token injection patterns that can be used:

View File

@ -174,5 +174,9 @@
"INVERSE_BATTLE": {
"name": "Espejo ojepsE",
"description": "Completa el reto de Combate Inverso.\n.osrevnI etabmoC ed oter le atelpmoC"
},
"BREEDERS_IN_SPACE": {
"name": "¡Criapokémon en el Espacio!",
"description": "Derrota al Criapokémon Experto en el Bioma Espacial."
}
}

View File

@ -1 +1,3 @@
{}
{
"generation": "Generación {{generation}}"
}

View File

@ -1,91 +1,107 @@
{
"bossAppeared": "¡{{bossName}} te corta el paso!",
"trainerAppeared": "¡{{trainerName}}\nte desafía!",
"trainerAppearedDouble": "¡{{trainerName}}\nquieren luchar!",
"trainerSendOut": "¡{{trainerName}} saca a\n{{pokemonName}}!",
"singleWildAppeared": Un {{pokemonName}} salvaje te corta el paso!",
"multiWildAppeared": Un {{pokemonName1}} y un {{pokemonName2}} salvajes\nte cortan el paso!",
"playerComeBack": "¡{{pokemonName}}, ven aquí!",
"singleWildAppeared": {{pokemonName}} salvaje te corta el paso!",
"multiWildAppeared": {{pokemonName1}} y {{pokemonName2}} salvajes\nte cortan el paso!",
"playerComeBack": "¡{{pokemonName}}, vuelve!",
"trainerComeBack": "¡{{trainerName}} retira a {{pokemonName}} del combate!",
"playerGo": "¡Adelante, {{pokemonName}}!",
"trainerGo": "¡{{trainerName}} saca a {{pokemonName}}!",
"switchQuestion": "¿Quieres cambiar a\n{{pokemonName}}?",
"switchQuestion": "¿Quieres cambiar de {{pokemonName}}?",
"trainerDefeated": "¡Has derrotado a\n{{trainerName}}!",
"moneyWon": "¡Has ganado\n₽{{moneyAmount}} por vencer!",
"pokemonCaught": "¡{{pokemonName}} atrapado!",
"addedAsAStarter": "{{pokemonName}} ha sido añadido\na tus iniciales!",
"partyFull": "Tu equipo esta completo.\n¿Quieres liberar un Pokémon para meter a {{pokemonName}}?",
"moneyWon": "¡Has ganado\n{{moneyAmount}}₽ por vencer!",
"moneyPickedUp": "¡Has recogido {{moneyAmount}}₽!",
"pokemonCaught": "¡{{pokemonName}} ha sido atrapado!",
"pokemonObtained": "¡Has recibido a {{pokemonName}}!",
"pokemonBrokeFree": "¡Oh, no!\n¡El Pokémon se ha escapado!",
"pokemonFled": "¡El {{pokemonName}} salvaje ha huido!",
"playerFled": "¡Huiste del {{pokemonName}}!",
"addedAsAStarter": "¡{{pokemonName}} ha sido añadido a tus iniciales!",
"partyFull": "Tu equipo está completo.\n¿Quieres liberar a un Pokémon para quedarte con {{pokemonName}}?",
"pokemon": "Pokémon",
"sendOutPokemon": "¡Adelante, {{pokemonName}}!",
"sendOutPokemon": Vamos, {{pokemonName}}!",
"hitResultCriticalHit": "¡Un golpe crítico!",
"hitResultSuperEffective": "¡Es supereficaz!",
"hitResultNotVeryEffective": "No es muy eficaz…",
"hitResultNoEffect": "No afecta a {{pokemonName}}!",
"hitResultNoEffect": "No afecta a {{pokemonName}}...",
"hitResultImmune": "¡No afecta a {{pokemonName}}!",
"hitResultOneHitKO": "¡KO en 1 golpe!",
"hitResultOneHitKO": "¡KO de un golpe!",
"attackFailed": "¡Pero ha fallado!",
"attackMissed": "¡{{pokemonNameWithAffix}}\nha evitado el ataque!",
"attackHitsCount": "N.º de golpes: {{count}}.",
"rewardGain": "¡Has obtenido\n{{modifierName}}!",
"rewardGain": "¡Has conseguido\n{{modifierName}}!",
"expGain": "{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.",
"levelUp": "¡{{pokemonName}} ha subido al \nNv. {{level}}!",
"levelUp": "¡{{pokemonName}} ha subido a\nNv. {{level}}!",
"learnMove": "¡{{pokemonName}} ha aprendido {{moveName}}!",
"learnMovePrompt": "{{pokemonName}} quiere aprender\n{{moveName}}.",
"learnMoveLimitReached": "Pero, {{pokemonName}} ya conoce\ncuatro movimientos.",
"learnMovePrompt": "{{pokemonName}} quiere aprender {{moveName}}.",
"learnMoveLimitReached": "Pero {{pokemonName}} ya conoce\ncuatro movimientos.",
"learnMoveReplaceQuestion": "¿Quieres sustituir uno de sus movimientos por {{moveName}}?",
"learnMoveStopTeaching": "¿Prefieres que no aprenda\n{{moveName}}?",
"learnMoveNotLearned": "{{pokemonName}} no ha aprendido {{moveName}}.",
"learnMoveForgetQuestion": "¿Qué movimiento quieres que olvide?",
"learnMoveForgetQuestion": "¿Qué movimiento debería olvidar?",
"learnMoveForgetSuccess": "{{pokemonName}} ha olvidado cómo utilizar {{moveName}}.",
"countdownPoof": "@d{32}1, @d{15}2, @d{15}y@d{15}… @d{15}… @d{15}… @d{15}@s{se/pb_bounce_1}¡Puf!",
"learnMoveAnd": "Y…",
"countdownPoof": "@d{32}1, @d{15}2, @d{15}3@d{15}… @d{15}… @d{15}… @d{15}@s{se/pb_bounce_1}Y...",
"learnMoveAnd": "¡Puf!",
"levelCapUp": "¡Se ha incrementado el\nnivel máximo a {{levelCap}}!",
"moveNotImplemented": "{{moveName}} aún no está implementado y no se puede seleccionar.",
"moveNoPP": "¡No hay suficientes PP\npara este movimiento!",
"moveDisabled": "!No puede usar {{moveName}} porque ha sido anulado!",
"moveNoPP": "¡No quedan PP para este movimiento!",
"moveDisabled": "¡{{moveName}} está anulado!",
"disableInterruptedMove": "¡Se ha anulado el movimiento {{moveName}}\nde {{pokemonNameWithAffix}}!",
"noPokeballForce": "Una fuerza misteriosa\nte impide usar Poké Balls.",
"noPokeballTrainer": "¡No puedes atrapar a los\nPokémon de los demás!",
"noPokeballMulti": "¡No se pueden lanzar Poké Balls\ncuando hay más de un Pokémon!",
"noPokeballStrong": "¡Este Pokémon es demasiado fuerte para ser capturado!\nNecesitas bajarle los PS primero!",
"noPokeballTrainer": "¡No está bien capturar los\nPokémon de los demás!",
"noPokeballMulti": "¡No puedes lanzar Poké Balls\ncuando hay más de un Pokémon!",
"noPokeballStrong": "Este Pokémon es demasiado fuerte para ser capturado.\n¡Baja sus PS!",
"noPokeballMysteryEncounter": "¡No puedes capturar este Pokémon!",
"noEscapeForce": "Una fuerza misteriosa\nte impide huir.",
"noEscapeTrainer": "¡No puedes huir de los\ncombates contra Entrenadores!",
"noEscapePokemon": El movimiento {{moveName}} de {{pokemonName}} impide la huida!",
"noEscapeTrainer": "¡No puedes huir de los\ncombates contra entrenadores!",
"noEscapePokemon": {{moveName}} de {{pokemonName}} no te deja huir!",
"runAwaySuccess": "¡Escapas sin problemas!",
"runAwayCannotEscape": "¡No has podido escapar!",
"escapeVerbSwitch": "cambiar",
"escapeVerbFlee": "huir",
"notDisabled": El movimiento {{moveName}} de {{pokemonName}}\nya no está anulado!",
"turnEndHpRestore": "Los PS de {{pokemonName}} fueron restaurados.",
"notDisabled": {{moveName}} de {{pokemonName}} ya no está anulado!",
"turnEndHpRestore": "{{pokemonName}} ha recuperado PS.",
"hpIsFull": "¡Los PS de {{pokemonName}}\nestán al máximo!",
"skipItemQuestion": "¿Estás seguro de que no quieres coger un objeto?",
"itemStackFull": "El máximo número de {{fullItemName}} ha sido alcanzado. Recibirás {{itemName}} en su lugar.",
"itemStackFull": "No tienes sitio para más {{fullItemName}}. Recibirás {{itemName}} en su lugar.",
"eggHatching": "¿Y esto?",
"ivScannerUseQuestion": "¿Quieres usar el Escáner de IVs en {{pokemonName}}?",
"wildPokemonWithAffix": "El {{pokemonName}} salvaje",
"foePokemonWithAffix": "El {{pokemonName}} enemigo",
"useMove": "¡{{pokemonNameWithAffix}} usó {{moveName}}!",
"drainMessage": {{pokemonName}} tuvo su\nenergía absorbida!",
"drainMessage": La energía de {{pokemonName}}\nha sido absorbida!",
"regainHealth": "¡{{pokemonName}} recuperó\nPS!",
"stealEatBerry": "¡{{pokemonName}} robó la {{berryName}}\nde {{targetName}} y se la comió!",
"ppHealBerry": "¡{{pokemonNameWithAffix}} recuperó algunos PP de {{moveName}}\ngracias a su {{berryName}}!",
"hpHealBerry": "¡{{pokemonNameWithAffix}} recuperó sus PS gracias a su {{berryName}}!",
"fainted": "¡{{pokemonNameWithAffix}} se debilitó!",
"statsAnd": "y",
"stats": "Las estadísticas",
"statRose_one": "¡El {{stats}} de {{pokemonNameWithAffix}} ha subido!",
"statRose_other": "¡{{stats}} de\n{{pokemonNameWithAffix}} han subido!",
"statSharplyRose_one": "¡El {{stats}} de {{pokemonNameWithAffix}} ha subido mucho!",
"statSharplyRose_other": "¡{{stats}} de\n{{pokemonNameWithAffix}} han subido mucho!",
"statRoseDrastically_one": "¡El {{stats}} de {{pokemonNameWithAffix}} ha subido muchísimo!",
"statRoseDrastically_other": "¡{{stats}} de\n{{pokemonNameWithAffix}} han subido muchísimo!",
"statWontGoAnyHigher_one": "¡El {{stats}} de {{pokemonNameWithAffix}} no puede subir más!",
"statWontGoAnyHigher_other": "¡{{stats}} de\n{{pokemonNameWithAffix}} no pueden subir más!",
"statFell_one": "¡El {{stats}} de {{pokemonNameWithAffix}} ha bajado!",
"statFell_other": "¡{{stats}} de\n{{pokemonNameWithAffix}} han bajado!",
"statHarshlyFell_one": "¡El {{stats}} de {{pokemonNameWithAffix}} ha bajado mucho!",
"statHarshlyFell_other": "¡{{stats}} de\n{{pokemonNameWithAffix}} han bajado mucho!",
"statSeverelyFell_one": "¡El {{stats}} de {{pokemonNameWithAffix}} ha bajado muchísimo!",
"statSeverelyFell_other": "¡{{stats}} de\n{{pokemonNameWithAffix}} han bajado muchísimo!",
"statWontGoAnyLower_one": "¡El {{stats}} de {{pokemonNameWithAffix}} no puede bajar más!",
"statWontGoAnyLower_other": "¡{{stats}} de\n{{pokemonNameWithAffix}} no pueden bajar más!",
"statRose_one": "¡{{stats}} de {{pokemonNameWithAffix}} ha aumentado!",
"statRose_other": "¡{{stats}} de {{pokemonNameWithAffix}} ha aumentado!",
"statSharplyRose_one": "¡{{stats}} de {{pokemonNameWithAffix}} ha aumentado mucho!",
"statSharplyRose_other": "¡{{stats}} de {{pokemonNameWithAffix}} ha aumentado mucho!",
"statRoseDrastically_one": "¡{{stats}} de {{pokemonNameWithAffix}} ha aumentado muchísimo!",
"statRoseDrastically_other": "¡{{stats}} de {{pokemonNameWithAffix}} ha aumentado muchísimo!",
"statWontGoAnyHigher_one": "¡{{stats}} de {{pokemonNameWithAffix}} no puede aumentar más!",
"statWontGoAnyHigher_other": "¡{{stats}} de {{pokemonNameWithAffix}} no puede aumentar más!",
"statFell_one": "¡{{stats}} de {{pokemonNameWithAffix}} ha disminuido!",
"statFell_other": "¡{{stats}} de {{pokemonNameWithAffix}} ha disminuido!",
"statHarshlyFell_one": "¡{{stats}} de {{pokemonNameWithAffix}} ha disminuido mucho!",
"statHarshlyFell_other": "¡{{stats}} de {{pokemonNameWithAffix}} ha disminuido mucho!",
"statSeverelyFell_one": "¡{{stats}} de {{pokemonNameWithAffix}} ha disminuido muchísimo!",
"statSeverelyFell_other": "¡{{stats}} de {{pokemonNameWithAffix}} ha disminuido muchísimo!",
"statWontGoAnyLower_one": "¡{{stats}} de {{pokemonNameWithAffix}} no puede disminuir más!",
"statWontGoAnyLower_other": "¡{{stats}} de {{pokemonNameWithAffix}} no puede disminuir más!",
"transformedIntoType": "¡{{pokemonName}} ha cambiado a tipo {{type}}!",
"retryBattle": "¿Quieres reintentar este combate?",
"unlockedSomething": "¡Has desbloqueado {{unlockedThing}}!",
"congratulations": "¡Enhorabuena!",
"beatModeFirstTime": "¡{{speciesName}} ha completado el modo {{gameMode}} por primera vez!\n¡Has conseguido {{newModifier}}!",
"ppReduced": "¡El movimiento {{moveName}} de {{targetName}} ha perdido {{reduction}} PP!",
"mysteryEncounterAppeared": "¿Que es esto?",
"battlerTagsHealBlock": "¡{{pokemonNameWithAffix}} no puede restaurar sus PS!",
"battlerTagsHealBlockOnRemove": "¡{{pokemonNameWithAffix}} ya puede recuperar PS!"
}

View File

@ -145,5 +145,11 @@
"encounter_youngster": "BW - ¡Vs. chico joven!",
"heal": "BW - Cura Pokémon",
"menu": "PMD EoS - ¡Bienvenidos al mundo de los Pokémon!",
"title": "PMD EoS - Tema del menú principal"
"title": "PMD EoS - Tema del menú principal",
"mystery_encounter_weird_dream": "PMM EdC Pináculo del Tiempo",
"mystery_encounter_fun_and_games": "PMM EdC Gran Bluff",
"mystery_encounter_gen_5_gts": "BN GTS",
"mystery_encounter_gen_6_gts": "XY GTS",
"mystery_encounter_delibirdy": "Firel - DeliDelivery!"
}

View File

@ -1,5 +1,6 @@
{
"title": "Parámetros de Desafíos",
"title": "Parámetros de desafíos",
"illegalEvolution": "¡{{pokemon}} ha evolucionado! ¡No puede ser parte del desafío!",
"singleGeneration": {
"name": "Monogeneración",
"desc": "Solo puedes usar Pokémon de {{gen}} generación.",
@ -14,16 +15,22 @@
"gen_8": "octava",
"gen_9": "novena"
},
"freshStart": {
"name": "Nuevo Comienzo",
"desc": "Sólo puedes usar Pokémon iniciales originales, como si acabases de empezar PokéRogue.",
"value.0": "Desact.",
"value.1": "Activo"
},
"singleType": {
"name": "Monotipo",
"desc": "Solo puedes usar Pokémon with the {{type}} type.",
"desc_default": "Solo puedes usar Pokémon del tipo elegido."
},
"inverseBattle": {
"name": "Combate Inverso",
"name": "Lucha Inversa",
"shortName": "Inverso",
"desc": "La efectividad de los tipos es invertida. No hay inmunidades entre tipos.\nEste reto deshabilita logros de otros retos.",
"value.0": "Desactivado",
"value.1": "Activado"
"desc": "Las relaciones entre tipos son invertidas y ningún tipo es inmune a otro.\nDesactiva el resto de desafíos.",
"value.0": "Desact.",
"value.1": "Activo"
}
}
}

View File

@ -1,7 +1,8 @@
{
"start": "Listo",
"luckIndicator": "Suerte:",
"shinyOnHover": "Shiny",
"commonShiny": "Común",
"rareShiny": "Raro",
"epicShiny": "Épico"
}
}

View File

@ -53,7 +53,49 @@ import terrain from "./terrain.json";
import modifierSelectUiHandler from "./modifier-select-ui-handler.json";
import moveTriggers from "./move-trigger.json";
import runHistory from "./run-history.json";
import mysteryEncounterMessages from "./mystery-encounter-messages.json";
import lostAtSea from "./mystery-encounters/lost-at-sea-dialogue.json";
import mysteriousChest from "./mystery-encounters/mysterious-chest-dialogue.json";
import mysteriousChallengers from "./mystery-encounters/mysterious-challengers-dialogue.json";
import darkDeal from "./mystery-encounters/dark-deal-dialogue.json";
import departmentStoreSale from "./mystery-encounters/department-store-sale-dialogue.json";
import fieldTrip from "./mystery-encounters/field-trip-dialogue.json";
import fieryFallout from "./mystery-encounters/fiery-fallout-dialogue.json";
import fightOrFlight from "./mystery-encounters/fight-or-flight-dialogue.json";
import safariZone from "./mystery-encounters/safari-zone-dialogue.json";
import shadyVitaminDealer from "./mystery-encounters/shady-vitamin-dealer-dialogue.json";
import slumberingSnorlax from "./mystery-encounters/slumbering-snorlax-dialogue.json";
import trainingSession from "./mystery-encounters/training-session-dialogue.json";
import theStrongStuff from "./mystery-encounters/the-strong-stuff-dialogue.json";
import pokemonSalesman from "./mystery-encounters/the-pokemon-salesman-dialogue.json";
import offerYouCantRefuse from "./mystery-encounters/an-offer-you-cant-refuse-dialogue.json";
import delibirdy from "./mystery-encounters/delibirdy-dialogue.json";
import absoluteAvarice from "./mystery-encounters/absolute-avarice-dialogue.json";
import aTrainersTest from "./mystery-encounters/a-trainers-test-dialogue.json";
import trashToTreasure from "./mystery-encounters/trash-to-treasure-dialogue.json";
import berriesAbound from "./mystery-encounters/berries-abound-dialogue.json";
import clowningAround from "./mystery-encounters/clowning-around-dialogue.json";
import partTimer from "./mystery-encounters/part-timer-dialogue.json";
import dancingLessons from "./mystery-encounters/dancing-lessons-dialogue.json";
import weirdDream from "./mystery-encounters/weird-dream-dialogue.json";
import theWinstrateChallenge from "./mystery-encounters/the-winstrate-challenge-dialogue.json";
import teleportingHijinks from "./mystery-encounters/teleporting-hijinks-dialogue.json";
import bugTypeSuperfan from "./mystery-encounters/bug-type-superfan-dialogue.json";
import funAndGames from "./mystery-encounters/fun-and-games-dialogue.json";
import uncommonBreed from "./mystery-encounters/uncommon-breed-dialogue.json";
import globalTradeSystem from "./mystery-encounters/global-trade-system-dialogue.json";
import expertPokemonBreeder from "./mystery-encounters/the-expert-pokemon-breeder-dialogue.json";
/**
* Dialogue/Text token injection patterns that can be used:
* - `$` will be treated as a new line for Message and Dialogue strings.
* - `@d{<number>}` will add a time delay to text animation for Message and Dialogue strings.
* - `@s{<sound_effect_key>}` will play a specified sound effect for Message and Dialogue strings.
* - `@f{<number>}` will fade the screen to black for the given duration, then fade back in for Message and Dialogue strings.
* - `{{<token>}}` (MYSTERY ENCOUNTERS ONLY) will auto-inject the matching dialogue token value that is stored in {@link IMysteryEncounter.dialogueTokens}.
* - (see [i18next interpolations](https://www.i18next.com/translation-function/interpolation)) for more details.
* - `@[<TextStyle>]{<text>}` (STATIC TEXT ONLY, NOT USEABLE WITH {@link UI.showText()} OR {@link UI.showDialogue()}) will auto-color the given text to a specified {@link TextStyle} (e.g. `TextStyle.SUMMARY_GREEN`).
*/
export const esConfig = {
ability,
abilityTriggers,
@ -109,5 +151,41 @@ export const esConfig = {
partyUiHandler,
modifierSelectUiHandler,
moveTriggers,
runHistory
runHistory,
mysteryEncounter: {
// DO NOT REMOVE
"unit_test_dialogue": "{{test}}{{test}} {{test{{test}}}} {{test1}} {{test\}} {{test\\}} {{test\\\}} {test}}",
mysteriousChallengers,
mysteriousChest,
darkDeal,
fightOrFlight,
slumberingSnorlax,
trainingSession,
departmentStoreSale,
shadyVitaminDealer,
fieldTrip,
safariZone,
lostAtSea,
fieryFallout,
theStrongStuff,
pokemonSalesman,
offerYouCantRefuse,
delibirdy,
absoluteAvarice,
aTrainersTest,
trashToTreasure,
berriesAbound,
clowningAround,
partTimer,
dancingLessons,
weirdDream,
theWinstrateChallenge,
teleportingHijinks,
bugTypeSuperfan,
funAndGames,
uncommonBreed,
globalTradeSystem,
expertPokemonBreeder
},
mysteryEncounterMessages
};

View File

@ -48,5 +48,115 @@
"defeat": {
"1": "¡Todo lo que quiero es a esta preciosa criatura! ¡Los demás no me importáis!"
}
},
"stat_trainer_buck": {
"encounter": {
"1": "Para que luego no digas que no te he advertido: soy muy fuerte.",
"2": "¡Noto cómo tiemblan mis Pokémon dentro de sus Poké Balls!"
},
"victory": {
"1": "¡Je, je, je!\n¡Eres una máquina!",
"2": "¡Je, je, je!\n¡Eres una máquina!"
},
"defeat": {
"1": "¡Vaya! supongo que te quedaste sin fuerzas.",
"2": "¡Vaya! supongo que te quedaste sin fuerzas."
}
},
"stat_trainer_cheryl": {
"encounter": {
"1": "Mis Pokémon han estado deseando una batalla.",
"2": "Debería advertirte de que mis Pokémon son un poco... hiperactivos."
},
"victory": {
"1": "No es fácil encontrar el equilibrio entre ataque y defensa...",
"2": "No es fácil encontrar el equilibrio entre ataque y defensa..."
},
"defeat": {
"1": "Necesitas curar a tus Pokémon?",
"2": "Necesitas curar a tus Pokémon?"
}
},
"stat_trainer_marley": {
"encounter": {
"1": "... Vale.\n¡Voy a esforzarme al máximo!",
"2": "... Vale.\nNo... perderé... !"
},
"victory": {
"1": "... ¡Eeeh!",
"2": "... ¡Eeeh!"
},
"defeat": {
"1": "... Adiós.",
"2": "... Adiós."
}
},
"stat_trainer_mira": {
"encounter": {
"1": "Serás sorprendido por Maiza!",
"2": "¡Maiza te mostrará que Mira ya no se pierde!"
},
"victory": {
"1": "Maiza se pregunta si puede llegar muy lejos en esta tierra.",
"2": "Maiza se pregunta si puede llegar muy lejos en esta tierra."
},
"defeat": {
"1": "¡Maiza sabía que ganaría!",
"2": "¡Maiza sabía que ganaría!"
}
},
"stat_trainer_riley": {
"encounter": {
"1": "¡Combatir es nuestra manera de saludarnos!",
"2": "Vamos a hacer lo imposible por derrotar a tu equipo."
},
"victory": {
"1": "A veces combatimos entre nosotros y otras veces unimos fuerzas.$Es maravilloso ser entrenador.",
"2": "A veces combatimos entre nosotros y otras veces unimos fuerzas.$Es maravilloso ser entrenador."
},
"defeat": {
"1": "Vaya demostración pusiste.\nMejor suerte la próxima vez.",
"2": "Vaya demostración pusiste.\nMejor suerte la próxima vez."
}
},
"winstrates_victor": {
"encounter": {
"1": "¡Qué entusiasmo! ¡Así me gusta!"
},
"victory": {
"1": "¡Ayyy! ¡Eres más fuerte de lo que pensaba!"
}
},
"winstrates_victoria": {
"encounter": {
"1": "Huy, huy, huy... ¡Qué joven eres!$Pero le has dado una buena tunda a mi marido...$No hay que fiarse...¡Lucha ahora contra mí!"
},
"victory": {
"1": "¡Ay! ¡No puedo creer que seas tan fuerte!"
}
},
"winstrates_vivi": {
"encounter": {
"1": "¿Eres más fuerte que mamá? ¡Halaaa!$¡Pero yo también soy fuerte!\n¡Ahora vas a ver!"
},
"victory": {
"1": "Pero... ¿he perdido?\nSnif, snif... ¡Abuelitaaa!"
}
},
"winstrates_vicky": {
"encounter": {
"1": "¿Cómo te atreves a hacer llorar a mi nieta? ¡Voy a echarle un buen rapapolvo a tu equipo Pokémon! ¡Vas a ver lo que es bueno!"
},
"victory": {
"1": "¡Jarl! Eres fuerte...\nLos demás tenían razón..."
}
},
"winstrates_vito": {
"encounter": {
"1": "He entrenado con toda mi familia,\ntoda enterita.$¡No voy a perder!"
},
"victory": {
"1": "Logré superar a toda mi familia.\nNunca había perdido..."
}
}
}

View File

@ -11,6 +11,7 @@
"gachaTypeLegendary": "Mayor tasa de Legendario",
"gachaTypeMove": "Mayor tasa de Movimiento Huevo Raro",
"gachaTypeShiny": "Mayor tasa de Shiny",
"eventType": "Evento Misterioso",
"selectMachine": "Seleccione una máquina.",
"notEnoughVouchers": "¡No tienes suficientes vales!",
"tooManyEggs": "¡No tienes suficiente espacio!",

View File

@ -1 +1,42 @@
{}
{
"stats": "Estadísticas",
"playTime": "Tiempo jugado",
"totalBattles": "Batallas totales",
"starters": "Iniciales",
"shinyStarters": "Shinies iniciales",
"speciesSeen": "Especies vistas",
"speciesCaught": "Especies capturadas",
"ribbonsOwned": "Cintas obtenidas",
"classicRuns": "Partidas clásicas",
"classicWins": "Victorias clásicas",
"dailyRunAttempts": "Intentos del reto diario",
"dailyRunWins": "Victorias del reto diario",
"endlessRuns": "Partidas Infinitas",
"highestWaveEndless": "Oleada récord (infinito)",
"highestMoney": "Dinero récord",
"highestDamage": "Daño máximo",
"highestHPHealed": "Máximos PS curados",
"pokemonEncountered": "Pokémon encontrados",
"pokemonDefeated": "Pokémon derrotados",
"pokemonCaught": "Pokémon capturados",
"eggsHatched": "Huevos eclosionados",
"subLegendsSeen": "Sublegendarios vistos",
"subLegendsCaught": "Sub-legs. capturados",
"subLegendsHatched": "Sub-legs. eclosionados",
"legendsSeen": "Legendarios vistos",
"legendsCaught": "Legendarios capturados",
"legendsHatched": "Legendarios eclosionados",
"mythicalsSeen": "Míticos vistos",
"mythicalsCaught": "Singulares capturados",
"mythicalsHatched": "Singulares eclosionados",
"shiniesSeen": "Shinies vistos",
"shiniesCaught": "Shinies capturados",
"shiniesHatched": "Shinies eclosionados",
"pokemonFused": "Pokémons fusionados",
"trainersDefeated": "Entrenadores derrotados",
"eggsPulled": "Huevos canjeados",
"rareEggsPulled": "Huevos raros canjeados",
"epicEggsPulled": "Huevos épicos canjeados",
"legendaryEggsPulled": "Huevos legendarios canjeados",
"manaphyEggsPulled": "Huevos Manaphy canjeados"
}

View File

@ -3,26 +3,27 @@
"ACHIEVEMENTS": "Logros",
"STATS": "Estadísticas",
"RUN_HISTORY": "Historial de partida",
"EGG_LIST": "Lista de Huevos",
"EGG_GACHA": "Gacha de Huevos",
"MANAGE_DATA": "Gestionar Datos",
"EGG_LIST": "Lista de huevos",
"EGG_GACHA": "Lotería Oval",
"MANAGE_DATA": "Gestionar datos",
"COMMUNITY": "Comunidad",
"SAVE_AND_QUIT": "Guardar y Salir",
"LOG_OUT": "Cerrar Sesión",
"SAVE_AND_QUIT": "Guardar y salir",
"LOG_OUT": "Cerrar sesión",
"slot": "Ranura {{slotNumber}}",
"importSession": "Importar Sesión",
"importSession": "Importar sesión",
"importSlotSelect": "Selecciona una ranura para importar.",
"exportSession": "Exportar Sesión",
"exportSession": "Exportar sesión",
"exportSlotSelect": "Selecciona una ranura para exportar.",
"importRunHistory":"Importar Historial de partida",
"exportRunHistory":"Exportar Historial de partida",
"importData": "Importar Datos",
"exportData": "Exportar Datos",
"importRunHistory": "Importar historial de partida",
"exportRunHistory": "Exportar historial de partida",
"importData": "Importar datos",
"exportData": "Exportar datos",
"consentPreferences": "Consentimiento de datos",
"linkDiscord": "Conectar Discord",
"unlinkDiscord": "Desconectar Discord",
"linkGoogle": "Conectar Google",
"unlinkGoogle": "Desconectar Google",
"cancel": "Cancelar",
"losingProgressionWarning": "Perderás cualquier progreso desde el inicio de la batalla. ¿Continuar?"
}
"losingProgressionWarning": "Perderás cualquier progreso desde el inicio de la batalla. ¿Continuar?",
"noEggs": "¡No hay huevos incubándose\nahora mismo!"
}

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