From 1c9b22e571e02a5ac06b43c49d50f044fa526ff9 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 15:53:40 +0200 Subject: [PATCH 01/88] Update an-offer-you-cant-refuse-dialogue.json --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 4ed1fd262a3..112253d0b8b 100644 --- a/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -3,12 +3,12 @@ "speaker": "Richard", "intro_dialogue": "Bonchour-haann !$Je ne puis carrément pas ignorer que votre\n{{strongestPokemon}} m’a l’air fa-bu-leux !$J’ai toujours désiré posséder un tel compagnon !$Je peux vous payer grassement,\nainsi que cette petite babiole !", "title": "L’affaire du siècle", - "description": "Un fils à papa vous offre un @[TOOLTIP_TITLE]{Shiny Charm} et {{price, money}} en échange de votre {{strongestPokemon}} !\n\nÇa semble être une bonne affaire, mais pourrez vous supporter de priver votre équipe d’un tel atout ?", + "description": "Un fils à papa vous offre un @[TOOLTIP_TITLE]{Charme Chroma} et {{price, money}} en échange de votre {{strongestPokemon}} !\n\nÇa semble être une bonne affaire, mais pourrez vous supporter de priver votre équipe d’un tel atout ?", "query": "Que voulez-vous faire ?", "option": { "1": { "label": "Accepter l’offre", - "tooltip": "(-) Vous perdez {{strongestPokemon}}\n(+) Gain d’un @[TOOLTIP_TITLE]{Shiny Charm}\n(+) Gain de {{price, money}}", + "tooltip": "(-) Vous perdez {{strongestPokemon}}\n(+) Gain d’un @[TOOLTIP_TITLE]{Charme Chroma}\n(+) Gain de {{price, money}}", "selected": "Fa-bu-leux!@d{32} Par ici, {{strongestPokemon}} !$Viens que je te montre fièrement au club de yacht !$Ils vont trooop avoir le seum-haann !" }, "2": { From 23791cd53e729f497d1327383a9e416c942a2c9a Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 15:56:21 +0200 Subject: [PATCH 02/88] Update dancing-lessons-dialogue.json --- src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json b/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json index 01aaccb7948..747cac3c144 100644 --- a/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json +++ b/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json @@ -1,6 +1,6 @@ { "intro": "Un {{oricorioName}} dance tristement seul, sans partenaire.", - "title": "Lessons de danse", + "title": "Leçons de danse", "description": "Ce {{oricorioName}} ne semble pas agressif, mais triste tout au plus.\n\nPeut-être a-t-il juste besoin de quelqu’un avec qui danser…", "query": "Que voulez-vous faire ?", "option": { From 994428184ba12eef49bdba143339ddc059b497c0 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 16:02:54 +0200 Subject: [PATCH 03/88] Update teleporting-hijinks-dialogue.json --- .../mystery-encounters/teleporting-hijinks-dialogue.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/locales/fr/mystery-encounters/teleporting-hijinks-dialogue.json b/src/locales/fr/mystery-encounters/teleporting-hijinks-dialogue.json index 84b7b8d3f1f..45266cf55cc 100644 --- a/src/locales/fr/mystery-encounters/teleporting-hijinks-dialogue.json +++ b/src/locales/fr/mystery-encounters/teleporting-hijinks-dialogue.json @@ -1,12 +1,12 @@ { "intro": "Cette machine un peu étrange émet un lourd ronronnement…", - "title": "Teleportating Hijinks", + "title": "Le télé-torpeur", "description": "Vous pouvez lire sur la machine :\n « Notice d’utilisation : Insérez de l’argent et pénétrez dans la capsule. »\n\nPeut-être qu’elle vous emmènera quelque part…", "query": "Que voulez-vous faire ?", "option": { "1": { "label": "Insérer de l’argent", - "tooltip": "(-) Payer {{price, money}}\n(?) Teleportation vers un nouveau biome", + "tooltip": "(-) Payer {{price, money}}\n(?) Téléportation vers un nouveau biome", "selected": "Vous insérez un peu d’argent et la capsule s’ouvre.\nVous y pénétrez…" }, "2": { @@ -18,10 +18,10 @@ "3": { "label": "Inspecter la machine", "tooltip": "(-) Combat Pokémon", - "selected": "Tous ces bruits et lumières clignotantes\némis par la machine titillent vos sens…$Mais vous manquez d’apercevoir un Pokémon\nsauvage et vous tend une emuscade !" + "selected": "Tous ces bruits et lumières clignotantes\némis par la machine titillent vos sens…$Mais vous manquez d’apercevoir un Pokémon\nsauvage et vous tend une embuscade !" } }, - "transport": "La machine vibre violemment,\nen émattant toutes sortes de bruits !$À peine la machine lancée, elle revient soudainement très silencieuse.", + "transport": "La machine vibre violemment,\nen émattant toutes sortes de bruits !$À peine la machine lancée, elle redevient soudainement très silencieuse.", "attacked": "Vous en ressortez en un lieu complètement nouveau, effrayant au passage un Pokémon sauvage !$Le Pokémon sauvage vous attaque !", "boss_enraged": "Le {{enemyPokemon}} ennemi s’énerve !" } From 71e84063353602f8bdca3dfb0890c3a8d93fcb47 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 16:03:49 +0200 Subject: [PATCH 04/88] Update src/locales/es/mystery-encounter-messages.json Co-authored-by: DanStevensonx <114961842+DanStevensonx@users.noreply.github.com> --- src/locales/es/mystery-encounter-messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/es/mystery-encounter-messages.json b/src/locales/es/mystery-encounter-messages.json index 2fcd3e893fb..8d7d98bdd0f 100644 --- a/src/locales/es/mystery-encounter-messages.json +++ b/src/locales/es/mystery-encounter-messages.json @@ -3,5 +3,5 @@ "receive_money": "¡Recibiste {{amount, number}}₽!", "affects_pokedex": "Afecta los datos de la Pokédex", "cancel_option": "Volver a la selección de opciones", - "view_party_button": "View Party" + "view_party_button": "Ver equipo" } From b91bfa74074fa576b40c1d5c2292ea5f157aa74f Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 16:04:19 +0200 Subject: [PATCH 05/88] Update src/locales/es/mystery-encounters/an-offer-you-cant-refuse-dialogue.json Co-authored-by: DanStevensonx <114961842+DanStevensonx@users.noreply.github.com> --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/es/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/es/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 36f9a2f5a8d..d4e050592d8 100644 --- a/src/locales/es/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/es/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -3,7 +3,7 @@ "speaker": "Niño Bien", "intro_dialogue": "Buenos días a usted.$¡No puedo evitar notar que tu\n{{strongestPokemon}} se ve absolutamente divino!$¡Siempre he querido tener una mascota así!$¡Te pagaría generosamente,\n también te daría este viejo abalorio!", "title": "Una oferta que no puedes rechazar", - "description": "Te están ofreciendo @[TOOLTIP_TITLE]{Shiny Charm} y {{price, money}} por tu {{strongestPokemon}}!¡Es un trato extremadamente bueno, pero ¿realmente puedes soportar separarte de un miembro tan fuerte de tu equipo?”", + "description": "Te están ofreciendo @[TOOLTIP_TITLE]{Amuleto Iris} y {{price, money}} por tu {{strongestPokemon}}!¡Es un trato extremadamente bueno, pero ¿realmente puedes soportar separarte de un miembro tan fuerte de tu equipo?", "query": "¿Qué harás?", "option": { "1": { From 76fbac7d6737ad0a753472e9a9ae6f3e875018c8 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 16:04:28 +0200 Subject: [PATCH 06/88] Update src/locales/es/mystery-encounters/berries-abound-dialogue.json Co-authored-by: DanStevensonx <114961842+DanStevensonx@users.noreply.github.com> --- src/locales/es/mystery-encounters/berries-abound-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/es/mystery-encounters/berries-abound-dialogue.json b/src/locales/es/mystery-encounters/berries-abound-dialogue.json index 62e7bf6c7c1..27ed9c13dba 100644 --- a/src/locales/es/mystery-encounters/berries-abound-dialogue.json +++ b/src/locales/es/mystery-encounters/berries-abound-dialogue.json @@ -1,7 +1,7 @@ { "intro": "¡Hay un gran arbusto de bayas cerca de ese Pokémon!", "title": "Bayas Abundantes", - "description": "Parece que hay un Pokémon fuerte protegiendo un arbusto de bayas. Luchar es el enfoque directo, pero parece fuerte. Quizás un Pokémon rápido podría agarrar algunas bayas sin ser descubierto?", + "description": "Parece que hay un Pokémon fuerte protegiendo un arbusto de bayas. Luchar es el enfoque directo, pero parece fuerte. ¿Quizás un Pokémon rápido podría agarrar algunas bayas sin ser descubierto?", "query": "¿Que harás?", "berries": "¡Bayas!", "option": { From 88e8684d72c4c2c1edf9d1fcc0b09fbc0629170b Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Sat, 14 Sep 2024 16:20:07 +0200 Subject: [PATCH 07/88] Teil 1 --- src/locales/de/battle.json | 10 +-- src/locales/de/bgm-name.json | 6 +- src/locales/de/dialogue.json | 76 +++++++++---------- src/locales/de/egg.json | 2 +- .../de/modifier-select-ui-handler.json | 4 +- src/locales/de/modifier-type.json | 26 +++---- .../de/mystery-encounter-messages.json | 10 +-- .../an-offer-you-cant-refuse-dialogue.json | 32 ++++---- .../berries-abound-dialogue.json | 32 ++++---- .../dancing-lessons-dialogue.json | 34 ++++----- .../dark-deal-dialogue.json | 28 +++---- .../delibirdy-dialogue.json | 34 ++++----- .../field-trip-dialogue.json | 42 +++++----- .../fight-or-flight-dialogue.json | 30 ++++---- .../fun-and-games-dialogue.json | 44 +++++------ .../mysterious-challengers-dialogue.json | 24 +++--- .../mysterious-chest-dialogue.json | 30 ++++---- .../safari-zone-dialogue.json | 56 +++++++------- .../shady-vitamin-dealer-dialogue.json | 32 ++++---- .../teleporting-hijinks-dialogue.json | 34 ++++----- .../the-pokemon-salesman-dialogue.json | 30 ++++---- .../training-session-dialogue.json | 42 +++++----- .../uncommon-breed-dialogue.json | 32 ++++---- .../weird-dream-dialogue.json | 26 +++---- src/locales/de/party-ui-handler.json | 2 +- src/locales/de/trainer-names.json | 20 ++--- src/locales/de/trainer-titles.json | 2 +- src/overrides.ts | 4 +- 28 files changed, 372 insertions(+), 372 deletions(-) diff --git a/src/locales/de/battle.json b/src/locales/de/battle.json index aa7b5c59725..52d4f192a5b 100644 --- a/src/locales/de/battle.json +++ b/src/locales/de/battle.json @@ -14,10 +14,10 @@ "moneyWon": "Du gewinnst {{moneyAmount}} ₽!", "moneyPickedUp": "Du hebst {{moneyAmount}} ₽ auf!", "pokemonCaught": "{{pokemonName}} wurde gefangen!", - "pokemonObtained": "You got {{pokemonName}}!", - "pokemonBrokeFree": "Oh no!\nThe Pokémon broke free!", - "pokemonFled": "The wild {{pokemonName}} fled!", - "playerFled": "You fled from the {{pokemonName}}!", + "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", @@ -102,5 +102,5 @@ "congratulations": "Glückwunsch!", "beatModeFirstTime": "{{speciesName}} hat den {{gameMode}} Modus zum ersten Mal beendet! Du erhältst {{newModifier}}!", "eggSkipPrompt": "Zur Ei-Zusammenfassung springen?", - "mysteryEncounterAppeared": "What's this?" + "mysteryEncounterAppeared": "Was ist das?" } diff --git a/src/locales/de/bgm-name.json b/src/locales/de/bgm-name.json index c747fc34b9e..6355c33c49c 100644 --- a/src/locales/de/bgm-name.json +++ b/src/locales/de/bgm-name.json @@ -148,8 +148,8 @@ "menu": "PMD Erkundungsteam Himmel Willkommen in der Welt der Pokémon!", "title": "PMD Erkundungsteam Himmel Top-Menü-Thema", - "mystery_encounter_weird_dream": "PMD EoS Temporal Spire", - "mystery_encounter_fun_and_games": "PMD EoS Guildmaster Wigglytuff", - "mystery_encounter_gen_5_gts": "BW GTS", + "mystery_encounter_weird_dream": "PMD Erkundungsteam Himmel Zeitturmspitze", + "mystery_encounter_fun_and_games": "PMD Erkundungsteam Himmel Gildenmeister Knuddeluff\n", + "mystery_encounter_gen_5_gts": "SW GTS", "mystery_encounter_gen_6_gts": "XY GTS" } diff --git a/src/locales/de/dialogue.json b/src/locales/de/dialogue.json index a8cdf78457d..3c6c6f712eb 100644 --- a/src/locales/de/dialogue.json +++ b/src/locales/de/dialogue.json @@ -935,112 +935,112 @@ }, "stat_trainer_buck": { "encounter": { - "1": "...I'm telling you right now. I'm seriously tough. Act surprised!", - "2": "I can feel my Pokémon shivering inside their Pokéballs!" + "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": "Heeheehee!\nSo hot, you!", - "2": "Heeheehee!\nSo hot, you!" + "1": "Hehehehe! So heiß bist du!", + "2": "Hehehehe! So heiß bist du!" }, "defeat": { - "1": "Whoa! You're all out of gas, I guess.", - "2": "Whoa! You're all out of gas, I guess." + "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": "My Pokémon have been itching for a battle.", - "2": "I should warn you, my Pokémon can be quite rambunctious." + "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": "Striking the right balance of offense and defense... It's not easy to do.", - "2": "Striking the right balance of offense and defense... It's not easy to do." + "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": "Do your Pokémon need any healing?", - "2": "Do your Pokémon need any healing?" + "1": "Brauchen deine Pokémon Heilung?", + "2": "Brauchen deine Pokémon Heilung?" } }, "stat_trainer_marley": { "encounter": { - "1": "... OK.\nI'll do my best.", - "2": "... OK.\nI... won't lose...!" + "1": "...OK. Ich werde mein Bestes geben.", + "2": "...OK. Ich werde nicht verlieren...!" }, "victory": { "1": "... Awww.", "2": "... Awww." }, "defeat": { - "1": "... Goodbye.", - "2": "... Goodbye." + "1": "... Auf Wiedersehen.", + "2": "... Auf Wiedersehen." } }, "stat_trainer_mira": { "encounter": { - "1": "You will be shocked by Mira!", - "2": "Mira will show you that Mira doesn't get lost anymore!" + "1": "Du wirst von Mira schockiert sein!", + "2": "Mira wird dir zeigen, dass Mira sich nicht mehr verirrt!" }, "victory": { - "1": "Mira wonders if she can get very far in this land.", - "2": "Mira wonders if she can get very far in this land." + "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 knew she would win!", - "2": "Mira knew she would win!" + "1": "Mira wuss, dass sie gewinnen würde!", + "2": "Mira wuss, dass sie gewinnen würde!" } }, "stat_trainer_riley": { "encounter": { - "1": "Battling is our way of greeting!", - "2": "We're pulling out all the stops to put your Pokémon down." + "1": "Kämpfe sind unsere Art der Begrüßung.", + "2": "Wir setzen alles daran, deine Pokémon zu besiegen." }, "victory": { - "1": "At times we battle, and sometimes we team up...$It's great how Trainers can interact.", - "2": "At times we battle, and sometimes we team up...$It's great how Trainers can interact." + "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": "You put up quite the display.\nBetter luck next time.", - "2": "You put up quite the display.\nBetter luck next time." + "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": "That's the spirit! I like you!" + "1": "Das ist der Kampfgeist den ich sehen will! Ich mag dich!" }, "victory": { - "1": "A-ha! You're stronger than I thought!" + "1": "Ahh! Du bist stärker als ich dachte!" } }, "winstrates_victoria": { "encounter": { - "1": "My goodness! Aren't you young?$You must be quite the trainer to beat my husband, though.$Now I suppose it's my turn to battle!" + "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": "Uwah! Just how strong are you?!" + "1": "Waas? Wie stark bist du denn?" } }, "winstrates_vivi": { "encounter": { - "1": "You're stronger than Mom? Wow!$But I'm strong, too!\nReally! Honestly!" + "1": "Du bist stärker als Mama? Wow! Aber ich bin auch stark! Wirklich! Ehrlich!" }, "victory": { - "1": "Huh? Did I really lose?\nSnivel... Grandmaaa!" + "1": "Huh? Habe ich wirklich verloren?\nSchnief... Omaaa!" } }, "winstrates_vicky": { "encounter": { - "1": "How dare you make my precious\ngranddaughter cry!$I see I need to teach you a lesson.\nPrepare to feel the sting of defeat!" + "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": "Whoa! So strong!\nMy granddaughter wasn't lying." + "1": "Wow! So stark!\nMeine Enkelin hat nicht gelogen." } }, "winstrates_vito": { "encounter": { - "1": "I trained together with my whole family,\nevery one of us!$I'm not losing to anyone!" + "1": "Ich habe zusammen mit meiner ganzen Familie trainiert, mit jedem von uns!\n$Ich verliere gegen niemanden!" }, "victory": { - "1": "I was better than everyone in my family.\nI've never lost before..." + "1": "Ich war besser als jeder in meiner Familie. Ich habe noch nie verloren..." } }, "brock": { diff --git a/src/locales/de/egg.json b/src/locales/de/egg.json index 63c2b431484..4097ac17578 100644 --- a/src/locales/de/egg.json +++ b/src/locales/de/egg.json @@ -11,7 +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": "Mystery Event", + "eventType": "Geheimnisvolles Ereignis", "selectMachine": "Wähle eine Maschine.", "notEnoughVouchers": "Du hast nicht genug Ei-Gutscheine!", "tooManyEggs": "Du hast schon zu viele Eier!", diff --git a/src/locales/de/modifier-select-ui-handler.json b/src/locales/de/modifier-select-ui-handler.json index d92d2d51f56..fbc6820244a 100644 --- a/src/locales/de/modifier-select-ui-handler.json +++ b/src/locales/de/modifier-select-ui-handler.json @@ -9,6 +9,6 @@ "checkTeamDesc": "Überprüfe dein Team or nutze Formänderungsitems.", "rerollCost": "{{formattedMoney}}₽", "itemCost": "{{formattedMoney}}₽", - "continueNextWaveButton": "Continue", - "continueNextWaveDescription": "Continue to the next wave" + "continueNextWaveButton": "Fortfahren", + "continueNextWaveDescription": "Zur nächsten Welle fortfahren." } diff --git a/src/locales/de/modifier-type.json b/src/locales/de/modifier-type.json index a008fe98156..4f08727f9fd 100644 --- a/src/locales/de/modifier-type.json +++ b/src/locales/de/modifier-type.json @@ -69,18 +69,18 @@ "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": "Shuckle Juice", - "description": "{{increaseDecrease}} all of the holder's base stats by {{statValue}}. You were {{blessCurse}} by the Shuckle.", + "name": "Pottrottsaft", + "description": "{{increaseDecrease}} alle Basiswerte des Trägers um {{statValue}}. Du wurdest von Pottrott {{blessCurse}}.", "extra": { - "increase": "Increases", - "decrease": "Decreases", - "blessed": "blessed", - "cursed": "cursed" + "increase": "Erhöht", + "decrease": "Verringert", + "blessed": "gesegnet", + "cursed": "verflucht" } }, "PokemonBaseStatFlatModifierType": { - "name": "Old Gateau", - "description": "Increases the holder's {{stats}} base stats by {{statValue}}. Found after a strange dream." + "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." @@ -417,11 +417,11 @@ "description": "Fügt eine 1%ige Chance hinzu, dass ein wildes Pokémon eine Fusion ist." }, - "MYSTERY_ENCOUNTER_SHUCKLE_JUICE": { "name": "Shuckle Juice" }, - "MYSTERY_ENCOUNTER_BLACK_SLUDGE": { "name": "Black Sludge", "description": "The stench is so powerful that shops will only sell you items at a steep cost increase." }, - "MYSTERY_ENCOUNTER_MACHO_BRACE": { "name": "Macho Brace", "description": "Defeating a Pokémon grants the holder a Macho Brace stack. Each stack slightly boosts stats, with an extra bonus at max stacks." }, - "MYSTERY_ENCOUNTER_OLD_GATEAU": { "name": "Old Gateau", "description": "Increases the holder's {{stats}} stats by {{statValue}}." }, - "MYSTERY_ENCOUNTER_GOLDEN_BUG_NET": { "name": "Golden Bug Net", "description": "Imbues the owner with luck to find Bug Type Pokémon more often. Has a strange heft to it." } + "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": { diff --git a/src/locales/de/mystery-encounter-messages.json b/src/locales/de/mystery-encounter-messages.json index 3b81c8e46f0..5c10b06a355 100644 --- a/src/locales/de/mystery-encounter-messages.json +++ b/src/locales/de/mystery-encounter-messages.json @@ -1,7 +1,7 @@ { - "paid_money": "You paid ₽{{amount, number}}.", - "receive_money": "You received ₽{{amount, number}}!", - "affects_pokedex": "Affects Pokédex Data", - "cancel_option": "Return to encounter option select.", - "view_party_button": "View Party" + "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" } diff --git a/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 6dd54d302ab..68b120fbac5 100644 --- a/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,26 +1,26 @@ { - "intro": "You're stopped by a rich looking boy.", - "speaker": "Rich Boy", - "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a pet like that!$I'd pay you handsomely,\nand also give you this old bauble!", - "title": "An Offer You Can't Refuse", - "description": "You're being offered a @[TOOLTIP_TITLE]{Shiny Charm} and {{price, money}} for your {{strongestPokemon}}!\n\nIt's an extremely good deal, but can you really bear to part with such a strong team member?", - "query": "What will you do?", + "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 Haustier wie dieses haben wollen!$Ich würde 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": "Accept the Deal", - "tooltip": "(-) Lose {{strongestPokemon}}\n(+) Gain a @[TOOLTIP_TITLE]{Shiny Charm}\n(+) Gain {{price, money}}", - "selected": "Wonderful!@d{32} Come along, {{strongestPokemon}}!$It's time to show you off to everyone at the yacht club!$They'll be so jealous!" + "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": "Extort the Kid", - "tooltip": "(+) {{option2PrimaryName}} uses {{moveOrAbility}}\n(+) Gain {{price, money}}", - "tooltip_disabled": "Your Pokémon need to have certain moves or abilities to choose this", - "selected": "My word, we're being robbed, {{liepardName}}!$You'll be hearing from my lawyers for this!" + "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": "Leave", - "tooltip": "(-) No Rewards", - "selected": "What a rotten day...$Ah, well. Let's return to the yacht club then, {{liepardName}}." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Was ein beschissener Tag...$Ach, was solls. Lass uns zurück zum Yachtclub gehen, {{liepardName}}." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/berries-abound-dialogue.json b/src/locales/de/mystery-encounters/berries-abound-dialogue.json index 26eae2c6b88..e7ff57a32ef 100644 --- a/src/locales/de/mystery-encounters/berries-abound-dialogue.json +++ b/src/locales/de/mystery-encounters/berries-abound-dialogue.json @@ -1,26 +1,26 @@ { - "intro": "There's a huge berry bush\nnear that Pokémon!", - "title": "Berries Abound", - "description": "It looks like there's a strong Pokémon guarding a berry bush. Battling is the straightforward approach, but it looks strong. Perhaps a fast Pokémon could grab some berries without getting caught?", - "query": "What will you do?", - "berries": "Berries!", + "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": "Battle the Pokémon", - "tooltip": "(-) Hard Battle\n(+) Gain Berries", - "selected": "You approach the\nPokémon without fear." + "label": "Kampf beginnen", + "tooltip": "(-) Schwerer Kampf\n(+) Beeren erhalten", + "selected": "Du trittst dem Pokémon ohne Furcht entgegen." }, "2": { - "label": "Race to the Bush", - "tooltip": "(-) {{fastestPokemon}} Uses its Speed\n(+) Gain Berries", - "selected": "Your {{fastestPokemon}} races for the berry bush!$It manages to nab {{numBerries}} before the {{enemyPokemon}} can react!$You quickly retreat with your newfound prize.", - "selected_bad": "Your {{fastestPokemon}} races for the berry bush!$Oh no! The {{enemyPokemon}} was faster and blocked off the approach!", - "boss_enraged": "The opposing {{enemyPokemon}} has become enraged!" + "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": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You leave the strong Pokémon\nwith its prize and continue on." + "label": "Verlassen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du lässt das starke Pokémon mit seinem Item zurück und gehst weiter." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json b/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json index 8e2883ecb16..3ea02955309 100644 --- a/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json +++ b/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json @@ -1,27 +1,27 @@ { - "intro": "An {{oricorioName}} dances sadly alone, without a partner.", - "title": "Dancing Lessons", - "description": "The {{oricorioName}} doesn't seem aggressive, if anything it seems sad.\n\nMaybe it just wants someone to dance with...", - "query": "What will you do?", + "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": "Battle It", - "tooltip": "(-) Tough Battle\n(+) Gain a Baton", - "selected": "The {{oricorioName}} is distraught and moves to defend itself!", - "boss_enraged": "The {{oricorioName}}'s fear boosted its stats!" + "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": "Learn Its Dance", - "tooltip": "(+) Teach a Pokémon Revelation Dance", - "selected": "You watch the {{oricorioName}} closely as it performs its dance...$@s{level_up_fanfare}Your {{selectedPokemon}} learned from the {{oricorioName}}!" + "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": "Show It a Dance", - "tooltip": "(-) Teach the {{oricorioName}} a Dance Move\n(+) The {{oricorioName}} Will Like You", - "disabled_tooltip": "Your Pokémon need to know a Dance move for this.", - "select_prompt": "Select a Dance type move to use.", - "selected": "The {{oricorioName}} watches in fascination as\n{{selectedPokemon}} shows off {{selectedMove}}!$It loves the display!$@s{level_up_fanfare}The {{oricorioName}} wants to join your party!" + "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": "This Pokémon doesn't know a Dance move" + "invalid_selection": "Das Pokémon kennt keine Tanzattacke" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/dark-deal-dialogue.json b/src/locales/de/mystery-encounters/dark-deal-dialogue.json index 3086ebb0f9b..85c8d4565bb 100644 --- a/src/locales/de/mystery-encounters/dark-deal-dialogue.json +++ b/src/locales/de/mystery-encounters/dark-deal-dialogue.json @@ -1,24 +1,24 @@ { - "intro": "A strange man in a tattered coat\nstands in your way...", - "speaker": "Shady Guy", - "intro_dialogue": "Hey, you!$I've been working on a new device\nto bring out a Pokémon's latent power!$It completely rebinds the Pokémon's atoms\nat a molecular level into a far more powerful form.$Hehe...@d{64} I just need some sac-@d{32}\nErr, test subjects, to prove it works.", - "title": "Dark Deal", - "description": "The disturbing fellow holds up some Pokéballs.\n\"I'll make it worth your while! You can have these strong Pokéballs as payment, All I need is a Pokémon from your team! Hehe...\"", - "query": "What will you do?", + "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": "Accept", - "tooltip": "(+) 5 Rogue Balls\n(?) Enhance a Random Pokémon", - "selected_dialogue": "Let's see, that {{pokeName}} will do nicely!$Remember, I'm not responsible\nif anything bad happens!@d{32} Hehe...", - "selected_message": "The man hands you 5 Rogue Balls.${{pokeName}} hops into the strange machine...$Flashing lights and weird noises\nstart coming from the machine!$...@d{96} Something emerges\nfrom the device, raging wildly!" + "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": "Refuse", - "tooltip": "(-) No Rewards", - "selected": "Not gonna help a poor fellow out?\nPah!" + "label": "Ablehnen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du willst einem armen Kerl nicht helfen? Pah!" } }, - "outro": "After the harrowing encounter,\nyou collect yourself and depart." + "outro": "Nach der schrecklichen Begegnung, sammelst du dich und gehst weiter." } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/delibirdy-dialogue.json b/src/locales/de/mystery-encounters/delibirdy-dialogue.json index ca1fefa3a39..34ca9666d09 100644 --- a/src/locales/de/mystery-encounters/delibirdy-dialogue.json +++ b/src/locales/de/mystery-encounters/delibirdy-dialogue.json @@ -1,29 +1,29 @@ { - "intro": "A pack of {{delibirdName}} have appeared!", - "title": "Delibir-dy", - "description": "The {{delibirdName}}s are looking at you expectantly, as if they want something. Perhaps giving them an item or some money would satisfy them?", - "query": "What will you give them?", - "invalid_selection": "Pokémon doesn't have that kind of item.", + "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": "Give Money", - "tooltip": "(-) Give the {{delibirdName}}s {{money, money}}\n(+) Receive a Gift Item", - "selected": "You toss the money to the {{delibirdName}}s,\nwho chatter amongst themselves excitedly.$They turn back to you and happily give you a present!" + "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": "Give Food", - "tooltip": "(-) Give the {{delibirdName}}s a Berry or Reviver Seed\n(+) Receive a Gift Item", - "select_prompt": "Select an item to give.", - "selected": "You toss the {{chosenItem}} to the {{delibirdName}}s,\nwho chatter amongst themselves excitedly.$They turn back to you and happily give you a present!" + "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": "Give an Item", - "tooltip": "(-) Give the {{delibirdName}}s a Held Item\n(+) Receive a Gift Item", - "select_prompt": "Select an item to give.", - "selected": "You toss the {{chosenItem}} to the {{delibirdName}}s,\nwho chatter amongst themselves excitedly.$They turn back to you and happily give you a present!" + "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": "The {{delibirdName}} pack happily waddles off into the distance.$What a curious little exchange!" + "outro": "Die {{delibirdName}} watscheln glücklich davon.$Was für ein seltsamer kleiner Austausch!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/field-trip-dialogue.json b/src/locales/de/mystery-encounters/field-trip-dialogue.json index 61900d56cd7..61e6d4d9367 100644 --- a/src/locales/de/mystery-encounters/field-trip-dialogue.json +++ b/src/locales/de/mystery-encounters/field-trip-dialogue.json @@ -1,31 +1,31 @@ { - "intro": "It's a teacher and some school children!", - "speaker": "Teacher", - "intro_dialogue": "Hello, there! Would you be able to\nspare a minute for my students?$I'm teaching them about Pokémon moves\nand would love to show them a demonstration.$Would you mind showing us one of\nthe moves your Pokémon can use?", - "title": "Field Trip", - "description": "A teacher is requesting a move demonstration from a Pokémon. Depending on the move you choose, she might have something useful for you in exchange.", - "query": "Which move category will you show off?", + "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": "A Physical Move", - "tooltip": "(+) Physical Item Rewards" + "label": "Physische Attacke", + "tooltip": "(+) Physische Item-Belohnungen" }, "2": { - "label": "A Special Move", - "tooltip": "(+) Special Item Rewards" + "label": "Spezielle Attacke", + "tooltip": "(+) Spezielle Item-Belohnungen" }, "3": { - "label": "A Status Move", - "tooltip": "(+) Status Item Rewards" + "label": "Status-Attacke", + "tooltip": "(+) Status Item-Belohnungen" }, - "selected": "{{pokeName}} shows off an awesome display of {{move}}!" + "selected": "{{pokeName}} zeigt eine beeindruckende Vorführung von {{move}}!" }, - "second_option_prompt": "Choose a move for your Pokémon to use.", - "incorrect": "...$That isn't a {{moveCategory}} move!\nI'm sorry, but I can't give you anything.$Come along children, we'll\nfind a better demonstration elsewhere.", - "incorrect_exp": "Looks like you learned a valuable lesson?$Your Pokémon also gained some experience.", - "correct": "Thank you so much for your kindness!\nI hope these items might be of use to you!", - "correct_exp": "{{pokeName}} also gained some valuable experience!", - "status": "Status", - "physical": "Physical", - "special": "Special" + "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 " } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json b/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json index 3eb6cb87c16..33ed0d3f95a 100644 --- a/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json +++ b/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json @@ -1,25 +1,25 @@ { - "intro": "Something shiny is sparkling\non the ground near that Pokémon!", - "title": "Fight or Flight", - "description": "It looks like there's a strong Pokémon guarding an item. Battling is the straightforward approach, but it looks strong. Perhaps you could steal the item, if you have the right Pokémon for the job.", - "query": "What will you do?", + "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": "Battle the Pokémon", - "tooltip": "(-) Hard Battle\n(+) New Item", - "selected": "You approach the\nPokémon without fear.", - "stat_boost": "The {{enemyPokemon}}'s latent strength boosted one of its stats!" + "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": "Steal the Item", - "disabled_tooltip": "Your Pokémon need to know certain moves to choose this", - "tooltip": "(+) {{option2PrimaryName}} uses {{option2PrimaryMove}}", - "selected": ".@d{32}.@d{32}.@d{32}$Your {{option2PrimaryName}} helps you out and uses {{option2PrimaryMove}}!$You nabbed the item!" + "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": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You leave the strong Pokémon\nwith its prize and continue on." + "label": "Verlassen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du lässt das starke Pokémon mit seinem Item zurück und gehst weiter." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/fun-and-games-dialogue.json b/src/locales/de/mystery-encounters/fun-and-games-dialogue.json index f5d7d6e8ff8..9e38d0a4599 100644 --- a/src/locales/de/mystery-encounters/fun-and-games-dialogue.json +++ b/src/locales/de/mystery-encounters/fun-and-games-dialogue.json @@ -1,30 +1,30 @@ { - "intro_dialogue": "Step right up, folks! Try your luck\non the brand new {{wobbuffetName}} Whack-o-matic!", - "speaker": "Showman", - "title": "Fun And Games!", - "description": "You've encountered a traveling show with a prize game! You will have @[TOOLTIP_TITLE]{3 turns} to bring the {{wobbuffetName}} as close to @[TOOLTIP_TITLE]{1 HP} as possible @[TOOLTIP_TITLE]{without KOing it} so it can wind up a huge Counter on the bell-ringing machine.\nBut be careful! If you KO the {{wobbuffetName}}, you'll have to pay for the cost of reviving it!", - "query": "Would you like to play?", + "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": "Play the Game", - "tooltip": "(-) Pay {{option1Money, money}}\n(+) Play {{wobbuffetName}} Whack-o-matic", - "selected": "Time to test your luck!" + "label": "Das Spiel spielen", + "tooltip": "(-) Zahle {{option1Money, money}}\n(+) Spiele {{wobbuffetName}} Hau-den-Lukas", + "selected": "Zeit dein Glück herauszufordern!" }, "2": { - "label": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You hurry along your way,\nwith a slight feeling of regret." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du beeilst dich auf deinem Weg, mit einem leichten Gefühl der Reue." } }, - "ko": "Oh no! The {{wobbuffetName}} fainted!$You lose the game and\nhave to pay for the revive cost...", - "charging_continue": "The Wubboffet keeps charging its counter-swing!", - "turn_remaining_3": "Three turns remaining!", - "turn_remaining_2": "Two turns remaining!", - "turn_remaining_1": "One turn remaining!", - "end_game": "Time's up!$The {{wobbuffetName}} winds up to counter-swing and@d{16}.@d{16}.@d{16}.", - "best_result": "The {{wobbuffetName}} smacks the button so hard\nthe bell breaks off the top!$You win the grand prize!", - "great_result": "The {{wobbuffetName}} smacks the button, nearly hitting the bell!$So close!\nYou earn the second tier prize!", - "good_result": "The {{wobbuffetName}} hits the button hard enough to go midway up the scale!$You earn the third tier prize!", - "bad_result": "The {{wobbuffetName}} barely taps the button and nothing happens...$Oh no!\nYou don't win anything!", - "outro": "That was a fun little game!" + "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!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json b/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json index 01f4e6092eb..040a8c269e0 100644 --- a/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json +++ b/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json @@ -1,22 +1,22 @@ { - "intro": "Mysterious challengers have appeared!", - "title": "Mysterious Challengers", - "description": "If you defeat a challenger, you might impress them enough to receive a boon. But some look tough, are you up to the challenge?", - "query": "Who will you battle?", + "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": "A Clever, Mindful Foe", - "tooltip": "(-) Standard Battle\n(+) Move Item Rewards" + "label": "Schlauer Trainer", + "tooltip": "(-) Standardkampf\n(+) TM Belohnungen" }, "2": { - "label": "A Strong Foe", - "tooltip": "(-) Hard Battle\n(+) Good Rewards" + "label": "Starker Trainer", + "tooltip": "(-) Harter Kampf\n(+) Gute Belohnungen" }, "3": { - "label": "The Mightiest Foe", - "tooltip": "(-) Brutal Battle\n(+) Great Rewards" + "label": "Mächtigster Trainer", + "tooltip": "(-) Brutaler Kampf\n(+) Großartige Belohnungen" }, - "selected": "The trainer steps forward..." + "selected": "Der Herausforderer tritt vor..." }, - "outro": "The mysterious challenger was defeated!" + "outro": "Der mysteriöse Herausforderer wurde besiegt!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json b/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json index 1de7a5992ed..9dfb05e47e8 100644 --- a/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json +++ b/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json @@ -1,23 +1,23 @@ { - "intro": "You found...@d{32} a chest?", - "title": "The Mysterious Chest", - "description": "A beautifully ornamented chest stands on the ground. There must be something good inside... right?", - "query": "Will you open it?", + "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": "Open It", - "tooltip": "@[SUMMARY_BLUE]{(35%) Something terrible}\n@[SUMMARY_GREEN]{(40%) Okay Rewards}\n@[SUMMARY_GREEN]{(20%) Good Rewards}\n@[SUMMARY_GREEN]{(4%) Great Rewards}\n@[SUMMARY_GREEN]{(1%) Amazing Rewards}", - "selected": "You open the chest to find...", - "normal": "Just some normal tools and items.", - "good": "Some pretty nice tools and items.", - "great": "A couple great tools and items!", - "amazing": "Whoa! An amazing item!", - "bad": "Oh no!@d{32}\nThe chest was actually a {{gimmighoulName}} in disguise!$Your {{pokeName}} jumps in front of you\nbut is KOed in the process!" + "label": "Öffnen", + "tooltip": "@[SUMMARY_BLUE]{(35%) Etwas Schreckliches}\n@[SUMMARY_GREEN]{(40%) Standard Belohnung}\n@[SUMMARY_GREEN]{(20%) Gute Belohnung}\n@[SUMMARY_GREEN]{(4%) Großartige Belohnung}\n@[SUMMARY_GREEN]{(1%) 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": "Too Risky, Leave", - "tooltip": "(-) No Rewards", - "selected": "You hurry along your way,\nwith a slight feeling of regret." + "label": "Zu riskant, weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du gehst schnell weiter, mit einem leichten Gefühl der Reue." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/safari-zone-dialogue.json b/src/locales/de/mystery-encounters/safari-zone-dialogue.json index 8869f2055e5..2302833036b 100644 --- a/src/locales/de/mystery-encounters/safari-zone-dialogue.json +++ b/src/locales/de/mystery-encounters/safari-zone-dialogue.json @@ -1,46 +1,46 @@ { - "intro": "It's a safari zone!", - "title": "The Safari Zone", - "description": "There are all kinds of rare and special Pokémon that can be found here!\nIf you choose to enter, you'll have a time limit of 3 wild encounters where you can try to catch these special Pokémon.\n\nBeware, though. These Pokémon may flee before you're able to catch them!", - "query": "Would you like to enter?", + "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": "Enter", - "tooltip": "(-) Pay {{option1Money, money}}\n@[SUMMARY_GREEN]{(?) Safari Zone}", - "selected": "Time to test your luck!" + "label": "Eintreten", + "tooltip": "(-) Zahle {{option1Money, money}}\n@[SUMMARY_GREEN]{(?) Safari Zone}", + "selected": "Zeit, dein Glück herauszufordern!" }, "2": { - "label": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You hurry along your way,\nwith a slight feeling of regret." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du gehst deines Weges, mit einem leichten Gefühl der Reue." } }, "safari": { "1": { - "label": "Throw a Pokéball", - "tooltip": "(+) Throw a Pokéball", - "selected": "You throw a Pokéball!" + "label": "Pokéball werfen", + "tooltip": "(+) Werfe einen Pokéball", + "selected": "Du wirfst einen Pokéball!" }, "2": { - "label": "Throw Bait", - "tooltip": "(+) Increases Capture Rate\n(-) Chance to Increase Flee Rate", - "selected": "You throw some bait!" + "label": "Köder werfen", + "tooltip": "(+) Erhöht die Fangrate\n(-) Erhöht die Fluchtchance", + "selected": "Du wirfst einen Köder!" }, "3": { - "label": "Throw Mud", - "tooltip": "(+) Decreases Flee Rate\n(-) Chance to Decrease Capture Rate", - "selected": "You throw some mud!" + "label":"Matsch werfen", + "tooltip": "(+) Vermindert die Fluchtchance\n(-) Chance, die Fangrate zu verringern", + "selected": "Du wirst ein wenig Matsch!" }, "4": { - "label": "Flee", - "tooltip": "(?) Flee from this Pokémon" + "label": "Fliehen", + "tooltip": "(?) Fliehe vor diesem Pokémon" }, - "watching": "{{pokemonName}} is watching carefully!", - "eating": "{{pokemonName}} is eating!", - "busy_eating": "{{pokemonName}} is busy eating!", - "angry": "{{pokemonName}} is angry!", - "beside_itself_angry": "{{pokemonName}} is beside itself with anger!", - "remaining_count": "{{remainingCount}} Pokémon remaining!" + "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": "That was a fun little excursion!" + "outro": "Das war ein spannendes Abenteuer in der Safari-Zone!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json b/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json index d0003de07f1..6579d94bd2e 100644 --- a/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json +++ b/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json @@ -1,27 +1,27 @@ { - "intro": "A man in a dark coat approaches you.", - "speaker": "Shady Salesman", - "intro_dialogue": ".@d{16}.@d{16}.@d{16}$I've got the goods if you've got the money.$Make sure your Pokémon can handle it though.", - "title": "The Vitamin Dealer", - "description": "The man opens his jacket to reveal some Pokémon vitamins. The numbers he quotes seem like a really good deal. Almost too good...\nHe offers two package deals to choose from.", - "query": "Which deal will you choose?", + "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": "The Cheap Deal", - "tooltip": "(-) Pay {{option1Money, money}}\n(-) Side Effects?\n(+) Chosen Pokémon Gains 2 Random Vitamins" + "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": "The Pricey Deal", - "tooltip": "(-) Pay {{option2Money, money}}\n(+) Chosen Pokémon Gains 2 Random Vitamins" + "label": "Der teure Deal", + "tooltip": "(-) Zahle {{option2Money, money}}\n(+) Das gewählte Pokémon erhält 2 zufällige Nährstoffe" }, "3": { - "label": "Leave", - "tooltip": "(-) No Rewards", - "selected": "Heh, wouldn't have figured you for a coward." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Ey, hätte ich nicht gedacht, dass du ein Feigling bist." }, - "selected": "The man hands you two bottles and quickly disappears.${{selectedPokemon}} gained {{boost1}} and {{boost2}} boosts!" + "selected": "Der Mann überreicht dir zwei Flaschen und verschwindet schnell.${{selectedPokemon}} erhält {{boost1}} und {{boost2}} Nährstoffe!" }, - "cheap_side_effects": "But the medicine had some side effects!$Your {{selectedPokemon}} takes some damage,\nand its Nature is changed to {{newNature}}!", - "no_bad_effects": "Looks like there were no side-effects from the medicine!" + "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." } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json b/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json index c295867f521..552f082c20d 100644 --- a/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json +++ b/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json @@ -1,27 +1,27 @@ { - "intro": "It's a strange machine, whirring noisily...", - "title": "Teleportating Hijinks", - "description": "The machine has a sign on it that reads:\n \"To use, insert money then step into the capsule.\"\n\nPerhaps it can transport you somewhere...", - "query": "What will you do?", + "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": "Put Money In", - "tooltip": "(-) Pay {{price, money}}\n(?) Teleport to New Biome", - "selected": "You insert some money, and the capsule opens.\nYou step inside..." + "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": "A Pokémon Helps", - "tooltip": "(-) {{option2PrimaryName}} Helps\n(+) {{option2PrimaryName}} gains EXP\n(?) Teleport to New Biome", - "disabled_tooltip": "You need a Steel or Electric Type Pokémon to choose this", - "selected": "{{option2PrimaryName}}'s Type allows it to bypass the machine's paywall!$The capsule opens, and you step inside..." + "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": "Inspect the Machine", - "tooltip": "(-) Pokémon Battle", - "selected": "You are drawn in by the blinking lights\nand strange noises coming from the machine...$You don't even notice as a wild\nPokémon sneaks up and ambushes you!" + "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": "The machine shakes violently,\nmaking all sorts of strange noises!$Just as soon as it had started, it quiets once more.", - "attacked": "You step out into a completely new area, startling a wild Pokémon!$The wild Pokémon attacks!", - "boss_enraged": "The opposing {{enemyPokemon}} has become enraged!" + "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!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json b/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json index 7e8091bbfff..1e055fa5ed0 100644 --- a/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json +++ b/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json @@ -1,23 +1,23 @@ { - "intro": "A chipper elderly man approaches you.", - "speaker": "Gentleman", - "intro_dialogue": "Hello there! Have I got a deal just for YOU!", - "title": "The Pokémon Salesman", - "description": "\"This {{purchasePokemon}} is extremely unique and carries an ability not normally found in its species! I'll let you have this swell {{purchasePokemon}} for just {{price, money}}!\"\n\n\"What do you say?\"", - "description_shiny": "\"This {{purchasePokemon}} is extremely unique and has a pigment not normally found in its species! I'll let you have this swell {{purchasePokemon}} for just {{price, money}}!\"\n\n\"What do you say?\"", - "query": "What will you do?", + "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": "Accept", - "tooltip": "(-) Pay {{price, money}}\n(+) Gain a {{purchasePokemon}} with its Hidden Ability", - "tooltip_shiny": "(-) Pay {{price, money}}\n(+) Gain a shiny {{purchasePokemon}}", - "selected_message": "You paid an outrageous sum and bought the {{purchasePokemon}}.", - "selected_dialogue": "Excellent choice!$I can see you've a keen eye for business.$Oh, yeah...@d{64} Returns not accepted, got that?" + "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": "Refuse", - "tooltip": "(-) No Rewards", - "selected": "No?@d{32} You say no?$I'm only doing this as a favor to you!" + "label": "Ablehnen", + "tooltip": "(-) Keine Belohnung", + "selected": "Nein?@d{32} Du sagst nein?$Ich mache das nur als Gefallen für dich!" } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/training-session-dialogue.json b/src/locales/de/mystery-encounters/training-session-dialogue.json index f018018fe4e..f7d22ef6deb 100644 --- a/src/locales/de/mystery-encounters/training-session-dialogue.json +++ b/src/locales/de/mystery-encounters/training-session-dialogue.json @@ -1,33 +1,33 @@ { - "intro": "You've come across some\ntraining tools and supplies.", - "title": "Training Session", - "description": "These supplies look like they could be used to train a member of your party! There are a few ways you could train your Pokémon, by battling against it with the rest of your team.", - "query": "How should you train?", - "invalid_selection": "Pokémon must be healthy enough.", + "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": "Light Training", - "tooltip": "(-) Light Battle\n(+) Improve 2 Random IVs of Pokémon", - "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its {{stat1}} and {{stat2}} IVs were improved!" + "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": "Moderate Training", - "tooltip": "(-) Moderate Battle\n(+) Change Pokémon's Nature", - "select_prompt": "Select a new nature\nto train your Pokémon in.", - "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its nature was changed to {{nature}}!" + "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": "Heavy Training", - "tooltip": "(-) Harsh Battle\n(+) Change Pokémon's Ability", - "select_prompt": "Select a new ability\nto train your Pokémon in.", - "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its ability was changed to {{ability}}!" + "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": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You've no time for training.\nTime to move on." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du hast keine Zeit für Training und gehst weiter." }, - "selected": "{{selectedPokemon}} moves across\nthe clearing to face you..." + "selected": "{{selectedPokemon}} bewegt sich über die Lichtung, um dir gegenüberzutreten..." }, - "outro": "That was a successful training session!" + "outro": "Das war eine erfolgreiche Trainingssitzung!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json b/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json index e6f5b3d3fcd..efd5ff52e16 100644 --- a/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json +++ b/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json @@ -1,26 +1,26 @@ { - "intro": "That isn't just an ordinary Pokémon!", - "title": "Uncommon Breed", - "description": "That {{enemyPokemon}} looks special compared to others of its kind. @[TOOLTIP_TITLE]{Perhaps it knows a special move?} You could battle and catch it outright, but there might also be a way to befriend it.", - "query": "What will you do?", + "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": "Battle the Pokémon", - "tooltip": "(-) Tricky Battle\n(+) Strong Catchable Foe", - "selected": "You approach the\n{{enemyPokemon}} without fear.", - "stat_boost": "The {{enemyPokemon}}'s heightened abilities boost its stats!" + "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": "Give It Food", - "disabled_tooltip": "You need 4 berry items to choose this", - "tooltip": "(-) Give 4 Berries\n(+) The {{enemyPokemon}} Likes You", - "selected": "You toss the berries at the {{enemyPokemon}}!$It eats them happily!$The {{enemyPokemon}} wants to join your party!" + "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": "Befriend It", - "disabled_tooltip": "Your Pokémon need to know certain moves to choose this", - "tooltip": "(+) {{option3PrimaryName}} uses {{option3PrimaryMove}}\n(+) The {{enemyPokemon}} Likes You", - "selected": "Your {{option3PrimaryName}} uses {{option3PrimaryMove}} to charm the {{enemyPokemon}}!$The {{enemyPokemon}} wants to join your party!" + "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!" } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/weird-dream-dialogue.json b/src/locales/de/mystery-encounters/weird-dream-dialogue.json index 44acde84002..11fe3b4078c 100644 --- a/src/locales/de/mystery-encounters/weird-dream-dialogue.json +++ b/src/locales/de/mystery-encounters/weird-dream-dialogue.json @@ -1,22 +1,22 @@ { - "intro": "A shadowy woman blocks your path.\nSomething about her is unsettling...", - "speaker": "Woman", - "intro_dialogue": "I have seen your futures, your pasts...$Child, do you see them too?", + "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": "The woman's words echo in your head. It wasn't just a singular voice, but a vast multitude, from all timelines and realities. You begin to feel dizzy, the question lingering on your mind...\n\n@[TOOLTIP_TITLE]{\"I have seen your futures, your pasts... Child, do you see them too?\"}", - "query": "What will you do?", + "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": "\"I See Them\"", - "tooltip": "@[SUMMARY_GREEN]{(?) Affects your Pokémon}", - "selected": "Her hand reaches out to touch you,\nand everything goes black.$Then...@d{64} You see everything.\nEvery timeline, all your different selves,\n past and future.$Everything that has made you,\neverything you will become...@d{64}", - "cutscene": "You see your Pokémon,@d{32} converging from\nevery reality to become something new...@d{64}", - "dream_complete": "When you awaken, the woman - was it a woman or a ghost? - is gone...$.@d{32}.@d{32}.@d{32}$Your Pokémon team has changed...\nOr is it the same team you've always had?" + "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": "Quickly Leave", - "tooltip": "(-) Affects your Pokémon", - "selected": "You tear your mind from a numbing grip, and hastily depart.$When you finally stop to collect yourself, you check the Pokémon in your team.$For some reason, all of their levels have decreased!" + "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!" } } } \ No newline at end of file diff --git a/src/locales/de/party-ui-handler.json b/src/locales/de/party-ui-handler.json index 520c5850b03..8c662ef2b78 100644 --- a/src/locales/de/party-ui-handler.json +++ b/src/locales/de/party-ui-handler.json @@ -15,7 +15,7 @@ "UNPAUSE_EVOLUTION": "Entwicklung fortsetzen", "REVIVE": "Wiederbeleben", "RENAME": "Umbenennen", - "SELECT": "Select", + "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!", diff --git a/src/locales/de/trainer-names.json b/src/locales/de/trainer-names.json index 6199e252eb8..2a6ecf91324 100644 --- a/src/locales/de/trainer-names.json +++ b/src/locales/de/trainer-names.json @@ -163,15 +163,15 @@ "piers_marnie_double": "Nezz & Mary", "marnie_piers_double": "Mary & Nezz", - "buck": "Buck", - "cheryl": "Cheryl", - "marley": "Marley", - "mira": "Mira", - "riley": "Riley", - "victor": "Victor", - "victoria": "Victoria", - "vivi": "Vivi", + "buck": "Avenaro", + "cheryl": "Raissa", + "marley": "Charlie", + "mira": "Orisa", + "riley": "Urs", + "victor": "Viktor", + "victoria": "Viktoria", + "vivi": "Sieglinde", "vicky": "Vicky", - "vito": "Vito", - "bug_type_superfan": "Bug-Type Superfan" + "vito": "Paul", + "bug_type_superfan": "Käfersammler-Superfan" } diff --git a/src/locales/de/trainer-titles.json b/src/locales/de/trainer-titles.json index a0d2eca348e..6f6bace7fc8 100644 --- a/src/locales/de/trainer-titles.json +++ b/src/locales/de/trainer-titles.json @@ -35,5 +35,5 @@ "skull_admin": "Team Skull Vorstand", "macro_admin": "Vizepräsidentin von Macro Cosmos", - "the_winstrates": "The Winstrates'" + "the_winstrates": "Sihgers" } diff --git a/src/overrides.ts b/src/overrides.ts index 6b550d152c2..10ee6ec9e2f 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -87,7 +87,7 @@ class DefaultOverrides { readonly STARTER_FORM_OVERRIDES: Partial> = {}; /** default 5 or 20 for Daily */ - readonly STARTING_LEVEL_OVERRIDE: number = 0; + readonly STARTING_LEVEL_OVERRIDE: number = 8000; /** * SPECIES OVERRIDE * will only apply to the first starter in your party or each enemy pokemon @@ -141,7 +141,7 @@ class DefaultOverrides { // ------------------------- /** 1 to 256, set to null to ignore */ - readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = null; + readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = 256; readonly MYSTERY_ENCOUNTER_TIER_OVERRIDE: MysteryEncounterTier | null = null; readonly MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType | null = null; From 031e9595a6fc314799fb77ceee19ad5b028ef4d7 Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Sat, 14 Sep 2024 16:22:03 +0200 Subject: [PATCH 08/88] Revert "Teil 1" This reverts commit 88e8684d72c4c2c1edf9d1fcc0b09fbc0629170b. --- src/locales/de/battle.json | 10 +-- src/locales/de/bgm-name.json | 6 +- src/locales/de/dialogue.json | 76 +++++++++---------- src/locales/de/egg.json | 2 +- .../de/modifier-select-ui-handler.json | 4 +- src/locales/de/modifier-type.json | 26 +++---- .../de/mystery-encounter-messages.json | 10 +-- .../an-offer-you-cant-refuse-dialogue.json | 32 ++++---- .../berries-abound-dialogue.json | 32 ++++---- .../dancing-lessons-dialogue.json | 34 ++++----- .../dark-deal-dialogue.json | 28 +++---- .../delibirdy-dialogue.json | 34 ++++----- .../field-trip-dialogue.json | 42 +++++----- .../fight-or-flight-dialogue.json | 30 ++++---- .../fun-and-games-dialogue.json | 44 +++++------ .../mysterious-challengers-dialogue.json | 24 +++--- .../mysterious-chest-dialogue.json | 30 ++++---- .../safari-zone-dialogue.json | 56 +++++++------- .../shady-vitamin-dealer-dialogue.json | 32 ++++---- .../teleporting-hijinks-dialogue.json | 34 ++++----- .../the-pokemon-salesman-dialogue.json | 30 ++++---- .../training-session-dialogue.json | 42 +++++----- .../uncommon-breed-dialogue.json | 32 ++++---- .../weird-dream-dialogue.json | 26 +++---- src/locales/de/party-ui-handler.json | 2 +- src/locales/de/trainer-names.json | 20 ++--- src/locales/de/trainer-titles.json | 2 +- src/overrides.ts | 4 +- 28 files changed, 372 insertions(+), 372 deletions(-) diff --git a/src/locales/de/battle.json b/src/locales/de/battle.json index 52d4f192a5b..aa7b5c59725 100644 --- a/src/locales/de/battle.json +++ b/src/locales/de/battle.json @@ -14,10 +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!", + "pokemonObtained": "You got {{pokemonName}}!", + "pokemonBrokeFree": "Oh no!\nThe Pokémon broke free!", + "pokemonFled": "The wild {{pokemonName}} fled!", + "playerFled": "You fled from the {{pokemonName}}!", "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", @@ -102,5 +102,5 @@ "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?" + "mysteryEncounterAppeared": "What's this?" } diff --git a/src/locales/de/bgm-name.json b/src/locales/de/bgm-name.json index 6355c33c49c..c747fc34b9e 100644 --- a/src/locales/de/bgm-name.json +++ b/src/locales/de/bgm-name.json @@ -148,8 +148,8 @@ "menu": "PMD Erkundungsteam Himmel Willkommen in der Welt der Pokémon!", "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\n", - "mystery_encounter_gen_5_gts": "SW GTS", + "mystery_encounter_weird_dream": "PMD EoS Temporal Spire", + "mystery_encounter_fun_and_games": "PMD EoS Guildmaster Wigglytuff", + "mystery_encounter_gen_5_gts": "BW GTS", "mystery_encounter_gen_6_gts": "XY GTS" } diff --git a/src/locales/de/dialogue.json b/src/locales/de/dialogue.json index 3c6c6f712eb..a8cdf78457d 100644 --- a/src/locales/de/dialogue.json +++ b/src/locales/de/dialogue.json @@ -935,112 +935,112 @@ }, "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!" + "1": "...I'm telling you right now. I'm seriously tough. Act surprised!", + "2": "I can feel my Pokémon shivering inside their Pokéballs!" }, "victory": { - "1": "Hehehehe! So heiß bist du!", - "2": "Hehehehe! So heiß bist du!" + "1": "Heeheehee!\nSo hot, you!", + "2": "Heeheehee!\nSo hot, you!" }, "defeat": { - "1": "Whoa! Du scheinst ja wirklich erschöpft zu sein.", - "2": "Whoa! Du scheinst ja wirklich erschöpft zu sein." + "1": "Whoa! You're all out of gas, I guess.", + "2": "Whoa! You're all out of gas, I guess." } }, "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." + "1": "My Pokémon have been itching for a battle.", + "2": "I should warn you, my Pokémon can be quite rambunctious." }, "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." + "1": "Striking the right balance of offense and defense... It's not easy to do.", + "2": "Striking the right balance of offense and defense... It's not easy to do." }, "defeat": { - "1": "Brauchen deine Pokémon Heilung?", - "2": "Brauchen deine Pokémon Heilung?" + "1": "Do your Pokémon need any healing?", + "2": "Do your Pokémon need any healing?" } }, "stat_trainer_marley": { "encounter": { - "1": "...OK. Ich werde mein Bestes geben.", - "2": "...OK. Ich werde nicht verlieren...!" + "1": "... OK.\nI'll do my best.", + "2": "... OK.\nI... won't lose...!" }, "victory": { "1": "... Awww.", "2": "... Awww." }, "defeat": { - "1": "... Auf Wiedersehen.", - "2": "... Auf Wiedersehen." + "1": "... Goodbye.", + "2": "... Goodbye." } }, "stat_trainer_mira": { "encounter": { - "1": "Du wirst von Mira schockiert sein!", - "2": "Mira wird dir zeigen, dass Mira sich nicht mehr verirrt!" + "1": "You will be shocked by Mira!", + "2": "Mira will show you that Mira doesn't get lost anymore!" }, "victory": { - "1": "Mira wundern, ob sie in diesem Land weit kommen kann.", - "2": "Mira wundern, ob sie in diesem Land weit kommen kann." + "1": "Mira wonders if she can get very far in this land.", + "2": "Mira wonders if she can get very far in this land." }, "defeat": { - "1": "Mira wuss, dass sie gewinnen würde!", - "2": "Mira wuss, dass sie gewinnen würde!" + "1": "Mira knew she would win!", + "2": "Mira knew she would win!" } }, "stat_trainer_riley": { "encounter": { - "1": "Kämpfe sind unsere Art der Begrüßung.", - "2": "Wir setzen alles daran, deine Pokémon zu besiegen." + "1": "Battling is our way of greeting!", + "2": "We're pulling out all the stops to put your Pokémon down." }, "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." + "1": "At times we battle, and sometimes we team up...$It's great how Trainers can interact.", + "2": "At times we battle, and sometimes we team up...$It's great how Trainers can interact." }, "defeat": { - "1": "Du hast dich gut geschlagen. Bis zum nächsten Mal.", - "2": "Du hast dich gut geschlagen. Bis zum nächsten Mal." + "1": "You put up quite the display.\nBetter luck next time.", + "2": "You put up quite the display.\nBetter luck next time." } }, "winstrates_victor": { "encounter": { - "1": "Das ist der Kampfgeist den ich sehen will! Ich mag dich!" + "1": "That's the spirit! I like you!" }, "victory": { - "1": "Ahh! Du bist stärker als ich dachte!" + "1": "A-ha! You're stronger than I thought!" } }, "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!" + "1": "My goodness! Aren't you young?$You must be quite the trainer to beat my husband, though.$Now I suppose it's my turn to battle!" }, "victory": { - "1": "Waas? Wie stark bist du denn?" + "1": "Uwah! Just how strong are you?!" } }, "winstrates_vivi": { "encounter": { - "1": "Du bist stärker als Mama? Wow! Aber ich bin auch stark! Wirklich! Ehrlich!" + "1": "You're stronger than Mom? Wow!$But I'm strong, too!\nReally! Honestly!" }, "victory": { - "1": "Huh? Habe ich wirklich verloren?\nSchnief... Omaaa!" + "1": "Huh? Did I really lose?\nSnivel... Grandmaaa!" } }, "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!" + "1": "How dare you make my precious\ngranddaughter cry!$I see I need to teach you a lesson.\nPrepare to feel the sting of defeat!" }, "victory": { - "1": "Wow! So stark!\nMeine Enkelin hat nicht gelogen." + "1": "Whoa! So strong!\nMy granddaughter wasn't lying." } }, "winstrates_vito": { "encounter": { - "1": "Ich habe zusammen mit meiner ganzen Familie trainiert, mit jedem von uns!\n$Ich verliere gegen niemanden!" + "1": "I trained together with my whole family,\nevery one of us!$I'm not losing to anyone!" }, "victory": { - "1": "Ich war besser als jeder in meiner Familie. Ich habe noch nie verloren..." + "1": "I was better than everyone in my family.\nI've never lost before..." } }, "brock": { diff --git a/src/locales/de/egg.json b/src/locales/de/egg.json index 4097ac17578..63c2b431484 100644 --- a/src/locales/de/egg.json +++ b/src/locales/de/egg.json @@ -11,7 +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", + "eventType": "Mystery Event", "selectMachine": "Wähle eine Maschine.", "notEnoughVouchers": "Du hast nicht genug Ei-Gutscheine!", "tooManyEggs": "Du hast schon zu viele Eier!", diff --git a/src/locales/de/modifier-select-ui-handler.json b/src/locales/de/modifier-select-ui-handler.json index fbc6820244a..d92d2d51f56 100644 --- a/src/locales/de/modifier-select-ui-handler.json +++ b/src/locales/de/modifier-select-ui-handler.json @@ -9,6 +9,6 @@ "checkTeamDesc": "Überprüfe dein Team or nutze Formänderungsitems.", "rerollCost": "{{formattedMoney}}₽", "itemCost": "{{formattedMoney}}₽", - "continueNextWaveButton": "Fortfahren", - "continueNextWaveDescription": "Zur nächsten Welle fortfahren." + "continueNextWaveButton": "Continue", + "continueNextWaveDescription": "Continue to the next wave" } diff --git a/src/locales/de/modifier-type.json b/src/locales/de/modifier-type.json index 4f08727f9fd..a008fe98156 100644 --- a/src/locales/de/modifier-type.json +++ b/src/locales/de/modifier-type.json @@ -69,18 +69,18 @@ "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}}.", + "name": "Shuckle Juice", + "description": "{{increaseDecrease}} all of the holder's base stats by {{statValue}}. You were {{blessCurse}} by the Shuckle.", "extra": { - "increase": "Erhöht", - "decrease": "Verringert", - "blessed": "gesegnet", - "cursed": "verflucht" + "increase": "Increases", + "decrease": "Decreases", + "blessed": "blessed", + "cursed": "cursed" } }, "PokemonBaseStatFlatModifierType": { - "name": "Spezialität", - "description": "Erhöht den {{stats}}-Wert des Trägers um {{statValue}}. Nach einem komischen Traum gefunden." + "name": "Old Gateau", + "description": "Increases the holder's {{stats}} base stats by {{statValue}}. Found after a strange dream." }, "AllPokemonFullHpRestoreModifierType": { "description": "Stellt 100% der KP aller Pokémon her." @@ -417,11 +417,11 @@ "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." } + "MYSTERY_ENCOUNTER_SHUCKLE_JUICE": { "name": "Shuckle Juice" }, + "MYSTERY_ENCOUNTER_BLACK_SLUDGE": { "name": "Black Sludge", "description": "The stench is so powerful that shops will only sell you items at a steep cost increase." }, + "MYSTERY_ENCOUNTER_MACHO_BRACE": { "name": "Macho Brace", "description": "Defeating a Pokémon grants the holder a Macho Brace stack. Each stack slightly boosts stats, with an extra bonus at max stacks." }, + "MYSTERY_ENCOUNTER_OLD_GATEAU": { "name": "Old Gateau", "description": "Increases the holder's {{stats}} stats by {{statValue}}." }, + "MYSTERY_ENCOUNTER_GOLDEN_BUG_NET": { "name": "Golden Bug Net", "description": "Imbues the owner with luck to find Bug Type Pokémon more often. Has a strange heft to it." } }, "SpeciesBoosterItem": { "LIGHT_BALL": { diff --git a/src/locales/de/mystery-encounter-messages.json b/src/locales/de/mystery-encounter-messages.json index 5c10b06a355..3b81c8e46f0 100644 --- a/src/locales/de/mystery-encounter-messages.json +++ b/src/locales/de/mystery-encounter-messages.json @@ -1,7 +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" + "paid_money": "You paid ₽{{amount, number}}.", + "receive_money": "You received ₽{{amount, number}}!", + "affects_pokedex": "Affects Pokédex Data", + "cancel_option": "Return to encounter option select.", + "view_party_button": "View Party" } diff --git a/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 68b120fbac5..6dd54d302ab 100644 --- a/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,26 +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 Haustier wie dieses haben wollen!$Ich würde 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?", + "intro": "You're stopped by a rich looking boy.", + "speaker": "Rich Boy", + "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a pet like that!$I'd pay you handsomely,\nand also give you this old bauble!", + "title": "An Offer You Can't Refuse", + "description": "You're being offered a @[TOOLTIP_TITLE]{Shiny Charm} and {{price, money}} for your {{strongestPokemon}}!\n\nIt's an extremely good deal, but can you really bear to part with such a strong team member?", + "query": "What will you do?", "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!" + "label": "Accept the Deal", + "tooltip": "(-) Lose {{strongestPokemon}}\n(+) Gain a @[TOOLTIP_TITLE]{Shiny Charm}\n(+) Gain {{price, money}}", + "selected": "Wonderful!@d{32} Come along, {{strongestPokemon}}!$It's time to show you off to everyone at the yacht club!$They'll be so jealous!" }, "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!" + "label": "Extort the Kid", + "tooltip": "(+) {{option2PrimaryName}} uses {{moveOrAbility}}\n(+) Gain {{price, money}}", + "tooltip_disabled": "Your Pokémon need to have certain moves or abilities to choose this", + "selected": "My word, we're being robbed, {{liepardName}}!$You'll be hearing from my lawyers for this!" }, "3": { - "label": "Weggehen", - "tooltip": "(-) Keine Belohnung", - "selected": "Was ein beschissener Tag...$Ach, was solls. Lass uns zurück zum Yachtclub gehen, {{liepardName}}." + "label": "Leave", + "tooltip": "(-) No Rewards", + "selected": "What a rotten day...$Ah, well. Let's return to the yacht club then, {{liepardName}}." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/berries-abound-dialogue.json b/src/locales/de/mystery-encounters/berries-abound-dialogue.json index e7ff57a32ef..26eae2c6b88 100644 --- a/src/locales/de/mystery-encounters/berries-abound-dialogue.json +++ b/src/locales/de/mystery-encounters/berries-abound-dialogue.json @@ -1,26 +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!", + "intro": "There's a huge berry bush\nnear that Pokémon!", + "title": "Berries Abound", + "description": "It looks like there's a strong Pokémon guarding a berry bush. Battling is the straightforward approach, but it looks strong. Perhaps a fast Pokémon could grab some berries without getting caught?", + "query": "What will you do?", + "berries": "Berries!", "option": { "1": { - "label": "Kampf beginnen", - "tooltip": "(-) Schwerer Kampf\n(+) Beeren erhalten", - "selected": "Du trittst dem Pokémon ohne Furcht entgegen." + "label": "Battle the Pokémon", + "tooltip": "(-) Hard Battle\n(+) Gain Berries", + "selected": "You approach the\nPokémon without fear." }, "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!" + "label": "Race to the Bush", + "tooltip": "(-) {{fastestPokemon}} Uses its Speed\n(+) Gain Berries", + "selected": "Your {{fastestPokemon}} races for the berry bush!$It manages to nab {{numBerries}} before the {{enemyPokemon}} can react!$You quickly retreat with your newfound prize.", + "selected_bad": "Your {{fastestPokemon}} races for the berry bush!$Oh no! The {{enemyPokemon}} was faster and blocked off the approach!", + "boss_enraged": "The opposing {{enemyPokemon}} has become enraged!" }, "3": { - "label": "Verlassen", - "tooltip": "(-) Keine Belohnung", - "selected": "Du lässt das starke Pokémon mit seinem Item zurück und gehst weiter." + "label": "Leave", + "tooltip": "(-) No Rewards", + "selected": "You leave the strong Pokémon\nwith its prize and continue on." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json b/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json index 3ea02955309..8e2883ecb16 100644 --- a/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json +++ b/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json @@ -1,27 +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?", + "intro": "An {{oricorioName}} dances sadly alone, without a partner.", + "title": "Dancing Lessons", + "description": "The {{oricorioName}} doesn't seem aggressive, if anything it seems sad.\n\nMaybe it just wants someone to dance with...", + "query": "What will you do?", "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!" + "label": "Battle It", + "tooltip": "(-) Tough Battle\n(+) Gain a Baton", + "selected": "The {{oricorioName}} is distraught and moves to defend itself!", + "boss_enraged": "The {{oricorioName}}'s fear boosted its stats!" }, "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!" + "label": "Learn Its Dance", + "tooltip": "(+) Teach a Pokémon Revelation Dance", + "selected": "You watch the {{oricorioName}} closely as it performs its dance...$@s{level_up_fanfare}Your {{selectedPokemon}} learned from the {{oricorioName}}!" }, "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!" + "label": "Show It a Dance", + "tooltip": "(-) Teach the {{oricorioName}} a Dance Move\n(+) The {{oricorioName}} Will Like You", + "disabled_tooltip": "Your Pokémon need to know a Dance move for this.", + "select_prompt": "Select a Dance type move to use.", + "selected": "The {{oricorioName}} watches in fascination as\n{{selectedPokemon}} shows off {{selectedMove}}!$It loves the display!$@s{level_up_fanfare}The {{oricorioName}} wants to join your party!" } }, - "invalid_selection": "Das Pokémon kennt keine Tanzattacke" + "invalid_selection": "This Pokémon doesn't know a Dance move" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/dark-deal-dialogue.json b/src/locales/de/mystery-encounters/dark-deal-dialogue.json index 85c8d4565bb..3086ebb0f9b 100644 --- a/src/locales/de/mystery-encounters/dark-deal-dialogue.json +++ b/src/locales/de/mystery-encounters/dark-deal-dialogue.json @@ -1,24 +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?", + "intro": "A strange man in a tattered coat\nstands in your way...", + "speaker": "Shady Guy", + "intro_dialogue": "Hey, you!$I've been working on a new device\nto bring out a Pokémon's latent power!$It completely rebinds the Pokémon's atoms\nat a molecular level into a far more powerful form.$Hehe...@d{64} I just need some sac-@d{32}\nErr, test subjects, to prove it works.", + "title": "Dark Deal", + "description": "The disturbing fellow holds up some Pokéballs.\n\"I'll make it worth your while! You can have these strong Pokéballs as payment, All I need is a Pokémon from your team! Hehe...\"", + "query": "What will you do?", "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!" + "label": "Accept", + "tooltip": "(+) 5 Rogue Balls\n(?) Enhance a Random Pokémon", + "selected_dialogue": "Let's see, that {{pokeName}} will do nicely!$Remember, I'm not responsible\nif anything bad happens!@d{32} Hehe...", + "selected_message": "The man hands you 5 Rogue Balls.${{pokeName}} hops into the strange machine...$Flashing lights and weird noises\nstart coming from the machine!$...@d{96} Something emerges\nfrom the device, raging wildly!" }, "2": { - "label": "Ablehnen", - "tooltip": "(-) Keine Belohnung", - "selected": "Du willst einem armen Kerl nicht helfen? Pah!" + "label": "Refuse", + "tooltip": "(-) No Rewards", + "selected": "Not gonna help a poor fellow out?\nPah!" } }, - "outro": "Nach der schrecklichen Begegnung, sammelst du dich und gehst weiter." + "outro": "After the harrowing encounter,\nyou collect yourself and depart." } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/delibirdy-dialogue.json b/src/locales/de/mystery-encounters/delibirdy-dialogue.json index 34ca9666d09..ca1fefa3a39 100644 --- a/src/locales/de/mystery-encounters/delibirdy-dialogue.json +++ b/src/locales/de/mystery-encounters/delibirdy-dialogue.json @@ -1,29 +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.", + "intro": "A pack of {{delibirdName}} have appeared!", + "title": "Delibir-dy", + "description": "The {{delibirdName}}s are looking at you expectantly, as if they want something. Perhaps giving them an item or some money would satisfy them?", + "query": "What will you give them?", + "invalid_selection": "Pokémon doesn't have that kind of 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!" + "label": "Give Money", + "tooltip": "(-) Give the {{delibirdName}}s {{money, money}}\n(+) Receive a Gift Item", + "selected": "You toss the money to the {{delibirdName}}s,\nwho chatter amongst themselves excitedly.$They turn back to you and happily give you a present!" }, "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!" + "label": "Give Food", + "tooltip": "(-) Give the {{delibirdName}}s a Berry or Reviver Seed\n(+) Receive a Gift Item", + "select_prompt": "Select an item to give.", + "selected": "You toss the {{chosenItem}} to the {{delibirdName}}s,\nwho chatter amongst themselves excitedly.$They turn back to you and happily give you a present!" }, "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!" + "label": "Give an Item", + "tooltip": "(-) Give the {{delibirdName}}s a Held Item\n(+) Receive a Gift Item", + "select_prompt": "Select an item to give.", + "selected": "You toss the {{chosenItem}} to the {{delibirdName}}s,\nwho chatter amongst themselves excitedly.$They turn back to you and happily give you a present!" } }, - "outro": "Die {{delibirdName}} watscheln glücklich davon.$Was für ein seltsamer kleiner Austausch!" + "outro": "The {{delibirdName}} pack happily waddles off into the distance.$What a curious little exchange!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/field-trip-dialogue.json b/src/locales/de/mystery-encounters/field-trip-dialogue.json index 61e6d4d9367..61900d56cd7 100644 --- a/src/locales/de/mystery-encounters/field-trip-dialogue.json +++ b/src/locales/de/mystery-encounters/field-trip-dialogue.json @@ -1,31 +1,31 @@ { - "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?", + "intro": "It's a teacher and some school children!", + "speaker": "Teacher", + "intro_dialogue": "Hello, there! Would you be able to\nspare a minute for my students?$I'm teaching them about Pokémon moves\nand would love to show them a demonstration.$Would you mind showing us one of\nthe moves your Pokémon can use?", + "title": "Field Trip", + "description": "A teacher is requesting a move demonstration from a Pokémon. Depending on the move you choose, she might have something useful for you in exchange.", + "query": "Which move category will you show off?", "option": { "1": { - "label": "Physische Attacke", - "tooltip": "(+) Physische Item-Belohnungen" + "label": "A Physical Move", + "tooltip": "(+) Physical Item Rewards" }, "2": { - "label": "Spezielle Attacke", - "tooltip": "(+) Spezielle Item-Belohnungen" + "label": "A Special Move", + "tooltip": "(+) Special Item Rewards" }, "3": { - "label": "Status-Attacke", - "tooltip": "(+) Status Item-Belohnungen" + "label": "A Status Move", + "tooltip": "(+) Status Item Rewards" }, - "selected": "{{pokeName}} zeigt eine beeindruckende Vorführung von {{move}}!" + "selected": "{{pokeName}} shows off an awesome display of {{move}}!" }, - "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 " + "second_option_prompt": "Choose a move for your Pokémon to use.", + "incorrect": "...$That isn't a {{moveCategory}} move!\nI'm sorry, but I can't give you anything.$Come along children, we'll\nfind a better demonstration elsewhere.", + "incorrect_exp": "Looks like you learned a valuable lesson?$Your Pokémon also gained some experience.", + "correct": "Thank you so much for your kindness!\nI hope these items might be of use to you!", + "correct_exp": "{{pokeName}} also gained some valuable experience!", + "status": "Status", + "physical": "Physical", + "special": "Special" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json b/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json index 33ed0d3f95a..3eb6cb87c16 100644 --- a/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json +++ b/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json @@ -1,25 +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?", + "intro": "Something shiny is sparkling\non the ground near that Pokémon!", + "title": "Fight or Flight", + "description": "It looks like there's a strong Pokémon guarding an item. Battling is the straightforward approach, but it looks strong. Perhaps you could steal the item, if you have the right Pokémon for the job.", + "query": "What will you do?", "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!" + "label": "Battle the Pokémon", + "tooltip": "(-) Hard Battle\n(+) New Item", + "selected": "You approach the\nPokémon without fear.", + "stat_boost": "The {{enemyPokemon}}'s latent strength boosted one of its stats!" }, "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!" + "label": "Steal the Item", + "disabled_tooltip": "Your Pokémon need to know certain moves to choose this", + "tooltip": "(+) {{option2PrimaryName}} uses {{option2PrimaryMove}}", + "selected": ".@d{32}.@d{32}.@d{32}$Your {{option2PrimaryName}} helps you out and uses {{option2PrimaryMove}}!$You nabbed the item!" }, "3": { - "label": "Verlassen", - "tooltip": "(-) Keine Belohnung", - "selected": "Du lässt das starke Pokémon mit seinem Item zurück und gehst weiter." + "label": "Leave", + "tooltip": "(-) No Rewards", + "selected": "You leave the strong Pokémon\nwith its prize and continue on." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/fun-and-games-dialogue.json b/src/locales/de/mystery-encounters/fun-and-games-dialogue.json index 9e38d0a4599..f5d7d6e8ff8 100644 --- a/src/locales/de/mystery-encounters/fun-and-games-dialogue.json +++ b/src/locales/de/mystery-encounters/fun-and-games-dialogue.json @@ -1,30 +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?", + "intro_dialogue": "Step right up, folks! Try your luck\non the brand new {{wobbuffetName}} Whack-o-matic!", + "speaker": "Showman", + "title": "Fun And Games!", + "description": "You've encountered a traveling show with a prize game! You will have @[TOOLTIP_TITLE]{3 turns} to bring the {{wobbuffetName}} as close to @[TOOLTIP_TITLE]{1 HP} as possible @[TOOLTIP_TITLE]{without KOing it} so it can wind up a huge Counter on the bell-ringing machine.\nBut be careful! If you KO the {{wobbuffetName}}, you'll have to pay for the cost of reviving it!", + "query": "Would you like to play?", "option": { "1": { - "label": "Das Spiel spielen", - "tooltip": "(-) Zahle {{option1Money, money}}\n(+) Spiele {{wobbuffetName}} Hau-den-Lukas", - "selected": "Zeit dein Glück herauszufordern!" + "label": "Play the Game", + "tooltip": "(-) Pay {{option1Money, money}}\n(+) Play {{wobbuffetName}} Whack-o-matic", + "selected": "Time to test your luck!" }, "2": { - "label": "Weggehen", - "tooltip": "(-) Keine Belohnung", - "selected": "Du beeilst dich auf deinem Weg, mit einem leichten Gefühl der Reue." + "label": "Leave", + "tooltip": "(-) No Rewards", + "selected": "You hurry along your way,\nwith a slight feeling of regret." } }, - "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!" + "ko": "Oh no! The {{wobbuffetName}} fainted!$You lose the game and\nhave to pay for the revive cost...", + "charging_continue": "The Wubboffet keeps charging its counter-swing!", + "turn_remaining_3": "Three turns remaining!", + "turn_remaining_2": "Two turns remaining!", + "turn_remaining_1": "One turn remaining!", + "end_game": "Time's up!$The {{wobbuffetName}} winds up to counter-swing and@d{16}.@d{16}.@d{16}.", + "best_result": "The {{wobbuffetName}} smacks the button so hard\nthe bell breaks off the top!$You win the grand prize!", + "great_result": "The {{wobbuffetName}} smacks the button, nearly hitting the bell!$So close!\nYou earn the second tier prize!", + "good_result": "The {{wobbuffetName}} hits the button hard enough to go midway up the scale!$You earn the third tier prize!", + "bad_result": "The {{wobbuffetName}} barely taps the button and nothing happens...$Oh no!\nYou don't win anything!", + "outro": "That was a fun little game!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json b/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json index 040a8c269e0..01f4e6092eb 100644 --- a/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json +++ b/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json @@ -1,22 +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?", + "intro": "Mysterious challengers have appeared!", + "title": "Mysterious Challengers", + "description": "If you defeat a challenger, you might impress them enough to receive a boon. But some look tough, are you up to the challenge?", + "query": "Who will you battle?", "option": { "1": { - "label": "Schlauer Trainer", - "tooltip": "(-) Standardkampf\n(+) TM Belohnungen" + "label": "A Clever, Mindful Foe", + "tooltip": "(-) Standard Battle\n(+) Move Item Rewards" }, "2": { - "label": "Starker Trainer", - "tooltip": "(-) Harter Kampf\n(+) Gute Belohnungen" + "label": "A Strong Foe", + "tooltip": "(-) Hard Battle\n(+) Good Rewards" }, "3": { - "label": "Mächtigster Trainer", - "tooltip": "(-) Brutaler Kampf\n(+) Großartige Belohnungen" + "label": "The Mightiest Foe", + "tooltip": "(-) Brutal Battle\n(+) Great Rewards" }, - "selected": "Der Herausforderer tritt vor..." + "selected": "The trainer steps forward..." }, - "outro": "Der mysteriöse Herausforderer wurde besiegt!" + "outro": "The mysterious challenger was defeated!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json b/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json index 9dfb05e47e8..1de7a5992ed 100644 --- a/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json +++ b/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json @@ -1,23 +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?", + "intro": "You found...@d{32} a chest?", + "title": "The Mysterious Chest", + "description": "A beautifully ornamented chest stands on the ground. There must be something good inside... right?", + "query": "Will you open it?", "option": { "1": { - "label": "Öffnen", - "tooltip": "@[SUMMARY_BLUE]{(35%) Etwas Schreckliches}\n@[SUMMARY_GREEN]{(40%) Standard Belohnung}\n@[SUMMARY_GREEN]{(20%) Gute Belohnung}\n@[SUMMARY_GREEN]{(4%) Großartige Belohnung}\n@[SUMMARY_GREEN]{(1%) 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!" + "label": "Open It", + "tooltip": "@[SUMMARY_BLUE]{(35%) Something terrible}\n@[SUMMARY_GREEN]{(40%) Okay Rewards}\n@[SUMMARY_GREEN]{(20%) Good Rewards}\n@[SUMMARY_GREEN]{(4%) Great Rewards}\n@[SUMMARY_GREEN]{(1%) Amazing Rewards}", + "selected": "You open the chest to find...", + "normal": "Just some normal tools and items.", + "good": "Some pretty nice tools and items.", + "great": "A couple great tools and items!", + "amazing": "Whoa! An amazing item!", + "bad": "Oh no!@d{32}\nThe chest was actually a {{gimmighoulName}} in disguise!$Your {{pokeName}} jumps in front of you\nbut is KOed in the process!" }, "2": { - "label": "Zu riskant, weggehen", - "tooltip": "(-) Keine Belohnung", - "selected": "Du gehst schnell weiter, mit einem leichten Gefühl der Reue." + "label": "Too Risky, Leave", + "tooltip": "(-) No Rewards", + "selected": "You hurry along your way,\nwith a slight feeling of regret." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/safari-zone-dialogue.json b/src/locales/de/mystery-encounters/safari-zone-dialogue.json index 2302833036b..8869f2055e5 100644 --- a/src/locales/de/mystery-encounters/safari-zone-dialogue.json +++ b/src/locales/de/mystery-encounters/safari-zone-dialogue.json @@ -1,46 +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?", + "intro": "It's a safari zone!", + "title": "The Safari Zone", + "description": "There are all kinds of rare and special Pokémon that can be found here!\nIf you choose to enter, you'll have a time limit of 3 wild encounters where you can try to catch these special Pokémon.\n\nBeware, though. These Pokémon may flee before you're able to catch them!", + "query": "Would you like to enter?", "option": { "1": { - "label": "Eintreten", - "tooltip": "(-) Zahle {{option1Money, money}}\n@[SUMMARY_GREEN]{(?) Safari Zone}", - "selected": "Zeit, dein Glück herauszufordern!" + "label": "Enter", + "tooltip": "(-) Pay {{option1Money, money}}\n@[SUMMARY_GREEN]{(?) Safari Zone}", + "selected": "Time to test your luck!" }, "2": { - "label": "Weggehen", - "tooltip": "(-) Keine Belohnung", - "selected": "Du gehst deines Weges, mit einem leichten Gefühl der Reue." + "label": "Leave", + "tooltip": "(-) No Rewards", + "selected": "You hurry along your way,\nwith a slight feeling of regret." } }, "safari": { "1": { - "label": "Pokéball werfen", - "tooltip": "(+) Werfe einen Pokéball", - "selected": "Du wirfst einen Pokéball!" + "label": "Throw a Pokéball", + "tooltip": "(+) Throw a Pokéball", + "selected": "You throw a Pokéball!" }, "2": { - "label": "Köder werfen", - "tooltip": "(+) Erhöht die Fangrate\n(-) Erhöht die Fluchtchance", - "selected": "Du wirfst einen Köder!" + "label": "Throw Bait", + "tooltip": "(+) Increases Capture Rate\n(-) Chance to Increase Flee Rate", + "selected": "You throw some bait!" }, "3": { - "label":"Matsch werfen", - "tooltip": "(+) Vermindert die Fluchtchance\n(-) Chance, die Fangrate zu verringern", - "selected": "Du wirst ein wenig Matsch!" + "label": "Throw Mud", + "tooltip": "(+) Decreases Flee Rate\n(-) Chance to Decrease Capture Rate", + "selected": "You throw some mud!" }, "4": { - "label": "Fliehen", - "tooltip": "(?) Fliehe vor diesem Pokémon" + "label": "Flee", + "tooltip": "(?) Flee from this 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!" + "watching": "{{pokemonName}} is watching carefully!", + "eating": "{{pokemonName}} is eating!", + "busy_eating": "{{pokemonName}} is busy eating!", + "angry": "{{pokemonName}} is angry!", + "beside_itself_angry": "{{pokemonName}} is beside itself with anger!", + "remaining_count": "{{remainingCount}} Pokémon remaining!" }, - "outro": "Das war ein spannendes Abenteuer in der Safari-Zone!" + "outro": "That was a fun little excursion!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json b/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json index 6579d94bd2e..d0003de07f1 100644 --- a/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json +++ b/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json @@ -1,27 +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?", + "intro": "A man in a dark coat approaches you.", + "speaker": "Shady Salesman", + "intro_dialogue": ".@d{16}.@d{16}.@d{16}$I've got the goods if you've got the money.$Make sure your Pokémon can handle it though.", + "title": "The Vitamin Dealer", + "description": "The man opens his jacket to reveal some Pokémon vitamins. The numbers he quotes seem like a really good deal. Almost too good...\nHe offers two package deals to choose from.", + "query": "Which deal will you choose?", "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" + "label": "The Cheap Deal", + "tooltip": "(-) Pay {{option1Money, money}}\n(-) Side Effects?\n(+) Chosen Pokémon Gains 2 Random Vitamins" }, "2": { - "label": "Der teure Deal", - "tooltip": "(-) Zahle {{option2Money, money}}\n(+) Das gewählte Pokémon erhält 2 zufällige Nährstoffe" + "label": "The Pricey Deal", + "tooltip": "(-) Pay {{option2Money, money}}\n(+) Chosen Pokémon Gains 2 Random Vitamins" }, "3": { - "label": "Weggehen", - "tooltip": "(-) Keine Belohnung", - "selected": "Ey, hätte ich nicht gedacht, dass du ein Feigling bist." + "label": "Leave", + "tooltip": "(-) No Rewards", + "selected": "Heh, wouldn't have figured you for a coward." }, - "selected": "Der Mann überreicht dir zwei Flaschen und verschwindet schnell.${{selectedPokemon}} erhält {{boost1}} und {{boost2}} Nährstoffe!" + "selected": "The man hands you two bottles and quickly disappears.${{selectedPokemon}} gained {{boost1}} and {{boost2}} boosts!" }, - "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." + "cheap_side_effects": "But the medicine had some side effects!$Your {{selectedPokemon}} takes some damage,\nand its Nature is changed to {{newNature}}!", + "no_bad_effects": "Looks like there were no side-effects from the medicine!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json b/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json index 552f082c20d..c295867f521 100644 --- a/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json +++ b/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json @@ -1,27 +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?", + "intro": "It's a strange machine, whirring noisily...", + "title": "Teleportating Hijinks", + "description": "The machine has a sign on it that reads:\n \"To use, insert money then step into the capsule.\"\n\nPerhaps it can transport you somewhere...", + "query": "What will you do?", "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..." + "label": "Put Money In", + "tooltip": "(-) Pay {{price, money}}\n(?) Teleport to New Biome", + "selected": "You insert some money, and the capsule opens.\nYou step inside..." }, "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..." + "label": "A Pokémon Helps", + "tooltip": "(-) {{option2PrimaryName}} Helps\n(+) {{option2PrimaryName}} gains EXP\n(?) Teleport to New Biome", + "disabled_tooltip": "You need a Steel or Electric Type Pokémon to choose this", + "selected": "{{option2PrimaryName}}'s Type allows it to bypass the machine's paywall!$The capsule opens, and you step inside..." }, "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!" + "label": "Inspect the Machine", + "tooltip": "(-) Pokémon Battle", + "selected": "You are drawn in by the blinking lights\nand strange noises coming from the machine...$You don't even notice as a wild\nPokémon sneaks up and ambushes you!" } }, - "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!" + "transport": "The machine shakes violently,\nmaking all sorts of strange noises!$Just as soon as it had started, it quiets once more.", + "attacked": "You step out into a completely new area, startling a wild Pokémon!$The wild Pokémon attacks!", + "boss_enraged": "The opposing {{enemyPokemon}} has become enraged!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json b/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json index 1e055fa5ed0..7e8091bbfff 100644 --- a/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json +++ b/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json @@ -1,23 +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?", + "intro": "A chipper elderly man approaches you.", + "speaker": "Gentleman", + "intro_dialogue": "Hello there! Have I got a deal just for YOU!", + "title": "The Pokémon Salesman", + "description": "\"This {{purchasePokemon}} is extremely unique and carries an ability not normally found in its species! I'll let you have this swell {{purchasePokemon}} for just {{price, money}}!\"\n\n\"What do you say?\"", + "description_shiny": "\"This {{purchasePokemon}} is extremely unique and has a pigment not normally found in its species! I'll let you have this swell {{purchasePokemon}} for just {{price, money}}!\"\n\n\"What do you say?\"", + "query": "What will you do?", "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?" + "label": "Accept", + "tooltip": "(-) Pay {{price, money}}\n(+) Gain a {{purchasePokemon}} with its Hidden Ability", + "tooltip_shiny": "(-) Pay {{price, money}}\n(+) Gain a shiny {{purchasePokemon}}", + "selected_message": "You paid an outrageous sum and bought the {{purchasePokemon}}.", + "selected_dialogue": "Excellent choice!$I can see you've a keen eye for business.$Oh, yeah...@d{64} Returns not accepted, got that?" }, "2": { - "label": "Ablehnen", - "tooltip": "(-) Keine Belohnung", - "selected": "Nein?@d{32} Du sagst nein?$Ich mache das nur als Gefallen für dich!" + "label": "Refuse", + "tooltip": "(-) No Rewards", + "selected": "No?@d{32} You say no?$I'm only doing this as a favor to you!" } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/training-session-dialogue.json b/src/locales/de/mystery-encounters/training-session-dialogue.json index f7d22ef6deb..f018018fe4e 100644 --- a/src/locales/de/mystery-encounters/training-session-dialogue.json +++ b/src/locales/de/mystery-encounters/training-session-dialogue.json @@ -1,33 +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.", + "intro": "You've come across some\ntraining tools and supplies.", + "title": "Training Session", + "description": "These supplies look like they could be used to train a member of your party! There are a few ways you could train your Pokémon, by battling against it with the rest of your team.", + "query": "How should you train?", + "invalid_selection": "Pokémon must be healthy enough.", "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!" + "label": "Light Training", + "tooltip": "(-) Light Battle\n(+) Improve 2 Random IVs of Pokémon", + "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its {{stat1}} and {{stat2}} IVs were improved!" }, "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}}!" + "label": "Moderate Training", + "tooltip": "(-) Moderate Battle\n(+) Change Pokémon's Nature", + "select_prompt": "Select a new nature\nto train your Pokémon in.", + "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its nature was changed to {{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!" + "label": "Heavy Training", + "tooltip": "(-) Harsh Battle\n(+) Change Pokémon's Ability", + "select_prompt": "Select a new ability\nto train your Pokémon in.", + "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its ability was changed to {{ability}}!" }, "4": { - "label": "Weggehen", - "tooltip": "(-) Keine Belohnung", - "selected": "Du hast keine Zeit für Training und gehst weiter." + "label": "Leave", + "tooltip": "(-) No Rewards", + "selected": "You've no time for training.\nTime to move on." }, - "selected": "{{selectedPokemon}} bewegt sich über die Lichtung, um dir gegenüberzutreten..." + "selected": "{{selectedPokemon}} moves across\nthe clearing to face you..." }, - "outro": "Das war eine erfolgreiche Trainingssitzung!" + "outro": "That was a successful training session!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json b/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json index efd5ff52e16..e6f5b3d3fcd 100644 --- a/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json +++ b/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json @@ -1,26 +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?", + "intro": "That isn't just an ordinary Pokémon!", + "title": "Uncommon Breed", + "description": "That {{enemyPokemon}} looks special compared to others of its kind. @[TOOLTIP_TITLE]{Perhaps it knows a special move?} You could battle and catch it outright, but there might also be a way to befriend it.", + "query": "What will you do?", "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!" + "label": "Battle the Pokémon", + "tooltip": "(-) Tricky Battle\n(+) Strong Catchable Foe", + "selected": "You approach the\n{{enemyPokemon}} without fear.", + "stat_boost": "The {{enemyPokemon}}'s heightened abilities boost its stats!" }, "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!" + "label": "Give It Food", + "disabled_tooltip": "You need 4 berry items to choose this", + "tooltip": "(-) Give 4 Berries\n(+) The {{enemyPokemon}} Likes You", + "selected": "You toss the berries at the {{enemyPokemon}}!$It eats them happily!$The {{enemyPokemon}} wants to join your party!" }, "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!" + "label": "Befriend It", + "disabled_tooltip": "Your Pokémon need to know certain moves to choose this", + "tooltip": "(+) {{option3PrimaryName}} uses {{option3PrimaryMove}}\n(+) The {{enemyPokemon}} Likes You", + "selected": "Your {{option3PrimaryName}} uses {{option3PrimaryMove}} to charm the {{enemyPokemon}}!$The {{enemyPokemon}} wants to join your party!" } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/weird-dream-dialogue.json b/src/locales/de/mystery-encounters/weird-dream-dialogue.json index 11fe3b4078c..44acde84002 100644 --- a/src/locales/de/mystery-encounters/weird-dream-dialogue.json +++ b/src/locales/de/mystery-encounters/weird-dream-dialogue.json @@ -1,22 +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?", + "intro": "A shadowy woman blocks your path.\nSomething about her is unsettling...", + "speaker": "Woman", + "intro_dialogue": "I have seen your futures, your pasts...$Child, do you see them too?", "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?", + "description": "The woman's words echo in your head. It wasn't just a singular voice, but a vast multitude, from all timelines and realities. You begin to feel dizzy, the question lingering on your mind...\n\n@[TOOLTIP_TITLE]{\"I have seen your futures, your pasts... Child, do you see them too?\"}", + "query": "What will you do?", "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?" + "label": "\"I See Them\"", + "tooltip": "@[SUMMARY_GREEN]{(?) Affects your Pokémon}", + "selected": "Her hand reaches out to touch you,\nand everything goes black.$Then...@d{64} You see everything.\nEvery timeline, all your different selves,\n past and future.$Everything that has made you,\neverything you will become...@d{64}", + "cutscene": "You see your Pokémon,@d{32} converging from\nevery reality to become something new...@d{64}", + "dream_complete": "When you awaken, the woman - was it a woman or a ghost? - is gone...$.@d{32}.@d{32}.@d{32}$Your Pokémon team has changed...\nOr is it the same team you've always had?" }, "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!" + "label": "Quickly Leave", + "tooltip": "(-) Affects your Pokémon", + "selected": "You tear your mind from a numbing grip, and hastily depart.$When you finally stop to collect yourself, you check the Pokémon in your team.$For some reason, all of their levels have decreased!" } } } \ No newline at end of file diff --git a/src/locales/de/party-ui-handler.json b/src/locales/de/party-ui-handler.json index 8c662ef2b78..520c5850b03 100644 --- a/src/locales/de/party-ui-handler.json +++ b/src/locales/de/party-ui-handler.json @@ -15,7 +15,7 @@ "UNPAUSE_EVOLUTION": "Entwicklung fortsetzen", "REVIVE": "Wiederbeleben", "RENAME": "Umbenennen", - "SELECT": "Auswählen", + "SELECT": "Select", "choosePokemon": "Wähle ein Pokémon.", "doWhatWithThisPokemon": "Was soll mit diesem Pokémon geschehen?", "noEnergy": "{{pokemonName}} ist nicht fit genug, um zu kämpfen!", diff --git a/src/locales/de/trainer-names.json b/src/locales/de/trainer-names.json index 2a6ecf91324..6199e252eb8 100644 --- a/src/locales/de/trainer-names.json +++ b/src/locales/de/trainer-names.json @@ -163,15 +163,15 @@ "piers_marnie_double": "Nezz & Mary", "marnie_piers_double": "Mary & Nezz", - "buck": "Avenaro", - "cheryl": "Raissa", - "marley": "Charlie", - "mira": "Orisa", - "riley": "Urs", - "victor": "Viktor", - "victoria": "Viktoria", - "vivi": "Sieglinde", + "buck": "Buck", + "cheryl": "Cheryl", + "marley": "Marley", + "mira": "Mira", + "riley": "Riley", + "victor": "Victor", + "victoria": "Victoria", + "vivi": "Vivi", "vicky": "Vicky", - "vito": "Paul", - "bug_type_superfan": "Käfersammler-Superfan" + "vito": "Vito", + "bug_type_superfan": "Bug-Type Superfan" } diff --git a/src/locales/de/trainer-titles.json b/src/locales/de/trainer-titles.json index 6f6bace7fc8..a0d2eca348e 100644 --- a/src/locales/de/trainer-titles.json +++ b/src/locales/de/trainer-titles.json @@ -35,5 +35,5 @@ "skull_admin": "Team Skull Vorstand", "macro_admin": "Vizepräsidentin von Macro Cosmos", - "the_winstrates": "Sihgers" + "the_winstrates": "The Winstrates'" } diff --git a/src/overrides.ts b/src/overrides.ts index 10ee6ec9e2f..6b550d152c2 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -87,7 +87,7 @@ class DefaultOverrides { readonly STARTER_FORM_OVERRIDES: Partial> = {}; /** default 5 or 20 for Daily */ - readonly STARTING_LEVEL_OVERRIDE: number = 8000; + readonly STARTING_LEVEL_OVERRIDE: number = 0; /** * SPECIES OVERRIDE * will only apply to the first starter in your party or each enemy pokemon @@ -141,7 +141,7 @@ class DefaultOverrides { // ------------------------- /** 1 to 256, set to null to ignore */ - readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = 256; + readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = null; readonly MYSTERY_ENCOUNTER_TIER_OVERRIDE: MysteryEncounterTier | null = null; readonly MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType | null = null; From 3d32fec2440f3210b0a4773a26f93f013f5c3760 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 16:50:50 +0200 Subject: [PATCH 09/88] Update fun-and-games-dialogue.json --- .../fr/mystery-encounters/fun-and-games-dialogue.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json b/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json index a55ab1720f0..2072b7962ca 100644 --- a/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json +++ b/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json @@ -2,13 +2,13 @@ "intro_dialogue": "Approchez mesdames et messieurs ! Tentez votre chance au tout nouveau Ripost-o-matic de {{wobbuffetName}} !", "speaker": "Animateur", "title": "Du rire et des jeux !", - "description": "Vous rencontrez un forain avec un jeu de hasard ! Vous avez @[TOOLTIP_TITLE]{3 tours} pour amener {{wobbuffetName}} le plus près possible de @[TOOLTIP_TITLE]{1 PV}, mais @[TOOLTIP_TITLE]{sans le mettre K.O.} afin qu’il puisse charger la Riposte la plus forte possible sur la cloche de la machine.\nMais attention ! Si {{wobbuffetName}} est mis K.O., vous devrez payer pour la ranimer !", + "description": "Vous rencontrez un forain avec un jeu de hasard ! Vous disposez de @[TOOLTIP_TITLE]{3 tours} pour amener {{wobbuffetName}} le plus près possible de @[TOOLTIP_TITLE]{1 PV}, mais @[TOOLTIP_TITLE]{sans le mettre K.O.} afin qu’il puisse charger la Riposte la plus forte possible sur la cloche de la machine.\nMais attention ! Si {{wobbuffetName}} est mis K.O., vous devrez payer pour la ranimer !", "query": "Voulez-vous jouer ?", "option": { "1": { "label": "Jouer", "tooltip": "(-) Payer {{option1Money, money}}\n(+) Jouer au Ripost-o-matic", - "selected": "Tentez votre chance !" + "selected": "Vous tentez votre chance !" }, "2": { "label": "Partir", @@ -23,7 +23,7 @@ "turn_remaining_1": "Un tour restant !", "end_game": "Temps écoulé !$Le {{wobbuffetName}} relâche sa Riposte et@d{16}.@d{16}.@d{16}.", "best_result": "Le {{wobbuffetName}} éclate le bouton si fort que la cloche crève le plafond !$Vous remportez le premier prix !", - "great_result": "Le {{wobbuffetName}} éclate le bouton, et touche quasi la cloche !$Presque !\nVous remportez le deuxième prix !", + "great_result": "Le {{wobbuffetName}} éclate le bouton, et touche presque la cloche !$Mince, à deux doigts !\nVous remportez le deuxième prix !", "good_result": "Le {{wobbuffetName}} tape le bouton assez fort pour atteindre la moitié !$Vous remportez le troisième prix !", "bad_result": "Le {{wobbuffetName}} touche à peine le bouton et rien ne se passe…$Oh non!\nVous repartez les mains vides !", "outro": "Ouais, ça va, c’était sympa comme jeu !" From a27e47cbfcd47bc49a062f7e5028d29abf63ff1b Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 16:51:14 +0200 Subject: [PATCH 10/88] Update mystery-encounter-messages.json --- src/locales/fr/mystery-encounter-messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounter-messages.json b/src/locales/fr/mystery-encounter-messages.json index 7641243dfc4..a4394d7d503 100644 --- a/src/locales/fr/mystery-encounter-messages.json +++ b/src/locales/fr/mystery-encounter-messages.json @@ -1,5 +1,5 @@ { - "paid_money": "Vous avez payé {{amount, number}} ₽.", + "paid_money": "Vous payez {{amount, number}} ₽.", "receive_money": "Vous recevez {{amount, number}} ₽ !", "affects_pokedex": "Affecte les données du Pokédex", "cancel_option": "Retour au choix des options.", From 3dcd57c727264df7f20c5f71a27d4754dd11b9a7 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 16:51:40 +0200 Subject: [PATCH 11/88] Update fun-and-games-dialogue.json --- src/locales/fr/mystery-encounters/fun-and-games-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json b/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json index 2072b7962ca..73cf7411b66 100644 --- a/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json +++ b/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json @@ -18,8 +18,8 @@ }, "ko": "Oh non ! Le {{wobbuffetName}} est K.O. !$Vous avez perdu et devez maintenant\npayer pour le ranimer…", "charging_continue": "Le Qulbutoké charge sa Riposte !", - "turn_remaining_3": "Trois tour restants !", - "turn_remaining_2": "Deux tour restants !", + "turn_remaining_3": "Trois tours restants !", + "turn_remaining_2": "Deux tours restants !", "turn_remaining_1": "Un tour restant !", "end_game": "Temps écoulé !$Le {{wobbuffetName}} relâche sa Riposte et@d{16}.@d{16}.@d{16}.", "best_result": "Le {{wobbuffetName}} éclate le bouton si fort que la cloche crève le plafond !$Vous remportez le premier prix !", From 287950d98c2299a20aba51eb190fd85a08745cb9 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 16:53:06 +0200 Subject: [PATCH 12/88] Update fun-and-games-dialogue.json --- src/locales/fr/mystery-encounters/fun-and-games-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json b/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json index 73cf7411b66..e0f27c3a6a9 100644 --- a/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json +++ b/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json @@ -25,6 +25,6 @@ "best_result": "Le {{wobbuffetName}} éclate le bouton si fort que la cloche crève le plafond !$Vous remportez le premier prix !", "great_result": "Le {{wobbuffetName}} éclate le bouton, et touche presque la cloche !$Mince, à deux doigts !\nVous remportez le deuxième prix !", "good_result": "Le {{wobbuffetName}} tape le bouton assez fort pour atteindre la moitié !$Vous remportez le troisième prix !", - "bad_result": "Le {{wobbuffetName}} touche à peine le bouton et rien ne se passe…$Oh non!\nVous repartez les mains vides !", + "bad_result": "Le {{wobbuffetName}} touche à peine le bouton et rien ne se passe…$Oh non dommage !\nVous repartez les mains vides !", "outro": "Ouais, ça va, c’était sympa comme jeu !" } From e249598c9129970781cbe7345017307cb7250132 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 17:13:04 +0200 Subject: [PATCH 13/88] Update fun-and-games-dialogue.json --- .../fun-and-games-dialogue.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json b/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json index e0f27c3a6a9..55f4e75502a 100644 --- a/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json +++ b/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json @@ -1,8 +1,8 @@ { - "intro_dialogue": "Approchez mesdames et messieurs ! Tentez votre chance au tout nouveau Ripost-o-matic de {{wobbuffetName}} !", + "intro_dialogue": "Approchez mesdames et messieurs !$Tentez votre chance au tout nouveau\nRipost-o-matic de {{wobbuffetName}} !", "speaker": "Animateur", "title": "Du rire et des jeux !", - "description": "Vous rencontrez un forain avec un jeu de hasard ! Vous disposez de @[TOOLTIP_TITLE]{3 tours} pour amener {{wobbuffetName}} le plus près possible de @[TOOLTIP_TITLE]{1 PV}, mais @[TOOLTIP_TITLE]{sans le mettre K.O.} afin qu’il puisse charger la Riposte la plus forte possible sur la cloche de la machine.\nMais attention ! Si {{wobbuffetName}} est mis K.O., vous devrez payer pour la ranimer !", + "description": "Vous rencontrez un forain avec une mailloche ! Vous disposez de @[TOOLTIP_TITLE]{3 tours} pour amener {{wobbuffetName}} le plus près possible de @[TOOLTIP_TITLE]{1 PV} pour ainsi charger la Riposte la plus puissante possible sur la cloche de la machine, @[TOOLTIP_TITLE]{sans le mettre K.O.} .\nMais attention ! Si {{wobbuffetName}} est mis K.O., vous devrez payer pour le ranimer !", "query": "Voulez-vous jouer ?", "option": { "1": { @@ -17,14 +17,14 @@ } }, "ko": "Oh non ! Le {{wobbuffetName}} est K.O. !$Vous avez perdu et devez maintenant\npayer pour le ranimer…", - "charging_continue": "Le Qulbutoké charge sa Riposte !", + "charging_continue": "Le Qulbutoké charge\nsa Riposte !", "turn_remaining_3": "Trois tours restants !", "turn_remaining_2": "Deux tours restants !", "turn_remaining_1": "Un tour restant !", - "end_game": "Temps écoulé !$Le {{wobbuffetName}} relâche sa Riposte et@d{16}.@d{16}.@d{16}.", - "best_result": "Le {{wobbuffetName}} éclate le bouton si fort que la cloche crève le plafond !$Vous remportez le premier prix !", - "great_result": "Le {{wobbuffetName}} éclate le bouton, et touche presque la cloche !$Mince, à deux doigts !\nVous remportez le deuxième prix !", - "good_result": "Le {{wobbuffetName}} tape le bouton assez fort pour atteindre la moitié !$Vous remportez le troisième prix !", - "bad_result": "Le {{wobbuffetName}} touche à peine le bouton et rien ne se passe…$Oh non dommage !\nVous repartez les mains vides !", + "end_game": "Tous vos tours sont écoulés !$Le {{wobbuffetName}} relâche\nsa Riposte et@d{16}.@d{16}.@d{16}.", + "best_result": "Le {{wobbuffetName}} éclate le bouton si fort\nque la cloche crève le plafond !$Vous remportez le premier prix !", + "great_result": "Le {{wobbuffetName}} éclate le bouton,\net touche presque la cloche !$Mince, à deux doigts !\nVous remportez le deuxième prix !", + "good_result": "Le {{wobbuffetName}} tape le bouton assez fort\npour atteindre la moitié !$Vous remportez le troisième prix !", + "bad_result": "Le {{wobbuffetName}} touche à peine le bouton et rien ne se passe…$Oh non, dommage !\nVous repartez les mains vides !", "outro": "Ouais, ça va, c’était sympa comme jeu !" } From 0baa3439b4bd3663f3aa3c57d00ac209b0316532 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 17:19:03 +0200 Subject: [PATCH 14/88] Update slumbering-snorlax-dialogue.json --- .../fr/mystery-encounters/slumbering-snorlax-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/mystery-encounters/slumbering-snorlax-dialogue.json b/src/locales/fr/mystery-encounters/slumbering-snorlax-dialogue.json index b66a797ff87..876bb6be2b2 100644 --- a/src/locales/fr/mystery-encounters/slumbering-snorlax-dialogue.json +++ b/src/locales/fr/mystery-encounters/slumbering-snorlax-dialogue.json @@ -1,7 +1,7 @@ { - "intro": "Alors que vous vous aventurez dans un passage étroit, une silhouette imposante bloque le passage.$En vous approchant, vous apercevez un {{snorlaxName}}\nendormi paisiblement.$Il semble n’y avoir aucun chemin alternatif.", + "intro": "Alors que vous vous aventurez dans un passage étroit, une silhouette imposante bloque le passage.$En vous approchant, vous apercevez un {{snorlaxName}}\nendormi paisiblement.$Vous regardez autour de vous, mais n’apercevez aucun chemin alternatif.", "title": "{{snorlaxName}} au Bois dormant", - "description": "Vous pourriez soit tenter de le faire bouger en l’attaquant, soit attendre son réveil. Mais impossible de savoir combien de temps ça prendrait…", + "description": "Vous pourriez soit tenter de le faire bouger en l’attaquant, soit attendre son réveil.\nMais impossible de savoir combien de temps cette dernière option prendrait…", "query": "Que voulez-vous faire ?", "option": { "1": { From 3871b3ef2f209c7f739957d5d8f46d7b5e640c5f Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 17:25:28 +0200 Subject: [PATCH 15/88] Update shady-vitamin-dealer-dialogue.json --- .../shady-vitamin-dealer-dialogue.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json b/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json index 61c8185297c..1b47c8341f1 100644 --- a/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json +++ b/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json @@ -1,27 +1,27 @@ { "intro": "Un homme en manteau noir vous aborde.", "speaker": "Dealer", - "intro_dialogue": ".@d{16}.@d{16}.@d{16}$J’ai de la bonne came, mais seulement si t’as les thunes.$Assure-toi quand même que tes Pokémon puissent encaisser.", + "intro_dialogue": ".@d{16}.@d{16}.@d{16}$J’ai de la bonne came, mais seulement si t’as les thunes.$Assure-toi quand même que tes Pokémon\npuissent encaisser.", "title": "Le Dealer d’Accélérateurs", - "description": "L’homme ouvre son manteau et vous laisse apercevoir des Accélérateurs pour Pokémon. Le tarif qu’il annonce semble être une bonne affaire. Peut-être même un peu trop…\nIl vous laisse le choix entre deux offres.", - "query": "Que choisissez-vous ?", + "description": "L’homme ouvre son manteau et vous laisse apercevoir des Accélérateurs pour Pokémon. Le tarif qu’il annonce semble être une bonne affaire. Peut-être même un peu trop belle…\nIl vous laisse le choix entre deux offres.", + "query": "Laquelle choisissez-vous ?", "invalid_selection": "Le Pokémon doit être en bonne santé.", "option": { "1": { - "label": "Deal douteux", + "label": "Offre douteuse", "tooltip": "(-) Payer {{option1Money, money}}\n(-) Effets secondaires ?\n(+) Le Pokémon gagne 2 Accélérateurs au hasard" }, "2": { - "label": "Deal honnête", + "label": "Offre honnête", "tooltip": "(-) Payer {{option2Money, money}}\n(+) le Pokémon choisi 2 Accélérateurs au hasard" }, "3": { "label": "Partir", "tooltip": "(-) Aucune récompense", - "selected": "Eh bien, j’aurais pas cru que tu ferais preuve d’une telle lâcheté." + "selected": "Eh bien, j’aurais pas cru que\ntu ferais preuve d’une telle lâcheté." }, - "selected": "L’homme vous remet deux Accélérateurs et s’évapore.${{selectedPokemon}} reçoit un gain en {{boost1}} et en {{boost2}} !" + "selected": "L’homme vous remet deux Accélérateurs et s’évapore.${{selectedPokemon}} reçoit 1 {{boost1}} et 1 {{boost2}} !" }, - "cheap_side_effects": "Ah ! Des effets secondaires se manifestent !$Votre {{selectedPokemon}} prend des dégâts,\net sa nature se change en {{newNature}} !", + "cheap_side_effects": "Ah !\nDes effets secondaires se manifestent !$Votre {{selectedPokemon}} prend des dégâts,\net sa nature se change en {{newNature}} !", "no_bad_effects": "Tout semble bien se passer, aucun effet indésirable à signaler !" } From 2f76e183554fa2cc52a2045dafd10b12cd1c41d4 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 17:31:49 +0200 Subject: [PATCH 16/88] Update an-offer-you-cant-refuse-dialogue.json --- .../an-offer-you-cant-refuse-dialogue.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 112253d0b8b..5e1fa098153 100644 --- a/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,14 +1,14 @@ { "intro": "Un jeune garçon aux airs très bougeois vous arrête.", "speaker": "Richard", - "intro_dialogue": "Bonchour-haann !$Je ne puis carrément pas ignorer que votre\n{{strongestPokemon}} m’a l’air fa-bu-leux !$J’ai toujours désiré posséder un tel compagnon !$Je peux vous payer grassement,\nainsi que cette petite babiole !", + "intro_dialogue": "Bonchour-haann !$Je ne puis carrément pas ignorer que votre\n{{strongestPokemon}} m’a l’air fa-bu-leux !$J’ai toujours désiré posséder un tel compagnon !$Je peux vous payer grassement,\nainsi que vous donner petite babiole !", "title": "L’affaire du siècle", - "description": "Un fils à papa vous offre un @[TOOLTIP_TITLE]{Charme Chroma} et {{price, money}} en échange de votre {{strongestPokemon}} !\n\nÇa semble être une bonne affaire, mais pourrez vous supporter de priver votre équipe d’un tel atout ?", + "description": "Un fils à papa vous offre un @[TOOLTIP_TITLE]{Charme Chroma} et {{price, money}} en échange de votre {{strongestPokemon}} !\n\nÇa semble être une bonne affaire, mais pourrez vous supporter de priver votre équipe d’un tel atout ?", "query": "Que voulez-vous faire ?", "option": { "1": { "label": "Accepter l’offre", - "tooltip": "(-) Vous perdez {{strongestPokemon}}\n(+) Gain d’un @[TOOLTIP_TITLE]{Charme Chroma}\n(+) Gain de {{price, money}}", + "tooltip": "(-) Vous perdez {{strongestPokemon}}\n(+) Gain d’un @[TOOLTIP_TITLE]{Charme Chroma}\n(+) Gain de {{price, money}}", "selected": "Fa-bu-leux!@d{32} Par ici, {{strongestPokemon}} !$Viens que je te montre fièrement au club de yacht !$Ils vont trooop avoir le seum-haann !" }, "2": { From f109779aa8929e3bdb89bc0b781cb3571115ef32 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 17:32:14 +0200 Subject: [PATCH 17/88] Update an-offer-you-cant-refuse-dialogue.json --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 5e1fa098153..c310abad536 100644 --- a/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -20,7 +20,7 @@ "3": { "label": "Partir", "tooltip": "(-) Aucune récompense", - "selected": "Quelle journée pourrie…$Viens {{liepardName}}. On retourne au club de yacht…" + "selected": "Quelle journée pourrie…$Viens {{liepardName}}.\nOn retourne au club de yacht…" } } } From fd7f4dbf104fc63df0053bb56d2668a17919a436 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 17:40:03 +0200 Subject: [PATCH 18/88] Update global-trade-system-dialogue.json --- .../mystery-encounters/global-trade-system-dialogue.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/locales/fr/mystery-encounters/global-trade-system-dialogue.json b/src/locales/fr/mystery-encounters/global-trade-system-dialogue.json index b2bcda7316f..6caafc3c82d 100644 --- a/src/locales/fr/mystery-encounters/global-trade-system-dialogue.json +++ b/src/locales/fr/mystery-encounters/global-trade-system-dialogue.json @@ -1,12 +1,12 @@ { "intro": "C’est une interface d’accès à la GTS !", "title": "La GTS", - "description": "Ah, la GTS ! Une révolution technologique permettant de connecter le monde au travers des échanges de Pokémon !\nLa chance va-t-elle vous sourire aujourd’hui ?", + "description": "Ah, la GTS ! Une révolution technologique permettant de connecter le monde au travers des échanges de Pokémon !\n\nLa chance va-t-elle vous sourire aujourd’hui ?", "query": "Que voulez-vous faire ?", "option": { "1": { "label": "Consulter les offres", - "tooltip": "(+) Sélectionner une offre d’échange pour un de vos Pokémon.", + "tooltip": "(+) Sélectionner une offre d’échange pour un de vos Pokémon", "trade_options_prompt": "Choisissez un Pokémon à recevoir en échange." }, "2": { @@ -15,14 +15,14 @@ }, "3": { "label": "Échanger un objet", - "trade_options_prompt": "Choisissez un objet à envoyer.", + "trade_options_prompt": "Choisissez l’objet à envoyer.", "invalid_selection": "Ce Pokémon n’a aucun objet légal à échanger.", "tooltip": "(+) Envoyer un de vos objets à la GTS et en recevoir un au hasard" }, "4": { "label": "Partir", "tooltip": "(-) Aucune récompense", - "selected": "Pas le temps pour ça aujourd’hui!\nVous reprenez votre chemin." + "selected": "Pas le temps pour ça aujourd’hui !\nVous reprenez votre chemin." } }, "pokemon_trade_selected": "{{tradedPokemon}} est envoyé\nà {{tradeTrainerName}}.", From 94542d4fa218f9d50add376ddeed904bc6b291b9 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 17:47:36 +0200 Subject: [PATCH 19/88] Update mysterious-challengers-dialogue.json --- .../mysterious-challengers-dialogue.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/locales/fr/mystery-encounters/mysterious-challengers-dialogue.json b/src/locales/fr/mystery-encounters/mysterious-challengers-dialogue.json index d607c8ea463..f43fdfa6db0 100644 --- a/src/locales/fr/mystery-encounters/mysterious-challengers-dialogue.json +++ b/src/locales/fr/mystery-encounters/mysterious-challengers-dialogue.json @@ -1,11 +1,11 @@ { "intro": "De mystérieux adversaires apparissent !", - "title": "Mystérieux adversaires", - "description": "Si vous défaites un de ces adversaires, vous pourriez peut-être recevoir une récompense si vous les impressionnez. Cependant certains ont l’air coriaces, accepterez-vous le défi ?", + "title": "De mystérieux adversaires", + "description": "Si vous défaites un de ces adversaires, vous pourriez peut-être recevoir une récompense si vous les avez impressionnés.\nCertains ont cependant l’air bien coriaces. Acceptez-vous le défi ?", "query": "Qui voulez-vous affronter ?", "option": { "1": { - "label": "Adversaire clairvoyant", + "label": "Adversaire lucide", "tooltip": "(-) Combat normal\n(+) Objets de capacités" }, "2": { @@ -13,8 +13,8 @@ "tooltip": "(-) Combat difficile\n(+) Bonnes récompenses" }, "3": { - "label": "Adversaire imbattable", - "tooltip": "(-) Combat Brutal\n(+) Super récompenses" + "label": "Adversaire puissant", + "tooltip": "(-) Combat brutal\n(+) Super récompenses" }, "selected": "Votre adversaire s’avance…" }, From 0f55811f3bc517ca538f9c75612102703c5c4840 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 17:55:09 +0200 Subject: [PATCH 20/88] Update dancing-lessons-dialogue.json --- .../mystery-encounters/dancing-lessons-dialogue.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json b/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json index 747cac3c144..7e7394889b4 100644 --- a/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json +++ b/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json @@ -1,22 +1,22 @@ { - "intro": "Un {{oricorioName}} dance tristement seul, sans partenaire.", + "intro": "Un {{oricorioName}} danse tristement seul,\nsans partenaire pour l’accompagner.", "title": "Leçons de danse", - "description": "Ce {{oricorioName}} ne semble pas agressif, mais triste tout au plus.\n\nPeut-être a-t-il juste besoin de quelqu’un avec qui danser…", + "description": "Ce {{oricorioName}} ne semble pas hostile, mais a tout au plus juste l’air triste.\n\nPeut-être a-t-il juste besoin d’un ou d’une partenaire pour l’accompagner ?…", "query": "Que voulez-vous faire ?", "option": { "1": { "label": "L’affronter", "tooltip": "(-) Combat difficile\n(+) Gain d’un Bâton", - "selected": "Le {{oricorioName}} est desemparé et tente de se défendre !", + "selected": "Le {{oricorioName}} est desemparé\net tente de se défendre !", "boss_enraged": "La peur de {{oricorioName}} augumente beaucoup ses stats !" }, "2": { "label": "Apprendre sa danse", "tooltip": "(+) Apprendre Danse Éveil à un Pokémon", - "selected": "Vos scrutez {{oricorioName}} de près pendant sa danse…$@s{level_up_fanfare}Votre {{selectedPokemon}} apprend Danse Éveil de {{oricorioName}} !" + "selected": "Vos scrutez {{oricorioName}} de près pendant sa danse…$@s{level_up_fanfare}Votre {{selectedPokemon}} apprend la capacité\nDanse Éveil de {{oricorioName}} !" }, "3": { - "label": "Lui montrer une danse", + "label": "Montrer une danse", "tooltip": "(-) Apprendre à {{oricorioName}} une capacité dansante\n(+) Le {{oricorioName}} vous apprécie", "disabled_tooltip": "Votre Pokémon doit connaitre une capacité dansante pour choisir cette option.", "select_prompt": "Sélectionnez une capacité dansante.", From 590eecb39b6ab1f971cb7d2379fc2f74f6e45188 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 18:23:16 +0200 Subject: [PATCH 21/88] Update training-session-dialogue.json --- .../training-session-dialogue.json | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/locales/fr/mystery-encounters/training-session-dialogue.json b/src/locales/fr/mystery-encounters/training-session-dialogue.json index f018018fe4e..a0ec7ac5ea6 100644 --- a/src/locales/fr/mystery-encounters/training-session-dialogue.json +++ b/src/locales/fr/mystery-encounters/training-session-dialogue.json @@ -1,33 +1,33 @@ { - "intro": "You've come across some\ntraining tools and supplies.", - "title": "Training Session", - "description": "These supplies look like they could be used to train a member of your party! There are a few ways you could train your Pokémon, by battling against it with the rest of your team.", - "query": "How should you train?", - "invalid_selection": "Pokémon must be healthy enough.", + "intro": "Vous tomber sur du matériel d’entrainement.", + "title": "Session d’entrainement", + "description": "Ce matériel semble pouvoir être utilisé pour entrainer un membre de votre équipe ! Il existe plusieurs moyens avec lesquels vous pourriez entrainer votre Pokémon, comme en le faisant combattre le reste de votre équipe.", + "query": "Quel entrainement chosir ?", + "invalid_selection": "Le Pokémon doit être en bonne santé.", "option": { "1": { - "label": "Light Training", - "tooltip": "(-) Light Battle\n(+) Improve 2 Random IVs of Pokémon", - "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its {{stat1}} and {{stat2}} IVs were improved!" + "label": "Léger", + "tooltip": "(-) Combat léger\n(+) Augumente au hasard 2 IV du Pokémon", + "finished": "{{selectedPokemon}} revient vers vous,\nl’air fatigué mais fier de lui !$Ses IV en {{stat1}} et\nen {{stat2}} augumentent !" }, "2": { - "label": "Moderate Training", - "tooltip": "(-) Moderate Battle\n(+) Change Pokémon's Nature", - "select_prompt": "Select a new nature\nto train your Pokémon in.", - "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its nature was changed to {{nature}}!" + "label": "Modéré", + "tooltip": "(-) Combat modérée\n(+) Modifie la nature du Pokémon", + "select_prompt": "Sélectionnez la nature pour laquelle\nvotre Pokémon doit s’entrainer.", + "finished": "{{selectedPokemon}} revient vers vous,\nl’air fatigué mais fier de lui !$Il a beaucoup changé et\nest devenu {{nature}} !" }, "3": { - "label": "Heavy Training", - "tooltip": "(-) Harsh Battle\n(+) Change Pokémon's Ability", - "select_prompt": "Select a new ability\nto train your Pokémon in.", - "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its ability was changed to {{ability}}!" + "label": "Intense", + "tooltip": "(-) Combat intense\n(+) Modifie le talent du Pokémon", + "select_prompt": "Sélectionnez le talent pour lequel\nvotre Pokémon doit s’entrainer.", + "finished": "{{selectedPokemon}} revient vers vous,\nl’air fatigué mais fier de lui !$Il a beaucoup changé possède\ndesormais le talent {{ability}} !" }, "4": { - "label": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You've no time for training.\nTime to move on." + "label": "Partir", + "tooltip": "(-) Aucune récompense", + "selected": "Oh la flemme, pas le temps de faire sport.\nAllons ailleurs." }, - "selected": "{{selectedPokemon}} moves across\nthe clearing to face you..." + "selected": "{{selectedPokemon}} va de l’autre côté\ndu terrain pour vous faire face…" }, - "outro": "That was a successful training session!" -} \ No newline at end of file + "outro": "Cet entrainement a vraiement été très stimulant !" +} From 39a1963941332b77056b928711a2f5e414b3646f Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 18:33:41 +0200 Subject: [PATCH 22/88] [Localization] French Translations tiny settings batch (#4250) * Update settings.json * Update move.json --- src/locales/fr/move.json | 4 ++-- src/locales/fr/settings.json | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/move.json b/src/locales/fr/move.json index a48e17b3fd9..957895b5db9 100644 --- a/src/locales/fr/move.json +++ b/src/locales/fr/move.json @@ -364,8 +364,8 @@ "effect": "Le lanceur creuse au premier tour et frappe au second." }, "toxic": { - "name": "Fil Toxique", - "effect": "Tisse un fil imprégné de venin. Empoisonne la cible et baisse sa Vitesse." + "name": "Toxik", + "effect": "Le lanceur empoisonne gravement la cible. Les dégâts dus au poison augmentent à chaque tour." }, "confusion": { "name": "Choc Mental", diff --git a/src/locales/fr/settings.json b/src/locales/fr/settings.json index c752b336b6e..e310f5d5733 100644 --- a/src/locales/fr/settings.json +++ b/src/locales/fr/settings.json @@ -11,6 +11,10 @@ "expGainsSpeed": "Vit. barre d’Exp", "expPartyDisplay": "Afficher Exp équipe", "skipSeenDialogues": "Passer dialogues connus", + "eggSkip": "Animation d’éclosion", + "never": "Jamais", + "always": "Toujours", + "ask": "Demander", "battleStyle": "Style de combat", "enableRetries": "Activer les réessais", "hideIvs": "Masquer Scanner d’IV", From bdc7c95c1cfc0e9a3177cfadde2c1170e92f0268 Mon Sep 17 00:00:00 2001 From: innerthunder <168692175+innerthunder@users.noreply.github.com> Date: Sat, 14 Sep 2024 09:35:36 -0700 Subject: [PATCH 23/88] [Misc][AI] Fix KO filter not accounting for move conditions (#4245) * Only filter KO moves that won't fail * Add Last Resort enemy command test --- src/field/pokemon.ts | 5 ++++- src/test/enemy_command.test.ts | 41 +++++++++++++++++++++++++++++----- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 43a7090bff5..faae3b06ba0 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -4410,7 +4410,10 @@ export class EnemyPokemon extends Pokemon { const isCritical = move.hasAttr(CritOnlyAttr) || !!this.getTag(BattlerTagType.ALWAYS_CRIT); return move.category !== MoveCategory.STATUS - && moveTargets.some(p => p.getAttackDamage(this, move, !p.battleData.abilityRevealed, false, isCritical).damage >= p.hp); + && moveTargets.some(p => { + const doesNotFail = move.applyConditions(this, p, move) || [Moves.SUCKER_PUNCH, Moves.UPPER_HAND, Moves.THUNDERCLAP].includes(move.id); + return doesNotFail && p.getAttackDamage(this, move, !p.battleData.abilityRevealed, false, isCritical).damage >= p.hp; + }); }, this); if (koMoves.length > 0) { diff --git a/src/test/enemy_command.test.ts b/src/test/enemy_command.test.ts index 39b77845ea9..9a2caa56dfc 100644 --- a/src/test/enemy_command.test.ts +++ b/src/test/enemy_command.test.ts @@ -6,7 +6,7 @@ import { AiType, EnemyPokemon } from "#app/field/pokemon"; import { randSeedInt } from "#app/utils"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; -import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const TIMEOUT = 20 * 1000; const NUM_TRIALS = 300; @@ -36,22 +36,26 @@ describe("Enemy Commands - Move Selection", () => { phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); - game = new GameManager(phaserGame); - game.override.ability(Abilities.BALL_FETCH); }); afterEach(() => { game.phaseInterceptor.restoreOg(); }); + beforeEach(() => { + game = new GameManager(phaserGame); + + game.override + .ability(Abilities.BALL_FETCH) + .enemyAbility(Abilities.BALL_FETCH); + }); + it( "should never use Status moves if an attack can KO", async () => { game.override .enemySpecies(Species.ETERNATUS) .enemyMoveset([Moves.ETERNABEAM, Moves.SLUDGE_BOMB, Moves.DRAGON_DANCE, Moves.COSMIC_POWER]) - .enemyAbility(Abilities.BALL_FETCH) - .ability(Abilities.BALL_FETCH) .startingLevel(1) .enemyLevel(100); @@ -72,4 +76,31 @@ describe("Enemy Commands - Move Selection", () => { }); }, TIMEOUT ); + + it( + "should not select Last Resort if it would fail, even if the move KOs otherwise", + async () => { + game.override + .enemySpecies(Species.KANGASKHAN) + .enemyMoveset([Moves.LAST_RESORT, Moves.GIGA_IMPACT, Moves.SPLASH, Moves.SWORDS_DANCE]) + .startingLevel(1) + .enemyLevel(100); + + await game.classicMode.startBattle([Species.MAGIKARP]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + enemyPokemon.aiType = AiType.SMART_RANDOM; + + const moveChoices: MoveChoiceSet = {}; + const enemyMoveset = enemyPokemon.getMoveset(); + enemyMoveset.forEach(mv => moveChoices[mv!.moveId] = 0); + getEnemyMoveChoices(enemyPokemon, moveChoices); + + enemyMoveset.forEach(mv => { + if (mv?.getMove().category === MoveCategory.STATUS || mv?.moveId === Moves.LAST_RESORT) { + expect(moveChoices[mv.moveId]).toBe(0); + } + }); + }, TIMEOUT + ); }); From 763c1922fbad172e6c3d2b178aae9be5679b3267 Mon Sep 17 00:00:00 2001 From: flx-sta <50131232+flx-sta@users.noreply.github.com> Date: Sat, 14 Sep 2024 09:35:46 -0700 Subject: [PATCH 24/88] [Bug] Fix exp gains speed not applying properly (#4243) * update battle-info.ts * add: ExpGainsSpeed enum * address PR comments * add test coverage (exp gains speed) --------- Co-authored-by: Mr.WaterT Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/battle-scene.ts | 3 +- src/enums/exp-gains-speed.ts | 22 ++++++++++ src/phases/show-party-exp-bar-phase.ts | 3 +- src/test/ui/battle_info.test.ts | 55 ++++++++++++++++++++++++ src/test/utils/gameManager.ts | 3 +- src/test/utils/helpers/settingsHelper.ts | 10 +++++ src/test/utils/phaseInterceptor.ts | 4 +- src/ui/battle-info.ts | 9 +++- 8 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 src/enums/exp-gains-speed.ts create mode 100644 src/test/ui/battle_info.test.ts diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 9a7221d3fb3..516662617f1 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -105,6 +105,7 @@ import HeldModifierConfig from "#app/interfaces/held-modifier-config"; import { ExpPhase } from "#app/phases/exp-phase"; import { ShowPartyExpBarPhase } from "#app/phases/show-party-exp-bar-phase"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import { ExpGainsSpeed } from "./enums/exp-gains-speed"; export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1"; @@ -180,7 +181,7 @@ export default class BattleScene extends SceneBase { public experimentalSprites: boolean = false; public musicPreference: integer = 0; public moveAnimations: boolean = true; - public expGainsSpeed: integer = 0; + public expGainsSpeed: ExpGainsSpeed = ExpGainsSpeed.DEFAULT; public skipSeenDialogues: boolean = false; /** * Determines if the egg hatching animation should be skipped diff --git a/src/enums/exp-gains-speed.ts b/src/enums/exp-gains-speed.ts new file mode 100644 index 00000000000..964c4f99c70 --- /dev/null +++ b/src/enums/exp-gains-speed.ts @@ -0,0 +1,22 @@ +/** + * Defines the speed of gaining experience. + * + * @remarks + * The `expGainSpeed` can have several modes: + * - `0` - Default: The normal speed. + * - `1` - Fast: Fast speed. + * - `2` - Faster: Faster speed. + * - `3` - Skip: Skip gaining exp animation. + * + * @default 0 - Uses the default normal speed. + */ +export enum ExpGainsSpeed { + /** The normal speed. */ + DEFAULT, + /** Fast speed. */ + FAST, + /** Faster speed. */ + FASTER, + /** Skip gaining exp animation. */ + SKIP +} diff --git a/src/phases/show-party-exp-bar-phase.ts b/src/phases/show-party-exp-bar-phase.ts index 9e019b202a5..f1783e7715f 100644 --- a/src/phases/show-party-exp-bar-phase.ts +++ b/src/phases/show-party-exp-bar-phase.ts @@ -1,4 +1,5 @@ import BattleScene from "#app/battle-scene"; +import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; import { ExpNotification } from "#app/enums/exp-notification"; import { ExpBoosterModifier } from "#app/modifier/modifier"; import * as Utils from "#app/utils"; @@ -44,7 +45,7 @@ export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { } else { this.end(); } - } else if (this.scene.expGainsSpeed < 3) { + } else if (this.scene.expGainsSpeed < ExpGainsSpeed.SKIP) { this.scene.partyExpBar.showPokemonExp(pokemon, exp.value, false, newLevel).then(() => { setTimeout(() => this.end(), 500 / Math.pow(2, this.scene.expGainsSpeed)); }); diff --git a/src/test/ui/battle_info.test.ts b/src/test/ui/battle_info.test.ts new file mode 100644 index 00000000000..4d511b75e6f --- /dev/null +++ b/src/test/ui/battle_info.test.ts @@ -0,0 +1,55 @@ +import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; +import { Species } from "#app/enums/species"; +import { ExpPhase } from "#app/phases/exp-phase"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +vi.mock("../data/exp", ({}) => { + return { + getLevelRelExp: vi.fn(() => 1), //consistent levelRelExp + }; +}); + +describe("UI - Battle Info", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .moveset([Moves.GUILLOTINE, Moves.SPLASH]) + .battleType("single") + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.SPLASH) + .enemySpecies(Species.CATERPIE); + }); + + it.each([ExpGainsSpeed.FAST, ExpGainsSpeed.FASTER, ExpGainsSpeed.SKIP])( + "should increase exp gains animation by 2^%i", + async (expGainsSpeed) => { + game.settings.expGainsSpeed(expGainsSpeed); + vi.spyOn(Math, "pow"); + + await game.classicMode.startBattle([Species.CHARIZARD]); + + game.move.select(Moves.SPLASH); + await game.doKillOpponents(); + await game.phaseInterceptor.to(ExpPhase, true); + + expect(Math.pow).not.toHaveBeenCalledWith(2, expGainsSpeed); + } + ); +}); diff --git a/src/test/utils/gameManager.ts b/src/test/utils/gameManager.ts index a10ed70b97e..452956ab466 100644 --- a/src/test/utils/gameManager.ts +++ b/src/test/utils/gameManager.ts @@ -54,6 +54,7 @@ import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { expect } from "vitest"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { isNullOrUndefined } from "#app/utils"; +import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; /** * Class to manage the game state and transitions between phases. @@ -148,7 +149,7 @@ export default class GameManager { this.scene.gameSpeed = 5; this.scene.moveAnimations = false; this.scene.showLevelUpStats = false; - this.scene.expGainsSpeed = 3; + this.scene.expGainsSpeed = ExpGainsSpeed.SKIP; this.scene.expParty = ExpNotification.SKIP; this.scene.hpBarSpeed = 3; this.scene.enableTutorials = false; diff --git a/src/test/utils/helpers/settingsHelper.ts b/src/test/utils/helpers/settingsHelper.ts index 8fca2a34d47..c611a705107 100644 --- a/src/test/utils/helpers/settingsHelper.ts +++ b/src/test/utils/helpers/settingsHelper.ts @@ -1,6 +1,7 @@ import { PlayerGender } from "#app/enums/player-gender"; import { BattleStyle } from "#app/enums/battle-style"; import { GameManagerHelper } from "./gameManagerHelper"; +import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; /** * Helper to handle settings for tests @@ -38,6 +39,15 @@ export class SettingsHelper extends GameManagerHelper { this.log(`Gender set to: ${PlayerGender[gender]} (=${gender})` ); } + /** + * Change the exp gains speed + * @param speed the {@linkcode ExpGainsSpeed} to set + */ + expGainsSpeed(speed: ExpGainsSpeed) { + this.game.scene.expGainsSpeed = speed; + this.log(`Exp Gains Speed set to: ${ExpGainsSpeed[speed]} (=${speed})` ); + } + private log(...params: any[]) { console.log("Settings:", ...params); } diff --git a/src/test/utils/phaseInterceptor.ts b/src/test/utils/phaseInterceptor.ts index cdf0ad41057..46bb757c867 100644 --- a/src/test/utils/phaseInterceptor.ts +++ b/src/test/utils/phaseInterceptor.ts @@ -60,6 +60,7 @@ export interface PromptHandler { expireFn?: () => void; awaitingActionInput?: boolean; } +import { ExpPhase } from "#app/phases/exp-phase"; export default class PhaseInterceptor { public scene; @@ -127,7 +128,8 @@ export default class PhaseInterceptor { [MysteryEncounterRewardsPhase, this.startPhase], [PostMysteryEncounterPhase, this.startPhase], [ModifierRewardPhase, this.startPhase], - [PartyExpPhase, this.startPhase] + [PartyExpPhase, this.startPhase], + [ExpPhase, this.startPhase], ]; private endBySetMode = [ diff --git a/src/ui/battle-info.ts b/src/ui/battle-info.ts index c7b82dc826e..8e7e5bc4060 100644 --- a/src/ui/battle-info.ts +++ b/src/ui/battle-info.ts @@ -11,8 +11,11 @@ import { Stat } from "#enums/stat"; import BattleFlyout from "./battle-flyout"; import { WindowVariant, addWindow } from "./ui-theme"; import i18next from "i18next"; +import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; export default class BattleInfo extends Phaser.GameObjects.Container { + public static readonly EXP_GAINS_DURATION_BASE = 1650; + private baseY: number; private player: boolean; @@ -702,7 +705,11 @@ export default class BattleInfo extends Phaser.GameObjects.Container { instant = true; } const durationMultiplier = Phaser.Tweens.Builders.GetEaseFunction("Sine.easeIn")(1 - (Math.max(this.lastLevel - 100, 0) / 150)); - const duration = this.visible && !instant ? (((levelExp - this.lastLevelExp) / relLevelExp) * 1650) * durationMultiplier * levelDurationMultiplier : 0; + let duration = this.visible && !instant ? (((levelExp - this.lastLevelExp) / relLevelExp) * BattleInfo.EXP_GAINS_DURATION_BASE) * durationMultiplier * levelDurationMultiplier : 0; + const speed = (this.scene as BattleScene).expGainsSpeed; + if (speed && speed >= ExpGainsSpeed.DEFAULT) { + duration = speed >= ExpGainsSpeed.SKIP ? ExpGainsSpeed.DEFAULT : duration / Math.pow(2, speed); + } if (ratio === 1) { this.lastLevelExp = 0; this.lastLevel++; From 21c6c445a2519f44d15ed2b5ac2ff771d2c0b3b9 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 19:03:45 +0200 Subject: [PATCH 25/88] Update trash-to-treasure-dialogue.json --- .../trash-to-treasure-dialogue.json | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/locales/fr/mystery-encounters/trash-to-treasure-dialogue.json b/src/locales/fr/mystery-encounters/trash-to-treasure-dialogue.json index ae6e63ed800..ac6574969ed 100644 --- a/src/locales/fr/mystery-encounters/trash-to-treasure-dialogue.json +++ b/src/locales/fr/mystery-encounters/trash-to-treasure-dialogue.json @@ -1,19 +1,19 @@ { - "intro": "It's a massive pile of garbage!\nWhere did this come from?", + "intro": "C’est un énorme tas de déchets !\nComment il est arrivé là ?", "title": "Trash to Treasure", - "description": "The garbage heap looms over you, and you can spot some items of value buried amidst the refuse. Are you sure you want to get covered in filth to get them, though?", - "query": "What will you do?", + "description": "Un énorme tas d’ordures se dresse devant vos yeux, dans lequel vous arrivez à entrevoir quelques objets de valeur.\nPar contre, il faut que vous acceptiez l’idée de vous couvrir de saletés pour allez les récupérer…", + "query": "Que voulez-vous faire ?", "option": { "1": { - "label": "Dig for Valuables", - "tooltip": "(-) Lose Healing Items in Shops\n(+) Gain Amazing Items", - "selected": "You wade through the garbage pile, becoming mired in filth.$There's no way any respectable shopkeepers\nwill sell you anything in your grimy state!$You'll just have to make do without shop healing items.$However, you found some incredible items in the garbage!" + "label": "Chercher des trésors", + "tooltip": "(-) Aucun objet de soin en boutique\n(+) Gain d’objets exceptionnels", + "selected": "Vous barbotez dans le tas d’ordures et vous vous couvrez de crasse.$Vu votre état, il n’y a vraiment plus aucune chance qu’un vendeur accpete de vous vendre quoi que ce soit !$Vous aller devoir vous débrouiller sans objet de soin.$Mais ça valait le coup, car ce que vous avez trouvé\ndans les ordures est incroyable !" }, "2": { - "label": "Investigate Further", - "tooltip": "(?) Find the Source of the Garbage", - "selected": "You wander around the heap, searching for any indication as to how this might have appeared here...", - "selected_2": "Suddenly, the garbage shifts! It wasn't just garbage, it was a Pokémon!" + "label": "Enquêter", + "tooltip": "(?) Trouver la source des déchets", + "selected": "Vous vous baladez autour du tas, à la recherche du moindre indice sur comment ça a bien pu arriver ici…", + "selected_2": "Oh, un des déchets bouge !\nC’était pas un déchet, mais un Pokémon !" } } -} \ No newline at end of file +} From bc964a3398ada9a4d5de600e0a7f397d7fbd6fb9 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 19:16:03 +0200 Subject: [PATCH 26/88] Update berries-abound-dialogue.json --- src/locales/fr/mystery-encounters/berries-abound-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/berries-abound-dialogue.json b/src/locales/fr/mystery-encounters/berries-abound-dialogue.json index 127c022c76f..980abf3d052 100644 --- a/src/locales/fr/mystery-encounters/berries-abound-dialogue.json +++ b/src/locales/fr/mystery-encounters/berries-abound-dialogue.json @@ -6,7 +6,7 @@ "berries": "Des Baies !", "option": { "1": { - "label": "Combattre le Pokémon", + "label": "L’affronter", "tooltip": "(-) Combat difficile\n(+) Gain de Baies", "selected": "Vous approchez\nle Pokémon sans frémir." }, From 252fbe9839a3c2f9a154f7ace167a8eacb2b2c0a Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 19:20:47 +0200 Subject: [PATCH 27/88] Update uncommon-breed-dialogue.json --- .../uncommon-breed-dialogue.json | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json b/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json index e6f5b3d3fcd..7372a699608 100644 --- a/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json +++ b/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json @@ -1,26 +1,26 @@ { - "intro": "That isn't just an ordinary Pokémon!", - "title": "Uncommon Breed", - "description": "That {{enemyPokemon}} looks special compared to others of its kind. @[TOOLTIP_TITLE]{Perhaps it knows a special move?} You could battle and catch it outright, but there might also be a way to befriend it.", - "query": "What will you do?", + "intro": "C’est un Pokémon tout ce qu’il y a de plus banal !", + "title": "Une forme peu commune", + "description": "Ce {{enemyPokemon}} a l’air speical par rapport au reste de son espèce. @[TOOLTIP_TITLE]{Peut-être connait-il une capacté particulière ?} Vous pourriez décider de l’affronter sur-le-champ, mais il y a peut-être moyen d’en faire un nouvel ami.", + "query": "Que voulez-vous faire ?", "option": { "1": { - "label": "Battle the Pokémon", - "tooltip": "(-) Tricky Battle\n(+) Strong Catchable Foe", - "selected": "You approach the\n{{enemyPokemon}} without fear.", - "stat_boost": "The {{enemyPokemon}}'s heightened abilities boost its stats!" + "label": "L’affronter", + "tooltip": "(-) Combat compliqué\n(+) Capturer un adversaire puissant", + "selected": "Vous approchez\nle Pokémon sans frémir.", + "stat_boost": "Les caractéristiques particulières\nde ce {{enemyPokemon}} augumentent ses stats !" }, "2": { - "label": "Give It Food", - "disabled_tooltip": "You need 4 berry items to choose this", - "tooltip": "(-) Give 4 Berries\n(+) The {{enemyPokemon}} Likes You", - "selected": "You toss the berries at the {{enemyPokemon}}!$It eats them happily!$The {{enemyPokemon}} wants to join your party!" + "label": "Le nourrir", + "disabled_tooltip": "Vous avez besoin de 4 Baies pour chosir cette option", + "tooltip": "(-) Donner 4 Baies\n(+) Le {{enemyPokemon}} vous apprécie", + "selected": "Vous lancer quelques Baies\nau {{enemyPokemon}} !$Il les englouit avec joie !$Le {{enemyPokemon}} veut se joindre\nà votre équipe !" }, "3": { - "label": "Befriend It", - "disabled_tooltip": "Your Pokémon need to know certain moves to choose this", - "tooltip": "(+) {{option3PrimaryName}} uses {{option3PrimaryMove}}\n(+) The {{enemyPokemon}} Likes You", - "selected": "Your {{option3PrimaryName}} uses {{option3PrimaryMove}} to charm the {{enemyPokemon}}!$The {{enemyPokemon}} wants to join your party!" + "label": "Devenir amis", + "disabled_tooltip": "Votre Pokémon doit connaitre certaines capacités pour choisir cette option", + "tooltip": "(+) {{option3PrimaryName}} utilise {{option3PrimaryMove}}\n(+) Le {{enemyPokemon}} vous apprécie", + "selected": "Votre {{option3PrimaryName}} utilise {{option3PrimaryMove}} pour charmer le {{enemyPokemon}} !$The {{enemyPokemon}} veut se joindre\nà votre équipe !" } } -} \ No newline at end of file +} From c9be3b11a7b452852cf9fbeb62804e7e8ef9d36f Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 19:34:48 +0200 Subject: [PATCH 28/88] Update weird-dream-dialogue.json --- .../weird-dream-dialogue.json | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/locales/fr/mystery-encounters/weird-dream-dialogue.json b/src/locales/fr/mystery-encounters/weird-dream-dialogue.json index 44acde84002..d52dd2c8c82 100644 --- a/src/locales/fr/mystery-encounters/weird-dream-dialogue.json +++ b/src/locales/fr/mystery-encounters/weird-dream-dialogue.json @@ -1,22 +1,22 @@ { - "intro": "A shadowy woman blocks your path.\nSomething about her is unsettling...", - "speaker": "Woman", - "intro_dialogue": "I have seen your futures, your pasts...$Child, do you see them too?", + "intro": "Une femme aux l’airs sombres vous coupe la route.\nElle dégage comme une aura troublante…", + "speaker": "Femme mystérieuse", + "intro_dialogue": "J’ai tout vu…\nTes futurs, tes passés…$Les perçois-tu aussi, mon enfant ?", "title": "???", - "description": "The woman's words echo in your head. It wasn't just a singular voice, but a vast multitude, from all timelines and realities. You begin to feel dizzy, the question lingering on your mind...\n\n@[TOOLTIP_TITLE]{\"I have seen your futures, your pasts... Child, do you see them too?\"}", - "query": "What will you do?", + "description": "Les paroles de cette mystérieuse femme raisonnent dans votre tête. Ce n’est pas qu’une simple voix isolée, mais une infinité, d’une infinité d’espace-temps et de réalités. Vous commencez ressentir des vertiges à mesure que cette question s’empare de votre esprit…\n\n@[TOOLTIP_TITLE]{« J’ai tout vu… Tes futurs, tes passés… Les perçois-tu aussi, mon enfant ? »}", + "query": "Que voulez-vous faire ?", "option": { "1": { - "label": "\"I See Them\"", - "tooltip": "@[SUMMARY_GREEN]{(?) Affects your Pokémon}", - "selected": "Her hand reaches out to touch you,\nand everything goes black.$Then...@d{64} You see everything.\nEvery timeline, all your different selves,\n past and future.$Everything that has made you,\neverything you will become...@d{64}", - "cutscene": "You see your Pokémon,@d{32} converging from\nevery reality to become something new...@d{64}", - "dream_complete": "When you awaken, the woman - was it a woman or a ghost? - is gone...$.@d{32}.@d{32}.@d{32}$Your Pokémon team has changed...\nOr is it the same team you've always had?" + "label": "« Je les vois »", + "tooltip": "@[SUMMARY_GREEN]{(?) Affecte vos Pokémon}", + "selected": "Sa main s’approche de vous et vous touche.\nTout devient subitement sombre.$Puis enfin…@d{64} La lumière.\nChaque espace-temps. Chacune de vos incarnations.$Tout de qui a composé, compose\net composersa votre être…@d{64}", + "cutscene": "Vous percevez vos Pokémon,@d{32} convergeant de chaque\nde chaque réalité pour former quelque chose de nouveau…@d{64}", + "dream_complete": "Vous vous réveillez, mais la femme a disparu…\nOu bien n’etait-elle qu’une hallucination ?$.@d{32}.@d{32}.@d{32}$Les Pokémon de votre équipe ont changé…$Mais alors, comment peuvent-ils quand même vous sembler si familiers ?" }, "2": { - "label": "Quickly Leave", - "tooltip": "(-) Affects your Pokémon", - "selected": "You tear your mind from a numbing grip, and hastily depart.$When you finally stop to collect yourself, you check the Pokémon in your team.$For some reason, all of their levels have decreased!" + "label": "Partir en courant", + "tooltip": "(-) Affecte vos Pokémon", + "selected": "Vous parvenez à vous extraire de son emprise\net prenez vos jambes à votre cou.$Vous vous remettez de vos émotions et\nvérifiez si votre équipe va bien.$Mais pour une raison mystérieuse,\nils ont tous perdu des niveaux !" } } -} \ No newline at end of file +} From 1734b2a94cde1a497c7d64265395dc74cdc84982 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 19:35:21 +0200 Subject: [PATCH 29/88] Update weird-dream-dialogue.json --- src/locales/fr/mystery-encounters/weird-dream-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/weird-dream-dialogue.json b/src/locales/fr/mystery-encounters/weird-dream-dialogue.json index d52dd2c8c82..c2e2d45c620 100644 --- a/src/locales/fr/mystery-encounters/weird-dream-dialogue.json +++ b/src/locales/fr/mystery-encounters/weird-dream-dialogue.json @@ -1,5 +1,5 @@ { - "intro": "Une femme aux l’airs sombres vous coupe la route.\nElle dégage comme une aura troublante…", + "intro": "Une femme aux airs sombres vous coupe la route.\nElle dégage comme une aura troublante…", "speaker": "Femme mystérieuse", "intro_dialogue": "J’ai tout vu…\nTes futurs, tes passés…$Les perçois-tu aussi, mon enfant ?", "title": "???", From 262c517a1aad372ffb09c89121114ba7fedbd0db Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 19:38:52 +0200 Subject: [PATCH 30/88] Update uncommon-breed-dialogue.json --- src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json b/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json index 7372a699608..044c8646126 100644 --- a/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json +++ b/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json @@ -1,7 +1,7 @@ { "intro": "C’est un Pokémon tout ce qu’il y a de plus banal !", "title": "Une forme peu commune", - "description": "Ce {{enemyPokemon}} a l’air speical par rapport au reste de son espèce. @[TOOLTIP_TITLE]{Peut-être connait-il une capacté particulière ?} Vous pourriez décider de l’affronter sur-le-champ, mais il y a peut-être moyen d’en faire un nouvel ami.", + "description": "Ce {{enemyPokemon}} a l’air speical par rapport au reste de son espèce. @[TOOLTIP_TITLE]{Peut-être connait-il une capacité particulière ?} Vous pourriez décider de l’affronter sur-le-champ, mais il y a peut-être moyen d’en faire un nouvel ami.", "query": "Que voulez-vous faire ?", "option": { "1": { From d344c12adf4c067138bf1c96e00944844c5cbff2 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 19:43:00 +0200 Subject: [PATCH 31/88] Update mysterious-chest-dialogue.json --- .../fr/mystery-encounters/mysterious-chest-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/mysterious-chest-dialogue.json b/src/locales/fr/mystery-encounters/mysterious-chest-dialogue.json index bb5b64c3c1a..6f56d0bb5a2 100644 --- a/src/locales/fr/mystery-encounters/mysterious-chest-dialogue.json +++ b/src/locales/fr/mystery-encounters/mysterious-chest-dialogue.json @@ -1,7 +1,7 @@ { "intro": "Vous tombez sur…@d{32} un coffre ?", "title": "Un étrange coffre", - "description": "Un mangifique coffre orné est posé en travers du chemin. Il doit forcément contenir quelque chose… pas vrai ?", + "description": "Un mangifique coffre orné est posé en travers du chemin.\nIl doit forcément contenir quelque chose… pas vrai ?", "query": "Voulez-vous ouvrir le coffre ?", "option": { "1": { From f3093ba61b1b494344cd6f5a97b1f7414a8ab220 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 20:07:11 +0200 Subject: [PATCH 32/88] Update training-session-dialogue.json --- .../mystery-encounters/training-session-dialogue.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/locales/fr/mystery-encounters/training-session-dialogue.json b/src/locales/fr/mystery-encounters/training-session-dialogue.json index a0ec7ac5ea6..6e0e69660d7 100644 --- a/src/locales/fr/mystery-encounters/training-session-dialogue.json +++ b/src/locales/fr/mystery-encounters/training-session-dialogue.json @@ -1,8 +1,8 @@ { - "intro": "Vous tomber sur du matériel d’entrainement.", + "intro": "Vous tombez sur du matériel d’entrainement.", "title": "Session d’entrainement", - "description": "Ce matériel semble pouvoir être utilisé pour entrainer un membre de votre équipe ! Il existe plusieurs moyens avec lesquels vous pourriez entrainer votre Pokémon, comme en le faisant combattre le reste de votre équipe.", - "query": "Quel entrainement chosir ?", + "description": "Ce matériel semble pouvoir être utilisé pour entrainer un membre de votre équipe ! Il existe plusieurs moyens avec lesquels vous pourriez entrainer un Pokémon, comme en le faisant combattre le reste de votre équipe.", + "query": "Quel entrainement choisir ?", "invalid_selection": "Le Pokémon doit être en bonne santé.", "option": { "1": { @@ -12,7 +12,7 @@ }, "2": { "label": "Modéré", - "tooltip": "(-) Combat modérée\n(+) Modifie la nature du Pokémon", + "tooltip": "(-) Combat modéré\n(+) Modifie la nature du Pokémon", "select_prompt": "Sélectionnez la nature pour laquelle\nvotre Pokémon doit s’entrainer.", "finished": "{{selectedPokemon}} revient vers vous,\nl’air fatigué mais fier de lui !$Il a beaucoup changé et\nest devenu {{nature}} !" }, @@ -25,7 +25,7 @@ "4": { "label": "Partir", "tooltip": "(-) Aucune récompense", - "selected": "Oh la flemme, pas le temps de faire sport.\nAllons ailleurs." + "selected": "Oh la flemme, pas le temps de faire du sport.\nAllons ailleurs." }, "selected": "{{selectedPokemon}} va de l’autre côté\ndu terrain pour vous faire face…" }, From f73d9974b9132564fa0fc3f9a21fbc7f5bec665c Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 20:22:52 +0200 Subject: [PATCH 33/88] Update clowning-around-dialogue.json --- .../fr/mystery-encounters/clowning-around-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/mystery-encounters/clowning-around-dialogue.json b/src/locales/fr/mystery-encounters/clowning-around-dialogue.json index faf7a4249d6..cd606478fa3 100644 --- a/src/locales/fr/mystery-encounters/clowning-around-dialogue.json +++ b/src/locales/fr/mystery-encounters/clowning-around-dialogue.json @@ -3,14 +3,14 @@ "speaker": "Clown", "intro_dialogue": "T’as l’air clownesque, prépare-toi pour un combat magistral !$Je vais te montrer ce que sont les arts de la rue !", "title": "Bouffonneries", - "description": "Quelque chose semble louche. Ce Clown semble très motivé de vous provoquer en combat, mais dans quel but ?\n\nLe {{blacephalonName}} est très étrange, comme s’il possédait @[TOOLTIP_TITLE]{des types et un talent inhabituels.}", + "description": "Quelque chose semble louche. Ce Clown a l’air très motivé de vous provoquer en combat, mais dans quel but ?\n\nLe {{blacephalonName}} est très étrange, comme s’il possédait @[TOOLTIP_TITLE]{des types et un talent inhabituels.}", "query": "Que voulez-vous faire ?", "option": { "1": { "label": "Affronter le Clown", "tooltip": "(-) Combat étrange\n(?) Affecte les talents des Pokémon", "selected": "Vos Pokémon sont prêts pour cette performance pathétique !", - "apply_ability_dialogue": "Un spectacle sensationnel !\nVotre savoir-faire est en harmonie avec votre compétences !", + "apply_ability_dialogue": "Un spectacle sensationnel !\nVotre savoir-faire est en harmonie avec vos compétences !", "apply_ability_message": "Le Clown vous propose d’Échanger définitivement le talent d’un de vos Pokémon contre {{ability}} !", "ability_prompt": "Voulez-vous définitivement donner le talent {{ability}} à un Pokémon ?", "ability_gained": "@s{level_up_fanfare}{{chosenPokemon}} obtient le talent {{ability}} !" From ee9004ac85531220d08e8f1c8d65fd6aef523d38 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 20:25:31 +0200 Subject: [PATCH 34/88] Update shady-vitamin-dealer-dialogue.json --- .../fr/mystery-encounters/shady-vitamin-dealer-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json b/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json index 1b47c8341f1..9222de63e1b 100644 --- a/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json +++ b/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json @@ -1,7 +1,7 @@ { "intro": "Un homme en manteau noir vous aborde.", "speaker": "Dealer", - "intro_dialogue": ".@d{16}.@d{16}.@d{16}$J’ai de la bonne came, mais seulement si t’as les thunes.$Assure-toi quand même que tes Pokémon\npuissent encaisser.", + "intro_dialogue": ".@d{16}.@d{16}.@d{16}$J’ai de la bonne came pour toi, mais seulement si t’as les thunes.$Assure-toi quand même que tes Pokémon\npuissent encaisser.", "title": "Le Dealer d’Accélérateurs", "description": "L’homme ouvre son manteau et vous laisse apercevoir des Accélérateurs pour Pokémon. Le tarif qu’il annonce semble être une bonne affaire. Peut-être même un peu trop belle…\nIl vous laisse le choix entre deux offres.", "query": "Laquelle choisissez-vous ?", From 81752dd48d0bbf2c963d6362bc54e61a0a20efcc Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 20:27:08 +0200 Subject: [PATCH 35/88] Update shady-vitamin-dealer-dialogue.json --- .../fr/mystery-encounters/shady-vitamin-dealer-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json b/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json index 9222de63e1b..59ebc97b8e2 100644 --- a/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json +++ b/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json @@ -9,11 +9,11 @@ "option": { "1": { "label": "Offre douteuse", - "tooltip": "(-) Payer {{option1Money, money}}\n(-) Effets secondaires ?\n(+) Le Pokémon gagne 2 Accélérateurs au hasard" + "tooltip": "(-) Payer {{option1Money, money}}\n(-) Effets secondaires ?\n(+) Le Pokémon choisi gagne 2 Accélérateurs au hasard" }, "2": { "label": "Offre honnête", - "tooltip": "(-) Payer {{option2Money, money}}\n(+) le Pokémon choisi 2 Accélérateurs au hasard" + "tooltip": "(-) Payer {{option2Money, money}}\n(+) Le Pokémon choisi gagne 2 Accélérateurs au hasard" }, "3": { "label": "Partir", From 095c5a465a5e695140abae65a6815e26eeafccb8 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 20:27:38 +0200 Subject: [PATCH 36/88] Update src/locales/es/mystery-encounters/berries-abound-dialogue.json Co-authored-by: DanStevensonx <114961842+DanStevensonx@users.noreply.github.com> --- src/locales/es/mystery-encounters/berries-abound-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/es/mystery-encounters/berries-abound-dialogue.json b/src/locales/es/mystery-encounters/berries-abound-dialogue.json index 27ed9c13dba..152a564a0be 100644 --- a/src/locales/es/mystery-encounters/berries-abound-dialogue.json +++ b/src/locales/es/mystery-encounters/berries-abound-dialogue.json @@ -8,7 +8,7 @@ "1": { "label": "Enfréntate al Pokémon", "tooltip": "(-) Batalla Difícil\n(+) Obtén bayas", - "selected": "You approach the\nPokémon without fear." + "selected": "Te acercas al\nPokémon sin miedo." }, "2": { "label": "Corre hacia el arbusto", From 1816fb71e6dc8faa30e8c0bc1a1c54aa1d1cbfa7 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 20:27:47 +0200 Subject: [PATCH 37/88] Update src/locales/es/mystery-encounters/bug-type-superfan-dialogue.json Co-authored-by: DanStevensonx <114961842+DanStevensonx@users.noreply.github.com> --- .../bug-type-superfan-dialogue.json | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/locales/es/mystery-encounters/bug-type-superfan-dialogue.json b/src/locales/es/mystery-encounters/bug-type-superfan-dialogue.json index 5e4e8be90e7..6b88fb76723 100644 --- a/src/locales/es/mystery-encounters/bug-type-superfan-dialogue.json +++ b/src/locales/es/mystery-encounters/bug-type-superfan-dialogue.json @@ -1,38 +1,38 @@ { - "intro": "An unusual trainer with all kinds of Bug paraphernalia blocks your way!", - "intro_dialogue": "Hey, trainer! I'm on a mission to find the rarest Bug Pokémon in existence!$You must love Bug Pokémon too, right?\nEveryone loves Bug Pokémon!", - "title": "The Bug-Type Superfan", - "speaker": "Bug-Type Superfan", - "description": "The trainer prattles, not even waiting for a response...\n\nIt seems the only way to get out of this situation is by catching the trainer's attention!", - "query": "What will you do?", + "intro": "¡Un entrenador inusual con todo tipo de parafernalia de bichos bloquea tu camino!", + "intro_dialogue": "¡Hola, entrenador! ¡Estoy en una misión para encontrar el Pokémon Bicho más raro que existe!$¿A ti también te encantan los Pokémon Bicho, verdad? ¡A todos les encantan los Pokémon Bicho!", + "title": "El Superfan de los Pokémon Bicho", + "speaker": "Superfan de los Pokémon Bicho", + "description": "El entrenador parlotea, sin siquiera esperar una respuesta...\n\n¡Parece que la única forma de salir de esta situación es captando la atención del entrenador!", + "query": "¿Qué harás?", "option": { "1": { - "label": "Offer to Battle", - "tooltip": "(-) Challenging Battle\n(+) Teach a Pokémon a Bug Type Move", - "selected": "A challenge, eh?\nMy bugs are more than ready for you!" + "label": "Proponer a luchar", + "tooltip": "(-) Batalla Desafiante\n(+) Enseña un movimiento de tipo Bicho a un Pokémon", + "selected": "¿Un desafío, eh?\n¡Mis Pokémon Bicho están más que preparados para ti!" }, "2": { - "label": "Show Your Bug Types", - "tooltip": "(+) Receive a Gift Item", - "disabled_tooltip": "You need at least 1 Bug Type Pokémon on your team to select this.", - "selected": "You show the trainer all your Bug Type Pokémon...", - "selected_0_to_1": "Huh? You only have {{numBugTypes}}...$Guess I'm wasting my breath on someone like you...", - "selected_2_to_3": "Hey, you've got {{numBugTypes}} Bug Types!\nNot bad.$Here, this might help you on your journey to catch more!", - "selected_4_to_5": "What? You have {{numBugTypes}} Bug Types?\nNice!$You're not quite at my level, but I can see shades of myself in you!\n$Take this, my young apprentice!", - "selected_6": "Whoa! {{numBugTypes}} Bug Types!\n$You must love Bug Types almost as much as I do!$Here, take this as a token of our camaraderie!" + "label": "Muestra tus tipos Bicho", + "tooltip": "(+) ¡Recibe un objeto de regalo!", + "disabled_tooltip": "Necesitas al menos 1 Pokémon de tipo Bicho en tu equipo para seleccionar esto.", + "selected": "Le muestras al entrenador todos tus Pokémon de tipo Bicho...", + "selected_0_to_1": "¿Eh? Solo tienes {{numBugTypes}}...$Supongo que estoy perdiendo el tiempo con alguien como tú...", + "selected_2_to_3": "¡Oye, tienes {{numBugTypes}} Pokémon de tipo Bicho! No está mal.$Aquí, esto podría ayudarte en tu viaje para atrapar más.", + "selected_4_to_5": "¿Qué? ¿Tienes {{numBugTypes}} Bug Types?\nNice!$No estás a mi nivel, pero puedo ver destellos de mí en ti.$¡Toma esto, mi joven aprendiz!", + "selected_6": "¡Vaya! {{numBugTypes}}Pokémon de tipo Bicho!$¡Debes amar a los Pokémon de tipo Bicho casi tanto como yo!$Aquí, toma esto como un símbolo de nuestra camaradería." }, "3": { - "label": "Gift a Bug Item", - "tooltip": "(-) Give the trainer a {{requiredBugItems}}\n(+) Receive a Gift Item", - "disabled_tooltip": "You need to have a {{requiredBugItems}} to select this.", - "select_prompt": "Select an item to give.", - "invalid_selection": "Pokémon doesn't have that kind of item.", - "selected": "You hand the trainer a {{selectedItem}}.", - "selected_dialogue": "Whoa! A {{selectedItem}}, for me?\nYou're not so bad, kid!$As a token of my appreciation,\nI want you to have this special gift!$It's been passed all through my family, and now I want you to have it!" + "label": "Regala un objeto de tipo Bicho", + "tooltip": "(-) Dale al entrenador un {{requiredBugItems}}\n(+) Recibe un item de regalo", + "disabled_tooltip": "Necesitas tener un {{requiredBugItems}} para seleccionar esto.", + "select_prompt": "Selecciona un objeto para dar", + "invalid_selection": "El Pokémon no tiene ese tipe de objeto.", + "selected": "Le entregas al entrenador un{{selectedItem}}.", + "selected_dialogue": "¡Vaya! ¿Un {{selectedItem}}, para mí? ¡No eres tan malo, chico!$Como muestra de mi agradecimiento, quiero que tengas este regalo especial.$Ha pasado por toda mi familia, y ahora quiero que lo tengas tú." } }, - "battle_won": "Your knowledge and skill were perfect at exploiting our weaknesses!$In exchange for the valuable lesson,\nallow me to teach one of your Pokémon a Bug Type Move!", - "teach_move_prompt": "Select a move to teach a Pokémon.", - "confirm_no_teach": "You sure you don't want to learn one of these great moves?", - "outro": "I see great Bug Pokémon in your future!\nMay our paths cross again!$Bug out!" + "battle_won": "¡Tu conocimiento y habilidad fueron perfectos para explotar nuestras debilidades!$A cambio de la valiosa lección, permíteme enseñarle a uno de tus Pokémon un movimiento de tipo Bicho.", + "teach_move_prompt": "Selecciona un movimiento para enseñar a un Pokémon.", + "confirm_no_teach": "¿Estás seguro de que no quieres aprender uno de estos excellentes movimientos?", + "outro": "¡Veo grandes Pokémon de tipo Bicho en tu futuro! ¡Que nuestros caminos se crucen de nuevo! ¡Bicho fuera!" } From 1ff1f40aa9aeaf53ffd282497f8ac8ca09197cc9 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 20:28:37 +0200 Subject: [PATCH 38/88] Update shady-vitamin-dealer-dialogue.json --- .../fr/mystery-encounters/shady-vitamin-dealer-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json b/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json index 59ebc97b8e2..5c5972d7b1c 100644 --- a/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json +++ b/src/locales/fr/mystery-encounters/shady-vitamin-dealer-dialogue.json @@ -1,7 +1,7 @@ { "intro": "Un homme en manteau noir vous aborde.", "speaker": "Dealer", - "intro_dialogue": ".@d{16}.@d{16}.@d{16}$J’ai de la bonne came pour toi, mais seulement si t’as les thunes.$Assure-toi quand même que tes Pokémon\npuissent encaisser.", + "intro_dialogue": ".@d{16}.@d{16}.@d{16}$J’ai de la bonne came pour toi, mais seulement\nsi t’as les thunes.$Assure-toi quand même que tes Pokémon\npuissent encaisser.", "title": "Le Dealer d’Accélérateurs", "description": "L’homme ouvre son manteau et vous laisse apercevoir des Accélérateurs pour Pokémon. Le tarif qu’il annonce semble être une bonne affaire. Peut-être même un peu trop belle…\nIl vous laisse le choix entre deux offres.", "query": "Laquelle choisissez-vous ?", From 5e0d46a03f6933470b89073df437758987c78f4c Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 20:41:41 +0200 Subject: [PATCH 39/88] Update fight-or-flight-dialogue.json --- .../fr/mystery-encounters/fight-or-flight-dialogue.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locales/fr/mystery-encounters/fight-or-flight-dialogue.json b/src/locales/fr/mystery-encounters/fight-or-flight-dialogue.json index 03452d12667..d5c6bb7513d 100644 --- a/src/locales/fr/mystery-encounters/fight-or-flight-dialogue.json +++ b/src/locales/fr/mystery-encounters/fight-or-flight-dialogue.json @@ -1,14 +1,14 @@ { "intro": "Quelque chose d’une lueur éclatante\nbrille sur sol près de ce Pokémon !", "title": "Voler ou s’envoler", - "description": "Un puissant Pokémon semble monter la garde d’un objet. Vous pourriez aller frontalement au combat, mais il a l’air costaud. Le bon Pokémon pourrait peut-être voler l’objet sans se faire prendre ?", + "description": "Un puissant Pokémon semble monter la garde d’un objet. Vous pourriez aller frontalement au combat, mais il a l’air costaud. Avec le bon Pokémon, vous pourriez peut-être voler l’objet sans vous faire prendre ?", "query": "Que voulez-vous faire ?", "option": { "1": { - "label": "Affronter le Pokémon", + "label": "L’affronter", "tooltip": "(-) Combat difficile\n(+) Nouvel objet", "selected": "Vous approchez\nle Pokémon sans frémir.", - "stat_boost": "Les forces dormantes du {{enemyPokemon}} augmentent une de ses stats !" + "stat_boost": "Les forces dormantes de {{enemyPokemon}}\naugmentent une de ses stats !" }, "2": { "label": "Voler l’objet", From 932ed48eaa5374b357ccef517b85cb7cb03d2a5a Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 20:46:19 +0200 Subject: [PATCH 40/88] Update fun-and-games-dialogue.json --- src/locales/fr/mystery-encounters/fun-and-games-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json b/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json index 55f4e75502a..cda660393c4 100644 --- a/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json +++ b/src/locales/fr/mystery-encounters/fun-and-games-dialogue.json @@ -2,7 +2,7 @@ "intro_dialogue": "Approchez mesdames et messieurs !$Tentez votre chance au tout nouveau\nRipost-o-matic de {{wobbuffetName}} !", "speaker": "Animateur", "title": "Du rire et des jeux !", - "description": "Vous rencontrez un forain avec une mailloche ! Vous disposez de @[TOOLTIP_TITLE]{3 tours} pour amener {{wobbuffetName}} le plus près possible de @[TOOLTIP_TITLE]{1 PV} pour ainsi charger la Riposte la plus puissante possible sur la cloche de la machine, @[TOOLTIP_TITLE]{sans le mettre K.O.} .\nMais attention ! Si {{wobbuffetName}} est mis K.O., vous devrez payer pour le ranimer !", + "description": "Vous rencontrez un forain avec une mailloche ! Vous disposez de @[TOOLTIP_TITLE]{3 tours} pour amener {{wobbuffetName}} le plus près possible de @[TOOLTIP_TITLE]{1 PV} pour ainsi charger la Riposte la plus puissante possible, @[TOOLTIP_TITLE]{sans le mettre K.O.} .\nMais attention ! Si {{wobbuffetName}} est mis K.O., vous devrez payer pour le ranimer !", "query": "Voulez-vous jouer ?", "option": { "1": { From 35e2a301249a1165dc0bb1a5065f0e5f258908a6 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 20:58:33 +0200 Subject: [PATCH 41/88] Update part-timer-dialogue.json --- .../part-timer-dialogue.json | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/locales/fr/mystery-encounters/part-timer-dialogue.json b/src/locales/fr/mystery-encounters/part-timer-dialogue.json index 93b3ee950c1..4867c42c0ed 100644 --- a/src/locales/fr/mystery-encounters/part-timer-dialogue.json +++ b/src/locales/fr/mystery-encounters/part-timer-dialogue.json @@ -1,31 +1,31 @@ { - "intro": "Un Ouvrier coulant sous les tâches vous interpelle.", - "speaker": "Ouvrier", - "intro_dialogue": "T’as l’air d’avoir pas mal de Pokémon compétents avec toi !$Si tu acceptes de nous aider pour quelques tâches, on peut te payer !", + "intro": "Un Ouvrière croulant sous le travail\nvous interpelle.", + "speaker": "Ouvrière", + "intro_dialogue": "T’as l’air d’avoir pas mal de Pokémon compétents\navec toi !$Si t’acceptes de nous aider pour quelques tâches,\non peut te payer !", "title": "L’intérimaire", - "description": "La liste de tâches à effectuer a l’air incroyablement longue. En fonction des compétences de vos Pokémon à une tâche donnée, vous gagnerez plus ou moins d’argent.", + "description": "La liste de tâches à effectuer a l’air incroyablement longue.\nEn fonction des compétences du Pokémon choisi à une tâche donnée, vous gagnerez plus ou moins d’argent.", "query": "Quel poste vous intéresse le plus ?", "invalid_selection": "Le Pokémon doit être en bonne santé.", "option": { "1": { "label": "Livreur", - "tooltip": "(-) Votre Pokémon utilise sa Vitesse\n(+) Payé @[MONEY]{Money}", - "selected": "Votre {{selectedPokemon}} passe tout un shift à livrer des clients." + "tooltip": "(-) Votre Pokémon utilise sa Vitesse\n(+) Payé avec un @[MONEY]{salaire}", + "selected": "Votre {{selectedPokemon}} passe tout un shift\nà livrer des clients." }, "2": { "label": "Manutentionnaire", - "tooltip": "(-) Votre Pokémon utilise sa Force et son Endurance\n(+) Payé @[MONEY]{Money}", - "selected": "Votre {{selectedPokemon}} passe tout un shift à porter des charges à travers le hangar." + "tooltip": "(-) Votre Pokémon utilise sa Force et son Endurance\n(+) Payé avec un @[MONEY]{salaire}", + "selected": "Votre {{selectedPokemon}} passe tout un shift\nà porter des charges à travers le hangar." }, "3": { "label": "Assistant vendeur", - "tooltip": "(-) Votre {{option3PrimaryName}} utilise {{option3PrimaryMove}}\n(+) Payé @[MONEY]{Money}", + "tooltip": "(-) Votre {{option3PrimaryName}} utilise {{option3PrimaryMove}}\n(+) Payé avec un @[MONEY]{salaire}", "disabled_tooltip": "Votre Pokémon doit connaitre certaines capacités pour choisir ce poste", "selected": "Votre {{option3PrimaryName}} passe sa journée à utiliser {{option3PrimaryMove}} pour attirer des clients !" } }, - "job_complete_good": "Merci pour votre aide !\nVotre {{selectedPokemon}} a été d’une grande aide !$Voici votre paye.", - "job_complete_bad": "Votre {{selectedPokemon}} nous a plutot bien aidé !$Voici votre paye.", + "job_complete_good": "Merci pour votre aide !\nVotre {{selectedPokemon}} nous a été d’un grand renfort !$Voici votre salaire.", + "job_complete_bad": "Votre {{selectedPokemon}} nous a plutot bien aidé !$Voici votre salaire.", "pokemon_tired": "Votre {{selectedPokemon}} est épuisé !\nLes PP de toutes ses capacités baissent de 2 !", "outro": "Reviens nous aider à l’occasion !" } From ed7c41da88621836782830173814075d11f00cd1 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 21:10:46 +0200 Subject: [PATCH 42/88] Update the-pokemon-salesman-dialogue.json --- .../the-pokemon-salesman-dialogue.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/locales/fr/mystery-encounters/the-pokemon-salesman-dialogue.json b/src/locales/fr/mystery-encounters/the-pokemon-salesman-dialogue.json index 6891653ef4d..401678490fe 100644 --- a/src/locales/fr/mystery-encounters/the-pokemon-salesman-dialogue.json +++ b/src/locales/fr/mystery-encounters/the-pokemon-salesman-dialogue.json @@ -1,18 +1,18 @@ { "intro": "Un homme âgé a l’air malicieux vous aborde.", "speaker": "Gentleman", - "intro_dialogue": "Salutations ! J’ai une offre à proposer juste pour VOUS !", + "intro_dialogue": "Salutations !\nJ’ai une offre à proposer rien qu’à VOUS !", "title": "Le vendeur de Pokémon", - "description": "« Ce {{purchasePokemon}} incroyable et unique possède un talent unique parmi toute son espèce ! Ce superbe {{purchasePokemon}} est à vous pour le prix imbattable de {{price, money}} ! »\n\n« Qu’en dites vous ? »", - "description_shiny": "« Ce {{purchasePokemon}} incroyable et unique possède une pigmentation unique parmi toute son espèce ! Ce superbe {{purchasePokemon}} est à vous pour le prix imbattable de {{price, money}} ! »\n\n« Qu’en dites vous ? »", + "description": "« Cet incroyable et unique {{purchasePokemon}} possède un talent jamais vu dans son espèce ! Ce superbe {{purchasePokemon}} est à vous pour le prix imbattable de {{price, money}} ! »\n\n« Qu’en dites-vous ? »", + "description_shiny": "« Cet incroyable et unique {{purchasePokemon}} possède une pigmentation unique jamais vue dans son espèce ! Ce superbe {{purchasePokemon}} est à vous pour le prix imbattable de {{price, money}} ! »\n\n« Qu’en dites-vous ? »", "query": "Que voulez-vous faire ?", "option": { "1": { "label": "Accepter", "tooltip": "(-) Payer {{price, money}}\n(+) {{purchasePokemon}} obtenu avec son talent caché", "tooltip_shiny": "(-) Payer {{price, money}}\n(+) {{purchasePokemon}} chromatique obtenu", - "selected_message": "Vous payez une somme absolument honteuse pour acheter ce {{purchasePokemon}}.", - "selected_dialogue": "Excellent choix !$Vous avez pour sûr un sens aiguisé des affaires.$Oh, ah euh…@d{64} Ni repris, ni échangé par contre hein, compris ?" + "selected_message": "Vous déboursez une somme absolument honteuse\npour acheter ce {{purchasePokemon}}.", + "selected_dialogue": "Excellent choix !\nVous avez pour sûr un sens aiguisé des affaires.$Oh, ah euh…@d{64}\nNi repris, ni échangé par contre hein, compris ?" }, "2": { "label": "Refuser", From b956843258433de783a835f51c71725bbe2fe107 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 21:16:43 +0200 Subject: [PATCH 43/88] Update department-store-sale-dialogue.json --- .../department-store-sale-dialogue.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/locales/fr/mystery-encounters/department-store-sale-dialogue.json b/src/locales/fr/mystery-encounters/department-store-sale-dialogue.json index 43ef57ba549..cb1763c6015 100644 --- a/src/locales/fr/mystery-encounters/department-store-sale-dialogue.json +++ b/src/locales/fr/mystery-encounters/department-store-sale-dialogue.json @@ -1,27 +1,27 @@ { "intro": "Il y a une dame avec des tas de sacs de courses.", "speaker": "Cliente", - "intro_dialogue": "Bonjour !\nToi aussi t’es là pour les incroyables promos ?$Il y a un coupon spécial que tu peux utiliser en échange\nd’un objet gratuit pendant toute la durée de la promo !$J’en ai un en trop.\nTiens, prends-le!", + "intro_dialogue": "Bonjour !\nToi aussi t’es là pour les incroyables promos ?$Il y a un coupon spécial que tu peux utiliser en échange\nd’un objet gratuit pendant toute la durée de la promo !$J’en ai un en trop.\nTiens, prends-le !", "title": "Promos au Centre Commercial", "description": "Vous voyez des produits où que vous regardez ! Il y a 4 comptoirs auprès desquels vous pouvez dépenser ce coupon contre une grande variété d’objets. Que de choix !", "query": "À quel comptoir se rendre ?", "option": { "1": { - "label": "Comptoir de CT", + "label": "CT", "tooltip": "(+) Boutique de CT" }, "2": { - "label": "Comptoir de Vitamines", - "tooltip": "(+) Boutique de Vitamines" + "label": "Accélérateurs", + "tooltip": "(+) Boutique d’Accélérateurs" }, "3": { - "label": "Comptoir d’Objets de Combat", + "label": "Objets de Combat", "tooltip": "(+) Boutique d’objets de boost" }, "4": { - "label": "Comptoir de Poké Balls", + "label": "Poké Balls", "tooltip": "(+) Boutique de Poké Balls" } }, - "outro": "Quelle affaire ! Vous devriez revenir y faire vos achats plus souvent." + "outro": "Quelle affaire !\nVous devriez revenir y faire vos achats plus souvent." } From 5b2e5c6f0fb87062fd7e2420a1b2d661b295380f Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 21:21:43 +0200 Subject: [PATCH 44/88] Update berries-abound-dialogue.json --- .../fr/mystery-encounters/berries-abound-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/mystery-encounters/berries-abound-dialogue.json b/src/locales/fr/mystery-encounters/berries-abound-dialogue.json index 980abf3d052..e97519b88a1 100644 --- a/src/locales/fr/mystery-encounters/berries-abound-dialogue.json +++ b/src/locales/fr/mystery-encounters/berries-abound-dialogue.json @@ -1,7 +1,7 @@ { "intro": "Il y a un gros buisson à Baies\nprès de ce Pokémon !", "title": "Baies à gogo", - "description": "Un Pokémon a l’air de monter la garde sur ce buissons à Baies. Vous pourriez aller frontalement au combat, mais il a l’air costaud. Un Pokémon rapide pourrait peut-être en attraper quelques-unes sans se faire prendre ?", + "description": "Un Pokémon a l’air de monter la garde de ce buisson à Baies. Vous pourriez aller frontalement au combat, mais il a l’air costaud. Un Pokémon rapide pourrait peut-être en attraper quelques-unes sans se faire prendre ?", "query": "Que voulez-vous faire ?", "berries": "Des Baies !", "option": { @@ -19,7 +19,7 @@ }, "3": { "label": "Partir", - "tooltip": "(-) Aucun récompense", + "tooltip": "(-) Aucune récompense", "selected": "Vous renoncez à ce Pokémon avec\nson butin et continuez votre route." } } From 41e9cf3a781438d3a64c14d4b53e166d9f68ea34 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 21:34:32 +0200 Subject: [PATCH 45/88] Update teleporting-hijinks-dialogue.json --- .../fr/mystery-encounters/teleporting-hijinks-dialogue.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/locales/fr/mystery-encounters/teleporting-hijinks-dialogue.json b/src/locales/fr/mystery-encounters/teleporting-hijinks-dialogue.json index 45266cf55cc..7a819f0bb37 100644 --- a/src/locales/fr/mystery-encounters/teleporting-hijinks-dialogue.json +++ b/src/locales/fr/mystery-encounters/teleporting-hijinks-dialogue.json @@ -11,17 +11,17 @@ }, "2": { "label": "Un Pokémon à l’aide", - "tooltip": "(-) {{option2PrimaryName}} aide\n(+) Gain d’Exp pour {{option2PrimaryName}}\n(?) Téléportation vers un nouveau biome", + "tooltip": "(-) {{option2PrimaryName}} vous aide\n(+) Gain d’Exp pour {{option2PrimaryName}}\n(?) Téléportation vers un nouveau biome", "disabled_tooltip": "Vous avez besoin d’un Pokémon de type Électrik ou Acier pour choisir cette option", "selected": "Le type de {{option2PrimaryName}} vous permet de frauder la machine !$La capsule s’ouvre et y pénétrez…" }, "3": { "label": "Inspecter la machine", "tooltip": "(-) Combat Pokémon", - "selected": "Tous ces bruits et lumières clignotantes\némis par la machine titillent vos sens…$Mais vous manquez d’apercevoir un Pokémon\nsauvage et vous tend une embuscade !" + "selected": "Tous ces bruits et lumières clignotantes\némis par la machine titillent vos sens…$Mais vous manquez d’apercevoir un Pokémon\nsauvage et qui tend une embuscade !" } }, - "transport": "La machine vibre violemment,\nen émattant toutes sortes de bruits !$À peine la machine lancée, elle redevient soudainement très silencieuse.", + "transport": "Elle vibre violemment, émettant\ntoutes sortes de bruits !$À peine la machine lancée, elle redevient\nsubitement très silencieuse…", "attacked": "Vous en ressortez en un lieu complètement nouveau, effrayant au passage un Pokémon sauvage !$Le Pokémon sauvage vous attaque !", "boss_enraged": "Le {{enemyPokemon}} ennemi s’énerve !" } From 8ef6e023c3a27f662239beaa32fdb648c0d461b4 Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Sat, 14 Sep 2024 21:36:50 +0200 Subject: [PATCH 46/88] Teil2 --- .../a-trainers-test-dialogue.json | 54 +++++++++--------- .../absolute-avarice-dialogue.json | 30 +++++----- .../bug-type-superfan-dialogue.json | 56 +++++++++---------- .../clowning-around-dialogue.json | 47 ++++++++-------- .../department-store-sale-dialogue.json | 26 ++++----- .../fiery-fallout-dialogue.json | 32 +++++------ .../global-trade-system-dialogue.json | 40 ++++++------- .../lost-at-sea-dialogue.json | 36 ++++++------ .../part-timer-dialogue.json | 42 +++++++------- .../slumbering-snorlax-dialogue.json | 30 +++++----- .../the-strong-stuff-dialogue.json | 26 ++++----- .../the-winstrate-challenge-dialogue.json | 28 +++++----- .../trash-to-treasure-dialogue.json | 22 ++++---- src/overrides.ts | 36 ++++++------ 14 files changed, 253 insertions(+), 252 deletions(-) diff --git a/src/locales/de/mystery-encounters/a-trainers-test-dialogue.json b/src/locales/de/mystery-encounters/a-trainers-test-dialogue.json index c96c0d5f327..94571efdfb6 100644 --- a/src/locales/de/mystery-encounters/a-trainers-test-dialogue.json +++ b/src/locales/de/mystery-encounters/a-trainers-test-dialogue.json @@ -1,47 +1,47 @@ { - "intro": "An extremely strong trainer approaches you...", + "intro": "Ein sehr starker Trainer kommt auf dich zu...", "buck": { - "intro_dialogue": "Yo, trainer! My name's Buck.$I have a super awesome proposal\nfor a strong trainer such as yourself!$I'm carrying two rare Pokémon Eggs with me,\nbut I'd like someone else to care for one.$If you can prove your strength as a trainer to me,\nI'll give you the rarer egg!", - "accept": "Whoooo, I'm getting fired up!", - "decline": "Darn, it looks like your\nteam isn't in peak condition.$Here, let me help with that." + "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": "Hello, my name's Cheryl.$I have a particularly interesting request,\nfor a strong trainer such as yourself.$I'm carrying two rare Pokémon Eggs with me,\nbut I'd like someone else to care for one.$If you can prove your strength as a trainer to me,\nI'll give you the rarer Egg!", - "accept": "I hope you're ready!", - "decline": "I understand, it looks like your team\nisn't in the best condition at the moment.$Here, let me help with that." + "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} I'm Marley.$I have an offer for you...$I'm carrying two Pokémon Eggs with me,\nbut I'd like someone else to care for one.$If you're stronger than me,\nI'll give you the rarer Egg.", - "accept": "... I see.", - "decline": "... I see.$Your Pokémon look hurt...\nLet me help." + "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! I'm Mira!$Mira has a request\nfor a strong trainer like you!$Mira has two rare Pokémon Eggs,\nbut Mira wants someone else to take one!$If you show Mira that you're strong,\nMira will give you the rarer Egg!", - "accept": "You'll battle Mira?\nYay!", - "decline": "Aww, no battle?\nThat's okay!$Here, Mira will heal your team!" + "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": "I'm Riley.$I have an odd proposal\nfor a strong trainer such as yourself.$I'm carrying two rare Pokémon Eggs with me,\nbut I'd like to give one to another trainer.$If you can prove your strength to me,\nI'll give you the rarer Egg!", - "accept": "That look you have...\nLet's do this.", - "decline": "I understand, your team looks beat up.$Here, let me help with that." + "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": "A Trainer's Test", - "description": "It seems this trainer is willing to give you an Egg regardless of your decision. However, if you can manage to defeat this strong trainer, you'll receive a much rarer Egg.", - "query": "What will you do?", + "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": "Accept the Challenge", - "tooltip": "(-) Tough Battle\n(+) Gain a @[TOOLTIP_TITLE]{Very Rare Egg}" + "label": "Die Herausforderung annehmen", + "tooltip": "(-) Schwerer Kampf\n(+) Erhalte ein @[TOOLTIP_TITLE]{Sehr seltenes Ei}" }, "2": { - "label": "Refuse the Challenge", - "tooltip": "(+) Full Heal Party\n(+) Gain an @[TOOLTIP_TITLE]{Egg}" + "label": "Die Herausforderung ablehnen", + "tooltip": "(+) Team wird geheilt\n(+) Erhalte ein @[TOOLTIP_TITLE]{Ei}" } }, "eggTypes": { - "rare": "a Rare Egg", - "epic": "an Epic Egg", - "legendary": "a Legendary Egg" + "rare": "seltenes Ei", + "epic": "episches Ei", + "legendary": "legendäres Ei" }, - "outro": "{{statTrainerName}} gave you {{eggType}}!" + "outro": "{{statTrainerName}} gibt dir ein {{eggType}}!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/absolute-avarice-dialogue.json b/src/locales/de/mystery-encounters/absolute-avarice-dialogue.json index 1d675d93660..eb4d06fc527 100644 --- a/src/locales/de/mystery-encounters/absolute-avarice-dialogue.json +++ b/src/locales/de/mystery-encounters/absolute-avarice-dialogue.json @@ -1,25 +1,25 @@ { - "intro": "A {{greedentName}} ambushes you\nand steals your party's berries!", - "title": "Absolute Avarice", - "description": "The {{greedentName}} has caught you totally off guard now all your berries are gone!\n\nThe {{greedentName}} looks like it's about to eat them when it pauses to look at you, interested.", - "query": "What will you do?", + "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": "Battle It", - "tooltip": "(-) Tough Battle\n(+) Rewards from its Berry Hoard", - "selected": "The {{greedentName}} stuffs its cheeks\nand prepares for battle!", - "boss_enraged": "{{greedentName}}'s fierce love for food has it incensed!", - "food_stash": "It looks like the {{greedentName}} was guarding an enormous stash of food!$@s{item_fanfare}Each Pokémon in your party gains a {{foodReward}}!" + "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": "Reason with It", - "tooltip": "(+) Regain Some Lost Berries", - "selected": "Your pleading strikes a chord with the {{greedentName}}.$It doesn't give all your berries back, but still tosses a few in your direction." + "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": "Let It Have the Food", - "tooltip": "(-) Lose All Berries\n(?) The {{greedentName}} Will Like You", - "selected": "The {{greedentName}} devours the entire\nstash of berries in a flash!$Patting its stomach,\nit looks at you appreciatively.$Perhaps you could feed it\nmore berries on your adventure...$@s{level_up_fanfare}The {{greedentName}} wants to join your party!" + "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!" } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/bug-type-superfan-dialogue.json b/src/locales/de/mystery-encounters/bug-type-superfan-dialogue.json index 5e4e8be90e7..b88be8ee970 100644 --- a/src/locales/de/mystery-encounters/bug-type-superfan-dialogue.json +++ b/src/locales/de/mystery-encounters/bug-type-superfan-dialogue.json @@ -1,38 +1,38 @@ { - "intro": "An unusual trainer with all kinds of Bug paraphernalia blocks your way!", - "intro_dialogue": "Hey, trainer! I'm on a mission to find the rarest Bug Pokémon in existence!$You must love Bug Pokémon too, right?\nEveryone loves Bug Pokémon!", - "title": "The Bug-Type Superfan", - "speaker": "Bug-Type Superfan", - "description": "The trainer prattles, not even waiting for a response...\n\nIt seems the only way to get out of this situation is by catching the trainer's attention!", - "query": "What will you do?", + "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": "Offer to Battle", - "tooltip": "(-) Challenging Battle\n(+) Teach a Pokémon a Bug Type Move", - "selected": "A challenge, eh?\nMy bugs are more than ready for you!" + "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": "Show Your Bug Types", - "tooltip": "(+) Receive a Gift Item", - "disabled_tooltip": "You need at least 1 Bug Type Pokémon on your team to select this.", - "selected": "You show the trainer all your Bug Type Pokémon...", - "selected_0_to_1": "Huh? You only have {{numBugTypes}}...$Guess I'm wasting my breath on someone like you...", - "selected_2_to_3": "Hey, you've got {{numBugTypes}} Bug Types!\nNot bad.$Here, this might help you on your journey to catch more!", - "selected_4_to_5": "What? You have {{numBugTypes}} Bug Types?\nNice!$You're not quite at my level, but I can see shades of myself in you!\n$Take this, my young apprentice!", - "selected_6": "Whoa! {{numBugTypes}} Bug Types!\n$You must love Bug Types almost as much as I do!$Here, take this as a token of our camaraderie!" + "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}} Käfer-Pokémon! Nicht schlecht.$Hier, das könnte dir auf deiner Reise helfen, mehr zu fangen!", + "selected_4_to_5": "Was? Du hast {{numBugTypes}} Käfer-Pokémon? 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}} Käfer-Pokémon!$Du musst Käfer-Pokémon fast so sehr lieben wie ich!$Hier, nimm das als Zeichen unserer Kameradschaft!" }, "3": { - "label": "Gift a Bug Item", - "tooltip": "(-) Give the trainer a {{requiredBugItems}}\n(+) Receive a Gift Item", - "disabled_tooltip": "You need to have a {{requiredBugItems}} to select this.", - "select_prompt": "Select an item to give.", - "invalid_selection": "Pokémon doesn't have that kind of item.", - "selected": "You hand the trainer a {{selectedItem}}.", - "selected_dialogue": "Whoa! A {{selectedItem}}, for me?\nYou're not so bad, kid!$As a token of my appreciation,\nI want you to have this special gift!$It's been passed all through my family, and now I want you to have it!" + "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": "Your knowledge and skill were perfect at exploiting our weaknesses!$In exchange for the valuable lesson,\nallow me to teach one of your Pokémon a Bug Type Move!", - "teach_move_prompt": "Select a move to teach a Pokémon.", - "confirm_no_teach": "You sure you don't want to learn one of these great moves?", - "outro": "I see great Bug Pokémon in your future!\nMay our paths cross again!$Bug out!" + "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!" } diff --git a/src/locales/de/mystery-encounters/clowning-around-dialogue.json b/src/locales/de/mystery-encounters/clowning-around-dialogue.json index 17781240838..5dce7b515a9 100644 --- a/src/locales/de/mystery-encounters/clowning-around-dialogue.json +++ b/src/locales/de/mystery-encounters/clowning-around-dialogue.json @@ -1,34 +1,35 @@ { - "intro": "It's...@d{64} a clown?", + "intro": "Es ist...@d{64} ein Clown?", "speaker": "Clown", - "intro_dialogue": "Bumbling buffoon, brace for a brilliant battle!\nYou'll be beaten by this brawling busker!", - "title": "Clowning Around", - "description": "Something is off about this encounter. The clown seems eager to goad you into a battle, but to what end?\n\nThe {{blacephalonName}} is especially strange, like it has @[TOOLTIP_TITLE]{weird types and ability.}", - "query": "What will you do?", + "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": "Battle the Clown", - "tooltip": "(-) Strange Battle\n(?) Affects Pokémon Abilities", - "selected": "Your pitiful Pokémon are poised for a pathetic performance!", - "apply_ability_dialogue": "A sensational showcase!\nYour savvy suits a sensational skill as spoils!", - "apply_ability_message": "The clown is offering to permanently Skill Swap one of your Pokémon's ability to {{ability}}!", - "ability_prompt": "Would you like to permanently teach a Pokémon the {{ability}} ability?", - "ability_gained": "@s{level_up_fanfare}{{chosenPokemon}} gained the {{ability}} ability!" + "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": "Remain Unprovoked", - "tooltip": "(-) Upsets the Clown\n(?) Affects Pokémon Items", - "selected": "Dismal dodger, you deny a delightful duel?\nFeel my fury!", - "selected_2": "The clown's {{blacephalonName}} uses Trick!\nAll of your {{switchPokemon}}'s items were randomly swapped!", - "selected_3": "Flustered fool, fall for my flawless deception!" + "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": "Return the Insults", - "tooltip": "(-) Upsets the Clown\n(?) Affects Pokémon Types", - "selected": "Dismal dodger, you deny a delightful duel?\nFeel my fury!", - "selected_2": "The clown's {{blacephalonName}} uses a strange move!\nAll of your team's types were randomly swapped!", - "selected_3": "Flustered fool, fall for my flawless deception!" + "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": "The clown and his cohorts\ndisappear in a puff of smoke." + "outro": "Der Clown und seine Kumpanen verschwinden in einer Rauchwolke." } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/department-store-sale-dialogue.json b/src/locales/de/mystery-encounters/department-store-sale-dialogue.json index d651f32665a..66e41975a31 100644 --- a/src/locales/de/mystery-encounters/department-store-sale-dialogue.json +++ b/src/locales/de/mystery-encounters/department-store-sale-dialogue.json @@ -1,27 +1,27 @@ { - "intro": "It's a lady with a ton of shopping bags.", - "speaker": "Shopper", - "intro_dialogue": "Hello! Are you here for\nthe amazing sales too?$There's a special coupon that you can\nredeem for a free item during the sale!$I have an extra one. Here you go!", - "title": "Department Store Sale", - "description": "There is merchandise in every direction! It looks like there are 4 counters where you can redeem the coupon for various items. The possibilities are endless!", - "query": "Which counter will you go to?", + "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 Counter", + "label": "TM-Kasse", "tooltip": "(+) TM Shop" }, "2": { - "label": "Vitamin Counter", - "tooltip": "(+) Vitamin Shop" + "label": "Nährstoff-Kasse", + "tooltip": "(+) Nährstoff Shop" }, "3": { - "label": "Battle Item Counter", - "tooltip": "(+) X Item Shop" + "label": "Kampf-Item-Kasse", + "tooltip": "(+) X-Item Shop" }, "4": { - "label": "Pokéball Counter", + "label": "Pokéball-Kasse", "tooltip": "(+) Pokéball Shop" } }, - "outro": "What a deal! You should shop there more often." + "outro": "Was für ein Schnäppchen! Du solltest öfter hier einkaufen." } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/fiery-fallout-dialogue.json b/src/locales/de/mystery-encounters/fiery-fallout-dialogue.json index a1644d89a3f..167efd48b53 100644 --- a/src/locales/de/mystery-encounters/fiery-fallout-dialogue.json +++ b/src/locales/de/mystery-encounters/fiery-fallout-dialogue.json @@ -1,26 +1,26 @@ { - "intro": "You encounter a blistering storm of smoke and ash!", - "title": "Fiery Fallout", - "description": "The whirling ash and embers have cut visibility to nearly zero. It seems like there might be some... source that is causing these conditions. But what could be behind a phenomenon of this magnitude?", - "query": "What will you do?", + "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": "Find the Source", - "tooltip": "(?) Discover the source\n(-) Hard Battle", - "selected": "You push through the storm, and find two {{volcaronaName}}s in the middle of a mating dance!$They don't take kindly to the interruption and attack!" + "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": "Hunker Down", - "tooltip": "(-) Suffer the effects of the weather", - "selected": "The weather effects cause significant\nharm as you struggle to find shelter!$Your party takes 20% Max HP damage!", - "target_burned": "Your {{burnedPokemon}} also became burned!" + "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": "Your Fire Types Help", - "tooltip": "(+) End the conditions\n(+) Gain a Charcoal", - "disabled_tooltip": "You need at least 2 Fire Type Pokémon to choose this", - "selected": "Your {{option3PrimaryName}} and {{option3SecondaryName}} guide you to where two {{volcaronaName}}s are in the middle of a mating dance!$Thankfully, your Pokémon are able to calm them,\nand they depart without issue." + "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": "After the weather clears,\nyour {{leadPokemon}} spots something on the ground.$@s{item_fanfare}{{leadPokemon}} gained a Charcoal!" + "found_charcoal": "Nachdem das Wetter aufklart, entdeckt dein {{leadPokemon}} etwas auf dem Boden.$@s{item_fanfare}{{leadPokemon}} erhält eine Holzkohle!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/global-trade-system-dialogue.json b/src/locales/de/mystery-encounters/global-trade-system-dialogue.json index 1cc420355b7..f9b2ac605bf 100644 --- a/src/locales/de/mystery-encounters/global-trade-system-dialogue.json +++ b/src/locales/de/mystery-encounters/global-trade-system-dialogue.json @@ -1,32 +1,32 @@ { - "intro": "It's an interface for the Global Trade System!", - "title": "The GTS", - "description": "Ah, the GTS! A technological wonder, you can connect with anyone else around the globe to trade Pokémon with them! Will fortune smile upon your trade today?", - "query": "What will you do?", + "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": "Check Trade Offers", - "tooltip": "(+) Select a trade offer for one of your Pokémon", - "trade_options_prompt": "Select a Pokémon to receive through trade." + "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": "Wonder Trade", - "tooltip": "(+) Send one of your Pokémon to the GTS and get a random Pokémon in return" + "label": "Zaubertausch", + "tooltip": "(+) Seine eine deiner Pokémon an die GTS und erhalte ein zufälliges Pokémon im Austausch" }, "3": { - "label": "Trade an Item", - "trade_options_prompt": "Select an item to send.", - "invalid_selection": "This Pokémon doesn't have legal items to trade.", - "tooltip": "(+) Send one of your Items to the GTS and get a random new Item" + "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": "Leave", - "tooltip": "(-) No Rewards", - "selected": "No time to trade today!\nYou continue on." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Heute ist keine Zeit zum Tauschen! Du gehst weiter." } }, - "pokemon_trade_selected": "{{tradedPokemon}} will be sent to {{tradeTrainerName}}.", - "pokemon_trade_goodbye": "Goodbye, {{tradedPokemon}}!", - "item_trade_selected": "{{chosenItem}} will be sent to {{tradeTrainerName}}.$.@d{64}.@d{64}.@d{64}\n@s{level_up_fanfare}Trade complete!$You received a {{itemName}} from {{tradeTrainerName}}!", - "trade_received": "@s{evolution_fanfare}{{tradeTrainerName}} sent over {{received}}!" + "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!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/lost-at-sea-dialogue.json b/src/locales/de/mystery-encounters/lost-at-sea-dialogue.json index 41709c66799..3ce269fbee8 100644 --- a/src/locales/de/mystery-encounters/lost-at-sea-dialogue.json +++ b/src/locales/de/mystery-encounters/lost-at-sea-dialogue.json @@ -1,28 +1,28 @@ { - "intro": "Wandering aimlessly through the sea, you've effectively gotten nowhere.", - "title": "Lost at Sea", - "description": "The sea is turbulent in this area, and you're running out of energy.\nThis is bad. Is there a way out of the situation?", - "query": "What will you do?", + "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}} Might Help", - "label_disabled": "Can't {{option1RequiredMove}}", - "tooltip": "(+) {{option1PrimaryName}} saves you\n(+) {{option1PrimaryName}} gains some EXP", - "tooltip_disabled": "You have no Pokémon to {{option1RequiredMove}} on", - "selected": "{{option1PrimaryName}} swims ahead, guiding you back on track.${{option1PrimaryName}} seems to also have gotten stronger in this time of need!" + "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}} Might Help", - "label_disabled": "Can't {{option2RequiredMove}}", - "tooltip": "(+) {{option2PrimaryName}} saves you\n(+) {{option2PrimaryName}} gains some EXP", - "tooltip_disabled": "You have no Pokémon to {{option2RequiredMove}} with", - "selected": "{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.${{option2PrimaryName}} seems to also have gotten stronger in this time of need!" + "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": "Wander Aimlessly", - "tooltip": "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP", - "selected": "You float about in the boat, steering without direction until you finally spot a landmark you remember.$You and your Pokémon are fatigued from the whole ordeal." + "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": "You are back on track." + "outro": "Du bist wieder auf dem richtigen Weg." } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/part-timer-dialogue.json b/src/locales/de/mystery-encounters/part-timer-dialogue.json index 614f1818e3f..dd86449092c 100644 --- a/src/locales/de/mystery-encounters/part-timer-dialogue.json +++ b/src/locales/de/mystery-encounters/part-timer-dialogue.json @@ -1,31 +1,31 @@ { - "intro": "A busy worker flags you down.", - "speaker": "Worker", - "intro_dialogue": "You look like someone with lots of capable Pokémon!$We can pay you if you're able to help us with some part-time work!", - "title": "Part-Timer", - "description": "Looks like there are plenty of tasks that need to be done. Depending how well-suited your Pokémon is to a task, they might earn more or less money.", - "query": "Which job will you choose?", - "invalid_selection": "Pokémon must be healthy enough.", + "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": "Make Deliveries", - "tooltip": "(-) Your Pokémon Uses its Speed\n(+) Earn @[MONEY]{Money}", - "selected": "Your {{selectedPokemon}} works a shift delivering orders to customers." + "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": "Warehouse Work", - "tooltip": "(-) Your Pokémon Uses its Strength and Endurance\n(+) Earn @[MONEY]{Money}", - "selected": "Your {{selectedPokemon}} works a shift moving items around the warehouse." + "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": "Sales Assistant", - "tooltip": "(-) Your {{option3PrimaryName}} uses {{option3PrimaryMove}}\n(+) Earn @[MONEY]{Money}", - "disabled_tooltip": "Your Pokémon need to know certain moves for this job", - "selected": "Your {{option3PrimaryName}} spends the day using {{option3PrimaryMove}} to attract customers to the business!" + "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": "Thanks for the assistance!\nYour {{selectedPokemon}} was incredibly helpful!$Here's your check for the day.", - "job_complete_bad": "Your {{selectedPokemon}} helped us out a bit!$Here's your check for the day.", - "pokemon_tired": "Your {{selectedPokemon}} is worn out!\nThe PP of all its moves was reduced to 2!", - "outro": "Come back and help out again sometime!" + "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!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/slumbering-snorlax-dialogue.json b/src/locales/de/mystery-encounters/slumbering-snorlax-dialogue.json index cd3bb7465c4..097bf3acd95 100644 --- a/src/locales/de/mystery-encounters/slumbering-snorlax-dialogue.json +++ b/src/locales/de/mystery-encounters/slumbering-snorlax-dialogue.json @@ -1,25 +1,25 @@ { - "intro": "As you walk down a narrow pathway, you see a towering silhouette blocking your path.$You get closer to see a {{snorlaxName}} sleeping peacefully.\nIt seems like there's no way around it.", - "title": "Slumbering {{snorlaxName}}", - "description": "You could attack it to try and get it to move, or simply wait for it to wake up. Who knows how long that could take, though...", - "query": "What will you do?", + "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": "Battle It", - "tooltip": "(-) Fight Sleeping {{snorlaxName}}\n(+) Special Reward", - "selected": "You approach the\nPokémon without fear." + "label": "Kampf beginnen", + "tooltip": "(-) Schlafendes {{snorlaxName}} greift an\n(+) Spezielle Belohnung", + "selected": "Du trittst dem Pokémon ohne Furcht entgegen." }, "2": { - "label": "Wait for It to Move", - "tooltip": "(-) Wait a Long Time\n(+) Recover Party", - "selected": ".@d{32}.@d{32}.@d{32}$You wait for a time, but the {{snorlaxName}}'s yawns make your party sleepy...", - "rest_result": "When you all awaken, the {{snorlaxName}} is no where to be found -\nbut your Pokémon are all healed!" + "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": "Steal Its Item", - "tooltip": "(+) {{option3PrimaryName}} uses {{option3PrimaryMove}}\n(+) Special Reward", - "disabled_tooltip": "Your Pokémon need to know certain moves to choose this", - "selected": "Your {{option3PrimaryName}} uses {{option3PrimaryMove}}!$@s{item_fanfare}It steals Leftovers off the sleeping\n{{snorlaxName}} and you make out like bandits!" + "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!" } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/the-strong-stuff-dialogue.json b/src/locales/de/mystery-encounters/the-strong-stuff-dialogue.json index b5403616c9b..0fd1a7ad64f 100644 --- a/src/locales/de/mystery-encounters/the-strong-stuff-dialogue.json +++ b/src/locales/de/mystery-encounters/the-strong-stuff-dialogue.json @@ -1,21 +1,21 @@ { - "intro": "It's a massive {{shuckleName}} and what appears\nto be a large stash of... juice?", - "title": "The Strong Stuff", - "description": "The {{shuckleName}} that blocks your path looks incredibly strong. Meanwhile, the juice next to it is emanating power of some kind.\n\nThe {{shuckleName}} extends its feelers in your direction. It seems like it wants to do something...", - "query": "What will you do?", + "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": "Approach the {{shuckleName}}", - "tooltip": "(?) Something awful or amazing might happen", - "selected": "You black out.", - "selected_2": "@f{150}When you awaken, the {{shuckleName}} is gone\nand juice stash completely drained.${{highBstPokemon1}} and {{highBstPokemon2}}\nfeel a terrible lethargy come over them!$Their base stats were reduced by {{reductionValue}}!$Your remaining Pokémon feel an incredible vigor, though!\nTheir base stats are increased by {{increaseValue}}!" + "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": "Battle the {{shuckleName}}", - "tooltip": "(-) Hard Battle\n(+) Special Rewards", - "selected": "Enraged, the {{shuckleName}} drinks some of its juice and attacks!", - "stat_boost": "The {{shuckleName}}'s juice boosts its stats!" + "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": "What a bizarre turn of events." + "outro": "Was ist hier gerade passiert?" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/the-winstrate-challenge-dialogue.json b/src/locales/de/mystery-encounters/the-winstrate-challenge-dialogue.json index 37807a91667..e3d0dddd21a 100644 --- a/src/locales/de/mystery-encounters/the-winstrate-challenge-dialogue.json +++ b/src/locales/de/mystery-encounters/the-winstrate-challenge-dialogue.json @@ -1,22 +1,22 @@ { - "intro": "It's a family standing outside their house!", - "speaker": "The Winstrates", - "intro_dialogue": "We're the Winstrates!$What do you say to taking on our family in a series of Pokémon battles?", - "title": "The Winstrate Challenge", - "description": "The Winstrates are a family of 5 trainers, and they want to battle! If you beat all of them back-to-back, they'll give you a grand prize. But can you handle the heat?", - "query": "What will you do?", + "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": "Accept the Challenge", - "tooltip": "(-) Brutal Battle\n(+) Special Item Reward", - "selected": "Let the challenge begin!" + "label": "Die Herausforderung annehmen", + "tooltip": "(-) Brutaler Kampf\n(+) Spezielle Belohnung", + "selected": "Lass die Herausforderung beginnen!" }, "2": { - "label": "Refuse the Challenge", - "tooltip": "(+) Full Heal Party\n(+) Gain a Rarer Candy", - "selected": "That's too bad. Say, your team looks worn out, why don't you stay awhile and rest?" + "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": "Congratulations on beating our challenge!$First off, we'd like you to have this Voucher.", - "victory_2": "Also, our family uses this Macho Brace to strengthen\nour Pokémon more effectively during training.$You may not need it considering that you beat the whole lot of us, but we hope you'll accept it anyway!" + "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!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/trash-to-treasure-dialogue.json b/src/locales/de/mystery-encounters/trash-to-treasure-dialogue.json index ae6e63ed800..36d5ca5d303 100644 --- a/src/locales/de/mystery-encounters/trash-to-treasure-dialogue.json +++ b/src/locales/de/mystery-encounters/trash-to-treasure-dialogue.json @@ -1,19 +1,19 @@ { - "intro": "It's a massive pile of garbage!\nWhere did this come from?", - "title": "Trash to Treasure", - "description": "The garbage heap looms over you, and you can spot some items of value buried amidst the refuse. Are you sure you want to get covered in filth to get them, though?", - "query": "What will you do?", + "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": "Dig for Valuables", - "tooltip": "(-) Lose Healing Items in Shops\n(+) Gain Amazing Items", - "selected": "You wade through the garbage pile, becoming mired in filth.$There's no way any respectable shopkeepers\nwill sell you anything in your grimy state!$You'll just have to make do without shop healing items.$However, you found some incredible items in the garbage!" + "label": "Nach Wertsachen suchen", + "tooltip": "(-) Keine Heilitems in Läden\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!$Du musst ohne Heilitems auskommen.$Aber du hast einige unglaubliche Items im Müll gefunden!" }, "2": { - "label": "Investigate Further", - "tooltip": "(?) Find the Source of the Garbage", - "selected": "You wander around the heap, searching for any indication as to how this might have appeared here...", - "selected_2": "Suddenly, the garbage shifts! It wasn't just garbage, it was a Pokémon!" + "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!" } } } \ No newline at end of file diff --git a/src/overrides.ts b/src/overrides.ts index 10ee6ec9e2f..036e28264f9 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -1,19 +1,19 @@ -import { Abilities } from "#enums/abilities"; -import { Biome } from "#enums/biome"; -import { EggTier } from "#enums/egg-type"; -import { Moves } from "#enums/moves"; -import { PokeballType } from "#enums/pokeball"; -import { Species } from "#enums/species"; -import { StatusEffect } from "#enums/status-effect"; -import { TimeOfDay } from "#enums/time-of-day"; -import { VariantTier } from "#enums/variant-tiers"; -import { WeatherType } from "#enums/weather-type"; -import { type PokeballCounts } from "./battle-scene"; -import { Gender } from "./data/gender"; -import { Variant } from "./data/variant"; -import { type ModifierOverride } from "./modifier/modifier-type"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import {Abilities} from "#enums/abilities"; +import {Biome} from "#enums/biome"; +import {EggTier} from "#enums/egg-type"; +import {Moves} from "#enums/moves"; +import {PokeballType} from "#enums/pokeball"; +import {Species} from "#enums/species"; +import {StatusEffect} from "#enums/status-effect"; +import {TimeOfDay} from "#enums/time-of-day"; +import {VariantTier} from "#enums/variant-tiers"; +import {WeatherType} from "#enums/weather-type"; +import {type PokeballCounts} from "./battle-scene"; +import {Gender} from "./data/gender"; +import {Variant} from "./data/variant"; +import {type ModifierOverride} from "./modifier/modifier-type"; +import {MysteryEncounterType} from "#enums/mystery-encounter-type"; +import {MysteryEncounterTier} from "#enums/mystery-encounter-tier"; /** * Overrides that are using when testing different in game situations @@ -47,7 +47,7 @@ class DefaultOverrides { readonly SEED_OVERRIDE: string = ""; readonly WEATHER_OVERRIDE: WeatherType = WeatherType.NONE; readonly BATTLE_TYPE_OVERRIDE: "double" | "single" | null = null; - readonly STARTING_WAVE_OVERRIDE: number = 0; + readonly STARTING_WAVE_OVERRIDE: number = 11; readonly STARTING_BIOME_OVERRIDE: Biome = Biome.TOWN; readonly ARENA_TINT_OVERRIDE: TimeOfDay | null = null; /** Multiplies XP gained by this value including 0. Set to null to ignore the override */ @@ -143,7 +143,7 @@ class DefaultOverrides { /** 1 to 256, set to null to ignore */ readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = 256; readonly MYSTERY_ENCOUNTER_TIER_OVERRIDE: MysteryEncounterTier | null = null; - readonly MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType | null = null; + readonly MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType | null = MysteryEncounterType.TRASH_TO_TREASURE; // ------------------------- // MODIFIER / ITEM OVERRIDES From 2c42e70e1947a03a244486898dc0f0eae3b54460 Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Sat, 14 Sep 2024 21:38:30 +0200 Subject: [PATCH 47/88] Revert Override --- src/overrides.ts | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/overrides.ts b/src/overrides.ts index 036e28264f9..10ee6ec9e2f 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -1,19 +1,19 @@ -import {Abilities} from "#enums/abilities"; -import {Biome} from "#enums/biome"; -import {EggTier} from "#enums/egg-type"; -import {Moves} from "#enums/moves"; -import {PokeballType} from "#enums/pokeball"; -import {Species} from "#enums/species"; -import {StatusEffect} from "#enums/status-effect"; -import {TimeOfDay} from "#enums/time-of-day"; -import {VariantTier} from "#enums/variant-tiers"; -import {WeatherType} from "#enums/weather-type"; -import {type PokeballCounts} from "./battle-scene"; -import {Gender} from "./data/gender"; -import {Variant} from "./data/variant"; -import {type ModifierOverride} from "./modifier/modifier-type"; -import {MysteryEncounterType} from "#enums/mystery-encounter-type"; -import {MysteryEncounterTier} from "#enums/mystery-encounter-tier"; +import { Abilities } from "#enums/abilities"; +import { Biome } from "#enums/biome"; +import { EggTier } from "#enums/egg-type"; +import { Moves } from "#enums/moves"; +import { PokeballType } from "#enums/pokeball"; +import { Species } from "#enums/species"; +import { StatusEffect } from "#enums/status-effect"; +import { TimeOfDay } from "#enums/time-of-day"; +import { VariantTier } from "#enums/variant-tiers"; +import { WeatherType } from "#enums/weather-type"; +import { type PokeballCounts } from "./battle-scene"; +import { Gender } from "./data/gender"; +import { Variant } from "./data/variant"; +import { type ModifierOverride } from "./modifier/modifier-type"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; /** * Overrides that are using when testing different in game situations @@ -47,7 +47,7 @@ class DefaultOverrides { readonly SEED_OVERRIDE: string = ""; readonly WEATHER_OVERRIDE: WeatherType = WeatherType.NONE; readonly BATTLE_TYPE_OVERRIDE: "double" | "single" | null = null; - readonly STARTING_WAVE_OVERRIDE: number = 11; + readonly STARTING_WAVE_OVERRIDE: number = 0; readonly STARTING_BIOME_OVERRIDE: Biome = Biome.TOWN; readonly ARENA_TINT_OVERRIDE: TimeOfDay | null = null; /** Multiplies XP gained by this value including 0. Set to null to ignore the override */ @@ -143,7 +143,7 @@ class DefaultOverrides { /** 1 to 256, set to null to ignore */ readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = 256; readonly MYSTERY_ENCOUNTER_TIER_OVERRIDE: MysteryEncounterTier | null = null; - readonly MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType | null = MysteryEncounterType.TRASH_TO_TREASURE; + readonly MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType | null = null; // ------------------------- // MODIFIER / ITEM OVERRIDES From 5afeca22d5f294c38a64b0b165f1138d1fcf7598 Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Sat, 14 Sep 2024 21:40:29 +0200 Subject: [PATCH 48/88] Revert "Revert "Teil 1"" This reverts commit 031e9595a6fc314799fb77ceee19ad5b028ef4d7. --- src/locales/de/battle.json | 10 +-- src/locales/de/bgm-name.json | 6 +- src/locales/de/dialogue.json | 76 +++++++++---------- src/locales/de/egg.json | 2 +- .../de/modifier-select-ui-handler.json | 4 +- src/locales/de/modifier-type.json | 26 +++---- .../de/mystery-encounter-messages.json | 10 +-- .../an-offer-you-cant-refuse-dialogue.json | 32 ++++---- .../berries-abound-dialogue.json | 32 ++++---- .../dancing-lessons-dialogue.json | 34 ++++----- .../dark-deal-dialogue.json | 28 +++---- .../delibirdy-dialogue.json | 34 ++++----- .../field-trip-dialogue.json | 42 +++++----- .../fight-or-flight-dialogue.json | 30 ++++---- .../fun-and-games-dialogue.json | 44 +++++------ .../mysterious-challengers-dialogue.json | 24 +++--- .../mysterious-chest-dialogue.json | 30 ++++---- .../safari-zone-dialogue.json | 56 +++++++------- .../shady-vitamin-dealer-dialogue.json | 32 ++++---- .../teleporting-hijinks-dialogue.json | 34 ++++----- .../the-pokemon-salesman-dialogue.json | 30 ++++---- .../training-session-dialogue.json | 42 +++++----- .../uncommon-breed-dialogue.json | 32 ++++---- .../weird-dream-dialogue.json | 26 +++---- src/locales/de/party-ui-handler.json | 2 +- src/locales/de/trainer-names.json | 20 ++--- src/locales/de/trainer-titles.json | 2 +- src/overrides.ts | 4 +- 28 files changed, 372 insertions(+), 372 deletions(-) diff --git a/src/locales/de/battle.json b/src/locales/de/battle.json index aa7b5c59725..52d4f192a5b 100644 --- a/src/locales/de/battle.json +++ b/src/locales/de/battle.json @@ -14,10 +14,10 @@ "moneyWon": "Du gewinnst {{moneyAmount}} ₽!", "moneyPickedUp": "Du hebst {{moneyAmount}} ₽ auf!", "pokemonCaught": "{{pokemonName}} wurde gefangen!", - "pokemonObtained": "You got {{pokemonName}}!", - "pokemonBrokeFree": "Oh no!\nThe Pokémon broke free!", - "pokemonFled": "The wild {{pokemonName}} fled!", - "playerFled": "You fled from the {{pokemonName}}!", + "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", @@ -102,5 +102,5 @@ "congratulations": "Glückwunsch!", "beatModeFirstTime": "{{speciesName}} hat den {{gameMode}} Modus zum ersten Mal beendet! Du erhältst {{newModifier}}!", "eggSkipPrompt": "Zur Ei-Zusammenfassung springen?", - "mysteryEncounterAppeared": "What's this?" + "mysteryEncounterAppeared": "Was ist das?" } diff --git a/src/locales/de/bgm-name.json b/src/locales/de/bgm-name.json index c747fc34b9e..6355c33c49c 100644 --- a/src/locales/de/bgm-name.json +++ b/src/locales/de/bgm-name.json @@ -148,8 +148,8 @@ "menu": "PMD Erkundungsteam Himmel Willkommen in der Welt der Pokémon!", "title": "PMD Erkundungsteam Himmel Top-Menü-Thema", - "mystery_encounter_weird_dream": "PMD EoS Temporal Spire", - "mystery_encounter_fun_and_games": "PMD EoS Guildmaster Wigglytuff", - "mystery_encounter_gen_5_gts": "BW GTS", + "mystery_encounter_weird_dream": "PMD Erkundungsteam Himmel Zeitturmspitze", + "mystery_encounter_fun_and_games": "PMD Erkundungsteam Himmel Gildenmeister Knuddeluff\n", + "mystery_encounter_gen_5_gts": "SW GTS", "mystery_encounter_gen_6_gts": "XY GTS" } diff --git a/src/locales/de/dialogue.json b/src/locales/de/dialogue.json index a8cdf78457d..3c6c6f712eb 100644 --- a/src/locales/de/dialogue.json +++ b/src/locales/de/dialogue.json @@ -935,112 +935,112 @@ }, "stat_trainer_buck": { "encounter": { - "1": "...I'm telling you right now. I'm seriously tough. Act surprised!", - "2": "I can feel my Pokémon shivering inside their Pokéballs!" + "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": "Heeheehee!\nSo hot, you!", - "2": "Heeheehee!\nSo hot, you!" + "1": "Hehehehe! So heiß bist du!", + "2": "Hehehehe! So heiß bist du!" }, "defeat": { - "1": "Whoa! You're all out of gas, I guess.", - "2": "Whoa! You're all out of gas, I guess." + "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": "My Pokémon have been itching for a battle.", - "2": "I should warn you, my Pokémon can be quite rambunctious." + "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": "Striking the right balance of offense and defense... It's not easy to do.", - "2": "Striking the right balance of offense and defense... It's not easy to do." + "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": "Do your Pokémon need any healing?", - "2": "Do your Pokémon need any healing?" + "1": "Brauchen deine Pokémon Heilung?", + "2": "Brauchen deine Pokémon Heilung?" } }, "stat_trainer_marley": { "encounter": { - "1": "... OK.\nI'll do my best.", - "2": "... OK.\nI... won't lose...!" + "1": "...OK. Ich werde mein Bestes geben.", + "2": "...OK. Ich werde nicht verlieren...!" }, "victory": { "1": "... Awww.", "2": "... Awww." }, "defeat": { - "1": "... Goodbye.", - "2": "... Goodbye." + "1": "... Auf Wiedersehen.", + "2": "... Auf Wiedersehen." } }, "stat_trainer_mira": { "encounter": { - "1": "You will be shocked by Mira!", - "2": "Mira will show you that Mira doesn't get lost anymore!" + "1": "Du wirst von Mira schockiert sein!", + "2": "Mira wird dir zeigen, dass Mira sich nicht mehr verirrt!" }, "victory": { - "1": "Mira wonders if she can get very far in this land.", - "2": "Mira wonders if she can get very far in this land." + "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 knew she would win!", - "2": "Mira knew she would win!" + "1": "Mira wuss, dass sie gewinnen würde!", + "2": "Mira wuss, dass sie gewinnen würde!" } }, "stat_trainer_riley": { "encounter": { - "1": "Battling is our way of greeting!", - "2": "We're pulling out all the stops to put your Pokémon down." + "1": "Kämpfe sind unsere Art der Begrüßung.", + "2": "Wir setzen alles daran, deine Pokémon zu besiegen." }, "victory": { - "1": "At times we battle, and sometimes we team up...$It's great how Trainers can interact.", - "2": "At times we battle, and sometimes we team up...$It's great how Trainers can interact." + "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": "You put up quite the display.\nBetter luck next time.", - "2": "You put up quite the display.\nBetter luck next time." + "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": "That's the spirit! I like you!" + "1": "Das ist der Kampfgeist den ich sehen will! Ich mag dich!" }, "victory": { - "1": "A-ha! You're stronger than I thought!" + "1": "Ahh! Du bist stärker als ich dachte!" } }, "winstrates_victoria": { "encounter": { - "1": "My goodness! Aren't you young?$You must be quite the trainer to beat my husband, though.$Now I suppose it's my turn to battle!" + "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": "Uwah! Just how strong are you?!" + "1": "Waas? Wie stark bist du denn?" } }, "winstrates_vivi": { "encounter": { - "1": "You're stronger than Mom? Wow!$But I'm strong, too!\nReally! Honestly!" + "1": "Du bist stärker als Mama? Wow! Aber ich bin auch stark! Wirklich! Ehrlich!" }, "victory": { - "1": "Huh? Did I really lose?\nSnivel... Grandmaaa!" + "1": "Huh? Habe ich wirklich verloren?\nSchnief... Omaaa!" } }, "winstrates_vicky": { "encounter": { - "1": "How dare you make my precious\ngranddaughter cry!$I see I need to teach you a lesson.\nPrepare to feel the sting of defeat!" + "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": "Whoa! So strong!\nMy granddaughter wasn't lying." + "1": "Wow! So stark!\nMeine Enkelin hat nicht gelogen." } }, "winstrates_vito": { "encounter": { - "1": "I trained together with my whole family,\nevery one of us!$I'm not losing to anyone!" + "1": "Ich habe zusammen mit meiner ganzen Familie trainiert, mit jedem von uns!\n$Ich verliere gegen niemanden!" }, "victory": { - "1": "I was better than everyone in my family.\nI've never lost before..." + "1": "Ich war besser als jeder in meiner Familie. Ich habe noch nie verloren..." } }, "brock": { diff --git a/src/locales/de/egg.json b/src/locales/de/egg.json index 63c2b431484..4097ac17578 100644 --- a/src/locales/de/egg.json +++ b/src/locales/de/egg.json @@ -11,7 +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": "Mystery Event", + "eventType": "Geheimnisvolles Ereignis", "selectMachine": "Wähle eine Maschine.", "notEnoughVouchers": "Du hast nicht genug Ei-Gutscheine!", "tooManyEggs": "Du hast schon zu viele Eier!", diff --git a/src/locales/de/modifier-select-ui-handler.json b/src/locales/de/modifier-select-ui-handler.json index d92d2d51f56..fbc6820244a 100644 --- a/src/locales/de/modifier-select-ui-handler.json +++ b/src/locales/de/modifier-select-ui-handler.json @@ -9,6 +9,6 @@ "checkTeamDesc": "Überprüfe dein Team or nutze Formänderungsitems.", "rerollCost": "{{formattedMoney}}₽", "itemCost": "{{formattedMoney}}₽", - "continueNextWaveButton": "Continue", - "continueNextWaveDescription": "Continue to the next wave" + "continueNextWaveButton": "Fortfahren", + "continueNextWaveDescription": "Zur nächsten Welle fortfahren." } diff --git a/src/locales/de/modifier-type.json b/src/locales/de/modifier-type.json index a008fe98156..4f08727f9fd 100644 --- a/src/locales/de/modifier-type.json +++ b/src/locales/de/modifier-type.json @@ -69,18 +69,18 @@ "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": "Shuckle Juice", - "description": "{{increaseDecrease}} all of the holder's base stats by {{statValue}}. You were {{blessCurse}} by the Shuckle.", + "name": "Pottrottsaft", + "description": "{{increaseDecrease}} alle Basiswerte des Trägers um {{statValue}}. Du wurdest von Pottrott {{blessCurse}}.", "extra": { - "increase": "Increases", - "decrease": "Decreases", - "blessed": "blessed", - "cursed": "cursed" + "increase": "Erhöht", + "decrease": "Verringert", + "blessed": "gesegnet", + "cursed": "verflucht" } }, "PokemonBaseStatFlatModifierType": { - "name": "Old Gateau", - "description": "Increases the holder's {{stats}} base stats by {{statValue}}. Found after a strange dream." + "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." @@ -417,11 +417,11 @@ "description": "Fügt eine 1%ige Chance hinzu, dass ein wildes Pokémon eine Fusion ist." }, - "MYSTERY_ENCOUNTER_SHUCKLE_JUICE": { "name": "Shuckle Juice" }, - "MYSTERY_ENCOUNTER_BLACK_SLUDGE": { "name": "Black Sludge", "description": "The stench is so powerful that shops will only sell you items at a steep cost increase." }, - "MYSTERY_ENCOUNTER_MACHO_BRACE": { "name": "Macho Brace", "description": "Defeating a Pokémon grants the holder a Macho Brace stack. Each stack slightly boosts stats, with an extra bonus at max stacks." }, - "MYSTERY_ENCOUNTER_OLD_GATEAU": { "name": "Old Gateau", "description": "Increases the holder's {{stats}} stats by {{statValue}}." }, - "MYSTERY_ENCOUNTER_GOLDEN_BUG_NET": { "name": "Golden Bug Net", "description": "Imbues the owner with luck to find Bug Type Pokémon more often. Has a strange heft to it." } + "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": { diff --git a/src/locales/de/mystery-encounter-messages.json b/src/locales/de/mystery-encounter-messages.json index 3b81c8e46f0..5c10b06a355 100644 --- a/src/locales/de/mystery-encounter-messages.json +++ b/src/locales/de/mystery-encounter-messages.json @@ -1,7 +1,7 @@ { - "paid_money": "You paid ₽{{amount, number}}.", - "receive_money": "You received ₽{{amount, number}}!", - "affects_pokedex": "Affects Pokédex Data", - "cancel_option": "Return to encounter option select.", - "view_party_button": "View Party" + "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" } diff --git a/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 6dd54d302ab..68b120fbac5 100644 --- a/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,26 +1,26 @@ { - "intro": "You're stopped by a rich looking boy.", - "speaker": "Rich Boy", - "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a pet like that!$I'd pay you handsomely,\nand also give you this old bauble!", - "title": "An Offer You Can't Refuse", - "description": "You're being offered a @[TOOLTIP_TITLE]{Shiny Charm} and {{price, money}} for your {{strongestPokemon}}!\n\nIt's an extremely good deal, but can you really bear to part with such a strong team member?", - "query": "What will you do?", + "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 Haustier wie dieses haben wollen!$Ich würde 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": "Accept the Deal", - "tooltip": "(-) Lose {{strongestPokemon}}\n(+) Gain a @[TOOLTIP_TITLE]{Shiny Charm}\n(+) Gain {{price, money}}", - "selected": "Wonderful!@d{32} Come along, {{strongestPokemon}}!$It's time to show you off to everyone at the yacht club!$They'll be so jealous!" + "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": "Extort the Kid", - "tooltip": "(+) {{option2PrimaryName}} uses {{moveOrAbility}}\n(+) Gain {{price, money}}", - "tooltip_disabled": "Your Pokémon need to have certain moves or abilities to choose this", - "selected": "My word, we're being robbed, {{liepardName}}!$You'll be hearing from my lawyers for this!" + "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": "Leave", - "tooltip": "(-) No Rewards", - "selected": "What a rotten day...$Ah, well. Let's return to the yacht club then, {{liepardName}}." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Was ein beschissener Tag...$Ach, was solls. Lass uns zurück zum Yachtclub gehen, {{liepardName}}." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/berries-abound-dialogue.json b/src/locales/de/mystery-encounters/berries-abound-dialogue.json index 26eae2c6b88..e7ff57a32ef 100644 --- a/src/locales/de/mystery-encounters/berries-abound-dialogue.json +++ b/src/locales/de/mystery-encounters/berries-abound-dialogue.json @@ -1,26 +1,26 @@ { - "intro": "There's a huge berry bush\nnear that Pokémon!", - "title": "Berries Abound", - "description": "It looks like there's a strong Pokémon guarding a berry bush. Battling is the straightforward approach, but it looks strong. Perhaps a fast Pokémon could grab some berries without getting caught?", - "query": "What will you do?", - "berries": "Berries!", + "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": "Battle the Pokémon", - "tooltip": "(-) Hard Battle\n(+) Gain Berries", - "selected": "You approach the\nPokémon without fear." + "label": "Kampf beginnen", + "tooltip": "(-) Schwerer Kampf\n(+) Beeren erhalten", + "selected": "Du trittst dem Pokémon ohne Furcht entgegen." }, "2": { - "label": "Race to the Bush", - "tooltip": "(-) {{fastestPokemon}} Uses its Speed\n(+) Gain Berries", - "selected": "Your {{fastestPokemon}} races for the berry bush!$It manages to nab {{numBerries}} before the {{enemyPokemon}} can react!$You quickly retreat with your newfound prize.", - "selected_bad": "Your {{fastestPokemon}} races for the berry bush!$Oh no! The {{enemyPokemon}} was faster and blocked off the approach!", - "boss_enraged": "The opposing {{enemyPokemon}} has become enraged!" + "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": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You leave the strong Pokémon\nwith its prize and continue on." + "label": "Verlassen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du lässt das starke Pokémon mit seinem Item zurück und gehst weiter." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json b/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json index 8e2883ecb16..3ea02955309 100644 --- a/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json +++ b/src/locales/de/mystery-encounters/dancing-lessons-dialogue.json @@ -1,27 +1,27 @@ { - "intro": "An {{oricorioName}} dances sadly alone, without a partner.", - "title": "Dancing Lessons", - "description": "The {{oricorioName}} doesn't seem aggressive, if anything it seems sad.\n\nMaybe it just wants someone to dance with...", - "query": "What will you do?", + "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": "Battle It", - "tooltip": "(-) Tough Battle\n(+) Gain a Baton", - "selected": "The {{oricorioName}} is distraught and moves to defend itself!", - "boss_enraged": "The {{oricorioName}}'s fear boosted its stats!" + "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": "Learn Its Dance", - "tooltip": "(+) Teach a Pokémon Revelation Dance", - "selected": "You watch the {{oricorioName}} closely as it performs its dance...$@s{level_up_fanfare}Your {{selectedPokemon}} learned from the {{oricorioName}}!" + "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": "Show It a Dance", - "tooltip": "(-) Teach the {{oricorioName}} a Dance Move\n(+) The {{oricorioName}} Will Like You", - "disabled_tooltip": "Your Pokémon need to know a Dance move for this.", - "select_prompt": "Select a Dance type move to use.", - "selected": "The {{oricorioName}} watches in fascination as\n{{selectedPokemon}} shows off {{selectedMove}}!$It loves the display!$@s{level_up_fanfare}The {{oricorioName}} wants to join your party!" + "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": "This Pokémon doesn't know a Dance move" + "invalid_selection": "Das Pokémon kennt keine Tanzattacke" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/dark-deal-dialogue.json b/src/locales/de/mystery-encounters/dark-deal-dialogue.json index 3086ebb0f9b..85c8d4565bb 100644 --- a/src/locales/de/mystery-encounters/dark-deal-dialogue.json +++ b/src/locales/de/mystery-encounters/dark-deal-dialogue.json @@ -1,24 +1,24 @@ { - "intro": "A strange man in a tattered coat\nstands in your way...", - "speaker": "Shady Guy", - "intro_dialogue": "Hey, you!$I've been working on a new device\nto bring out a Pokémon's latent power!$It completely rebinds the Pokémon's atoms\nat a molecular level into a far more powerful form.$Hehe...@d{64} I just need some sac-@d{32}\nErr, test subjects, to prove it works.", - "title": "Dark Deal", - "description": "The disturbing fellow holds up some Pokéballs.\n\"I'll make it worth your while! You can have these strong Pokéballs as payment, All I need is a Pokémon from your team! Hehe...\"", - "query": "What will you do?", + "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": "Accept", - "tooltip": "(+) 5 Rogue Balls\n(?) Enhance a Random Pokémon", - "selected_dialogue": "Let's see, that {{pokeName}} will do nicely!$Remember, I'm not responsible\nif anything bad happens!@d{32} Hehe...", - "selected_message": "The man hands you 5 Rogue Balls.${{pokeName}} hops into the strange machine...$Flashing lights and weird noises\nstart coming from the machine!$...@d{96} Something emerges\nfrom the device, raging wildly!" + "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": "Refuse", - "tooltip": "(-) No Rewards", - "selected": "Not gonna help a poor fellow out?\nPah!" + "label": "Ablehnen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du willst einem armen Kerl nicht helfen? Pah!" } }, - "outro": "After the harrowing encounter,\nyou collect yourself and depart." + "outro": "Nach der schrecklichen Begegnung, sammelst du dich und gehst weiter." } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/delibirdy-dialogue.json b/src/locales/de/mystery-encounters/delibirdy-dialogue.json index ca1fefa3a39..34ca9666d09 100644 --- a/src/locales/de/mystery-encounters/delibirdy-dialogue.json +++ b/src/locales/de/mystery-encounters/delibirdy-dialogue.json @@ -1,29 +1,29 @@ { - "intro": "A pack of {{delibirdName}} have appeared!", - "title": "Delibir-dy", - "description": "The {{delibirdName}}s are looking at you expectantly, as if they want something. Perhaps giving them an item or some money would satisfy them?", - "query": "What will you give them?", - "invalid_selection": "Pokémon doesn't have that kind of item.", + "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": "Give Money", - "tooltip": "(-) Give the {{delibirdName}}s {{money, money}}\n(+) Receive a Gift Item", - "selected": "You toss the money to the {{delibirdName}}s,\nwho chatter amongst themselves excitedly.$They turn back to you and happily give you a present!" + "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": "Give Food", - "tooltip": "(-) Give the {{delibirdName}}s a Berry or Reviver Seed\n(+) Receive a Gift Item", - "select_prompt": "Select an item to give.", - "selected": "You toss the {{chosenItem}} to the {{delibirdName}}s,\nwho chatter amongst themselves excitedly.$They turn back to you and happily give you a present!" + "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": "Give an Item", - "tooltip": "(-) Give the {{delibirdName}}s a Held Item\n(+) Receive a Gift Item", - "select_prompt": "Select an item to give.", - "selected": "You toss the {{chosenItem}} to the {{delibirdName}}s,\nwho chatter amongst themselves excitedly.$They turn back to you and happily give you a present!" + "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": "The {{delibirdName}} pack happily waddles off into the distance.$What a curious little exchange!" + "outro": "Die {{delibirdName}} watscheln glücklich davon.$Was für ein seltsamer kleiner Austausch!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/field-trip-dialogue.json b/src/locales/de/mystery-encounters/field-trip-dialogue.json index 61900d56cd7..61e6d4d9367 100644 --- a/src/locales/de/mystery-encounters/field-trip-dialogue.json +++ b/src/locales/de/mystery-encounters/field-trip-dialogue.json @@ -1,31 +1,31 @@ { - "intro": "It's a teacher and some school children!", - "speaker": "Teacher", - "intro_dialogue": "Hello, there! Would you be able to\nspare a minute for my students?$I'm teaching them about Pokémon moves\nand would love to show them a demonstration.$Would you mind showing us one of\nthe moves your Pokémon can use?", - "title": "Field Trip", - "description": "A teacher is requesting a move demonstration from a Pokémon. Depending on the move you choose, she might have something useful for you in exchange.", - "query": "Which move category will you show off?", + "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": "A Physical Move", - "tooltip": "(+) Physical Item Rewards" + "label": "Physische Attacke", + "tooltip": "(+) Physische Item-Belohnungen" }, "2": { - "label": "A Special Move", - "tooltip": "(+) Special Item Rewards" + "label": "Spezielle Attacke", + "tooltip": "(+) Spezielle Item-Belohnungen" }, "3": { - "label": "A Status Move", - "tooltip": "(+) Status Item Rewards" + "label": "Status-Attacke", + "tooltip": "(+) Status Item-Belohnungen" }, - "selected": "{{pokeName}} shows off an awesome display of {{move}}!" + "selected": "{{pokeName}} zeigt eine beeindruckende Vorführung von {{move}}!" }, - "second_option_prompt": "Choose a move for your Pokémon to use.", - "incorrect": "...$That isn't a {{moveCategory}} move!\nI'm sorry, but I can't give you anything.$Come along children, we'll\nfind a better demonstration elsewhere.", - "incorrect_exp": "Looks like you learned a valuable lesson?$Your Pokémon also gained some experience.", - "correct": "Thank you so much for your kindness!\nI hope these items might be of use to you!", - "correct_exp": "{{pokeName}} also gained some valuable experience!", - "status": "Status", - "physical": "Physical", - "special": "Special" + "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 " } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json b/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json index 3eb6cb87c16..33ed0d3f95a 100644 --- a/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json +++ b/src/locales/de/mystery-encounters/fight-or-flight-dialogue.json @@ -1,25 +1,25 @@ { - "intro": "Something shiny is sparkling\non the ground near that Pokémon!", - "title": "Fight or Flight", - "description": "It looks like there's a strong Pokémon guarding an item. Battling is the straightforward approach, but it looks strong. Perhaps you could steal the item, if you have the right Pokémon for the job.", - "query": "What will you do?", + "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": "Battle the Pokémon", - "tooltip": "(-) Hard Battle\n(+) New Item", - "selected": "You approach the\nPokémon without fear.", - "stat_boost": "The {{enemyPokemon}}'s latent strength boosted one of its stats!" + "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": "Steal the Item", - "disabled_tooltip": "Your Pokémon need to know certain moves to choose this", - "tooltip": "(+) {{option2PrimaryName}} uses {{option2PrimaryMove}}", - "selected": ".@d{32}.@d{32}.@d{32}$Your {{option2PrimaryName}} helps you out and uses {{option2PrimaryMove}}!$You nabbed the item!" + "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": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You leave the strong Pokémon\nwith its prize and continue on." + "label": "Verlassen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du lässt das starke Pokémon mit seinem Item zurück und gehst weiter." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/fun-and-games-dialogue.json b/src/locales/de/mystery-encounters/fun-and-games-dialogue.json index f5d7d6e8ff8..9e38d0a4599 100644 --- a/src/locales/de/mystery-encounters/fun-and-games-dialogue.json +++ b/src/locales/de/mystery-encounters/fun-and-games-dialogue.json @@ -1,30 +1,30 @@ { - "intro_dialogue": "Step right up, folks! Try your luck\non the brand new {{wobbuffetName}} Whack-o-matic!", - "speaker": "Showman", - "title": "Fun And Games!", - "description": "You've encountered a traveling show with a prize game! You will have @[TOOLTIP_TITLE]{3 turns} to bring the {{wobbuffetName}} as close to @[TOOLTIP_TITLE]{1 HP} as possible @[TOOLTIP_TITLE]{without KOing it} so it can wind up a huge Counter on the bell-ringing machine.\nBut be careful! If you KO the {{wobbuffetName}}, you'll have to pay for the cost of reviving it!", - "query": "Would you like to play?", + "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": "Play the Game", - "tooltip": "(-) Pay {{option1Money, money}}\n(+) Play {{wobbuffetName}} Whack-o-matic", - "selected": "Time to test your luck!" + "label": "Das Spiel spielen", + "tooltip": "(-) Zahle {{option1Money, money}}\n(+) Spiele {{wobbuffetName}} Hau-den-Lukas", + "selected": "Zeit dein Glück herauszufordern!" }, "2": { - "label": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You hurry along your way,\nwith a slight feeling of regret." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du beeilst dich auf deinem Weg, mit einem leichten Gefühl der Reue." } }, - "ko": "Oh no! The {{wobbuffetName}} fainted!$You lose the game and\nhave to pay for the revive cost...", - "charging_continue": "The Wubboffet keeps charging its counter-swing!", - "turn_remaining_3": "Three turns remaining!", - "turn_remaining_2": "Two turns remaining!", - "turn_remaining_1": "One turn remaining!", - "end_game": "Time's up!$The {{wobbuffetName}} winds up to counter-swing and@d{16}.@d{16}.@d{16}.", - "best_result": "The {{wobbuffetName}} smacks the button so hard\nthe bell breaks off the top!$You win the grand prize!", - "great_result": "The {{wobbuffetName}} smacks the button, nearly hitting the bell!$So close!\nYou earn the second tier prize!", - "good_result": "The {{wobbuffetName}} hits the button hard enough to go midway up the scale!$You earn the third tier prize!", - "bad_result": "The {{wobbuffetName}} barely taps the button and nothing happens...$Oh no!\nYou don't win anything!", - "outro": "That was a fun little game!" + "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!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json b/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json index 01f4e6092eb..040a8c269e0 100644 --- a/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json +++ b/src/locales/de/mystery-encounters/mysterious-challengers-dialogue.json @@ -1,22 +1,22 @@ { - "intro": "Mysterious challengers have appeared!", - "title": "Mysterious Challengers", - "description": "If you defeat a challenger, you might impress them enough to receive a boon. But some look tough, are you up to the challenge?", - "query": "Who will you battle?", + "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": "A Clever, Mindful Foe", - "tooltip": "(-) Standard Battle\n(+) Move Item Rewards" + "label": "Schlauer Trainer", + "tooltip": "(-) Standardkampf\n(+) TM Belohnungen" }, "2": { - "label": "A Strong Foe", - "tooltip": "(-) Hard Battle\n(+) Good Rewards" + "label": "Starker Trainer", + "tooltip": "(-) Harter Kampf\n(+) Gute Belohnungen" }, "3": { - "label": "The Mightiest Foe", - "tooltip": "(-) Brutal Battle\n(+) Great Rewards" + "label": "Mächtigster Trainer", + "tooltip": "(-) Brutaler Kampf\n(+) Großartige Belohnungen" }, - "selected": "The trainer steps forward..." + "selected": "Der Herausforderer tritt vor..." }, - "outro": "The mysterious challenger was defeated!" + "outro": "Der mysteriöse Herausforderer wurde besiegt!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json b/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json index 1de7a5992ed..9dfb05e47e8 100644 --- a/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json +++ b/src/locales/de/mystery-encounters/mysterious-chest-dialogue.json @@ -1,23 +1,23 @@ { - "intro": "You found...@d{32} a chest?", - "title": "The Mysterious Chest", - "description": "A beautifully ornamented chest stands on the ground. There must be something good inside... right?", - "query": "Will you open it?", + "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": "Open It", - "tooltip": "@[SUMMARY_BLUE]{(35%) Something terrible}\n@[SUMMARY_GREEN]{(40%) Okay Rewards}\n@[SUMMARY_GREEN]{(20%) Good Rewards}\n@[SUMMARY_GREEN]{(4%) Great Rewards}\n@[SUMMARY_GREEN]{(1%) Amazing Rewards}", - "selected": "You open the chest to find...", - "normal": "Just some normal tools and items.", - "good": "Some pretty nice tools and items.", - "great": "A couple great tools and items!", - "amazing": "Whoa! An amazing item!", - "bad": "Oh no!@d{32}\nThe chest was actually a {{gimmighoulName}} in disguise!$Your {{pokeName}} jumps in front of you\nbut is KOed in the process!" + "label": "Öffnen", + "tooltip": "@[SUMMARY_BLUE]{(35%) Etwas Schreckliches}\n@[SUMMARY_GREEN]{(40%) Standard Belohnung}\n@[SUMMARY_GREEN]{(20%) Gute Belohnung}\n@[SUMMARY_GREEN]{(4%) Großartige Belohnung}\n@[SUMMARY_GREEN]{(1%) 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": "Too Risky, Leave", - "tooltip": "(-) No Rewards", - "selected": "You hurry along your way,\nwith a slight feeling of regret." + "label": "Zu riskant, weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du gehst schnell weiter, mit einem leichten Gefühl der Reue." } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/safari-zone-dialogue.json b/src/locales/de/mystery-encounters/safari-zone-dialogue.json index 8869f2055e5..2302833036b 100644 --- a/src/locales/de/mystery-encounters/safari-zone-dialogue.json +++ b/src/locales/de/mystery-encounters/safari-zone-dialogue.json @@ -1,46 +1,46 @@ { - "intro": "It's a safari zone!", - "title": "The Safari Zone", - "description": "There are all kinds of rare and special Pokémon that can be found here!\nIf you choose to enter, you'll have a time limit of 3 wild encounters where you can try to catch these special Pokémon.\n\nBeware, though. These Pokémon may flee before you're able to catch them!", - "query": "Would you like to enter?", + "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": "Enter", - "tooltip": "(-) Pay {{option1Money, money}}\n@[SUMMARY_GREEN]{(?) Safari Zone}", - "selected": "Time to test your luck!" + "label": "Eintreten", + "tooltip": "(-) Zahle {{option1Money, money}}\n@[SUMMARY_GREEN]{(?) Safari Zone}", + "selected": "Zeit, dein Glück herauszufordern!" }, "2": { - "label": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You hurry along your way,\nwith a slight feeling of regret." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du gehst deines Weges, mit einem leichten Gefühl der Reue." } }, "safari": { "1": { - "label": "Throw a Pokéball", - "tooltip": "(+) Throw a Pokéball", - "selected": "You throw a Pokéball!" + "label": "Pokéball werfen", + "tooltip": "(+) Werfe einen Pokéball", + "selected": "Du wirfst einen Pokéball!" }, "2": { - "label": "Throw Bait", - "tooltip": "(+) Increases Capture Rate\n(-) Chance to Increase Flee Rate", - "selected": "You throw some bait!" + "label": "Köder werfen", + "tooltip": "(+) Erhöht die Fangrate\n(-) Erhöht die Fluchtchance", + "selected": "Du wirfst einen Köder!" }, "3": { - "label": "Throw Mud", - "tooltip": "(+) Decreases Flee Rate\n(-) Chance to Decrease Capture Rate", - "selected": "You throw some mud!" + "label":"Matsch werfen", + "tooltip": "(+) Vermindert die Fluchtchance\n(-) Chance, die Fangrate zu verringern", + "selected": "Du wirst ein wenig Matsch!" }, "4": { - "label": "Flee", - "tooltip": "(?) Flee from this Pokémon" + "label": "Fliehen", + "tooltip": "(?) Fliehe vor diesem Pokémon" }, - "watching": "{{pokemonName}} is watching carefully!", - "eating": "{{pokemonName}} is eating!", - "busy_eating": "{{pokemonName}} is busy eating!", - "angry": "{{pokemonName}} is angry!", - "beside_itself_angry": "{{pokemonName}} is beside itself with anger!", - "remaining_count": "{{remainingCount}} Pokémon remaining!" + "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": "That was a fun little excursion!" + "outro": "Das war ein spannendes Abenteuer in der Safari-Zone!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json b/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json index d0003de07f1..6579d94bd2e 100644 --- a/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json +++ b/src/locales/de/mystery-encounters/shady-vitamin-dealer-dialogue.json @@ -1,27 +1,27 @@ { - "intro": "A man in a dark coat approaches you.", - "speaker": "Shady Salesman", - "intro_dialogue": ".@d{16}.@d{16}.@d{16}$I've got the goods if you've got the money.$Make sure your Pokémon can handle it though.", - "title": "The Vitamin Dealer", - "description": "The man opens his jacket to reveal some Pokémon vitamins. The numbers he quotes seem like a really good deal. Almost too good...\nHe offers two package deals to choose from.", - "query": "Which deal will you choose?", + "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": "The Cheap Deal", - "tooltip": "(-) Pay {{option1Money, money}}\n(-) Side Effects?\n(+) Chosen Pokémon Gains 2 Random Vitamins" + "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": "The Pricey Deal", - "tooltip": "(-) Pay {{option2Money, money}}\n(+) Chosen Pokémon Gains 2 Random Vitamins" + "label": "Der teure Deal", + "tooltip": "(-) Zahle {{option2Money, money}}\n(+) Das gewählte Pokémon erhält 2 zufällige Nährstoffe" }, "3": { - "label": "Leave", - "tooltip": "(-) No Rewards", - "selected": "Heh, wouldn't have figured you for a coward." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Ey, hätte ich nicht gedacht, dass du ein Feigling bist." }, - "selected": "The man hands you two bottles and quickly disappears.${{selectedPokemon}} gained {{boost1}} and {{boost2}} boosts!" + "selected": "Der Mann überreicht dir zwei Flaschen und verschwindet schnell.${{selectedPokemon}} erhält {{boost1}} und {{boost2}} Nährstoffe!" }, - "cheap_side_effects": "But the medicine had some side effects!$Your {{selectedPokemon}} takes some damage,\nand its Nature is changed to {{newNature}}!", - "no_bad_effects": "Looks like there were no side-effects from the medicine!" + "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." } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json b/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json index c295867f521..552f082c20d 100644 --- a/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json +++ b/src/locales/de/mystery-encounters/teleporting-hijinks-dialogue.json @@ -1,27 +1,27 @@ { - "intro": "It's a strange machine, whirring noisily...", - "title": "Teleportating Hijinks", - "description": "The machine has a sign on it that reads:\n \"To use, insert money then step into the capsule.\"\n\nPerhaps it can transport you somewhere...", - "query": "What will you do?", + "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": "Put Money In", - "tooltip": "(-) Pay {{price, money}}\n(?) Teleport to New Biome", - "selected": "You insert some money, and the capsule opens.\nYou step inside..." + "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": "A Pokémon Helps", - "tooltip": "(-) {{option2PrimaryName}} Helps\n(+) {{option2PrimaryName}} gains EXP\n(?) Teleport to New Biome", - "disabled_tooltip": "You need a Steel or Electric Type Pokémon to choose this", - "selected": "{{option2PrimaryName}}'s Type allows it to bypass the machine's paywall!$The capsule opens, and you step inside..." + "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": "Inspect the Machine", - "tooltip": "(-) Pokémon Battle", - "selected": "You are drawn in by the blinking lights\nand strange noises coming from the machine...$You don't even notice as a wild\nPokémon sneaks up and ambushes you!" + "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": "The machine shakes violently,\nmaking all sorts of strange noises!$Just as soon as it had started, it quiets once more.", - "attacked": "You step out into a completely new area, startling a wild Pokémon!$The wild Pokémon attacks!", - "boss_enraged": "The opposing {{enemyPokemon}} has become enraged!" + "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!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json b/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json index 7e8091bbfff..1e055fa5ed0 100644 --- a/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json +++ b/src/locales/de/mystery-encounters/the-pokemon-salesman-dialogue.json @@ -1,23 +1,23 @@ { - "intro": "A chipper elderly man approaches you.", - "speaker": "Gentleman", - "intro_dialogue": "Hello there! Have I got a deal just for YOU!", - "title": "The Pokémon Salesman", - "description": "\"This {{purchasePokemon}} is extremely unique and carries an ability not normally found in its species! I'll let you have this swell {{purchasePokemon}} for just {{price, money}}!\"\n\n\"What do you say?\"", - "description_shiny": "\"This {{purchasePokemon}} is extremely unique and has a pigment not normally found in its species! I'll let you have this swell {{purchasePokemon}} for just {{price, money}}!\"\n\n\"What do you say?\"", - "query": "What will you do?", + "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": "Accept", - "tooltip": "(-) Pay {{price, money}}\n(+) Gain a {{purchasePokemon}} with its Hidden Ability", - "tooltip_shiny": "(-) Pay {{price, money}}\n(+) Gain a shiny {{purchasePokemon}}", - "selected_message": "You paid an outrageous sum and bought the {{purchasePokemon}}.", - "selected_dialogue": "Excellent choice!$I can see you've a keen eye for business.$Oh, yeah...@d{64} Returns not accepted, got that?" + "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": "Refuse", - "tooltip": "(-) No Rewards", - "selected": "No?@d{32} You say no?$I'm only doing this as a favor to you!" + "label": "Ablehnen", + "tooltip": "(-) Keine Belohnung", + "selected": "Nein?@d{32} Du sagst nein?$Ich mache das nur als Gefallen für dich!" } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/training-session-dialogue.json b/src/locales/de/mystery-encounters/training-session-dialogue.json index f018018fe4e..f7d22ef6deb 100644 --- a/src/locales/de/mystery-encounters/training-session-dialogue.json +++ b/src/locales/de/mystery-encounters/training-session-dialogue.json @@ -1,33 +1,33 @@ { - "intro": "You've come across some\ntraining tools and supplies.", - "title": "Training Session", - "description": "These supplies look like they could be used to train a member of your party! There are a few ways you could train your Pokémon, by battling against it with the rest of your team.", - "query": "How should you train?", - "invalid_selection": "Pokémon must be healthy enough.", + "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": "Light Training", - "tooltip": "(-) Light Battle\n(+) Improve 2 Random IVs of Pokémon", - "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its {{stat1}} and {{stat2}} IVs were improved!" + "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": "Moderate Training", - "tooltip": "(-) Moderate Battle\n(+) Change Pokémon's Nature", - "select_prompt": "Select a new nature\nto train your Pokémon in.", - "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its nature was changed to {{nature}}!" + "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": "Heavy Training", - "tooltip": "(-) Harsh Battle\n(+) Change Pokémon's Ability", - "select_prompt": "Select a new ability\nto train your Pokémon in.", - "finished": "{{selectedPokemon}} returns, feeling\nworn out but accomplished!$Its ability was changed to {{ability}}!" + "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": "Leave", - "tooltip": "(-) No Rewards", - "selected": "You've no time for training.\nTime to move on." + "label": "Weggehen", + "tooltip": "(-) Keine Belohnung", + "selected": "Du hast keine Zeit für Training und gehst weiter." }, - "selected": "{{selectedPokemon}} moves across\nthe clearing to face you..." + "selected": "{{selectedPokemon}} bewegt sich über die Lichtung, um dir gegenüberzutreten..." }, - "outro": "That was a successful training session!" + "outro": "Das war eine erfolgreiche Trainingssitzung!" } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json b/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json index e6f5b3d3fcd..efd5ff52e16 100644 --- a/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json +++ b/src/locales/de/mystery-encounters/uncommon-breed-dialogue.json @@ -1,26 +1,26 @@ { - "intro": "That isn't just an ordinary Pokémon!", - "title": "Uncommon Breed", - "description": "That {{enemyPokemon}} looks special compared to others of its kind. @[TOOLTIP_TITLE]{Perhaps it knows a special move?} You could battle and catch it outright, but there might also be a way to befriend it.", - "query": "What will you do?", + "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": "Battle the Pokémon", - "tooltip": "(-) Tricky Battle\n(+) Strong Catchable Foe", - "selected": "You approach the\n{{enemyPokemon}} without fear.", - "stat_boost": "The {{enemyPokemon}}'s heightened abilities boost its stats!" + "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": "Give It Food", - "disabled_tooltip": "You need 4 berry items to choose this", - "tooltip": "(-) Give 4 Berries\n(+) The {{enemyPokemon}} Likes You", - "selected": "You toss the berries at the {{enemyPokemon}}!$It eats them happily!$The {{enemyPokemon}} wants to join your party!" + "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": "Befriend It", - "disabled_tooltip": "Your Pokémon need to know certain moves to choose this", - "tooltip": "(+) {{option3PrimaryName}} uses {{option3PrimaryMove}}\n(+) The {{enemyPokemon}} Likes You", - "selected": "Your {{option3PrimaryName}} uses {{option3PrimaryMove}} to charm the {{enemyPokemon}}!$The {{enemyPokemon}} wants to join your party!" + "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!" } } } \ No newline at end of file diff --git a/src/locales/de/mystery-encounters/weird-dream-dialogue.json b/src/locales/de/mystery-encounters/weird-dream-dialogue.json index 44acde84002..11fe3b4078c 100644 --- a/src/locales/de/mystery-encounters/weird-dream-dialogue.json +++ b/src/locales/de/mystery-encounters/weird-dream-dialogue.json @@ -1,22 +1,22 @@ { - "intro": "A shadowy woman blocks your path.\nSomething about her is unsettling...", - "speaker": "Woman", - "intro_dialogue": "I have seen your futures, your pasts...$Child, do you see them too?", + "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": "The woman's words echo in your head. It wasn't just a singular voice, but a vast multitude, from all timelines and realities. You begin to feel dizzy, the question lingering on your mind...\n\n@[TOOLTIP_TITLE]{\"I have seen your futures, your pasts... Child, do you see them too?\"}", - "query": "What will you do?", + "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": "\"I See Them\"", - "tooltip": "@[SUMMARY_GREEN]{(?) Affects your Pokémon}", - "selected": "Her hand reaches out to touch you,\nand everything goes black.$Then...@d{64} You see everything.\nEvery timeline, all your different selves,\n past and future.$Everything that has made you,\neverything you will become...@d{64}", - "cutscene": "You see your Pokémon,@d{32} converging from\nevery reality to become something new...@d{64}", - "dream_complete": "When you awaken, the woman - was it a woman or a ghost? - is gone...$.@d{32}.@d{32}.@d{32}$Your Pokémon team has changed...\nOr is it the same team you've always had?" + "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": "Quickly Leave", - "tooltip": "(-) Affects your Pokémon", - "selected": "You tear your mind from a numbing grip, and hastily depart.$When you finally stop to collect yourself, you check the Pokémon in your team.$For some reason, all of their levels have decreased!" + "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!" } } } \ No newline at end of file diff --git a/src/locales/de/party-ui-handler.json b/src/locales/de/party-ui-handler.json index 520c5850b03..8c662ef2b78 100644 --- a/src/locales/de/party-ui-handler.json +++ b/src/locales/de/party-ui-handler.json @@ -15,7 +15,7 @@ "UNPAUSE_EVOLUTION": "Entwicklung fortsetzen", "REVIVE": "Wiederbeleben", "RENAME": "Umbenennen", - "SELECT": "Select", + "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!", diff --git a/src/locales/de/trainer-names.json b/src/locales/de/trainer-names.json index 6199e252eb8..2a6ecf91324 100644 --- a/src/locales/de/trainer-names.json +++ b/src/locales/de/trainer-names.json @@ -163,15 +163,15 @@ "piers_marnie_double": "Nezz & Mary", "marnie_piers_double": "Mary & Nezz", - "buck": "Buck", - "cheryl": "Cheryl", - "marley": "Marley", - "mira": "Mira", - "riley": "Riley", - "victor": "Victor", - "victoria": "Victoria", - "vivi": "Vivi", + "buck": "Avenaro", + "cheryl": "Raissa", + "marley": "Charlie", + "mira": "Orisa", + "riley": "Urs", + "victor": "Viktor", + "victoria": "Viktoria", + "vivi": "Sieglinde", "vicky": "Vicky", - "vito": "Vito", - "bug_type_superfan": "Bug-Type Superfan" + "vito": "Paul", + "bug_type_superfan": "Käfersammler-Superfan" } diff --git a/src/locales/de/trainer-titles.json b/src/locales/de/trainer-titles.json index a0d2eca348e..6f6bace7fc8 100644 --- a/src/locales/de/trainer-titles.json +++ b/src/locales/de/trainer-titles.json @@ -35,5 +35,5 @@ "skull_admin": "Team Skull Vorstand", "macro_admin": "Vizepräsidentin von Macro Cosmos", - "the_winstrates": "The Winstrates'" + "the_winstrates": "Sihgers" } diff --git a/src/overrides.ts b/src/overrides.ts index 6b550d152c2..10ee6ec9e2f 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -87,7 +87,7 @@ class DefaultOverrides { readonly STARTER_FORM_OVERRIDES: Partial> = {}; /** default 5 or 20 for Daily */ - readonly STARTING_LEVEL_OVERRIDE: number = 0; + readonly STARTING_LEVEL_OVERRIDE: number = 8000; /** * SPECIES OVERRIDE * will only apply to the first starter in your party or each enemy pokemon @@ -141,7 +141,7 @@ class DefaultOverrides { // ------------------------- /** 1 to 256, set to null to ignore */ - readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = null; + readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = 256; readonly MYSTERY_ENCOUNTER_TIER_OVERRIDE: MysteryEncounterTier | null = null; readonly MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType | null = null; From 2d1c1f31be5a2decb984d501c4ab00da5b66193a Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Sat, 14 Sep 2024 21:43:56 +0200 Subject: [PATCH 49/88] Update src/overrides.ts --- src/overrides.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overrides.ts b/src/overrides.ts index 10ee6ec9e2f..d8f42c44771 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -87,7 +87,7 @@ class DefaultOverrides { readonly STARTER_FORM_OVERRIDES: Partial> = {}; /** default 5 or 20 for Daily */ - readonly STARTING_LEVEL_OVERRIDE: number = 8000; + readonly STARTING_LEVEL_OVERRIDE: number = 0; /** * SPECIES OVERRIDE * will only apply to the first starter in your party or each enemy pokemon From fb7d90cb512adb8bc625166796c8ecfc210c6fea Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Sat, 14 Sep 2024 21:44:15 +0200 Subject: [PATCH 50/88] Update src/overrides.ts --- src/overrides.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overrides.ts b/src/overrides.ts index d8f42c44771..6b550d152c2 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -141,7 +141,7 @@ class DefaultOverrides { // ------------------------- /** 1 to 256, set to null to ignore */ - readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = 256; + readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = null; readonly MYSTERY_ENCOUNTER_TIER_OVERRIDE: MysteryEncounterTier | null = null; readonly MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType | null = null; From 1e1e2a08f95e9ad5ea2809238787a8838c4d945b Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 21:51:12 +0200 Subject: [PATCH 51/88] Update field-trip-dialogue.json --- .../mystery-encounters/field-trip-dialogue.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/locales/fr/mystery-encounters/field-trip-dialogue.json b/src/locales/fr/mystery-encounters/field-trip-dialogue.json index 2d1ef1ad80a..601a46c069a 100644 --- a/src/locales/fr/mystery-encounters/field-trip-dialogue.json +++ b/src/locales/fr/mystery-encounters/field-trip-dialogue.json @@ -1,27 +1,27 @@ { "intro": "C’est une enseignante avec ses élèves !", "speaker": "Enseignante", - "intro_dialogue": "Hé, bonjour ! Aurais-tu une minute à accorder à mes élèves ?$Je leur apprends ce que sont les capacités et\nj’adorerais que tu leur fasse une démosntration.$Tu serais d’accord pour nous montrer ça avec un de tes Pokémon ?", - "title": "En situation réelle", - "description": "Une enseignante vous demande de faire la démonstration d’une capacité d’un de vos Pokémon. En fonction de la capacité, elle pourrait vous donner quelque chose d’utile.", - "query": "Utiliser une capacité de quelle catégorie ?", + "intro_dialogue": "Hé, bonjour !\nAurais-tu une minute à accorder à mes élèves ?$Je leur apprends ce que sont les capacités et\nj’adorerais que tu leur fasse une démosntration.$Tu serais d’accord pour nous montrer ça\navec un de tes Pokémon ?", + "title": "Sortie scolaire", + "description": "Une enseignante vous demande de faire la démonstration d’une capacité d’un de vos Pokémon.\nEn fonction de la capacité, elle pourrait vous donner quelque chose d’utile.", + "query": "Utiliser quelle catégorie de capacité ?", "option": { "1": { "label": "Physique", - "tooltip": "(+) Récompense d’objets Physiques" + "tooltip": "(+) Objets de boost axés sur le Physique à la prochaine boutique" }, "2": { "label": "Spéciale", - "tooltip": "(+) Récompense d’objets Spéciaux" + "tooltip": "(+) Objets de boost axés sur le Spécial à la prochaine boutique" }, "3": { "label": "De Statut", - "tooltip": "(+) Récompense d’objets de Statut" + "tooltip": "(+) Objets de boost axés sur le Statut à la prochaine boutique" }, "selected": "{{pokeName}} fait une incroyable démonstration de sa capacité {{move}} !" }, "second_option_prompt": "Choisissez une capacité à utiliser.", - "incorrect": "…$Ce n’est pas une capacité {{moveCategory}} !\nJe suis désolée, mais je ne peux rien te donner.$Venez les enfants, on va chercher mieux ailleurs.", + "incorrect": "…$Ce n’est pas une capacité {{moveCategory}} !\nJe suis désolée, mais je ne peux rien te donner.$Venez les enfants, on va trouver mieux ailleurs.", "incorrect_exp": "Il semble que vous avez appris une précieuse leçon ?$Votre Pokémon a gagné un peu d’expérience.", "correct": "Merci beaucoup de nous avoir accordé de ton temps !\nJ’espère que ces quelques objets de seront utiles !", "correct_exp": "{{pokeName}} a aussi gagné un beaucoup d’expérience !", From 32b6ffeb4dcbf7b74b30d32b484740abb322db78 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 23:32:35 +0200 Subject: [PATCH 52/88] Update dark-deal-dialogue.json --- .../fr/mystery-encounters/dark-deal-dialogue.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/locales/fr/mystery-encounters/dark-deal-dialogue.json b/src/locales/fr/mystery-encounters/dark-deal-dialogue.json index 5de58697ec9..3d419eedf8e 100644 --- a/src/locales/fr/mystery-encounters/dark-deal-dialogue.json +++ b/src/locales/fr/mystery-encounters/dark-deal-dialogue.json @@ -1,23 +1,23 @@ { - "intro": "Un homme suspect vêtu d’un manteau en lambeaux\nse tient au milieu du chemin…", - "speaker": "Type chelou", - "intro_dialogue": "Hé, toi!$Je travaille sur un dispositif qui permet\nd’éveiller la puissance d’un Pokémon !$Il restructure complètement les atomes du Pokémon\nen une forme bien plus puissante.$Héhé…@d{64} Je n’ai besoin que de sac-@d{32}\nEuuh, sujets tests, pour prouver son fonctionnement.", + "intro": "Un homme suspect vêtu d’une blouse en lambeaux\nse tient au milieu du chemin…", + "speaker": "Savant fou", + "intro_dialogue": "Hé, toi !$Je travaille sur un dispositif qui permet d’éveiller\nla vraie puissance d’un Pokémon !$Il restructure complètement les atomes du Pokémon\npour en faire une version bien plus puissante.$Héhé…@d{64} Je n’ai besoin que de sac-@d{32}\nEuuh, sujets tests, pour prouver son fonctionnement.", "title": "L’Expérience interdite", - "description": "Le type chelou tient dans ses mains quelques Poké Balls.\n« T’inquites pas, je gère ! Voilà quelques Poké Balls plutôt efficaces en caution, tout ce dont j’ai besoin, c’est un de tes Pokémon ! Héhé… »", + "description": "Ce scientifique à l’air un peu taré tient dans ses mains quelques Poké Balls.\n« T’inquites pas, je gère ! Voilà quelques Poké Balls plutôt efficaces en caution, tout ce dont j’ai besoin, c’est un de tes Pokémon ! Héhé… »", "query": "Que voulez-vous faire ?", "option": { "1": { "label": "Accepter", - "tooltip": "(+) 5 Rogue Balls\n(?) Améliorer un Pokémon au hasard", - "selected_dialogue": "Ah bien, ce {{pokeName}} fera parfaitement l’affaire !$Je précise que si quelque chose tourne mal,\nje ne suis pas responsable !@d{32} Héhé…", + "tooltip": "(+) 5 Rogue Balls\n(?) Améliore un Pokémon au hasard", + "selected_dialogue": "Ah bien, ton {{pokeName}} fera parfaitement l’affaire !$Je précise que si quelque chose tourne mal,\nje ne suis pas responsable !@d{32} Héhé…", "selected_message": "L’homme vous remet 5 Rogue Balls.$Votre {{pokeName}} saute dans l’étrange dispositif…$Le dispositif émet des lumières\nclignotantes et des bruits douteux !$…@d{96} Quelque chose sort du dispositif avec fureur !" }, "2": { "label": "Refuser", "tooltip": "(-) Aucune récompense", - "selected": "On a même plus le droit d’aider maintenant ?\nPfff !" + "selected": "On a même plus le droit de rendre service maintenant ?\nPfff !" } }, "outro": "Après cette épuisante rencontre,\nvous reprenez vos esprits et repartez." From 7d817fbc1bcd3c67bd9602fc403f570378b81d92 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 23:46:40 +0200 Subject: [PATCH 53/88] Update weird-dream-dialogue.json --- .../fr/mystery-encounters/weird-dream-dialogue.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/locales/fr/mystery-encounters/weird-dream-dialogue.json b/src/locales/fr/mystery-encounters/weird-dream-dialogue.json index c2e2d45c620..ab8e14c6ee4 100644 --- a/src/locales/fr/mystery-encounters/weird-dream-dialogue.json +++ b/src/locales/fr/mystery-encounters/weird-dream-dialogue.json @@ -3,15 +3,15 @@ "speaker": "Femme mystérieuse", "intro_dialogue": "J’ai tout vu…\nTes futurs, tes passés…$Les perçois-tu aussi, mon enfant ?", "title": "???", - "description": "Les paroles de cette mystérieuse femme raisonnent dans votre tête. Ce n’est pas qu’une simple voix isolée, mais une infinité, d’une infinité d’espace-temps et de réalités. Vous commencez ressentir des vertiges à mesure que cette question s’empare de votre esprit…\n\n@[TOOLTIP_TITLE]{« J’ai tout vu… Tes futurs, tes passés… Les perçois-tu aussi, mon enfant ? »}", + "description": "Les paroles de cette mystérieuse femme raisonnent dans votre tête. Ce n’est pas qu’une simple voix isolée, mais une infinité, d’une infinité d’espace-temps et de réalités.\nVous commencez ressentir des vertiges à mesure que cette question s’empare de votre esprit…\n\n@[TOOLTIP_TITLE]{« J’ai tout vu… Tes futurs, tes passés… Les perçois-tu aussi, mon enfant ? »}", "query": "Que voulez-vous faire ?", "option": { "1": { "label": "« Je les vois »", "tooltip": "@[SUMMARY_GREEN]{(?) Affecte vos Pokémon}", - "selected": "Sa main s’approche de vous et vous touche.\nTout devient subitement sombre.$Puis enfin…@d{64} La lumière.\nChaque espace-temps. Chacune de vos incarnations.$Tout de qui a composé, compose\net composersa votre être…@d{64}", - "cutscene": "Vous percevez vos Pokémon,@d{32} convergeant de chaque\nde chaque réalité pour former quelque chose de nouveau…@d{64}", - "dream_complete": "Vous vous réveillez, mais la femme a disparu…\nOu bien n’etait-elle qu’une hallucination ?$.@d{32}.@d{32}.@d{32}$Les Pokémon de votre équipe ont changé…$Mais alors, comment peuvent-ils quand même vous sembler si familiers ?" + "selected": "Sa main s’approche de vous et vous touche.\nTout devient subitement sombre.$Puis enfin…@d{64} La lumière.\nChaque espace-temps. Chacune de vos incarnations.$Tout ce qui a composé, compose\net composersa votre être…@d{64}", + "cutscene": "Vous percevez vos Pokémon,@d{32} convergeant de chaque\nréalité pour former quelque chose de nouveau…@d{64}", + "dream_complete": "Vous vous réveillez, mais la femme a disparu…\nOu bien n’etait-elle qu’une hallucination ?$.@d{32}.@d{32}.@d{32}$Les Pokémon de votre équipe ont changé…$Mais alors, comment peuvent-ils quand même\ntoujours vous sembler si familiers ?" }, "2": { "label": "Partir en courant", From 8ddd19ffa320775cc7bfcbb26c12bf73051ba50b Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 14 Sep 2024 23:58:38 +0200 Subject: [PATCH 54/88] Update safari-zone-dialogue.json --- .../mystery-encounters/safari-zone-dialogue.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/locales/fr/mystery-encounters/safari-zone-dialogue.json b/src/locales/fr/mystery-encounters/safari-zone-dialogue.json index a572a8a1a48..97838e04943 100644 --- a/src/locales/fr/mystery-encounters/safari-zone-dialogue.json +++ b/src/locales/fr/mystery-encounters/safari-zone-dialogue.json @@ -7,7 +7,7 @@ "1": { "label": "Entrer", "tooltip": "(-) Payer {{option1Money, money}}\n@[SUMMARY_GREEN]{(?) Parc Safari}", - "selected": "Tentez votre chance !" + "selected": "Vous tentez votre chance !" }, "2": { "label": "Partir", @@ -29,18 +29,18 @@ "3": { "label": "Lancer de la boue", "tooltip": "(+) Diminue le risque de fuite\n(-) Diminue le taux de capture", - "selected": "Vous lancez un pe ude boue !" + "selected": "Vous lancez un peu de boue !" }, "4": { "label": "Fuite", "tooltip": "(?) Fuir ce Pokémon" }, - "watching": "{{pokemonName}} vous observe attentivement.", - "eating": "{{pokemonName}} est en train de manger.", - "busy_eating": "{{pokemonName}} se concentre sur sa nourriture.", + "watching": "{{pokemonName}} vous observe\nattentivement.", + "eating": "{{pokemonName}} est en train\nde manger.", + "busy_eating": "{{pokemonName}} se concentre\nsur sa nourriture.", "angry": "{{pokemonName}} se fâche !", - "beside_itself_angry": "{{pokemonName}} laisse exploser sa colère !", - "remaining_count": "Il rest {{remainingCount}} Pokémon !" + "beside_itself_angry": "{{pokemonName}} laisse\nexploser sa colère !", + "remaining_count": "Il reste {{remainingCount}} Pokémon !" }, "outro": "Cette excursion était fun !" } From 0dd238003229bbe89da57a3e81f08b89e86a68e5 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 00:51:38 +0200 Subject: [PATCH 55/88] Update lost-at-sea-dialogue.json --- .../mystery-encounters/lost-at-sea-dialogue.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/locales/fr/mystery-encounters/lost-at-sea-dialogue.json b/src/locales/fr/mystery-encounters/lost-at-sea-dialogue.json index f1e6d16264a..3e8304d2018 100644 --- a/src/locales/fr/mystery-encounters/lost-at-sea-dialogue.json +++ b/src/locales/fr/mystery-encounters/lost-at-sea-dialogue.json @@ -1,27 +1,27 @@ { - "intro": "Vous errez sans but en pleine mer et n’arrivez nulle part.", + "intro": "Vous errez sans but en pleine mer\net n’arrivez à rien.", "title": "Un cap pas clair", - "description": "La mer n’est pas très clémente dans cette zone et vous commencez à faiblir.\nÇa sent le roussi. Est-il possible de se sortir de cette situation ?", + "description": "La mer n’est pas très clémente dans cette zone et vous vous sentez faiblir à petit feu.\nÇa commence à sentir le roussi.\nEst-il au moins possible de se sortir de cette situation ?", "query": "Que voulez-vous faire ?", "option": { "1": { - "label": "{{option1PrimaryName}} pourrait aider", + "label": "{{option1PrimaryName}} peut aider", "label_disabled": "{{option1RequiredMove}} impossible", "tooltip": "(+) {{option1PrimaryName}} vous sauve\n(+) {{option1PrimaryName}} gagne un peu d’Exp", "tooltip_disabled": "Vous n’avez aucun Pokémon avec {{option1RequiredMove}}", - "selected": "{{option1PrimaryName}} nage en tête et vous guide.${{option1PrimaryName}} semble également ressorti plus fort de cette épreuve difficile !" + "selected": "{{option1PrimaryName}} nage en tête et vous guide.${{option1PrimaryName}} semble ressorti plus fort de cette épreuve difficile !" }, "2": { - "label": "{{option2PrimaryName}} pourrait aider", + "label": "{{option2PrimaryName}} peut aider", "label_disabled": "{{option2RequiredMove}} impossible", "tooltip": "(+) {{option2PrimaryName}} vous sauve\n(+) {{option2PrimaryName}} gagne un peu d’Exp", "tooltip_disabled": "Vous n’avez aucun Pokémon avec {{option2RequiredMove}}", - "selected": "{{option2PrimaryName}} vole au dessus de votre embarcation et vous guide.${{option2PrimaryName}} semble également ressorti plus fort de cette épreuve difficile !" + "selected": "{{option2PrimaryName}} vole au dessus de votre embarcation et vous guide.${{option2PrimaryName}} semble ressorti plus fort de cette épreuve difficile !" }, "3": { "label": "Naviguer au jugé", "tooltip": "(-) Votre équipe perd {{damagePercentage}}% de ses PV totaux", - "selected": "Vous vous laissez porter, sans but, quand soudainement vous remarquez un lieu famillier.$Vous et vos Pokémon êtes compètement rincés de fatigue par cette épreuve." + "selected": "Vous vous laissez porter sans but par les vagues, quand soudainement vous remarquez un lieu famillier.$Vous et vos Pokémon êtes compètement rincés\nde fatigue par cette épreuve." } }, "outro": "Vous retrouvez un cap clair." From e3c5cb42235ad7f704af0b33ed98427f74bfb920 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 01:00:18 +0200 Subject: [PATCH 56/88] Update fiery-fallout-dialogue.json --- .../fr/mystery-encounters/fiery-fallout-dialogue.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/locales/fr/mystery-encounters/fiery-fallout-dialogue.json b/src/locales/fr/mystery-encounters/fiery-fallout-dialogue.json index bb72b3b5313..f85f64830ad 100644 --- a/src/locales/fr/mystery-encounters/fiery-fallout-dialogue.json +++ b/src/locales/fr/mystery-encounters/fiery-fallout-dialogue.json @@ -1,13 +1,13 @@ { - "intro": "Un vent incandescent de fumées et de cendres arrive sur vous !", - "title": "Fiery Fallout", - "description": "La visiblité est quasi nulle à cause des cendres et les braises tourbillonnantes. Il doit forcément y avoir une quelconque… source responsable de ces conditions. Mais que pourrait causer un phénomène d’une telle amplitude ?", + "intro": "Un vent incandescent de fumées et de cendres\nvous fonce dessus !", + "title": "Fait chaud là, non ?", + "description": "La visiblité est quasi nulle à cause des cendres et les braises tourbillonnantes. Il doit forcément y avoir une quelconque source responsable de ces conditions. Mais que pourrait causer un phénomène d’une telle ampleur ?", "query": "Que voulez-vous faire ?", "option": { "1": { "label": "Chercher la source", "tooltip": "(?) Trouver la source\n(-) Combat difficile", - "selected": "Vous pénétrez tant bien que mal dans la tempête et trouvez deux {{volcaronaName}} en pleine parade nuptiale !$Ils n’apprécient guère d’avoir été interrompus et vous attaquent !" + "selected": "Vous pénétrez tant bien que mal dans la tempête et y trouvez deux {{volcaronaName}} en pleine parade nuptiale !$Ils n’apprécient guère d’avoir été interrompus\net vous attaquent !" }, "2": { "label": "S’accroupir", @@ -19,7 +19,7 @@ "label": "Un type Feu à l’aide", "tooltip": "(+) Met fin à la météo\n(+) Gain d’un Charbon", "disabled_tooltip": "Vous avez besoin d’au moins 2 Pokémon Feu pour choisir cette option", - "selected": "Vos {{option3PrimaryName}} et {{option3SecondaryName}} vous guident et découvez deux {{volcaronaName}} en pleine parade nuptiale !$Heureusement, vos Pokémon parviennent à les calmer, et passent leur chemin sans causer de problèmes." + "selected": "Vos {{option3PrimaryName}} et {{option3SecondaryName}} vous guident et tombez sur deux {{volcaronaName}} en pleine parade nuptiale !$Heureusement, vos Pokémon parviennent à les calmer, et passent leur chemin sans causer de problèmes." } }, "found_charcoal": "Alors que la météo se calme, votre {{leadPokemon}} repère quelque chose au sol.$@s{item_fanfare}{{leadPokemon}} obtient\nun Charobn !" From 9f8e9de9676ae965af8e5d5275375cb03a58f3ff Mon Sep 17 00:00:00 2001 From: DanStevensonx <114961842+DanStevensonx@users.noreply.github.com> Date: Sun, 15 Sep 2024 01:12:05 +0200 Subject: [PATCH 57/88] Update menu.json (#4258) Added a line-break to the server connection error in Spanish --- src/locales/es/menu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/es/menu.json b/src/locales/es/menu.json index ef1ae93dd82..a35025819fa 100644 --- a/src/locales/es/menu.json +++ b/src/locales/es/menu.json @@ -51,7 +51,7 @@ "renamePokemon": "Renombrar Pokémon.", "rename": "Renombrar", "nickname": "Apodo", - "errorServerDown": "¡Ups! Ha habido un problema al contactar con el servidor.\n\nPuedes mantener esta ventana abierta, el juego se reconectará automáticamente.", + "errorServerDown": "¡Ups! Ha habido un problema al contactar con el servidor.\n\nPuedes mantener esta ventana abierta,\nel juego se reconectará automáticamente.", "noSaves": "No tienes ninguna partida guardada registrada!", "tooManySaves": "¡Tienes demasiadas partidas guardadas registradas!" } From aecdcd34f55520c7d7226ded792901fec312fe76 Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Sun, 15 Sep 2024 01:12:55 +0200 Subject: [PATCH 58/88] [BUG] Fix a couple of bugs regarding MEs and their localization (#4261) * Fixed SURF and FLY not beeing localized in "lost at sea" Fixed Mysterious Challenger Title not beeing correct Fixed Winstrate Names not beeing localized * Revert the winstrate fix. It breaks other trainer battles for some reason... * A new way of giving the winstrates localized names (and for the future all named trainers that dont use a "initFor" method) * Updated test (with ok from ImperialSympathizer) * Made the expected value simpler * FLY and SURF can be localized much simpler --- .../encounters/lost-at-sea-encounter.ts | 5 ++-- .../mysterious-challengers-encounter.ts | 1 + src/data/trainer-config.ts | 27 +++++++++++++++---- .../encounters/lost-at-sea-encounter.test.ts | 6 ++--- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts b/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts index 0f0538d7542..16568d8cb7d 100644 --- a/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts +++ b/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts @@ -10,6 +10,7 @@ import { applyDamageToPokemon } from "#app/data/mystery-encounters/utils/encount import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; +import {PokemonMove} from "#app/field/pokemon"; const OPTION_1_REQUIRED_MOVE = Moves.SURF; const OPTION_2_REQUIRED_MOVE = Moves.FLY; @@ -44,8 +45,8 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with const encounter = scene.currentBattle.mysteryEncounter!; encounter.setDialogueToken("damagePercentage", String(DAMAGE_PERCENTAGE)); - encounter.setDialogueToken("option1RequiredMove", Moves[OPTION_1_REQUIRED_MOVE]); - encounter.setDialogueToken("option2RequiredMove", Moves[OPTION_2_REQUIRED_MOVE]); + encounter.setDialogueToken("option1RequiredMove", new PokemonMove(OPTION_1_REQUIRED_MOVE).getName()); + encounter.setDialogueToken("option2RequiredMove", new PokemonMove(OPTION_2_REQUIRED_MOVE).getName()); return true; }) diff --git a/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts b/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts index 230f5242a36..71a44bd6852 100644 --- a/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts +++ b/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts @@ -87,6 +87,7 @@ export const MysteriousChallengersEncounter: MysteryEncounter = ); const e4Template = trainerPartyTemplates.ELITE_FOUR; const brutalConfig = trainerConfigs[brutalTrainerType].clone(); + brutalConfig.title = trainerConfigs[brutalTrainerType].title; brutalConfig.setPartyTemplates(e4Template); // @ts-ignore brutalConfig.partyTemplateFunc = null; // Overrides gym leader party template func diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 0323c6d43c4..8b96e3cefb8 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -255,7 +255,9 @@ export class TrainerConfig { name = i18next.t("trainerNames:rival"); } } + this.name = name; + return this; } @@ -899,6 +901,20 @@ export class TrainerConfig { return this; } + /** + * Sets a localized name for the trainer. This should only be used for trainers that dont use a "initFor" function and are considered "named" trainers + * @param name - The name of the trainer. + * @returns {TrainerConfig} The updated TrainerConfig instance. + */ + setLocalizedName(name: string): TrainerConfig { + // Check if the internationalization (i18n) system is initialized. + if (!getIsInitialized()) { + initI18n(); + } + this.name = i18next.t(`trainerNames:${name.toLowerCase()}`); + return this; + } + /** * Retrieves the title for the trainer based on the provided trainer slot and variant. * @param {TrainerSlot} trainerSlot - The slot to determine which title to use. Defaults to TrainerSlot.NONE. @@ -2270,21 +2286,22 @@ export const trainerConfigs: TrainerConfigs = { } p.pokeball = PokeballType.MASTER_BALL; })), - [TrainerType.VICTOR]: new TrainerConfig(++t).setName("Victor").setTitle("The Winstrates") + [TrainerType.VICTOR]: new TrainerConfig(++t).setTitle("The Winstrates").setLocalizedName("Victor") .setMoneyMultiplier(1) // The Winstrate trainers have total money multiplier of 6 .setPartyTemplates(trainerPartyTemplates.ONE_AVG_ONE_STRONG), - [TrainerType.VICTORIA]: new TrainerConfig(++t).setName("Victoria").setTitle("The Winstrates") + [TrainerType.VICTORIA]: new TrainerConfig(++t).setTitle("The Winstrates").setLocalizedName("Victoria") .setMoneyMultiplier(1) .setPartyTemplates(trainerPartyTemplates.ONE_AVG_ONE_STRONG), - [TrainerType.VIVI]: new TrainerConfig(++t).setName("Vivi").setTitle("The Winstrates") + [TrainerType.VIVI]: new TrainerConfig(++t).setTitle("The Winstrates").setLocalizedName("Vivi") .setMoneyMultiplier(1) .setPartyTemplates(trainerPartyTemplates.TWO_AVG_ONE_STRONG), - [TrainerType.VICKY]: new TrainerConfig(++t).setName("Vicky").setTitle("The Winstrates") + [TrainerType.VICKY]: new TrainerConfig(++t).setTitle("The Winstrates").setLocalizedName("Vicky") .setMoneyMultiplier(1) .setPartyTemplates(trainerPartyTemplates.ONE_AVG), - [TrainerType.VITO]: new TrainerConfig(++t).setName("Vito").setTitle("The Winstrates") + [TrainerType.VITO]: new TrainerConfig(++t).setTitle("The Winstrates").setLocalizedName("Vito") .setMoneyMultiplier(2) .setPartyTemplates(new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(2, PartyMemberStrength.STRONG))), [TrainerType.BUG_TYPE_SUPERFAN]: new TrainerConfig(++t).setMoneyMultiplier(2.25).setEncounterBgm(TrainerType.ACE_TRAINER) .setPartyTemplates(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE)) }; + diff --git a/src/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts b/src/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts index 5d43172f6c0..82670e32daa 100644 --- a/src/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts @@ -3,7 +3,6 @@ import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encount import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Biome } from "#app/enums/biome"; -import { Moves } from "#app/enums/moves"; import { MysteryEncounterType } from "#app/enums/mystery-encounter-type"; import { Species } from "#app/enums/species"; import GameManager from "#app/test/utils/gameManager"; @@ -16,6 +15,7 @@ import BattleScene from "#app/battle-scene"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { PartyExpPhase } from "#app/phases/party-exp-phase"; + const namespace = "mysteryEncounter:lostAtSea"; /** Blastoise for surf. Pidgeot for fly. Abra for none. */ const defaultParty = [Species.BLASTOISE, Species.PIDGEOT, Species.ABRA]; @@ -102,8 +102,8 @@ describe("Lost at Sea - Mystery Encounter", () => { const onInitResult = onInit!(scene); expect(LostAtSeaEncounter.dialogueTokens?.damagePercentage).toBe("25"); - expect(LostAtSeaEncounter.dialogueTokens?.option1RequiredMove).toBe(Moves[Moves.SURF]); - expect(LostAtSeaEncounter.dialogueTokens?.option2RequiredMove).toBe(Moves[Moves.FLY]); + expect(LostAtSeaEncounter.dialogueTokens?.option1RequiredMove).toBe("Surf"); + expect(LostAtSeaEncounter.dialogueTokens?.option2RequiredMove).toBe("Fly"); expect(onInitResult).toBe(true); }); From d8dbc471af17fe1643c7d857579b4ebd9e7e1e11 Mon Sep 17 00:00:00 2001 From: innerthunder <168692175+innerthunder@users.noreply.github.com> Date: Sat, 14 Sep 2024 16:13:32 -0700 Subject: [PATCH 59/88] [Bug][Beta] Fix Pokemon info flyout being offset on switchout after double battle (#4260) --- src/field/pokemon.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index faae3b06ba0..088d11abf90 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -592,8 +592,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { // Resetting properties should not be shown on the field this.setVisible(false); - // Reset field position - this.setFieldPosition(FieldPosition.CENTER); + // Remove the offset from having a Substitute active if (this.isOffsetBySubstitute()) { this.x -= this.getSubstituteOffset()[0]; this.y -= this.getSubstituteOffset()[1]; From 79fa80cfd8a20a45308311c478a2be7b48c71246 Mon Sep 17 00:00:00 2001 From: innerthunder <168692175+innerthunder@users.noreply.github.com> Date: Sat, 14 Sep 2024 16:14:37 -0700 Subject: [PATCH 60/88] [Bug][Beta] Fix error in message sequencing on critical hits (#4259) --- src/field/pokemon.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 088d11abf90..453bce71503 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -2620,10 +2620,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return result; } - if (isCritical) { - this.scene.queueMessage(i18next.t("battle:hitResultCriticalHit")); - } - // In case of fatal damage, this tag would have gotten cleared before we could lapse it. const destinyTag = this.getTag(BattlerTagType.DESTINY_BOND); @@ -2666,6 +2662,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } + if (isCritical) { + this.scene.queueMessage(i18next.t("battle:hitResultCriticalHit")); + } + // want to include is.Fainted() in case multi hit move ends early, still want to render message if (source.turnData.hitsLeft === 1 || this.isFainted()) { switch (result) { From d06f3e6b2978c2ce91a8ec5f858dd7cc427d94bd Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 01:19:37 +0200 Subject: [PATCH 61/88] Update the-strong-stuff-dialogue.json --- .../the-strong-stuff-dialogue.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/locales/fr/mystery-encounters/the-strong-stuff-dialogue.json b/src/locales/fr/mystery-encounters/the-strong-stuff-dialogue.json index c80443ef8fd..45de078d550 100644 --- a/src/locales/fr/mystery-encounters/the-strong-stuff-dialogue.json +++ b/src/locales/fr/mystery-encounters/the-strong-stuff-dialogue.json @@ -1,21 +1,21 @@ { - "intro": "C’est un {{shuckleName}} absolument énorme et ce qui semble être une grosse réserve de… jus ?", + "intro": "C’est un {{shuckleName}} absolument énorme et\nce qui semble être un énorme bol de… jus ?", "title": "Un breuvage qui arrache", - "description": "Le {{shuckleName}} qui bloque la route semble incroyablement puissant. Le jus qui l’accompagne semble lui émaner une forme étrange de puissance.\n\nLe {{shuckleName}} tend un patte dans votre direction. Il semble vouloir quelque chose…", + "description": "Ce {{shuckleName}} qui bloque la route semble incroyablement puissant.\nLe jus qui l’accompagne semble émaner une étrange forme de puissance.\n\nIl tend une patte dans votre direction, l’air de vouloir quelque chose…", "query": "Que voulez-vous faire ?", "option": { "1": { - "label": "Approcher le {{shuckleName}}", + "label": "Approcher {{shuckleName}}", "tooltip": "(?) Quelque chose de terrible ou d’incroyable peut se produire", - "selected": "Vous perdez connaissance.", - "selected_2": "@f{150}À votre réveil, le {{shuckleName}} est parti\net la réserve de jus complètement vide.${{highBstPokemon1}} et {{highBstPokemon2}}\nsont vicitmes d’une forte léthargie !$Leurs stats de base sont baissées de {{reductionValue}} !$Mais par contre, vos autres Pokémon sont envahis d’une vigueur jamais vue !$Leurs stats de base sont augumentées de {{increaseValue}} !" + "selected": "Vous perdez subitement connaissance.", + "selected_2": "@f{150}À votre réveil, le {{shuckleName}} est parti et\nle bol de jus est complètement vide.${{highBstPokemon1}} et {{highBstPokemon2}}\nsont vicitmes d’une forte léthargie !$Leurs stats de base sont baissées de {{reductionValue}} !$Mais par contre, vos autres Pokémon sont envahis\nd’une vigueur encore jamais vue !$Leurs stats de base sont augumentées de {{increaseValue}} !" }, "2": { - "label": "Affronter le {{shuckleName}}", + "label": "Affronter {{shuckleName}}", "tooltip": "(-) Combat difficile\n(+) Récompense spéciale", "selected": "Le {{shuckleName}} s’énerve, boit un peu de jus et attaque !", "stat_boost": "Le jus de {{shuckleName}} augumente ses stats !" } }, - "outro": "Quelles étrange tournure d’évènements." + "outro": "Quelle étrange tournure des évènements." } From 3d089c488d3e5ef8f2450521cf9a3ba1134872f5 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 01:27:21 +0200 Subject: [PATCH 62/88] Update the-winstrate-challenge-dialogue.json --- .../mystery-encounters/the-winstrate-challenge-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/mystery-encounters/the-winstrate-challenge-dialogue.json b/src/locales/fr/mystery-encounters/the-winstrate-challenge-dialogue.json index c4a7880c12d..1ab771617c6 100644 --- a/src/locales/fr/mystery-encounters/the-winstrate-challenge-dialogue.json +++ b/src/locales/fr/mystery-encounters/the-winstrate-challenge-dialogue.json @@ -1,7 +1,7 @@ { "intro": "C’est une famille dans la cour de leur maison !", "speaker": "La Famille Stratège", - "intro_dialogue": "Nous sommes les Stratège !$Ça te dirait d’affronter la famille dans une série de combats ?", + "intro_dialogue": "Nous sommes les Stratège !$Ça te dirait d’affronter la famille dans une série\nde combats ?", "title": "Le défi de la Famille Stratège", "description": "Les Stratège sont une famille de 5 Dresseurs, et ne demandent qu’à se battre ! Si vous parvenez à tous les battre à la suite, ils vous remettront une grosse récompense. Vous sentez-vous d’encaisser ce défi ?", "query": "Que voulez-vous faire ?", @@ -17,6 +17,6 @@ "selected": "C’est bien dommage. Hé, ton équipe a quand même l’air bien au bout, ça te dirait de rester te reposer un peu ?" } }, - "victory": "Félicitations pour avoir relevé notre défi !$Tout d’abourd, nous aimerions t’offir ce Coupon.", + "victory": "Félicitations pour avoir relevé notre défi !$Tout d’abord, nous aimerions t’offir ce Coupon.", "victory_2": "Mais aussi, notre famille utilise ce Bracelet Macho\npour entrainer plus efficacement nos Pokémon.$Il ne te sera peut-être d’aucune utilité vu que tu nous as tous battus, mais on serait ravis que tu l’accepte !" } From f1601bba76f75a453fd86eb4d4c232f0e0a67ba1 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 02:04:14 +0200 Subject: [PATCH 63/88] Update src/locales/es/mystery-encounters/berries-abound-dialogue.json Co-authored-by: DanStevensonx <114961842+DanStevensonx@users.noreply.github.com> --- src/locales/es/mystery-encounters/berries-abound-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/es/mystery-encounters/berries-abound-dialogue.json b/src/locales/es/mystery-encounters/berries-abound-dialogue.json index 152a564a0be..4b9da99fbeb 100644 --- a/src/locales/es/mystery-encounters/berries-abound-dialogue.json +++ b/src/locales/es/mystery-encounters/berries-abound-dialogue.json @@ -2,7 +2,7 @@ "intro": "¡Hay un gran arbusto de bayas cerca de ese Pokémon!", "title": "Bayas Abundantes", "description": "Parece que hay un Pokémon fuerte protegiendo un arbusto de bayas. Luchar es el enfoque directo, pero parece fuerte. ¿Quizás un Pokémon rápido podría agarrar algunas bayas sin ser descubierto?", - "query": "¿Que harás?", + "query": "¿Qué harás?", "berries": "¡Bayas!", "option": { "1": { From df8e26b1a567958fbd3cbfd496e780367940e241 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 02:04:27 +0200 Subject: [PATCH 64/88] Update src/locales/es/mystery-encounters/clowning-around-dialogue.json Co-authored-by: DanStevensonx <114961842+DanStevensonx@users.noreply.github.com> --- .../clowning-around-dialogue.json | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/src/locales/es/mystery-encounters/clowning-around-dialogue.json b/src/locales/es/mystery-encounters/clowning-around-dialogue.json index 17781240838..5199c8d6432 100644 --- a/src/locales/es/mystery-encounters/clowning-around-dialogue.json +++ b/src/locales/es/mystery-encounters/clowning-around-dialogue.json @@ -1,34 +1,33 @@ { - "intro": "It's...@d{64} a clown?", - "speaker": "Clown", - "intro_dialogue": "Bumbling buffoon, brace for a brilliant battle!\nYou'll be beaten by this brawling busker!", - "title": "Clowning Around", - "description": "Something is off about this encounter. The clown seems eager to goad you into a battle, but to what end?\n\nThe {{blacephalonName}} is especially strange, like it has @[TOOLTIP_TITLE]{weird types and ability.}", - "query": "What will you do?", + "intro": "¿Es un...@d{64} payaso?", + "speaker": "Payaso", + "intro_dialogue": "¡Bufón torpe, prepárate para una batalla brillante! ¡Serás derrotado por este trovador peleador!", + "description": "Algo no esta bien en este encuentro. El payaso parece ansioso por provocarte a una batalla, ¿pero con qué fin? El {{blacephalonName}} es especialmente extraño, como si tuviera @[TOOLTIP_TITLE]{tipos y habilidades raros.}", + "query": "¿Qué harás?", "option": { "1": { - "label": "Battle the Clown", - "tooltip": "(-) Strange Battle\n(?) Affects Pokémon Abilities", - "selected": "Your pitiful Pokémon are poised for a pathetic performance!", - "apply_ability_dialogue": "A sensational showcase!\nYour savvy suits a sensational skill as spoils!", - "apply_ability_message": "The clown is offering to permanently Skill Swap one of your Pokémon's ability to {{ability}}!", - "ability_prompt": "Would you like to permanently teach a Pokémon the {{ability}} ability?", - "ability_gained": "@s{level_up_fanfare}{{chosenPokemon}} gained the {{ability}} ability!" + "label": "Enfrentarse al Payaso", + "tooltip": "(-) Batalla extraña\n(?) Afecta las habilidades de los Pokémon", + "selected": "¡Tus patéticos Pokémon están listos para una actuación patética!", + "apply_ability_dialogue": "¡Una exhibición sensacional! ¡Tu astucia se adapta a una habilidad sensacional como recompensa!", + "apply_ability_message": "¡El payaso está ofreciendo intercambiar permanentemente la habilidad de uno de tus Pokémon por {{ability}}!", + "ability_prompt": "¿Te gustaría enseñar permanentemente a un Pokémon la habilidad {{ability}}?", + "ability_gained": "¡@s{level_up_fanfare}{{chosenPokemon}} obtenió la habilidad {{ability}}!" }, "2": { - "label": "Remain Unprovoked", - "tooltip": "(-) Upsets the Clown\n(?) Affects Pokémon Items", - "selected": "Dismal dodger, you deny a delightful duel?\nFeel my fury!", - "selected_2": "The clown's {{blacephalonName}} uses Trick!\nAll of your {{switchPokemon}}'s items were randomly swapped!", - "selected_3": "Flustered fool, fall for my flawless deception!" + "label": "No involucrarse", + "tooltip": "(-) Molesta al payaso\n(?) Afecta los objetos de los Pokémon", + "selected": "¡Cobarde desdichado, niegas un exquisito duelo?\n ¡Siente mi furia!", + "selected_2": "¡El {{blacephalonName}} del payaso usa Truco! ¡Todos los objetos de tu {{switchPokemon}} fueron intercambiados al azar!", + "selected_3": "¡Tonto desconcertado, cae en mi engaño impecable!" }, "3": { - "label": "Return the Insults", - "tooltip": "(-) Upsets the Clown\n(?) Affects Pokémon Types", - "selected": "Dismal dodger, you deny a delightful duel?\nFeel my fury!", - "selected_2": "The clown's {{blacephalonName}} uses a strange move!\nAll of your team's types were randomly swapped!", - "selected_3": "Flustered fool, fall for my flawless deception!" + "label": "Devolver los insultos", + "tooltip": "(-) Molesta al payaso\n(?) Afecta los objetos de los Pokémon", + "selected": "¡Cobarde desdichado, niegas un exquisito duelo?\n ¡Siente mi furia!", + "selected_2": "¡El {{blacephalonName}} del payaso usa un movimiento extraño! ¡Todos los tipos de tu equipo fueron intercambiados al azar!", + "selected_3": "¡Tonto desconcertado, cae en mi engaño impecable!" } }, - "outro": "The clown and his cohorts\ndisappear in a puff of smoke." + "outro": "El payaso y sus secuaces\ndesaparecen en una nube de humo." } \ No newline at end of file From 3a683c0663237269dcfd0ecbb6ab8b7580a7821a Mon Sep 17 00:00:00 2001 From: PrabbyDD <147005742+PrabbyDD@users.noreply.github.com> Date: Sat, 14 Sep 2024 17:11:54 -0700 Subject: [PATCH 65/88] [Bug] Fix for "Moves Can Miss Against Protect, Baneful Bunker, King's Shield" (#4262) * added various tests for protect based moves, reset protect test file bc no easy way to test specifically with protect, and changes in move-effect to fix the issue * adding another non contact move test for baneful bunker * Update src/test/moves/obstruct.test.ts Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> * Update src/test/moves/baneful_bunker.test.ts Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> * Update src/test/moves/baneful_bunker.test.ts Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> * Update src/test/moves/baneful_bunker.test.ts Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> * better descriptions for baneful bunker test --------- Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> --- src/phases/move-effect-phase.ts | 31 ++++----- src/test/moves/baneful_bunker.test.ts | 93 +++++++++++++++++++++++++++ src/test/moves/obstruct.test.ts | 17 +++++ 3 files changed, 126 insertions(+), 15 deletions(-) create mode 100644 src/test/moves/baneful_bunker.test.ts diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index ffd9d45b4bd..c3199166e84 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -102,7 +102,7 @@ export class MoveEffectPhase extends PokemonPhase { * (and not random target) and failed the hit check against its target (MISS), log the move * as FAILed or MISSed (depending on the conditions above) and end this phase. */ - if (!hasActiveTargets || (!move.hasAttr(VariableTargetAttr) && !move.isMultiTarget() && !targetHitChecks[this.targets[0]])) { + if (!hasActiveTargets || (!move.hasAttr(VariableTargetAttr) && !move.isMultiTarget() && !targetHitChecks[this.targets[0]] && !targets[0].getTag(ProtectedTag))) { this.stopMultiHit(); if (hasActiveTargets) { this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: this.getTarget()? getPokemonNameWithAffix(this.getTarget()!) : "" })); @@ -125,20 +125,6 @@ export class MoveEffectPhase extends PokemonPhase { /** Has the move successfully hit a target (for damage) yet? */ let hasHit: boolean = false; for (const target of targets) { - /** - * If the move missed a target, stop all future hits against that target - * and move on to the next target (if there is one). - */ - if (!targetHitChecks[target.getBattlerIndex()]) { - this.stopMultiHit(target); - this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); - if (moveHistoryEntry.result === MoveResult.PENDING) { - moveHistoryEntry.result = MoveResult.MISS; - } - user.pushMoveHistory(moveHistoryEntry); - applyMoveAttrs(MissEffectAttr, user, null, move); - continue; - } /** The {@linkcode ArenaTagSide} to which the target belongs */ const targetSide = target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; @@ -156,6 +142,21 @@ export class MoveEffectPhase extends PokemonPhase { && (hasConditionalProtectApplied.value || (!target.findTags(t => t instanceof DamageProtectedTag).length && target.findTags(t => t instanceof ProtectedTag).find(t => target.lapseTag(t.tagType))) || (this.move.getMove().category !== MoveCategory.STATUS && target.findTags(t => t instanceof DamageProtectedTag).find(t => target.lapseTag(t.tagType)))); + /** + * If the move missed a target, stop all future hits against that target + * and move on to the next target (if there is one). + */ + if (!isProtected && !targetHitChecks[target.getBattlerIndex()]) { + this.stopMultiHit(target); + this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); + if (moveHistoryEntry.result === MoveResult.PENDING) { + moveHistoryEntry.result = MoveResult.MISS; + } + user.pushMoveHistory(moveHistoryEntry); + applyMoveAttrs(MissEffectAttr, user, null, move); + continue; + } + /** Does this phase represent the invoked move's first strike? */ const firstHit = (user.turnData.hitsLeft === user.turnData.hitCount); diff --git a/src/test/moves/baneful_bunker.test.ts b/src/test/moves/baneful_bunker.test.ts new file mode 100644 index 00000000000..c4a3036565c --- /dev/null +++ b/src/test/moves/baneful_bunker.test.ts @@ -0,0 +1,93 @@ +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; +import GameManager from "../utils/gameManager"; +import { Species } from "#enums/species"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { BattlerIndex } from "#app/battle"; +import { StatusEffect } from "#app/enums/status-effect"; + +const TIMEOUT = 20 * 1000; + +describe("Moves - Baneful Bunker", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + + game.override.battleType("single"); + + game.override.moveset(Moves.SLASH); + + game.override.enemySpecies(Species.SNORLAX); + game.override.enemyAbility(Abilities.INSOMNIA); + game.override.enemyMoveset(Moves.BANEFUL_BUNKER); + + game.override.startingLevel(100); + game.override.enemyLevel(100); + }); + test( + "should protect the user and poison attackers that make contact", + async () => { + await game.classicMode.startBattle([Species.CHARIZARD]); + + const leadPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.SLASH); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.phaseInterceptor.to("BerryPhase", false); + expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); + expect(leadPokemon.status?.effect === StatusEffect.POISON).toBeTruthy(); + }, TIMEOUT + ); + test( + "should protect the user and poison attackers that make contact, regardless of accuracy checks", + async () => { + await game.classicMode.startBattle([Species.CHARIZARD]); + + const leadPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.SLASH); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.phaseInterceptor.to("MoveEffectPhase"); + + await game.move.forceMiss(); + await game.phaseInterceptor.to("BerryPhase", false); + expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); + expect(leadPokemon.status?.effect === StatusEffect.POISON).toBeTruthy(); + }, TIMEOUT + ); + + test( + "should not poison attackers that don't make contact", + async () => { + game.override.moveset(Moves.FLASH_CANNON); + await game.classicMode.startBattle([Species.CHARIZARD]); + + const leadPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.FLASH_CANNON); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); + await game.phaseInterceptor.to("MoveEffectPhase"); + + await game.move.forceMiss(); + await game.phaseInterceptor.to("BerryPhase", false); + expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); + expect(leadPokemon.status?.effect === StatusEffect.POISON).toBeFalsy(); + }, TIMEOUT + ); +}); diff --git a/src/test/moves/obstruct.test.ts b/src/test/moves/obstruct.test.ts index 539b11090de..eb12daa785d 100644 --- a/src/test/moves/obstruct.test.ts +++ b/src/test/moves/obstruct.test.ts @@ -43,6 +43,23 @@ describe("Moves - Obstruct", () => { expect(enemy.getStatStage(Stat.DEF)).toBe(-2); }, TIMEOUT); + it("bypasses accuracy checks when applying protection and defense reduction", async () => { + game.override.enemyMoveset(Array(4).fill(Moves.ICE_PUNCH)); + await game.classicMode.startBattle(); + + game.move.select(Moves.OBSTRUCT); + await game.phaseInterceptor.to("MoveEffectPhase"); + await game.move.forceMiss(); + + const player = game.scene.getPlayerPokemon()!; + const enemy = game.scene.getEnemyPokemon()!; + + await game.phaseInterceptor.to("TurnEndPhase"); + expect(player.isFullHp()).toBe(true); + expect(enemy.getStatStage(Stat.DEF)).toBe(-2); + }, TIMEOUT + ); + it("protects from non-contact damaging moves and doesn't lower the opponent's defense by 2 stages", async () => { game.override.enemyMoveset(Array(4).fill(Moves.WATER_GUN)); await game.classicMode.startBattle(); From f7aaf7e1e820e1817a49b39aae01237729ba7447 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 02:30:02 +0200 Subject: [PATCH 66/88] Update weird-dream-dialogue.json --- src/locales/fr/mystery-encounters/weird-dream-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/weird-dream-dialogue.json b/src/locales/fr/mystery-encounters/weird-dream-dialogue.json index ab8e14c6ee4..87f6006d8b1 100644 --- a/src/locales/fr/mystery-encounters/weird-dream-dialogue.json +++ b/src/locales/fr/mystery-encounters/weird-dream-dialogue.json @@ -7,7 +7,7 @@ "query": "Que voulez-vous faire ?", "option": { "1": { - "label": "« Je les vois »", + "label": "« Je les vois. »", "tooltip": "@[SUMMARY_GREEN]{(?) Affecte vos Pokémon}", "selected": "Sa main s’approche de vous et vous touche.\nTout devient subitement sombre.$Puis enfin…@d{64} La lumière.\nChaque espace-temps. Chacune de vos incarnations.$Tout ce qui a composé, compose\net composersa votre être…@d{64}", "cutscene": "Vous percevez vos Pokémon,@d{32} convergeant de chaque\nréalité pour former quelque chose de nouveau…@d{64}", From b1af452634b06b6d1f40c01a928072c32907cf6d Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 02:58:31 +0200 Subject: [PATCH 67/88] Update an-offer-you-cant-refuse-dialogue.json --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index c310abad536..64b784bb8fe 100644 --- a/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/fr/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,7 +1,7 @@ { "intro": "Un jeune garçon aux airs très bougeois vous arrête.", "speaker": "Richard", - "intro_dialogue": "Bonchour-haann !$Je ne puis carrément pas ignorer que votre\n{{strongestPokemon}} m’a l’air fa-bu-leux !$J’ai toujours désiré posséder un tel compagnon !$Je peux vous payer grassement,\nainsi que vous donner petite babiole !", + "intro_dialogue": "Bonchour-haann !$Je ne puis carrément pas ignorer que votre\n{{strongestPokemon}} m’a l’air fa-bu-leux !$J’ai toujours désiré posséder un tel Pokémon !$Je peux vous payer grassement,\nainsi que vous donner petite babiole !", "title": "L’affaire du siècle", "description": "Un fils à papa vous offre un @[TOOLTIP_TITLE]{Charme Chroma} et {{price, money}} en échange de votre {{strongestPokemon}} !\n\nÇa semble être une bonne affaire, mais pourrez vous supporter de priver votre équipe d’un tel atout ?", "query": "Que voulez-vous faire ?", From d0cc780ead68c859cadd43c6ef05b626ec6ffe0e Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 02:59:29 +0200 Subject: [PATCH 68/88] Update an-offer-you-cant-refuse-dialogue.json --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/it/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/it/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 6dd54d302ab..6f2a39306e1 100644 --- a/src/locales/it/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/it/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,7 +1,7 @@ { "intro": "You're stopped by a rich looking boy.", "speaker": "Rich Boy", - "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a pet like that!$I'd pay you handsomely,\nand also give you this old bauble!", + "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a Pokémon like that!$I'd pay you handsomely,\nand also give you this old bauble!", "title": "An Offer You Can't Refuse", "description": "You're being offered a @[TOOLTIP_TITLE]{Shiny Charm} and {{price, money}} for your {{strongestPokemon}}!\n\nIt's an extremely good deal, but can you really bear to part with such a strong team member?", "query": "What will you do?", @@ -23,4 +23,4 @@ "selected": "What a rotten day...$Ah, well. Let's return to the yacht club then, {{liepardName}}." } } -} \ No newline at end of file +} From 1996fe0b6391f4019fd81301633b265f6f3a1baa Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 03:00:03 +0200 Subject: [PATCH 69/88] Update an-offer-you-cant-refuse-dialogue.json --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/ja/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/ja/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 6dd54d302ab..6f2a39306e1 100644 --- a/src/locales/ja/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/ja/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,7 +1,7 @@ { "intro": "You're stopped by a rich looking boy.", "speaker": "Rich Boy", - "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a pet like that!$I'd pay you handsomely,\nand also give you this old bauble!", + "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a Pokémon like that!$I'd pay you handsomely,\nand also give you this old bauble!", "title": "An Offer You Can't Refuse", "description": "You're being offered a @[TOOLTIP_TITLE]{Shiny Charm} and {{price, money}} for your {{strongestPokemon}}!\n\nIt's an extremely good deal, but can you really bear to part with such a strong team member?", "query": "What will you do?", @@ -23,4 +23,4 @@ "selected": "What a rotten day...$Ah, well. Let's return to the yacht club then, {{liepardName}}." } } -} \ No newline at end of file +} From 27f729dda5fed60e68ef7d250e68c92f031a10e7 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 03:00:31 +0200 Subject: [PATCH 70/88] Update an-offer-you-cant-refuse-dialogue.json --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/ko/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/ko/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 6dd54d302ab..6f2a39306e1 100644 --- a/src/locales/ko/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/ko/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,7 +1,7 @@ { "intro": "You're stopped by a rich looking boy.", "speaker": "Rich Boy", - "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a pet like that!$I'd pay you handsomely,\nand also give you this old bauble!", + "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a Pokémon like that!$I'd pay you handsomely,\nand also give you this old bauble!", "title": "An Offer You Can't Refuse", "description": "You're being offered a @[TOOLTIP_TITLE]{Shiny Charm} and {{price, money}} for your {{strongestPokemon}}!\n\nIt's an extremely good deal, but can you really bear to part with such a strong team member?", "query": "What will you do?", @@ -23,4 +23,4 @@ "selected": "What a rotten day...$Ah, well. Let's return to the yacht club then, {{liepardName}}." } } -} \ No newline at end of file +} From 26fcb4e1d1787e8d4225c93472f14c63b28b1762 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 03:00:50 +0200 Subject: [PATCH 71/88] Update an-offer-you-cant-refuse-dialogue.json --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/pt_BR/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/pt_BR/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 6dd54d302ab..6f2a39306e1 100644 --- a/src/locales/pt_BR/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/pt_BR/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,7 +1,7 @@ { "intro": "You're stopped by a rich looking boy.", "speaker": "Rich Boy", - "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a pet like that!$I'd pay you handsomely,\nand also give you this old bauble!", + "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a Pokémon like that!$I'd pay you handsomely,\nand also give you this old bauble!", "title": "An Offer You Can't Refuse", "description": "You're being offered a @[TOOLTIP_TITLE]{Shiny Charm} and {{price, money}} for your {{strongestPokemon}}!\n\nIt's an extremely good deal, but can you really bear to part with such a strong team member?", "query": "What will you do?", @@ -23,4 +23,4 @@ "selected": "What a rotten day...$Ah, well. Let's return to the yacht club then, {{liepardName}}." } } -} \ No newline at end of file +} From e7c023eda746768d706c40f8eb443c84f95b6940 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 03:01:11 +0200 Subject: [PATCH 72/88] Update an-offer-you-cant-refuse-dialogue.json --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/zh_CN/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/zh_CN/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 6dd54d302ab..6f2a39306e1 100644 --- a/src/locales/zh_CN/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/zh_CN/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,7 +1,7 @@ { "intro": "You're stopped by a rich looking boy.", "speaker": "Rich Boy", - "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a pet like that!$I'd pay you handsomely,\nand also give you this old bauble!", + "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a Pokémon like that!$I'd pay you handsomely,\nand also give you this old bauble!", "title": "An Offer You Can't Refuse", "description": "You're being offered a @[TOOLTIP_TITLE]{Shiny Charm} and {{price, money}} for your {{strongestPokemon}}!\n\nIt's an extremely good deal, but can you really bear to part with such a strong team member?", "query": "What will you do?", @@ -23,4 +23,4 @@ "selected": "What a rotten day...$Ah, well. Let's return to the yacht club then, {{liepardName}}." } } -} \ No newline at end of file +} From bc14064ef9011f5658c8cc2b1544b507768479b2 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 03:01:37 +0200 Subject: [PATCH 73/88] Update an-offer-you-cant-refuse-dialogue.json --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/zh_TW/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/zh_TW/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 6dd54d302ab..6f2a39306e1 100644 --- a/src/locales/zh_TW/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/zh_TW/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,7 +1,7 @@ { "intro": "You're stopped by a rich looking boy.", "speaker": "Rich Boy", - "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a pet like that!$I'd pay you handsomely,\nand also give you this old bauble!", + "intro_dialogue": "Good day to you.$I can't help but notice that your\n{{strongestPokemon}} looks positively divine!$I've always wanted to have a Pokémon like that!$I'd pay you handsomely,\nand also give you this old bauble!", "title": "An Offer You Can't Refuse", "description": "You're being offered a @[TOOLTIP_TITLE]{Shiny Charm} and {{price, money}} for your {{strongestPokemon}}!\n\nIt's an extremely good deal, but can you really bear to part with such a strong team member?", "query": "What will you do?", @@ -23,4 +23,4 @@ "selected": "What a rotten day...$Ah, well. Let's return to the yacht club then, {{liepardName}}." } } -} \ No newline at end of file +} From 540a1c3e21be8af146b2a636f1410e5572d5e0a7 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Sat, 14 Sep 2024 21:32:43 -0400 Subject: [PATCH 74/88] [Balance] Rework some evolutions (#2732) * Changes some evolutions * more work * Give Onix Iron Defense at 30 * Sirfetch'd and Gholdengo, pause any evolutions * Fix pause evolution text * adjust wild evolution delay * Add localization keys, clean up evo pausing * Clean up evo delays * Adjust friendship evos, Leader's Crest sprite by chaosgrimmon * Fix Nugget crash * Fixed Gimmighoul fr * Move Charcadet armors to common * Locale migration, Lilligant shiny stone * Cleanup * Fix language migration error * Change Cosmog line evo method * Undo Ursaluna being night only * Evo items roll during evo pause on Eevee * Make all time based evos use dusk and dawn times * Fix paused and unpaused evolution texts being reversed * Fixed evolution delays * Moved up Mimic in Mime Jr's moveset * Remove Cosmoem time conditions, add Gimmighoul tracker * Remove tracker after Gimmighoul evo * Change Scyther Steel Wing back to 30, mark custom --- public/images/items/leaders_crest.png | Bin 0 -> 694 bytes public/images/items/moon_flute.png | Bin 0 -> 555 bytes public/images/items/sun_flute.png | Bin 0 -> 582 bytes src/data/pokemon-evolutions.ts | 148 ++++++++++++++------------ src/data/pokemon-level-moves.ts | 8 +- src/field/pokemon.ts | 10 +- src/locales/en/modifier-type.json | 17 +++ src/locales/en/party-ui-handler.json | 2 + src/modifier/modifier-type.ts | 6 +- src/modifier/modifier.ts | 46 +++++++- src/system/pokemon-data.ts | 3 + src/ui/party-ui-handler.ts | 8 +- 12 files changed, 172 insertions(+), 76 deletions(-) create mode 100644 public/images/items/leaders_crest.png create mode 100644 public/images/items/moon_flute.png create mode 100644 public/images/items/sun_flute.png diff --git a/public/images/items/leaders_crest.png b/public/images/items/leaders_crest.png new file mode 100644 index 0000000000000000000000000000000000000000..45cf16563747dba7846f52f46a51df81af69b261 GIT binary patch literal 694 zcmV;n0!jUeP)Px#1ZP1_K>z@;j|==^1poj7MoC0LR9HvtmN95kQ51%cfgplp5fs|NAnl+grAXr< z5tl%5YX%8qFccIF4y6@Du!|1jP%K0uC`cBebm-Pnh)ya9aVTx*B1i@mS}2rKa44w! zC+~l~$;(S#US2_HK6t#Fo0oj&oO|y{q|dSEgmv$kXf*oQ8cMBJ)9*Fs2;U=t1OQRt z_IVwD{{CAQK5pyy%Zs>F*7kJ#x^i0X+Gz&0v?ngxNoR_Rtom@4nTwcf)r8%pN=`{Lt(nfBfpb&Uq!U3UD8s+%4;U zr&7}Fx%R_D7aipXz5?i!J>*{Lx(`qu9>~hK7oVA`3x%1|aW)E6zKH{qa zkQ0{PloRayPIOfPWdH5coQ}=x%`*>>J$Js_+7r(efV^5=w_epTJuN<@tAb#nxj?HXYY7m5&G<*T%#h3L~ zOVCgVju!|*OdJ6;w_8dpFAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-u}MThRCwCdmLX5WP!xr~M=JOU%uzX9=Ll}{$$}!d;riU_7UbOOTE`rjTjd;e z%iQL8^5NE>P*=p(hC*2vRs=U`(&W9IlXLGqrxkgg^OtqTAD30U^m;vj&vL{m!0Yw8 zN&w`quS>K}F($%z&5B;M(I>NInw?6Z<6z z(2A0;TT~%wLrLA5wyNYOAGD^#I&daT?B@X!GMxc%-d!;am&FPnGqg?t2*Y_}%ML0ifW}dTlrHzuLF<%p6fyEV zg2c2Fc9)JU!HXJ45kTYMk0QA0oLAIrb;8K=$n>IdyAHN!W40_7F#vCl8#F+t+ebf*ZA3qXG9 z$OPFK#~C>GuRoch<|)sV tx-G#?>{lFa(N2kdTljIv|MsuqV*px@<{k~r6czvg002ovPDHLkV1hC*`4j*E literal 0 HcmV?d00001 diff --git a/public/images/items/sun_flute.png b/public/images/items/sun_flute.png new file mode 100644 index 0000000000000000000000000000000000000000..b7cbcdf5569e04fed086f61bb561ea7c6ea104e6 GIT binary patch literal 582 zcmV-M0=fN(P)pFAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-%t=H+RCwCdmLYW7P!xv0*E5kg<`UP)$oJfs0@*omJyV>zNpKm8#kFz{D(i|{ zTvJuz@?>P@z^#tBR0KE#80ly#cGWxQo^${F_ul`%5qX~To^i%I$A|SpDFv`iN4%wQ z9LIYM@}~!nc;qndunSgCi_F;_%jPAMz+f!1T0lww_m2&d!I0};eN@M-g~>L6@I%cc zY1GPOcZ)=nWwkOnw5DYyj#V%@5#(<=*f25E1=nLqpl!Ui{AZA3LKA+dxqoahxYG2; zJ(6^>%_Ofw$-)mc?WPO!5ZAE?v`xo(J)0_k{OQ4?+X6Gqxab+UjzxcTzRTuxFEVEV zvDU;|7a-mR!EFXW`YhknqQW|~MoEd1l6V@yJS0gM%;$gTww^0loK=1Oq3Dm!vF(p6 z9SbFod)HBbAGZrgv;BnK=6lcLX85~OCt`hYR(8GDrg*e!4WK%oR-VPCO+P)GW%Ckq zc1NsJuBJuZLw0>ImW~0AQ7RtJ5~k^#jTpDQYj=Gsb@2IX#3V3?wdR|j&}~7KW$S|^ z{7?fh_;OR|<%E+dqAWv6NxSKyhI%irhUupG3Q)Xu2BmpaoYGQ$Jp=LI|5dyU0HuxT UXL3}E?f?J)07*qoM6N<$f true /* King's Rock */), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.SLOWKING, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.MAGNEMITE]: [ new SpeciesEvolution(Species.MAGNETON, 30, null, null) @@ -249,8 +265,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ELECTRODE, 30, null, null) ], [Species.CUBONE]: [ - new SpeciesEvolution(Species.ALOLA_MAROWAK, 28, null, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.ISLAND || p.scene.arena.biomeType === Biome.BEACH), SpeciesWildEvolutionDelay.MEDIUM), - new SpeciesEvolution(Species.MAROWAK, 28, null, null) + new SpeciesEvolution(Species.ALOLA_MAROWAK, 28, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), + new SpeciesEvolution(Species.MAROWAK, 28, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.TYROGUE]: [ new SpeciesEvolution(Species.HITMONLEE, 20, null, new SpeciesEvolutionCondition(p => p.stats[Stat.ATK] > p.stats[Stat.DEF])), @@ -258,8 +274,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.HITMONTOP, 20, null, new SpeciesEvolutionCondition(p => p.stats[Stat.ATK] === p.stats[Stat.DEF])) ], [Species.KOFFING]: [ - new SpeciesEvolution(Species.GALAR_WEEZING, 35, null, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.METROPOLIS || p.scene.arena.biomeType === Biome.SLUM), SpeciesWildEvolutionDelay.MEDIUM), - new SpeciesEvolution(Species.WEEZING, 35, null, null) + new SpeciesEvolution(Species.GALAR_WEEZING, 35, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), + new SpeciesEvolution(Species.WEEZING, 35, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.RHYHORN]: [ new SpeciesEvolution(Species.RHYDON, 42, null, null) @@ -304,7 +320,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.QUILAVA, 14, null, null) ], [Species.QUILAVA]: [ - new SpeciesEvolution(Species.HISUI_TYPHLOSION, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(Species.HISUI_TYPHLOSION, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), new SpeciesEvolution(Species.TYPHLOSION, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.TOTODILE]: [ @@ -652,7 +668,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.DEWOTT, 17, null, null) ], [Species.DEWOTT]: [ - new SpeciesEvolution(Species.HISUI_SAMUROTT, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(Species.HISUI_SAMUROTT, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), new SpeciesEvolution(Species.SAMUROTT, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.PATRAT]: [ @@ -800,10 +816,10 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.BISHARP, 52, null, null) ], [Species.BISHARP]: [ - new SpeciesEvolution(Species.KINGAMBIT, 64, null, null) + new SpeciesEvolution(Species.KINGAMBIT, 1, EvolutionItem.LEADERS_CREST, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.RUFFLET]: [ - new SpeciesEvolution(Species.HISUI_BRAVIARY, 54, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(Species.HISUI_BRAVIARY, 54, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), new SpeciesEvolution(Species.BRAVIARY, 54, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.VULLABY]: [ @@ -883,20 +899,20 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.CLAWITZER, 37, null, null) ], [Species.TYRUNT]: [ - new SpeciesEvolution(Species.TYRANTRUM, 39, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.TYRANTRUM, 39, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.AMAURA]: [ - new SpeciesEvolution(Species.AURORUS, 39, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.AURORUS, 39, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) ], [Species.GOOMY]: [ - new SpeciesEvolution(Species.HISUI_SLIGGOO, 40, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(Species.HISUI_SLIGGOO, 40, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), new SpeciesEvolution(Species.SLIGGOO, 40, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.SLIGGOO]: [ new SpeciesEvolution(Species.GOODRA, 50, null, new SpeciesEvolutionCondition(p => [ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ].indexOf(p.scene.arena.weather?.weatherType || WeatherType.NONE) > -1), SpeciesWildEvolutionDelay.LONG) ], [Species.BERGMITE]: [ - new SpeciesEvolution(Species.HISUI_AVALUGG, 37, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(Species.HISUI_AVALUGG, 37, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), new SpeciesEvolution(Species.AVALUGG, 37, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.NOIBAT]: [ @@ -906,7 +922,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.DARTRIX, 17, null, null) ], [Species.DARTRIX]: [ - new SpeciesEvolution(Species.HISUI_DECIDUEYE, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(Species.HISUI_DECIDUEYE, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), new SpeciesEvolution(Species.DECIDUEYE, 34, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.LITTEN]: [ @@ -928,7 +944,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.TOUCANNON, 28, null, null) ], [Species.YUNGOOS]: [ - new SpeciesEvolution(Species.GUMSHOOS, 20, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.GUMSHOOS, 20, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.GRUBBIN]: [ new SpeciesEvolution(Species.CHARJABUG, 20, null, null) @@ -946,7 +962,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ARAQUANID, 22, null, null) ], [Species.FOMANTIS]: [ - new SpeciesEvolution(Species.LURANTIS, 34, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.LURANTIS, 34, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.MORELULL]: [ new SpeciesEvolution(Species.SHIINOTIC, 24, null, null) @@ -973,17 +989,17 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.KOMMO_O, 45, null, null) ], [Species.COSMOG]: [ - new SpeciesEvolution(Species.COSMOEM, 43, null, null) + new SpeciesEvolution(Species.COSMOEM, 23, null, null) ], [Species.COSMOEM]: [ - new SpeciesEvolution(Species.SOLGALEO, 53, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)), - new SpeciesEvolution(Species.LUNALA, 53, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.SOLGALEO, 53, EvolutionItem.SUN_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesEvolution(Species.LUNALA, 53, EvolutionItem.MOON_FLUTE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.MELTAN]: [ new SpeciesEvolution(Species.MELMETAL, 48, null, null) ], [Species.ALOLA_RATTATA]: [ - new SpeciesEvolution(Species.ALOLA_RATICATE, 20, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.ALOLA_RATICATE, 20, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) ], [Species.ALOLA_DIGLETT]: [ new SpeciesEvolution(Species.ALOLA_DUGTRIO, 26, null, null) @@ -1090,7 +1106,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GALAR_RAPIDASH, 40, null, null) ], [Species.GALAR_FARFETCHD]: [ - new SpeciesEvolution(Species.SIRFETCHD, 30, null, null) + new SpeciesEvolution(Species.SIRFETCHD, 30, null, null, SpeciesWildEvolutionDelay.LONG) ], [Species.GALAR_SLOWPOKE]: [ new SpeciesEvolution(Species.GALAR_SLOWBRO, 1, EvolutionItem.GALARICA_CUFF, null, SpeciesWildEvolutionDelay.VERY_LONG), @@ -1106,7 +1122,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GALAR_LINOONE, 20, null, null) ], [Species.GALAR_LINOONE]: [ - new SpeciesEvolution(Species.OBSTAGOON, 35, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.OBSTAGOON, 35, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) ], [Species.GALAR_YAMASK]: [ new SpeciesEvolution(Species.RUNERIGUS, 34, null, null) @@ -1214,7 +1230,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GLIMMORA, 35, null, null) ], [Species.GREAVARD]: [ - new SpeciesEvolution(Species.HOUNDSTONE, 30, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.HOUNDSTONE, 30, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) ], [Species.FRIGIBAX]: [ new SpeciesEvolution(Species.ARCTIBAX, 35, null, null) @@ -1226,8 +1242,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.CLODSIRE, 20, null, null) ], [Species.PIKACHU]: [ - new SpeciesFormEvolution(Species.ALOLA_RAICHU, "", "", 1, EvolutionItem.THUNDER_STONE, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.ISLAND || p.scene.arena.biomeType === Biome.BEACH), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALOLA_RAICHU, "partner", "", 1, EvolutionItem.THUNDER_STONE, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.ISLAND || p.scene.arena.biomeType === Biome.BEACH), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALOLA_RAICHU, "", "", 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALOLA_RAICHU, "partner", "", 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.RAICHU, "", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.RAICHU, "partner", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], @@ -1255,7 +1271,7 @@ export const pokemonEvolutions: PokemonEvolutions = { ], [Species.POLIWHIRL]: [ new SpeciesEvolution(Species.POLIWRATH, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), - new SpeciesEvolution(Species.POLITOED, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /* King's Rock */), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.POLITOED, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.WEEPINBELL]: [ new SpeciesEvolution(Species.VICTREEBEL, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) @@ -1267,7 +1283,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.CLOYSTER, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.EXEGGCUTE]: [ - new SpeciesEvolution(Species.ALOLA_EXEGGUTOR, 1, EvolutionItem.LEAF_STONE, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.ISLAND || p.scene.arena.biomeType === Biome.BEACH), SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(Species.ALOLA_EXEGGUTOR, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG), new SpeciesEvolution(Species.EXEGGUTOR, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.TANGELA]: [ @@ -1280,12 +1296,12 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.STARMIE, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.EEVEE]: [ - new SpeciesFormEvolution(Species.SYLVEON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(70, p => !!p.getMoveset().find(m => m?.getMove().type === Type.FAIRY)), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.SYLVEON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(70, p => !!p.getMoveset().find(m => m?.getMove().type === Type.FAIRY)), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ESPEON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(70, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ESPEON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(70, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.UMBREON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(70, p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.UMBREON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(70, p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.SYLVEON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => !!p.getMoveset().find(m => m?.getMove().type === Type.FAIRY)), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.SYLVEON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => !!p.getMoveset().find(m => m?.getMove().type === Type.FAIRY)), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ESPEON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ESPEON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.UMBREON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.UMBREON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.VAPOREON, "", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.VAPOREON, "partner", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.JOLTEON, "", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG), @@ -1329,10 +1345,10 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.DUDUNSPARCE, 32, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.HYPER_DRILL).length > 0), SpeciesWildEvolutionDelay.LONG) ], [Species.GLIGAR]: [ - new SpeciesEvolution(Species.GLISCOR, 1, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT /* Razor fang at night*/), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.GLISCOR, 1, EvolutionItem.RAZOR_FANG, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT /* Razor fang at night*/), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SNEASEL]: [ - new SpeciesEvolution(Species.WEAVILE, 1, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT /* Razor claw at night*/), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.WEAVILE, 1, EvolutionItem.RAZOR_CLAW, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT /* Razor claw at night*/), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.URSARING]: [ new SpeciesEvolution(Species.URSALUNA, 1, EvolutionItem.PEAT_BLOCK, null, SpeciesWildEvolutionDelay.VERY_LONG) //Ursaring does not evolve into Bloodmoon Ursaluna @@ -1362,8 +1378,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.SUDOWOODO, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.MIME_JR]: [ - new SpeciesEvolution(Species.GALAR_MR_MIME, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0 && (p.scene.arena.biomeType === Biome.ICE_CAVE || p.scene.arena.biomeType === Biome.SNOWY_FOREST)), SpeciesWildEvolutionDelay.MEDIUM), - new SpeciesEvolution(Species.MR_MIME, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.GALAR_MR_MIME, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0 && (p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), SpeciesWildEvolutionDelay.MEDIUM), + new SpeciesEvolution(Species.MR_MIME, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0 && (p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.PANSAGE]: [ new SpeciesEvolution(Species.SIMISAGE, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) @@ -1381,8 +1397,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.WHIMSICOTT, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.PETILIL]: [ - new SpeciesEvolution(Species.HISUI_LILLIGANT, 1, EvolutionItem.SUN_STONE, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesEvolution(Species.LILLIGANT, 1, EvolutionItem.SUN_STONE, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.HISUI_LILLIGANT, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(Species.LILLIGANT, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.BASCULIN]: [ new SpeciesFormEvolution(Species.BASCULEGION, "white-striped", "female", 40, null, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE), SpeciesWildEvolutionDelay.VERY_LONG), @@ -1435,7 +1451,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.APPLETUN, 1, EvolutionItem.SWEET_APPLE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.CLOBBOPUS]: [ - new SpeciesEvolution(Species.GRAPPLOCT, 35, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.TAUNT).length > 0), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.GRAPPLOCT, 35, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.TAUNT).length > 0)/*Once Taunt is implemented, change evo level to 1 and delay to LONG*/) ], [Species.SINISTEA]: [ new SpeciesFormEvolution(Species.POLTEAGEIST, "phony", "phony", 1, EvolutionItem.CRACKED_POT, null, SpeciesWildEvolutionDelay.LONG), @@ -1472,7 +1488,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.OVERQWIL, 28, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.BARB_BARRAGE).length > 0), SpeciesWildEvolutionDelay.LONG) ], [Species.HISUI_SNEASEL]: [ - new SpeciesEvolution(Species.SNEASLER, 1, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY /* Razor claw at day*/), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.SNEASLER, 1, EvolutionItem.RAZOR_CLAW, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY /* Razor claw at day*/), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.CHARCADET]: [ new SpeciesEvolution(Species.ARMAROUGE, 1, EvolutionItem.AUSPICIOUS_ARMOR, null, SpeciesWildEvolutionDelay.LONG), @@ -1512,10 +1528,10 @@ export const pokemonEvolutions: PokemonEvolutions = { SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.RHYDON]: [ - new SpeciesEvolution(Species.RHYPERIOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /* Protector */), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.RHYPERIOR, 1, EvolutionItem.PROTECTOR, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SEADRA]: [ - new SpeciesEvolution(Species.KINGDRA, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /* Dragon scale*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.KINGDRA, 1, EvolutionItem.DRAGON_SCALE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SCYTHER]: [ new SpeciesEvolution(Species.SCIZOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition( @@ -1524,22 +1540,22 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.KLEAVOR, 1, EvolutionItem.BLACK_AUGURITE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.ELECTABUZZ]: [ - new SpeciesEvolution(Species.ELECTIVIRE, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /* Electirizer*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.ELECTIVIRE, 1, EvolutionItem.ELECTIRIZER, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.MAGMAR]: [ - new SpeciesEvolution(Species.MAGMORTAR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /* Magmarizer*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.MAGMORTAR, 1, EvolutionItem.MAGMARIZER, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.PORYGON]: [ - new SpeciesEvolution(Species.PORYGON2, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /*Upgrade*/), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.PORYGON2, 1, EvolutionItem.UPGRADE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.PORYGON2]: [ - new SpeciesEvolution(Species.PORYGON_Z, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /* Dubious disc*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.PORYGON_Z, 1, EvolutionItem.DUBIOUS_DISC, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.FEEBAS]: [ - new SpeciesEvolution(Species.MILOTIC, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /* Prism scale*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.MILOTIC, 1, EvolutionItem.PRISM_SCALE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.DUSCLOPS]: [ - new SpeciesEvolution(Species.DUSKNOIR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /* Reaper cloth*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.DUSKNOIR, 1, EvolutionItem.REAPER_CLOTH, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.CLAMPERL]: [ new SpeciesEvolution(Species.HUNTAIL, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => p.gender === Gender.MALE, p => p.gender = Gender.MALE /* Deep Sea Tooth */), SpeciesWildEvolutionDelay.VERY_LONG), @@ -1558,10 +1574,10 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ACCELGOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => !!p.scene.gameData.dexData[Species.KARRABLAST].caughtAttr), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SPRITZEE]: [ - new SpeciesEvolution(Species.AROMATISSE, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /*Sachet*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.AROMATISSE, 1, EvolutionItem.SACHET, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SWIRLIX]: [ - new SpeciesEvolution(Species.SLURPUFF, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /*Whipped Dream*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.SLURPUFF, 1, EvolutionItem.WHIPPED_DREAM, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.PHANTUMP]: [ new SpeciesEvolution(Species.TREVENANT, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) @@ -1576,7 +1592,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ANNIHILAPE, 35, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.RAGE_FIST).length > 0), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.GOLBAT]: [ - new SpeciesEvolution(Species.CROBAT, 1, null, new SpeciesFriendshipEvolutionCondition(110), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.CROBAT, 1, null, new SpeciesFriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.CHANSEY]: [ new SpeciesEvolution(Species.BLISSEY, 1, null, new SpeciesFriendshipEvolutionCondition(200), SpeciesWildEvolutionDelay.LONG) @@ -1610,29 +1626,29 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.CHANSEY, 1, null, new SpeciesFriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT) ], [Species.MUNCHLAX]: [ - new SpeciesEvolution(Species.SNORLAX, 1, null, new SpeciesFriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.SNORLAX, 1, null, new SpeciesFriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], [Species.RIOLU]: [ - new SpeciesEvolution(Species.LUCARIO, 1, null, new SpeciesFriendshipEvolutionCondition(90, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.LUCARIO, 1, null, new SpeciesFriendshipEvolutionCondition(120, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG) ], [Species.WOOBAT]: [ - new SpeciesEvolution(Species.SWOOBAT, 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.SWOOBAT, 1, null, new SpeciesFriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.SWADLOON]: [ - new SpeciesEvolution(Species.LEAVANNY, 1, null, new SpeciesFriendshipEvolutionCondition(110), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.LEAVANNY, 1, null, new SpeciesFriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], [Species.TYPE_NULL]: [ - new SpeciesEvolution(Species.SILVALLY, 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.SILVALLY, 1, null, new SpeciesFriendshipEvolutionCondition(100), SpeciesWildEvolutionDelay.LONG) ], [Species.ALOLA_MEOWTH]: [ - new SpeciesEvolution(Species.ALOLA_PERSIAN, 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.ALOLA_PERSIAN, 1, null, new SpeciesFriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], [Species.SNOM]: [ new SpeciesEvolution(Species.FROSMOTH, 1, null, new SpeciesFriendshipEvolutionCondition(90, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.GIMMIGHOUL]: [ - new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new SpeciesEvolutionCondition( p => p.evoCounter > 9 ), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new SpeciesEvolutionCondition( p => p.evoCounter > 9 ), SpeciesWildEvolutionDelay.VERY_LONG) ] }; diff --git a/src/data/pokemon-level-moves.ts b/src/data/pokemon-level-moves.ts index 93bd57ae32c..b56bab724be 100644 --- a/src/data/pokemon-level-moves.ts +++ b/src/data/pokemon-level-moves.ts @@ -1609,6 +1609,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 12, Moves.DRAGON_BREATH ], [ 16, Moves.CURSE ], [ 20, Moves.ROCK_SLIDE ], + [ 22, Moves.GYRO_BALL ], //Custom, from USUM [ 24, Moves.SCREECH ], [ 28, Moves.SAND_TOMB ], [ 32, Moves.STEALTH_ROCK ], @@ -2121,7 +2122,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 20, Moves.DOUBLE_HIT ], [ 24, Moves.SLASH ], [ 28, Moves.FOCUS_ENERGY ], - [ 30, Moves.STEEL_WING ], + [ 30, Moves.STEEL_WING ], //Custom [ 32, Moves.AGILITY ], [ 36, Moves.AIR_SLASH ], [ 40, Moves.X_SCISSOR ], @@ -7549,14 +7550,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.POUND ], [ 1, Moves.COPYCAT ], [ 1, Moves.BARRIER ], + [ 1, Moves.TICKLE ], //USUM [ 4, Moves.BATON_PASS ], [ 8, Moves.ENCORE ], [ 12, Moves.CONFUSION ], - [ 16, Moves.ROLE_PLAY ], + [ 16, Moves.MIMIC ], //Custom, swapped with Role Play to be closer to USUM [ 20, Moves.PROTECT ], [ 24, Moves.RECYCLE ], [ 28, Moves.PSYBEAM ], - [ 32, Moves.MIMIC ], + [ 32, Moves.ROLE_PLAY ], //Custom, swapped with Mimic [ 36, Moves.LIGHT_SCREEN ], [ 36, Moves.REFLECT ], [ 36, Moves.SAFEGUARD ], diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 453bce71503..9c8c1e6ce46 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -10,7 +10,7 @@ import * as Utils from "../utils"; import { Type, TypeDamageMultiplier, getTypeDamageMultiplier, getTypeRgb } from "../data/type"; import { getLevelTotalExp } from "../data/exp"; import { Stat, type PermanentStat, type BattleStat, type EffectiveStat, PERMANENT_STATS, BATTLE_STATS, EFFECTIVE_STATS } from "#enums/stat"; -import { DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, EnemyEndureChanceModifier, EnemyFusionChanceModifier, HiddenAbilityRateBoosterModifier, BaseStatModifier, PokemonFriendshipBoosterModifier, PokemonHeldItemModifier, PokemonNatureWeightModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempStatStageBoosterModifier, TempCritBoosterModifier, StatBoosterModifier, CritBoosterModifier, TerastallizeModifier, PokemonBaseStatFlatModifier, PokemonBaseStatTotalModifier, PokemonIncrementingStatModifier } from "../modifier/modifier"; +import { DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, EnemyEndureChanceModifier, EnemyFusionChanceModifier, HiddenAbilityRateBoosterModifier, BaseStatModifier, PokemonFriendshipBoosterModifier, PokemonHeldItemModifier, PokemonNatureWeightModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempStatStageBoosterModifier, TempCritBoosterModifier, StatBoosterModifier, CritBoosterModifier, TerastallizeModifier, PokemonBaseStatFlatModifier, PokemonBaseStatTotalModifier, PokemonIncrementingStatModifier, EvoTrackerModifier } from "../modifier/modifier"; import { PokeballType } from "../data/pokeball"; import { Gender } from "../data/gender"; import { initMoveAnim, loadMoveAnimAssets } from "../data/battle-anims"; @@ -99,6 +99,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public pauseEvolutions: boolean; public pokerus: boolean; public wildFlee: boolean; + public evoCounter: integer; public fusionSpecies: PokemonSpecies | null; public fusionFormIndex: integer; @@ -195,6 +196,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.metSpecies = dataSource.metSpecies ?? (this.metBiome !== -1 ? this.species.speciesId : this.species.getRootSpeciesId(true)); this.pauseEvolutions = dataSource.pauseEvolutions; this.pokerus = !!dataSource.pokerus; + this.evoCounter = dataSource.evoCounter ?? 0; this.fusionSpecies = dataSource.fusionSpecies instanceof PokemonSpecies ? dataSource.fusionSpecies : dataSource.fusionSpecies ? getPokemonSpecies(dataSource.fusionSpecies) : null; this.fusionFormIndex = dataSource.fusionFormIndex; this.fusionAbilityIndex = dataSource.fusionAbilityIndex; @@ -4046,6 +4048,12 @@ export class PlayerPokemon extends Pokemon { this.updateInfo(true).then(() => resolve()); }); }; + if (preEvolution.speciesId === Species.GIMMIGHOUL) { + const evotracker = this.getHeldItems().filter(m => m instanceof EvoTrackerModifier)[0] ?? null; + if (evotracker) { + this.scene.removeModifier(evotracker); + } + } if (!this.scene.gameMode.isDaily || this.metBiome > -1) { this.scene.gameData.updateSpeciesDexIvs(this.species.speciesId, this.ivs); this.scene.gameData.setPokemonSeen(this, false); diff --git a/src/locales/en/modifier-type.json b/src/locales/en/modifier-type.json index b57073325dc..c362b3f30d4 100644 --- a/src/locales/en/modifier-type.json +++ b/src/locales/en/modifier-type.json @@ -240,6 +240,8 @@ "TOXIC_ORB": { "name": "Toxic Orb", "description": "It's a bizarre orb that exudes toxins when touched and will badly poison the holder during battle." }, "FLAME_ORB": { "name": "Flame Orb", "description": "It's a bizarre orb that gives off heat when touched and will affect the holder with a burn during battle." }, + "EVOLUTION_TRACKER_GIMMIGHOUL": { "name": "Treasures", "description": "This Pokémon loves treasure! Keep collecting treasure and something might happen!"}, + "BATON": { "name": "Baton", "description": "Allows passing along effects when switching Pokémon, which also bypasses traps." }, "SHINY_CHARM": { "name": "Shiny Charm", "description": "Dramatically increases the chance of a wild Pokémon being Shiny." }, @@ -330,6 +332,21 @@ "TART_APPLE": "Tart Apple", "STRAWBERRY_SWEET": "Strawberry Sweet", "UNREMARKABLE_TEACUP": "Unremarkable Teacup", + "UPGRADE": "Upgrade", + "DUBIOUS_DISC": "Dubious Disc", + "DRAGON_SCALE": "Dragon Scale", + "PRISM_SCALE": "Prism Scale", + "RAZOR_CLAW": "Razor Claw", + "RAZOR_FANG": "Razor Fang", + "REAPER_CLOTH": "Reaper Cloth", + "ELECTIRIZER": "Electirizer", + "MAGMARIZER": "Magmarizer", + "PROTECTOR": "Protector", + "SACHET": "Sachet", + "WHIPPED_DREAM": "Whipped Dream", + "LEADERS_CREST": "Leader's Crest", + "SUN_FLUTE": "Sun Flute", + "MOON_FLUTE": "Moon Flute", "CHIPPED_POT": "Chipped Pot", "BLACK_AUGURITE": "Black Augurite", diff --git a/src/locales/en/party-ui-handler.json b/src/locales/en/party-ui-handler.json index 338bdfaec80..8e6e8046c7e 100644 --- a/src/locales/en/party-ui-handler.json +++ b/src/locales/en/party-ui-handler.json @@ -13,6 +13,7 @@ "ALL": "All", "PASS_BATON": "Pass Baton", "UNPAUSE_EVOLUTION": "Unpause Evolution", + "PAUSE_EVOLUTION": "Pause Evolution", "REVIVE": "Revive", "RENAME": "Rename", "SELECT": "Select", @@ -24,6 +25,7 @@ "tooManyItems": "{{pokemonName}} has too many\nof this item!", "anyEffect": "It won't have any effect.", "unpausedEvolutions": "Evolutions have been unpaused for {{pokemonName}}.", + "pausedEvolutions": "Evolutions have been paused for {{pokemonName}}.", "unspliceConfirmation": "Do you really want to unsplice {{fusionName}}\nfrom {{pokemonName}}? {{fusionName}} will be lost.", "wasReverted": "{{fusionName}} was reverted to {{pokemonName}}.", "releaseConfirmation": "Do you really want to release {{pokemonName}}?", diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 3703605d74e..a23a9c5ece2 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1109,11 +1109,11 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator { } const evolutionItemPool = [ - party.filter(p => pokemonEvolutions.hasOwnProperty(p.species.speciesId)).map(p => { + party.filter(p => pokemonEvolutions.hasOwnProperty(p.species.speciesId) && (!p.pauseEvolutions || p.species.speciesId === Species.SLOWPOKE || p.species.speciesId === Species.EEVEE)).map(p => { const evolutions = pokemonEvolutions[p.species.speciesId]; return evolutions.filter(e => e.item !== EvolutionItem.NONE && (e.evoFormKey === null || (e.preFormKey || "") === p.getFormKey()) && (!e.condition || e.condition.predicate(p))); }).flat(), - party.filter(p => p.isFusion() && p.fusionSpecies && pokemonEvolutions.hasOwnProperty(p.fusionSpecies.speciesId)).map(p => { + party.filter(p => p.isFusion() && p.fusionSpecies && pokemonEvolutions.hasOwnProperty(p.fusionSpecies.speciesId) && (!p.pauseEvolutions || p.fusionSpecies.speciesId === Species.SLOWPOKE || p.fusionSpecies.speciesId === Species.EEVEE)).map(p => { const evolutions = pokemonEvolutions[p.fusionSpecies!.speciesId]; return evolutions.filter(e => e.item !== EvolutionItem.NONE && (e.evoFormKey === null || (e.preFormKey || "") === p.getFusionFormKey()) && (!e.condition || e.condition.predicate(p))); }).flat() @@ -1372,6 +1372,8 @@ export const modifierTypes = { FORM_CHANGE_ITEM: () => new FormChangeItemModifierTypeGenerator(false), RARE_FORM_CHANGE_ITEM: () => new FormChangeItemModifierTypeGenerator(true), + EVOLUTION_TRACKER_GIMMIGHOUL: () => new PokemonHeldItemModifierType("modifierType:ModifierType.EVOLUTION_TRACKER_GIMMIGHOUL", "relic_gold", (type, _args) => new Modifiers.EvoTrackerModifier(type, (_args[0] as Pokemon).id, Species.GIMMIGHOUL, 10)), + MEGA_BRACELET: () => new ModifierType("modifierType:ModifierType.MEGA_BRACELET", "mega_bracelet", (type, _args) => new Modifiers.MegaEvolutionAccessModifier(type)), DYNAMAX_BAND: () => new ModifierType("modifierType:ModifierType.DYNAMAX_BAND", "dynamax_band", (type, _args) => new Modifiers.GigantamaxAccessModifier(type)), TERA_ORB: () => new ModifierType("modifierType:ModifierType.TERA_ORB", "tera_orb", (type, _args) => new Modifiers.TerastallizeAccessModifier(type)), diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 6614ef38253..0c4d2a63802 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -840,6 +840,41 @@ export class BaseStatModifier extends PokemonHeldItemModifier { } } +export class EvoTrackerModifier extends PokemonHeldItemModifier { + protected species: Species; + protected required: integer; + readonly isTransferrable: boolean = false; + + constructor(type: ModifierType, pokemonId: integer, species: Species, required: integer, stackCount?: integer) { + super(type, pokemonId, stackCount); + this.species = species; + this.required = required; + } + + matchType(modifier: Modifier): boolean { + if (modifier instanceof EvoTrackerModifier) { + return (modifier as EvoTrackerModifier).species === this.species; + } + return false; + } + + clone(): PersistentModifier { + return new EvoTrackerModifier(this.type, this.pokemonId, this.species, this.stackCount); + } + + getArgs(): any[] { + return super.getArgs().concat(this.species); + } + + apply(args: any[]): boolean { + return true; + } + + getMaxHeldItemCount(_pokemon: Pokemon): integer { + return this.required; + } +} + /** * Currently used by Shuckle Juice item */ @@ -1272,7 +1307,7 @@ export class SpeciesCritBoosterModifier extends CritBoosterModifier { * Applies Specific Type item boosts (e.g., Magnet) */ export class AttackTypeBoosterModifier extends PokemonHeldItemModifier { - private moveType: Type; + public moveType: Type; private boostMultiplier: number; constructor(type: ModifierType, pokemonId: integer, moveType: Type, boostPercent: number, stackCount?: integer) { @@ -2372,6 +2407,15 @@ export class MoneyRewardModifier extends ConsumableModifier { scene.addMoney(moneyAmount.value); + scene.getParty().map(p => { + if (p.species?.speciesId === Species.GIMMIGHOUL || p.fusionSpecies?.speciesId === Species.GIMMIGHOUL) { + p.evoCounter++; + const modifierType: ModifierType = modifierTypes.EVOLUTION_TRACKER_GIMMIGHOUL(); + const modifier = modifierType!.newModifier(p); + scene.addModifier(modifier); + } + }); + return true; } } diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 92bfc627ddb..5e6c0d93c8c 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -44,6 +44,7 @@ export default class PokemonData { public pauseEvolutions: boolean; public pokerus: boolean; public usedTMs: Moves[]; + public evoCounter: integer; public fusionSpecies: Species; public fusionFormIndex: integer; @@ -95,6 +96,8 @@ export default class PokemonData { } this.pokerus = !!source.pokerus; + this.evoCounter = source.evoCounter ?? 0; + this.fusionSpecies = sourcePokemon ? sourcePokemon.fusionSpecies?.speciesId : source.fusionSpecies; this.fusionFormIndex = source.fusionFormIndex; this.fusionAbilityIndex = source.fusionAbilityIndex; diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index aafcdc9bb34..a793dad6a73 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -467,8 +467,8 @@ export default class PartyUiHandler extends MessageUiHandler { } else if (option === PartyOption.UNPAUSE_EVOLUTION) { this.clearOptions(); ui.playSelect(); - pokemon.pauseEvolutions = false; - this.showText(i18next.t("partyUiHandler:unpausedEvolutions", { pokemonName: getPokemonNameWithAffix(pokemon) }), undefined, () => this.showText("", 0), null, true); + pokemon.pauseEvolutions = !pokemon.pauseEvolutions; + this.showText(i18next.t(pokemon.pauseEvolutions? "partyUiHandler:pausedEvolutions" : "partyUiHandler:unpausedEvolutions", { pokemonName: getPokemonNameWithAffix(pokemon) }), undefined, () => this.showText("", 0), null, true); } else if (option === PartyOption.UNSPLICE) { this.clearOptions(); ui.playSelect(); @@ -889,7 +889,7 @@ export default class PartyUiHandler extends MessageUiHandler { this.options.push(PartyOption.SUMMARY); this.options.push(PartyOption.RENAME); - if (pokemon.pauseEvolutions && (pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId) || (pokemon.isFusion() && pokemon.fusionSpecies && pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId)))) { + if ((pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId) || (pokemon.isFusion() && pokemon.fusionSpecies && pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId)))) { this.options.push(PartyOption.UNPAUSE_EVOLUTION); } @@ -976,6 +976,8 @@ export default class PartyUiHandler extends MessageUiHandler { if (formChangeItemModifiers && option >= PartyOption.FORM_CHANGE_ITEM) { const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM]; optionName = `${modifier.active ? i18next.t("partyUiHandler:DEACTIVATE") : i18next.t("partyUiHandler:ACTIVATE")} ${modifier.type.name}`; + } else if (option === PartyOption.UNPAUSE_EVOLUTION) { + optionName = `${pokemon.pauseEvolutions ? i18next.t("partyUiHandler:UNPAUSE_EVOLUTION") : i18next.t("partyUiHandler:PAUSE_EVOLUTION")}`; } else { if (this.localizedOptions.includes(option)) { optionName = i18next.t(`partyUiHandler:${PartyOption[option]}`); From cc5b46d5c1558938d1563253fb8d5888ecaa0586 Mon Sep 17 00:00:00 2001 From: Madmadness65 Date: Sat, 14 Sep 2024 20:46:20 -0500 Subject: [PATCH 75/88] Compile item atlas Adds the new item sprites from #2732 --- public/images/items.json | 8837 +++++++++++++++++++------------------- public/images/items.png | Bin 58177 -> 58664 bytes 2 files changed, 4450 insertions(+), 4387 deletions(-) diff --git a/public/images/items.json b/public/images/items.json index dd0cf6837be..509b4458a9f 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -4,8 +4,8 @@ "image": "items.png", "format": "RGBA8888", "size": { - "w": 428, - "h": 428 + "w": 431, + "h": 431 }, "scale": 1, "frames": [ @@ -93,6 +93,27 @@ "h": 28 } }, + { + "filename": "leaders_crest", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 29, + "h": 27 + }, + "frame": { + "x": 61, + "y": 0, + "w": 29, + "h": 27 + } + }, { "filename": "ribbon_gen2", "rotated": false, @@ -171,8 +192,8 @@ "h": 26 }, "frame": { - "x": 61, - "y": 0, + "x": 59, + "y": 27, "w": 27, "h": 26 } @@ -339,7 +360,7 @@ "h": 26 }, "frame": { - "x": 88, + "x": 90, "y": 0, "w": 24, "h": 26 @@ -388,7 +409,7 @@ } }, { - "filename": "ability_capsule", + "filename": "black_glasses", "rotated": false, "trimmed": true, "sourceSize": { @@ -397,15 +418,15 @@ }, "spriteSourceSize": { "x": 4, - "y": 9, - "w": 24, - "h": 14 + "y": 8, + "w": 23, + "h": 17 }, "frame": { "x": 0, "y": 414, - "w": 24, - "h": 14 + "w": 23, + "h": 17 } }, { @@ -423,7 +444,7 @@ "h": 26 }, "frame": { - "x": 112, + "x": 114, "y": 0, "w": 23, "h": 26 @@ -444,7 +465,7 @@ "h": 22 }, "frame": { - "x": 135, + "x": 137, "y": 0, "w": 27, "h": 22 @@ -465,7 +486,7 @@ "h": 21 }, "frame": { - "x": 162, + "x": 164, "y": 0, "w": 28, "h": 21 @@ -486,7 +507,7 @@ "h": 21 }, "frame": { - "x": 190, + "x": 192, "y": 0, "w": 28, "h": 21 @@ -507,7 +528,7 @@ "h": 21 }, "frame": { - "x": 218, + "x": 220, "y": 0, "w": 28, "h": 21 @@ -528,7 +549,7 @@ "h": 21 }, "frame": { - "x": 246, + "x": 248, "y": 0, "w": 28, "h": 21 @@ -549,7 +570,7 @@ "h": 21 }, "frame": { - "x": 274, + "x": 276, "y": 0, "w": 28, "h": 21 @@ -570,7 +591,7 @@ "h": 21 }, "frame": { - "x": 302, + "x": 304, "y": 0, "w": 28, "h": 21 @@ -591,7 +612,7 @@ "h": 20 }, "frame": { - "x": 330, + "x": 332, "y": 0, "w": 26, "h": 20 @@ -612,7 +633,7 @@ "h": 20 }, "frame": { - "x": 356, + "x": 358, "y": 0, "w": 26, "h": 20 @@ -633,14 +654,14 @@ "h": 20 }, "frame": { - "x": 382, + "x": 384, "y": 0, "w": 25, "h": 20 } }, { - "filename": "catching_charm", + "filename": "ribbon_gen6", "rotated": false, "trimmed": true, "sourceSize": { @@ -649,15 +670,15 @@ }, "spriteSourceSize": { "x": 5, - "y": 4, - "w": 21, - "h": 24 + "y": 2, + "w": 22, + "h": 28 }, "frame": { - "x": 407, + "x": 409, "y": 0, - "w": 21, - "h": 24 + "w": 22, + "h": 28 } }, { @@ -745,7 +766,7 @@ } }, { - "filename": "ribbon_gen6", + "filename": "ribbon_gen8", "rotated": false, "trimmed": true, "sourceSize": { @@ -765,27 +786,6 @@ "h": 28 } }, - { - "filename": "ribbon_gen8", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 22, - "h": 28 - }, - "frame": { - "x": 22, - "y": 237, - "w": 22, - "h": 28 - } - }, { "filename": "black_augurite", "rotated": false, @@ -802,7 +802,7 @@ }, "frame": { "x": 22, - "y": 265, + "y": 237, "w": 22, "h": 25 } @@ -823,7 +823,7 @@ }, "frame": { "x": 22, - "y": 290, + "y": 262, "w": 23, "h": 24 } @@ -844,7 +844,7 @@ }, "frame": { "x": 22, - "y": 314, + "y": 286, "w": 24, "h": 24 } @@ -865,7 +865,7 @@ }, "frame": { "x": 22, - "y": 338, + "y": 310, "w": 24, "h": 24 } @@ -886,7 +886,7 @@ }, "frame": { "x": 22, - "y": 362, + "y": 334, "w": 24, "h": 24 } @@ -907,13 +907,13 @@ }, "frame": { "x": 22, - "y": 386, + "y": 358, "w": 24, "h": 24 } }, { - "filename": "choice_specs", + "filename": "earth_plate", "rotated": false, "trimmed": true, "sourceSize": { @@ -922,15 +922,36 @@ }, "spriteSourceSize": { "x": 4, - "y": 8, + "y": 4, "w": 24, - "h": 18 + "h": 24 }, "frame": { - "x": 24, - "y": 410, + "x": 22, + "y": 382, "w": 24, - "h": 18 + "h": 24 + } + }, + { + "filename": "fist_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 23, + "y": 406, + "w": 24, + "h": 24 } }, { @@ -975,6 +996,27 @@ "h": 16 } }, + { + "filename": "choice_specs", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 24, + "h": 18 + }, + "frame": { + "x": 59, + "y": 53, + "w": 24, + "h": 18 + } + }, { "filename": "calcium", "rotated": false, @@ -1018,7 +1060,7 @@ } }, { - "filename": "earth_plate", + "filename": "catching_charm", "rotated": false, "trimmed": true, "sourceSize": { @@ -1026,20 +1068,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, + "x": 5, "y": 4, - "w": 24, + "w": 21, "h": 24 }, "frame": { "x": 39, "y": 134, - "w": 24, + "w": 21, "h": 24 } }, { - "filename": "fist_plate", + "filename": "flame_plate", "rotated": false, "trimmed": true, "sourceSize": { @@ -1060,7 +1102,7 @@ } }, { - "filename": "flame_plate", + "filename": "focus_band", "rotated": false, "trimmed": true, "sourceSize": { @@ -1081,7 +1123,7 @@ } }, { - "filename": "focus_band", + "filename": "golden_punch", "rotated": false, "trimmed": true, "sourceSize": { @@ -1102,7 +1144,7 @@ } }, { - "filename": "golden_punch", + "filename": "gracidea", "rotated": false, "trimmed": true, "sourceSize": { @@ -1122,27 +1164,6 @@ "h": 24 } }, - { - "filename": "gracidea", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 44, - "y": 254, - "w": 24, - "h": 24 - } - }, { "filename": "grip_claw", "rotated": false, @@ -1159,7 +1180,7 @@ }, "frame": { "x": 45, - "y": 278, + "y": 254, "w": 24, "h": 24 } @@ -1180,7 +1201,7 @@ }, "frame": { "x": 46, - "y": 302, + "y": 278, "w": 24, "h": 24 } @@ -1201,7 +1222,7 @@ }, "frame": { "x": 46, - "y": 326, + "y": 302, "w": 24, "h": 24 } @@ -1222,7 +1243,7 @@ }, "frame": { "x": 46, - "y": 350, + "y": 326, "w": 24, "h": 24 } @@ -1243,13 +1264,13 @@ }, "frame": { "x": 46, - "y": 374, + "y": 350, "w": 24, "h": 24 } }, { - "filename": "abomasite", + "filename": "lucky_punch_great", "rotated": false, "trimmed": true, "sourceSize": { @@ -1257,16 +1278,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 4, + "y": 4, + "w": 24, + "h": 24 }, "frame": { - "x": 48, - "y": 70, - "w": 16, - "h": 16 + "x": 46, + "y": 374, + "w": 24, + "h": 24 } }, { @@ -1284,12 +1305,33 @@ "h": 24 }, "frame": { - "x": 48, + "x": 47, "y": 398, "w": 23, "h": 24 } }, + { + "filename": "silver_powder", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 24, + "h": 15 + }, + "frame": { + "x": 48, + "y": 71, + "w": 24, + "h": 15 + } + }, { "filename": "elixir", "rotated": false, @@ -1347,14 +1389,14 @@ "h": 24 }, "frame": { - "x": 63, + "x": 60, "y": 134, "w": 18, "h": 24 } }, { - "filename": "lucky_punch_great", + "filename": "hp_up", "rotated": false, "trimmed": true, "sourceSize": { @@ -1362,20 +1404,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, + "x": 8, "y": 4, - "w": 24, + "w": 16, "h": 24 }, "frame": { "x": 63, "y": 158, - "w": 24, + "w": 16, "h": 24 } }, { - "filename": "lucky_punch_master", + "filename": "iron", "rotated": false, "trimmed": true, "sourceSize": { @@ -1383,20 +1425,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, + "x": 8, "y": 4, - "w": 24, + "w": 16, "h": 24 }, "frame": { "x": 63, "y": 182, - "w": 24, + "w": 16, "h": 24 } }, { - "filename": "lucky_punch_ultra", + "filename": "lucky_punch_master", "rotated": false, "trimmed": true, "sourceSize": { @@ -1417,7 +1459,7 @@ } }, { - "filename": "lustrous_globe", + "filename": "lucky_punch_ultra", "rotated": false, "trimmed": true, "sourceSize": { @@ -1437,6 +1479,27 @@ "h": 24 } }, + { + "filename": "lustrous_globe", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 69, + "y": 254, + "w": 24, + "h": 24 + } + }, { "filename": "meadow_plate", "rotated": false, @@ -1452,8 +1515,8 @@ "h": 24 }, "frame": { - "x": 68, - "y": 254, + "x": 70, + "y": 278, "w": 24, "h": 24 } @@ -1473,8 +1536,8 @@ "h": 24 }, "frame": { - "x": 69, - "y": 278, + "x": 70, + "y": 302, "w": 24, "h": 24 } @@ -1495,7 +1558,7 @@ }, "frame": { "x": 70, - "y": 302, + "y": 326, "w": 24, "h": 24 } @@ -1516,7 +1579,7 @@ }, "frame": { "x": 70, - "y": 326, + "y": 350, "w": 24, "h": 24 } @@ -1537,7 +1600,7 @@ }, "frame": { "x": 70, - "y": 350, + "y": 374, "w": 24, "h": 24 } @@ -1558,13 +1621,55 @@ }, "frame": { "x": 70, - "y": 374, + "y": 398, "w": 24, "h": 24 } }, { - "filename": "reveal_glass", + "filename": "ability_capsule", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 9, + "w": 24, + "h": 14 + }, + "frame": { + "x": 137, + "y": 22, + "w": 24, + "h": 14 + } + }, + { + "filename": "lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 86, + "y": 27, + "w": 17, + "h": 24 + } + }, + { + "filename": "silk_scarf", "rotated": false, "trimmed": true, "sourceSize": { @@ -1574,13 +1679,13 @@ "spriteSourceSize": { "x": 4, "y": 4, - "w": 23, + "w": 24, "h": 24 }, "frame": { - "x": 71, - "y": 398, - "w": 23, + "x": 103, + "y": 26, + "w": 24, "h": 24 } }, @@ -1599,14 +1704,14 @@ "h": 23 }, "frame": { - "x": 135, - "y": 22, + "x": 127, + "y": 36, "w": 24, "h": 23 } }, { - "filename": "berry_pouch", + "filename": "coin_case", "rotated": false, "trimmed": true, "sourceSize": { @@ -1616,18 +1721,39 @@ "spriteSourceSize": { "x": 4, "y": 5, - "w": 23, + "w": 24, "h": 23 }, "frame": { - "x": 159, - "y": 22, - "w": 23, + "x": 103, + "y": 50, + "w": 24, "h": 23 } }, { - "filename": "silk_scarf", + "filename": "big_nugget", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 83, + "y": 53, + "w": 20, + "h": 20 + } + }, + { + "filename": "dragon_scale", "rotated": false, "trimmed": true, "sourceSize": { @@ -1636,17 +1762,59 @@ }, "spriteSourceSize": { "x": 4, - "y": 4, + "y": 8, "w": 24, + "h": 18 + }, + "frame": { + "x": 127, + "y": 59, + "w": 24, + "h": 18 + } + }, + { + "filename": "max_elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, "h": 24 }, "frame": { - "x": 182, - "y": 21, - "w": 24, + "x": 151, + "y": 36, + "w": 18, "h": 24 } }, + { + "filename": "adamant_crystal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 151, + "y": 60, + "w": 23, + "h": 21 + } + }, { "filename": "sky_plate", "rotated": false, @@ -1662,7 +1830,7 @@ "h": 24 }, "frame": { - "x": 206, + "x": 169, "y": 21, "w": 24, "h": 24 @@ -1683,7 +1851,7 @@ "h": 24 }, "frame": { - "x": 230, + "x": 193, "y": 21, "w": 24, "h": 24 @@ -1704,7 +1872,7 @@ "h": 24 }, "frame": { - "x": 254, + "x": 217, "y": 21, "w": 24, "h": 24 @@ -1725,7 +1893,7 @@ "h": 24 }, "frame": { - "x": 278, + "x": 241, "y": 21, "w": 24, "h": 24 @@ -1746,33 +1914,12 @@ "h": 24 }, "frame": { - "x": 302, + "x": 265, "y": 21, "w": 24, "h": 24 } }, - { - "filename": "hp_up", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 326, - "y": 21, - "w": 16, - "h": 24 - } - }, { "filename": "toxic_plate", "rotated": false, @@ -1788,12 +1935,33 @@ "h": 24 }, "frame": { - "x": 342, - "y": 20, + "x": 289, + "y": 21, "w": 24, "h": 24 } }, + { + "filename": "max_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 24 + }, + "frame": { + "x": 313, + "y": 21, + "w": 22, + "h": 24 + } + }, { "filename": "zap_plate", "rotated": false, @@ -1809,117 +1977,12 @@ "h": 24 }, "frame": { - "x": 366, + "x": 335, "y": 20, "w": 24, "h": 24 } }, - { - "filename": "lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 390, - "y": 20, - "w": 17, - "h": 24 - } - }, - { - "filename": "oval_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 407, - "y": 24, - "w": 21, - "h": 24 - } - }, - { - "filename": "berry_pot", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 18, - "h": 22 - }, - "frame": { - "x": 59, - "y": 48, - "w": 18, - "h": 22 - } - }, - { - "filename": "adamant_crystal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 59, - "y": 27, - "w": 23, - "h": 21 - } - }, - { - "filename": "coin_case", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 82, - "y": 26, - "w": 24, - "h": 23 - } - }, { "filename": "expert_belt", "rotated": false, @@ -1935,222 +1998,12 @@ "h": 23 }, "frame": { - "x": 106, - "y": 26, + "x": 359, + "y": 20, "w": 24, "h": 23 } }, - { - "filename": "exp_balance", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 77, - "y": 49, - "w": 24, - "h": 22 - } - }, - { - "filename": "exp_share", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 101, - "y": 49, - "w": 24, - "h": 22 - } - }, - { - "filename": "silver_powder", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 24, - "h": 15 - }, - "frame": { - "x": 64, - "y": 71, - "w": 24, - "h": 15 - } - }, - { - "filename": "dragon_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 24, - "h": 18 - }, - "frame": { - "x": 88, - "y": 71, - "w": 24, - "h": 18 - } - }, - { - "filename": "full_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 15, - "h": 23 - }, - "frame": { - "x": 73, - "y": 86, - "w": 15, - "h": 23 - } - }, - { - "filename": "golden_net", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 21 - }, - "frame": { - "x": 88, - "y": 89, - "w": 24, - "h": 21 - } - }, - { - "filename": "max_revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 24 - }, - "frame": { - "x": 73, - "y": 110, - "w": 22, - "h": 24 - } - }, - { - "filename": "iron", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 81, - "y": 134, - "w": 16, - "h": 24 - } - }, - { - "filename": "max_elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 95, - "y": 110, - "w": 18, - "h": 24 - } - }, - { - "filename": "max_ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 97, - "y": 134, - "w": 18, - "h": 24 - } - }, { "filename": "hearthflame_mask", "rotated": false, @@ -2166,8 +2019,8 @@ "h": 23 }, "frame": { - "x": 87, - "y": 158, + "x": 383, + "y": 20, "w": 24, "h": 23 } @@ -2187,201 +2040,12 @@ "h": 23 }, "frame": { - "x": 87, - "y": 181, + "x": 407, + "y": 28, "w": 24, "h": 23 } }, - { - "filename": "red_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 20, - "h": 24 - }, - "frame": { - "x": 92, - "y": 204, - "w": 20, - "h": 24 - } - }, - { - "filename": "shiny_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 92, - "y": 228, - "w": 21, - "h": 24 - } - }, - { - "filename": "black_belt", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 92, - "y": 252, - "w": 22, - "h": 23 - } - }, - { - "filename": "bug_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 93, - "y": 275, - "w": 22, - "h": 23 - } - }, - { - "filename": "dark_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 94, - "y": 298, - "w": 22, - "h": 23 - } - }, - { - "filename": "dragon_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 94, - "y": 321, - "w": 22, - "h": 23 - } - }, - { - "filename": "dynamax_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 23, - "h": 23 - }, - "frame": { - "x": 94, - "y": 344, - "w": 23, - "h": 23 - } - }, - { - "filename": "griseous_core", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 94, - "y": 367, - "w": 23, - "h": 23 - } - }, - { - "filename": "leek", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 94, - "y": 390, - "w": 23, - "h": 23 - } - }, { "filename": "candy_overlay", "rotated": false, @@ -2397,14 +2061,14 @@ "h": 15 }, "frame": { - "x": 94, - "y": 413, + "x": 169, + "y": 45, "w": 16, "h": 15 } }, { - "filename": "eviolite", + "filename": "exp_balance", "rotated": false, "trimmed": true, "sourceSize": { @@ -2412,57 +2076,57 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 15, - "h": 15 - }, - "frame": { - "x": 110, - "y": 413, - "w": 15, - "h": 15 - } - }, - { - "filename": "max_lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 112, - "y": 71, - "w": 17, - "h": 24 - } - }, - { - "filename": "bug_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, + "x": 4, "y": 5, - "w": 22, + "w": 24, "h": 22 }, "frame": { - "x": 125, - "y": 49, - "w": 22, + "x": 185, + "y": 45, + "w": 24, + "h": 22 + } + }, + { + "filename": "exp_share", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 22 + }, + "frame": { + "x": 209, + "y": 45, + "w": 24, + "h": 22 + } + }, + { + "filename": "peat_block", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 22 + }, + "frame": { + "x": 233, + "y": 45, + "w": 24, "h": 22 } }, @@ -2481,7 +2145,7 @@ "h": 23 }, "frame": { - "x": 147, + "x": 257, "y": 45, "w": 24, "h": 23 @@ -2502,14 +2166,14 @@ "h": 23 }, "frame": { - "x": 171, + "x": 281, "y": 45, "w": 24, "h": 23 } }, { - "filename": "macho_brace", + "filename": "berry_pouch", "rotated": false, "trimmed": true, "sourceSize": { @@ -2523,35 +2187,14 @@ "h": 23 }, "frame": { - "x": 195, + "x": 305, "y": 45, "w": 23, "h": 23 } }, { - "filename": "peat_block", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 218, - "y": 45, - "w": 24, - "h": 22 - } - }, - { - "filename": "healing_charm", + "filename": "black_belt", "rotated": false, "trimmed": true, "sourceSize": { @@ -2560,82 +2203,19 @@ }, "spriteSourceSize": { "x": 5, - "y": 5, - "w": 23, - "h": 22 - }, - "frame": { - "x": 242, - "y": 45, - "w": 23, - "h": 22 - } - }, - { - "filename": "rare_candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 265, - "y": 45, - "w": 23, - "h": 23 - } - }, - { - "filename": "rarer_candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 288, - "y": 45, - "w": 23, - "h": 23 - } - }, - { - "filename": "electric_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, "y": 4, "w": 22, "h": 23 }, "frame": { - "x": 311, + "x": 328, "y": 45, "w": 22, "h": 23 } }, { - "filename": "max_potion", + "filename": "max_ether", "rotated": false, "trimmed": true, "sourceSize": { @@ -2649,140 +2229,14 @@ "h": 24 }, "frame": { - "x": 129, - "y": 71, + "x": 350, + "y": 44, "w": 18, "h": 24 } }, { - "filename": "fairy_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 147, - "y": 68, - "w": 22, - "h": 23 - } - }, - { - "filename": "fighting_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 169, - "y": 68, - "w": 22, - "h": 23 - } - }, - { - "filename": "fire_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 191, - "y": 68, - "w": 22, - "h": 23 - } - }, - { - "filename": "dragon_fang", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 333, - "y": 45, - "w": 21, - "h": 23 - } - }, - { - "filename": "fire_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 354, - "y": 44, - "w": 22, - "h": 23 - } - }, - { - "filename": "flying_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 376, - "y": 44, - "w": 22, - "h": 23 - } - }, - { - "filename": "icy_reins_of_unity", + "filename": "reveal_glass", "rotated": false, "trimmed": true, "sourceSize": { @@ -2791,36 +2245,15 @@ }, "spriteSourceSize": { "x": 4, - "y": 7, - "w": 24, - "h": 20 + "y": 4, + "w": 23, + "h": 24 }, "frame": { - "x": 398, - "y": 48, - "w": 24, - "h": 20 - } - }, - { - "filename": "prism_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 15, - "h": 15 - }, - "frame": { - "x": 112, - "y": 95, - "w": 15, - "h": 15 + "x": 368, + "y": 43, + "w": 23, + "h": 24 } }, { @@ -2838,266 +2271,14 @@ "h": 24 }, "frame": { - "x": 113, - "y": 110, + "x": 391, + "y": 43, "w": 16, "h": 24 } }, { - "filename": "pp_max", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 115, - "y": 134, - "w": 16, - "h": 24 - } - }, - { - "filename": "focus_sash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 111, - "y": 158, - "w": 22, - "h": 23 - } - }, - { - "filename": "ghost_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 111, - "y": 181, - "w": 22, - "h": 23 - } - }, - { - "filename": "grass_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 112, - "y": 204, - "w": 22, - "h": 23 - } - }, - { - "filename": "ground_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 113, - "y": 227, - "w": 22, - "h": 23 - } - }, - { - "filename": "ice_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 114, - "y": 250, - "w": 22, - "h": 23 - } - }, - { - "filename": "lansat_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 21, - "h": 23 - }, - "frame": { - "x": 115, - "y": 273, - "w": 21, - "h": 23 - } - }, - { - "filename": "leaf_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 116, - "y": 296, - "w": 21, - "h": 23 - } - }, - { - "filename": "never_melt_ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 116, - "y": 319, - "w": 22, - "h": 23 - } - }, - { - "filename": "normal_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 117, - "y": 342, - "w": 22, - "h": 23 - } - }, - { - "filename": "petaya_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 117, - "y": 365, - "w": 22, - "h": 23 - } - }, - { - "filename": "poison_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 117, - "y": 388, - "w": 22, - "h": 23 - } - }, - { - "filename": "black_glasses", + "filename": "golden_net", "rotated": false, "trimmed": true, "sourceSize": { @@ -3106,40 +2287,19 @@ }, "spriteSourceSize": { "x": 4, - "y": 8, - "w": 23, - "h": 17 - }, - "frame": { - "x": 125, - "y": 411, - "w": 23, - "h": 17 - } - }, - { - "filename": "hyper_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, "y": 5, - "w": 17, - "h": 23 + "w": 24, + "h": 21 }, "frame": { - "x": 213, - "y": 68, - "w": 17, - "h": 23 + "x": 407, + "y": 51, + "w": 24, + "h": 21 } }, { - "filename": "psychic_tera_shard", + "filename": "icy_reins_of_unity", "rotated": false, "trimmed": true, "sourceSize": { @@ -3147,20 +2307,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 + "x": 4, + "y": 7, + "w": 24, + "h": 20 }, "frame": { - "x": 230, + "x": 174, "y": 67, - "w": 22, - "h": 23 + "w": 24, + "h": 20 } }, { - "filename": "rusted_sword", + "filename": "metal_powder", "rotated": false, "trimmed": true, "sourceSize": { @@ -3169,15 +2329,120 @@ }, "spriteSourceSize": { "x": 4, - "y": 5, - "w": 23, - "h": 22 + "y": 6, + "w": 24, + "h": 20 }, "frame": { - "x": 252, + "x": 198, + "y": 67, + "w": 24, + "h": 20 + } + }, + { + "filename": "quick_powder", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 24, + "h": 20 + }, + "frame": { + "x": 222, + "y": 67, + "w": 24, + "h": 20 + } + }, + { + "filename": "rusted_shield", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 24, + "h": 20 + }, + "frame": { + "x": 246, "y": 68, - "w": 23, - "h": 22 + "w": 24, + "h": 20 + } + }, + { + "filename": "sacred_ash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 270, + "y": 68, + "w": 24, + "h": 20 + } + }, + { + "filename": "shadow_reins_of_unity", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 294, + "y": 68, + "w": 24, + "h": 20 + } + }, + { + "filename": "soft_sand", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 318, + "y": 68, + "w": 24, + "h": 20 } }, { @@ -3195,7 +2460,7 @@ "h": 21 }, "frame": { - "x": 275, + "x": 342, "y": 68, "w": 23, "h": 21 @@ -3216,77 +2481,14 @@ "h": 21 }, "frame": { - "x": 298, - "y": 68, - "w": 23, - "h": 21 - } - }, - { - "filename": "metal_powder", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 24, - "h": 20 - }, - "frame": { - "x": 321, - "y": 68, - "w": 24, - "h": 20 - } - }, - { - "filename": "apicot_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 345, - "y": 68, - "w": 19, - "h": 20 - } - }, - { - "filename": "moon_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 364, + "x": 368, "y": 67, "w": 23, "h": 21 } }, { - "filename": "quick_powder", + "filename": "pp_max", "rotated": false, "trimmed": true, "sourceSize": { @@ -3294,20 +2496,41 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 391, + "y": 67, + "w": 16, + "h": 24 + } + }, + { + "filename": "binding_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, "y": 6, - "w": 24, + "w": 23, "h": 20 }, "frame": { - "x": 387, - "y": 68, - "w": 24, + "x": 407, + "y": 72, + "w": 23, "h": 20 } }, { - "filename": "super_lure", + "filename": "max_lure", "rotated": false, "trimmed": true, "sourceSize": { @@ -3321,77 +2544,14 @@ "h": 24 }, "frame": { - "x": 411, - "y": 68, + "x": 73, + "y": 87, "w": 17, "h": 24 } }, { - "filename": "rusted_shield", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 24, - "h": 20 - }, - "frame": { - "x": 147, - "y": 91, - "w": 24, - "h": 20 - } - }, - { - "filename": "sacred_ash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 171, - "y": 91, - "w": 24, - "h": 20 - } - }, - { - "filename": "shadow_reins_of_unity", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 195, - "y": 91, - "w": 24, - "h": 20 - } - }, - { - "filename": "sachet", + "filename": "bug_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -3401,18 +2561,18 @@ "spriteSourceSize": { "x": 6, "y": 4, - "w": 18, + "w": 22, "h": 23 }, "frame": { - "x": 129, - "y": 95, - "w": 18, + "x": 73, + "y": 111, + "w": 22, "h": 23 } }, { - "filename": "relic_band", + "filename": "max_potion", "rotated": false, "trimmed": true, "sourceSize": { @@ -3421,15 +2581,141 @@ }, "spriteSourceSize": { "x": 7, - "y": 9, - "w": 17, - "h": 16 + "y": 4, + "w": 18, + "h": 24 }, "frame": { - "x": 129, - "y": 118, - "w": 17, - "h": 16 + "x": 78, + "y": 134, + "w": 18, + "h": 24 + } + }, + { + "filename": "oval_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 79, + "y": 158, + "w": 21, + "h": 24 + } + }, + { + "filename": "shiny_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 79, + "y": 182, + "w": 21, + "h": 24 + } + }, + { + "filename": "dynamax_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 23, + "h": 23 + }, + "frame": { + "x": 90, + "y": 73, + "w": 23, + "h": 23 + } + }, + { + "filename": "eviolite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 15, + "h": 15 + }, + "frame": { + "x": 90, + "y": 96, + "w": 15, + "h": 15 + } + }, + { + "filename": "dark_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 95, + "y": 111, + "w": 22, + "h": 23 + } + }, + { + "filename": "red_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 20, + "h": 24 + }, + "frame": { + "x": 96, + "y": 134, + "w": 20, + "h": 24 } }, { @@ -3447,8 +2733,8 @@ "h": 24 }, "frame": { - "x": 131, - "y": 134, + "x": 100, + "y": 158, "w": 16, "h": 24 } @@ -3468,14 +2754,14 @@ "h": 24 }, "frame": { - "x": 133, - "y": 158, + "x": 100, + "y": 182, "w": 16, "h": 24 } }, { - "filename": "charcoal", + "filename": "griseous_core", "rotated": false, "trimmed": true, "sourceSize": { @@ -3485,18 +2771,18 @@ "spriteSourceSize": { "x": 5, "y": 5, - "w": 22, - "h": 22 + "w": 23, + "h": 23 }, "frame": { - "x": 133, - "y": 182, - "w": 22, - "h": 22 + "x": 92, + "y": 206, + "w": 23, + "h": 23 } }, { - "filename": "reaper_cloth", + "filename": "leek", "rotated": false, "trimmed": true, "sourceSize": { @@ -3504,20 +2790,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, + "x": 4, "y": 5, - "w": 22, + "w": 23, "h": 23 }, "frame": { - "x": 134, - "y": 204, - "w": 22, + "x": 92, + "y": 229, + "w": 23, "h": 23 } }, { - "filename": "rock_tera_shard", + "filename": "dragon_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -3531,14 +2817,14 @@ "h": 23 }, "frame": { - "x": 135, - "y": 227, + "x": 93, + "y": 252, "w": 22, "h": 23 } }, { - "filename": "sharp_beak", + "filename": "dragon_fang", "rotated": false, "trimmed": true, "sourceSize": { @@ -3551,15 +2837,204 @@ "w": 21, "h": 23 }, + "frame": { + "x": 94, + "y": 275, + "w": 21, + "h": 23 + } + }, + { + "filename": "electric_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 94, + "y": 298, + "w": 22, + "h": 23 + } + }, + { + "filename": "fairy_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 94, + "y": 321, + "w": 22, + "h": 23 + } + }, + { + "filename": "fighting_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 94, + "y": 344, + "w": 22, + "h": 23 + } + }, + { + "filename": "fire_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 94, + "y": 367, + "w": 22, + "h": 23 + } + }, + { + "filename": "fire_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 94, + "y": 390, + "w": 22, + "h": 23 + } + }, + { + "filename": "relic_crown", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 18 + }, + "frame": { + "x": 94, + "y": 413, + "w": 23, + "h": 18 + } + }, + { + "filename": "prism_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 15, + "h": 15 + }, + "frame": { + "x": 105, + "y": 96, + "w": 15, + "h": 15 + } + }, + { + "filename": "coupon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 19 + }, + "frame": { + "x": 113, + "y": 77, + "w": 23, + "h": 19 + } + }, + { + "filename": "full_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 15, + "h": 23 + }, "frame": { "x": 136, - "y": 250, - "w": 21, + "y": 77, + "w": 15, "h": 23 } }, { - "filename": "steel_tera_shard", + "filename": "golden_mystic_ticket", "rotated": false, "trimmed": true, "sourceSize": { @@ -3567,121 +3042,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 + "x": 4, + "y": 7, + "w": 23, + "h": 19 }, "frame": { - "x": 136, - "y": 273, - "w": 22, - "h": 23 - } - }, - { - "filename": "stellar_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 137, - "y": 296, - "w": 22, - "h": 23 - } - }, - { - "filename": "water_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 138, - "y": 319, - "w": 22, - "h": 23 - } - }, - { - "filename": "whipped_dream", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 21, - "h": 23 - }, - "frame": { - "x": 139, - "y": 342, - "w": 21, - "h": 23 - } - }, - { - "filename": "wide_lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 139, - "y": 365, - "w": 22, - "h": 23 - } - }, - { - "filename": "mystic_water", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 139, - "y": 388, - "w": 20, - "h": 23 + "x": 151, + "y": 81, + "w": 23, + "h": 19 } }, { @@ -3699,33 +3069,12 @@ "h": 17 }, "frame": { - "x": 148, - "y": 411, + "x": 174, + "y": 87, "w": 23, "h": 17 } }, - { - "filename": "potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 159, - "y": 388, - "w": 17, - "h": 23 - } - }, { "filename": "chill_drive", "rotated": false, @@ -3741,12 +3090,264 @@ "h": 17 }, "frame": { - "x": 171, - "y": 411, + "x": 197, + "y": 87, "w": 23, "h": 17 } }, + { + "filename": "douse_drive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 23, + "h": 17 + }, + "frame": { + "x": 220, + "y": 87, + "w": 23, + "h": 17 + } + }, + { + "filename": "healing_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 23, + "h": 22 + }, + "frame": { + "x": 243, + "y": 88, + "w": 23, + "h": 22 + } + }, + { + "filename": "macho_brace", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 266, + "y": 88, + "w": 23, + "h": 23 + } + }, + { + "filename": "rare_candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 289, + "y": 88, + "w": 23, + "h": 23 + } + }, + { + "filename": "rarer_candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 312, + "y": 88, + "w": 23, + "h": 23 + } + }, + { + "filename": "rusted_sword", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 22 + }, + "frame": { + "x": 335, + "y": 89, + "w": 23, + "h": 22 + } + }, + { + "filename": "abomasite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 120, + "y": 96, + "w": 16, + "h": 16 + } + }, + { + "filename": "bug_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 117, + "y": 112, + "w": 22, + "h": 22 + } + }, + { + "filename": "flying_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 116, + "y": 134, + "w": 22, + "h": 23 + } + }, + { + "filename": "focus_sash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 116, + "y": 157, + "w": 22, + "h": 23 + } + }, + { + "filename": "ghost_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 116, + "y": 180, + "w": 22, + "h": 23 + } + }, + { + "filename": "grass_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 139, + "y": 100, + "w": 22, + "h": 23 + } + }, { "filename": "berry_juice", "rotated": false, @@ -3762,14 +3363,14 @@ "h": 21 }, "frame": { - "x": 219, - "y": 91, + "x": 139, + "y": 123, "w": 22, "h": 21 } }, { - "filename": "dark_memory", + "filename": "ground_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -3777,20 +3378,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, + "x": 6, + "y": 4, "w": 22, - "h": 22 + "h": 23 }, "frame": { - "x": 241, - "y": 90, + "x": 138, + "y": 144, "w": 22, - "h": 22 + "h": 23 } }, { - "filename": "dire_hit", + "filename": "ice_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -3798,41 +3399,41 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, + "x": 6, + "y": 4, "w": 22, - "h": 22 + "h": 23 }, "frame": { - "x": 263, - "y": 90, + "x": 138, + "y": 167, "w": 22, - "h": 22 + "h": 23 } }, { - "filename": "dna_splicers", + "filename": "black_sludge", "rotated": false, "trimmed": true, "sourceSize": { - "w": 32, - "h": 32 + "w": 24, + "h": 24 }, "spriteSourceSize": { - "x": 5, - "y": 5, + "x": 1, + "y": 2, "w": 22, - "h": 22 + "h": 19 }, "frame": { - "x": 285, - "y": 89, + "x": 138, + "y": 190, "w": 22, - "h": 22 + "h": 19 } }, { - "filename": "dragon_memory", + "filename": "never_melt_ice", "rotated": false, "trimmed": true, "sourceSize": { @@ -3843,17 +3444,17 @@ "x": 5, "y": 5, "w": 22, - "h": 22 + "h": 23 }, "frame": { - "x": 307, - "y": 89, + "x": 161, + "y": 104, "w": 22, - "h": 22 + "h": 23 } }, { - "filename": "electirizer", + "filename": "normal_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -3861,20 +3462,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, + "x": 6, + "y": 4, "w": 22, - "h": 22 + "h": 23 }, "frame": { - "x": 329, - "y": 88, + "x": 183, + "y": 104, "w": 22, - "h": 22 + "h": 23 } }, { - "filename": "electric_memory", + "filename": "petaya_berry", "rotated": false, "trimmed": true, "sourceSize": { @@ -3885,34 +3486,13 @@ "x": 5, "y": 5, "w": 22, - "h": 22 + "h": 23 }, "frame": { - "x": 351, - "y": 88, + "x": 205, + "y": 104, "w": 22, - "h": 22 - } - }, - { - "filename": "enigma_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 373, - "y": 88, - "w": 22, - "h": 22 + "h": 23 } }, { @@ -3930,35 +3510,14 @@ "h": 24 }, "frame": { - "x": 395, - "y": 88, + "x": 227, + "y": 104, "w": 16, "h": 24 } }, { - "filename": "super_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 411, - "y": 92, - "w": 17, - "h": 23 - } - }, - { - "filename": "soft_sand", + "filename": "moon_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -3967,36 +3526,15 @@ }, "spriteSourceSize": { "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 147, - "y": 111, - "w": 24, - "h": 20 - } - }, - { - "filename": "binding_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, "y": 6, "w": 23, - "h": 20 + "h": 21 }, "frame": { - "x": 171, - "y": 111, + "x": 243, + "y": 110, "w": 23, - "h": 20 + "h": 21 } }, { @@ -4014,54 +3552,12 @@ "h": 21 }, "frame": { - "x": 194, + "x": 266, "y": 111, "w": 23, "h": 21 } }, - { - "filename": "fairy_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 147, - "y": 131, - "w": 22, - "h": 22 - } - }, - { - "filename": "fighting_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 169, - "y": 131, - "w": 22, - "h": 22 - } - }, { "filename": "n_solarizer", "rotated": false, @@ -4077,8 +3573,8 @@ "h": 21 }, "frame": { - "x": 217, - "y": 112, + "x": 289, + "y": 111, "w": 23, "h": 21 } @@ -4098,35 +3594,14 @@ "h": 21 }, "frame": { - "x": 240, - "y": 112, + "x": 312, + "y": 111, "w": 23, "h": 21 } }, { - "filename": "deep_sea_tooth", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 263, - "y": 112, - "w": 22, - "h": 21 - } - }, - { - "filename": "fire_memory", + "filename": "charcoal", "rotated": false, "trimmed": true, "sourceSize": { @@ -4140,14 +3615,14 @@ "h": 22 }, "frame": { - "x": 285, + "x": 335, "y": 111, "w": 22, "h": 22 } }, { - "filename": "flying_memory", + "filename": "mystic_ticket", "rotated": false, "trimmed": true, "sourceSize": { @@ -4155,20 +3630,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 + "x": 4, + "y": 7, + "w": 23, + "h": 19 }, "frame": { - "x": 307, - "y": 111, - "w": 22, - "h": 22 + "x": 161, + "y": 127, + "w": 23, + "h": 19 } }, { - "filename": "ganlon_berry", + "filename": "poison_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -4176,545 +3651,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 329, - "y": 110, - "w": 22, - "h": 22 - } - }, - { - "filename": "ghost_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 351, - "y": 110, - "w": 22, - "h": 22 - } - }, - { - "filename": "grass_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 373, - "y": 110, - "w": 22, - "h": 22 - } - }, - { - "filename": "ground_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 191, - "y": 132, - "w": 22, - "h": 22 - } - }, - { - "filename": "guard_spec", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 149, - "y": 153, - "w": 22, - "h": 22 - } - }, - { - "filename": "hard_meteorite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 171, - "y": 153, - "w": 20, - "h": 22 - } - }, - { - "filename": "ice_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 191, - "y": 154, - "w": 22, - "h": 22 - } - }, - { - "filename": "ice_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 213, - "y": 133, - "w": 22, - "h": 22 - } - }, - { - "filename": "magmarizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 235, - "y": 133, - "w": 22, - "h": 22 - } - }, - { - "filename": "mini_black_hole", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 257, - "y": 133, - "w": 22, - "h": 22 - } - }, - { - "filename": "normal_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 279, - "y": 133, - "w": 22, - "h": 22 - } - }, - { - "filename": "poison_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 301, - "y": 133, - "w": 22, - "h": 22 - } - }, - { - "filename": "liechi_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 213, - "y": 155, - "w": 22, - "h": 21 - } - }, - { - "filename": "protector", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 235, - "y": 155, - "w": 22, - "h": 22 - } - }, - { - "filename": "psychic_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 257, - "y": 155, - "w": 22, - "h": 22 - } - }, - { - "filename": "rock_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 279, - "y": 155, - "w": 22, - "h": 22 - } - }, - { - "filename": "scroll_of_darkness", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 301, - "y": 155, - "w": 22, - "h": 22 - } - }, - { - "filename": "super_repel", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, + "x": 6, "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 395, - "y": 112, - "w": 16, - "h": 24 - } - }, - { - "filename": "metronome", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 411, - "y": 115, - "w": 17, - "h": 22 - } - }, - { - "filename": "scroll_of_waters", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, "w": 22, - "h": 22 - }, - "frame": { - "x": 155, - "y": 175, - "w": 22, - "h": 22 - } - }, - { - "filename": "shed_shell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 156, - "y": 197, - "w": 22, - "h": 22 - } - }, - { - "filename": "starf_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 157, - "y": 219, - "w": 22, - "h": 22 - } - }, - { - "filename": "steel_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 157, - "y": 241, - "w": 22, - "h": 22 - } - }, - { - "filename": "thick_club", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 158, - "y": 263, - "w": 22, - "h": 22 - } - }, - { - "filename": "thunder_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 159, - "y": 285, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_bug", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 + "h": 23 }, "frame": { "x": 160, - "y": 307, + "y": 146, "w": 22, - "h": 22 + "h": 23 } }, { - "filename": "tm_dark", + "filename": "psychic_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -4722,20 +3672,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, + "x": 6, + "y": 4, "w": 22, - "h": 22 + "h": 23 }, "frame": { "x": 160, - "y": 329, + "y": 169, "w": 22, - "h": 22 + "h": 23 } }, { - "filename": "sweet_apple", + "filename": "pair_of_tickets", "rotated": false, "trimmed": true, "sourceSize": { @@ -4743,20 +3693,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 + "x": 4, + "y": 7, + "w": 23, + "h": 19 }, "frame": { - "x": 177, - "y": 176, - "w": 22, - "h": 21 + "x": 184, + "y": 127, + "w": 23, + "h": 19 } }, { - "filename": "tm_dragon", + "filename": "reaper_cloth", "rotated": false, "trimmed": true, "sourceSize": { @@ -4767,227 +3717,17 @@ "x": 5, "y": 5, "w": 22, - "h": 22 - }, - "frame": { - "x": 178, - "y": 197, - "w": 22, - "h": 22 - } - }, - { - "filename": "syrupy_apple", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 199, - "y": 176, - "w": 22, - "h": 21 - } - }, - { - "filename": "tm_electric", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 179, - "y": 219, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_fairy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 179, - "y": 241, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_fighting", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 200, - "y": 197, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_fire", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 180, - "y": 263, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_flying", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 181, - "y": 285, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_ghost", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 201, - "y": 219, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_grass", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 201, - "y": 241, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_ground", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 202, - "y": 263, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 + "h": 23 }, "frame": { "x": 182, - "y": 307, + "y": 146, "w": 22, - "h": 22 + "h": 23 } }, { - "filename": "tm_normal", + "filename": "rock_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -4995,20 +3735,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, + "x": 6, + "y": 4, "w": 22, - "h": 22 + "h": 23 }, "frame": { "x": 182, - "y": 329, + "y": 169, "w": 22, - "h": 22 + "h": 23 } }, { - "filename": "tm_poison", + "filename": "blue_orb", "rotated": false, "trimmed": true, "sourceSize": { @@ -5016,20 +3756,41 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 + "x": 6, + "y": 6, + "w": 20, + "h": 20 }, "frame": { - "x": 203, - "y": 285, - "w": 22, - "h": 22 + "x": 207, + "y": 127, + "w": 20, + "h": 20 } }, { - "filename": "tm_psychic", + "filename": "steel_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 204, + "y": 147, + "w": 22, + "h": 23 + } + }, + { + "filename": "dark_memory", "rotated": false, "trimmed": true, "sourceSize": { @@ -5044,28 +3805,7 @@ }, "frame": { "x": 204, - "y": 307, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_rock", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 204, - "y": 329, + "y": 170, "w": 22, "h": 22 } @@ -5085,96 +3825,12 @@ "h": 20 }, "frame": { - "x": 221, - "y": 177, + "x": 160, + "y": 192, "w": 23, "h": 20 } }, - { - "filename": "tm_steel", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 222, - "y": 197, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_water", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 244, - "y": 177, - "w": 22, - "h": 22 - } - }, - { - "filename": "water_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 266, - "y": 177, - "w": 22, - "h": 22 - } - }, - { - "filename": "water_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 288, - "y": 177, - "w": 22, - "h": 22 - } - }, { "filename": "shell_bell", "rotated": false, @@ -5190,140 +3846,14 @@ "h": 20 }, "frame": { - "x": 244, - "y": 199, + "x": 183, + "y": 192, "w": 23, "h": 20 } }, { - "filename": "x_accuracy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 223, - "y": 219, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_attack", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 223, - "y": 241, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_defense", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 245, - "y": 219, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_sp_atk", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 267, - "y": 199, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_sp_def", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 224, - "y": 263, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_speed", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 245, - "y": 241, - "w": 22, - "h": 22 - } - }, - { - "filename": "sitrus_berry", + "filename": "dawn_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -5332,13 +3862,1126 @@ }, "spriteSourceSize": { "x": 6, + "y": 6, + "w": 20, + "h": 21 + }, + "frame": { + "x": 206, + "y": 192, + "w": 20, + "h": 21 + } + }, + { + "filename": "super_repel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 227, + "y": 128, + "w": 16, + "h": 24 + } + }, + { + "filename": "deep_sea_tooth", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 243, + "y": 131, + "w": 22, + "h": 21 + } + }, + { + "filename": "stellar_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 226, + "y": 152, + "w": 22, + "h": 23 + } + }, + { + "filename": "water_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 226, + "y": 175, + "w": 22, + "h": 23 + } + }, + { + "filename": "deep_sea_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 265, + "y": 132, + "w": 22, + "h": 20 + } + }, + { + "filename": "wide_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 248, + "y": 152, + "w": 22, + "h": 23 + } + }, + { + "filename": "dire_hit", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 248, + "y": 175, + "w": 22, + "h": 22 + } + }, + { + "filename": "dna_splicers", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 287, + "y": 132, + "w": 22, + "h": 22 + } + }, + { + "filename": "dragon_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 309, + "y": 132, + "w": 22, + "h": 22 + } + }, + { + "filename": "super_lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 270, + "y": 152, + "w": 17, + "h": 24 + } + }, + { + "filename": "electirizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 287, + "y": 154, + "w": 22, + "h": 22 + } + }, + { + "filename": "electric_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 309, + "y": 154, + "w": 22, + "h": 22 + } + }, + { + "filename": "enigma_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 270, + "y": 176, + "w": 22, + "h": 22 + } + }, + { + "filename": "fairy_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 292, + "y": 176, + "w": 22, + "h": 22 + } + }, + { + "filename": "fighting_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 331, + "y": 133, + "w": 22, + "h": 22 + } + }, + { + "filename": "fire_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 331, + "y": 155, + "w": 22, + "h": 22 + } + }, + { + "filename": "hyper_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 314, + "y": 176, + "w": 17, + "h": 23 + } + }, + { + "filename": "flying_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 331, + "y": 177, + "w": 22, + "h": 22 + } + }, + { + "filename": "blunder_policy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 19 + }, + "frame": { + "x": 226, + "y": 198, + "w": 22, + "h": 19 + } + }, + { + "filename": "fairy_feather", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 20 + }, + "frame": { + "x": 248, + "y": 197, + "w": 22, + "h": 20 + } + }, + { + "filename": "dubious_disc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 270, + "y": 198, + "w": 22, + "h": 19 + } + }, + { + "filename": "ganlon_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 292, + "y": 198, + "w": 22, + "h": 22 + } + }, + { + "filename": "ghost_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 314, + "y": 199, + "w": 22, + "h": 22 + } + }, + { + "filename": "berry_pot", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 18, + "h": 22 + }, + "frame": { + "x": 336, + "y": 199, + "w": 18, + "h": 22 + } + }, + { + "filename": "grass_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 116, + "y": 203, + "w": 22, + "h": 22 + } + }, + { + "filename": "ground_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 115, + "y": 225, + "w": 22, + "h": 22 + } + }, + { + "filename": "guard_spec", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 115, + "y": 247, + "w": 22, + "h": 22 + } + }, + { + "filename": "ice_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 115, + "y": 269, + "w": 22, + "h": 22 + } + }, + { + "filename": "ice_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 138, + "y": 209, + "w": 22, + "h": 22 + } + }, + { + "filename": "lansat_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 21, + "h": 23 + }, + "frame": { + "x": 137, + "y": 231, + "w": 21, + "h": 23 + } + }, + { + "filename": "leaf_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 137, + "y": 254, + "w": 21, + "h": 23 + } + }, + { + "filename": "liechi_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 160, + "y": 212, + "w": 22, + "h": 21 + } + }, + { + "filename": "magmarizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 182, + "y": 212, + "w": 22, + "h": 22 + } + }, + { + "filename": "mini_black_hole", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 204, + "y": 213, + "w": 22, + "h": 22 + } + }, + { + "filename": "moon_flute", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 24, + "h": 24 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 22, + "h": 22 + }, + "frame": { + "x": 158, + "y": 233, + "w": 22, + "h": 22 + } + }, + { + "filename": "normal_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 158, + "y": 255, + "w": 22, + "h": 22 + } + }, + { + "filename": "poison_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 180, + "y": 234, + "w": 22, + "h": 22 + } + }, + { + "filename": "protector", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 180, + "y": 256, + "w": 22, + "h": 22 + } + }, + { + "filename": "psychic_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 202, + "y": 235, + "w": 22, + "h": 22 + } + }, + { + "filename": "rock_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 202, + "y": 257, + "w": 22, + "h": 22 + } + }, + { + "filename": "malicious_armor", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 226, + "y": 217, + "w": 22, + "h": 20 + } + }, + { + "filename": "scroll_of_darkness", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 248, + "y": 217, + "w": 22, + "h": 22 + } + }, + { + "filename": "scroll_of_waters", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 270, + "y": 217, + "w": 22, + "h": 22 + } + }, + { + "filename": "sharp_beak", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 224, + "y": 237, + "w": 21, + "h": 23 + } + }, + { + "filename": "shed_shell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 292, + "y": 220, + "w": 22, + "h": 22 + } + }, + { + "filename": "starf_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 314, + "y": 221, + "w": 22, + "h": 22 + } + }, + { + "filename": "dusk_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 224, + "y": 260, + "w": 21, + "h": 21 + } + }, + { + "filename": "steel_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 245, + "y": 239, + "w": 22, + "h": 22 + } + }, + { + "filename": "sun_flute", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 24, + "h": 24 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 22, + "h": 22 + }, + "frame": { + "x": 267, + "y": 239, + "w": 22, + "h": 22 + } + }, + { + "filename": "sweet_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 245, + "y": 261, + "w": 22, + "h": 21 + } + }, + { + "filename": "syrupy_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 267, + "y": 261, + "w": 22, + "h": 21 + } + }, + { + "filename": "thick_club", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 289, + "y": 242, + "w": 22, + "h": 22 + } + }, + { + "filename": "hard_meteorite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, "y": 5, "w": 20, "h": 22 }, "frame": { - "x": 225, - "y": 285, + "x": 336, + "y": 221, "w": 20, "h": 22 } @@ -5357,99 +5000,15 @@ "w": 22, "h": 21 }, - "frame": { - "x": 267, - "y": 221, - "w": 22, - "h": 21 - } - }, - { - "filename": "deep_sea_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 267, - "y": 242, - "w": 22, - "h": 20 - } - }, - { - "filename": "dusk_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 21, - "h": 21 - }, "frame": { "x": 289, - "y": 199, - "w": 21, - "h": 21 - } - }, - { - "filename": "poison_barb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 246, - "y": 263, - "w": 21, - "h": 21 - } - }, - { - "filename": "fairy_feather", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, + "y": 264, "w": 22, - "h": 20 - }, - "frame": { - "x": 267, - "y": 262, - "w": 22, - "h": 20 + "h": 21 } }, { - "filename": "shiny_stone", + "filename": "thunder_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -5458,61 +5017,19 @@ }, "spriteSourceSize": { "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 289, - "y": 220, - "w": 21, - "h": 21 - } - }, - { - "filename": "zoom_lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 289, - "y": 241, - "w": 21, - "h": 21 - } - }, - { - "filename": "lock_capsule", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, "y": 5, - "w": 19, + "w": 22, "h": 22 }, "frame": { - "x": 226, - "y": 307, - "w": 19, + "x": 311, + "y": 243, + "w": 22, "h": 22 } }, { - "filename": "malicious_armor", + "filename": "tm_bug", "rotated": false, "trimmed": true, "sourceSize": { @@ -5521,246 +5038,15 @@ }, "spriteSourceSize": { "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 289, - "y": 262, - "w": 22, - "h": 20 - } - }, - { - "filename": "metal_coat", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, "y": 5, - "w": 19, - "h": 22 - }, - "frame": { - "x": 226, - "y": 329, - "w": 19, - "h": 22 - } - }, - { - "filename": "unknown", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 310, - "y": 177, - "w": 16, - "h": 24 - } - }, - { - "filename": "zinc", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 310, - "y": 201, - "w": 16, - "h": 24 - } - }, - { - "filename": "soothe_bell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 310, - "y": 225, - "w": 17, - "h": 22 - } - }, - { - "filename": "coupon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 161, - "y": 351, - "w": 23, - "h": 19 - } - }, - { - "filename": "relic_crown", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 18 - }, - "frame": { - "x": 161, - "y": 370, - "w": 23, - "h": 18 - } - }, - { - "filename": "golden_mystic_ticket", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 184, - "y": 351, - "w": 23, - "h": 19 - } - }, - { - "filename": "mystic_ticket", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 207, - "y": 351, - "w": 23, - "h": 19 - } - }, - { - "filename": "pair_of_tickets", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 184, - "y": 370, - "w": 23, - "h": 19 - } - }, - { - "filename": "leftovers", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 15, - "h": 22 - }, - "frame": { - "x": 176, - "y": 389, - "w": 15, - "h": 22 - } - }, - { - "filename": "black_sludge", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 24, - "h": 24 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, "w": 22, - "h": 19 + "h": 22 }, "frame": { - "x": 207, - "y": 370, + "x": 333, + "y": 243, "w": 22, - "h": 19 + "h": 22 } }, { @@ -5778,14 +5064,14 @@ "h": 20 }, "frame": { - "x": 191, - "y": 389, + "x": 311, + "y": 265, "w": 22, "h": 20 } }, { - "filename": "blunder_policy", + "filename": "tm_dark", "rotated": false, "trimmed": true, "sourceSize": { @@ -5794,225 +5080,15 @@ }, "spriteSourceSize": { "x": 5, - "y": 6, + "y": 5, "w": 22, - "h": 19 + "h": 22 }, "frame": { - "x": 194, - "y": 409, + "x": 333, + "y": 265, "w": 22, - "h": 19 - } - }, - { - "filename": "big_nugget", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 213, - "y": 389, - "w": 20, - "h": 20 - } - }, - { - "filename": "dubious_disc", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 22, - "h": 19 - }, - "frame": { - "x": 216, - "y": 409, - "w": 22, - "h": 19 - } - }, - { - "filename": "big_mushroom", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 19 - }, - "frame": { - "x": 230, - "y": 351, - "w": 19, - "h": 19 - } - }, - { - "filename": "lum_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 - }, - "frame": { - "x": 229, - "y": 370, - "w": 20, - "h": 19 - } - }, - { - "filename": "blue_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 233, - "y": 389, - "w": 20, - "h": 20 - } - }, - { - "filename": "upgrade", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 22, - "h": 19 - }, - "frame": { - "x": 238, - "y": 409, - "w": 22, - "h": 19 - } - }, - { - "filename": "dawn_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 21 - }, - "frame": { - "x": 323, - "y": 133, - "w": 20, - "h": 21 - } - }, - { - "filename": "gb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 323, - "y": 154, - "w": 20, - "h": 20 - } - }, - { - "filename": "douse_drive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 23, - "h": 17 - }, - "frame": { - "x": 343, - "y": 132, - "w": 23, - "h": 17 - } - }, - { - "filename": "magnet", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 343, - "y": 149, - "w": 20, - "h": 20 + "h": 22 } }, { @@ -6030,14 +5106,140 @@ "h": 17 }, "frame": { - "x": 366, - "y": 132, + "x": 137, + "y": 277, "w": 23, "h": 17 } }, { - "filename": "mb", + "filename": "whipped_dream", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 21, + "h": 23 + }, + "frame": { + "x": 116, + "y": 291, + "w": 21, + "h": 23 + } + }, + { + "filename": "mystic_water", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 20, + "h": 23 + }, + "frame": { + "x": 116, + "y": 314, + "w": 20, + "h": 23 + } + }, + { + "filename": "sitrus_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 116, + "y": 337, + "w": 20, + "h": 22 + } + }, + { + "filename": "tm_dragon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 137, + "y": 294, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_electric", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 136, + "y": 316, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_fairy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 136, + "y": 338, + "w": 22, + "h": 22 + } + }, + { + "filename": "gb", "rotated": false, "trimmed": true, "sourceSize": { @@ -6051,14 +5253,14 @@ "h": 20 }, "frame": { - "x": 363, - "y": 149, + "x": 116, + "y": 359, "w": 20, "h": 20 } }, { - "filename": "quick_claw", + "filename": "tm_fighting", "rotated": false, "trimmed": true, "sourceSize": { @@ -6066,20 +5268,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 21 + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { - "x": 326, - "y": 174, - "w": 19, - "h": 21 + "x": 116, + "y": 379, + "w": 22, + "h": 22 } }, { - "filename": "spell_tag", + "filename": "upgrade", "rotated": false, "trimmed": true, "sourceSize": { @@ -6087,41 +5289,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 19, - "h": 21 - }, - "frame": { - "x": 326, - "y": 195, - "w": 19, - "h": 21 - } - }, - { - "filename": "metal_alloy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, + "x": 5, "y": 7, - "w": 21, + "w": 22, "h": 19 }, "frame": { - "x": 345, - "y": 169, - "w": 21, + "x": 136, + "y": 360, + "w": 22, "h": 19 } }, { - "filename": "pb", + "filename": "tm_fire", "rotated": false, "trimmed": true, "sourceSize": { @@ -6129,58 +5310,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { - "x": 345, - "y": 188, - "w": 20, - "h": 20 - } - }, - { - "filename": "candy_jar", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 366, - "y": 169, - "w": 19, - "h": 20 - } - }, - { - "filename": "pb_gold", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 365, - "y": 189, - "w": 20, - "h": 20 + "x": 138, + "y": 379, + "w": 22, + "h": 22 } }, { @@ -6198,12 +5337,348 @@ "h": 17 }, "frame": { - "x": 345, - "y": 208, + "x": 160, + "y": 277, "w": 20, "h": 17 } }, + { + "filename": "tm_flying", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 159, + "y": 294, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_ghost", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 158, + "y": 316, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_grass", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 158, + "y": 338, + "w": 22, + "h": 22 + } + }, + { + "filename": "metal_alloy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 21, + "h": 19 + }, + "frame": { + "x": 158, + "y": 360, + "w": 21, + "h": 19 + } + }, + { + "filename": "lock_capsule", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 19, + "h": 22 + }, + "frame": { + "x": 160, + "y": 379, + "w": 19, + "h": 22 + } + }, + { + "filename": "relic_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 9, + "w": 17, + "h": 16 + }, + "frame": { + "x": 180, + "y": 278, + "w": 17, + "h": 16 + } + }, + { + "filename": "metal_coat", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 19, + "h": 22 + }, + "frame": { + "x": 181, + "y": 294, + "w": 19, + "h": 22 + } + }, + { + "filename": "tm_ground", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 180, + "y": 316, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 180, + "y": 338, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_normal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 179, + "y": 360, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_poison", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 179, + "y": 382, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_psychic", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 117, + "y": 401, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_rock", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 139, + "y": 401, + "w": 22, + "h": 22 + } + }, + { + "filename": "sachet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 18, + "h": 23 + }, + "frame": { + "x": 161, + "y": 401, + "w": 18, + "h": 23 + } + }, + { + "filename": "tm_steel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 179, + "y": 404, + "w": 22, + "h": 22 + } + }, + { + "filename": "leftovers", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 15, + "h": 22 + }, + "frame": { + "x": 358, + "y": 89, + "w": 15, + "h": 22 + } + }, { "filename": "razor_fang", "rotated": false, @@ -6219,14 +5694,35 @@ "h": 20 }, "frame": { - "x": 327, - "y": 216, + "x": 373, + "y": 88, "w": 18, "h": 20 } }, { - "filename": "masterpiece_teacup", + "filename": "metronome", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 17, + "h": 22 + }, + "frame": { + "x": 357, + "y": 111, + "w": 17, + "h": 22 + } + }, + { + "filename": "tm_water", "rotated": false, "trimmed": true, "sourceSize": { @@ -6235,19 +5731,19 @@ }, "spriteSourceSize": { "x": 5, - "y": 7, - "w": 21, - "h": 18 + "y": 5, + "w": 22, + "h": 22 }, "frame": { - "x": 365, - "y": 209, - "w": 21, - "h": 18 + "x": 353, + "y": 133, + "w": 22, + "h": 22 } }, { - "filename": "power_herb", + "filename": "water_memory", "rotated": false, "trimmed": true, "sourceSize": { @@ -6255,20 +5751,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { - "x": 345, - "y": 225, - "w": 20, - "h": 19 + "x": 353, + "y": 155, + "w": 22, + "h": 22 } }, { - "filename": "old_gateau", + "filename": "water_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -6276,20 +5772,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 21, - "h": 18 + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { - "x": 365, - "y": 227, - "w": 21, - "h": 18 + "x": 353, + "y": 177, + "w": 22, + "h": 22 } }, { - "filename": "baton", + "filename": "x_accuracy", "rotated": false, "trimmed": true, "sourceSize": { @@ -6297,20 +5793,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { - "x": 327, - "y": 236, - "w": 18, - "h": 18 + "x": 354, + "y": 199, + "w": 22, + "h": 22 } }, { - "filename": "razor_claw", + "filename": "x_attack", "rotated": false, "trimmed": true, "sourceSize": { @@ -6318,20 +5814,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { - "x": 345, - "y": 244, - "w": 20, - "h": 19 + "x": 356, + "y": 221, + "w": 22, + "h": 22 } }, { - "filename": "sharp_meteorite", + "filename": "x_defense", "rotated": false, "trimmed": true, "sourceSize": { @@ -6339,20 +5835,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 21, - "h": 18 + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { - "x": 365, - "y": 245, - "w": 21, - "h": 18 + "x": 355, + "y": 243, + "w": 22, + "h": 22 } }, { - "filename": "golden_egg", + "filename": "x_sp_atk", "rotated": false, "trimmed": true, "sourceSize": { @@ -6360,20 +5856,41 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 6, + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 355, + "y": 265, + "w": 22, + "h": 22 + } + }, + { + "filename": "potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, "w": 17, - "h": 20 + "h": 23 }, "frame": { - "x": 383, - "y": 149, + "x": 374, + "y": 108, "w": 17, - "h": 20 + "h": 23 } }, { - "filename": "hard_stone", + "filename": "unknown", "rotated": false, "trimmed": true, "sourceSize": { @@ -6381,20 +5898,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 + "x": 8, + "y": 4, + "w": 16, + "h": 24 }, "frame": { - "x": 385, - "y": 169, - "w": 19, - "h": 20 + "x": 391, + "y": 91, + "w": 16, + "h": 24 } }, { - "filename": "rb", + "filename": "x_sp_def", "rotated": false, "trimmed": true, "sourceSize": { @@ -6402,20 +5919,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { - "x": 385, - "y": 189, - "w": 20, - "h": 20 + "x": 407, + "y": 92, + "w": 22, + "h": 22 } }, { - "filename": "smooth_meteorite", + "filename": "zinc", "rotated": false, "trimmed": true, "sourceSize": { @@ -6423,20 +5940,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 20, - "h": 20 + "x": 8, + "y": 4, + "w": 16, + "h": 24 }, "frame": { - "x": 386, - "y": 209, - "w": 20, - "h": 20 + "x": 375, + "y": 131, + "w": 16, + "h": 24 } }, { - "filename": "strange_ball", + "filename": "super_potion", "rotated": false, "trimmed": true, "sourceSize": { @@ -6444,37 +5961,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 + "x": 8, + "y": 5, + "w": 17, + "h": 23 }, "frame": { - "x": 386, - "y": 229, - "w": 20, - "h": 20 - } - }, - { - "filename": "ub", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 386, - "y": 249, - "w": 20, - "h": 20 + "x": 391, + "y": 115, + "w": 17, + "h": 23 } }, { @@ -6492,14 +5988,98 @@ "h": 17 }, "frame": { - "x": 405, - "y": 137, + "x": 408, + "y": 114, "w": 23, "h": 17 } }, { - "filename": "mystery_egg", + "filename": "soothe_bell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 22 + }, + "frame": { + "x": 375, + "y": 155, + "w": 17, + "h": 22 + } + }, + { + "filename": "x_speed", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 375, + "y": 177, + "w": 22, + "h": 22 + } + }, + { + "filename": "poison_barb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 376, + "y": 199, + "w": 21, + "h": 21 + } + }, + { + "filename": "quick_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 21 + }, + "frame": { + "x": 378, + "y": 220, + "w": 19, + "h": 21 + } + }, + { + "filename": "absolite", "rotated": false, "trimmed": true, "sourceSize": { @@ -6510,12 +6090,75 @@ "x": 8, "y": 8, "w": 16, + "h": 16 + }, + "frame": { + "x": 391, + "y": 138, + "w": 16, + "h": 16 + } + }, + { + "filename": "shiny_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 392, + "y": 154, + "w": 21, + "h": 21 + } + }, + { + "filename": "oval_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 19 + }, + "frame": { + "x": 413, + "y": 131, + "w": 18, + "h": 19 + } + }, + { + "filename": "baton", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, "h": 18 }, "frame": { - "x": 311, - "y": 247, - "w": 16, + "x": 413, + "y": 150, + "w": 18, "h": 18 } }, @@ -6534,14 +6177,14 @@ "h": 18 }, "frame": { - "x": 327, - "y": 254, + "x": 413, + "y": 168, "w": 18, "h": 18 } }, { - "filename": "absolite", + "filename": "mystery_egg", "rotated": false, "trimmed": true, "sourceSize": { @@ -6552,55 +6195,13 @@ "x": 8, "y": 8, "w": 16, - "h": 16 + "h": 18 }, "frame": { - "x": 311, - "y": 265, + "x": 397, + "y": 175, "w": 16, - "h": 16 - } - }, - { - "filename": "unremarkable_teacup", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 21, "h": 18 - }, - "frame": { - "x": 345, - "y": 263, - "w": 21, - "h": 18 - } - }, - { - "filename": "white_herb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 - }, - "frame": { - "x": 366, - "y": 263, - "w": 20, - "h": 19 } }, { @@ -6618,96 +6219,12 @@ "h": 18 }, "frame": { - "x": 327, - "y": 272, + "x": 413, + "y": 186, "w": 18, "h": 18 } }, - { - "filename": "wl_ability_urge", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 386, - "y": 269, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_antidote", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 345, - "y": 281, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_awakening", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 365, - "y": 282, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_burn_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 385, - "y": 287, - "w": 20, - "h": 18 - } - }, { "filename": "aerodactylite", "rotated": false, @@ -6723,8 +6240,8 @@ "h": 16 }, "frame": { - "x": 311, - "y": 281, + "x": 397, + "y": 193, "w": 16, "h": 16 } @@ -6744,96 +6261,12 @@ "h": 18 }, "frame": { - "x": 327, - "y": 290, + "x": 413, + "y": 204, "w": 18, "h": 18 } }, - { - "filename": "wl_custom_spliced", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 345, - "y": 299, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_custom_thief", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 365, - "y": 300, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 385, - "y": 305, - "w": 20, - "h": 18 - } - }, - { - "filename": "miracle_seed", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 19, - "h": 19 - }, - "frame": { - "x": 404, - "y": 154, - "w": 19, - "h": 19 - } - }, { "filename": "aggronite", "rotated": false, @@ -6849,54 +6282,12 @@ "h": 16 }, "frame": { - "x": 404, - "y": 173, + "x": 397, + "y": 209, "w": 16, "h": 16 } }, - { - "filename": "lucky_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, - "h": 20 - }, - "frame": { - "x": 405, - "y": 189, - "w": 17, - "h": 20 - } - }, - { - "filename": "oval_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 19 - }, - "frame": { - "x": 406, - "y": 209, - "w": 18, - "h": 19 - } - }, { "filename": "light_ball", "rotated": false, @@ -6912,180 +6303,12 @@ "h": 18 }, "frame": { - "x": 406, - "y": 228, + "x": 413, + "y": 222, "w": 18, "h": 18 } }, - { - "filename": "light_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 406, - "y": 246, - "w": 18, - "h": 18 - } - }, - { - "filename": "toxic_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 406, - "y": 264, - "w": 18, - "h": 18 - } - }, - { - "filename": "wl_ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 406, - "y": 282, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_full_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 405, - "y": 300, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_full_restore", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 405, - "y": 318, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_guard_spec", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 267, - "y": 282, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_hyper_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 287, - "y": 282, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_ice_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 307, - "y": 297, - "w": 20, - "h": 18 - } - }, { "filename": "alakazite", "rotated": false, @@ -7101,14 +6324,98 @@ "h": 16 }, "frame": { - "x": 327, - "y": 308, + "x": 397, + "y": 225, "w": 16, "h": 16 } }, { - "filename": "wl_item_drop", + "filename": "light_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 18 + }, + "frame": { + "x": 413, + "y": 240, + "w": 18, + "h": 18 + } + }, + { + "filename": "zoom_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 200, + "y": 279, + "w": 21, + "h": 21 + } + }, + { + "filename": "lum_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 221, + "y": 281, + "w": 20, + "h": 19 + } + }, + { + "filename": "masterpiece_teacup", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 21, + "h": 18 + }, + "frame": { + "x": 241, + "y": 282, + "w": 21, + "h": 18 + } + }, + { + "filename": "old_gateau", "rotated": false, "trimmed": true, "sourceSize": { @@ -7118,268 +6425,16 @@ "spriteSourceSize": { "x": 6, "y": 8, - "w": 20, + "w": 21, "h": 18 }, "frame": { - "x": 343, - "y": 317, - "w": 20, + "x": 262, + "y": 282, + "w": 21, "h": 18 } }, - { - "filename": "wl_item_urge", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 363, - "y": 318, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_max_elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 383, - "y": 323, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_max_ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 403, - "y": 336, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_max_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 246, - "y": 284, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_max_revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 245, - "y": 302, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_paralyze_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 245, - "y": 320, - "w": 20, - "h": 18 - } - }, - { - "filename": "relic_gold", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 11, - "w": 15, - "h": 11 - }, - "frame": { - "x": 245, - "y": 338, - "w": 15, - "h": 11 - } - }, - { - "filename": "wl_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 249, - "y": 349, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_reset_urge", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 249, - "y": 367, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 253, - "y": 385, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_super_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 260, - "y": 403, - "w": 20, - "h": 18 - } - }, - { - "filename": "revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 12, - "h": 17 - }, - "frame": { - "x": 265, - "y": 302, - "w": 12, - "h": 17 - } - }, { "filename": "altarianite", "rotated": false, @@ -7395,12 +6450,558 @@ "h": 16 }, "frame": { - "x": 277, + "x": 200, "y": 300, "w": 16, "h": 16 } }, + { + "filename": "sharp_meteorite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 21, + "h": 18 + }, + "frame": { + "x": 216, + "y": 300, + "w": 21, + "h": 18 + } + }, + { + "filename": "unremarkable_teacup", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 21, + "h": 18 + }, + "frame": { + "x": 237, + "y": 300, + "w": 21, + "h": 18 + } + }, + { + "filename": "magnet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 258, + "y": 300, + "w": 20, + "h": 20 + } + }, + { + "filename": "mb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 283, + "y": 285, + "w": 20, + "h": 20 + } + }, + { + "filename": "pb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 303, + "y": 285, + "w": 20, + "h": 20 + } + }, + { + "filename": "pb_gold", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 278, + "y": 305, + "w": 20, + "h": 20 + } + }, + { + "filename": "rb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 298, + "y": 305, + "w": 20, + "h": 20 + } + }, + { + "filename": "revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 12, + "h": 17 + }, + "frame": { + "x": 202, + "y": 316, + "w": 12, + "h": 17 + } + }, + { + "filename": "power_herb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 214, + "y": 318, + "w": 20, + "h": 19 + } + }, + { + "filename": "razor_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 234, + "y": 318, + "w": 20, + "h": 19 + } + }, + { + "filename": "smooth_meteorite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 254, + "y": 320, + "w": 20, + "h": 20 + } + }, + { + "filename": "strange_ball", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 274, + "y": 325, + "w": 20, + "h": 20 + } + }, + { + "filename": "ub", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 294, + "y": 325, + "w": 20, + "h": 20 + } + }, + { + "filename": "spell_tag", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 19, + "h": 21 + }, + "frame": { + "x": 202, + "y": 337, + "w": 19, + "h": 21 + } + }, + { + "filename": "apicot_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 221, + "y": 337, + "w": 19, + "h": 20 + } + }, + { + "filename": "white_herb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 323, + "y": 287, + "w": 20, + "h": 19 + } + }, + { + "filename": "big_mushroom", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 19 + }, + "frame": { + "x": 343, + "y": 287, + "w": 19, + "h": 19 + } + }, + { + "filename": "candy_jar", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 362, + "y": 287, + "w": 19, + "h": 20 + } + }, + { + "filename": "hard_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 318, + "y": 306, + "w": 19, + "h": 20 + } + }, + { + "filename": "miracle_seed", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 19, + "h": 19 + }, + "frame": { + "x": 337, + "y": 306, + "w": 19, + "h": 19 + } + }, + { + "filename": "wl_ability_urge", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 314, + "y": 326, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_antidote", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 356, + "y": 307, + "w": 20, + "h": 18 + } + }, + { + "filename": "golden_egg", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 20 + }, + "frame": { + "x": 376, + "y": 307, + "w": 17, + "h": 20 + } + }, + { + "filename": "wl_awakening", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 393, + "y": 241, + "w": 20, + "h": 18 + } + }, + { + "filename": "toxic_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 18 + }, + "frame": { + "x": 413, + "y": 258, + "w": 18, + "h": 18 + } + }, + { + "filename": "wl_burn_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 393, + "y": 259, + "w": 20, + "h": 18 + } + }, { "filename": "ampharosite", "rotated": false, @@ -7416,8 +7017,8 @@ "h": 16 }, "frame": { - "x": 265, - "y": 319, + "x": 377, + "y": 243, "w": 16, "h": 16 } @@ -7437,12 +7038,138 @@ "h": 16 }, "frame": { - "x": 281, - "y": 316, + "x": 377, + "y": 259, "w": 16, "h": 16 } }, + { + "filename": "relic_gold", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 11, + "w": 15, + "h": 11 + }, + "frame": { + "x": 377, + "y": 275, + "w": 15, + "h": 11 + } + }, + { + "filename": "lucky_egg", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 20 + }, + "frame": { + "x": 381, + "y": 286, + "w": 17, + "h": 20 + } + }, + { + "filename": "wl_custom_spliced", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 398, + "y": 277, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_custom_thief", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 398, + "y": 295, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 393, + "y": 313, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 240, + "y": 340, + "w": 20, + "h": 18 + } + }, { "filename": "banettite", "rotated": false, @@ -7458,12 +7185,96 @@ "h": 16 }, "frame": { - "x": 297, - "y": 315, + "x": 413, + "y": 313, "w": 16, "h": 16 } }, + { + "filename": "wl_full_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 202, + "y": 358, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_full_restore", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 201, + "y": 376, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_guard_spec", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 201, + "y": 394, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_hyper_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 201, + "y": 412, + "w": 20, + "h": 18 + } + }, { "filename": "beedrillite", "rotated": false, @@ -7479,12 +7290,33 @@ "h": 16 }, "frame": { - "x": 281, - "y": 332, + "x": 222, + "y": 357, "w": 16, "h": 16 } }, + { + "filename": "wl_ice_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 238, + "y": 358, + "w": 20, + "h": 18 + } + }, { "filename": "blastoisinite", "rotated": false, @@ -7500,12 +7332,243 @@ "h": 16 }, "frame": { - "x": 297, - "y": 331, + "x": 222, + "y": 373, "w": 16, "h": 16 } }, + { + "filename": "wl_item_drop", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 221, + "y": 389, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_item_urge", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 221, + "y": 407, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 241, + "y": 376, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 241, + "y": 394, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 241, + "y": 412, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 258, + "y": 358, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_paralyze_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 261, + "y": 376, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 261, + "y": 394, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_reset_urge", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 261, + "y": 412, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 278, + "y": 345, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_super_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 298, + "y": 345, + "w": 20, + "h": 18 + } + }, { "filename": "blazikenite", "rotated": false, @@ -7521,8 +7584,8 @@ "h": 16 }, "frame": { - "x": 269, - "y": 348, + "x": 318, + "y": 344, "w": 16, "h": 16 } @@ -7542,8 +7605,8 @@ "h": 16 }, "frame": { - "x": 269, - "y": 364, + "x": 334, + "y": 326, "w": 16, "h": 16 } @@ -7563,8 +7626,8 @@ "h": 16 }, "frame": { - "x": 285, - "y": 348, + "x": 334, + "y": 342, "w": 16, "h": 16 } @@ -7584,8 +7647,8 @@ "h": 16 }, "frame": { - "x": 285, - "y": 364, + "x": 350, + "y": 325, "w": 16, "h": 16 } @@ -7605,8 +7668,8 @@ "h": 16 }, "frame": { - "x": 273, - "y": 380, + "x": 350, + "y": 341, "w": 16, "h": 16 } @@ -7626,8 +7689,8 @@ "h": 16 }, "frame": { - "x": 289, - "y": 380, + "x": 366, + "y": 327, "w": 16, "h": 16 } @@ -7647,8 +7710,8 @@ "h": 16 }, "frame": { - "x": 301, - "y": 347, + "x": 366, + "y": 343, "w": 16, "h": 16 } @@ -7668,8 +7731,8 @@ "h": 16 }, "frame": { - "x": 301, - "y": 363, + "x": 382, + "y": 331, "w": 16, "h": 16 } @@ -7689,8 +7752,8 @@ "h": 16 }, "frame": { - "x": 305, - "y": 379, + "x": 398, + "y": 331, "w": 16, "h": 16 } @@ -7710,8 +7773,8 @@ "h": 16 }, "frame": { - "x": 280, - "y": 396, + "x": 414, + "y": 329, "w": 16, "h": 16 } @@ -7731,8 +7794,8 @@ "h": 16 }, "frame": { - "x": 280, - "y": 412, + "x": 382, + "y": 347, "w": 16, "h": 16 } @@ -7752,8 +7815,8 @@ "h": 16 }, "frame": { - "x": 296, - "y": 396, + "x": 398, + "y": 347, "w": 16, "h": 16 } @@ -7773,8 +7836,8 @@ "h": 16 }, "frame": { - "x": 296, - "y": 412, + "x": 414, + "y": 345, "w": 16, "h": 16 } @@ -7794,8 +7857,8 @@ "h": 16 }, "frame": { - "x": 312, - "y": 395, + "x": 281, + "y": 363, "w": 16, "h": 16 } @@ -7815,8 +7878,8 @@ "h": 16 }, "frame": { - "x": 312, - "y": 411, + "x": 281, + "y": 379, "w": 16, "h": 16 } @@ -7836,8 +7899,8 @@ "h": 16 }, "frame": { - "x": 313, - "y": 324, + "x": 297, + "y": 363, "w": 16, "h": 16 } @@ -7857,8 +7920,8 @@ "h": 16 }, "frame": { - "x": 317, - "y": 340, + "x": 281, + "y": 395, "w": 16, "h": 16 } @@ -7878,8 +7941,8 @@ "h": 16 }, "frame": { - "x": 317, - "y": 356, + "x": 297, + "y": 379, "w": 16, "h": 16 } @@ -7899,8 +7962,8 @@ "h": 16 }, "frame": { - "x": 321, - "y": 372, + "x": 281, + "y": 411, "w": 16, "h": 16 } @@ -7920,8 +7983,8 @@ "h": 16 }, "frame": { - "x": 328, - "y": 388, + "x": 297, + "y": 395, "w": 16, "h": 16 } @@ -7941,8 +8004,8 @@ "h": 16 }, "frame": { - "x": 328, - "y": 404, + "x": 297, + "y": 411, "w": 16, "h": 16 } @@ -7962,8 +8025,8 @@ "h": 16 }, "frame": { - "x": 333, - "y": 335, + "x": 313, + "y": 363, "w": 16, "h": 16 } @@ -7983,8 +8046,8 @@ "h": 16 }, "frame": { - "x": 333, - "y": 351, + "x": 313, + "y": 379, "w": 16, "h": 16 } @@ -8004,8 +8067,8 @@ "h": 16 }, "frame": { - "x": 337, - "y": 367, + "x": 313, + "y": 395, "w": 16, "h": 16 } @@ -8025,8 +8088,8 @@ "h": 16 }, "frame": { - "x": 344, - "y": 383, + "x": 313, + "y": 411, "w": 16, "h": 16 } @@ -8046,8 +8109,8 @@ "h": 16 }, "frame": { - "x": 344, - "y": 399, + "x": 350, + "y": 357, "w": 16, "h": 16 } @@ -8067,8 +8130,8 @@ "h": 16 }, "frame": { - "x": 349, - "y": 336, + "x": 366, + "y": 359, "w": 16, "h": 16 } @@ -8088,8 +8151,8 @@ "h": 16 }, "frame": { - "x": 365, - "y": 336, + "x": 334, + "y": 358, "w": 16, "h": 16 } @@ -8109,8 +8172,8 @@ "h": 16 }, "frame": { - "x": 381, - "y": 341, + "x": 382, + "y": 363, "w": 16, "h": 16 } @@ -8130,8 +8193,8 @@ "h": 16 }, "frame": { - "x": 353, - "y": 352, + "x": 398, + "y": 363, "w": 16, "h": 16 } @@ -8151,8 +8214,8 @@ "h": 16 }, "frame": { - "x": 369, - "y": 357, + "x": 414, + "y": 361, "w": 16, "h": 16 } @@ -8172,8 +8235,8 @@ "h": 16 }, "frame": { - "x": 385, - "y": 357, + "x": 329, + "y": 374, "w": 16, "h": 16 } @@ -8193,8 +8256,8 @@ "h": 16 }, "frame": { - "x": 401, - "y": 354, + "x": 329, + "y": 390, "w": 16, "h": 16 } @@ -8214,8 +8277,8 @@ "h": 16 }, "frame": { - "x": 401, - "y": 370, + "x": 329, + "y": 406, "w": 16, "h": 16 } @@ -8235,8 +8298,8 @@ "h": 16 }, "frame": { - "x": 360, - "y": 386, + "x": 345, + "y": 374, "w": 16, "h": 16 } @@ -8256,8 +8319,8 @@ "h": 16 }, "frame": { - "x": 360, - "y": 402, + "x": 345, + "y": 390, "w": 16, "h": 16 } @@ -8277,8 +8340,8 @@ "h": 16 }, "frame": { - "x": 376, - "y": 373, + "x": 345, + "y": 406, "w": 16, "h": 16 } @@ -8298,8 +8361,8 @@ "h": 16 }, "frame": { - "x": 376, - "y": 389, + "x": 361, + "y": 375, "w": 16, "h": 16 } @@ -8319,8 +8382,8 @@ "h": 16 }, "frame": { - "x": 376, - "y": 405, + "x": 361, + "y": 391, "w": 16, "h": 16 } @@ -8340,8 +8403,8 @@ "h": 16 }, "frame": { - "x": 392, - "y": 386, + "x": 361, + "y": 407, "w": 16, "h": 16 } @@ -8352,6 +8415,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:2fe5215a80083d35f525901078cb1f59:c17ac8d050238e3fca0ec935f6e8d37f:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:d7c7ecb91ab6604d8ab2ddb533b23145:a897bbf637b19b6d2a3b966b9c84e765:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items.png b/public/images/items.png index 4724f7b7b0ea480a301c741ba1cd67529fa9bf27..5f032b30cfb048c2d0cf71ec1e6ad3f051d832c9 100644 GIT binary patch literal 58664 zcmV*IKxe;+P)eEYJmOHfSv^xDv^OF=z7#$;!jQa|^)+x^qh z(?mh?`uBf(eqUf?_A4yn#q{8Yb-RK(_nD51kB$BN#I@t;o~yUGi*ks@@cH5J`n_Im zZE@4Una}n8yvqCJ!e+S4*KU@t<@){jSy=tT^Ppdp^wh5A&rWWR_Vwtazm+20;Po$_2u#ke!$(TBD2{$GJ|ic_wpqCBXi z2FdS$vh1K9c)RJ|Kv#uschagP*0Y zoWMI;Y32IToN^V0UugZv5pUc4eq_?1kXp^R3|BpEFlNMaoNVQ!MQmvdpo|<-Nye$A zT*ZeXMD;(~Cwj*OK^xwLo+5`&X7H_NSce}QEP=I#S z)wc1~7a}+xXBJnc<9G4$2C%3z}F!<~Kqn&?QZH1X8h4sf9ld~)>77d+IGz=p4fYlcj79vL=C{E~G`dX9GvQ7mB?p`%%0000AbW%=J0RR90 zd;kCbC7a7)pnCuS010qNS#tmY4#WTe4#WYKD-Ig~03ZNKL_t(|+U&gvd=*u;@1JvW zccpKI%+m=R2!sq^7$On~7@LqV6U@+`Kp;xO7%(8iRU(Rf@&W>y76L;01~q^X1Ohl9 zjev~^3W%Tx7g~sd3Q?clwiT83{psPq)*h<%uBwy7sqcOF^VZ35QkCJPzV%yc?X_3! z^7H$D_J6DC`VC*Zn)rJwMhKxF@RKmF*BdCFIR1qE&HPui@;bk7Vc)fu{=XmhbL7U4 z_?^E0nByKdHRFlf+-iMh{+_SDPP?Hy{(+`Vx?fX6OaCwX$5K*;6S5;E#Xr(}-@?ijGxP=JyYicdos9CvVVFmiIklQ1hUzneF|e(P)dpV#yA50y0ekwYc< zO|9VCF&y4@>;PUxMCJt_BI$de11>P*yZy+0gDYB=*!NF#c*56lzgAUP<@1EkUY70i z=T`Mz!$9ma5}$z>_J|!At5obF(L3V#N?Hi7Z!%J@&?#> z`Q6<5wZuz2(@XM84sB{GDLHhgsYPI92fzYcJN%Q93<80mDuxO^1lo8Nsldoi;C0VE z*PW2*I{usAF9lvUU~J#DdBCg6d7s`9cxC(exf8%^mGizEJ%QJ1AHVZy;N<{JKYaMZ zHETXRd{}Se9yce2784sQ=_@a6z<^++=ESS1d28d>;Qbi9>+E+nZ8~)M5ZL8I&CNGk ziUA}dg32p9+mx3VQAGywcWOvs|8*V<%_H;#n6B47G3SXV=IEBA zR|Tf)d#bXks}c9?bFDllE2y{gZuReh}cR)gt!+3NGFSD&};+Y6@a z?;);uJCwzxhcmzqmoC=*boq$++T#XDu~b*v!6sSv>oXaT1u?zp4wi4Jq-sQLn0z^N)LYfn{SR+g$SpcMu$DJ%?m zg{k@iTEJ=5lqs`U_3qP0)fdnLPOBf@UbcGC`SYs2fEIAt`}W(wD_(Vo1dj|ETUuIL z4ezB3;sW8LuI?$d>;WvHu}oTAW3dJ=kX4t7U|quUth{vn&>{4BbLQk9BIN6@x0V?% zno|RPyhRpU9W~C~@Tn`IdwhTZ4s+#-5di{S&(E6}XZ!lyw zdqJP^%FmJQ=NEw?v$93!BX26d^X+&vWcFTs{E9gF$9kT=Q`gt589R3S-5*zGWGpxl zxZCAgtjl{csF`~ZODv-m!-2&nnY<`20A}T-*VaN>v9sh5W*0ZFzqR$I@gi>|-`INN zMpIKwO$`8Re(>hkC39+PbszGQq8FDJrW|O9OXbC~c|v4)-E;l?b&wd?_4JCt_uYrU z^d3FtVAw)rb+>eB;_*Y^%EGXP$o6FY^;=~hlDhwXV1~SEJj%Wg$M(Ung~(?2`A+@0 zhaWzVVGEI!oiDqo?0frd$_kOa7ysutWnWB2#+_dOPd-@#|8B_GPu6_02K*k%$lSAF zK}N<{uepcuij83w0#8GQynt68@QPgF$ZJM^e#wyL%lSa8r1^4l+6|#QP*&X#fK^vl z$B=C-$*(PGa+cQ)CtgfpUdT5TUZg+R0x~j8me=*`>E{vGbt

?z@lBAUfj?z?JaC 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 literal 58177 zcmV*0KzYB3P)l+Do9{Q3I*=U&+1;+UJ6Pg7Fp=;y}9 z#;~!m{rc1E`1_5GjsEkfl~pjPBO!i(f%~to%CAHBTv*2L{QS#Cl)(7>_rdzn$Ca6? z)4!WyVte7l^l^{1p{B0jg>#~rR@eCao$3Cs)AMw5cgSF4smI5=mmTE7W~KFt`|RXo zXJxkN=YnY&y@C1I-}cl=NBh3x_a`a&zh8c<%{DlwjjXdo#QIH+J|JvR;HZ|M1Li)V-QlX{c_UC`#TAO2> z>*S=IcoyGxA|`W^$MJ@_kZR5*7U$AZOlxV#(&^pr^ip*7L7wsM@Mx>B#y>q{gVXkC zkNLAw=j-2yw}drNs89X$bj~g{{rutl-2j=Epuu+dBEfpmnxx=hxf((R;(f{!(zN zs>Z9?+hAQ-Rbp9S`k{)neahElPW_TLb~iZU(1fN>ic>2aV98R!^~}lR#P-|!(NTu< zn^PFM(|e$#i*ZH#`X-1e8H7tshCp|F>!=(yf8W5sWtVa2Gt~b5k=s=*{Fa+BmAE!{ K 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 AuK)l5 From e32d1612d9d71e72a05ed3ae7c2b7c44f11ca1f9 Mon Sep 17 00:00:00 2001 From: Madmadness65 Date: Sat, 14 Sep 2024 21:08:38 -0500 Subject: [PATCH 76/88] Resize Sun & Moon Flute item sprites They will no longer appear weirdly offset on the reward selection screen. --- public/images/items.json | 18 +++++++++--------- public/images/items/moon_flute.png | Bin 555 -> 336 bytes public/images/items/sun_flute.png | Bin 582 -> 347 bytes 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/public/images/items.json b/public/images/items.json index 509b4458a9f..779823d1293 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -4592,12 +4592,12 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 24, - "h": 24 + "w": 32, + "h": 32 }, "spriteSourceSize": { - "x": 1, - "y": 1, + "x": 5, + "y": 5, "w": 22, "h": 22 }, @@ -4886,12 +4886,12 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 24, - "h": 24 + "w": 32, + "h": 32 }, "spriteSourceSize": { - "x": 1, - "y": 1, + "x": 5, + "y": 5, "w": 22, "h": 22 }, @@ -8415,6 +8415,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:d7c7ecb91ab6604d8ab2ddb533b23145:a897bbf637b19b6d2a3b966b9c84e765:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:934ea4080bad980d4fea720cc771f133:ed564bc47b79b15a763de57045178e88:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items/moon_flute.png b/public/images/items/moon_flute.png index 4237a9b29adbe7adf206fa1cab2104f4a55d99f5..893cb6a75796b92a2a6aa9429e199a4afbda4736 100644 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijS1AIbU4Gj(7z590b=)EOJzkPdF9TYStsClnfRPmH0N3**30#(h(xePLz zyCldj_&*#lc=c1AO)L!_0&+KEA{BJm|4Ju)kI-GsapjrHhxd;fneIO0 z+RxAaX7XXBki&L15?8Kv^_hp{3|Lh%M&)oD4-R~-ybh2zy9;_5^FtqcZrW_V$ SIHLsUSO!m5KbLh*2~7Y2S%;ti literal 555 zcmV+`0@VG9P)pFAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-u}MThRCwCdmLX5WP!xr~M=JOU%uzX9=Ll}{$$}!d;riU_7UbOOTE`rjTjd;e z%iQL8^5NE>P*=p(hC*2vRs=U`(&W9IlXLGqrxkgg^OtqTAD30U^m;vj&vL{m!0Yw8 zN&w`quS>K}F($%z&5B;M(I>NInw?6Z<6z z(2A0;TT~%wLrLA5wyNYOAGD^#I&daT?B@X!GMxc%-d!;am&FPnGqg?t2*Y_}%ML0ifW}dTlrHzuLF<%p6fyEV zg2c2Fc9)JU!HXJ45kTYMk0QA0oLAIrb;8K=$n>IdyAHN!W40_7F#vCl8#F+t+ebf*ZA3qXG9 z$OPFK#~C>GuRoch<|)sV tx-G#?>{lFa(N2kdTljIv|MsuqV*px@<{k~r6czvg002ovPDHLkV1hC*`4j*E diff --git a/public/images/items/sun_flute.png b/public/images/items/sun_flute.png index b7cbcdf5569e04fed086f61bb561ea7c6ea104e6..7010c9fefbd98c22b1d7b641db3e292afc03717f 100644 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijS1AIbU4Gj&yy<78tOVHV7!z@e7vq_q3ij%%w&1w$v`oAR!s7hpw&N?8) zT@vIM{2vY&y!;tI0fjjWJR*x382Ao>Fr%o3R|8ORji-xah=u>vN!~(76gXTQC-#50 z|1crM$07NwRnC!bp^Iak{s+%zVlaE5$~^6tAI}1Xt>H-wcg*CRnQv9xxpeMv;2q}- z)h31*mrAuqax(&6i+J2(hi8b{VQ@IN&6*l}L{Kz&@Cc*0tK chQ0q8{w`9UqhxT19q4WbPgg&ebxsLQ0Oj_A_W%F@ literal 582 zcmV-M0=fN(P)pFAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-%t=H+RCwCdmLYW7P!xv0*E5kg<`UP)$oJfs0@*omJyV>zNpKm8#kFz{D(i|{ zTvJuz@?>P@z^#tBR0KE#80ly#cGWxQo^${F_ul`%5qX~To^i%I$A|SpDFv`iN4%wQ z9LIYM@}~!nc;qndunSgCi_F;_%jPAMz+f!1T0lww_m2&d!I0};eN@M-g~>L6@I%cc zY1GPOcZ)=nWwkOnw5DYyj#V%@5#(<=*f25E1=nLqpl!Ui{AZA3LKA+dxqoahxYG2; zJ(6^>%_Ofw$-)mc?WPO!5ZAE?v`xo(J)0_k{OQ4?+X6Gqxab+UjzxcTzRTuxFEVEV zvDU;|7a-mR!EFXW`YhknqQW|~MoEd1l6V@yJS0gM%;$gTww^0loK=1Oq3Dm!vF(p6 z9SbFod)HBbAGZrgv;BnK=6lcLX85~OCt`hYR(8GDrg*e!4WK%oR-VPCO+P)GW%Ckq zc1NsJuBJuZLw0>ImW~0AQ7RtJ5~k^#jTpDQYj=Gsb@2IX#3V3?wdR|j&}~7KW$S|^ z{7?fh_;OR|<%E+dqAWv6NxSKyhI%irhUupG3Q)Xu2BmpaoYGQ$Jp=LI|5dyU0HuxT UXL3}E?f?J)07*qoM6N<$f Date: Sun, 15 Sep 2024 09:31:57 +0200 Subject: [PATCH 77/88] Update src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json --- .../mystery-encounters/an-offer-you-cant-refuse-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json b/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json index 68b120fbac5..67ac2b1e7f3 100644 --- a/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json +++ b/src/locales/de/mystery-encounters/an-offer-you-cant-refuse-dialogue.json @@ -1,7 +1,7 @@ { "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 Haustier wie dieses haben wollen!$Ich würde dir großzügig bezahlen, und dir auch diesen alten Kram geben!", + "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?", From ddf97fd8f6129dfc1bab54da15f8c41655ed7380 Mon Sep 17 00:00:00 2001 From: damocleas Date: Sun, 15 Sep 2024 03:55:17 -0400 Subject: [PATCH 78/88] [Balance] Pokerus Starter Count 3 -> 5, made pokerus count a constant as to only require one line change (#4268) * Update pokemon-species.ts Pokerus starters 3 -> 5 * Update starter-select-ui-handler.ts * Updated pokemon-species.ts, changes from frutescens to make Pokerus # a constant that imports into starter select ui * Update starter-select-ui-handler.ts to continue the other changes * Update src/data/pokemon-species.ts --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/pokemon-species.ts | 4 ++-- src/ui/starter-select-ui-handler.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 633150c62f2..4eb526eeb2b 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -3348,6 +3348,7 @@ export function getStarterValueFriendshipCap(value: integer): integer { } } +export const POKERUS_STARTER_COUNT = 5; //adjust here! /** * Method to get the daily list of starters with Pokerus. * @param scene {@linkcode BattleScene} used as part of RNG @@ -3356,10 +3357,9 @@ export function getStarterValueFriendshipCap(value: integer): integer { export function getPokerusStarters(scene: BattleScene): PokemonSpecies[] { const pokerusStarters: PokemonSpecies[] = []; const date = new Date(); - const starterCount = 3; //for easy future adjustment! date.setUTCHours(0, 0, 0, 0); scene.executeWithSeedOffset(() => { - while (pokerusStarters.length < starterCount) { + while (pokerusStarters.length < POKERUS_STARTER_COUNT) { const randomSpeciesId = parseInt(Utils.randSeedItem(Object.keys(speciesStarters)), 10); const species = getPokemonSpecies(randomSpeciesId); if (!pokerusStarters.includes(species)) { diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index ac6af5cbb04..ee56a3631dd 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -13,7 +13,7 @@ import { allMoves } from "../data/move"; import { Nature, getNatureName } from "../data/nature"; import { pokemonFormChanges } from "../data/pokemon-forms"; import { LevelMoves, pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "../data/pokemon-level-moves"; -import PokemonSpecies, { allSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities, getPokerusStarters } from "../data/pokemon-species"; +import PokemonSpecies, { allSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities, POKERUS_STARTER_COUNT, getPokerusStarters } from "../data/pokemon-species"; import { Type } from "../data/type"; import { GameModes } from "../game-mode"; import { AbilityAttr, DexAttr, DexAttrProps, DexEntry, StarterMoveset, StarterAttributes, StarterPreferences, StarterPrefs } from "../system/game-data"; @@ -631,7 +631,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { starterBoxContainer.add(this.starterSelectScrollBar); - this.pokerusCursorObjs = new Array(3).fill(null).map(() => { + this.pokerusCursorObjs = new Array(POKERUS_STARTER_COUNT).fill(null).map(() => { const cursorObj = this.scene.add.image(0, 0, "select_cursor_pokerus"); cursorObj.setVisible(false); cursorObj.setOrigin(0, 0); From cd8cea1c1d51445d365b1e3206690d47361bec4d Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 11:42:29 +0200 Subject: [PATCH 79/88] Update trash-to-treasure-dialogue.json --- .../trash-to-treasure-dialogue.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/locales/fr/mystery-encounters/trash-to-treasure-dialogue.json b/src/locales/fr/mystery-encounters/trash-to-treasure-dialogue.json index ac6574969ed..99d84d894fd 100644 --- a/src/locales/fr/mystery-encounters/trash-to-treasure-dialogue.json +++ b/src/locales/fr/mystery-encounters/trash-to-treasure-dialogue.json @@ -1,19 +1,19 @@ { - "intro": "C’est un énorme tas de déchets !\nComment il est arrivé là ?", - "title": "Trash to Treasure", + "intro": "C’est un énorme tas d’ordures !\nComment il est arrivé là ?", + "title": "20 000 lieues sous la mer-", "description": "Un énorme tas d’ordures se dresse devant vos yeux, dans lequel vous arrivez à entrevoir quelques objets de valeur.\nPar contre, il faut que vous acceptiez l’idée de vous couvrir de saletés pour allez les récupérer…", "query": "Que voulez-vous faire ?", "option": { "1": { - "label": "Chercher des trésors", + "label": "Le fouiller", "tooltip": "(-) Aucun objet de soin en boutique\n(+) Gain d’objets exceptionnels", - "selected": "Vous barbotez dans le tas d’ordures et vous vous couvrez de crasse.$Vu votre état, il n’y a vraiment plus aucune chance qu’un vendeur accpete de vous vendre quoi que ce soit !$Vous aller devoir vous débrouiller sans objet de soin.$Mais ça valait le coup, car ce que vous avez trouvé\ndans les ordures est incroyable !" + "selected": "Vous barbotez dans le tas d’ordures et\nvous vous couvrez de crasse.$Vu votre état, il n’y a vraiment plus aucune chance qu’une boutique accpete de vous donner quoi que ce soit !$Vous aller devoir vous débrouiller sans objet de soin.$Mais ça valait le coup, car ce que vous avez trouvé\ndans les ordures est incroyable !" }, "2": { - "label": "Enquêter", - "tooltip": "(?) Trouver la source des déchets", - "selected": "Vous vous baladez autour du tas, à la recherche du moindre indice sur comment ça a bien pu arriver ici…", - "selected_2": "Oh, un des déchets bouge !\nC’était pas un déchet, mais un Pokémon !" + "label": "Enquêter sur le tas", + "tooltip": "(?) Trouver la source des ordures", + "selected": "Vous vous baladez autour du tas, à la recherche du moindre indice sur la raison de sa présence ici…", + "selected_2": "Oh !\nLes ordures se mettent à bouger !$Le tas est en réalité un Pokémon !\nIl vous attaque !" } } } From 21af89ec05a6891cfba3af0507761ec48c84afef Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 11:51:35 +0200 Subject: [PATCH 80/88] Update lost-at-sea-dialogue.json --- src/locales/fr/mystery-encounters/lost-at-sea-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/mystery-encounters/lost-at-sea-dialogue.json b/src/locales/fr/mystery-encounters/lost-at-sea-dialogue.json index 3e8304d2018..9d74266cdcf 100644 --- a/src/locales/fr/mystery-encounters/lost-at-sea-dialogue.json +++ b/src/locales/fr/mystery-encounters/lost-at-sea-dialogue.json @@ -5,14 +5,14 @@ "query": "Que voulez-vous faire ?", "option": { "1": { - "label": "{{option1PrimaryName}} peut aider", + "label": "{{option1PrimaryName}} à l’aide", "label_disabled": "{{option1RequiredMove}} impossible", "tooltip": "(+) {{option1PrimaryName}} vous sauve\n(+) {{option1PrimaryName}} gagne un peu d’Exp", "tooltip_disabled": "Vous n’avez aucun Pokémon avec {{option1RequiredMove}}", "selected": "{{option1PrimaryName}} nage en tête et vous guide.${{option1PrimaryName}} semble ressorti plus fort de cette épreuve difficile !" }, "2": { - "label": "{{option2PrimaryName}} peut aider", + "label": "{{option2PrimaryName}} à l’aide", "label_disabled": "{{option2RequiredMove}} impossible", "tooltip": "(+) {{option2PrimaryName}} vous sauve\n(+) {{option2PrimaryName}} gagne un peu d’Exp", "tooltip_disabled": "Vous n’avez aucun Pokémon avec {{option2RequiredMove}}", From 90b4aeaeac95f3f79b3dade2bd72f0b03bc99851 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 12:40:26 +0200 Subject: [PATCH 81/88] Update dialogue.json --- src/locales/fr/dialogue.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/locales/fr/dialogue.json b/src/locales/fr/dialogue.json index 5325760eb65..a0621e7d77a 100644 --- a/src/locales/fr/dialogue.json +++ b/src/locales/fr/dialogue.json @@ -509,8 +509,8 @@ "2": "Hé, hé, hé !\nTu mets le feu !" }, "defeat": { - "1": "Oh ? En panne de carburant je suppose ?", - "2": "Oh ? En panne de carburant je suppose ?" + "1": "Oh ?\nEn panne de carburant je suppose ?", + "2": "Oh ?\nEn panne de carburant je suppose ?" } }, "stat_trainer_cheryl": { @@ -571,7 +571,7 @@ }, "winstrates_victor": { "encounter": { - "1": "Bon esprit ! J’aime ça !" + "1": "Bon esprit !\nJ’aime ça !" }, "victory": { "1": "Mince !\nTu as un meilleur niveau que je ne le pensais !" @@ -579,7 +579,7 @@ }, "winstrates_victoria": { "encounter": { - "1": "Oh, ciel ! Ce que tu es jeune !$Mais si tu as battu mon mari, c’est que tu sais t’y prendre.$À nous deux, maintenant !" + "1": "Oh, ciel !\nCe que tu es jeune !$Mais si tu as battu mon mari,\nc’est que tu sais t’y prendre.$À nous deux, maintenant !" }, "victory": { "1": "Ciel ! Cette force !\nJ’en suis toute retournée !" @@ -595,7 +595,7 @@ }, "winstrates_vicky": { "encounter": { - "1": "Comment oses-tu faire pleurer mon adorable petite-fille !$Tu vas me le payer !\nTes Pokémon vont mordre la poussière !" + "1": "Comment oses-tu faire pleurer\nmon adorable petite-fille !$Tu vas me le payer !\nTes Pokémon vont mordre la poussière !" }, "victory": { "1": "Ouh! Quelle puissance…\nMa petite-fille avait raison…" @@ -603,7 +603,7 @@ }, "winstrates_vito": { "encounter": { - "1": "On s’entraine tous ensemble, avec les membres de ma famille !$Je ne perds contre personne !" + "1": "On s’entraine tous ensemble,\navec les membres de ma famille !$Je ne perds contre personne !" }, "victory": { "1": "J’ai toujours été le meilleur de la famille.\nJe n’avais encore jamais perdu…" From b5fa6429d95eabca2d663091214e668923ff5b5e Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 16:05:42 +0200 Subject: [PATCH 82/88] Update modifier-type.json --- src/locales/fr/modifier-type.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/modifier-type.json b/src/locales/fr/modifier-type.json index a97a146d497..a4bd7cabe3c 100644 --- a/src/locales/fr/modifier-type.json +++ b/src/locales/fr/modifier-type.json @@ -72,7 +72,7 @@ "name": "Jus de Caratroc", "description": "{{increaseDecrease}} toutes les stats de son porteur de {{statValue}} cran. Caratroc vous a {{blessCurse}}.", "extra": { - "increase": "Augumente", + "increase": "Augmente", "decrease": "Baisse", "blessed": "accordé sa bénédiction", "cursed": "jeté une malédiction" From a452eebf9e9e96a26e773105e12fc8f244ea3794 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 16:06:12 +0200 Subject: [PATCH 83/88] Update dancing-lessons-dialogue.json --- src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json b/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json index 7e7394889b4..61a5049a7c7 100644 --- a/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json +++ b/src/locales/fr/mystery-encounters/dancing-lessons-dialogue.json @@ -8,7 +8,7 @@ "label": "L’affronter", "tooltip": "(-) Combat difficile\n(+) Gain d’un Bâton", "selected": "Le {{oricorioName}} est desemparé\net tente de se défendre !", - "boss_enraged": "La peur de {{oricorioName}} augumente beaucoup ses stats !" + "boss_enraged": "La peur de {{oricorioName}} augmente beaucoup ses stats !" }, "2": { "label": "Apprendre sa danse", From 8d2d4de3f7a721e9c7c1b9f9af38e76baf7aa4c5 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 16:06:41 +0200 Subject: [PATCH 84/88] Update safari-zone-dialogue.json --- src/locales/fr/mystery-encounters/safari-zone-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/safari-zone-dialogue.json b/src/locales/fr/mystery-encounters/safari-zone-dialogue.json index 97838e04943..24834d128c0 100644 --- a/src/locales/fr/mystery-encounters/safari-zone-dialogue.json +++ b/src/locales/fr/mystery-encounters/safari-zone-dialogue.json @@ -23,7 +23,7 @@ }, "2": { "label": "Lancer un appât", - "tooltip": "(+) Augumente le taux de capture\n(-) Augumente le risque de fuite", + "tooltip": "(+) Augmente le taux de capture\n(-) Augmente le risque de fuite", "selected": "Vous lancez quelques appâts !" }, "3": { From 078a9f7ae9d89c76d53af740145de653a4a5d13b Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 16:07:16 +0200 Subject: [PATCH 85/88] Update the-strong-stuff-dialogue.json --- .../fr/mystery-encounters/the-strong-stuff-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/mystery-encounters/the-strong-stuff-dialogue.json b/src/locales/fr/mystery-encounters/the-strong-stuff-dialogue.json index 45de078d550..c9d22039a2e 100644 --- a/src/locales/fr/mystery-encounters/the-strong-stuff-dialogue.json +++ b/src/locales/fr/mystery-encounters/the-strong-stuff-dialogue.json @@ -8,13 +8,13 @@ "label": "Approcher {{shuckleName}}", "tooltip": "(?) Quelque chose de terrible ou d’incroyable peut se produire", "selected": "Vous perdez subitement connaissance.", - "selected_2": "@f{150}À votre réveil, le {{shuckleName}} est parti et\nle bol de jus est complètement vide.${{highBstPokemon1}} et {{highBstPokemon2}}\nsont vicitmes d’une forte léthargie !$Leurs stats de base sont baissées de {{reductionValue}} !$Mais par contre, vos autres Pokémon sont envahis\nd’une vigueur encore jamais vue !$Leurs stats de base sont augumentées de {{increaseValue}} !" + "selected_2": "@f{150}À votre réveil, le {{shuckleName}} est parti et\nle bol de jus est complètement vide.${{highBstPokemon1}} et {{highBstPokemon2}}\nsont vicitmes d’une forte léthargie !$Leurs stats de base sont baissées de {{reductionValue}} !$Mais par contre, vos autres Pokémon sont envahis\nd’une vigueur encore jamais vue !$Leurs stats de base sont augmentées de {{increaseValue}} !" }, "2": { "label": "Affronter {{shuckleName}}", "tooltip": "(-) Combat difficile\n(+) Récompense spéciale", "selected": "Le {{shuckleName}} s’énerve, boit un peu de jus et attaque !", - "stat_boost": "Le jus de {{shuckleName}} augumente ses stats !" + "stat_boost": "Le jus de {{shuckleName}} augmente ses stats !" } }, "outro": "Quelle étrange tournure des évènements." From 26722cfb91502f7e88979ee4084fab7e44e26ab8 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 16:08:00 +0200 Subject: [PATCH 86/88] Update training-session-dialogue.json --- .../fr/mystery-encounters/training-session-dialogue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/fr/mystery-encounters/training-session-dialogue.json b/src/locales/fr/mystery-encounters/training-session-dialogue.json index 6e0e69660d7..8c10ac13839 100644 --- a/src/locales/fr/mystery-encounters/training-session-dialogue.json +++ b/src/locales/fr/mystery-encounters/training-session-dialogue.json @@ -7,8 +7,8 @@ "option": { "1": { "label": "Léger", - "tooltip": "(-) Combat léger\n(+) Augumente au hasard 2 IV du Pokémon", - "finished": "{{selectedPokemon}} revient vers vous,\nl’air fatigué mais fier de lui !$Ses IV en {{stat1}} et\nen {{stat2}} augumentent !" + "tooltip": "(-) Combat léger\n(+) Augmente au hasard 2 IV du Pokémon", + "finished": "{{selectedPokemon}} revient vers vous,\nl’air fatigué mais fier de lui !$Ses IV en {{stat1}} et\nen {{stat2}} augmentent !" }, "2": { "label": "Modéré", From 66c70a5f74a6911bd627f6fe0aa8029edd21a361 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 16:08:22 +0200 Subject: [PATCH 87/88] Update uncommon-breed-dialogue.json --- src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json b/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json index 044c8646126..f3438bfcee6 100644 --- a/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json +++ b/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json @@ -8,7 +8,7 @@ "label": "L’affronter", "tooltip": "(-) Combat compliqué\n(+) Capturer un adversaire puissant", "selected": "Vous approchez\nle Pokémon sans frémir.", - "stat_boost": "Les caractéristiques particulières\nde ce {{enemyPokemon}} augumentent ses stats !" + "stat_boost": "Les caractéristiques particulières\nde ce {{enemyPokemon}} augmentent ses stats !" }, "2": { "label": "Le nourrir", From fe5da9006df580c515b628285aee752948bf61b3 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sun, 15 Sep 2024 16:18:01 +0200 Subject: [PATCH 88/88] Update config.ts --- src/locales/en/config.ts | 58 ++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/locales/en/config.ts b/src/locales/en/config.ts index f83fec5be26..c033e185225 100644 --- a/src/locales/en/config.ts +++ b/src/locales/en/config.ts @@ -55,35 +55,35 @@ 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 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"; /** * Dialogue/Text token injection patterns that can be used: