Merge branch 'beta' into hebrew-pr

This commit is contained in:
Lugiad 2024-09-26 02:31:55 +02:00 committed by GitHub
commit 224461c40f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
155 changed files with 3734 additions and 605 deletions

150
package-lock.json generated
View File

@ -1511,224 +1511,208 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz",
"integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz",
"integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-android-arm64": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz",
"integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz",
"integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz",
"integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz",
"integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-darwin-x64": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz",
"integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz",
"integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz",
"integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz",
"integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz",
"integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz",
"integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz",
"integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz",
"integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz",
"integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz",
"integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz",
"integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz",
"integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz",
"integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz",
"integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz",
"integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz",
"integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==",
"cpu": [
"s390x"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz",
"integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz",
"integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz",
"integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz",
"integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz",
"integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz",
"integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz",
"integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz",
"integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz",
"integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz",
"integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
@ -5446,9 +5430,9 @@
}
},
"node_modules/rollup": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz",
"integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==",
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz",
"integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==",
"dev": true,
"dependencies": {
"@types/estree": "1.0.5"
@ -5461,22 +5445,22 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.18.1",
"@rollup/rollup-android-arm64": "4.18.1",
"@rollup/rollup-darwin-arm64": "4.18.1",
"@rollup/rollup-darwin-x64": "4.18.1",
"@rollup/rollup-linux-arm-gnueabihf": "4.18.1",
"@rollup/rollup-linux-arm-musleabihf": "4.18.1",
"@rollup/rollup-linux-arm64-gnu": "4.18.1",
"@rollup/rollup-linux-arm64-musl": "4.18.1",
"@rollup/rollup-linux-powerpc64le-gnu": "4.18.1",
"@rollup/rollup-linux-riscv64-gnu": "4.18.1",
"@rollup/rollup-linux-s390x-gnu": "4.18.1",
"@rollup/rollup-linux-x64-gnu": "4.18.1",
"@rollup/rollup-linux-x64-musl": "4.18.1",
"@rollup/rollup-win32-arm64-msvc": "4.18.1",
"@rollup/rollup-win32-ia32-msvc": "4.18.1",
"@rollup/rollup-win32-x64-msvc": "4.18.1",
"@rollup/rollup-android-arm-eabi": "4.22.4",
"@rollup/rollup-android-arm64": "4.22.4",
"@rollup/rollup-darwin-arm64": "4.22.4",
"@rollup/rollup-darwin-x64": "4.22.4",
"@rollup/rollup-linux-arm-gnueabihf": "4.22.4",
"@rollup/rollup-linux-arm-musleabihf": "4.22.4",
"@rollup/rollup-linux-arm64-gnu": "4.22.4",
"@rollup/rollup-linux-arm64-musl": "4.22.4",
"@rollup/rollup-linux-powerpc64le-gnu": "4.22.4",
"@rollup/rollup-linux-riscv64-gnu": "4.22.4",
"@rollup/rollup-linux-s390x-gnu": "4.22.4",
"@rollup/rollup-linux-x64-gnu": "4.22.4",
"@rollup/rollup-linux-x64-musl": "4.22.4",
"@rollup/rollup-win32-arm64-msvc": "4.22.4",
"@rollup/rollup-win32-ia32-msvc": "4.22.4",
"@rollup/rollup-win32-x64-msvc": "4.22.4",
"fsevents": "~2.3.2"
}
},

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -2026,6 +2026,7 @@ export class PostSummonAbAttr extends AbAttr {
return false;
}
}
/**
* Removes specified arena tags when a Pokemon is summoned.
*/
@ -2852,17 +2853,17 @@ export class PreApplyBattlerTagAbAttr extends AbAttr {
* Provides immunity to BattlerTags {@linkcode BattlerTag} to specified targets.
*/
export class PreApplyBattlerTagImmunityAbAttr extends PreApplyBattlerTagAbAttr {
private immuneTagType: BattlerTagType;
private immuneTagTypes: BattlerTagType[];
private battlerTag: BattlerTag;
constructor(immuneTagType: BattlerTagType) {
constructor(immuneTagTypes: BattlerTagType | BattlerTagType[]) {
super();
this.immuneTagType = immuneTagType;
this.immuneTagTypes = Array.isArray(immuneTagTypes) ? immuneTagTypes : [immuneTagTypes];
}
applyPreApplyBattlerTag(pokemon: Pokemon, passive: boolean, simulated: boolean, tag: BattlerTag, cancelled: Utils.BooleanHolder, args: any[]): boolean {
if (tag.tagType === this.immuneTagType) {
if (this.immuneTagTypes.includes(tag.tagType)) {
cancelled.value = true;
if (!simulated) {
this.battlerTag = tag;
@ -4916,7 +4917,7 @@ export function initAbilities() {
.attr(TypeImmunityHealAbAttr, Type.WATER)
.ignorable(),
new Ability(Abilities.OBLIVIOUS, 3)
.attr(BattlerTagImmunityAbAttr, BattlerTagType.INFATUATED)
.attr(BattlerTagImmunityAbAttr, [BattlerTagType.INFATUATED, BattlerTagType.TAUNT])
.attr(IntimidateImmunityAbAttr)
.ignorable(),
new Ability(Abilities.CLOUD_NINE, 3)
@ -5402,8 +5403,7 @@ export function initAbilities() {
.attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonTeravolt", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }))
.attr(MoveAbilityBypassAbAttr),
new Ability(Abilities.AROMA_VEIL, 6)
.ignorable()
.unimplemented(),
.attr(UserFieldBattlerTagImmunityAbAttr, [BattlerTagType.INFATUATED, BattlerTagType.TAUNT, BattlerTagType.DISABLED, BattlerTagType.TORMENT, BattlerTagType.HEAL_BLOCK]),
new Ability(Abilities.FLOWER_VEIL, 6)
.ignorable()
.unimplemented(),
@ -5885,7 +5885,6 @@ export function initAbilities() {
.ignorable(),
new Ability(Abilities.EARTH_EATER, 9)
.attr(TypeImmunityHealAbAttr, Type.GROUND)
.partial() // Healing not blocked by Heal Block
.ignorable(),
new Ability(Abilities.MYCELIUM_MIGHT, 9)
.attr(ChangeMovePriorityAbAttr, (pokemon, move) => move.category === MoveCategory.STATUS, -0.2)
@ -5900,8 +5899,7 @@ export function initAbilities() {
.attr(PostSummonStatStageChangeAbAttr, [ Stat.EVA ], -1)
.condition(getOncePerBattleCondition(Abilities.SUPERSWEET_SYRUP)),
new Ability(Abilities.HOSPITALITY, 9)
.attr(PostSummonAllyHealAbAttr, 4, true)
.partial(), // Healing not blocked by Heal Block
.attr(PostSummonAllyHealAbAttr, 4, true),
new Ability(Abilities.TOXIC_CHAIN, 9)
.attr(PostAttackApplyStatusEffectAbAttr, false, 30, StatusEffect.TOXIC),
new Ability(Abilities.EMBODY_ASPECT_TEAL, 9)

View File

@ -1,14 +1,15 @@
import { Arena } from "../field/arena";
import { Type } from "./type";
import * as Utils from "../utils";
import { MoveCategory, allMoves, MoveTarget, IncrementMovePriorityAttr, applyMoveAttrs } from "./move";
import { getPokemonNameWithAffix } from "../messages";
import Pokemon, { HitResult, PokemonMove } from "../field/pokemon";
import { StatusEffect } from "./status-effect";
import { BattlerIndex } from "../battle";
import { BlockNonDirectDamageAbAttr, ChangeMovePriorityAbAttr, ProtectStatAbAttr, applyAbAttrs } from "./ability";
import { Arena } from "#app/field/arena";
import BattleScene from "#app/battle-scene";
import { Type } from "#app/data/type";
import * as Utils from "#app/utils";
import { MoveCategory, allMoves, MoveTarget, IncrementMovePriorityAttr, applyMoveAttrs } from "#app/data/move";
import { getPokemonNameWithAffix } from "#app/messages";
import Pokemon, { HitResult, PlayerPokemon, PokemonMove, EnemyPokemon } from "#app/field/pokemon";
import { StatusEffect } from "#app/data/status-effect";
import { BattlerIndex } from "#app/battle";
import { BlockNonDirectDamageAbAttr, ChangeMovePriorityAbAttr, ProtectStatAbAttr, applyAbAttrs } from "#app/data/ability";
import { Stat } from "#enums/stat";
import { CommonAnim, CommonBattleAnim } from "./battle-anims";
import { CommonAnim, CommonBattleAnim } from "#app/data/battle-anims";
import i18next from "i18next";
import { Abilities } from "#enums/abilities";
import { ArenaTagType } from "#enums/arena-tag-type";
@ -919,6 +920,77 @@ class SafeguardTag extends ArenaTag {
}
}
/**
* This arena tag facilitates the application of the move Imprison
* Imprison remains in effect as long as the source Pokemon is active and present on the field.
* Imprison will apply to any opposing Pokemon that switch onto the field as well.
*/
class ImprisonTag extends ArenaTrapTag {
private source: Pokemon;
constructor(sourceId: number, side: ArenaTagSide) {
super(ArenaTagType.IMPRISON, Moves.IMPRISON, sourceId, side, 1);
}
/**
* Helper function that retrieves the Pokemon effected
* @param {BattleScene} scene medium to retrieve the involved Pokemon
* @returns list of PlayerPokemon or EnemyPokemon on the field
*/
private retrieveField(scene: BattleScene): PlayerPokemon[] | EnemyPokemon[] {
if (!this.source.isPlayer()) {
return scene.getPlayerField() ?? [];
}
return scene.getEnemyField() ?? [];
}
/**
* This function applies the effects of Imprison to the opposing Pokemon already present on the field.
* @param arena
*/
override onAdd({ scene }: Arena) {
this.source = scene.getPokemonById(this.sourceId!)!;
if (this.source) {
const party = this.retrieveField(scene);
party?.forEach((p: PlayerPokemon | EnemyPokemon ) => {
p.addTag(BattlerTagType.IMPRISON, 1, Moves.IMPRISON, this.sourceId);
});
scene.queueMessage(i18next.t("battlerTags:imprisonOnAdd", {pokemonNameWithAffix: getPokemonNameWithAffix(this.source)}));
}
}
/**
* Checks if the source Pokemon is still active on the field
* @param _arena
* @returns `true` if the source of the tag is still active on the field | `false` if not
*/
override lapse(_arena: Arena): boolean {
return this.source.isActive(true);
}
/**
* This applies the effects of Imprison to any opposing Pokemon that switch into the field while the source Pokemon is still active
* @param {Pokemon} pokemon the Pokemon Imprison is applied to
* @returns `true`
*/
override activateTrap(pokemon: Pokemon): boolean {
if (this.source.isActive(true)) {
pokemon.addTag(BattlerTagType.IMPRISON, 1, Moves.IMPRISON, this.sourceId);
}
return true;
}
/**
* When the arena tag is removed, it also attempts to remove any related Battler Tags if they haven't already been removed from the affected Pokemon
* @param arena
*/
override onRemove({ scene }: Arena): void {
const party = this.retrieveField(scene);
party?.forEach((p: PlayerPokemon | EnemyPokemon) => {
p.removeTag(BattlerTagType.IMPRISON);
});
}
}
export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves | undefined, sourceId: integer, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH): ArenaTag | null {
switch (tagType) {
@ -967,6 +1039,8 @@ export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMov
return new HappyHourTag(turnCount, sourceId, side);
case ArenaTagType.SAFEGUARD:
return new SafeguardTag(turnCount, sourceId, side);
case ArenaTagType.IMPRISON:
return new ImprisonTag(sourceId, side);
default:
return null;
}

View File

@ -3,7 +3,7 @@ import { getPokemonNameWithAffix } from "../messages";
import Pokemon, { MoveResult, HitResult } from "../field/pokemon";
import { StatusEffect } from "./status-effect";
import * as Utils from "../utils";
import { ChargeAttr, MoveFlags, allMoves, MoveCategory, applyMoveAttrs, StatusCategoryOnAllyAttr, HealOnAllyAttr } from "./move";
import { ChargeAttr, MoveFlags, allMoves, MoveCategory, applyMoveAttrs, StatusCategoryOnAllyAttr, HealOnAllyAttr, ConsecutiveUseDoublePowerAttr } from "./move";
import { Type } from "./type";
import { BlockNonDirectDamageAbAttr, FlinchEffectAbAttr, ReverseDrainAbAttr, applyAbAttrs, ProtectStatAbAttr } from "./ability";
import { TerrainType } from "./terrain";
@ -2311,6 +2311,11 @@ export class AutotomizedTag extends BattlerTag {
}
}
/**
* Tag implementing the {@link https://bulbapedia.bulbagarden.net/wiki/Substitute_(doll)#Effect | Substitute Doll} effect,
* for use with the moves Substitute and Shed Tail. Pokemon with this tag deflect most forms of received attack damage
* onto the tag. This tag also grants immunity to most Status moves and several move effects.
*/
export class SubstituteTag extends BattlerTag {
/** The substitute's remaining HP. If HP is depleted, the Substitute fades. */
public hp: number;
@ -2330,7 +2335,11 @@ export class SubstituteTag extends BattlerTag {
// Queue battle animation and message
pokemon.scene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_ADD);
pokemon.scene.queueMessage(i18next.t("battlerTags:substituteOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500);
if (this.sourceMove === Moves.SHED_TAIL) {
pokemon.scene.queueMessage(i18next.t("battlerTags:shedTailOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500);
} else {
pokemon.scene.queueMessage(i18next.t("battlerTags:substituteOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500);
}
// Remove any binding effects from the user
pokemon.findAndRemoveTags(tag => tag instanceof DamagingTrapTag);
@ -2437,6 +2446,150 @@ export class MysteryEncounterPostSummonTag extends BattlerTag {
}
}
/**
* Battle Tag that applies the move Torment to the target Pokemon
* Torment restricts the use of moves twice in a row.
* The tag is only removed if the target leaves the battle.
* Torment does not interrupt the move if the move is performed consecutively in the same turn and right after Torment is applied
*/
export class TormentTag extends MoveRestrictionBattlerTag {
private target: Pokemon;
constructor(sourceId: number) {
super(BattlerTagType.TORMENT, BattlerTagLapseType.AFTER_MOVE, 1, Moves.TORMENT, sourceId);
}
/**
* Adds the battler tag to the target Pokemon and defines the private class variable 'target'
* 'Target' is used to track the Pokemon's current status
* @param {Pokemon} pokemon the Pokemon tormented
*/
override onAdd(pokemon: Pokemon) {
super.onAdd(pokemon);
this.target = pokemon;
pokemon.scene.queueMessage(i18next.t("battlerTags:tormentOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500);
}
/**
* Torment only ends when the affected Pokemon leaves the battle field
* @param {Pokemon} pokemon the Pokemon under the effects of Torment
* @param _tagType
* @returns `true` if still present | `false` if not
*/
override lapse(pokemon: Pokemon, _tagType: BattlerTagLapseType): boolean {
return !pokemon.isActive(true);
}
/**
* This checks if the current move used is identical to the last used move with a {@linkcode MoveResult} of `SUCCESS`/`MISS`
* @param {Moves} move the move under investigation
* @returns `true` if there is valid consecutive usage | `false` if the moves are different from each other
*/
override isMoveRestricted(move: Moves): boolean {
const lastMove = this.target.getLastXMoves(1)[0];
if ( !lastMove ) {
return false;
}
// This checks for locking / momentum moves like Rollout and Hydro Cannon + if the user is under the influence of BattlerTagType.FRENZY
// Because Uproar's unique behavior is not implemented, it does not check for Uproar. Torment has been marked as partial in moves.ts
const moveObj = allMoves[lastMove.move];
const isUnaffected = moveObj.hasAttr(ConsecutiveUseDoublePowerAttr) || this.target.getTag(BattlerTagType.FRENZY) || moveObj.hasAttr(ChargeAttr);
const validLastMoveResult = (lastMove.result === MoveResult.SUCCESS) || (lastMove.result === MoveResult.MISS);
if (lastMove.move === move && validLastMoveResult && lastMove.move !== Moves.STRUGGLE && !isUnaffected) {
return true;
}
return false;
}
override selectionDeniedText(_pokemon: Pokemon, move: Moves): string {
return i18next.t("battle:moveCannotBeSelected", { moveName: allMoves[move].name });
}
}
/**
* BattlerTag that applies the effects of Taunt to the target Pokemon
* Taunt restricts the use of status moves.
* The tag is removed after 4 turns.
*/
export class TauntTag extends MoveRestrictionBattlerTag {
constructor() {
super(BattlerTagType.TAUNT, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.AFTER_MOVE], 4, Moves.TAUNT);
}
override onAdd(pokemon: Pokemon) {
super.onAdd(pokemon);
pokemon.scene.queueMessage(i18next.t("battlerTags:tauntOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500);
}
/**
* Checks if a move is a status move and determines its restriction status on that basis
* @param {Moves} move the move under investigation
* @returns `true` if the move is a status move
*/
override isMoveRestricted(move: Moves): boolean {
return allMoves[move].category === MoveCategory.STATUS;
}
override selectionDeniedText(_pokemon: Pokemon, move: Moves): string {
return i18next.t("battle:moveCannotBeSelected", { moveName: allMoves[move].name });
}
override interruptedText(pokemon: Pokemon, move: Moves): string {
return i18next.t("battle:disableInterruptedMove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[move].name });
}
}
/**
* BattlerTag that applies the effects of Imprison to the target Pokemon
* Imprison restricts the opposing side's usage of moves shared by the source-user of Imprison.
* The tag is only removed when the source-user is removed from the field.
*/
export class ImprisonTag extends MoveRestrictionBattlerTag {
private source: Pokemon | null;
constructor(sourceId: number) {
super(BattlerTagType.IMPRISON, [BattlerTagLapseType.PRE_MOVE, BattlerTagLapseType.AFTER_MOVE], 1, Moves.IMPRISON, sourceId);
}
override onAdd(pokemon: Pokemon) {
if (this.sourceId) {
this.source = pokemon.scene.getPokemonById(this.sourceId);
}
}
/**
* Checks if the source of Imprison is still active
* @param _pokemon
* @param _lapseType
* @returns `true` if the source is still active
*/
override lapse(_pokemon: Pokemon, _lapseType: BattlerTagLapseType): boolean {
return this.source?.isActive(true) ?? false;
}
/**
* Checks if the source of the tag has the parameter move in its moveset and that the source is still active
* @param {Moves} move the move under investigation
* @returns `false` if either condition is not met
*/
override isMoveRestricted(move: Moves): boolean {
if (this.source) {
const sourceMoveset = this.source.getMoveset().map(m => m!.moveId);
return sourceMoveset?.includes(move) && this.source.isActive(true);
}
return false;
}
override selectionDeniedText(_pokemon: Pokemon, move: Moves): string {
return i18next.t("battle:moveCannotBeSelected", { moveName: allMoves[move].name });
}
override interruptedText(pokemon: Pokemon, move: Moves): string {
return i18next.t("battle:disableInterruptedMove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[move].name });
}
}
/**
* Retrieves a {@linkcode BattlerTag} based on the provided tag type, turn count, source move, and source ID.
*
@ -2604,6 +2757,12 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: number, source
return new MysteryEncounterPostSummonTag();
case BattlerTagType.HEAL_BLOCK:
return new HealBlockTag(turnCount, sourceMove);
case BattlerTagType.TORMENT:
return new TormentTag(sourceId);
case BattlerTagType.TAUNT:
return new TauntTag();
case BattlerTagType.IMPRISON:
return new ImprisonTag(sourceId);
case BattlerTagType.NONE:
default:
return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId);

View File

@ -353,6 +353,25 @@ export const trainerTypeDialogue: TrainerTypeDialogue = {
]
},
],
// Defeat dialogue in the language .JSONS exist as translated or placeholders; (en, fr, it, es, de, ja, ko, zh_cn, zh_tw, pt_br)
[TrainerType.SNOW_WORKER]: [
{
encounter: [
"dialogue:snow_worker.encounter.1",
],
victory: [
"dialogue:snow_worker.victory.1",
]
},
{
encounter: [
"dialogue:snow_worker_double.encounter.1",
],
victory: [
"dialogue:snow_worker_double.victory.1",
]
},
],
[TrainerType.HEX_MANIAC]: [
{
encounter: [

View File

@ -37,6 +37,7 @@ import { SwitchSummonPhase } from "#app/phases/switch-summon-phase";
import { SpeciesFormChangeRevertWeatherFormTrigger } from "./pokemon-forms";
import { GameMode } from "#app/game-mode";
import { applyChallenges, ChallengeType } from "./challenge";
import { SwitchType } from "#enums/switch-type";
export enum MoveCategory {
PHYSICAL,
@ -1476,8 +1477,13 @@ export class HalfSacrificialAttr extends MoveEffectAttr {
* @see {@linkcode apply}
*/
export class AddSubstituteAttr extends MoveEffectAttr {
constructor() {
/** The ratio of the user's max HP that is required to apply this effect */
private hpCost: number;
constructor(hpCost: number = 0.25) {
super(true);
this.hpCost = hpCost;
}
/**
@ -1493,8 +1499,7 @@ export class AddSubstituteAttr extends MoveEffectAttr {
return false;
}
const hpCost = Math.floor(user.getMaxHp() / 4);
user.damageAndUpdate(hpCost, HitResult.OTHER, false, true, true);
user.damageAndUpdate(Math.floor(user.getMaxHp() * this.hpCost), HitResult.OTHER, false, true, true);
user.addTag(BattlerTagType.SUBSTITUTE, 0, move.id, user.id);
return true;
}
@ -1507,7 +1512,7 @@ export class AddSubstituteAttr extends MoveEffectAttr {
}
getCondition(): MoveConditionFunc {
return (user, target, move) => !user.getTag(SubstituteTag) && user.hp > Math.floor(user.getMaxHp() / 4) && user.getMaxHp() > 1;
return (user, target, move) => !user.getTag(SubstituteTag) && user.hp > Math.floor(user.getMaxHp() * this.hpCost) && user.getMaxHp() > 1;
}
getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null {
@ -5151,9 +5156,9 @@ export class RevivalBlessingAttr extends MoveEffectAttr {
if (user.scene.currentBattle.double && user.scene.getEnemyParty().length > 1) {
const allyPokemon = user.getAlly();
if (slotIndex<=1) {
user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, pokemon.getFieldIndex(), slotIndex, false, false, false));
user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, SwitchType.SWITCH, pokemon.getFieldIndex(), slotIndex, false, false));
} else if (allyPokemon.isFainted()) {
user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, allyPokemon.getFieldIndex(), slotIndex, false, false, false));
user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, false));
}
}
resolve(true);
@ -5176,72 +5181,69 @@ export class RevivalBlessingAttr extends MoveEffectAttr {
export class ForceSwitchOutAttr extends MoveEffectAttr {
constructor(
private selfSwitch: boolean = false,
private batonPass: boolean = false
private switchType: SwitchType = SwitchType.SWITCH
) {
super(false, MoveEffectTrigger.POST_APPLY, false, true);
}
isBatonPass() {
return this.batonPass;
return this.switchType === SwitchType.BATON_PASS;
}
// TODO: Why is this a Promise?
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise<boolean> {
return new Promise(resolve => {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
// Check if the move category is not STATUS or if the switch out condition is not met
if (!this.getSwitchOutCondition()(user, target, move)) {
return false;
}
if (!this.getSwitchOutCondition()(user, target, move)) {
return resolve(false);
/**
* Move the switch out logic inside the conditional block
* This ensures that the switch out only happens when the conditions are met
*/
const switchOutTarget = this.selfSwitch ? user : target;
if (switchOutTarget instanceof PlayerPokemon) {
switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH);
if (switchOutTarget.hp > 0) {
user.scene.prependToPhase(new SwitchPhase(user.scene, this.switchType, switchOutTarget.getFieldIndex(), true, true), MoveEndPhase);
return true;
}
return false;
} else if (user.scene.currentBattle.battleType !== BattleType.WILD) {
// Switch out logic for trainer battles
switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH);
if (switchOutTarget.hp > 0) {
// for opponent switching out
user.scene.prependToPhase(new SwitchSummonPhase(user.scene, this.switchType, switchOutTarget.getFieldIndex(),
(user.scene.currentBattle.trainer ? user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0),
false, false), MoveEndPhase);
}
} else {
// Switch out logic for everything else (eg: WILD battles)
switchOutTarget.leaveField(false);
if (switchOutTarget.hp) {
user.scene.queueMessage(i18next.t("moveTriggers:fled", {pokemonName: getPokemonNameWithAffix(switchOutTarget)}), null, true, 500);
// in double battles redirect potential moves off fled pokemon
if (switchOutTarget.scene.currentBattle.double) {
const allyPokemon = switchOutTarget.getAlly();
switchOutTarget.scene.redirectPokemonMoves(switchOutTarget, allyPokemon);
}
}
// Move the switch out logic inside the conditional block
// This ensures that the switch out only happens when the conditions are met
const switchOutTarget = this.selfSwitch ? user : target;
if (switchOutTarget instanceof PlayerPokemon) {
switchOutTarget.leaveField(!this.batonPass);
if (switchOutTarget.hp > 0) {
user.scene.prependToPhase(new SwitchPhase(user.scene, switchOutTarget.getFieldIndex(), true, true), MoveEndPhase);
resolve(true);
} else {
resolve(false);
}
return;
} else if (user.scene.currentBattle.battleType !== BattleType.WILD) {
// Switch out logic for trainer battles
switchOutTarget.leaveField(!this.batonPass);
if (switchOutTarget.hp > 0) {
// for opponent switching out
user.scene.prependToPhase(new SwitchSummonPhase(user.scene, switchOutTarget.getFieldIndex(),
(user.scene.currentBattle.trainer ? user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0),
false, this.batonPass, false), MoveEndPhase);
}
} else {
// Switch out logic for everything else (eg: WILD battles)
switchOutTarget.leaveField(false);
if (!switchOutTarget.getAlly()?.isActive(true)) {
user.scene.clearEnemyHeldItemModifiers();
if (switchOutTarget.hp) {
user.scene.queueMessage(i18next.t("moveTriggers:fled", {pokemonName: getPokemonNameWithAffix(switchOutTarget)}), null, true, 500);
// in double battles redirect potential moves off fled pokemon
if (switchOutTarget.scene.currentBattle.double) {
const allyPokemon = switchOutTarget.getAlly();
switchOutTarget.scene.redirectPokemonMoves(switchOutTarget, allyPokemon);
}
}
if (!switchOutTarget.getAlly()?.isActive(true)) {
user.scene.clearEnemyHeldItemModifiers();
if (switchOutTarget.hp) {
user.scene.pushPhase(new BattleEndPhase(user.scene));
user.scene.pushPhase(new NewBattlePhase(user.scene));
}
user.scene.pushPhase(new BattleEndPhase(user.scene));
user.scene.pushPhase(new NewBattlePhase(user.scene));
}
}
}
resolve(true);
});
return true;
}
getCondition(): MoveConditionFunc {
@ -5270,7 +5272,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
}
if (!player && user.scene.currentBattle.battleType === BattleType.WILD) {
if (this.batonPass) {
if (this.isBatonPass()) {
return false;
}
// Don't allow wild opponents to flee on the boss stage since it can ruin a run early on
@ -5291,7 +5293,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
return -20;
}
let ret = this.selfSwitch ? Math.floor((1 - user.getHpRatio()) * 20) : super.getUserBenefitScore(user, target, move);
if (this.selfSwitch && this.batonPass) {
if (this.selfSwitch && this.isBatonPass()) {
const statStageTotal = user.getStatStages().reduce((s: integer, total: integer) => total += s, 0);
ret = ret / 2 + (Phaser.Tweens.Builders.GetEaseFunction("Sine.easeOut")(Math.min(Math.abs(statStageTotal), 10) / 10) * (statStageTotal >= 0 ? 10 : -10));
}
@ -5301,10 +5303,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
export class ChillyReceptionAttr extends ForceSwitchOutAttr {
// using inherited constructor
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise<boolean> {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
user.scene.arena.trySetWeather(WeatherType.SNOW, true);
return super.apply(user, target, move, args);
}
@ -7394,7 +7393,7 @@ export function initMoves() {
new AttackMove(Moves.DRAGON_BREATH, Type.DRAGON, MoveCategory.SPECIAL, 60, 100, 20, 30, 0, 2)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
new SelfStatusMove(Moves.BATON_PASS, Type.NORMAL, -1, 40, -1, 0, 2)
.attr(ForceSwitchOutAttr, true, true)
.attr(ForceSwitchOutAttr, true, SwitchType.BATON_PASS)
.hidesUser(),
new StatusMove(Moves.ENCORE, Type.NORMAL, 100, 5, -1, 0, 2)
.attr(AddBattlerTagAttr, BattlerTagType.ENCORE, false, true)
@ -7507,7 +7506,8 @@ export function initMoves() {
.target(MoveTarget.BOTH_SIDES),
new StatusMove(Moves.TORMENT, Type.DARK, 100, 15, -1, 0, 3)
.ignoresSubstitute()
.unimplemented(),
.partial() // Incomplete implementation because of Uproar's partial implementation
.attr(AddBattlerTagAttr, BattlerTagType.TORMENT, false, true, 1),
new StatusMove(Moves.FLATTER, Type.DARK, 100, 15, -1, 0, 3)
.attr(StatStageChangeAttr, [ Stat.SPATK ], 1)
.attr(ConfuseAttr),
@ -7538,7 +7538,7 @@ export function initMoves() {
.attr(AddBattlerTagAttr, BattlerTagType.CHARGED, true, false),
new StatusMove(Moves.TAUNT, Type.DARK, 100, 20, -1, 0, 3)
.ignoresSubstitute()
.unimplemented(),
.attr(AddBattlerTagAttr, BattlerTagType.TAUNT, false, true, 4),
new StatusMove(Moves.HELPING_HAND, Type.NORMAL, -1, 20, -1, 5, 3)
.attr(AddBattlerTagAttr, BattlerTagType.HELPING_HAND)
.ignoresSubstitute()
@ -7581,9 +7581,9 @@ export function initMoves() {
new StatusMove(Moves.SKILL_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 3)
.ignoresSubstitute()
.attr(SwitchAbilitiesAttr),
new SelfStatusMove(Moves.IMPRISON, Type.PSYCHIC, -1, 10, -1, 0, 3)
new StatusMove(Moves.IMPRISON, Type.PSYCHIC, 100, 10, -1, 0, 3)
.ignoresSubstitute()
.unimplemented(),
.attr(AddArenaTagAttr, ArenaTagType.IMPRISON, 1, true, false),
new SelfStatusMove(Moves.REFRESH, Type.NORMAL, -1, 20, -1, 0, 3)
.attr(HealStatusEffectAttr, true, StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN)
.condition((user, target, move) => !!user.status && (user.status.effect === StatusEffect.PARALYSIS || user.status.effect === StatusEffect.POISON || user.status.effect === StatusEffect.TOXIC || user.status.effect === StatusEffect.BURN)),
@ -7819,7 +7819,7 @@ export function initMoves() {
.makesContact(false)
.target(MoveTarget.ATTACKER),
new AttackMove(Moves.U_TURN, Type.BUG, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 4)
.attr(ForceSwitchOutAttr, true, false),
.attr(ForceSwitchOutAttr, true),
new AttackMove(Moves.CLOSE_COMBAT, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4)
.attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true),
new AttackMove(Moves.PAYBACK, Type.DARK, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 4)
@ -8252,7 +8252,7 @@ export function initMoves() {
new AttackMove(Moves.GRASS_PLEDGE, Type.GRASS, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5)
.partial(),
new AttackMove(Moves.VOLT_SWITCH, Type.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, -1, 0, 5)
.attr(ForceSwitchOutAttr, true, false),
.attr(ForceSwitchOutAttr, true),
new AttackMove(Moves.STRUGGLE_BUG, Type.BUG, MoveCategory.SPECIAL, 50, 100, 20, 100, 0, 5)
.attr(StatStageChangeAttr, [ Stat.SPATK ], -1)
.target(MoveTarget.ALL_NEAR_ENEMIES),
@ -8420,7 +8420,7 @@ export function initMoves() {
.target(MoveTarget.ALL_NEAR_ENEMIES),
new StatusMove(Moves.PARTING_SHOT, Type.DARK, 100, 20, -1, 0, 6)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], -1, false, null, true, true, MoveEffectTrigger.PRE_APPLY)
.attr(ForceSwitchOutAttr, true, false)
.attr(ForceSwitchOutAttr, true)
.soundBased(),
new StatusMove(Moves.TOPSY_TURVY, Type.DARK, -1, 20, -1, 0, 6)
.attr(InvertStatsAttr),
@ -9175,7 +9175,7 @@ export function initMoves() {
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF ], 1)
.target(MoveTarget.NEAR_ALLY),
new AttackMove(Moves.FLIP_TURN, Type.WATER, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 8)
.attr(ForceSwitchOutAttr, true, false),
.attr(ForceSwitchOutAttr, true),
new AttackMove(Moves.TRIPLE_AXEL, Type.ICE, MoveCategory.PHYSICAL, 20, 90, 10, -1, 0, 8)
.attr(MultiHitAttr, MultiHitType._3)
.attr(MultiHitPowerIncrementAttr, 3)
@ -9502,10 +9502,11 @@ export function initMoves() {
.attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2 ? 5461/4096 : 1)
.makesContact(),
new SelfStatusMove(Moves.SHED_TAIL, Type.NORMAL, -1, 10, -1, 0, 9)
.unimplemented(),
.attr(AddSubstituteAttr, 0.5)
.attr(ForceSwitchOutAttr, true, SwitchType.SHED_TAIL),
new SelfStatusMove(Moves.CHILLY_RECEPTION, Type.ICE, -1, 10, -1, 0, 9)
.attr(PreMoveMessageAttr, (user, move) => i18next.t("moveTriggers:chillyReception", {pokemonName: getPokemonNameWithAffix(user)}))
.attr(ChillyReceptionAttr, true, false),
.attr(ChillyReceptionAttr, true),
new SelfStatusMove(Moves.TIDY_UP, Type.NORMAL, -1, 10, -1, 0, 9)
.attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPD ], 1, true, null, true, true)
.attr(RemoveArenaTrapAttr, true)

View File

@ -128,10 +128,10 @@ export const BerriesAboundEncounter: MysteryEncounter =
const numBerries = encounter.misc.numBerries;
const doBerryRewards = () => {
const berryText = numBerries + " " + i18next.t(`${namespace}.berries`);
const berryText = i18next.t(`${namespace}.berries`);
scene.playSound("item_fanfare");
queueEncounterMessage(scene, i18next.t("battle:rewardGain", { modifierName: berryText }));
queueEncounterMessage(scene, i18next.t("battle:rewardGainCount", { modifierName: berryText, count: numBerries }));
// Generate a random berry and give it to the first Pokemon with room for it
for (let i = 0; i < numBerries; i++) {
@ -179,10 +179,10 @@ export const BerriesAboundEncounter: MysteryEncounter =
if (speedDiff < 1) {
// Caught and attacked by boss, gets +1 to all stats at start of fight
const doBerryRewards = () => {
const berryText = numBerries + " " + i18next.t(`${namespace}.berries`);
const berryText = i18next.t(`${namespace}.berries`);
scene.playSound("item_fanfare");
queueEncounterMessage(scene, i18next.t("battle:rewardGain", { modifierName: berryText }));
queueEncounterMessage(scene, i18next.t("battle:rewardGainCount", { modifierName: berryText, count: numBerries }));
// Generate a random berry and give it to the first Pokemon with room for it
for (let i = 0; i < numBerries; i++) {
@ -210,10 +210,10 @@ export const BerriesAboundEncounter: MysteryEncounter =
const numBerriesGrabbed = Math.max(Math.min(Math.round((speedDiff - 1)/0.08), numBerries), 2);
encounter.setDialogueToken("numBerries", String(numBerriesGrabbed));
const doFasterBerryRewards = () => {
const berryText = numBerriesGrabbed + " " + i18next.t(`${namespace}.berries`);
const berryText = i18next.t(`${namespace}.berries`);
scene.playSound("item_fanfare");
queueEncounterMessage(scene, i18next.t("battle:rewardGain", { modifierName: berryText }));
queueEncounterMessage(scene, i18next.t("battle:rewardGainCount", { modifierName: berryText, count: numBerriesGrabbed }));
// Generate a random berry and give it to the first Pokemon with room for it (trying to give to fastest first)
for (let i = 0; i < numBerriesGrabbed; i++) {

View File

@ -190,7 +190,7 @@ async function tryApplyDigRewardItems(scene: BattleScene) {
}
scene.playSound("item_fanfare");
await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: "2x " + leftovers.name }), null, undefined, true);
await showEncounterText(scene, i18next.t("battle:rewardGainCount", { modifierName: leftovers.name, count: 2 }), null, undefined, true);
// First Shell bell
for (const pokemon of party) {
@ -217,7 +217,7 @@ async function tryApplyDigRewardItems(scene: BattleScene) {
}
scene.playSound("item_fanfare");
await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: "2x " + shellBell.name }), null, undefined, true);
await showEncounterText(scene, i18next.t("battle:rewardGainCount", { modifierName: shellBell.name, count: 2 }), null, undefined, true);
}
async function doGarbageDig(scene: BattleScene) {

View File

@ -54,7 +54,7 @@ const commonSplashMessages = [
...Array(BATTLES_WON_WEIGHT_MULTIPLIER).fill("battlesWon"),
"joinTheDiscord",
"infiniteLevels",
"everythingStacks",
"everythingIsStackable",
"optionalSaveScumming",
"biomes",
"openSource",
@ -66,9 +66,9 @@ const commonSplashMessages = [
"infiniteFusionAtHome",
"brokenEggMoves",
"magnificent",
"mubstitute",
"doPeopleReadThis",
"thatsCrazy",
"oranceJuice",
"gottaCatchEmAll",
"questionableBalancing",
"coolShaders",
"aiFree",
@ -77,14 +77,105 @@ const commonSplashMessages = [
"moreAddictiveThanIntended",
"mostlyConsistentSeeds",
"achievementPointsDontDoAnything",
"youDoNotStartAtLevel",
"dontTalkAboutTheManaphyEggIncident",
"nothingBeatsAJellyFilledDonut",
"dontTalkAboutTheTinkatonIncident",
"alsoTryPokengine",
"alsoTryEmeraldRogue",
"alsoTryRadicalRed",
"eeveeExpo",
"ynoproject",
"checkOutYnoproject",
"breedersInSpace",
"alsoTryPokemonUnbound",
"tryTheJohtoDragonChallenge",
"basicReadingAbilityRecommended",
"shoutoutsToTheArtists",
"gamblingNotEncouraged",
"dontForgetToTakeABreak",
"wEvent",
"ifItsNotAccurateItsAccurate",
"everyLossIsProgressMade",
"liveWoChienReaction",
"itsAFeatureNotABug",
"theEggsAreNotForEating",
"7.8outOf10TooManyWaterBiomes",
"butNothingHappened",
"thePowerOfScienceIsAmazing",
"freeToPlay",
"theresATimeAndPlaceForEverything",
"nowWithShinierShinies",
"smilesGoForMiles",
"certainlyNotDragonFree",
"haveANiceDay",
"redacted",
"hi",
"transRights",
"shinyOddsHigherThanYouThink",
"noFalseTrades",
"notForProfit",
"timeForYourDailyRun",
"moreEggsThanADaycare",
"disclaimerHarshSunDoesNotGiveVitaminD",
"whoNeedsAMap",
"luxrayIsNotADarkType",
"selfDestructiveEncounters",
"mostOptionsAreViable",
"pokerogueMorse",
"smiley",
"beAwareOfPassives",
"asSeenOnTheWorldWideWeb",
"vaultinVeluzas",
"tooManyStarters",
"checkTheWiki",
"winWithYourFavorites",
"alsoTryPokerogueWait",
"theWayISeeItKyogreIsSurrounded",
"tryOutHoneyGather",
"notForTheFaintOfHeart",
"p",
"flipYourDeviceToEvolveInkay",
"inArceusWeTrust",
"whyDidTheTorchicCrossTheRoad",
"goodLuck",
"fuseWisely",
"compensation",
"prepareForTroubleAndMakeItDouble",
"anEggForYourTroubles",
"regirock",
"hereForAGoodTime",
"getGoodOrDont",
"checkTheSubreddit",
"betterNerfGreninja",
"inCaseOfUpdateClearYourCache",
"insertTextHere",
"endingEndlessNotFound",
"iLikeMyEggsVouchered",
"YOU",
"noAddedSugar",
"notSponsored",
"notRated",
"justOneMoreWaveMom",
"saltCured",
"onlyOnPokerogueNet",
"pixelPerfection",
"openSource",
"probablyGood",
"itsAMonsterHouse",
"dontForgetYourPassword",
"tripleTripleTripleAxel",
"questionExclamation",
"clownEncounters",
"fullOfBerries",
"limitsAreMeantToBeBrokenSometimes",
"keepItCasual",
"serversProbablyWorking",
"mew",
"makeItRainAndYourProblemsGoAway",
"customMusicTracks",
"youAreValid",
"number591IsLookingOff",
"timeForYourDeliDelivery",
"goodFirstImpression",
"iPreferRarerCandies",
];
//#region Seasonal Messages
@ -94,13 +185,13 @@ const seasonalSplashMessages: Season[] = [
name: "Halloween",
start: "09-15",
end: "10-31",
messages: ["halloween.pumpkaboosAbout", "halloween.mayContainSpiders", "halloween.spookyScaryDuskulls"],
messages: ["halloween.pumpkabooAbout", "halloween.mayContainSpiders", "halloween.spookyScarySkeledirge", "halloween.gourgeistUsedTrickOrTreat", "halloween.letsSnuggleForever"],
},
{
name: "XMAS",
start: "12-01",
end: "12-26",
messages: ["xmas.happyHolidays", "xmas.delibirdSeason"],
messages: ["xmas.happyHolidays", "xmas.unaffilicatedWithDelibirdServices", "xmas.delibirdSeason", "xmas.diamondsFromTheSky", "xmas.holidayStylePikachuNotIncluded"],
},
{
name: "New Year's",

View File

@ -1458,7 +1458,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.ULTRA_RARE]: [Species.ROTOM, Species.MELTAN]
}),
[TrainerType.SMASHER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.SNOW_WORKER]: new TrainerConfig(++t).setName("Worker").setHasGenders("Worker Female").setHasDouble("Workers").setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => s.isOfType(Type.ICE) || s.isOfType(Type.STEEL)),
[TrainerType.SNOW_WORKER]: new TrainerConfig(++t).setName("Worker").setHasDouble("Workers").setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => s.isOfType(Type.ICE) || s.isOfType(Type.STEEL)),
[TrainerType.STRIKER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.SCHOOL_KID]: new TrainerConfig(++t).setMoneyMultiplier(0.75).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders("School Kid Female", "lass").setHasDouble("School Kids")
.setSpeciesPools({

View File

@ -23,5 +23,6 @@ export enum ArenaTagType {
TAILWIND = "TAILWIND",
HAPPY_HOUR = "HAPPY_HOUR",
SAFEGUARD = "SAFEGUARD",
NO_CRIT = "NO_CRIT"
NO_CRIT = "NO_CRIT",
IMPRISON = "IMPRISON",
}

View File

@ -82,4 +82,7 @@ export enum BattlerTagType {
AUTOTOMIZED = "AUTOTOMIZED",
MYSTERY_ENCOUNTER_POST_SUMMON = "MYSTERY_ENCOUNTER_POST_SUMMON",
HEAL_BLOCK = "HEAL_BLOCK",
TORMENT = "TORMENT",
TAUNT = "TAUNT",
IMPRISON = "IMPRISON",
}

12
src/enums/switch-type.ts Normal file
View File

@ -0,0 +1,12 @@
/**
* Indicates the type of switch functionality that a {@linkcode SwitchPhase}
* or {@linkcode SwitchSummonPhase} will carry out.
*/
export enum SwitchType {
/** Basic switchout where the Pokemon to switch in is selected */
SWITCH,
/** Transfers stat stages and other effects from the returning Pokemon to the switched in Pokemon */
BATON_PASS,
/** Transfers the returning Pokemon's Substitute to the switched in Pokemon */
SHED_TAIL
}

View File

@ -61,6 +61,7 @@ import { Challenges } from "#enums/challenges";
import { PokemonAnimType } from "#app/enums/pokemon-anim-type";
import { PLAYER_PARTY_MAX_SIZE } from "#app/constants";
import { MysteryEncounterPokemonData } from "#app/data/mystery-encounters/mystery-encounter-pokemon-data";
import { SwitchType } from "#enums/switch-type";
export enum FieldPosition {
CENTER,
@ -4003,16 +4004,17 @@ export class PlayerPokemon extends Pokemon {
/**
* Causes this mon to leave the field (via {@linkcode leaveField}) and then
* opens the party switcher UI to switch a new mon in
* @param batonPass Indicates if this switch was caused by a baton pass (and
* thus should maintain active mon effects)
* @param switchType the {@linkcode SwitchType} for this switch-out. If this is
* `BATON_PASS` or `SHED_TAIL`, this Pokemon's effects are not cleared upon leaving
* the field.
*/
switchOut(batonPass: boolean): Promise<void> {
switchOut(switchType: SwitchType = SwitchType.SWITCH): Promise<void> {
return new Promise(resolve => {
this.leaveField(!batonPass);
this.leaveField(switchType === SwitchType.SWITCH);
this.scene.ui.setMode(Mode.PARTY, PartyUiMode.FAINT_SWITCH, this.getFieldIndex(), (slotIndex: integer, option: PartyOption) => {
if (slotIndex >= this.scene.currentBattle.getBattlerCount() && slotIndex < 6) {
this.scene.prependToPhase(new SwitchSummonPhase(this.scene, this.getFieldIndex(), slotIndex, false, batonPass), MoveEndPhase);
this.scene.prependToPhase(new SwitchSummonPhase(this.scene, switchType, this.getFieldIndex(), slotIndex, false), MoveEndPhase);
}
this.scene.ui.setMode(Mode.MESSAGE).then(resolve);
}, PartyUiHandler.FilterNonFainted);
@ -4074,11 +4076,11 @@ export class PlayerPokemon extends Pokemon {
const allyPokemon = this.getAlly();
if (slotIndex<=1) {
// Revived ally pokemon
this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, pokemon.getFieldIndex(), slotIndex, false, false, true));
this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, SwitchType.SWITCH, pokemon.getFieldIndex(), slotIndex, false, true));
this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true));
} else if (allyPokemon.isFainted()) {
// Revived party pokemon, and ally pokemon is fainted
this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, allyPokemon.getFieldIndex(), slotIndex, false, false, true));
this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, true));
this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true));
}
}

View File

@ -43,7 +43,7 @@
"loading": "Carregant…",
"loadingAsset": "Carregant actius: {{assetName}}",
"playersOnline": "Jugadors en Línia",
"yes":"sí",
"yes":"Sí",
"no":"No",
"disclaimer": "AVÍS",
"disclaimerDescription": "Aquest joc encara no s'ha completat; podríeu tenir problemes de joc (inclosa la possible pèrdua de dades desades),\n el joc pot canviar sense previ avís, i el joc es pot actualitzar o completar o no.",

View File

@ -32,6 +32,7 @@
"attackMissed": "Die Attacke hat {{pokemonNameWithAffix}} verfehlt!",
"attackHitsCount": "{{count}}-mal getroffen!",
"rewardGain": "Du erhältst {{modifierName}}!",
"rewardGainCount": "Du erhältst {{count}} {{modifierName}}!",
"expGain": "{{pokemonName}} erhält {{exp}} Erfahrungspunkte!",
"levelUp": "{{pokemonName}} erreicht Lv. {{level}}!",
"learnMove": "{{pokemonName}} erlernt {{moveName}}!",

View File

@ -71,6 +71,7 @@
"disabledOnAdd": " {{moveName}} von {{pokemonNameWithAffix}} wurde blockiert!",
"disabledLapse": "{{moveName}} von {{pokemonNameWithAffix}} ist nicht länger blockiert!",
"tarShotOnAdd": "{{pokemonNameWithAffix}} ist nun schwach gegenüber Feuer-Attacken!",
"shedTailOnAdd": "{{pokemonNameWithAffix}} wirft seinen Schwanz ab, um eine Ablenkung zu schaffen!",
"substituteOnAdd": "Ein Delegator von {{pokemonNameWithAffix}} ist erschienen!",
"substituteOnHit": "Der Delegator steckt den Schlag für {{pokemonNameWithAffix}} ein!",
"substituteOnRemove": "Der Delegator von {{pokemonNameWithAffix}} hört auf zu wirken!"

View File

@ -299,6 +299,28 @@
"1": "Wie seltsam… Wie konnte das passieren… Ich hätte nicht ausgemuskelt werden sollen."
}
},
"snow_worker": {
"encounter": {
"1": "Wenn es kalt wird, zieh dich warm an!\n$Das sagt uns der gesunde Menschenverstand."
},
"victory": {
"1": "Sich bis zum Gehtnichtmehr abzurackern, ist wohl auch eine Eigenart, die uns der gesunde Menschenverstand diktiert."
},
"defeat": {
"1": "Lass mich dir einen Ratschlag geben. Ist ein Pokémon gefroren, kannst du es wieder auftauen,\n$indem du eine Attacke vom Typ Feuer auf es anwendest!"
}
},
"snow_worker_double": {
"encounter": {
"1": "L-l-lass uns kämpfen!"
},
"victory": {
"1": "M-m-mir sch-sch-schlottern die K-k-knie vor lauter K-k-kälte!"
},
"defeat": {
"1": "...\n$Sch-sch-schon gemerkt?\nH-h-hier ist es k-k-kalt!"
}
},
"hex_maniac": {
"encounter": {
"1": "Ich höre normalerweise nur klassische Musik, aber wenn ich verliere,\n$werde ich ein bisschen New Age ausprobieren!",

View File

@ -31,7 +31,7 @@
"option": {
"1": {
"label": "Die Herausforderung annehmen",
"tooltip": "(-) Schwerer Kampf\n(+) Erhalte ein @[TOOLTIP_TITLE]{Sehr seltenes Ei}"
"tooltip": "(-) Sehr schwerer Kampf\n(+) Erhalte ein @[TOOLTIP_TITLE]{Sehr seltenes Ei}"
},
"2": {
"label": "Die Herausforderung ablehnen",

View File

@ -3,7 +3,7 @@
"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!",
"berries": "Berren",
"option": {
"1": {
"label": "Kampf beginnen",
@ -23,4 +23,4 @@
"selected": "Du lässt das starke Pokémon mit seinem Item zurück und gehst weiter."
}
}
}
}

View File

@ -8,23 +8,23 @@
"option": {
"1": {
"label": "Kampf beginnen",
"tooltip": "(-) Komischer Kampf\n(?) Beeinflusst Pokémon-Fähigkeiten",
"tooltip": "(-) Komischer Kampf\n(?) Beeinflusst die Fähigkeit eines Pokémon",
"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_dialogue": "Eine sensationelle Vorstellung! Dein Können passt zu einer besonderen Fähigkeit als Beute!",
"apply_ability_message": "Der Clown bietet an, die Fähigkeit eines deiner Pokémon dauerhaft auf {{ability}} zu wechseln!",
"ability_prompt": "Soll eines deiner Pokémon die Fähigkeit {{ability}} dauerhaft erlangen?",
"ability_gained": "@s{level_up_fanfare}{{chosenPokemon}} hat die Fähigkeit {{ability}} erhalten!"
},
"2": {
"label": "Nicht provozieren lassen",
"tooltip": "(-) Der Clown ist beleidigt\n(?) Beeinflusst Pokémon-Items",
"tooltip": "(?) Beeinflusst die Items eines Pokémons",
"selected": "Du erbärmlicher Feigling, du verweigerst einen wunderbaren Kampf? Fühle meinen Zorn!",
"selected_2": "Das {{blacephalonName}} des Clowns verwendet Trickbetrug! Alle Items deines {{switchPokemon}} wurden zufällig vertauscht!",
"selected_3": "Meine perfekte List hat dich in die Irre geführt!"
},
"3": {
"label": "Die Beleidigungen erwidern",
"tooltip": "(-) Den Clown verärgern\n(?) Beeinflusst Pokémon-Typen",
"tooltip": "(?) Beeinflusst die Typen deiner Pokémon",
"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!"
@ -32,4 +32,4 @@
},
"outro": "Der Clown und seine Kumpanen verschwinden in einer Rauchwolke."
}
}

View File

@ -24,4 +24,4 @@
}
},
"invalid_selection": "Das Pokémon kennt keine Tanzattacke"
}
}

View File

@ -26,4 +26,4 @@
}
},
"outro": "Die {{delibirdName}} watscheln glücklich davon.$Was für ein seltsamer kleiner Austausch!"
}
}

View File

@ -11,13 +11,13 @@
},
"2": {
"label": "Zaubertausch",
"tooltip": "(+) Seine eine deiner Pokémon an die GTS und erhalte ein zufälliges Pokémon im Austausch"
"tooltip": "(+) Seine eine deiner Pokémon an die GTS und erhalte ein zufälliges besonderes Pokémon im Austausch"
},
"3": {
"label": "Tausche ein Item",
"trade_options_prompt": "Wähle ein Item aus, das du senden möchtest.",
"invalid_selection": "Dieses Pokémon hat keine Items die getauscht werden können.",
"tooltip": "(+) Sende eines deiner Items an die GTS und erhalte ein zufälliges Item im Austausch"
"tooltip": "(+) Sende eines deiner Items an die GTS und erhalte ein zufälliges verbessertes Item im Austausch"
},
"4": {
"label": "Weggehen",
@ -29,4 +29,4 @@
"pokemon_trade_goodbye": "Machs gut, {{tradedPokemon}}!",
"item_trade_selected": "{{chosenItem}} wird an {{tradeTrainerName}} gesendet.$.@d{64}.@d{64}.@d{64}\n@s{level_up_fanfare}Tausch abgeschlossen!$Du hast {{itemName}} von {{tradeTrainerName}} erhalten!",
"trade_received": "@s{evolution_fanfare}{{tradeTrainerName}} hat dir {{received}} geschickt!"
}
}

View File

@ -1,7 +1,7 @@
{
"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!",
"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 @[TOOLTIP_TITLE]{{{numEncounters}} 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": {
@ -43,4 +43,4 @@
"remaining_count": "{{remainingCount}} Pokémon übrig!"
},
"outro": "Das war ein spannendes Abenteuer in der Safari-Zone!"
}
}

View File

@ -25,7 +25,7 @@
"outro": "Schau wie glücklich dein {{chosenPokemon}} nun ist!$Hier, diese Pokémon-Eier kannst du auch haben.",
"outro_failed": "Wie enttäuschend...$Es sieht so aus, als hättest du noch einen langen Weg vor dir, um das Vertrauen deines Pokémon zu gewinnen!",
"gained_eggs": "@s{item_fanfare}Du erhählst {{numEggs}}!",
"eggs_tooltip": "\n(+) Erhalte {{eggs}}",
"eggs_tooltip": "\n(+) Erhalte @[TOOLTIP_TITLE]{{{eggs}}}",
"numEggs_one": "{{count}} Ei der Stufe {{rarity}}",
"numEggs_other": "{{count}} Eier der Stufe {{rarity}}"
}

View File

@ -3,8 +3,8 @@
"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?\"",
"description": "Dieses {{purchasePokemon}} ist extrem einzigartig und @[TOOLTIP_TITLE]{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 @[TOOLTIP_TITLE]{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": {
@ -20,4 +20,4 @@
"selected": "Nein?@d{32} Du sagst nein?$Ich mache das nur als Gefallen für dich!"
}
}
}
}

View File

@ -18,4 +18,4 @@
}
},
"outro": "Was ist hier gerade passiert?"
}
}

View File

@ -3,12 +3,12 @@
"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?",
"description": "Die Sihgers sind eine Familie von @[TOOLTIP_TITLE]{5 Trainern}, und sie wollen kämpfen! Wenn du sie alle hintereinander besiegst, bekommst du einen grandiosen Preis. Aber kannst du die Hitze aushalten?",
"query": "Was wirst du tun?",
"option": {
"1": {
"label": "Die Herausforderung annehmen",
"tooltip": "(-) Brutaler Kampf\n(+) Spezielle Belohnung",
"tooltip": "(-) Brutaler Kampf gegen 5 Trainer\n(+) Spezielle Belohnung",
"selected": "Lass die Herausforderung beginnen!"
},
"2": {
@ -19,4 +19,4 @@
},
"victory": "Glückwunsch, du hast unsere Herausforderung gemeistert!$Zuerst möchten wir dir diesen Gutschein geben.",
"victory_2": "Außerdem benutzt unsere Familie diese Machoschiene, um unsere Pokémon effektiver zu tranieren.$Du brauchst es vielleicht nicht, da du uns alle geschlagen hast, aber wir hoffen, dass du es trotzdem annimmst!"
}
}

View File

@ -1,7 +1,7 @@
{
"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.",
"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 @[TOOLTIP_TITLE]{kämpfst und es besiegst}.",
"query": "Wie möchtest du trainieren?",
"invalid_selection": "Pokémon muss genügend KP haben.",
"option": {
@ -30,4 +30,4 @@
"selected": "{{selectedPokemon}} bewegt sich über die Lichtung, um dir gegenüberzutreten..."
},
"outro": "Das war eine erfolgreiche Trainingssitzung!"
}
}

View File

@ -6,7 +6,7 @@
"option": {
"1": {
"label": "Nach Wertsachen suchen",
"tooltip": "(-) Heilitems kosten ab jetzt das Dreifache\n(+) Erhalte tolle Items",
"tooltip": "(-) Heilitems kosten ab jetzt {{costMultiplier}} mal so viel\n(+) Erhalte tolle Items",
"selected": "Du arbeitest dich durch den Müllhaufen und wirst von Dreck überzogen.$Kein respektabler Ladenbesitzer wird dir in deinem schmutzigen Zustand etwas verkaufen!$Aber es gibt ja auch andere... weniger respektable.$Natürlich verlangen sie höhere Preise.$Aber du hast einige unglaubliche Items im Müll gefunden!"
},

View File

@ -32,6 +32,7 @@
"attackMissed": "{{pokemonNameWithAffix}} avoided the attack!",
"attackHitsCount": "Hit {{count}} time(s)!",
"rewardGain": "You received\n{{modifierName}}!",
"rewardGainCount": "You received\n{{count}} {{modifierName}}!",
"expGain": "{{pokemonName}} gained\n{{exp}} EXP. Points!",
"levelUp": "{{pokemonName}} grew to\nLv. {{level}}!",
"learnMove": "{{pokemonName}} learned\n{{moveName}}!",

View File

@ -71,8 +71,12 @@
"disabledOnAdd": "{{pokemonNameWithAffix}}'s {{moveName}}\nwas disabled!",
"disabledLapse": "{{pokemonNameWithAffix}}'s {{moveName}}\nis no longer disabled.",
"tarShotOnAdd": "{{pokemonNameWithAffix}} became weaker to fire!",
"shedTailOnAdd": "{{pokemonNameWithAffix}} shed its tail to create a decoy!",
"substituteOnAdd": "{{pokemonNameWithAffix}} put in a substitute!",
"substituteOnHit": "The substitute took damage for {{pokemonNameWithAffix}}!",
"substituteOnRemove": "{{pokemonNameWithAffix}}'s substitute faded!",
"tormentOnAdd": "{{pokemonNameWithAffix}} was subjected to torment!",
"tauntOnAdd": "{{pokemonNameWithAffix}} fell for the taunt!",
"imprisonOnAdd": "{{pokemonNameWithAffix}} sealed the opponents move(s)!",
"autotomizeOnAdd": "{{pokemonNameWithAffix}} became nimble!"
}

View File

@ -316,6 +316,28 @@
"1": "How strange… How could this be… I shouldn't have been outmuscled."
}
},
"snow_worker": {
"encounter": {
"1": "When it's cold, wear a lot of clothes!\n$Only humans could come up with something so clever!"
},
"victory": {
"1": "How we struggle in vain at the end also shows how clever humans are!"
},
"defeat": {
"1": "I'll tell you something clever. If you use a Fire-type move on a Pokémon that is frozen solid, the ice will melt!"
}
},
"snow_worker_double": {
"encounter": {
"1": "...\n$...R-ready to b-battle?"
},
"victory": {
"1": "...\n$...I'm sh-shivering!"
},
"defeat": {
"1": "...\n$...Kn-know what?\n...Th-this place is cold."
}
},
"hex_maniac": {
"encounter": {
"1": "I normally only ever listen to classical music, but if I lose, I think I shall try a bit of new age!",

View File

@ -3,7 +3,7 @@
"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!",
"berries": "Berries",
"option": {
"1": {
"label": "Battle the Pokémon",
@ -23,4 +23,4 @@
"selected": "You leave the strong Pokémon\nwith its prize and continue on."
}
}
}
}

View File

@ -1,10 +1,10 @@
{
"battlesWon": "{{count, number}} Battles Won!",
"battlesWon": "Battles Won!",
"joinTheDiscord": "Join the Discord!",
"infiniteLevels": "Infinite Levels!",
"everythingStacks": "Everything Stacks!",
"everythingIsStackable": "Everything Is Stackable*!",
"optionalSaveScumming": "Optional Save Scumming!",
"biomes": "35 Biomes!",
"biomes": "38 Biomes!",
"openSource": "Open Source!",
"playWithSpeed": "Play with 5x Speed!",
"liveBugTesting": "Live Bug Testing!",
@ -14,9 +14,9 @@
"infiniteFusionAtHome": "Infinite Fusion at Home!",
"brokenEggMoves": "Broken Egg Moves!",
"magnificent": "Magnificent!",
"mubstitute": "Mubstitute!",
"doPeopleReadThis": "Do People Read This?",
"thatsCrazy": "That's Crazy!",
"oranceJuice": "Orance Juice!",
"gottaCatchEmAll": "Gotta Catch 'Em All!",
"questionableBalancing": "Questionable Balancing!",
"coolShaders": "Cool Shaders!",
"aiFree": "AI-Free!",
@ -25,24 +25,120 @@
"moreAddictiveThanIntended": "More Addictive than Intended!",
"mostlyConsistentSeeds": "Mostly Consistent Seeds!",
"achievementPointsDontDoAnything": "Achievement Points Don't Do Anything!",
"youDoNotStartAtLevel": "You Do Not Start at Level 2000!",
"dontTalkAboutTheManaphyEggIncident": "Don't Talk About the Manaphy Egg Incident!",
"nothingBeatsAJellyFilledDonut": "Nothing Beats a Jelly-Filled Donut!",
"dontTalkAboutTheTinkatonIncident": "Don't Talk About the Tinkaton Incident!",
"alsoTryPokengine": "Also Try Pokéngine!",
"alsoTryEmeraldRogue": "Also Try Emerald Rogue!",
"alsoTryRadicalRed": "Also Try Radical Red!",
"eeveeExpo": "Eevee Expo!",
"ynoproject": "YNOproject!",
"breedersInSpace": "Breeders in space!",
"checkOutYnoproject": "Check out YNOproject!",
"breedersInSpace": "Breeders in Space!",
"alsoTryPokemonUnbound": "Also Try Pokemon Unbound!",
"tryTheJohtoDragonChallenge": "Try the Johto Dragon Challenge!",
"basicReadingAbilityRecommended": "Basic Reading Ability Recommended!",
"shoutoutsToTheArtists": "Shoutouts to the Artists!",
"gamblingNotEncouraged": "Gambling Not Encouraged!",
"dontForgetToTakeABreak": "Don't Forget To Take a Break!",
"wEvent": "W Event",
"ifItsNotAccurateItsAccurate": "If It's Not 100% Accurate, It's 50%.",
"everyLossIsProgressMade": "Every Loss Is Progress Made!",
"liveWoChienReaction": "Live Wo-Chien Reaction:",
"itsAFeatureNotABug": "It's a Feature, Not a Bug!",
"theEggsAreNotForEating": "The Eggs Are Not for Eating!",
"7.8outOf10TooManyWaterBiomes": "7.8 out of 10, Too Many Water Biomes.",
"butNothingHappened": "But Nothing Happened!",
"thePowerOfScienceIsAmazing": "The Power of Science Is Amazing!",
"freeToPlay": "Free To Play!",
"theresATimeAndPlaceForEverything": "There's a Time and Place for Everything!",
"nowWithShinierShinies": "Now With Shinier Shinies!",
"smilesGoForMiles": "Smiles Go for Miles!",
"certainlyNotDragonFree": "Certainly Not Dragon Free!",
"haveANiceDay": "Have a Nice Day!",
"redacted": "[REDACTED]",
"hi": "hi",
"transRights": "Trans Rights!",
"shinyOddsHigherThanYouThink": "Shiny Odds Higher Than You Think!",
"noFalseTrades": "No False Trades!",
"notForProfit": "Not for Profit!",
"timeForYourDailyRun": "Time for Your Daily Run!",
"moreEggsThanADaycare": "More Eggs Than a Daycare!",
"disclaimerHarshSunDoesNotGiveVitaminD": "Disclaimer: Harsh Sun Does NOT Give Vitamin D!",
"whoNeedsAMap": "Who Needs a Map?",
"luxrayIsNotADarkType": "Luxray Is Not a Dark-Type!",
"selfDestructiveEncounters": "Self-Destructive Encounters!",
"mostOptionsAreViable": "Most Options Are Viable!",
"pokerogueMorse": ".--. --- -.- . .-. --- --. ..- .",
"smiley": ":)",
"beAwareOfPassives": "Be Aware of Passives!",
"asSeenOnTheWorldWideWeb": "As Seen on the World-Wide Web!",
"vaultinVeluzas": "Vaultin' Veluza!",
"tooManyStarters": "Too Many Starters!",
"checkTheWiki": "Check the Wiki!",
"winWithYourFavorites": "Win With Your Favorites!",
"alsoTryPokerogueWait": "Also Try PokéRogue! Wait...",
"theWayISeeItKyogreIsSurrounded": "The Way I See It, Kyogre Is Surrounded...",
"tryOutHoneyGather": "Try out Honey Gather!",
"notForTheFaintOfHeart": "Not for the Faint of Heart!",
"p": "(P)",
"flipYourDeviceToEvolveInkay": "Flip Your Device To Evolve Inkay!",
"inArceusWeTrust": "In Arceus We Trust",
"whyDidTheTorchicCrossTheRoad": "Why Did the Torchic Cross the Road?",
"goodLuck": "Good Luck!",
"fuseWisely": "Fuse Wisely!",
"compensation": "Compensation?",
"prepareForTroubleAndMakeItDouble": "Prepare for Trouble! And Make It Double!",
"anEggForYourTroubles": "An Egg for Your Troubles?",
"regirock": "ÜN ÜN ÜN",
"hereForAGoodTime": "Here for a Good Time!",
"getGoodOrDont": "Get Good! Or Don't!",
"checkTheSubreddit": "Check out the Subreddit!",
"betterNerfGreninja": "Better Nerf Greninja!",
"inCaseOfUpdateClearYourCache": "In Case of Update, Clear Your Cache!",
"insertTextHere": "insert text here",
"endingEndlessNotFound": "ending_endless not found",
"iLikeMyEggsVouchered": "I Like My Eggs Vouchered!",
"YOU": "YOU!",
"noAddedSugar": "No Added Sugar!",
"notSponsored": "Not Sponsored!",
"notRated": "Not Rated!",
"justOneMoreWaveMom": "Just One More Wave, Mom!",
"saltCured": "Salt Cured!",
"onlyOnPokerogueNet": "Only on pokerogue.net!",
"pixelPerfection": "Pixel Perfection!",
"openSource": "Open Source!",
"probablyGood": "Probably Good!",
"itsAMonsterHouse": "It's a Monster House!",
"dontForgetYourPassword": "Don't Forget Your Password!",
"tripleTripleTripleAxel": "Triple- Triple- Triple Axel!",
"questionExclamation": "?!",
"clownEncounters": "Clown Encounters!",
"fullOfBerries": "Full of Berries!",
"limitsAreMeantToBeBrokenSometimes": "Limits Are Meant To Be Broken, Sometimes!",
"keepItCasual": "Keep It Casual!",
"serversProbablyWorking": "Servers Probably Working!",
"mew": "Mew Probably Not Under a Truck!",
"makeItRainAndYourProblemsGoAway": "Make it Rain and your problems go away!",
"customMusicTracks": "Custom Music Tracks!",
"youAreValid": "You Are Valid!",
"number591IsLookingOff": "Number 591 Is Looking a Bit...",
"timeForYourDeliDelivery": "Time for Your Deli-Delivery!",
"goodFirstImpression": "Hope We Left a Good First Impression!",
"iPreferRarerCandies": "I Prefer Rarer Candies!",
"halloween": {
"pumpkaboosAbout": "Pumpkaboos about!",
"mayContainSpiders": "May contain spiders!",
"spookyScaryDuskulls": "Spooky, Scary Duskulls!"
"pumpkabooAbout": "Pumpkaboo About!",
"mayContainSpiders": "May Contain Spiders!",
"spookyScarySkeledirge": "Spooky, Scary Skeledirge!",
"gourgeistUsedTrickOrTreat": "Gourgeist Used Trick-or-Treat!",
"letsSnuggleForever": "Let's Snuggle Forever!"
},
"xmas": {
"happyHolidays": "Happy Holidays!",
"delibirdSeason": "Delibird Season!"
"delibirdSeason": "Delibird Season!",
"unaffilicatedWithDelibirdServices": "Unaffiliated With Delibird Services!",
"diamondsFromTheSky": "Diamonds From the Sky!",
"holidayStylePikachuNotIncluded": "Holiday Style Pikachu Not Included!"
},
"newYears": {
"happyNewYear": "Happy New Year!"
}
}
}

View File

@ -32,6 +32,7 @@
"attackMissed": "¡{{pokemonNameWithAffix}}\nha evitado el ataque!",
"attackHitsCount": "N.º de golpes: {{count}}.",
"rewardGain": "¡Has conseguido\n{{modifierName}}!",
"rewardGainCount": "¡Has conseguido\n{{count}} {{modifierName}}!",
"expGain": "{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.",
"levelUp": "¡{{pokemonName}} ha subido a\nNv. {{level}}!",
"learnMove": "¡{{pokemonName}} ha aprendido {{moveName}}!",
@ -53,7 +54,7 @@
"noPokeballTrainer": "¡No está bien capturar los\nPokémon de los demás!",
"noPokeballMulti": "¡No puedes lanzar Poké Balls\ncuando hay más de un Pokémon!",
"noPokeballStrong": "Este Pokémon es demasiado fuerte para ser capturado.\n¡Baja sus PS!",
"noPokeballMysteryEncounter": "¡No puedes capturar este Pokémon!",
"noPokeballMysteryEncounter": "¡No puedes capturar a este Pokémon!",
"noEscapeForce": "Una fuerza misteriosa\nte impide huir.",
"noEscapeTrainer": "¡No puedes huir de los\ncombates contra entrenadores!",
"noEscapePokemon": "¡{{moveName}} de {{pokemonName}} no te deja huir!",
@ -101,7 +102,7 @@
"congratulations": "¡Enhorabuena!",
"beatModeFirstTime": "¡{{speciesName}} ha completado el modo {{gameMode}} por primera vez!\n¡Has conseguido {{newModifier}}!",
"ppReduced": "¡El movimiento {{moveName}} de {{targetName}} ha perdido {{reduction}} PP!",
"mysteryEncounterAppeared": "¿Que es esto?",
"mysteryEncounterAppeared": "¿Qué es esto?",
"battlerTagsHealBlock": "¡{{pokemonNameWithAffix}} no puede restaurar sus PS!",
"battlerTagsHealBlockOnRemove": "¡{{pokemonNameWithAffix}} ya puede recuperar PS!"
}

View File

@ -71,6 +71,7 @@
"disabledOnAdd": "¡Se ha anulado el movimiento {{moveName}}\nde {{pokemonNameWithAffix}}!",
"disabledLapse": "¡El movimiento {{moveName}} de {{pokemonNameWithAffix}} ya no está anulado!",
"tarShotOnAdd": "¡{{pokemonNameWithAffix}} se ha vuelto débil ante el fuego!",
"shedTailOnAdd": "{{pokemonNameWithAffix}} se desprende\nde un segmento de su cuerpo y lo usa comoseñuelo!",
"substituteOnAdd": "¡{{pokemonNameWithAffix}} creó un sustituto!",
"substituteOnHit": "¡El sustituto recibe daño en lugar del {{pokemonNameWithAffix}}!",
"substituteOnRemove": "¡El sustituto del {{pokemonNameWithAffix}} se debilitó!"

View File

@ -1,4 +1,26 @@
{
"snow_worker": {
"encounter": {
"1": "¡Cuando hace frío, hay que abrigarse!\n$¡Sabiduría popular!"
},
"victory": {
"1": "De donde no hay, no se puede sacar.\nEso también es sabiduría popular, creo."
},
"defeat": {
"1": "¡Voy a compartir mi sabiduría! Si congelan a un Pokémon de tu equipo,\n$usa con él un movimiento de tipo Fuego ¡y podrás derretir el hielo!"
}
},
"snow_worker_double": {
"encounter": {
"1": "...\n$¡Co-combate!"
},
"victory": {
"1": "...\n$¡Qué-qué frío!"
},
"defeat": {
"1": "¿Sabes?\nAquí hace mucho frío."
}
},
"aether_grunt": {
"encounter": {
"1": "¡Lucharé con toda mi fuerza para detenerte!",
@ -73,8 +95,8 @@
"2": "No es fácil encontrar el equilibrio entre ataque y defensa..."
},
"defeat": {
"1": "Necesitas curar a tus Pokémon?",
"2": "Necesitas curar a tus Pokémon?"
"1": "¿Necesitas curar a tus Pokémon?",
"2": "¿Necesitas curar a tus Pokémon?"
}
},
"stat_trainer_marley": {
@ -93,8 +115,8 @@
},
"stat_trainer_mira": {
"encounter": {
"1": "Serás sorprendido por Maiza!",
"2": "¡Maiza te mostrará que Mira ya no se pierde!"
"1": "¡Maiza te sorprenderá!",
"2": "¡Maiza te mostrará que Maiza ya no se pierde!"
},
"victory": {
"1": "Maiza se pregunta si puede llegar muy lejos en esta tierra.",
@ -115,8 +137,8 @@
"2": "A veces combatimos entre nosotros y otras veces unimos fuerzas.$Es maravilloso ser entrenador."
},
"defeat": {
"1": "Vaya demostración pusiste.\nMejor suerte la próxima vez.",
"2": "Vaya demostración pusiste.\nMejor suerte la próxima vez."
"1": "Menuda demostración hiciste.\nMejor suerte la próxima vez.",
"2": "Menuda demostración hiciste.\nMejor suerte la próxima vez."
}
},
"winstrates_victor": {

View File

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

View File

@ -69,7 +69,7 @@
"description": "Aumenta la est. {{stat}} base del portador en un 10%.\nCuanto mayores sean tus IVs, mayor será el límite de acumulación."
},
"PokemonBaseStatTotalModifierType": {
"name": "Jugo de Shuckle",
"name": "Zumo de Shuckle",
"description": "{{increaseDecrease}} todas las estadísticas base del portador en {{statValue}}. Fuiste {{blessCurse}} por el Shuckle.",
"extra": {
"increase": "Aumenta",

View File

@ -1,14 +1,14 @@
{
"intro": "Un entrenador extremadamente fuerte se te acerca...",
"buck": {
"intro_dialogue": "¡Hola, entrenador! Me llamo Bulgur.$Tengo una propuesta súper genial para un entrenador fuerte como tú.$Llevo conmigo dos Huevos Pokémon raros, pero me gustaría que alguien más cuidara uno.$Si puedes demostrarme tu fuerza como entrenador, ¡te daré el huevo más raro",
"intro_dialogue": "¡Hola, entrenador! Me llamo Bulgur.$Tengo una propuesta súper genial para un entrenador fuerte como tú.$Llevo conmigo dos Huevos Pokémon raros, pero me gustaría que alguien más cuidara uno.$Si puedes demostrarme tu fuerza como entrenador, ¡te daré el Huevo más raro!",
"accept": "¡Guau!¡Este combate promete!",
"decline": "Vaya, parece que tu equipo no está en condiciones óptimas.$Aquí, déjame ayudarte con eso."
"decline": "Vaya, parece que tu equipo no está en condiciones óptimas.$Venga, déjame ayudarte con eso."
},
"cheryl": {
"intro_dialogue": "Hola, me llamo Malta.$Tengo una petición particularmente interesante para un entrenador fuerte como tú.$Llevo conmigo dos Huevos Pokémon raros, pero me gustaría que alguien más cuidara uno.$Si puedes demostrarme tu fuerza como entrenador, ¡te daré el Huevo más raro!",
"accept": "¡Espero que estés listo!",
"decline": "Entiendo, parece que tu equipo no está en las mejores condiciones en este momento.$Aquí, déjame ayudar con eso."
"decline": "Entiendo, parece que tu equipo no está en las mejores condiciones en este momento.$Déjame ayudar con eso."
},
"marley": {
"intro_dialogue": "...@d{64} Soy Sémola.$Tengo una oferta para ti...$Llevo conmigo dos Huevos Pokémon, pero me gustaría que alguien más cuidara uno.$Si eres más fuerte que yo, te daré el Huevo más raro.",
@ -18,12 +18,12 @@
"mira": {
"intro_dialogue": "¡Hola! Soy Maiza. Maiza tiene una petición para un entrenador fuerte como tú. Maiza tiene dos Huevos Pokémon raros, pero quiere que alguien más se quede con uno. Si le demuestras a Maiza que eres fuerte,¡Maiza te dará el Huevo más raro!",
"accept": "¿Vas a luchar contra Maiza?\n¡Genial!",
"decline": "Vaya, ¿no hay batalla? ¡Está bien! Aquí, Maiza curará a tu equipo."
"decline": "Vaya, ¿no hay batalla? ¡Está bien! Maiza curará a tu equipo."
},
"riley": {
"intro_dialogue": "Soy Quinoa.$Tengo una propuesta extraña para un entrenador fuerte como tú.$Llevo conmigo dos Huevos Pokémon raros, pero me gustaría darle uno a otro entrenador.$Si puedes demostrarme tu fuerza, te daré el Huevo más raro.",
"accept": "Esa mirada que tienes...\nhagamos esto..",
"decline": "Entiendo, tu equipo parece agotado.$Aquí, déjame ayudarte con eso."
"decline": "Entiendo, tu equipo parece agotado.$A ver, déjame ayudarte con eso."
},
"title": "Una Prueba de Entrenador",
"description": "Parece que este entrenador está dispuesto a darte un Huevo sin importar tu decisión. Sin embargo, si logras derrotar a este entrenador fuerte, recibirás un Huevo mucho más raro.",
@ -31,7 +31,7 @@
"option": {
"1": {
"label": "Aceptar el Desafío",
"tooltip": "(-) Batalla Ardua\n(+) Obtén un @[TOOLTIP_TITLE]{Huevo muy raro}"
"tooltip": "(-) Batalla extremadamente Ardua\n(+) Obtén un @[TOOLTIP_TITLE]{Huevo muy raro}"
},
"2": {
"label": "Rechazar el Desafío",
@ -39,9 +39,9 @@
}
},
"eggTypes": {
"rare": "un huevo Raro",
"epic": "un huavo Épico",
"legendary": "un huevo Legendario "
"rare": "un Huevo Raro",
"epic": "un Huevo Épico",
"legendary": "un Huevo Legendario "
},
"outro": "{{statTrainerName}} te dio {{eggType}}!"
}

View File

@ -17,9 +17,9 @@
"selected": "Tus súplicas conmueven al {{greedentName}}.$No te devuelve todas tus bayas, pero aún así te lanza algunas en tu dirección."
},
"3": {
"label": "Déjalo quedarse con la comida",
"label": "Dejarle quedarse con la comida",
"tooltip": "(-) Perder todas las bayas\n(?) Le gustarás al {{greedentName}}",
"selected": "El {{greedentName}} devora todas sus bayas en un instante!$Acariciando su estómago, te mira con aprecio.$Quizás podrías darle más bayas en tu aventura....$@s{level_up_fanfare}El {{greedentName}} quiere unirse a tu equipo!"
}
}
}
}

View File

@ -1,7 +1,7 @@
{
"intro": "Te detiene un chico de aspecto rico.",
"intro": "Te detiene un chico con pinta de rico.",
"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 un Pokémon así!$¡Te pagaría generosamente,\n también te daría este viejo abalorio!",
"intro_dialogue": "¡Hola!$¡No puedo evitar notar que tu\n{{strongestPokemon}} se ve absolutamente divino!$Siempre he querido tener un Pokémon así, osea ¡me encanta!$¡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]{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?",
@ -12,7 +12,7 @@
"selected": "¡Maravilloso!@d{32} ¡Ven, John!, {{strongestPokemon}}!$¡Es hora de mostrarte a todos en el club náutico!$¡Estarán tan celosos!"
},
"2": {
"label": "Extorsiona al niño",
"label": "Extorsionar al niño",
"tooltip": "(+) {{option2PrimaryName}} usa {{moveOrAbility}}\n(+) Obtén {{price, money}}",
"tooltip_disabled": "Tus Pokémon necesitan tener ciertos movimientos o habilidades para elegir esto",
"selected": "¡Por Dios, nos están robando, {{liepardName}}!$¡Oirás de mis abogados por esto!"
@ -23,4 +23,4 @@
"selected": "Qué día más horrible…$Bueno, volvamos al club náutico entonces, {{liepardName}}."
}
}
}
}

View File

@ -1,17 +1,17 @@
{
"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 la opción más directa, pero parece fuerte. ¿Quizás un Pokémon rápido podría agarrar algunas bayas sin ser descubierto?",
"query": "¿Qué harás?",
"berries": "¡Bayas!",
"option": {
"1": {
"label": "Enfréntate al Pokémon",
"label": "Enfrentarse al Pokémon",
"tooltip": "(-) Batalla Difícil\n(+) Obtén bayas",
"selected": "Te acercas al\nPokémon sin miedo."
},
"2": {
"label": "Corre hacia el arbusto",
"label": "Correr hacia el arbusto",
"tooltip": "(-) {{fastestPokemon}} Utiliza su velocidad\n(+) Obtén bayas",
"selected": "¡Tu {{fastestPokemon}} corre hacia el arbusto de bayas!$¡Logra agarrar {{numBerries}} antes de que {{enemyPokemon}} pueda reaccionar!$Huyes rápidamente con tu nuevo premio.",
"selected_bad": "¡Tu {{fastestPokemon}} corre hacia el arbusto de bayas!$¡Oh no! ¡El {{enemyPokemon}} fue más rápido y bloqueó el camino!",
@ -23,4 +23,4 @@
"selected": "Dejas al Pokémon fuerte con su premio y continúas."
}
}
}
}

View File

@ -7,33 +7,33 @@
"query": "¿Qué harás?",
"option": {
"1": {
"label": "Proponer a luchar",
"tooltip": "(-) Batalla Desafiante\n(+) Enseña un movimiento de tipo Bicho a un Pokémon",
"label": "Proponerle luchar",
"tooltip": "(-) Batalla Desafiante\n(+) Enseña un movimiento de tipo Bicho a cualquier Pokémon",
"selected": "¿Un desafío, eh?\n¡Mis Pokémon Bicho están más que preparados para ti!"
},
"2": {
"label": "Muestra tus tipos Bicho",
"label": "Mostrar 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}} tipo Bicho...$Supongo que estoy perdiendo el tiempo con alguien como tú...",
"selected_2_to_3": "¡Oye, tienes {{numBugTypes}}! No está mal.$Aquí, esto podría ayudarte en tu viaje para atrapar más.",
"selected_4_to_5": "¿Qué? ¿Tienes {{numBugTypes}}?\nNice!$No estás a mi nivel, pero puedo ver destellos de mí en ti.$¡Toma esto, mi joven aprendiz!",
"selected_4_to_5": "¿Qué? ¿Tienes {{numBugTypes}}?\n¡Guau!$No estás a mi nivel, pero puedo ver un poco de mí reflejado en ti.$¡Toma esto, mi joven aprendiz!",
"selected_6": "¡Vaya! {{numBugTypes}}!$¡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": "Regala un objeto de tipo Bicho",
"label": "Regalar 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.",
"invalid_selection": "El Pokémon no tiene ese tipo 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": "¡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?",
"confirm_no_teach": "¿Estás seguro de que no quieres aprender uno de estos excelentes movimientos?",
"outro": "¡Veo grandes Pokémon de tipo Bicho en tu futuro! ¡Que nuestros caminos se crucen de nuevo! ¡Bicho fuera!",
"numBugTypes_one": "{{count}} Pokémon de tipo Bicho",
"numBugTypes_other": "{{count}} Pokémon de tipo Bicho"

View File

@ -1,33 +1,34 @@
{
"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.}",
"intro_dialogue": "¡Bufón inútil, prepárate para una batalla brillante! ¡Serás derrotado por este trovador luchador!",
"title": "Payaseando",
"description": "Algo no esta bien en este encuentro. El payaso parece ansioso por provocarte a pelear...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": "Enfrentarse al Payaso",
"tooltip": "(-) Batalla extraña\n(?) Afecta las habilidades de los Pokémon",
"tooltip": "(-) Batalla extraña\n(?) Afecta la habilidad de un 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_dialogue": "¡Una exhibición sensacional! ¡Tu astucia es digna de una habilidad especial 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}}!"
"ability_gained": "¡@s{level_up_fanfare}{{chosenPokemon}} obtuvo la habilidad {{ability}}!"
},
"2": {
"label": "No involucrarse",
"tooltip": "(-) Molesta al payaso\n(?) Afecta los objetos de los Pokémon",
"tooltip": "(?) Afecta los items de un 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!"
"selected_3": Necio incompetente, serás víctima de mi trampa perfecta!"
},
"3": {
"label": "Devolver los insultos",
"tooltip": "(-) Molesta al payaso\n(?) Afecta los objetos de los Pokémon",
"tooltip": "(?) Afecta los tipos de tus 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": "El payaso y sus secuaces\ndesaparecen en una nube de humo."
}
}

View File

@ -11,12 +11,12 @@
"boss_enraged": "¡El miedo del {{oricorioName}} aumentó sus estadísticas!"
},
"2": {
"label": "Aprende su danza",
"tooltip": "(+) Enseña a un Pokémon Danza despertar",
"label": "Aprender su danza",
"tooltip": "(+) Enseña a cualquier Pokémon Danza despertar",
"selected": "Observas atentamente al {{oricorioName}} mientras realiza su danza…$@s{level_up_fanfare}¡Tu {{selectedPokemon}} aprendió del {{oricorioName}}!"
},
"3": {
"label": "Muéstrale una danza",
"label": "Mostrarle una danza",
"tooltip": "(-) Enseña al {{oricorioName}} un movimiento de danza\n(+) Le gustaras al {{oricorioName}}",
"disabled_tooltip": "Tus Pokémon necesitan conocer un movimiento de danza para esto.",
"select_prompt": "Selecciona un movimiento de tipo danza para usar.",
@ -24,4 +24,4 @@
}
},
"invalid_selection": "Este Pokémon no conoce ningún movimiento de danza"
}
}

View File

@ -1,7 +1,7 @@
{
"intro": "¡Es un profesor y alugnos estudiantes parvulitos",
"speaker": "Profesor",
"intro_dialogue": "¡Hola! ¿Podrías dedicar un minuto a mis alumnos?$Les estoy enseñando sobre los movimientos de Pokémon\ny me encantaría mostrarles una demostración.$¿Te importaría mostrarnos uno de los movimientos\nque puede usar tu Pokémon?",
"intro": "¡Es una profesora y algunos estudiantes de parvulitos",
"speaker": "Profesora",
"intro_dialogue": "¡Hola! ¿Podrías dedicarles un minuto a mis alumnos?$Les estoy enseñando sobre los movimientos de Pokémon\ny me encantaría hacerles una demonstración. Te importaría enseñarnos uno de los movimientos\nque puede usar tu Pokémon?",
"title": "Excursión",
"description": "Una profesora está solicitando una demostración de un movimiento de un Pokémon. Dependiendo del movimiento que elijas, podría tener algo útil para ti a cambio.",
"query": "¿Qué categoría de movimiento mostrarás?",
@ -28,4 +28,4 @@
"status": "Estado",
"physical": "Físico",
"special": "Especial"
}
}

View File

@ -6,7 +6,7 @@
"query": "¿Te gustaría jugar?",
"option": {
"1": {
"label": "Jugar el juego",
"label": "Jugar",
"tooltip": "(-) Paga {{option1Money, money}}\n(+) Juega al {{wobbuffetName}} Golpe-o-matic",
"selected": "¡Es hora de probar tu suerte!"
},
@ -23,8 +23,8 @@
"turn_remaining_1": "¡Queda un turno!",
"end_game": "¡Se acabó el tiempo!$El {{wobbuffetName}} se prepara para el contraataque y@d{16}.@d{16}.@d{16}.",
"best_result": "¡El {{wobbuffetName}} golpea el botón con tanta fuerza\nque la campana se rompe!$¡Ganas el gran premio!",
"great_result": "¡El {{wobbuffetName}} golpea el botón, casi alcanzando la campana!$¡Tan cerca!\n¡Ganas el segundo premio!",
"great_result": "¡El {{wobbuffetName}} golpea el botón, casi alcanzando la campana!$¡Que pena!\n¡Ganas el segundo premio!",
"good_result": "¡El {{wobbuffetName}} golpea el botón con suficiente fuerza para llegar a la mitad de la escala!$¡Ganas el tercer premio!",
"bad_result": "El {{wobbuffetName}} apenas toca el botón y no pasa nada…$¡Oh no!\nNo ganas nada.",
"outro": "¡Ese fue un juego muy divertido!"
}
"outro": "¡Eso estuvo muy divertido!"
}

View File

@ -14,10 +14,10 @@
"PASS_BATON": "Relevo",
"UNPAUSE_EVOLUTION": "Reanudar evolución",
"REVIVE": "Revivir",
"RENAME": "Rename",
"SELECT": "Select",
"RENAME": "Renombrar",
"SELECT": "Seleccionar",
"choosePokemon": "Elige a un Pokémon.",
"doWhatWithThisPokemon": "¿Que quieres hacer con este Pokémon?",
"doWhatWithThisPokemon": "¿Qué quieres hacer con este Pokémon?",
"noEnergy": "¡A {{pokemonName}} no le\nquedan fuerzas para luchar!",
"hasEnergy": "¡A {{pokemonName}} le\nquedan fuerzas para luchar!",
"cantBeUsed": "¡{{pokemonName}} no puede usarse en este desafío!",

View File

@ -127,7 +127,7 @@
"macro_grunt": "Entrenador Macrocosmos",
"macro_grunt_female": "Entrenadora Macrocosmos",
"macro_grunts": "Entrenadores Macrocosmos",
"star_grunt": "Star Grunt",
"star_grunt_female": "Star Grunt",
"star_grunts": "Star Grunts"
"star_grunt": "Recluta Star",
"star_grunt_female": "Recluta Star",
"star_grunts": "Recluta Star"
}

View File

@ -169,16 +169,16 @@
"marnie_piers_double": "Roxy y Nerio",
"piers_marnie_double": "Nerio y Roxy",
"buck": "Buck",
"cheryl": "Cheryl",
"marley": "Marley",
"mira": "Mira",
"riley": "Riley",
"buck": "Bulgur",
"cheryl": "Malta",
"marley": "Sémola",
"mira": "Maíza",
"riley": "Quinoa",
"victor": "Victor",
"victoria": "Victoria",
"vivi": "Vivi",
"vicky": "Vicky",
"vito": "Vito",
"bug_type_superfan": "Bug-Type Superfan",
"expert_pokemon_breeder": "Expert Pokémon Breeder"
"bug_type_superfan": "Superfan de los Pokémon Bicho",
"expert_pokemon_breeder": "Criaokémon Experta"
}

View File

@ -19,7 +19,7 @@
"aether_boss": "Presidente Æther",
"skull_boss": "Jefe del Team Skull",
"macro_boss": "Presidente de Macrocosmos",
"star_boss": "Team Star Leader",
"star_boss": "Jefe del Team Star",
"rocket_admin": "Admin. del Team Rocket",
"rocket_admin_female": "Admin. del Team Rocket",
@ -36,7 +36,7 @@
"aether_admin": "Director de la Fundación Æther",
"skull_admin": "Admin. del Team Skull",
"macro_admin": "Admin. de Macrocosmos",
"star_admin": "Team Star Squad Boss",
"star_admin": "Admin. del Team Star",
"the_winstrates": "Familia Estratega"
}

View File

@ -32,6 +32,7 @@
"attackMissed": "{{pokemonNameWithAffix}}\névite lattaque!",
"attackHitsCount": "Touché {{count}} fois !",
"rewardGain": "Vous recevez\n{{modifierName}} !",
"rewardGainCount": "Vous recevez\n{{count}} {{modifierName}} !",
"expGain": "{{pokemonName}} gagne\n{{exp}} Points dExp !",
"levelUp": "{{pokemonName}} monte au\nN. {{level}} !",
"learnMove": "{{pokemonName}} apprend\n{{moveName}} !",

View File

@ -71,6 +71,7 @@
"disabledOnAdd": "La capacité {{moveName}}\nde {{pokemonNameWithAffix}} est mise sous entrave !",
"disabledLapse": "La capacité {{moveName}}\nde {{pokemonNameWithAffix}} nest plus sous entrave !",
"tarShotOnAdd": "{{pokemonNameWithAffix}} est maintenant\nvulnérable au feu !",
"shedTailOnAdd": "{{pokemonNameWithAffix}} détache\nsa queue pour créer un leurre !",
"substituteOnAdd": "{{pokemonNameWithAffix}}\ncrée un clone !",
"substituteOnHit": "Le clone subit les dégâts à la place\nde {{pokemonNameWithAffix}} !",
"substituteOnRemove": "Le clone de {{pokemonNameWithAffix}}\ndisparait…"

View File

@ -175,6 +175,28 @@
"1": "Mon élégance demeure inébranlable !"
}
},
"snow_worker": {
"encounter": {
"1": "Quand il fait froid, on se couvre !\nTout le monde sait ça !"
},
"victory": {
"1": "Il faut se rebeller jusquau bout !\nTout le monde sait ça aussi…"
},
"defeat": {
"1": "Je vais tapprendre une bonne chose. Si un Pokémon est gelé, utilise une capacité Feu pour faire fondre la glace !"
}
},
"snow_worker_double": {
"encounter": {
"1": "…\n… En-en-en garde !"
},
"victory": {
"1": "…\n… Je-je-je tremble…"
},
"defeat": {
"1": "…\n… Tu-tu-tu sais quoi ?\n… Il fait su-super froid i-ici."
}
},
"rocket_grunt": {
"encounter": {
"1": "Nous sommes de retour !",

View File

@ -240,7 +240,7 @@
"TOXIC_ORB": { "name": "Orbe Toxique", "description": "Empoisonne gravement son porteur à la fin du tour sil na pas déjà de problème de statut." },
"FLAME_ORB": { "name": "Orbe Flamme", "description": "Brule son porteur à la fin du tour sil na pas déjà de problème de statut." },
"BATON": { "name": "Bâton", "description": "Permet de transmettre les effets en cas de changement de Pokémon. Ignore les pièges." },
"BATON": { "name": "Témoin", "description": "Permet de transmettre les effets en cas de changement de Pokémon. Ignore les pièges." },
"SHINY_CHARM": { "name": "Charme Chroma", "description": "Augmente énormément les chances de rencontrer un Pokémon sauvage chromatique." },
"ABILITY_CHARM": { "name": "Charme Talent", "description": "Augmente énormément les chances de rencontrer un Pokémon sauvage avec un talent caché." },

View File

@ -31,7 +31,7 @@
"option": {
"1": {
"label": "Accepter le défi",
"tooltip": "(-) Combat difficile\n(+) Gain dun @[TOOLTIP_TITLE]{Œuf très rare}"
"tooltip": "(-) Combat extrême\n(+) Gain dun @[TOOLTIP_TITLE]{Œuf très rare}"
},
"2": {
"label": "Décliner le défi",

View File

@ -8,7 +8,7 @@
"option": {
"1": {
"label": "Affronter le Clown",
"tooltip": "(-) Combat étrange\n(?) Affecte les talents des Pokémon",
"tooltip": "(-) Combat étrange\n(?) Affecte le talent dun 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 vos compétences !",
"apply_ability_message": "Le Clown vous propose dÉchanger définitivement le talent dun de vos Pokémon contre {{ability}} !",
@ -17,14 +17,14 @@
},
"2": {
"label": "Rester de marbre",
"tooltip": "(-) Agace le Clown\n(?) Affecte les objets de vos Pokémon",
"tooltip": "(?) Affecte les objets dun Pokémon",
"selected": "Ça se défile lâchement dun duel exceptionnel ?\nDans ce cas, tâte à ma colère !",
"selected_2": "Le {{blacephalonName}} du Clown utilise\nTour de Magie !$Tous les objets de {{switchPokemon}}\nsont échangés au hasard !",
"selected_3": "Sombre imbécile, tombe dans mon piège !"
},
"3": {
"label": "Retourner les insultes",
"tooltip": "(-) Agace le Clown\n(?) Affecte les types de vos Pokémon",
"tooltip": "(?) Affecte les types de vos Pokémon",
"selected": "Ça se défile lâchement dun duel exceptionnel ?\nDans ce cas, tâte à ma colère !",
"selected_2": "Le {{blacephalonName}} du Clown utilise\nune étrange capacité !$Tous les types de votre équipe\nsont échangés au hasard !",
"selected_3": "Sombre imbécile, tombe dans mon piège !"

View File

@ -11,13 +11,13 @@
},
"2": {
"label": "Échange Miracle",
"tooltip": "(+) Envoyer un de vos Pokémon à la GTS et en recevoir un au hasard"
"tooltip": "(+) Envoyer un de vos Pokémon à la GTS et en recevoir un spécial au hasard"
},
"3": {
"label": "Échanger un objet",
"trade_options_prompt": "Choisissez lobjet à envoyer.",
"invalid_selection": "Ce Pokémon na aucun objet légal à échanger.",
"tooltip": "(+) Envoyer un de vos objets à la GTS et en recevoir un au hasard"
"tooltip": "(+) Envoyer un de vos objets à la GTS et en recevoir un amélioré au hasard"
},
"4": {
"label": "Partir",

View File

@ -6,7 +6,7 @@
"option": {
"1": {
"label": "Ouvrir",
"tooltip": "@[SUMMARY_BLUE]{({{trapPercent}}%) Un truc terrible}\n@[SUMMARY_GREEN]{({{commonPercent}}%) Petites récompenses }\n@[SUMMARY_GREEN]{({{ultraPercent}}%) Bonnes récompenses}\n@[SUMMARY_GREEN]{({{roguePercent}}%) Super récompenses}\n@[SUMMARY_GREEN]{({{masterPercent}}%) Incroyables récompenses}",
"tooltip": "@[SUMMARY_BLUE]{({{trapPercent}}%) Un truc terrible}\n@[SUMMARY_GREEN]{({{commonPercent}}%) Petites récompenses}\n@[SUMMARY_GREEN]{({{ultraPercent}}%) Bonnes récompenses}\n@[SUMMARY_GREEN]{({{roguePercent}}%) Super récompenses}\n@[SUMMARY_GREEN]{({{masterPercent}}%) Incroyables récompenses}",
"selected": "Vous décidez douvrir le coffre et y trouvez…",
"normal": "De simples outils et objets banaux.",
"good": "Quelques bons outils et objets.",

View File

@ -1,7 +1,7 @@
{
"intro": "Cest un Parc Safari !",
"title": "Le Parc Safari",
"description": "Toutes sortes de Pokémon rares et particuliers peuvent y être rencontrés !\nSi vous décidez dy entrer, vous aurez une limite de 3 Pokémon sauvages à rencontrer que vous pourrez essayer de capturer.\n\nMais attention, ces Pokémon peuvent prendre la fuite avant que vous nayez pu les capturer !",
"description": "Toutes sortes de Pokémon rares et particuliers peuvent y être rencontrés !\nSi vous décidez dy entrer, vous aurez une limite de @[TOOLTIP_TITLE]{{{numEncounters}} Pokémon sauvages} à rencontrer que vous pourrez essayer de capturer.\n\nMais attention, ces Pokémon peuvent prendre la fuite avant que vous nayez pu les capturer !",
"query": "Voulez-vous y entrer ?",
"option": {
"1": {

View File

@ -25,7 +25,7 @@
"outro": "Ton {{chosenPokemon}} et toi avez\nlair très heureux !$Tiens, prends ça aussi.",
"outro_failed": "Voilà qui est bien décevant…$Tas encore visiblement bien du chemin à faire\npour acquérir la confiance de tes Pokémon !",
"gained_eggs": "@s{item_fanfare}Vous recevez\n{{numEggs}} !",
"eggs_tooltip": "\n(+) Recevez {{eggs}}",
"eggs_tooltip": "\n(+) Recevez @[TOOLTIP_TITLE]{{{eggs}}}",
"numEggs_one": "{{count}} Œuf {{rarity}}",
"numEggs_other": "{{count}} Œufs {{rarity}}s"
}

View File

@ -3,8 +3,8 @@
"speaker": "Gentleman",
"intro_dialogue": "Salutations !\nJai une offre à proposer rien quà VOUS !",
"title": "Le vendeur de Pokémon",
"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« Quen 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« Quen dites-vous ? »",
"description":  Cet incroyable et unique {{purchasePokemon}} @[TOOLTIP_TITLE]{possède un talent jamais vu dans son espèce} ! Ce superbe {{purchasePokemon}} est à vous pour le prix imbattable de {{price, money}} ! »\n\n« Quen dites-vous ? »",
"description_shiny":  Cet incroyable et unique {{purchasePokemon}} @[TOOLTIP_TITLE]{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« Quen dites-vous ? »",
"query": "Que voulez-vous faire ?",
"option": {
"1": {

View File

@ -1,7 +1,7 @@
{
"intro": "Cest un {{shuckleName}} absolument énorme et\nce qui semble être un énorme bol de… jus ?",
"title": "Un breuvage qui arrache",
"description": "Ce {{shuckleName}} qui bloque la route semble incroyablement puissant.\nLe jus qui laccompagne semble émaner une étrange forme de puissance.\n\nIl tend une patte dans votre direction, lair de vouloir quelque chose…",
"description": "Ce {{shuckleName}} qui bloque la route semble redoutable.\nLe jus qui laccompagne semble émaner une étrange forme de puissance.\n\nIl tend une patte dans votre direction, lair de vouloir quelque chose…",
"query": "Que voulez-vous faire ?",
"option": {
"1": {

View File

@ -3,12 +3,12 @@
"speaker": "La Famille Stratège",
"intro_dialogue": "Nous sommes les Stratège !$Ça te dirait daffronter 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 dencaisser ce défi ?",
"description": "Les Stratège sont une famille de @[TOOLTIP_TITLE]{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 dencaisser ce défi ?",
"query": "Que voulez-vous faire ?",
"option": {
"1": {
"label": "Accepter le défi",
"tooltip": "(-) Combat brutal\n(+) Récompense dun objet spécial",
"tooltip": "(-) Combat brutal contre 5 Dresseurs\n(+) Récompense dun objet spécial",
"selected": "Que le défi commence !"
},
"2": {

View File

@ -1,24 +1,24 @@
{
"intro": "Vous tombez sur du matériel dentrainement.",
"title": "Session dentrainement",
"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.",
"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 @[TOOLTIP_TITLE]{en le faisant combattre et vaincre le reste de votre équipe}.",
"query": "Quel entrainement choisir ?",
"invalid_selection": "Le Pokémon doit être en bonne santé.",
"option": {
"1": {
"label": "Léger",
"tooltip": "(-) Combat léger\n(+) Augmente au hasard 2 IV du Pokémon",
"tooltip": "(-) Combat léger contre le Pokémon choisi\n(+) Augmente définitivement au hasard 2 IV du Pokémon choisi",
"finished": "{{selectedPokemon}} revient vers vous,\nlair fatigué mais fier de lui !$Ses IV en {{stat1}} et\nen {{stat2}} augmentent !"
},
"2": {
"label": "Modéré",
"tooltip": "(-) Combat modéré\n(+) Modifie la nature du Pokémon",
"tooltip": "(-) Combat modéré le Pokémon choisi\n(+) Modifie définitivement la nature du Pokémon choisi",
"select_prompt": "Sélectionnez la nature pour laquelle\nvotre Pokémon doit sentrainer.",
"finished": "{{selectedPokemon}} revient vers vous,\nlair fatigué mais fier de lui !$Il a beaucoup changé et\nest devenu {{nature}} !"
},
"3": {
"label": "Intense",
"tooltip": "(-) Combat intense\n(+) Modifie le talent du Pokémon",
"tooltip": "(-) Combat intense le Pokémon choisi\n(+) Modifie définitivement le talent du Pokémon choisi",
"select_prompt": "Sélectionnez le talent pour lequel\nvotre Pokémon doit sentrainer.",
"finished": "{{selectedPokemon}} revient vers vous,\nlair fatigué mais fier de lui !$Il a beaucoup changé possède\ndesormais le talent {{ability}} !"
},

View File

@ -6,7 +6,7 @@
"option": {
"1": {
"label": "Le fouiller",
"tooltip": "(-) Prix de la boutique triplés\n(+) Gain dobjets exceptionnels",
"tooltip": "(-) Prix de la boutique ×{{costMultiplier}}\n(+) Gain dobjets exceptionnels",
"selected": "Vous barbotez dans le tas dordures et\nvous vous couvrez de crasse.$Vu votre état, la prochaine boutique va pour sûr\nfortement gonfler ses prix pour vous forcer à fuir !$Mais ça valait le coup, car ce que vous avez trouvé\ndans les ordures est incroyable !"
},
"2": {

View File

@ -32,6 +32,7 @@
"attackMissed": "{{pokemonNameWithAffix}}\nevita lattacco!",
"attackHitsCount": "Colpito {{count}} volta/e!",
"rewardGain": "Ricevi\n{{modifierName}}!",
"rewardGainCount": "Ricevi\n{{count}} {{modifierName}}!",
"expGain": "{{pokemonName}} ha guadagnato\n{{exp}} Punti Esperienza!",
"levelUp": "{{pokemonName}} è salito al\nlivello {{level}}!",
"learnMove": "{{pokemonName}} impara\n{{moveName}}!",

View File

@ -71,6 +71,7 @@
"disabledOnAdd": "La mossa {{moveName}} di\n{{pokemonNameWithAffix}} è stata bloccata!",
"disabledLapse": "La mossa {{moveName}} di\n{{pokemonNameWithAffix}} non è più bloccata!",
"tarShotOnAdd": "{{pokemonNameWithAffix}} è diventato vulnerabile\nal tipo Fuoco!",
"shedTailOnAdd": "{{pokemonNameWithAffix}} si taglia\nla coda e ne fa un sostituto!",
"substituteOnAdd": "Appare un sostituto di {{pokemonNameWithAffix}}!",
"substituteOnHit": "Il sostituto viene colpito al posto di {{pokemonNameWithAffix}}!",
"substituteOnRemove": "Il sostituto di {{pokemonNameWithAffix}} svanisce!"

View File

@ -1,4 +1,26 @@
{
"snow_worker": {
"encounter": {
"1": "Col freddo ci vogliono vestiti pesanti!\n$Questa è saggezza! Viva l'intelletto!"
},
"victory": {
"1": "Agitarsi quando è troppo tardi è inutile.\nAnche questa è saggezza."
},
"defeat": {
"1": "Ascolta questa perla di saggezza! Se usi delle mosse di tipo Fuoco su un Pokémon congelato, questo si riprenderà."
}
},
"snow_worker_double": {
"encounter": {
"1": "...\n$Lo-Lo-Lotta..."
},
"victory": {
"1": "...\n$Tre-Tremo..."
},
"defeat": {
"1": "...\n$Sai che-che...\nQui fa-fa freddo?"
}
},
"stat_trainer_buck": {
"encounter": {
"1": "...I'm telling you right now. I'm seriously tough. Act surprised!",
@ -109,4 +131,4 @@
"1": "I was better than everyone in my family.\nI've never lost before..."
}
}
}
}

View File

@ -1 +1,47 @@
{}
{
"intro": "Un allenatore davvero forte ti si avvicina...",
"buck": {
"intro_dialogue": "Yo, allenatore! Sono Chicco.$Ho una proposta super fantastica\nper allenatori forti come te!$Ho qui con me due uova Pokémon rare,\nma vorrei affidarne una a qualcuno.$Se mi darai prova delle tue doti di allenatore,\nti darò quella più rara!",
"accept": "Whoooo, comincio a scaldarmi!",
"decline": "Accidenti, pare che la tua\nsquadra non se la passi bene.$Lascia che ti aiuti."
},
"cheryl": {
"intro_dialogue": "Ciao, mi chiamo Demetra.$Ho una particolare richiesta,\nmirata ad allenatori come te.$Ho qui con me due uova Pokémon rare,\nma vorrei affidarne una a qualcuno.$Se mi darai prova delle tue doti di allenatore,\nti darò quella più rara!",
"accept": "Spero tu sia pronto/a!",
"decline": "Capisco, mi sa che i tuoi Pokémon\nnon stanno benissimo al momento.$Ti do una mano."
},
"marley": {
"intro_dialogue": "...@d{64} Sono Risetta.$Ho da farti un'offerta...$Ho con me due uova Pokémon rare,\nma voglio regalarne una.$Se ti dimostri più forte di me,\nti darò la più rara tra le due.",
"accept": "... capisco.",
"decline": "...capisco.$I tuoi Pokémon hanno una brutta cera...\nLasciami aiutare."
},
"mira": {
"intro_dialogue": "Ciaoo! Sono Matilde!$Mira ha una richiesta\nper un allenatore forte come te!$Mira ha due uova Pokémon rare,\nma Mira vuole darne via una delle due!$Se dimostri a Mira che te la cavi,\nMira ti da la più rara!",
"accept": "Affronterai Mira?\nYuppi!",
"decline": "Aww, niente lotta?\nVa bene!$Ecco, ora Mira cura la tua squadra!"
},
"riley": {
"intro_dialogue": "Sono Marisio.$Ho una strana proposta\nper gli allenatori forti.$Ho qui due uova Pokémon rare,\nma vorrei darne via una.$Dimostrami quanto vali,\ne ti darò la più rara!",
"accept": "Lo sguardo nei tuoi occhi...\nDiamoci dentro.",
"decline": "Capisco, la tua squadra non se la passa bene.$Lasciami rimediare."
},
"title": "La prova di un allenatore",
"description": "Pare che questo allenatore ti darà un uovo a prescindere dalla tua volontà. Tuttavia, sconfiggendolo, potrai riceverne uno nettamente più raro.",
"query": "Che cosa farai?",
"option": {
"1": {
"label": "Accetta la sfida",
"tooltip": "(-) Estrema lotta\n(+) Ottieni un @[TOOLTIP_TITLE]{Very Rare Egg}"
},
"2": {
"label": "Rifiuta la sfida",
"tooltip": "(+) Squadra completamente curata\n(+) Ottieni un @[TOOLTIP_TITLE]{Egg}"
}
},
"eggTypes": {
"rare": "un uovo raro",
"epic": "un uovo epico",
"legendary": "un uovo leggendario"
},
"outro": "{{statTrainerName}} ti dona {{eggType}}!"
}

View File

@ -180,5 +180,5 @@
"vito": "Enrico",
"bug_type_superfan": "Fan n.1 dei tipi Coleottero",
"expert_pokemon_breeder": "Expert Pokémon Breeder"
"expert_pokemon_breeder": "Allevapokémon Esperte"
}

View File

@ -37,7 +37,7 @@
"name_female": "ワンパンウーマン"
},
"HealAchv": {
"description": "つの 技や 特性や 持たせたアイテムで\n{{HP}}{{healAmount}}を 一気に 回復する"
"description": "つの 技や 特性や 持たせたアイテムで\n{{HP}}{{healAmount}}を 一気に 回復する"
},
"250_HEAL": {
"name": "回復発見者"
@ -52,7 +52,7 @@
"name": "ジョーイさん"
},
"LevelAchv": {
"description": "一つ ポケモンを Lv.{{level}}まで 上げる"
"description": "1匹 ポケモンを Lv.{{level}}まで 上げる"
},
"LV_100": {
"name": "まだまだだよ"
@ -83,27 +83,27 @@
},
"TRANSFER_MAX_STAT_STAGE": {
"name": "連係プレー",
"description": "少なくとも つの 能力を 最大まで あげて\n他の 手持ちポケモンに バトンタッチする"
"description": "少なくとも つの 能力を 最大まで あげて\n他の 手持ちポケモンに バトンタッチする"
},
"MAX_FRIENDSHIP": {
"name": "マブ達",
"description": "一つの 手持ちポケモンの 仲良し度を 最大に 上げる"
"description": "1匹の 手持ちポケモンの 仲良し度を 最大に 上げる"
},
"MEGA_EVOLVE": {
"name": "ザ・アブソリュート",
"description": "一つの 手持ちポケモンを メガシンカさせる"
"description": "1匹の 手持ちポケモンを メガシンカさせる"
},
"GIGANTAMAX": {
"name": "太ーくて堪らない",
"description": "一つの 手持ちポケモンを キョダイマックスさせる"
"description": "1匹の 手持ちポケモンを キョダイマックスさせる"
},
"TERASTALLIZE": {
"name": "一致好き",
"description": "一つの 手持ちポケモンを テラスタルさせる"
"description": "1匹の 手持ちポケモンを テラスタルさせる"
},
"STELLAR_TERASTALLIZE": {
"name": "隠れたタイプ",
"description": "一つの 手持ちポケモンを ステラ・テラスタルさせる"
"description": "1匹の 手持ちポケモンを ステラ・テラスタルさせる"
},
"SPLICE": {
"name": "インフィニット・フュージョン",
@ -155,7 +155,7 @@
},
"PERFECT_IVS": {
"name": "個体値の賞状",
"description": "一つの ポケモンの 個体値を すべて 最大に する"
"description": "1匹の ポケモンの 個体値を すべて 最大に する"
},
"CLASSIC_VICTORY": {
"name": "無双",
@ -163,7 +163,7 @@
},
"UNEVOLVED_CLASSIC_VICTORY": {
"name": "はじめてのおつかい",
"description": "少なくとも 一つの 進化していない 手持ちポケモンで\nクラシックモードを クリアする"
"description": "少なくとも 1匹の 進化していない 手持ちポケモンで\nクラシックモードを クリアする"
},
"MONO_GEN_ONE": {
"name": "原始",

View File

@ -28,6 +28,7 @@
"attackMissed": "{{pokemonNameWithAffix}}には 当たらなかった!",
"attackHitsCount": "{{count}}かい 当たった!",
"rewardGain": "{{modifierName}}を 手に入れた!",
"rewardGainCount": "{{modifierName}}を {{count}}個 手に入れた!",
"expGain": "{{pokemonName}}は\n{{exp}}経験値を もらった!",
"levelUp": "{{pokemonName}}は\nレベル{{level}}に 上がった!",
"learnMove": "{{pokemonName}}は 新しく\n{{moveName}}を 覚えた!",

View File

@ -70,5 +70,6 @@
"stockpilingOnAdd": "{{pokemonNameWithAffix}}は {{stockpiledCount}}つ たくわえた!",
"disabledOnAdd": "{{pokemonNameWithAffix}}の\n{{moveName}}\nを 封じこめた",
"disabledLapse": "{{pokemonNameWithAffix}}の\nかなしばりが 解けた",
"tarShotOnAdd": "{{pokemonNameWithAffix}}は ほのおに 弱くなった!"
"tarShotOnAdd": "{{pokemonNameWithAffix}}は ほのおに 弱くなった!",
"shedTailOnAdd": "{{pokemonNameWithAffix}}は\nしっぽを 切って みがわりにした"
}

View File

@ -31,7 +31,7 @@
"option": {
"1": {
"label": "勝負を受け取る",
"tooltip": "(-) 勝負がきつい\n(+) @[TOOLTIP_TITLE]{Very Rare Egg}をもらう"
"tooltip": "(-) 勝負が非常にきつい\n(+) @[TOOLTIP_TITLE]{Very Rare Egg}をもらう"
},
"2": {
"label": "勝負を断る",

View File

@ -8,7 +8,7 @@
"option": {
"1": {
"label": "バトルに挑む",
"tooltip": "(-) 相手が手強い\n(+) ポケモンにむしタイプ技を教える",
"tooltip": "(-) 相手が手強い\n(+) 何の ポケモンにむしタイプ技 教える",
"selected": "わたむしを 挑むッシか?\n仲間の むしたちは もう 覚悟していまチュウ"
},
"2": {

View File

@ -8,23 +8,23 @@
"option": {
"1": {
"label": "クラウンと勝負",
"tooltip": "(-) 勝負はおかしい\n(?) 手持ちポケモンの特性は変化",
"tooltip": "(-) 勝負は おかしい\n(?) 手持ちポケモン 1匹 特性は 変化",
"selected": "パッとしない ポケモンを ぽかぽか パンチしちゃうんだ ぴょん!",
"apply_ability_dialogue": "とても たくましく 倒した!\n倒すのが 得意な トレーナーと一緒に 性を 取り替えたい!",
"apply_ability_dialogue": "とても たくましく 倒した!\n倒すのが 得意な トレーナーと一緒に 別な 特性を 取り替えたい!",
"apply_ability_message": "クラウンは スキルスワップで 手持ちポケモン 1匹の\n特性を {{ability}}と 取り替えることを 申し出ています!",
"ability_prompt": "手持ちポケモンの 特性を\n恒久的に {{ability}}に 変化しますか?",
"ability_gained": "@s{level_up_fanfare}{{chosenPokemon}}は {{ability}}の 特性を 身についた!"
},
"2": {
"label": "怒らない",
"tooltip": "(-) クラウンは怒る\n(?) 手持ちポケモンのアイテムは変化",
"tooltip": "(?) 手持ちポケモン 1匹 アイテムは 変化",
"selected": "しつこい! シンプルな 勝負を スルー?!\n己は 俺の 怒りを 起こした",
"selected_2": "クラウンの {{blacephalonName}}は トリックを 使った!\n{{switchPokemon}}の 持ったアイテムは 全て デタラメに 交換された!",
"selected_3": "豪華に ごまかした 下衆…… 元気でね!"
},
"3": {
"label": "悪口を返す",
"tooltip": "(-) クラウンは怒る\n(?) 手持ちポケモンのタイプは変化",
"tooltip": "(?) 手持ちポケモン 全員 タイプは 変化",
"selected": "しつこい! シンプルな 勝負を スルー?!\n己は 俺の 怒りを 起こした",
"selected_2": "クラウンの {{blacephalonName}}は 変な技を 使った!\n手持ちポケモン 全員の タイプは デタラメに 交換された",
"selected_3": "豪華に ごまかした 下衆…… 元気でね!"

View File

@ -1,7 +1,7 @@
{
"intro": "相手が いなくて 寂しそうな {{oricorioName}}は 悲しく 踊ってます。",
"title": "フリフリ振り付け",
"description": "{{oricorioName}}は 攻撃的 じゃなさそう…… むしろ、 悲しい 顔を しています。\n\n誰かと 踊りたいだけ かもしれません……",
"description": "{{oricorioName}}は 攻撃的 じゃなさそう…… むしろ、 しょんぼり している ようです。\n\n誰かと 踊りたいだけ かもしれません……",
"query": "どうしますか?",
"option": {
"1": {
@ -12,7 +12,7 @@
},
"2": {
"label": "踊りを覚える",
"tooltip": "(+) ポケモンにめざめるダンスを教える",
"tooltip": "(+) 何の 手持ち ポケモンにめざめるダンス 教える",
"selected": "{{oricorioName}}の 踊りを よく 調べます……$@s{level_up_fanfare}{{selectedPokemon}}が {{oricorioName}}から 技を 覚えました!"
},
"3": {

View File

@ -1 +1,26 @@
{}
{
"intro": "猛烈な 煙と灰の嵐に 遭遇しました! ",
"title": "燃える熱気",
"description": "渦巻く 灰と 残り火に より、 視界は ほぼゼロに なりました。 どうやら この状況を 引き起こしている 原因は 何かある ようです…… しかし、これほどの規模の 現象を 起こしたのは 一体 何でしょうのか​​?",
"query": "どうしますか?",
"option": {
"1": {
"label": "原因を見つける",
"tooltip": "(?) 原因を発見\n(-) キツいバトル",
"selected": "火の嵐を 突き進むと、 交配の踊りを している 2匹の {{volcaronaName}} を 見つけます!$邪魔に 快く思わないで 襲いかかってきます!"
},
"2": {
"label": "避難してみる",
"tooltip": "(-) 気象状態に耐える",
"selected": "避難を 探してみる 間に 気象状態が 重大な 被害を もたらします! $ 手持ちポケモンは 最大HPの 20 ダメージを 受けます",
"target_burned": "その上、 {{burnedPokemon}} も やけど状態 になりました!"
},
"3": {
"label": "ほのおポケモンが助ける",
"tooltip": "(+) 状態が治まる\n(+) もくたんをもらう",
"disabled_tooltip": "選ぶには 2匹の ほのおタイプの ポケモンが 必要",
"selected": "{{option3PrimaryName}}と {{option3SecondaryName}}が 交配の踊りを している 2匹の {{volcaronaName}}まで 導きます!$おかげさまで 落ち着かせる ことができ\n{{volcaronaName}}が 問題なく 立ち去ります。"
}
},
"found_charcoal": "気象状態が 治ってから \n{{leadPokemon}}が 地面で 何かを 見つけます。$@s{item_fanfare}{{leadPokemon}}が もくたんを 手に入れた!"
}

View File

@ -1 +1,25 @@
{}
{
"intro": "あの ポケモンの 近くで 地面に何かが きらきらと 輝いています!",
"title": "闘争・逃走",
"description": "アイテムを 守っている 強いポケモンが いる ようです。バトルは 直接的な 取り方ですが、 強そうです。 適切な 手持ちポケモンが いれば、 アイテムを盗まれる かもしれません。",
"query": "どうしますか?",
"option": {
"1": {
"label": "バトルする",
"tooltip": "(-) 勝負がキツい\n(+) 新しいアイテム",
"selected": "恐れないで 強いポケモンに 近寄ります。",
"stat_boost": "{{enemyPokemon}}は 潜在的な 強さで 能力を 一つ 上げた!"
},
"2": {
"label": "アイテムを盗む",
"disabled_tooltip": "選ぶには 手持ちポケモンが 特定な 技を 覚えている必要 が ある",
"tooltip": "(+) {{option2PrimaryName}}が  {{option2PrimaryMove}}を使う",
"selected": ".@d{32}.@d{32}.@d{32}${{option2PrimaryName}}が 手を貸し  {{option2PrimaryMove}}を 使います!$アイテムを 奪いました!"
},
"3": {
"label": "立ち去る",
"tooltip": "(-) ご褒美なし",
"selected": "強いポケモンと アイテムを 置いて 冒険を 進みます。"
}
}
}

View File

@ -1 +1,30 @@
{}
{
"intro_dialogue": "さあ さあ、 皆さま! 新しい {{wobbuffetName}}叩き で運試しを しましょう!",
"speaker": "興行主",
"title": "叩きゲーム? ソーナンス!",
"description": "移動遊園地の ご褒美ゲーム です! @[TOOLTIP_TITLE]{3ターン以内で} {{wobbuffetName}}を @[TOOLTIP_TITLE]{倒せずに} @[TOOLTIP_TITLE]{1 HP}に できるだけ 近づけて、 そして {{wobbuffetName}}が 大きい カウンターで ベルを 鳴らします。\n気をつけて {{wobbuffetName}}を 倒すと 復活費を 払わなければ なりません!",
"query": "試しますか?",
"option": {
"1": {
"label": "ゲームを試す",
"tooltip": "(-) {{option1Money, money}}を払う\n(+) {{wobbuffetName}}叩き を 試して",
"selected": "運試し、 しましょう!"
},
"2": {
"label": "立ち去る",
"tooltip": "(-) ご褒美なし",
"selected": "僅かな 後悔の 気持ちで\n冒険を 進みます。"
}
},
"ko": "ダメ! {{wobbuffetName}}は 倒れました!$ゲームを 負けて\n復活費を 払わなくちゃ いけません……",
"charging_continue": "{{wobbuffetName}}は カウンターの 力を たくわえて続けます!",
"turn_remaining_3": "残り 3ターン!",
"turn_remaining_2": "残り 2ターン!",
"turn_remaining_1": "残り 1ターン!",
"end_game": "時間です!${{wobbuffetName}}は カウンターを 繰り出すと@d{16}.@d{16}.@d{16}.",
"best_result": "{{wobbuffetName}}は ボタンを ぶん殴り、\nベルが 上部から 外れました$大賞を 勝ちました!",
"great_result": "{{wobbuffetName}}は ボタンを 叩き、 ベルを 鳴らす 寸前でした!$おしい!\n位賞を 勝ちました",
"good_result": "{{wobbuffetName}}は ボタンを 叩き、 スケールの 真ん中まで 上がりました!$3位賞を 勝ちました!",
"bad_result": "{{wobbuffetName}}は 微妙に ボタンを 触ります。 何も 起こりません。$やだ!\n何も 勝ちませんでした",
"outro": "楽しいゲーム でした!"
}

View File

@ -1 +1,32 @@
{}
{
"intro": "グローバルトレードシステムの インターフェイスです!",
"title": "",
"description": "GTS: この新技術の 軌跡で 世界中の 誰とでも 接続して ポケモンを 通信交換できます。 今日の 交換に 幸運が 訪れるでしょうか?",
"query": "どうします?",
"option": {
"1": {
"label": "交換申出を確認",
"tooltip": "(+) 手持ちポケモン 1匹に 対して 交換申出を 選ぶ",
"trade_options_prompt": "交換で もらう ポケモンを 選んでください"
},
"2": {
"label": "ミラクル交換",
"tooltip": "(+) ポケモンを 1匹 GTSに 送って ランダムに 特別な ポケモンを 1匹 もらう"
},
"3": {
"label": "アイテム交換",
"trade_options_prompt": "送る アイテムを 選んでください",
"invalid_selection": "交換できる アイテムが ありません",
"tooltip": "(+) アイテムを 1つ GTSに 送って ランダムな 改良した アイテムを 1つ もらう"
},
"4": {
"label": "立ち去ら",
"tooltip": "(-) ご褒美なし",
"selected": "今日は 交換する 暇は ありません!\n進みましょう。"
}
},
"pokemon_trade_selected": "{{tradedPokemon}}は {{tradeTrainerName}}に 送られます。",
"pokemon_trade_goodbye": "さようなら {{tradedPokemon}}!",
"item_trade_selected": "{{chosenItem}}は {{tradeTrainerName}}に 送られます。$.@d{64}.@d{64}.@d{64}\n@s{level_up_fanfare}交換 完了!${{tradeTrainerName}}から {{itemName}}を もらいました!",
"trade_received": "@s{evolution_fanfare}{{received}}を {{tradeTrainerName}}から もらいました!"
}

View File

@ -1 +1,28 @@
{}
{
"intro": "海を あてもなく さまよっていて 結局 どこにも たどり着けない ようです……",
"title": "海で迷子",
"description": "海は 荒れていて 元気が 尽きています。\nこれは マズい…… この状況から 抜け出す 方法は ないでしょうか?",
"query": "どうしますか?",
"option": {
"1": {
"label": "{{option1PrimaryName}}が 役に立つ かも",
"label_disabled": "{{option1RequiredMove}}できない",
"tooltip": "(+) {{option1PrimaryName}} に 助けられる\n(+) {{option1PrimaryName}} が 経験値を 得る",
"tooltip_disabled": "{{option1RequiredMove}} できる ポケモンが いない",
"selected": "{{option1PrimaryName}}が 先に 泳いで 導いてくれます。${{option1PrimaryName}}は この困難な 時期に さらに 強くなった ようです!"
},
"2": {
"label": "{{option2PrimaryName}}が 役に立つ かも",
"label_disabled": "{{option2RequiredMove}}ことが できない",
"tooltip": "(+) {{option2PrimaryName}}に 助けられる\n(+) {{option2PrimaryName}}が 経験値を 得る",
"tooltip_disabled": "{{option2RequiredMove}}ことが できる ポケモンが いない",
"selected": "{{option2PrimaryName}}が 船の 前を 飛んで 正しい 航路に 戻します。${{option2PrimaryName}}は この困難な 時期に さらに 強くなった ようです!"
},
"3": {
"label": "あてもなくさまよう",
"tooltip": "(-) 手持ちポケモン 全員が HP {{damagePercentage}}% 失う",
"selected": "船で 漂いていて 方向なく 操縦を 続け ついに 覚えている 目印を 見つけます。$手持ちポケモンは この試練の せいで 疲れ果てています……"
}
},
"outro": "正しい 航路に 戻りました。"
}

View File

@ -1 +1,22 @@
{}
{
"intro": "謎の 挑戦者が 現れました!",
"title": "謎の挑戦者",
"description": "挑戦者を 倒せば 印象付けて 恩恵を 受けられる かもしれません。 しかし、 強そうな 相手が いて キツい チャレンジに なります。",
"query": "誰とバトルしますか?",
"option": {
"1": {
"label": "賢く思慮深い相手",
"tooltip": "(-) 勝負が標準\n(+) 技アイテムのご褒美"
},
"2": {
"label": "強力な相手",
"tooltip": "(-) 勝負がキツい\n(+) 良いご褒美"
},
"3": {
"label": "一番強大な相手",
"tooltip": "(-) 勝負が残酷\n(+) すごいご褒美"
},
"selected": "トレーナーは 踏み出します……"
},
"outro": "謎の 挑戦者は 倒れました!"
}

View File

@ -1 +1,23 @@
{}
{
"intro": "あれは……@d{32} 宝箱?",
"title": "謎の宝箱",
"description": "美しく 飾られた 宝箱が 地面に あります。 中には 何か 良いものが あるはず…… でしょう?",
"query": "開けますか?",
"option": {
"1": {
"label": "開ける",
"tooltip": "@[SUMMARY_BLUE]{({{trapPercent}}%) 何かヒドい事}\n@[SUMMARY_GREEN]{({{commonPercent}}%) まあいいご褒美}\n@[SUMMARY_GREEN]{({{ultraPercent}}%) 良いご褒美}\n@[SUMMARY_GREEN]{({{roguePercent}}%) すごいご褒美}\n@[SUMMARY_GREEN]{({{masterPercent}}%) 素晴らしいご褒美}",
"selected": "宝箱を 開けると 見つけるのは……",
"normal": "普通の 道具や アイテム だけです…… ",
"good": "結構 良い道具や アイテム です。",
"great": "すごい 道具や アイテム ですね!",
"amazing": "わあ! 何と 素晴らしい アイテム!",
"bad": "ああ、 だめだ!@d{32}\n宝箱は 実に {{gimmighoulName}}の 変装でした!${{pokeName}}は守ろうとして 飛び込んで 来ますが、\nその結果 倒れてしまいます"
},
"2": {
"label": "危なそうで立ち去る",
"tooltip": "(-) ご褒美なし",
"selected": "僅かな 後悔の 気持ちで\nさっさと 先を 進みます。"
}
}
}

View File

@ -1 +1,31 @@
{}
{
"intro": "忙しそうな 作業員に 呼び止められます。",
"speaker": "作業員",
"intro_dialogue": "たくさんの 有能な ポケモンを 持っている ようですね!$ バイトを 受け取って 手伝ってくれる なら 会社は 支払いますよ!",
"title": "バリバリバイト",
"description": "やらなければ ならない 仕事が たくさん あります。 手持ちポケモンが 仕事に どれだけ 適しているかに よって 稼げる お金は 増えたり 減ったり する ようです。",
"query": "どの仕事を選びますか?",
"invalid_selection": "ポケモンは 十分に 元気 でなければ ならない",
"option": {
"1": {
"label": "配達員",
"tooltip": "(-) ポケモンが 素早さを 使う\n(+) @[MONEY]{Money}を 稼ぐ",
"selected": "Your {{selectedPokemon}} works a shift delivering orders to customers."
},
"2": {
"label": "倉庫作業員",
"tooltip": "(-) ポケモンが 強さと 持久力を 使う\n(+) @[MONEY]{Money}を稼ぐ",
"selected": "{{selectedPokemon}}は 倉庫内で アイテムを 移動する シフトで 働きました。"
},
"3": {
"label": "店員",
"tooltip": "(-) {{option3PrimaryName}}は {{option3PrimaryMove}}を 使う\n(+) @[MONEY]{Money}を稼ぐ",
"disabled_tooltip": "この仕事を 選ぶには 特定な 技が 必要",
"selected": "一日中に {{option3PrimaryName}}は {{option3PrimaryMove}}を 使って 顧客を 引きつけます!"
}
},
"job_complete_good": "助けてくれて ありがとう ございました!\n{{selectedPokemon}}は すごく 役に 立ちましたよ!$今日の 給料、 どうぞ!",
"job_complete_bad": "{{selectedPokemon}} が ちょっと 手伝ってくれました ね!$今日の 給料、 どうぞ!",
"pokemon_tired": "{{selectedPokemon}}は 疲れ果てました!\n 技の PPが 全て 2まで 減りました",
"outro": "また いつか 手伝いに来て くださいね!"
}

View File

@ -1 +1,46 @@
{}
{
"intro": "サファリゾーン です!",
"title": "サファリゾーン",
"description": "ここには 様々な 珍しい 特別な ポケモンが います!\n入場すれば @[TOOLTIP_TITLE]{{{numEncounters}}回の遭遇} という 制限時間で 野生ポケモンを 捕まえることが できます。\n\n注意 野生ポケモンは 捕まえる前に 逃げてしまう 可能性も あります",
"query": "入場しますか?",
"option": {
"1": {
"label": "入場する",
"tooltip": "(-) {{option1Money, money}}を払う\n@[SUMMARY_GREEN]{(?) サファリゾーン}",
"selected": "運試し しましょう!"
},
"2": {
"label": "立ち去る",
"tooltip": "(-) ご褒美なし",
"selected": "僅かな 後悔の 気持ちで\nさっさと 先を 進みます。"
}
},
"safari": {
"1": {
"label": "ボールを投げる",
"tooltip": "(+) モンスターボールを投げる",
"selected": "モンスターボールを 投げた!"
},
"2": {
"label": "エサを投げる",
"tooltip": "(+) 捕捉率が上がる\n(-) 逃走率が上がる可能性",
"selected": "エサを 投げた!"
},
"3": {
"label": "どろを投げる",
"tooltip": "(+) 逃走率が下がる\n(-) 捕捉率が下がる可能性",
"selected": "どろを 投げた!"
},
"4": {
"label": "逃げる",
"tooltip": "(?) ポケモンから逃げる"
},
"watching": "{{pokemonName}}は 様子を うかがっている!",
"eating": "{{pokemonName}}は エサを たべている!!",
"busy_eating": "{{pokemonName}}は エサを 食べるのに 夢中だ!",
"angry": "{{pokemonName}}は 怒っている!",
"beside_itself_angry": "{{pokemonName}}は 怒りで 我を 忘れている!",
"remaining_count": "残る ポケモン: {{remainingCount}}匹!"
},
"outro": "楽しい 小旅行でした!"
}

View File

@ -1 +1,27 @@
{}
{
"intro": "黒い コートを 着た 男が 近づいてくる。",
"speaker": "怪しげな営業マン",
"intro_dialogue": ".@d{16}.@d{16}.@d{16}$金が あれば 商品は 準備してるぞ。$まずは ポケモンが 耐えられるかどうか 確認せよ。",
"title": "栄養(?)士",
"description": "営業マンは コートを 開けて えいようドリンクを 表します。 提示している 価格は すごく (信じられない ほど すごく) お得 ですね……\nパッケージプランを  提案します。",
"query": "どのプランを選びますか?",
"invalid_selection": "ポケモンは 十分に 元気 でなければ ならない.",
"option": {
"1": {
"label": "安いプラン",
"tooltip": "(-) {{option1Money, money}}を払う\n(-) 薬害?\n(+) 選ぶ ポケモンが えいようドリンクを 2つ 飲む"
},
"2": {
"label": "高いプラン",
"tooltip": "(-) {{option2Money, money}}を払う\n(+) 選ぶ ポケモンが えいようドリンクを 2つ 飲む"
},
"3": {
"label": "抜け出す",
"tooltip": "(-) ご褒美なし",
"selected": "へえ、 お前 根性なしだとは 思わなかったよ。"
},
"selected": "営業マンは 2本の ドリンクを 手渡し すぐに 姿を消します。${{selectedPokemon}}の {{boost1}} と {{boost2}} は 上がった!"
},
"cheap_side_effects": "しかし! ドリンクは 薬害が ありました!${{selectedPokemon}}は ダメージを 受けて\n性格は {{newNature}}に 変化しちゃいました!",
"no_bad_effects": "薬害が なかった ようです!"
}

View File

@ -1 +1,25 @@
{}
{
"intro": "狭い 通路を 歩いていて 道を ふさいでいる そびえ立つ影が 見えます。$近づいていくと {{snorlaxName}}が 安らかに 眠っています。\n回避する 方法は ないようです。",
"title": "ぐうぐう {{snorlaxName}}",
"description": "攻撃して 動かそうとする ことが できます。 もしくは、 単に 目を覚ますのを 待つ ことも できますが、 それは どれくらい 時間が かかるでしょうか……",
"query": "どうしますか?",
"option": {
"1": {
"label": "バトルする",
"tooltip": "(-) 眠る{{snorlaxName}}と勝負\n(+) 特別なご褒美",
"selected": "恐れないで ポケモンに 近寄ります!"
},
"2": {
"label": "動くのを待つWait for It to Move",
"tooltip": "(-) 長い間に待つ\n(+) 手持ちが回復",
"selected": ".@d{32}.@d{32}.@d{32}$少しの 間に 待ちますが、 {{snorlaxName}}の あくびは 手持ちポケモンを 眠くします……",
"rest_result": "みんなが 目覚めると、 {{snorlaxName}}の姿が 消えました……\nしかし、 ポケモン 全員が 回復しています"
},
"3": {
"label": "アイテムを盗む",
"tooltip": "(+) {{option3PrimaryName}}は {{option3PrimaryMove}}を 使う\n(+) 特別なご褒美",
"disabled_tooltip": "選ぶには 特定な 技が 必要",
"selected": "{{option3PrimaryName}は {{option3PrimaryMove}}を 使った!$@s{item_fanfare} 眠っている {{snorlaxName}}の たべのこしを\n盗んで さっさと 逃げます"
}
}
}

View File

@ -1 +1,27 @@
{}
{
"intro": "謎の 機械は うるさく ガーガーって 音が しています……",
"title": "ハイテレポーテンション",
"description": "機械には 看板が 付いてる:\n「使うには お金を 入れて カプセルに 入る」\n\nどこかに テレポートできる かもしれません……",
"query": "どうしますか?",
"option": {
"1": {
"label": "お金を入れて",
"tooltip": "(-) {{price, money}}を払う\n(?) 新しいバイオームにテレポート",
"selected": "お金を 入れると カプセルが 開きます。\n中に 入ると……"
},
"2": {
"label": "ポケモンが役に立つ",
"tooltip": "(-) {{option2PrimaryName}}が役に立つ\n(+) {{option2PrimaryName}}が 経験値を 得る\n(?) 新しいバイオームにテレポート",
"disabled_tooltip": "選ぶには はがねタイプや でんきタイプの ポケモンが 必要",
"selected": "{{option2PrimaryName}}の タイプの お陰で 機会の ペイウォールを 突き通せます!$カプセルが 開いてから 中に 入ります……"
},
"3": {
"label": "機会を調べる",
"tooltip": "(-) ポケモン勝負",
"selected": "機会の ピカピカする 光 や\nガーガーって 音に 引き込まれます…… $気づかず 野生ポケモンに 待ち伏せられます!"
}
},
"transport": "機会は 激しく 揺れ\n変な 音を し出します$突然に 揺れも 音も 全然 終わって 静かに なります。",
"attacked": "カプセルを 出ると 全く 新しい 地域……\nの ポケモンを 脅かします $野生ポケモンが 襲いかかってきます!",
"boss_enraged": "{{enemyPokemon}}は 怒り出す!"
}

View File

@ -1 +1,31 @@
{}
{
"intro": "タマゴを たくさん 運んでいる トレーナー です!",
"intro_dialogue": "チーッス トレーナーちゃん!$手持ちポケモンの 1匹、 なんか 落ち込んでる みたいね……$あたしと 元気が出る バトル しない?",
"title": "ブリーダー名人",
"description": "@[TOOLTIP_TITLE]{1匹のポケモン しか 使えない} バトルに 挑まれました。 たぶん キツく なりますが、 きっと 選んだ ポケモンと よっぽど 仲良く なれます!\n勝ったら ブリーダー名人が 数個の @[TOOLTIP_TITLE]{ポケモンタマゴ}を くれます。",
"query": "どのポケモンとバトルしますか?",
"cleffa_1_nickname": "エース",
"cleffa_2_nickname": "トッピクシー",
"cleffa_3_nickname": "華麗なる{{speciesName}}",
"option": {
"1": {
"label": "{{pokemon1Name}}",
"tooltip_base": "(-) 勝負がキツい\n(+) {{pokemon1Name}}と仲良くなる"
},
"2": {
"label": "{{pokemon2Name}}",
"tooltip_base": "(-) 勝負がキツい\n(+) {{pokemon2Name}}と仲良くなる"
},
"3": {
"label": "{{pokemon3Name}}",
"tooltip_base": "(-) 勝負がキツい\n(+) {{pokemon3Name}}と仲良くなる"
},
"selected": "レッツゴー!"
},
"outro": "ねえ、 {{chosenPokemon}} すごく 嬉しくなったわ!$そして、 これらも どうぞ!",
"outro_failed": "なんか ガッカリ ね……$手持ち ポケモンの 信用を 得るまで\nまだまだ みたいんだわ",
"gained_eggs": "@s{item_fanfare}{{numEggs}}を もらいました!",
"eggs_tooltip": "\n(+) @[TOOLTIP_TITLE]{{{eggs}}}を得る",
"numEggs_one": "{{count}} {{rarity}} タマゴ",
"numEggs_other": "{{count}} {{rarity}} タマゴ"
}

View File

@ -1 +1,23 @@
{}
{
"intro": "ご機嫌な おじいさんは 近寄ります!",
"speaker": "ジェントルマン",
"intro_dialogue": "ハローゼアー! どこにも 見つけない ディールが あります!",
"title": "ポケモンのセールスマン",
"description": "「この {{purchasePokemon}}は とても ユニークで 種類の 中で @[TOOLTIP_TITLE]{滅多に 見られない 特性が あります} {{price, money}}だけで この アメイジングな {{purchasePokemon}}を もらいますよ!」\n\n 「いかがですか」",
"description_shiny": "「この {{purchasePokemon}}は とても ユニークで 種類の 中で @[TOOLTIP_TITLE]{滅多に 見られない カラーが あります} {{price, money}}だけで この アメイジングな {{purchasePokemon}}を もらいますよ!」\n\n 「いかがですか」",
"query": "どうします?",
"option": {
"1": {
"label": "受け取る",
"tooltip": "(-) {{price, money}}を払う\n(+) 隠れ特性の ある {{purchasePokemon}}を もらう",
"tooltip_shiny": "(-) {{price, money}}を払う\n(+) 色違いの {{purchasePokemon}}を もらう",
"selected_message": "とんでもない 価格を 払って {{purchasePokemon}}を 買いました。",
"selected_dialogue": "エクセレント・チョイス!$あなたは ビジネス上手 なんでしょうね。$あ、そうでね……@d{64} 返品が 受け入れない。 分かった?"
},
"2": {
"label": "断る",
"tooltip": "(-) ご褒美なし",
"selected": "ノー?@d{32} ノーって言ってる!?$これは 恩恵ですよ! チッ……"
}
}
}

View File

@ -1 +1,21 @@
{}
{
"intro": "どっしりとした {{shuckleName}}です。\nその隣には… ジュースのたくわえ ようです……",
"title": "残酷に濃く",
"description": "道を 塞ぐ {{shuckleName}}は 信じられないほど 強そう です。 そして、 その隣に ある ジュースは 何らかの 力を 発しています。\n\n {{shuckleName}}は 触手を 伸ばしていて 何かを したがります……",
"query": "どうします?",
"option": {
"1": {
"label": "{{shuckleName}}に近寄る",
"tooltip": "(?) 何か ヒドいこと や スゴいことが 起こる",
"selected": "突然に 気を 失います。",
"selected_2": "@f{150}目覚めると、 {{shuckleName}}は 消えて\nジュースは 飲み干されている ようです。${{highBstPokemon1}}と {{highBstPokemon2}}は\nヒドい 無気力に 襲われます$基本能力は {{reductionValue}}で 減っています!$残りの ポケモンは スゴい 活力を 感じます!\n基本能力は {{increaseValue}}で 上がっています!"
},
"2": {
"label": "{{shuckleName}}とバトルする",
"tooltip": "(-) 勝負がキツい\n(+) 特別なご褒美",
"selected": "怒り出した {{shuckleName}}は ジュースを 少し 飲んで 襲いかかる!",
"stat_boost": "{{shuckleName}}の ジュースは 能力を 上げた!"
}
},
"outro": "なんとも 奇妙な 展開ですね……"
}

View File

@ -1 +1,22 @@
{}
{
"intro": "家の 外に 立っている 家族 です…",
"speaker": "カチヌキファミリー",
"intro_dialogue": "カチヌキファミリーです!$どうだ? ここは ひとつ わたしたち\n家族と ポケモン勝負を してみないか",
"title": "カチヌキファミリーの挑戦",
"description": "カチヌキファミリーは @[TOOLTIP_TITLE]{トレーナー5人の} 家族で、 勝負をしたい です! 連続で 全員に 勝つと、 特賞が もらえます。 最後まで 耐えられますか?",
"query": "どうしますか?",
"option": {
"1": {
"label": "挑戦を受け取る",
"tooltip": "(-) 5人との勝負が残酷\n(+) 特別なアイテムのご褒美",
"selected": "挑戦を 始めましょう!"
},
"2": {
"label": "挑戦を断る",
"tooltip": "(+) 手持ちポケモンが全回復\n(+) ふかしぎなアメをもらう",
"selected": "残念ですね。 でもよ、 手持ちポケモンは 疲れている ようで、 ここで ちょっと 休みませんか?"
}
},
"victory": "挑戦に 勝って おめでとうございます!$まずは、このクーポンを どうぞ!",
"victory_2": "また、 この家族は トレーニング中に ポケモンを より効果的に 強くする ために このきょうせいギプスを 使います。$私たち全員に 勝ったから 必要ないかもしれませんが とにかく 受け取って いただければ 嬉しいです!"
}

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