Compare commits

...

19 Commits

Author SHA1 Message Date
Jannik Tappert 1022c3360a
Apply suggestions from code review 2024-09-19 09:23:14 +02:00
Jannik Tappert df432156d5
Update src/locales/de/pokemon-form.json 2024-09-19 09:22:23 +02:00
Jannik Tappert 867f769b80
Apply suggestions from code review 2024-09-19 09:19:36 +02:00
Jannik Tappert 390e8e4c16
Update src/locales/de/pokemon-form.json 2024-09-19 09:18:51 +02:00
Jannik Tappert 286aead7da
Update src/locales/de/pokemon-form.json 2024-09-19 09:18:30 +02:00
Jannik Tappert 03d0ccf897
Update src/locales/de/pokemon-form.json 2024-09-19 09:18:05 +02:00
Jannik Tappert 0968c31e04
Update src/locales/de/pokemon-form.json 2024-09-19 09:17:39 +02:00
Jannik Tappert f13606c9f3
Update src/locales/de/pokemon-form.json 2024-09-19 09:16:32 +02:00
Jannik Tappert c736400e91
Update src/locales/de/pokemon-form.json 2024-09-19 09:15:48 +02:00
Jannik Tappert eacfaf5a28
Update src/locales/de/pokemon-form.json 2024-09-19 09:15:17 +02:00
Jannik Tappert c05c5aa02c
Update src/locales/de/pokemon-form.json 2024-09-19 09:14:48 +02:00
Jannik Tappert 2e2fb61b50
Merge pull request #16 from EnochG1/localization/form-name/make-english-same-as-main
[Form Localization] Translate KO & make EN same as main
2024-09-19 08:36:25 +02:00
EnochG1 8c3b26824d Korean translation, refactor code 2024-09-19 13:28:10 +09:00
EnochG1 dd29eae9e9 add missed key, add korean translation (partial) 2024-09-19 10:40:57 +09:00
EnochG1 61e5089843 Add missed keys, make empty-key displayed, change EN to original formName 2024-09-19 10:32:30 +09:00
Enoch c839411beb
Merge branch 'beta' into formChangeLocale 2024-09-19 09:21:46 +09:00
MokaStitcher 51bb80cb66
[Bug][UI] Fix scrolling UIs not resetting properly and add Scrollbars (#4312)
* [bug] fix scrollable elements not resetting properly

* [ui] add wrap around and scrolling bar to the achievements menu

* [ui] add scrollbar to the settings
2024-09-18 19:53:30 -04:00
innerthunder 605ae9e1c3
[Move] Improved damage forecasting for Shell Side Arm (#4310) 2024-09-18 19:03:01 -04:00
Madmadness65 81ea1296b3
[Miscellaneous] Add new Lake and RUins biome BGM by Lmz (#4319)
* Add new biome BGM by Firel

* Add new biome BGM by Lmz

* Update bgm-name.json
2024-09-18 19:00:06 -04:00
28 changed files with 854 additions and 361 deletions

View File

@ -56,7 +56,7 @@ Check out [Github Issues](https://github.com/pagefaultgames/pokerogue/issues) to
- Pokémon Legends: Arceus - Pokémon Legends: Arceus
- Pokémon Scarlet/Violet - Pokémon Scarlet/Violet
- Firel (Custom Ice Cave, Laboratory, Metropolis, Plains, Power Plant, Seabed, Space, and Volcano biome music) - Firel (Custom Ice Cave, Laboratory, Metropolis, Plains, Power Plant, Seabed, Space, and Volcano biome music)
- Lmz (Custom Jungle biome music) - Lmz (Custom Ancient Ruins, Jungle, and Lake biome music)
- Andr06 (Custom Slum and Sea biome music) - Andr06 (Custom Slum and Sea biome music)
### 🎵 Sound Effects ### 🎵 Sound Effects

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -3974,18 +3974,17 @@ export class StatusCategoryOnAllyAttr extends VariableMoveCategoryAttr {
export class ShellSideArmCategoryAttr extends VariableMoveCategoryAttr { export class ShellSideArmCategoryAttr extends VariableMoveCategoryAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
const category = (args[0] as Utils.NumberHolder); const category = (args[0] as Utils.NumberHolder);
const atkRatio = user.getEffectiveStat(Stat.ATK, target, move) / target.getEffectiveStat(Stat.DEF, user, move);
const specialRatio = user.getEffectiveStat(Stat.SPATK, target, move) / target.getEffectiveStat(Stat.SPDEF, user, move);
// Shell Side Arm is much more complicated than it looks, this is a partial implementation to try to achieve something similar to the games const predictedPhysDmg = target.getBaseDamage(user, move, MoveCategory.PHYSICAL, true, true);
if (atkRatio > specialRatio) { const predictedSpecDmg = target.getBaseDamage(user, move, MoveCategory.SPECIAL, true, true);
if (predictedPhysDmg > predictedSpecDmg) {
category.value = MoveCategory.PHYSICAL; category.value = MoveCategory.PHYSICAL;
return true; return true;
} else if (atkRatio === specialRatio && user.randSeedInt(2) === 0) { } else if (predictedPhysDmg === predictedSpecDmg && user.randSeedInt(2) === 0) {
category.value = MoveCategory.PHYSICAL; category.value = MoveCategory.PHYSICAL;
return true; return true;
} }
return false; return false;
} }
} }
@ -9106,7 +9105,7 @@ export function initMoves() {
new AttackMove(Moves.SHELL_SIDE_ARM, Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) new AttackMove(Moves.SHELL_SIDE_ARM, Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8)
.attr(ShellSideArmCategoryAttr) .attr(ShellSideArmCategoryAttr)
.attr(StatusEffectAttr, StatusEffect.POISON) .attr(StatusEffectAttr, StatusEffect.POISON)
.partial(), .partial(), // Physical version of the move does not make contact
new AttackMove(Moves.MISTY_EXPLOSION, Type.FAIRY, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) new AttackMove(Moves.MISTY_EXPLOSION, Type.FAIRY, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8)
.attr(SacrificialAttr) .attr(SacrificialAttr)
.target(MoveTarget.ALL_NEAR_OTHERS) .target(MoveTarget.ALL_NEAR_OTHERS)

View File

@ -762,7 +762,7 @@ export class Arena {
case Biome.BEACH: case Biome.BEACH:
return 3.462; return 3.462;
case Biome.LAKE: case Biome.LAKE:
return 5.350; return 7.215;
case Biome.SEABED: case Biome.SEABED:
return 2.600; return 2.600;
case Biome.MOUNTAIN: case Biome.MOUNTAIN:
@ -788,7 +788,7 @@ export class Arena {
case Biome.FACTORY: case Biome.FACTORY:
return 4.985; return 4.985;
case Biome.RUINS: case Biome.RUINS:
return 2.270; return 0.000;
case Biome.WASTELAND: case Biome.WASTELAND:
return 6.336; return 6.336;
case Biome.ABYSS: case Biome.ABYSS:

View File

@ -2322,11 +2322,61 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
return accuracyMultiplier.value / evasionMultiplier.value; return accuracyMultiplier.value / evasionMultiplier.value;
} }
/**
* Calculates the base damage of the given move against this Pokemon when attacked by the given source.
* Used during damage calculation and for Shell Side Arm's forecasting effect.
* @param source the attacking {@linkcode Pokemon}.
* @param move the {@linkcode Move} used in the attack.
* @param moveCategory the move's {@linkcode MoveCategory} after variable-category effects are applied.
* @param ignoreAbility if `true`, ignores this Pokemon's defensive ability effects (defaults to `false`).
* @param ignoreSourceAbility if `true`, ignore's the attacking Pokemon's ability effects (defaults to `false`).
* @param isCritical if `true`, calculates effective stats as if the hit were critical (defaults to `false`).
* @param simulated if `true`, suppresses changes to game state during calculation (defaults to `true`).
* @returns The move's base damage against this Pokemon when used by the source Pokemon.
*/
getBaseDamage(source: Pokemon, move: Move, moveCategory: MoveCategory, ignoreAbility: boolean = false, ignoreSourceAbility: boolean = false, isCritical: boolean = false, simulated: boolean = true): number {
const isPhysical = moveCategory === MoveCategory.PHYSICAL;
/** A base damage multiplier based on the source's level */
const levelMultiplier = (2 * source.level / 5 + 2);
/** The power of the move after power boosts from abilities, etc. have applied */
const power = move.calculateBattlePower(source, this, simulated);
/**
* The attacker's offensive stat for the given move's category.
* Critical hits cause negative stat stages to be ignored.
*/
const sourceAtk = new Utils.NumberHolder(source.getEffectiveStat(isPhysical ? Stat.ATK : Stat.SPATK, this, undefined, ignoreSourceAbility, ignoreAbility, isCritical, simulated));
applyMoveAttrs(VariableAtkAttr, source, this, move, sourceAtk);
/**
* This Pokemon's defensive stat for the given move's category.
* Critical hits cause positive stat stages to be ignored.
*/
const targetDef = new Utils.NumberHolder(this.getEffectiveStat(isPhysical ? Stat.DEF : Stat.SPDEF, source, move, ignoreAbility, ignoreSourceAbility, isCritical, simulated));
applyMoveAttrs(VariableDefAttr, source, this, move, targetDef);
/**
* The attack's base damage, as determined by the source's level, move power
* and Attack stat as well as this Pokemon's Defense stat
*/
const baseDamage = ((levelMultiplier * power * sourceAtk.value / targetDef.value) / 50) + 2;
/** Debug message for non-simulated calls (i.e. when damage is actually dealt) */
if (!simulated) {
console.log("base damage", baseDamage, move.name, power, sourceAtk.value, targetDef.value);
}
return baseDamage;
}
/** /**
* Calculates the damage of an attack made by another Pokemon against this Pokemon * Calculates the damage of an attack made by another Pokemon against this Pokemon
* @param source {@linkcode Pokemon} the attacking Pokemon * @param source {@linkcode Pokemon} the attacking Pokemon
* @param move {@linkcode Pokemon} the move used in the attack * @param move {@linkcode Pokemon} the move used in the attack
* @param ignoreAbility If `true`, ignores this Pokemon's defensive ability effects * @param ignoreAbility If `true`, ignores this Pokemon's defensive ability effects
* @param ignoreSourceAbility If `true`, ignores the attacking Pokemon's ability effects
* @param isCritical If `true`, calculates damage for a critical hit. * @param isCritical If `true`, calculates damage for a critical hit.
* @param simulated If `true`, suppresses changes to game state during the calculation. * @param simulated If `true`, suppresses changes to game state during the calculation.
* @returns a {@linkcode DamageCalculationResult} object with three fields: * @returns a {@linkcode DamageCalculationResult} object with three fields:
@ -2395,35 +2445,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
}; };
} }
// ----- BEGIN BASE DAMAGE MULTIPLIERS -----
/** A base damage multiplier based on the source's level */
const levelMultiplier = (2 * source.level / 5 + 2);
/** The power of the move after power boosts from abilities, etc. have applied */
const power = move.calculateBattlePower(source, this, simulated);
/**
* The attacker's offensive stat for the given move's category.
* Critical hits ignore negative stat stages.
*/
const sourceAtk = new Utils.NumberHolder(source.getEffectiveStat(isPhysical ? Stat.ATK : Stat.SPATK, this, undefined, ignoreSourceAbility, ignoreAbility, isCritical, simulated));
applyMoveAttrs(VariableAtkAttr, source, this, move, sourceAtk);
/**
* This Pokemon's defensive stat for the given move's category.
* Critical hits ignore positive stat stages.
*/
const targetDef = new Utils.NumberHolder(this.getEffectiveStat(isPhysical ? Stat.DEF : Stat.SPDEF, source, move, ignoreAbility, ignoreSourceAbility, isCritical, simulated));
applyMoveAttrs(VariableDefAttr, source, this, move, targetDef);
/** /**
* The attack's base damage, as determined by the source's level, move power * The attack's base damage, as determined by the source's level, move power
* and Attack stat as well as this Pokemon's Defense stat * and Attack stat as well as this Pokemon's Defense stat
*/ */
const baseDamage = ((levelMultiplier * power * sourceAtk.value / targetDef.value) / 50) + 2; const baseDamage = this.getBaseDamage(source, move, moveCategory, ignoreAbility, ignoreSourceAbility, isCritical, simulated);
// ------ END BASE DAMAGE MULTIPLIERS ------
/** 25% damage debuff on moves hitting more than one non-fainted target (regardless of immunities) */ /** 25% damage debuff on moves hitting more than one non-fainted target (regardless of immunities) */
const { targets, multiple } = getMoveTargets(source, move.id); const { targets, multiple } = getMoveTargets(source, move.id);
@ -2549,7 +2575,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
// debug message for when damage is applied (i.e. not simulated) // debug message for when damage is applied (i.e. not simulated)
if (!simulated) { if (!simulated) {
console.log("damage", damage.value, move.name, power, sourceAtk, targetDef); console.log("damage", damage.value, move.name);
} }
let hitResult: HitResult; let hitResult: HitResult;

View File

@ -1,4 +1,5 @@
{ {
"pikachu": "Normal",
"pikachuCosplay": "Cosplay", "pikachuCosplay": "Cosplay",
"pikachuCoolCosplay": "Rocker-Pikachu", "pikachuCoolCosplay": "Rocker-Pikachu",
"pikachuBeautyCosplay": "Damen-Pikachu", "pikachuBeautyCosplay": "Damen-Pikachu",
@ -6,7 +7,9 @@
"pikachuSmartCosplay": "Professoren-Pikachu", "pikachuSmartCosplay": "Professoren-Pikachu",
"pikachuToughCosplay": "Wrestler-Pikachu", "pikachuToughCosplay": "Wrestler-Pikachu",
"pikachuPartner": "Partner-Pikachu", "pikachuPartner": "Partner-Pikachu",
"eevee": "Normal",
"eeveePartner": "Partner-Evoli", "eeveePartner": "Partner-Evoli",
"pichu": "Normal",
"pichuSpiky": "Strubbelohr-Pichu", "pichuSpiky": "Strubbelohr-Pichu",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
@ -36,6 +39,7 @@
"unownZ": "Z", "unownZ": "Z",
"unownExclamation": "!", "unownExclamation": "!",
"unownQuestion": "?", "unownQuestion": "?",
"castform": "Normalform",
"castformSunny": "Sonnenform", "castformSunny": "Sonnenform",
"castformRainy": "Regenform", "castformRainy": "Regenform",
"castformSnowy": "Schneeform", "castformSnowy": "Schneeform",
@ -50,12 +54,15 @@
"cherubiSunshine": "Sonnenform", "cherubiSunshine": "Sonnenform",
"shellosEast": "Östliches Meer", "shellosEast": "Östliches Meer",
"shellosWest": "Westliches Meer", "shellosWest": "Westliches Meer",
"rotom": "Normalform",
"rotomHeat": "Hitze-Rotom", "rotomHeat": "Hitze-Rotom",
"rotomWash": "Wasch-Rotom", "rotomWash": "Wasch-Rotom",
"rotomFrost": "Frost-Rotom", "rotomFrost": "Frost-Rotom",
"rotomFan": "Wirbel-Rotom", "rotomFan": "Wirbel-Rotom",
"rotomMow": "Schneid-Rotom", "rotomMow": "Schneid-Rotom",
"dialga": "Normalform",
"dialgaOrigin": "Urform", "dialgaOrigin": "Urform",
"palkia": "Normalform",
"palkiaOrigin": "Urform", "palkiaOrigin": "Urform",
"giratinaAltered": "Wandelform", "giratinaAltered": "Wandelform",
"giratinaOrigin": "Urform", "giratinaOrigin": "Urform",
@ -64,6 +71,7 @@
"basculinRedStriped": "Rotlinige Form", "basculinRedStriped": "Rotlinige Form",
"basculinBlueStriped": "Blaulinige Form", "basculinBlueStriped": "Blaulinige Form",
"basculinWhiteStriped": "Weißlinige Form", "basculinWhiteStriped": "Weißlinige Form",
"darumaka": "Normalmodus",
"darumakaZen": "Trance-Modus", "darumakaZen": "Trance-Modus",
"deerlingSpring": "Frühlingsform", "deerlingSpring": "Frühlingsform",
"deerlingSummer": "Sommerform", "deerlingSummer": "Sommerform",
@ -75,17 +83,21 @@
"thundurusTherian": "Tiergeistform", "thundurusTherian": "Tiergeistform",
"landorusIncarnate": "Inkarnationsform", "landorusIncarnate": "Inkarnationsform",
"landorusTherian": "Tiergeistform", "landorusTherian": "Tiergeistform",
"kyurem": "Normal",
"kyuremBlack": "Schwarzes Kyurem", "kyuremBlack": "Schwarzes Kyurem",
"kyuremWhite": "Weißes Kyurem", "kyuremWhite": "Weißes Kyurem",
"keldeoOrdinary": "Standardform", "keldeoOrdinary": "Standardform",
"keldeoResolute": "Resolutform", "keldeoResolute": "Resolutform",
"meloettaAria": "Gesangsform", "meloettaAria": "Gesangsform",
"meloettaPirouette": "Tanzform", "meloettaPirouette": "Tanzform",
"genesect": "Normal",
"genesectShock": "Blitzmodul", "genesectShock": "Blitzmodul",
"genesectBurn": "Flammenmodul", "genesectBurn": "Flammenmodul",
"genesectChill": "Gefriermodul", "genesectChill": "Gefriermodul",
"genesectDouse": "Aquamodul", "genesectDouse": "Aquamodul",
"froakieBattleBond": "Ash-Form", "froakie": "Normalform",
"froakieBattleBond": "Freundschaftsakt",
"froakieAsh": "Ash-Form",
"scatterbugMeadow": "Blumenmeermuster", "scatterbugMeadow": "Blumenmeermuster",
"scatterbugIcySnow": "Frostmuster", "scatterbugIcySnow": "Frostmuster",
"scatterbugPolar": "Schneefeldmuster", "scatterbugPolar": "Schneefeldmuster",
@ -111,6 +123,7 @@
"flabebeOrange": "Orangeblütler", "flabebeOrange": "Orangeblütler",
"flabebeBlue": "Blaublütler", "flabebeBlue": "Blaublütler",
"flabebeWhite": "Weißblütler", "flabebeWhite": "Weißblütler",
"furfrou": "Zottelform",
"furfrouHeart": "Herzchenschnitt", "furfrouHeart": "Herzchenschnitt",
"furfrouStar": "Sternchenschnitt", "furfrouStar": "Sternchenschnitt",
"furfrouDiamond": "Diamantenschitt", "furfrouDiamond": "Diamantenschitt",
@ -124,6 +137,7 @@
"espurrFemale": "weiblich", "espurrFemale": "weiblich",
"honedgeShiled": "Schildform", "honedgeShiled": "Schildform",
"honedgeBlade": "Klingenform", "honedgeBlade": "Klingenform",
"pumpkaboo": "Größe M",
"pumpkabooSmall": "Größe S", "pumpkabooSmall": "Größe S",
"pumpkabooLarge": "Größe L", "pumpkabooLarge": "Größe L",
"pumpkabooSuper": "Größe XL", "pumpkabooSuper": "Größe XL",
@ -134,15 +148,18 @@
"zygarde50Pc": "50% Form Scharwandel", "zygarde50Pc": "50% Form Scharwandel",
"zygarde10Pc": "10% Form Scharwandel", "zygarde10Pc": "10% Form Scharwandel",
"zygardeComplete": "Optimum-Form", "zygardeComplete": "Optimum-Form",
"hoopa": "Gebanntes Hoopa",
"hoopaUnbound": "Entfesseltes Hoopa", "hoopaUnbound": "Entfesseltes Hoopa",
"oricorioBaile": "Flamenco-Stil", "oricorioBaile": "Flamenco-Stil",
"oricorioPompom": "Cheerleading-Stil", "oricorioPompom": "Cheerleading-Stil",
"oricorioPau": "Hula-Stil", "oricorioPau": "Hula-Stil",
"oricorioSensu": "Buyo-Stil", "oricorioSensu": "Buyo-Stil",
"rockruff": "Normalform",
"rockruffOwnTempo": "Gleichmut", "rockruffOwnTempo": "Gleichmut",
"rockruffMidday": "Tagform", "rockruffMidday": "Tagform",
"rockruffMidnight": "Nachtform", "rockruffMidnight": "Nachtform",
"rockruffMidnight": "Zwielichtform", "rockruffDusk": "Zwielichtform",
"wishiwashi": "Einzelform",
"wishiwashiSchool": "Schwarmform", "wishiwashiSchool": "Schwarmform",
"typeNullNormal": "Typ:Normal", "typeNullNormal": "Typ:Normal",
"typeNullFighting": "Typ:Kampf", "typeNullFighting": "Typ:Kampf",
@ -178,11 +195,19 @@
"miniorViolet": "Violetter Kern", "miniorViolet": "Violetter Kern",
"mimikyuDisguised": "Verkleidete Form", "mimikyuDisguised": "Verkleidete Form",
"mimikyuBusted": "Entlarvte Form", "mimikyuBusted": "Entlarvte Form",
"necrozma": "Normalform",
"necrozmaDuskMane": "Abendmähne", "necrozmaDuskMane": "Abendmähne",
"necrozmaDawnWings": "Morgenschwingen", "necrozmaDawnWings": "Morgenschwingen",
"necrozmaUltra": "Ultra-Necrozma", "necrozmaUltra": "Ultra-Necrozma",
"magearna": "Normalform",
"magearnaOriginal": "Originalfarbe", "magearnaOriginal": "Originalfarbe",
"marshadow": "Normalform",
"marshadowZenith": "Zenitform", "marshadowZenith": "Zenitform",
"cramorant": "Normalform",
"cramorantGulping": "Schlingform",
"cramorantGorging": "Stopfform",
"toxelAmped": "Hoch-Form",
"toxelLowkey": "Tief-Form",
"sinisteaPhony": "Fälschungsform", "sinisteaPhony": "Fälschungsform",
"sinisteaAntique": "Originalform", "sinisteaAntique": "Originalform",
"milceryVanillaCream": "Vanille-Creme", "milceryVanillaCream": "Vanille-Creme",
@ -194,6 +219,7 @@
"milceryRubySwirl": "Ruby-Mix", "milceryRubySwirl": "Ruby-Mix",
"milceryCaramelSwirl": "Karamell-Mix", "milceryCaramelSwirl": "Karamell-Mix",
"milceryRainbowSwirl": "Trio-Mix", "milceryRainbowSwirl": "Trio-Mix",
"eiscue": "Tiefkühlkopf",
"eiscueNoIce": "Wohlfühlkopf", "eiscueNoIce": "Wohlfühlkopf",
"indeedeeMale": "männlich", "indeedeeMale": "männlich",
"indeedeeFemale": "weiblich", "indeedeeFemale": "weiblich",
@ -205,7 +231,9 @@
"zamazentaCrowned": "König des Schildes", "zamazentaCrowned": "König des Schildes",
"kubfuSingleStrike": "Fokussierter Stil", "kubfuSingleStrike": "Fokussierter Stil",
"kubfuRapidStrike": "Fließender Stil", "kubfuRapidStrike": "Fließender Stil",
"zarude": "Normalform",
"zarudeDada": "Papa", "zarudeDada": "Papa",
"calyrex": "Normalform",
"calyrexIce": "Schimmelreiter", "calyrexIce": "Schimmelreiter",
"calyrexShadow": "Rappenreiter", "calyrexShadow": "Rappenreiter",
"basculinMale": "männlich", "basculinMale": "männlich",
@ -251,8 +279,10 @@
"ogerponHearthflameMaskTera": "Ofenmaske (Terakristallisiert)", "ogerponHearthflameMaskTera": "Ofenmaske (Terakristallisiert)",
"ogerponCornerstoneMask": "Fundamentmaske", "ogerponCornerstoneMask": "Fundamentmaske",
"ogerponCornerstoneMaskTera": "Fundamentmaske (Terakristallisiert)", "ogerponCornerstoneMaskTera": "Fundamentmaske (Terakristallisiert)",
"terpagos": "Normalform",
"terpagosTerastal": "Terakristall-Form", "terpagosTerastal": "Terakristall-Form",
"terpagosStellar": "Stellarform", "terpagosStellar": "Stellarform",
"galarDarumaka": "Normalmodus",
"galarDarumakaZen": "Trance-Modus", "galarDarumakaZen": "Trance-Modus",
"paldeaTaurosCombat": "Gefechtsvariante", "paldeaTaurosCombat": "Gefechtsvariante",
"paldeaTaurosBlaze": "Flammenvariante", "paldeaTaurosBlaze": "Flammenvariante",

View File

@ -112,13 +112,13 @@
"island": "PMD EoS Craggy Coast", "island": "PMD EoS Craggy Coast",
"jungle": "Lmz - Jungle", "jungle": "Lmz - Jungle",
"laboratory": "Firel - Laboratory", "laboratory": "Firel - Laboratory",
"lake": "PMD EoS Crystal Cave", "lake": "Lmz - Lake",
"meadow": "PMD EoS Sky Peak Forest", "meadow": "PMD EoS Sky Peak Forest",
"metropolis": "Firel - Metropolis", "metropolis": "Firel - Metropolis",
"mountain": "PMD EoS Mt. Horn", "mountain": "PMD EoS Mt. Horn",
"plains": "Firel - Route 888", "plains": "Firel - Route 888",
"power_plant": "Firel - The Klink", "power_plant": "Firel - The Klink",
"ruins": "PMD EoS Deep Sealed Ruin", "ruins": "Lmz - Ancient Ruins",
"sea": "Andr06 - Marine Mystique", "sea": "Andr06 - Marine Mystique",
"seabed": "Firel - Seabed", "seabed": "Firel - Seabed",
"slum": "Andr06 - Sneaky Snom", "slum": "Andr06 - Sneaky Snom",

View File

@ -1,4 +1,5 @@
{ {
"pikachu": "Normal",
"pikachuCosplay": "Cosplay", "pikachuCosplay": "Cosplay",
"pikachuCoolCosplay": "Cool Cosplay", "pikachuCoolCosplay": "Cool Cosplay",
"pikachuBeautyCosplay": "Beauty Cosplay", "pikachuBeautyCosplay": "Beauty Cosplay",
@ -6,8 +7,10 @@
"pikachuSmartCosplay": "Smart Cosplay", "pikachuSmartCosplay": "Smart Cosplay",
"pikachuToughCosplay": "Tough Cosplay", "pikachuToughCosplay": "Tough Cosplay",
"pikachuPartner": "Partner", "pikachuPartner": "Partner",
"eevee": "Normal",
"eeveePartner": "Partner", "eeveePartner": "Partner",
"pichuSpiky": "Spiky", "pichu": "Normal",
"pichuSpiky": "Spiky-Eared",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
"unownC": "C", "unownC": "C",
@ -36,113 +39,127 @@
"unownZ": "Z", "unownZ": "Z",
"unownExclamation": "!", "unownExclamation": "!",
"unownQuestion": "?", "unownQuestion": "?",
"castformSunny": "Sunny", "castform": "Normal Form",
"castformRainy": "Rainy", "castformSunny": "Sunny Form",
"castformSnowy": "Snowy", "castformRainy": "Rainy Form",
"deoxysNormal": "Normal", "castformSnowy": "Snowy Form",
"deoxysAttack": "Attack", "deoxysNormal": "Normal Forme",
"deoxysDefense": "Defense", "deoxysAttack": "Attack Forme",
"deoxysSpeed": "Speed", "deoxysDefense": "Defense Forme",
"burmyPlant": "Plant", "deoxysSpeed": "Speed Forme",
"burmySandy": "Sandy", "burmyPlant": "Plant Cloak",
"burmyTrash": "Trash", "burmySandy": "Sandy Cloak",
"cherubiOvercast": "Overcast", "burmyTrash": "Trash Cloak",
"cherubiSunshine": "Sunshine", "cherubiOvercast": "Overcast Form",
"shellosEast": "East", "cherubiSunshine": "Sunshine Form",
"shellosWest": "West", "shellosEast": "East Sea",
"shellosWest": "West Sea",
"rotom": "Normal",
"rotomHeat": "Heat", "rotomHeat": "Heat",
"rotomWash": "Wash", "rotomWash": "Wash",
"rotomFrost": "Frost", "rotomFrost": "Frost",
"rotomFan": "Fan", "rotomFan": "Fan",
"rotomMow": "Mow", "rotomMow": "Mow",
"dialgaOrigin": "Origin", "dialga": "Normal",
"palkiaOrigin": "Origin", "dialgaOrigin": "Origin Forme",
"giratinaAltered": "Altered", "palkia": "Normal",
"giratinaOrigin": "Origin", "palkiaOrigin": "Origin Forme",
"shayminLand": "Land", "giratinaAltered": "Altered Forme",
"shayminSky": "Sky", "giratinaOrigin": "Origin Forme",
"basculinRedStriped": "Red Striped", "shayminLand": "Land Forme",
"basculinBlueStriped": "Blue Striped", "shayminSky": "Sky Forme",
"basculinWhiteStriped": "White Striped", "basculinRedStriped": "Red-Striped Form",
"darumakaZen": "Zen", "basculinBlueStriped": "Blue-Striped Form",
"deerlingSpring": "Spring", "basculinWhiteStriped": "White-Striped Form",
"deerlingSummer": "Summer", "darumaka": "Standard Mode",
"deerlingAutumn": "Autumn", "darumakaZen": "Zen Mode",
"deerlingWinter": "Winter", "deerlingSpring": "Spring Form",
"tornadusIncarnate": "Incarnate", "deerlingSummer": "Summer Form",
"tornadusTherian": "Therian", "deerlingAutumn": "Autumn Form",
"thundurusIncarnate": "Incarnate", "deerlingWinter": "Winter Form",
"thundurusTherian": "Therian", "tornadusIncarnate": "Incarnate Forme",
"landorusIncarnate": "Incarnate", "tornadusTherian": "Therian Forme",
"landorusTherian": "Therian", "thundurusIncarnate": "Incarnate Forme",
"thundurusTherian": "Therian Forme",
"landorusIncarnate": "Incarnate Forme",
"landorusTherian": "Therian Forme",
"kyurem": "Normal",
"kyuremBlack": "Black", "kyuremBlack": "Black",
"kyuremWhite": "White", "kyuremWhite": "White",
"keldeoOrdinary": "Ordinary", "keldeoOrdinary": "Ordinary Form",
"keldeoResolute": "Resolute", "keldeoResolute": "Resolute",
"meloettaAria": "Aria", "meloettaAria": "Aria Forme",
"meloettaPirouette": "Pirouette", "meloettaPirouette": "Pirouette Forme",
"genesect": "Normal",
"genesectShock": "Shock Drive", "genesectShock": "Shock Drive",
"genesectBurn": "Burn Drive", "genesectBurn": "Burn Drive",
"genesectChill": "Chill Drive", "genesectChill": "Chill Drive",
"genesectDouse": "Douse Drive", "genesectDouse": "Douse Drive",
"froakie": "Normal",
"froakieBattleBond": "Battle Bond", "froakieBattleBond": "Battle Bond",
"scatterbugMeadow": "Meadow", "froakieAsh": "Ash",
"scatterbugIcySnow": "Icy Snow", "scatterbugMeadow": "Meadow Pattern",
"scatterbugPolar": "Polar", "scatterbugIcySnow": "Icy Snow Pattern",
"scatterbugTundra": "Tundra", "scatterbugPolar": "Polar Pattern",
"scatterbugContinental": "Continental", "scatterbugTundra": "Tundra Pattern",
"scatterbugGarden": "Garden", "scatterbugContinental": "Continental Pattern",
"scatterbugElegant": "Elegant", "scatterbugGarden": "Garden Pattern",
"scatterbugModern": "Modern", "scatterbugElegant": "Elegant Pattern",
"scatterbugMarine": "Marine", "scatterbugModern": "Modern Pattern",
"scatterbugArchipelago": "Archipelago", "scatterbugMarine": "Marine Pattern",
"scatterbugHighPlains": "High Plains", "scatterbugArchipelago": "Archipelago Pattern",
"scatterbugSandstorm": "Sandstorm", "scatterbugHighPlains": "High Plains Pattern",
"scatterbugRiver": "River", "scatterbugSandstorm": "Sandstorm Pattern",
"scatterbugMonsoon": "Monsoon", "scatterbugRiver": "River Pattern",
"scatterbugSavanna": "Savanna", "scatterbugMonsoon": "Monsoon Pattern",
"scatterbugSun": "Sun", "scatterbugSavanna": "Savanna Pattern",
"scatterbugOcean": "Ocean", "scatterbugSun": "Sun Pattern",
"scatterbugJungle": "Jungle", "scatterbugOcean": "Ocean Pattern",
"scatterbugFancy": "Fancy", "scatterbugJungle": "Jungle Pattern",
"scatterbugPokeBall": "Poké Ball", "scatterbugFancy": "Fancy Pattern",
"flabebeRed": "Red", "scatterbugPokeBall": "Poké Ball Pattern",
"flabebeYellow": "Yellow", "flabebeRed": "Red Flower",
"flabebeOrange": "Orange", "flabebeYellow": "Yellow Flower",
"flabebeBlue": "Blue", "flabebeOrange": "Orange Flower",
"flabebeWhite": "White", "flabebeBlue": "Blue Flower",
"furfrouHeart": "Heart", "flabebeWhite": "White Flower",
"furfrouStar": "Star", "furfrou": "Natural Form",
"furfrouDiamond": "Diamond", "furfrouHeart": "Heart Trim",
"furfrouDebutante": "Debutante", "furfrouStar": "Star Trim",
"furfrouMatron": "Matron", "furfrouDiamond": "Diamond Trim",
"furfrouDandy": "Dandy", "furfrouDebutante": "Debutante Trim",
"furfrouLaReine": "La Reine", "furfrouMatron": "Matron Trim",
"furfrouKabuki": "Kabuki", "furfrouDandy": "Dandy Trim",
"furfrouPharaoh": "Pharaoh", "furfrouLaReine": "La Reine Trim",
"furfrouKabuki": "Kabuki Trim",
"furfrouPharaoh": "Pharaoh Trim",
"espurrMale": "Male", "espurrMale": "Male",
"espurrFemale": "Female", "espurrFemale": "Female",
"honedgeShiled": "Shield", "honedgeShiled": "Shield Forme",
"honedgeBlade": "Blade", "honedgeBlade": "Blade Forme",
"pumpkabooSmall": "Small", "pumpkaboo": "Average Size",
"pumpkabooLarge": "Large", "pumpkabooSmall": "Small Size",
"pumpkabooSuper": "Super", "pumpkabooLarge": "Large Size",
"xerneasNeutral": "Neutral", "pumpkabooSuper": "Super Size",
"xerneasActive": "Active", "xerneasNeutral": "Neutral Mode",
"xerneasActive": "Active Mode",
"zygarde50": "50% Forme", "zygarde50": "50% Forme",
"zygarde10": "10% Forme", "zygarde10": "10% Forme",
"zygarde50Pc": "50% Forme Power Construct", "zygarde50Pc": "50% Forme Power Construct",
"zygarde10Pc": "10% Forme Power Construct", "zygarde10Pc": "10% Forme Power Construct",
"zygardeComplete": "Complete Forme", "zygardeComplete": "Complete Forme",
"hoopa": "Confined",
"hoopaUnbound": "Unbound", "hoopaUnbound": "Unbound",
"oricorioBaile": "Baile", "oricorioBaile": "Baile Style",
"oricorioPompom": "Pom-Pom", "oricorioPompom": "Pom-Pom Style",
"oricorioPau": "Pau", "oricorioPau": "Pau Style",
"oricorioSensu": "Sensu", "oricorioSensu": "Sensu Style",
"rockruff": "Normal",
"rockruffOwnTempo": "Own Tempo", "rockruffOwnTempo": "Own Tempo",
"rockruffMidday": "Midday", "rockruffMidday": "Midday Form",
"rockruffMidnight": "Midnight", "rockruffMidnight": "Midnight Form",
"rockruffMidnight": "Dusk", "rockruffDusk": "Dusk Form",
"wishiwashi": "Solo Form",
"wishiwashiSchool": "School", "wishiwashiSchool": "School",
"typeNullNormal": "Type: Normal", "typeNullNormal": "Type: Normal",
"typeNullFighting": "Type: Fighting", "typeNullFighting": "Type: Fighting",
@ -162,29 +179,37 @@
"typeNullDragon": "Type: Dragon", "typeNullDragon": "Type: Dragon",
"typeNullDark": "Type: Dark", "typeNullDark": "Type: Dark",
"typeNullFairy": "Type: Fairy", "typeNullFairy": "Type: Fairy",
"miniorRedMeteor": "Red Meteor", "miniorRedMeteor": "Red Meteor Form",
"miniorOrangeMeteor": "Orange Meteor", "miniorOrangeMeteor": "Orange Meteor Form",
"miniorYellowMeteor": "Yellow Meteor", "miniorYellowMeteor": "Yellow Meteor Form",
"miniorGreenMeteor": "Green Meteor", "miniorGreenMeteor": "Green Meteor Form",
"miniorBlueMeteor": "Blue Meteor", "miniorBlueMeteor": "Blue Meteor Form",
"miniorIndigoMeteor": "Indigo Meteor", "miniorIndigoMeteor": "Indigo Meteor Form",
"miniorVioletMeteor": "Violet Meteor", "miniorVioletMeteor": "Violet Meteor Form",
"miniorRed": "Red", "miniorRed": "Red Core Form",
"miniorOrange": "Orange", "miniorOrange": "Orange Core Form",
"miniorYellow": "Yellow", "miniorYellow": "Yellow Core Form",
"miniorGreen": "Green", "miniorGreen": "Green Core Form",
"miniorBlue": "Blue", "miniorBlue": "Blue Core Form",
"miniorIndigo": "Indigo", "miniorIndigo": "Indigo Core Form",
"miniorViolet": "Violet", "miniorViolet": "Violet Core Form",
"mimikyuDisguised": "Disguised", "mimikyuDisguised": "Disguised Form",
"mimikyuBusted": "Busted", "mimikyuBusted": "Busted Form",
"necrozma": "Normal",
"necrozmaDuskMane": "Dusk Mane", "necrozmaDuskMane": "Dusk Mane",
"necrozmaDawnWings": "Dawn Wings", "necrozmaDawnWings": "Dawn Wings",
"necrozmaUltra": "Ultra", "necrozmaUltra": "Ultra",
"magearna": "Normal",
"magearnaOriginal": "Original", "magearnaOriginal": "Original",
"marshadow": "Normal",
"marshadowZenith": "Zenith", "marshadowZenith": "Zenith",
"sinisteaPhony": "Phony", "cramorant": "Normal",
"sinisteaAntique": "Antique", "cramorantGulping": "Gulping Form",
"cramorantGorging": "Gorging Form",
"toxelAmped": "Amped Form",
"toxelLowkey": "Low-Key Form",
"sinisteaPhony": "Phony Form",
"sinisteaAntique": "Antique Form",
"milceryVanillaCream": "Vanilla Cream", "milceryVanillaCream": "Vanilla Cream",
"milceryRubyCream": "Ruby Cream", "milceryRubyCream": "Ruby Cream",
"milceryMatchaCream": "Matcha Cream", "milceryMatchaCream": "Matcha Cream",
@ -194,24 +219,27 @@
"milceryRubySwirl": "Ruby Swirl", "milceryRubySwirl": "Ruby Swirl",
"milceryCaramelSwirl": "Caramel Swirl", "milceryCaramelSwirl": "Caramel Swirl",
"milceryRainbowSwirl": "Rainbow Swirl", "milceryRainbowSwirl": "Rainbow Swirl",
"eiscue": "Ice Face",
"eiscueNoIce": "No Ice", "eiscueNoIce": "No Ice",
"indeedeeMale": "Male", "indeedeeMale": "Male",
"indeedeeFemale": "Female", "indeedeeFemale": "Female",
"morpekoFullBelly": "Full Belly", "morpekoFullBelly": "Full Belly Mode",
"morpekoHangry": "Hangry", "morpekoHangry": "Hangry Mode",
"zacianHeroOfManyBattles": "Hero Of Many Battles", "zacianHeroOfManyBattles": "Hero Of Many Battles",
"zacianCrowned": "Crowned", "zacianCrowned": "Crowned",
"zamazentaHeroOfManyBattles": "Hero Of Many Battles", "zamazentaHeroOfManyBattles": "Hero Of Many Battles",
"zamazentaCrowned": "Crowned", "zamazentaCrowned": "Crowned",
"kubfuSingleStrike": "Single Strike", "kubfuSingleStrike": "Single Strike Style",
"kubfuRapidStrike": "Rapid Strike", "kubfuRapidStrike": "Rapid Strike Style",
"zarude": "Normal",
"zarudeDada": "Dada", "zarudeDada": "Dada",
"calyrex": "Normal",
"calyrexIce": "Ice Rider", "calyrexIce": "Ice Rider",
"calyrexShadow": "Shadow Rider", "calyrexShadow": "Shadow Rider",
"basculinMale": "Male", "basculinMale": "Male",
"basculinFemale": "Female", "basculinFemale": "Female",
"enamorusIncarnate": "Incarnate", "enamorusIncarnate": "Incarnate Forme",
"enamorusTherian": "Therian", "enamorusTherian": "Therian Forme",
"lechonkMale": "Male", "lechonkMale": "Male",
"lechonkFemale": "Female", "lechonkFemale": "Female",
"tandemausFour": "Family of Four", "tandemausFour": "Family of Four",
@ -220,29 +248,29 @@
"squawkabillyBluePlumage": "Blue Plumage", "squawkabillyBluePlumage": "Blue Plumage",
"squawkabillyYellowPlumage": "Yellow Plumage", "squawkabillyYellowPlumage": "Yellow Plumage",
"squawkabillyWhitePlumage": "White Plumage", "squawkabillyWhitePlumage": "White Plumage",
"finizenZero": "Zero", "finizenZero": "Zero Form",
"finizenHero": "Hero", "finizenHero": "Hero Form",
"tatsugiriCurly": "Curly", "tatsugiriCurly": "Curly Form",
"tatsugiriDroopy": "Droopy", "tatsugiriDroopy": "Droopy Form",
"tatsugiriStretchy": "Stretchy", "tatsugiriStretchy": "Stretchy Form",
"dunsparceTwo": "Two-Segment", "dunsparceTwo": "Two-Segment Form",
"dunsparceThree": "Three-Segment", "dunsparceThree": "Three-Segment Form",
"gimmighoulChest": "Chest", "gimmighoulChest": "Chest Form",
"gimmighoulRoaming": "Roaming", "gimmighoulRoaming": "Roaming Form",
"koraidonApexBuild": "Apex Build", "koraidonApexBuild": "Apex Build",
"koraidonLimitedBuild": "Limited Build", "koraidonLimitedBuild": "Limited Build",
"koraidonSprintingBuild": "Sprinting Build", "koraidonSprintingBuild": "Sprinting Build",
"koraidonSwimmingBuild": "Swimming Build", "koraidonSwimmingBuild": "Swimming Build",
"koraidonGlidingBuild": "Gliding Build", "koraidonGlidingBuild": "Gliding Build",
"miraidonUltimateMode": "Ultimate Mode", "miraidonUltimateMode": "Ultimate Mode",
"miraidonLowPowerMode": "Low Power Mode", "miraidonLowPowerMode": "Low-Power Mode",
"miraidonDriveMode": "Drive Mode", "miraidonDriveMode": "Drive Mode",
"miraidonAquaticMode": "Aquatic Mode", "miraidonAquaticMode": "Aquatic Mode",
"miraidonGlideMode": "Glide Mode", "miraidonGlideMode": "Glide Mode",
"poltchageistCounterfeit": "Counterfeit", "poltchageistCounterfeit": "Counterfeit Form",
"poltchageistArtisan": "Artisan", "poltchageistArtisan": "Artisan Form",
"poltchageistUnremarkable": "Unremarkable", "poltchageistUnremarkable": "Unremarkable Form",
"poltchageistMasterpiece": "Masterpiece", "poltchageistMasterpiece": "Masterpiece Form",
"ogerponTealMask": "Teal Mask", "ogerponTealMask": "Teal Mask",
"ogerponTealMaskTera": "Teal Mask Terastallized", "ogerponTealMaskTera": "Teal Mask Terastallized",
"ogerponWellspringMask": "Wellspring Mask", "ogerponWellspringMask": "Wellspring Mask",
@ -251,10 +279,12 @@
"ogerponHearthflameMaskTera": "Hearthflame Mask Terastallized", "ogerponHearthflameMaskTera": "Hearthflame Mask Terastallized",
"ogerponCornerstoneMask": "Cornerstone Mask", "ogerponCornerstoneMask": "Cornerstone Mask",
"ogerponCornerstoneMaskTera": "Cornerstone Mask Terastallized", "ogerponCornerstoneMaskTera": "Cornerstone Mask Terastallized",
"terpagosTerastal": "Terastal", "terpagos": "Normal Form",
"terpagosStellar": "Stellar", "terpagosTerastal": "Terastal Form",
"galarDarumakaZen": "Zen", "terpagosStellar": "Stellar Form",
"paldeaTaurosCombat": "Combat", "galarDarumaka": "Standard Mode",
"paldeaTaurosBlaze": "Blaze", "galarDarumakaZen": "Zen Mode",
"paldeaTaurosAqua": "Aqua" "paldeaTaurosCombat": "Combat Breed",
"paldeaTaurosBlaze": "Blaze Breed",
"paldeaTaurosAqua": "Aqua Breed"
} }

View File

@ -1,4 +1,5 @@
{ {
"pikachu": "Normal",
"pikachuCosplay": "Coqueta", "pikachuCosplay": "Coqueta",
"pikachuCoolCosplay": "Roquera", "pikachuCoolCosplay": "Roquera",
"pikachuBeautyCosplay": "Aristócrata", "pikachuBeautyCosplay": "Aristócrata",
@ -6,7 +7,9 @@
"pikachuSmartCosplay": "Erudita", "pikachuSmartCosplay": "Erudita",
"pikachuToughCosplay": "Enmascarada", "pikachuToughCosplay": "Enmascarada",
"pikachuPartner": "Compañero", "pikachuPartner": "Compañero",
"eevee": "Normal",
"eeveePartner": "Compañero", "eeveePartner": "Compañero",
"pichu": "Normal",
"pichuSpiky": "Picoreja", "pichuSpiky": "Picoreja",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
@ -36,6 +39,7 @@
"unownZ": "Z", "unownZ": "Z",
"unownExclamation": "!", "unownExclamation": "!",
"unownQuestion": "?", "unownQuestion": "?",
"castform": "Normal Form",
"castformSunny": "Sol", "castformSunny": "Sol",
"castformRainy": "Lluvia", "castformRainy": "Lluvia",
"castformSnowy": "Nieve", "castformSnowy": "Nieve",
@ -50,12 +54,15 @@
"cherubiSunshine": "Soleado", "cherubiSunshine": "Soleado",
"shellosEast": "Este", "shellosEast": "Este",
"shellosWest": "Oeste", "shellosWest": "Oeste",
"rotom": "Normal",
"rotomHeat": "Calor", "rotomHeat": "Calor",
"rotomWash": "Lavado", "rotomWash": "Lavado",
"rotomFrost": "Frío", "rotomFrost": "Frío",
"rotomFan": "Ventilador", "rotomFan": "Ventilador",
"rotomMow": "Corte", "rotomMow": "Corte",
"dialga": "Normal",
"dialgaOrigin": "Origen", "dialgaOrigin": "Origen",
"palkia": "Normal",
"palkiaOrigin": "Origen", "palkiaOrigin": "Origen",
"giratinaAltered": "Modificada", "giratinaAltered": "Modificada",
"giratinaOrigin": "Origen", "giratinaOrigin": "Origen",
@ -64,6 +71,7 @@
"basculinRedStriped": "Raya Roja", "basculinRedStriped": "Raya Roja",
"basculinBlueStriped": "Raya Azul", "basculinBlueStriped": "Raya Azul",
"basculinWhiteStriped": "Raya Blanca", "basculinWhiteStriped": "Raya Blanca",
"darumaka": "Standard Mode",
"darumakaZen": "Daruma", "darumakaZen": "Daruma",
"deerlingSpring": "Primavera", "deerlingSpring": "Primavera",
"deerlingSummer": "Verano", "deerlingSummer": "Verano",
@ -75,17 +83,21 @@
"thundurusTherian": "Tótem", "thundurusTherian": "Tótem",
"landorusIncarnate": "Avatar", "landorusIncarnate": "Avatar",
"landorusTherian": "Tótem", "landorusTherian": "Tótem",
"kyurem": "Normal",
"kyuremBlack": "Negro", "kyuremBlack": "Negro",
"kyuremWhite": "Blanco", "kyuremWhite": "Blanco",
"keldeoOrdinary": "Habitual", "keldeoOrdinary": "Habitual",
"keldeoResolute": "Brío", "keldeoResolute": "Brío",
"meloettaAria": "Lírica", "meloettaAria": "Lírica",
"meloettaPirouette": "Danza", "meloettaPirouette": "Danza",
"genesect": "Normal",
"genesectShock": "FulgoROM", "genesectShock": "FulgoROM",
"genesectBurn": "PiroROM", "genesectBurn": "PiroROM",
"genesectChill": "CrioROM", "genesectChill": "CrioROM",
"genesectDouse": "HidroROM", "genesectDouse": "HidroROM",
"froakie": "Normal",
"froakieBattleBond": "Fuerte Afecto", "froakieBattleBond": "Fuerte Afecto",
"froakieAsh": "Ash",
"scatterbugMeadow": "Floral", "scatterbugMeadow": "Floral",
"scatterbugIcySnow": "Polar", "scatterbugIcySnow": "Polar",
"scatterbugPolar": "Taiga", "scatterbugPolar": "Taiga",
@ -111,6 +123,7 @@
"flabebeOrange": "Naranja", "flabebeOrange": "Naranja",
"flabebeBlue": "Azul", "flabebeBlue": "Azul",
"flabebeWhite": "Blanco", "flabebeWhite": "Blanco",
"furfrou": "Natural Form",
"furfrouHeart": "Corazón", "furfrouHeart": "Corazón",
"furfrouStar": "Estrella", "furfrouStar": "Estrella",
"furfrouDiamond": "Diamante", "furfrouDiamond": "Diamante",
@ -124,6 +137,7 @@
"espurrFemale": "Hembra", "espurrFemale": "Hembra",
"honedgeShiled": "Escudo", "honedgeShiled": "Escudo",
"honedgeBlade": "Filo", "honedgeBlade": "Filo",
"pumpkaboo": "Average Size",
"pumpkabooSmall": "Pequeño", "pumpkabooSmall": "Pequeño",
"pumpkabooLarge": "Grande", "pumpkabooLarge": "Grande",
"pumpkabooSuper": "Enorme", "pumpkabooSuper": "Enorme",
@ -134,15 +148,18 @@
"zygarde50Pc": "Zygarde al 50%", "zygarde50Pc": "Zygarde al 50%",
"zygarde10Pc": "Zygarde al 10%", "zygarde10Pc": "Zygarde al 10%",
"zygardeComplete": "Zygarde Completo", "zygardeComplete": "Zygarde Completo",
"hoopa": "Confined",
"hoopaUnbound": "Desatado", "hoopaUnbound": "Desatado",
"oricorioBaile": "Apasionado", "oricorioBaile": "Apasionado",
"oricorioPompom": "Animado", "oricorioPompom": "Animado",
"oricorioPau": "Plácido", "oricorioPau": "Plácido",
"oricorioSensu": "Refinado", "oricorioSensu": "Refinado",
"rockruff": "Normal",
"rockruffOwnTempo": "Ritmo Propio", "rockruffOwnTempo": "Ritmo Propio",
"rockruffMidday": "Diurna", "rockruffMidday": "Diurna",
"rockruffMidnight": "Nocturna", "rockruffMidnight": "Nocturna",
"rockruffMidnight": "Crepuscular", "rockruffDusk": "Crepuscular",
"wishiwashi": "Solo Form",
"wishiwashiSchool": "Banco", "wishiwashiSchool": "Banco",
"typeNullNormal": "Tipo Normal", "typeNullNormal": "Tipo Normal",
"typeNullFighting": "Tipo Lucha", "typeNullFighting": "Tipo Lucha",
@ -178,11 +195,19 @@
"miniorViolet": "Violeta", "miniorViolet": "Violeta",
"mimikyuDisguised": "Encubierta", "mimikyuDisguised": "Encubierta",
"mimikyuBusted": "Descubierta", "mimikyuBusted": "Descubierta",
"necrozma": "Normal",
"necrozmaDuskMane": "Melena Crepuscular", "necrozmaDuskMane": "Melena Crepuscular",
"necrozmaDawnWings": "Asas Alvorada", "necrozmaDawnWings": "Asas Alvorada",
"necrozmaUltra": "Ultra", "necrozmaUltra": "Ultra",
"magearna": "Normal",
"magearnaOriginal": "Vetusto", "magearnaOriginal": "Vetusto",
"marshadow": "Normal",
"marshadowZenith": "Cénit", "marshadowZenith": "Cénit",
"cramorant": "Normal",
"cramorantGulping": "Gulping Form",
"cramorantGorging": "Gorging Form",
"toxelAmped": "Amped Form",
"toxelLowkey": "Low-Key Form",
"sinisteaPhony": "Falsificada", "sinisteaPhony": "Falsificada",
"sinisteaAntique": "Genuina", "sinisteaAntique": "Genuina",
"milceryVanillaCream": "Crema de Vainilla", "milceryVanillaCream": "Crema de Vainilla",
@ -194,6 +219,7 @@
"milceryRubySwirl": "Mezcla Rosa", "milceryRubySwirl": "Mezcla Rosa",
"milceryCaramelSwirl": "Mezcla Caramelo", "milceryCaramelSwirl": "Mezcla Caramelo",
"milceryRainbowSwirl": "Tres Sabores", "milceryRainbowSwirl": "Tres Sabores",
"eiscue": "Ice Face",
"eiscueNoIce": "Cara Deshielo", "eiscueNoIce": "Cara Deshielo",
"indeedeeMale": "Macho", "indeedeeMale": "Macho",
"indeedeeFemale": "Hembra", "indeedeeFemale": "Hembra",
@ -205,7 +231,9 @@
"zamazentaCrowned": "Escudo Supremo", "zamazentaCrowned": "Escudo Supremo",
"kubfuSingleStrike": "Estilo Brusco", "kubfuSingleStrike": "Estilo Brusco",
"kubfuRapidStrike": "Estilo Fluido", "kubfuRapidStrike": "Estilo Fluido",
"zarude": "Normal",
"zarudeDada": "Papá", "zarudeDada": "Papá",
"calyrex": "Normal",
"calyrexIce": "Jinete Glacial", "calyrexIce": "Jinete Glacial",
"calyrexShadow": "Jinete Espectral", "calyrexShadow": "Jinete Espectral",
"basculinMale": "Macho", "basculinMale": "Macho",
@ -251,8 +279,10 @@
"ogerponHearthflameMaskTera": "Máscara Horno Teracristal", "ogerponHearthflameMaskTera": "Máscara Horno Teracristal",
"ogerponCornerstoneMask": "Máscara Cimiento", "ogerponCornerstoneMask": "Máscara Cimiento",
"ogerponCornerstoneMaskTera": "Máscara Cimiento Teracristal", "ogerponCornerstoneMaskTera": "Máscara Cimiento Teracristal",
"terpagos": "Normal Form",
"terpagosTerastal": "Teracristal", "terpagosTerastal": "Teracristal",
"terpagosStellar": "Astral", "terpagosStellar": "Astral",
"galarDarumaka": "Standard Mode",
"galarDarumakaZen": "Daruma", "galarDarumakaZen": "Daruma",
"paldeaTaurosCombat": "Combatiente", "paldeaTaurosCombat": "Combatiente",
"paldeaTaurosBlaze": "Ardiente", "paldeaTaurosBlaze": "Ardiente",

View File

@ -1,4 +1,5 @@
{ {
"pikachu": "Normal",
"pikachuCosplay": "Cosplayeur", "pikachuCosplay": "Cosplayeur",
"pikachuCoolCosplay": "Cosplay Rockeur", "pikachuCoolCosplay": "Cosplay Rockeur",
"pikachuBeautyCosplay": "Cosplay Lady", "pikachuBeautyCosplay": "Cosplay Lady",
@ -6,7 +7,9 @@
"pikachuSmartCosplay": "Cosplay Docteur", "pikachuSmartCosplay": "Cosplay Docteur",
"pikachuToughCosplay": "Cosplay Catcheur", "pikachuToughCosplay": "Cosplay Catcheur",
"pikachuPartner": "Partenaire", "pikachuPartner": "Partenaire",
"eevee": "Normal",
"eeveePartner": "Partenaire", "eeveePartner": "Partenaire",
"pichu": "Normal",
"pichuSpiky": "Troizépi", "pichuSpiky": "Troizépi",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
@ -36,6 +39,7 @@
"unownZ": "Z", "unownZ": "Z",
"unownExclamation": "!", "unownExclamation": "!",
"unownQuestion": "?", "unownQuestion": "?",
"castform": "Normal Form",
"castformSunny": "Solaire", "castformSunny": "Solaire",
"castformRainy": "Eau de Pluie", "castformRainy": "Eau de Pluie",
"castformSnowy": "Blizzard", "castformSnowy": "Blizzard",
@ -50,12 +54,15 @@
"cherubiSunshine": "Ensoleillé", "cherubiSunshine": "Ensoleillé",
"shellosEast": "Orient", "shellosEast": "Orient",
"shellosWest": "Occident", "shellosWest": "Occident",
"rotom": "Normal",
"rotomHeat": "Chaleur", "rotomHeat": "Chaleur",
"rotomWash": "Lavage", "rotomWash": "Lavage",
"rotomFrost": "Froid", "rotomFrost": "Froid",
"rotomFan": "Hélice", "rotomFan": "Hélice",
"rotomMow": "Tonte", "rotomMow": "Tonte",
"dialga": "Normal",
"dialgaOrigin": "Originel", "dialgaOrigin": "Originel",
"palkia": "Normal",
"palkiaOrigin": "Originel", "palkiaOrigin": "Originel",
"giratinaAltered": "Alternatif", "giratinaAltered": "Alternatif",
"giratinaOrigin": "Originel", "giratinaOrigin": "Originel",
@ -64,6 +71,7 @@
"basculinRedStriped": "Motif Rouge", "basculinRedStriped": "Motif Rouge",
"basculinBlueStriped": "Motif Bleu", "basculinBlueStriped": "Motif Bleu",
"basculinWhiteStriped": "Motif Blanc", "basculinWhiteStriped": "Motif Blanc",
"darumaka": "Standard Mode",
"darumakaZen": "Zen", "darumakaZen": "Zen",
"deerlingSpring": "Printemps", "deerlingSpring": "Printemps",
"deerlingSummer": "Été", "deerlingSummer": "Été",
@ -75,17 +83,21 @@
"thundurusTherian": "Totémique", "thundurusTherian": "Totémique",
"landorusIncarnate": "Avatar", "landorusIncarnate": "Avatar",
"landorusTherian": "Totémique", "landorusTherian": "Totémique",
"kyurem": "Normal",
"kyuremBlack": "Noir", "kyuremBlack": "Noir",
"kyuremWhite": "Blanc", "kyuremWhite": "Blanc",
"keldeoOrdinary": "Normal", "keldeoOrdinary": "Normal",
"keldeoResolute": "Décidé", "keldeoResolute": "Décidé",
"meloettaAria": "Chant", "meloettaAria": "Chant",
"meloettaPirouette": "Danse", "meloettaPirouette": "Danse",
"genesect": "Normal",
"genesectShock": "Module Choc", "genesectShock": "Module Choc",
"genesectBurn": "Module Pyro", "genesectBurn": "Module Pyro",
"genesectChill": "Module Cryo", "genesectChill": "Module Cryo",
"genesectDouse": "Module Aqua", "genesectDouse": "Module Aqua",
"froakie": "Normal",
"froakieBattleBond": "Synergie", "froakieBattleBond": "Synergie",
"froakieAsh": "Ash",
"scatterbugMeadow": "Floraison", "scatterbugMeadow": "Floraison",
"scatterbugIcySnow": "Blizzard", "scatterbugIcySnow": "Blizzard",
"scatterbugPolar": "Banquise", "scatterbugPolar": "Banquise",
@ -111,6 +123,7 @@
"flabebeOrange": "Orange", "flabebeOrange": "Orange",
"flabebeBlue": "Bleu", "flabebeBlue": "Bleu",
"flabebeWhite": "Blanc", "flabebeWhite": "Blanc",
"furfrou": "Natural Form",
"furfrouHeart": "Cœur", "furfrouHeart": "Cœur",
"furfrouStar": "Étoile", "furfrouStar": "Étoile",
"furfrouDiamond": "Diamant", "furfrouDiamond": "Diamant",
@ -124,6 +137,7 @@
"espurrFemale": "Femelle", "espurrFemale": "Femelle",
"honedgeShiled": "Parade", "honedgeShiled": "Parade",
"honedgeBlade": "Assaut", "honedgeBlade": "Assaut",
"pumpkaboo": "Average Size",
"pumpkabooSmall": "Mini", "pumpkabooSmall": "Mini",
"pumpkabooLarge": "Maxi", "pumpkabooLarge": "Maxi",
"pumpkabooSuper": "Ultra", "pumpkabooSuper": "Ultra",
@ -133,16 +147,19 @@
"zygarde10": "Forme 10%", "zygarde10": "Forme 10%",
"zygarde50Pc": "Rassemblement Forme 50%", "zygarde50Pc": "Rassemblement Forme 50%",
"zygarde10Pc": "Rassemblement Forme 10%", "zygarde10Pc": "Rassemblement Forme 10%",
"hoopa": "Confined",
"hoopaUnbound": "Déchainé", "hoopaUnbound": "Déchainé",
"zygardeComplete": "Parfait", "zygardeComplete": "Parfait",
"oricorioBaile": "Flamenco", "oricorioBaile": "Flamenco",
"oricorioPompom": "Pom-Pom", "oricorioPompom": "Pom-Pom",
"oricorioPau": "Hula", "oricorioPau": "Hula",
"oricorioSensu": "Buyō", "oricorioSensu": "Buyō",
"rockruff": "Normal",
"rockruffOwnTempo": "Tempo Perso", "rockruffOwnTempo": "Tempo Perso",
"rockruffMidday": "Diurne", "rockruffMidday": "Diurne",
"rockruffMidnight": "Nocturne", "rockruffMidnight": "Nocturne",
"rockruffMidnight": "Crépusculaire", "rockruffDusk": "Crépusculaire",
"wishiwashi": "Solo Form",
"wishiwashiSchool": "Banc", "wishiwashiSchool": "Banc",
"typeNullNormal": "Type: Normal", "typeNullNormal": "Type: Normal",
"typeNullFighting": "Type: Combat", "typeNullFighting": "Type: Combat",
@ -178,11 +195,19 @@
"miniorViolet": "Violet", "miniorViolet": "Violet",
"mimikyuDisguised": "Déguisé", "mimikyuDisguised": "Déguisé",
"mimikyuBusted": "Démasqué", "mimikyuBusted": "Démasqué",
"necrozma": "Normal",
"necrozmaDuskMane": "Crinière du Couchant", "necrozmaDuskMane": "Crinière du Couchant",
"necrozmaDawnWings": "Ailes de lAurore", "necrozmaDawnWings": "Ailes de lAurore",
"necrozmaUltra": "Ultra", "necrozmaUltra": "Ultra",
"magearna": "Normal",
"magearnaOriginal": "Couleur du Passé", "magearnaOriginal": "Couleur du Passé",
"marshadow": "Normal",
"marshadowZenith": "Zénith", "marshadowZenith": "Zénith",
"cramorant": "Normal",
"cramorantGulping": "Gulping Form",
"cramorantGorging": "Gorging Form",
"toxelAmped": "Amped Form",
"toxelLowkey": "Low-Key Form",
"sinisteaPhony": "Contrefaçon", "sinisteaPhony": "Contrefaçon",
"sinisteaAntique": "Authentique", "sinisteaAntique": "Authentique",
"milceryVanillaCream": "Lait Vanille", "milceryVanillaCream": "Lait Vanille",
@ -194,6 +219,7 @@
"milceryRubySwirl": "Mélange Ruby", "milceryRubySwirl": "Mélange Ruby",
"milceryCaramelSwirl": "Mélange Caramel", "milceryCaramelSwirl": "Mélange Caramel",
"milceryRainbowSwirl": "Mélange Tricolore", "milceryRainbowSwirl": "Mélange Tricolore",
"eiscue": "Ice Face",
"eiscueNoIce": "Tête Dégel", "eiscueNoIce": "Tête Dégel",
"indeedeeMale": "Mâle", "indeedeeMale": "Mâle",
"indeedeeFemale": "Femelle", "indeedeeFemale": "Femelle",
@ -205,7 +231,9 @@
"zamazentaCrowned": "Bouclier Suprême", "zamazentaCrowned": "Bouclier Suprême",
"kubfuSingleStrike": "Poing Final", "kubfuSingleStrike": "Poing Final",
"kubfuRapidStrike": "Mille Poings", "kubfuRapidStrike": "Mille Poings",
"zarude": "Normal",
"zarudeDada": "Papa", "zarudeDada": "Papa",
"calyrex": "Normal",
"calyrexIce": "Cavalier du Froid", "calyrexIce": "Cavalier du Froid",
"calyrexShadow": "Cavalier dEffroi", "calyrexShadow": "Cavalier dEffroi",
"basculinMale": "Mâle", "basculinMale": "Mâle",
@ -251,8 +279,10 @@
"ogerponHearthflameMaskTera": "Masque du Fourneau Téracristal", "ogerponHearthflameMaskTera": "Masque du Fourneau Téracristal",
"ogerponCornerstoneMask": "Masque de la Pierre", "ogerponCornerstoneMask": "Masque de la Pierre",
"ogerponCornerstoneMaskTera": "Masque de la Pierre Téracristal", "ogerponCornerstoneMaskTera": "Masque de la Pierre Téracristal",
"terpagos": "Normal Form",
"terpagosTerastal": "Téracristal", "terpagosTerastal": "Téracristal",
"terpagosStellar": "Stellaire", "terpagosStellar": "Stellaire",
"galarDarumaka": "Standard Mode",
"galarDarumakaZen": "Zen", "galarDarumakaZen": "Zen",
"paldeaTaurosCombat": "Combatif", "paldeaTaurosCombat": "Combatif",
"paldeaTaurosBlaze": "Flamboyant", "paldeaTaurosBlaze": "Flamboyant",

View File

@ -1,4 +1,5 @@
{ {
"pikachu": "Normal",
"pikachuCosplay": "Cosplay", "pikachuCosplay": "Cosplay",
"pikachuCoolCosplay": "Cosplay classe", "pikachuCoolCosplay": "Cosplay classe",
"pikachuBeautyCosplay": "Cosplay bellezza", "pikachuBeautyCosplay": "Cosplay bellezza",
@ -6,7 +7,9 @@
"pikachuSmartCosplay": "Cosplay acume", "pikachuSmartCosplay": "Cosplay acume",
"pikachuToughCosplay": "Cosplay grinta", "pikachuToughCosplay": "Cosplay grinta",
"pikachuPartner": "Compagno", "pikachuPartner": "Compagno",
"eevee": "Normal",
"eeveePartner": "Compagno", "eeveePartner": "Compagno",
"pichu": "Normal",
"pichuSpiky": "Spunzorek", "pichuSpiky": "Spunzorek",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
@ -36,6 +39,7 @@
"unownZ": "Z", "unownZ": "Z",
"unownExclamation": "!", "unownExclamation": "!",
"unownQuestion": "?", "unownQuestion": "?",
"castform": "Normal Form",
"castformSunny": "Sole", "castformSunny": "Sole",
"castformRainy": "Pioggia", "castformRainy": "Pioggia",
"castformSnowy": "Nuvola di neve", "castformSnowy": "Nuvola di neve",
@ -50,12 +54,15 @@
"cherubiSunshine": "Splendore", "cherubiSunshine": "Splendore",
"shellosEast": "Est", "shellosEast": "Est",
"shellosWest": "Ovest", "shellosWest": "Ovest",
"rotom": "Normal",
"rotomHeat": "Calore", "rotomHeat": "Calore",
"rotomWash": "Lavaggio", "rotomWash": "Lavaggio",
"rotomFrost": "Gelo", "rotomFrost": "Gelo",
"rotomFan": "Vortice", "rotomFan": "Vortice",
"rotomMow": "Taglio", "rotomMow": "Taglio",
"dialga": "Normal",
"dialgaOrigin": "Originale", "dialgaOrigin": "Originale",
"palkia": "Normal",
"palkiaOrigin": "Originale", "palkiaOrigin": "Originale",
"giratinaAltered": "Alterata", "giratinaAltered": "Alterata",
"giratinaOrigin": "Originale", "giratinaOrigin": "Originale",
@ -64,6 +71,7 @@
"basculinRedStriped": "Linearossa", "basculinRedStriped": "Linearossa",
"basculinBlueStriped": "Lineablu", "basculinBlueStriped": "Lineablu",
"basculinWhiteStriped": "Lineabianca", "basculinWhiteStriped": "Lineabianca",
"darumaka": "Standard Mode",
"darumakaZen": "Zen", "darumakaZen": "Zen",
"deerlingSpring": "Primavera", "deerlingSpring": "Primavera",
"deerlingSummer": "Estate", "deerlingSummer": "Estate",
@ -75,17 +83,21 @@
"thundurusTherian": "Totem", "thundurusTherian": "Totem",
"landorusIncarnate": "Incarnazione", "landorusIncarnate": "Incarnazione",
"landorusTherian": "Totem", "landorusTherian": "Totem",
"kyurem": "Normal",
"kyuremBlack": "Nero", "kyuremBlack": "Nero",
"kyuremWhite": "Bianco", "kyuremWhite": "Bianco",
"keldeoOrdinary": "Normale", "keldeoOrdinary": "Normale",
"keldeoResolute": "Risoluta", "keldeoResolute": "Risoluta",
"meloettaAria": "Canto", "meloettaAria": "Canto",
"meloettaPirouette": "Danza", "meloettaPirouette": "Danza",
"genesect": "Normal",
"genesectShock": "Voltmodulo", "genesectShock": "Voltmodulo",
"genesectBurn": "Piromodulo", "genesectBurn": "Piromodulo",
"genesectChill": "Gelomodulo", "genesectChill": "Gelomodulo",
"genesectDouse": "Idromodulo", "genesectDouse": "Idromodulo",
"froakie": "Normal",
"froakieBattleBond": "Morfosintonia", "froakieBattleBond": "Morfosintonia",
"froakieAsh": "Ash",
"scatterbugMeadow": "Giardinfiore", "scatterbugMeadow": "Giardinfiore",
"scatterbugIcySnow": "Nevi perenni", "scatterbugIcySnow": "Nevi perenni",
"scatterbugPolar": "Nordico", "scatterbugPolar": "Nordico",
@ -111,6 +123,7 @@
"flabebeOrange": "Arancione", "flabebeOrange": "Arancione",
"flabebeBlue": "Blu", "flabebeBlue": "Blu",
"flabebeWhite": "Bianco", "flabebeWhite": "Bianco",
"furfrou": "Natural Form",
"furfrouHeart": "Cuore", "furfrouHeart": "Cuore",
"furfrouStar": "Stella", "furfrouStar": "Stella",
"furfrouDiamond": "Diamante", "furfrouDiamond": "Diamante",
@ -124,6 +137,7 @@
"espurrFemale": "Femmina", "espurrFemale": "Femmina",
"honedgeShiled": "Scudo", "honedgeShiled": "Scudo",
"honedgeBlade": "Spada", "honedgeBlade": "Spada",
"pumpkaboo": "Average Size",
"pumpkabooSmall": "Mini", "pumpkabooSmall": "Mini",
"pumpkabooLarge": "Grande", "pumpkabooLarge": "Grande",
"pumpkabooSuper": "Maxi", "pumpkabooSuper": "Maxi",
@ -134,15 +148,18 @@
"zygarde50Pc": "Forma 50% Sciamefusione", "zygarde50Pc": "Forma 50% Sciamefusione",
"zygarde10Pc": "Forma 10% Sciamefusione", "zygarde10Pc": "Forma 10% Sciamefusione",
"zygardeComplete": "Forma perfetta", "zygardeComplete": "Forma perfetta",
"hoopa": "Confined",
"hoopaUnbound": "Libero", "hoopaUnbound": "Libero",
"oricorioBaile": "Flamenco", "oricorioBaile": "Flamenco",
"oricorioPompom": "Cheerdance", "oricorioPompom": "Cheerdance",
"oricorioPau": "Hula", "oricorioPau": "Hula",
"oricorioSensu": "Buyō", "oricorioSensu": "Buyō",
"rockruff": "Normal",
"rockruffOwnTempo": "Mentelocale", "rockruffOwnTempo": "Mentelocale",
"rockruffMidday": "Giorno", "rockruffMidday": "Giorno",
"rockruffMidnight": "Notte", "rockruffMidnight": "Notte",
"rockruffMidnight": "Crepuscolo", "rockruffDusk": "Crepuscolo",
"wishiwashi": "Solo Form",
"wishiwashiSchool": "Banco", "wishiwashiSchool": "Banco",
"typeNullNormal": "Tipo Normale", "typeNullNormal": "Tipo Normale",
"typeNullFighting": "Tipo Lotta", "typeNullFighting": "Tipo Lotta",
@ -178,11 +195,19 @@
"miniorViolet": "Violetto", "miniorViolet": "Violetto",
"mimikyuDisguised": "Mascherata", "mimikyuDisguised": "Mascherata",
"mimikyuBusted": "Smascherata", "mimikyuBusted": "Smascherata",
"necrozma": "Normal",
"necrozmaDuskMane": "Criniera del Vespro", "necrozmaDuskMane": "Criniera del Vespro",
"necrozmaDawnWings": "Ali dell'Aurora", "necrozmaDawnWings": "Ali dell'Aurora",
"necrozmaUltra": "Ultra", "necrozmaUltra": "Ultra",
"magearna": "Normal",
"magearnaOriginal": "Colore Antico", "magearnaOriginal": "Colore Antico",
"marshadow": "Normal",
"marshadowZenith": "Zenith", "marshadowZenith": "Zenith",
"cramorant": "Normal",
"cramorantGulping": "Gulping Form",
"cramorantGorging": "Gorging Form",
"toxelAmped": "Amped Form",
"toxelLowkey": "Low-Key Form",
"sinisteaPhony": "Contraffatta", "sinisteaPhony": "Contraffatta",
"sinisteaAntique": "Autentica", "sinisteaAntique": "Autentica",
"milceryVanillaCream": "Lattevaniglia", "milceryVanillaCream": "Lattevaniglia",
@ -194,6 +219,7 @@
"milceryRubySwirl": "Rosamix", "milceryRubySwirl": "Rosamix",
"milceryCaramelSwirl": "Caramelmix", "milceryCaramelSwirl": "Caramelmix",
"milceryRainbowSwirl": "Triplomix", "milceryRainbowSwirl": "Triplomix",
"eiscue": "Ice Face",
"eiscueNoIce": "Liquefaccia", "eiscueNoIce": "Liquefaccia",
"indeedeeMale": "Maschio", "indeedeeMale": "Maschio",
"indeedeeFemale": "Femmina", "indeedeeFemale": "Femmina",
@ -205,7 +231,9 @@
"zamazentaCrowned": "Re degli Scudi", "zamazentaCrowned": "Re degli Scudi",
"kubfuSingleStrike": "Singolcolpo", "kubfuSingleStrike": "Singolcolpo",
"kubfuRapidStrike": "Pluricolpo", "kubfuRapidStrike": "Pluricolpo",
"zarude": "Normal",
"zarudeDada": "Papà", "zarudeDada": "Papà",
"calyrex": "Normal",
"calyrexIce": "Cavaliere Glaciale", "calyrexIce": "Cavaliere Glaciale",
"calyrexShadow": "Cavaliere Spettrale", "calyrexShadow": "Cavaliere Spettrale",
"basculinMale": "Maschio", "basculinMale": "Maschio",
@ -251,8 +279,10 @@
"ogerponHearthflameMaskTera": "Maschera Focolare Teracristal", "ogerponHearthflameMaskTera": "Maschera Focolare Teracristal",
"ogerponCornerstoneMask": "Maschera Fondamenta", "ogerponCornerstoneMask": "Maschera Fondamenta",
"ogerponCornerstoneMaskTera": "Maschera Fondamenta Teracristal", "ogerponCornerstoneMaskTera": "Maschera Fondamenta Teracristal",
"terpagos": "Normal Form",
"terpagosTerastal": "Teracristal", "terpagosTerastal": "Teracristal",
"terpagosStellar": "Astrale", "terpagosStellar": "Astrale",
"galarDarumaka": "Standard Mode",
"galarDarumakaZen": "Zen", "galarDarumakaZen": "Zen",
"paldeaTaurosCombat": "Combattiva", "paldeaTaurosCombat": "Combattiva",
"paldeaTaurosBlaze": "Infuocata", "paldeaTaurosBlaze": "Infuocata",

View File

@ -1,4 +1,5 @@
{ {
"pikachu": "Normal",
"pikachuCosplay": "コスプレ", "pikachuCosplay": "コスプレ",
"pikachuCoolCosplay": "クールなコスプレ", "pikachuCoolCosplay": "クールなコスプレ",
"pikachuBeautyCosplay": "きれいなコスプレ", "pikachuBeautyCosplay": "きれいなコスプレ",
@ -6,7 +7,9 @@
"pikachuSmartCosplay": "かしこいコスプレ", "pikachuSmartCosplay": "かしこいコスプレ",
"pikachuToughCosplay": "パワフルなコスプレ", "pikachuToughCosplay": "パワフルなコスプレ",
"pikachuPartner": "パートナー", "pikachuPartner": "パートナー",
"eevee": "Normal",
"eeveePartner": "パートナー", "eeveePartner": "パートナー",
"pichu": "Normal",
"pichuSpiky": "ギザみみ", "pichuSpiky": "ギザみみ",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
@ -36,6 +39,7 @@
"unownZ": "Z", "unownZ": "Z",
"unownExclamation": "!", "unownExclamation": "!",
"unownQuestion": "?", "unownQuestion": "?",
"castform": "Normal Form",
"castformSunny": "たいよう", "castformSunny": "たいよう",
"castformRainy": "あまみず", "castformRainy": "あまみず",
"castformSnowy": "ゆきぐも", "castformSnowy": "ゆきぐも",
@ -50,12 +54,15 @@
"cherubiSunshine": "Sunshine", "cherubiSunshine": "Sunshine",
"shellosEast": "ひがし", "shellosEast": "ひがし",
"shellosWest": "にし", "shellosWest": "にし",
"rotom": "Normal",
"rotomHeat": "ヒート", "rotomHeat": "ヒート",
"rotomWash": "ウォッシュ", "rotomWash": "ウォッシュ",
"rotomFrost": "フロスト", "rotomFrost": "フロスト",
"rotomFan": "スピン", "rotomFan": "スピン",
"rotomMow": "カット", "rotomMow": "カット",
"dialga": "Normal",
"dialgaOrigin": "Origin", "dialgaOrigin": "Origin",
"palkia": "Normal",
"palkiaOrigin": "Origin", "palkiaOrigin": "Origin",
"giratinaAltered": "アナザー", "giratinaAltered": "アナザー",
"giratinaOrigin": "Origin", "giratinaOrigin": "Origin",
@ -64,6 +71,7 @@
"basculinRedStriped": "赤筋", "basculinRedStriped": "赤筋",
"basculinBlueStriped": "青筋", "basculinBlueStriped": "青筋",
"basculinWhiteStriped": "白筋", "basculinWhiteStriped": "白筋",
"darumaka": "Standard Mode",
"darumakaZen": "Zen", "darumakaZen": "Zen",
"deerlingSpring": "春", "deerlingSpring": "春",
"deerlingSummer": "夏", "deerlingSummer": "夏",
@ -75,17 +83,21 @@
"thundurusTherian": "Therian", "thundurusTherian": "Therian",
"landorusIncarnate": "けしん", "landorusIncarnate": "けしん",
"landorusTherian": "Therian", "landorusTherian": "Therian",
"kyurem": "Normal",
"kyuremBlack": "Black", "kyuremBlack": "Black",
"kyuremWhite": "White", "kyuremWhite": "White",
"keldeoOrdinary": "いつも", "keldeoOrdinary": "いつも",
"keldeoResolute": "Resolute", "keldeoResolute": "Resolute",
"meloettaAria": "ボイス", "meloettaAria": "ボイス",
"meloettaPirouette": "ステップ", "meloettaPirouette": "ステップ",
"genesect": "Normal",
"genesectShock": "Shock Drive", "genesectShock": "Shock Drive",
"genesectBurn": "Burn Drive", "genesectBurn": "Burn Drive",
"genesectChill": "Chill Drive", "genesectChill": "Chill Drive",
"genesectDouse": "Douse Drive", "genesectDouse": "Douse Drive",
"froakie": "Normal",
"froakieBattleBond": "きずなへんげ", "froakieBattleBond": "きずなへんげ",
"froakieAsh": "Ash",
"scatterbugMeadow": "はなぞの", "scatterbugMeadow": "はなぞの",
"scatterbugIcySnow": "ひょうせつ", "scatterbugIcySnow": "ひょうせつ",
"scatterbugPolar": "ゆきぐに", "scatterbugPolar": "ゆきぐに",
@ -111,6 +123,7 @@
"flabebeOrange": "オレンジ", "flabebeOrange": "オレンジ",
"flabebeBlue": "青", "flabebeBlue": "青",
"flabebeWhite": "白", "flabebeWhite": "白",
"furfrou": "Natural Form",
"furfrouHeart": "ハート", "furfrouHeart": "ハート",
"furfrouStar": "スター", "furfrouStar": "スター",
"furfrouDiamond": "ダイア", "furfrouDiamond": "ダイア",
@ -124,6 +137,7 @@
"espurrFemale": "Female", "espurrFemale": "Female",
"honedgeShiled": "Shield", "honedgeShiled": "Shield",
"honedgeBlade": "Blade", "honedgeBlade": "Blade",
"pumpkaboo": "Average Size",
"pumpkabooSmall": "ちいさい", "pumpkabooSmall": "ちいさい",
"pumpkabooLarge": "おおきい", "pumpkabooLarge": "おおきい",
"pumpkabooSuper": "とくだい", "pumpkabooSuper": "とくだい",
@ -134,15 +148,18 @@
"zygarde50Pc": "50%フォルム スワームチェンジ", "zygarde50Pc": "50%フォルム スワームチェンジ",
"zygarde10Pc": "10%フォルム スワームチェンジ", "zygarde10Pc": "10%フォルム スワームチェンジ",
"zygardeComplete": "パーフェクトフォルム", "zygardeComplete": "パーフェクトフォルム",
"hoopa": "Confined",
"hoopaUnbound": "Unbound", "hoopaUnbound": "Unbound",
"oricorioBaile": "めらめら", "oricorioBaile": "めらめら",
"oricorioPompom": "ぱちぱち", "oricorioPompom": "ぱちぱち",
"oricorioPau": "ふらふら", "oricorioPau": "ふらふら",
"oricorioSensu": "まいまい", "oricorioSensu": "まいまい",
"rockruff": "Normal",
"rockruffOwnTempo": "マイペース", "rockruffOwnTempo": "マイペース",
"rockruffMidday": "Midday", "rockruffMidday": "Midday",
"rockruffMidnight": "Midnight", "rockruffMidnight": "Midnight",
"rockruffMidnight": "Dusk", "rockruffDusk": "Dusk",
"wishiwashi": "Solo Form",
"wishiwashiSchool": "School", "wishiwashiSchool": "School",
"typeNullNormal": "Type: Normal", "typeNullNormal": "Type: Normal",
"typeNullFighting": "Type: Fighting", "typeNullFighting": "Type: Fighting",
@ -178,11 +195,19 @@
"miniorViolet": "紫", "miniorViolet": "紫",
"mimikyuDisguised": "ばけたすがた", "mimikyuDisguised": "ばけたすがた",
"mimikyuBusted": "ばれたすがた", "mimikyuBusted": "ばれたすがた",
"necrozma": "Normal",
"necrozmaDuskMane": "Dusk Mane", "necrozmaDuskMane": "Dusk Mane",
"necrozmaDawnWings": "Dawn Wings", "necrozmaDawnWings": "Dawn Wings",
"necrozmaUltra": "Ultra", "necrozmaUltra": "Ultra",
"magearna": "Normal",
"magearnaOriginal": "500ねんまえ", "magearnaOriginal": "500ねんまえ",
"marshadow": "Normal",
"marshadowZenith": "Zパワー", "marshadowZenith": "Zパワー",
"cramorant": "Normal",
"cramorantGulping": "Gulping Form",
"cramorantGorging": "Gorging Form",
"toxelAmped": "Amped Form",
"toxelLowkey": "Low-Key Form",
"sinisteaPhony": "がんさく", "sinisteaPhony": "がんさく",
"sinisteaAntique": "しんさく", "sinisteaAntique": "しんさく",
"milceryVanillaCream": "Vanilla Cream", "milceryVanillaCream": "Vanilla Cream",
@ -194,6 +219,7 @@
"milceryRubySwirl": "Ruby Swirl", "milceryRubySwirl": "Ruby Swirl",
"milceryCaramelSwirl": "Caramel Swirl", "milceryCaramelSwirl": "Caramel Swirl",
"milceryRainbowSwirl": "Rainbow Swirl", "milceryRainbowSwirl": "Rainbow Swirl",
"eiscue": "Ice Face",
"eiscueNoIce": "ナイスなし", "eiscueNoIce": "ナイスなし",
"indeedeeMale": "オス", "indeedeeMale": "オス",
"indeedeeFemale": "メス", "indeedeeFemale": "メス",
@ -205,7 +231,9 @@
"zamazentaCrowned": "Crowned", "zamazentaCrowned": "Crowned",
"kubfuSingleStrike": "Single Strike", "kubfuSingleStrike": "Single Strike",
"kubfuRapidStrike": "Rapid Strike", "kubfuRapidStrike": "Rapid Strike",
"zarude": "Normal",
"zarudeDada": "とうちゃん", "zarudeDada": "とうちゃん",
"calyrex": "Normal",
"calyrexIce": "Ice Rider", "calyrexIce": "Ice Rider",
"calyrexShadow": "Shadow Rider", "calyrexShadow": "Shadow Rider",
"basculinMale": "Male", "basculinMale": "Male",
@ -251,8 +279,10 @@
"ogerponHearthflameMaskTera": "Hearthflame Mask Terastallized", "ogerponHearthflameMaskTera": "Hearthflame Mask Terastallized",
"ogerponCornerstoneMask": "Cornerstone Mask", "ogerponCornerstoneMask": "Cornerstone Mask",
"ogerponCornerstoneMaskTera": "Cornerstone Mask Terastallized", "ogerponCornerstoneMaskTera": "Cornerstone Mask Terastallized",
"terpagos": "Normal Form",
"terpagosTerastal": "Terastal", "terpagosTerastal": "Terastal",
"terpagosStellar": "Stellar", "terpagosStellar": "Stellar",
"galarDarumaka": "Standard Mode",
"galarDarumakaZen": "Zen", "galarDarumakaZen": "Zen",
"paldeaTaurosCombat": "コンバット", "paldeaTaurosCombat": "コンバット",
"paldeaTaurosBlaze": "ブレイズ", "paldeaTaurosBlaze": "ブレイズ",

View File

@ -1,4 +1,5 @@
{ {
"pikachu": "일반",
"pikachuCosplay": "옷갈아입기", "pikachuCosplay": "옷갈아입기",
"pikachuCoolCosplay": "하드록", "pikachuCoolCosplay": "하드록",
"pikachuBeautyCosplay": "마담", "pikachuBeautyCosplay": "마담",
@ -6,7 +7,9 @@
"pikachuSmartCosplay": "닥터", "pikachuSmartCosplay": "닥터",
"pikachuToughCosplay": "마스크드", "pikachuToughCosplay": "마스크드",
"pikachuPartner": "파트너", "pikachuPartner": "파트너",
"eevee": "일반",
"eeveePartner": "파트너", "eeveePartner": "파트너",
"pichu": "일반",
"pichuSpiky": "삐쭉귀", "pichuSpiky": "삐쭉귀",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
@ -36,6 +39,7 @@
"unownZ": "Z", "unownZ": "Z",
"unownExclamation": "!", "unownExclamation": "!",
"unownQuestion": "?", "unownQuestion": "?",
"castform": "평상시",
"castformSunny": "태양의 모습", "castformSunny": "태양의 모습",
"castformRainy": "빗방울의 모습", "castformRainy": "빗방울의 모습",
"castformSnowy": "설운의 모습", "castformSnowy": "설운의 모습",
@ -46,46 +50,54 @@
"burmyPlant": "초목도롱", "burmyPlant": "초목도롱",
"burmySandy": "모래땅도롱", "burmySandy": "모래땅도롱",
"burmyTrash": "슈레도롱", "burmyTrash": "슈레도롱",
"cherubiOvercast": "Overcast", "cherubiOvercast": "네거폼",
"cherubiSunshine": "Sunshine", "cherubiSunshine": "포지폼",
"shellosEast": "동쪽바다의 모습", "shellosEast": "동쪽바다의 모습",
"shellosWest": "서쪽바다의 모습", "shellosWest": "서쪽바다의 모습",
"rotomHeat": "히트", "rotom": "로토무",
"rotomWash": "워시", "rotomHeat": "히트로토무",
"rotomFrost": "프로스트", "rotomWash": "워시로토무",
"rotomFan": "스핀", "rotomFrost": "프로스트로토무",
"rotomMow": "커트", "rotomFan": "스핀로토무",
"dialgaOrigin": "Origin", "rotomMow": "커트로토무",
"palkiaOrigin": "Origin", "dialga": "어나더폼",
"dialgaOrigin": "오리진폼",
"palkia": "어나더폼",
"palkiaOrigin": "오리진폼",
"giratinaAltered": "어나더폼", "giratinaAltered": "어나더폼",
"giratinaOrigin": "Origin", "giratinaOrigin": "오리진폼",
"shayminLand": "랜드폼", "shayminLand": "랜드폼",
"shayminSky": "Sky", "shayminSky": "스카이폼",
"basculinRedStriped": "적색근의 모습", "basculinRedStriped": "적색근의 모습",
"basculinBlueStriped": "청색근의 모습", "basculinBlueStriped": "청색근의 모습",
"basculinWhiteStriped": "백색근의 모습", "basculinWhiteStriped": "백색근의 모습",
"darumakaZen": "Zen", "darumaka": "노말모드",
"darumakaZen": "달마모드",
"deerlingSpring": "봄의 모습", "deerlingSpring": "봄의 모습",
"deerlingSummer": "여름의 모습", "deerlingSummer": "여름의 모습",
"deerlingAutumn": "가을의 모습", "deerlingAutumn": "가을의 모습",
"deerlingWinter": "겨울의 모습", "deerlingWinter": "겨울의 모습",
"tornadusIncarnate": "화신폼", "tornadusIncarnate": "화신폼",
"tornadusTherian": "Therian", "tornadusTherian": "영물폼",
"thundurusIncarnate": "화신폼", "thundurusIncarnate": "화신폼",
"thundurusTherian": "Therian", "thundurusTherian": "영물폼",
"landorusIncarnate": "화신폼", "landorusIncarnate": "화신폼",
"landorusTherian": "Therian", "landorusTherian": "영물폼",
"kyuremBlack": "Black", "kyurem": "큐레무",
"kyuremWhite": "White", "kyuremBlack": "블랙큐레무",
"kyuremWhite": "화이트큐레무",
"keldeoOrdinary": "평상시 모습", "keldeoOrdinary": "평상시 모습",
"keldeoResolute": "Resolute", "keldeoResolute": "각오의 모습",
"meloettaAria": "보이스폼", "meloettaAria": "보이스폼",
"meloettaPirouette": "스텝폼", "meloettaPirouette": "스텝폼",
"genesectShock": "Shock Drive", "genesect": "노말폼",
"genesectBurn": "Burn Drive", "genesectShock": "라이트닝폼",
"genesectChill": "Chill Drive", "genesectBurn": "블레이즈폼",
"genesectDouse": "Douse Drive", "genesectChill": "프리즈폼",
"genesectDouse": "아쿠아폼",
"froakie": "개굴닌자",
"froakieBattleBond": "유대변화", "froakieBattleBond": "유대변화",
"froakieAsh": "지우개굴닌자",
"scatterbugMeadow": "화원의 모양", "scatterbugMeadow": "화원의 모양",
"scatterbugIcySnow": "빙설의 모양", "scatterbugIcySnow": "빙설의 모양",
"scatterbugPolar": "설국의 모양", "scatterbugPolar": "설국의 모양",
@ -111,6 +123,7 @@
"flabebeOrange": "오렌지색 꽃", "flabebeOrange": "오렌지색 꽃",
"flabebeBlue": "파란 꽃", "flabebeBlue": "파란 꽃",
"flabebeWhite": "하얀 꽃", "flabebeWhite": "하얀 꽃",
"furfrou": "일반",
"furfrouHeart": "하트컷", "furfrouHeart": "하트컷",
"furfrouStar": "스타컷", "furfrouStar": "스타컷",
"furfrouDiamond": "다이아컷", "furfrouDiamond": "다이아컷",
@ -120,10 +133,11 @@
"furfrouLaReine": "퀸컷", "furfrouLaReine": "퀸컷",
"furfrouKabuki": "가부키컷", "furfrouKabuki": "가부키컷",
"furfrouPharaoh": "킹덤컷", "furfrouPharaoh": "킹덤컷",
"espurrMale": "Male", "espurrMale": "수컷의 모습",
"espurrFemale": "Female", "espurrFemale": "암컷의 모습",
"honedgeShiled": "Shield", "honedgeShiled": "실드폼",
"honedgeBlade": "Blade", "honedgeBlade": "블레이드폼",
"pumpkaboo": "보통 사이즈",
"pumpkabooSmall": "작은 사이즈", "pumpkabooSmall": "작은 사이즈",
"pumpkabooLarge": "큰 사이즈", "pumpkabooLarge": "큰 사이즈",
"pumpkabooSuper": "특대 사이즈", "pumpkabooSuper": "특대 사이즈",
@ -134,34 +148,37 @@
"zygarde50Pc": "스웜체인지 50%폼", "zygarde50Pc": "스웜체인지 50%폼",
"zygarde10Pc": "스웜체인지 10%폼", "zygarde10Pc": "스웜체인지 10%폼",
"zygardeComplete": "퍼펙트폼", "zygardeComplete": "퍼펙트폼",
"hoopaUnbound": "Unbound", "hoopa": "굴레에 빠진 모습",
"hoopaUnbound": "굴레를 벗어난 모습",
"oricorioBaile": "이글이글스타일", "oricorioBaile": "이글이글스타일",
"oricorioPompom": "파칙파칙스타일", "oricorioPompom": "파칙파칙스타일",
"oricorioPau": "훌라훌라스타일", "oricorioPau": "훌라훌라스타일",
"oricorioSensu": "하늘하늘스타일", "oricorioSensu": "하늘하늘스타일",
"rockruff": "일반",
"rockruffOwnTempo": "마이페이스", "rockruffOwnTempo": "마이페이스",
"rockruffMidday": "Midday", "rockruffMidday": "한낮의 모습",
"rockruffMidnight": "Midnight", "rockruffMidnight": "한밤중의 모습",
"rockruffMidnight": "Dusk", "rockruffDusk": "황혼의 모습",
"wishiwashiSchool": "School", "wishiwashi": "단독의 모습",
"typeNullNormal": "Type: Normal", "wishiwashiSchool": "군집의 모습",
"typeNullFighting": "Type: Fighting", "typeNullNormal": "노말",
"typeNullFlying": "Type: Flying", "typeNullFighting": "격투",
"typeNullPoison": "Type: Poison", "typeNullFlying": "비행",
"typeNullGround": "Type: Ground", "typeNullPoison": "독",
"typeNullRock": "Type: Rock", "typeNullGround": "땅",
"typeNullBug": "Type: Bug", "typeNullRock": "바위",
"typeNullGhost": "Type: Ghost", "typeNullBug": "벌레",
"typeNullSteel": "Type: Steel", "typeNullGhost": "고스트",
"typeNullFire": "Type: Fire", "typeNullSteel": "강철",
"typeNullWater": "Type: Water", "typeNullFire": "불꽃",
"typeNullGrass": "Type: Grass", "typeNullWater": "물",
"typeNullElectric": "Type: Electric", "typeNullGrass": "풀",
"typeNullPsychic": "Type: Psychic", "typeNullElectric": "전기",
"typeNullIce": "Type: Ice", "typeNullPsychic": "에스퍼",
"typeNullDragon": "Type: Dragon", "typeNullIce": "얼음",
"typeNullDark": "Type: Dark", "typeNullDragon": "드래곤",
"typeNullFairy": "Type: Fairy", "typeNullDark": "악",
"typeNullFairy": "페어리",
"miniorRedMeteor": "유성의 모습(빨강)", "miniorRedMeteor": "유성의 모습(빨강)",
"miniorOrangeMeteor": "유성의 모습(주황)", "miniorOrangeMeteor": "유성의 모습(주황)",
"miniorYellowMeteor": "유성의 모습(노랑)", "miniorYellowMeteor": "유성의 모습(노랑)",
@ -178,55 +195,66 @@
"miniorViolet": "보라색 코어", "miniorViolet": "보라색 코어",
"mimikyuDisguised": "둔갑한 모습", "mimikyuDisguised": "둔갑한 모습",
"mimikyuBusted": "들킨 모습", "mimikyuBusted": "들킨 모습",
"necrozmaDuskMane": "Dusk Mane", "necrozma": "네크로즈마",
"necrozmaDawnWings": "Dawn Wings", "necrozmaDuskMane": "황혼의 갈기",
"necrozmaUltra": "Ultra", "necrozmaDawnWings": "새벽의 날개",
"necrozmaUltra": "울트라네크로즈마",
"magearna": "일반적인 모습",
"magearnaOriginal": "500년 전의 색", "magearnaOriginal": "500년 전의 색",
"marshadowZenith": "투지를 불태운 마샤도", "marshadow": "일반적인 모습",
"marshadowZenith": "타오르는 투지의 모습",
"cramorant": "일반",
"cramorantGulping": "그대로 삼킨 모습",
"cramorantGorging": "통째로 삼킨 모습",
"toxelAmped": "하이한 모습",
"toxelLowkey": "로우한 모습",
"sinisteaPhony": "위작품", "sinisteaPhony": "위작품",
"sinisteaAntique": "진작품", "sinisteaAntique": "진작품",
"milceryVanillaCream": "Vanilla Cream", "milceryVanillaCream": "밀키바닐라",
"milceryRubyCream": "Ruby Cream", "milceryRubyCream": "밀키루비",
"milceryMatchaCream": "Matcha Cream", "milceryMatchaCream": "밀키말차",
"milceryMintCream": "Mint Cream", "milceryMintCream": "밀키민트",
"milceryLemonCream": "Lemon Cream", "milceryLemonCream": "밀키레몬",
"milcerySaltedCream": "Salted Cream", "milcerySaltedCream": "밀키솔트",
"milceryRubySwirl": "Ruby Swirl", "milceryRubySwirl": "루비믹스",
"milceryCaramelSwirl": "Caramel Swirl", "milceryCaramelSwirl": "캐러멜믹스",
"milceryRainbowSwirl": "Rainbow Swirl", "milceryRainbowSwirl": "트리플믹스",
"eiscue": "아이스페이스",
"eiscueNoIce": "나이스페이스", "eiscueNoIce": "나이스페이스",
"indeedeeMale": "수컷의 모습", "indeedeeMale": "수컷의 모습",
"indeedeeFemale": "암컷의 모습", "indeedeeFemale": "암컷의 모습",
"morpekoFullBelly": "배부른 모양", "morpekoFullBelly": "배부른 모양",
"morpekoHangry": "Hangry", "morpekoHangry": "배고픈 모양",
"zacianHeroOfManyBattles": "역전의 용사", "zacianHeroOfManyBattles": "역전의 용사",
"zacianCrowned": "Crowned", "zacianCrowned": "검왕",
"zamazentaHeroOfManyBattles": "역전의 용사", "zamazentaHeroOfManyBattles": "역전의 용사",
"zamazentaCrowned": "Crowned", "zamazentaCrowned": "방패왕",
"kubfuSingleStrike": "Single Strike", "kubfuSingleStrike": "일격의 태세",
"kubfuRapidStrike": "Rapid Strike", "kubfuRapidStrike": "연격의 태세",
"zarude": "일반",
"zarudeDada": "아빠", "zarudeDada": "아빠",
"calyrexIce": "Ice Rider", "calyrex": "일반",
"calyrexShadow": "Shadow Rider", "calyrexIce": "백마 탄 모습",
"basculinMale": "Male", "calyrexShadow": "흑마 탄 모습",
"basculinFemale": "Female", "basculinMale": "수컷의 모습",
"basculinFemale": "암컷의 모습",
"enamorusIncarnate": "화신폼", "enamorusIncarnate": "화신폼",
"enamorusTherian": "Therian", "enamorusTherian": "영물폼",
"lechonkMale": "Male", "lechonkMale": "수컷의 모습",
"lechonkFemale": "Female", "lechonkFemale": "암컷의 모습",
"tandemausFour": "Family of Four", "tandemausFour": "네 식구",
"tandemausThree": "Family of Three", "tandemausThree": "세 식구",
"squawkabillyGreenPlumage": "그린 페더", "squawkabillyGreenPlumage": "그린 페더",
"squawkabillyBluePlumage": "블루 페더", "squawkabillyBluePlumage": "블루 페더",
"squawkabillyYellowPlumage": "옐로 페더", "squawkabillyYellowPlumage": "옐로 페더",
"squawkabillyWhitePlumage": "화이트 페더", "squawkabillyWhitePlumage": "화이트 페더",
"finizenZero": "Zero", "finizenZero": "나이브폼",
"finizenHero": "Hero", "finizenHero": "마이티폼",
"tatsugiriCurly": "젖힌 모습", "tatsugiriCurly": "젖힌 모습",
"tatsugiriDroopy": "늘어진 모습", "tatsugiriDroopy": "늘어진 모습",
"tatsugiriStretchy": "뻗은 모습", "tatsugiriStretchy": "뻗은 모습",
"dunsparceTwo": "Two-Segment", "dunsparceTwo": "두 마디 폼",
"dunsparceThree": "Three-Segment", "dunsparceThree": "세 마디 폼",
"gimmighoulChest": "상자폼", "gimmighoulChest": "상자폼",
"gimmighoulRoaming": "도보폼", "gimmighoulRoaming": "도보폼",
"koraidonApexBuild": "완전형태", "koraidonApexBuild": "완전형태",
@ -241,19 +269,21 @@
"miraidonGlideMode": "글라이드모드", "miraidonGlideMode": "글라이드모드",
"poltchageistCounterfeit": "가짜배기의 모습", "poltchageistCounterfeit": "가짜배기의 모습",
"poltchageistArtisan": "알짜배기의 모습", "poltchageistArtisan": "알짜배기의 모습",
"poltchageistUnremarkable": "Unremarkable", "poltchageistUnremarkable": "범작의 모습",
"poltchageistMasterpiece": "Masterpiece", "poltchageistMasterpiece": "걸작의 모습",
"ogerponTealMask": "Teal Mask", "ogerponTealMask": "벽록의가면",
"ogerponTealMaskTera": "Teal Mask Terastallized", "ogerponTealMaskTera": "벽록의가면 테라스탈",
"ogerponWellspringMask": "Wellspring Mask", "ogerponWellspringMask": "우물의가면",
"ogerponWellspringMaskTera": "Wellspring Mask Terastallized", "ogerponWellspringMaskTera": "우물의가면 테라스탈",
"ogerponHearthflameMask": "Hearthflame Mask", "ogerponHearthflameMask": "화덕의가면",
"ogerponHearthflameMaskTera": "Hearthflame Mask Terastallized", "ogerponHearthflameMaskTera": "화덕의가면 테라스탈",
"ogerponCornerstoneMask": "Cornerstone Mask", "ogerponCornerstoneMask": "주춧돌의가면",
"ogerponCornerstoneMaskTera": "Cornerstone Mask Terastallized", "ogerponCornerstoneMaskTera": "주춧돌의가면 테라스탈",
"terpagosTerastal": "Terastal", "terpagos": "노말폼",
"terpagosStellar": "Stellar", "terpagosTerastal": "테라스탈폼",
"galarDarumakaZen": "Zen", "terpagosStellar": "스텔라폼",
"galarDarumaka": "노말모드",
"galarDarumakaZen": "달마모드",
"paldeaTaurosCombat": "컴뱃종", "paldeaTaurosCombat": "컴뱃종",
"paldeaTaurosBlaze": "블레이즈종", "paldeaTaurosBlaze": "블레이즈종",
"paldeaTaurosAqua": "워터종" "paldeaTaurosAqua": "워터종"

View File

@ -1,4 +1,5 @@
{ {
"pikachu": "Normal",
"pikachuCosplay": "Cosplay", "pikachuCosplay": "Cosplay",
"pikachuCoolCosplay": "Cosplay Legal", "pikachuCoolCosplay": "Cosplay Legal",
"pikachuBeautyCosplay": "Cosplay Bonito", "pikachuBeautyCosplay": "Cosplay Bonito",
@ -6,7 +7,9 @@
"pikachuSmartCosplay": "Cosplay Inteligente", "pikachuSmartCosplay": "Cosplay Inteligente",
"pikachuToughCosplay": "Cosplay Forte", "pikachuToughCosplay": "Cosplay Forte",
"pikachuPartner": "Parceiro", "pikachuPartner": "Parceiro",
"eevee": "Normal",
"eeveePartner": "Parceiro", "eeveePartner": "Parceiro",
"pichu": "Normal",
"pichuSpiky": "Orelha Espetada", "pichuSpiky": "Orelha Espetada",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
@ -36,6 +39,7 @@
"unownZ": "Z", "unownZ": "Z",
"unownExclamation": "!", "unownExclamation": "!",
"unownQuestion": "?", "unownQuestion": "?",
"castform": "Normal Form",
"castformSunny": "Ensolarado", "castformSunny": "Ensolarado",
"castformRainy": "Chuvoso", "castformRainy": "Chuvoso",
"castformSnowy": "Nevado", "castformSnowy": "Nevado",
@ -50,12 +54,15 @@
"cherubiSunshine": "Solar", "cherubiSunshine": "Solar",
"shellosEast": "Leste", "shellosEast": "Leste",
"shellosWest": "Oeste", "shellosWest": "Oeste",
"rotom": "Normal",
"rotomHeat": "Calor", "rotomHeat": "Calor",
"rotomWash": "Lavagem", "rotomWash": "Lavagem",
"rotomFrost": "Congelante", "rotomFrost": "Congelante",
"rotomFan": "Ventilador", "rotomFan": "Ventilador",
"rotomMow": "Corte", "rotomMow": "Corte",
"dialga": "Normal",
"dialgaOrigin": "Origem", "dialgaOrigin": "Origem",
"palkia": "Normal",
"palkiaOrigin": "Origem", "palkiaOrigin": "Origem",
"giratinaAltered": "Alterado", "giratinaAltered": "Alterado",
"giratinaOrigin": "Origem", "giratinaOrigin": "Origem",
@ -64,6 +71,7 @@
"basculinRedStriped": "Listras Vermelhas", "basculinRedStriped": "Listras Vermelhas",
"basculinBlueStriped": "Listras Azuis", "basculinBlueStriped": "Listras Azuis",
"basculinWhiteStriped": "Listras Brancas", "basculinWhiteStriped": "Listras Brancas",
"darumaka": "Standard Mode",
"darumakaZen": "Zen", "darumakaZen": "Zen",
"deerlingSpring": "Primavera", "deerlingSpring": "Primavera",
"deerlingSummer": "Verão", "deerlingSummer": "Verão",
@ -75,17 +83,21 @@
"thundurusTherian": "Therian", "thundurusTherian": "Therian",
"landorusIncarnate": "Materializado", "landorusIncarnate": "Materializado",
"landorusTherian": "Therian", "landorusTherian": "Therian",
"kyurem": "Normal",
"kyuremBlack": "Preto", "kyuremBlack": "Preto",
"kyuremWhite": "Branco", "kyuremWhite": "Branco",
"keldeoOrdinary": "Comum", "keldeoOrdinary": "Comum",
"keldeoResolute": "Resoluto", "keldeoResolute": "Resoluto",
"meloettaAria": "Ária", "meloettaAria": "Ária",
"meloettaPirouette": "Pirueta", "meloettaPirouette": "Pirueta",
"genesect": "Normal",
"genesectShock": "Disco Elétrico", "genesectShock": "Disco Elétrico",
"genesectBurn": "Disco Incendiante", "genesectBurn": "Disco Incendiante",
"genesectChill": "Disco Congelante", "genesectChill": "Disco Congelante",
"genesectDouse": "Disco Hídrico", "genesectDouse": "Disco Hídrico",
"froakie": "Normal",
"froakieBattleBond": "Vínculo de Batalha", "froakieBattleBond": "Vínculo de Batalha",
"froakieAsh": "Ash",
"scatterbugMeadow": "Prado", "scatterbugMeadow": "Prado",
"scatterbugIcySnow": "Neve Congelada", "scatterbugIcySnow": "Neve Congelada",
"scatterbugPolar": "Polar", "scatterbugPolar": "Polar",
@ -111,6 +123,7 @@
"flabebeOrange": "Laranja", "flabebeOrange": "Laranja",
"flabebeBlue": "Azul", "flabebeBlue": "Azul",
"flabebeWhite": "Branca", "flabebeWhite": "Branca",
"furfrou": "Natural Form",
"furfrouHeart": "Coração", "furfrouHeart": "Coração",
"furfrouStar": "Estrela", "furfrouStar": "Estrela",
"furfrouDiamond": "Diamante", "furfrouDiamond": "Diamante",
@ -124,6 +137,7 @@
"espurrFemale": "Fêmea", "espurrFemale": "Fêmea",
"honedgeShiled": "Escudo", "honedgeShiled": "Escudo",
"honedgeBlade": "Lâmina", "honedgeBlade": "Lâmina",
"pumpkaboo": "Average Size",
"pumpkabooSmall": "Pequeno", "pumpkabooSmall": "Pequeno",
"pumpkabooLarge": "Grande", "pumpkabooLarge": "Grande",
"pumpkabooSuper": "Extragrande", "pumpkabooSuper": "Extragrande",
@ -134,15 +148,18 @@
"zygarde50Pc": "Forma 50% Agrupada", "zygarde50Pc": "Forma 50% Agrupada",
"zygarde10Pc": "Forma 10% Agrupada", "zygarde10Pc": "Forma 10% Agrupada",
"zygardeComplete": "Forma Completa", "zygardeComplete": "Forma Completa",
"hoopa": "Confined",
"hoopaUnbound": "Libertado", "hoopaUnbound": "Libertado",
"oricorioBaile": "Flamenco", "oricorioBaile": "Flamenco",
"oricorioPompom": "Pompom", "oricorioPompom": "Pompom",
"oricorioPau": "Hula", "oricorioPau": "Hula",
"oricorioSensu": "Leque", "oricorioSensu": "Leque",
"rockruff": "Normal",
"rockruffOwnTempo": "Próprio Tempo", "rockruffOwnTempo": "Próprio Tempo",
"rockruffMidday": "Diurno", "rockruffMidday": "Diurno",
"rockruffMidnight": "Noturno", "rockruffMidnight": "Noturno",
"rockruffMidnight": "Crepúsculo", "rockruffDusk": "Crepúsculo",
"wishiwashi": "Solo Form",
"wishiwashiSchool": "Cardume", "wishiwashiSchool": "Cardume",
"typeNullNormal": "Tipo: Normal", "typeNullNormal": "Tipo: Normal",
"typeNullFighting": "Tipo: Lutador", "typeNullFighting": "Tipo: Lutador",
@ -178,11 +195,19 @@
"miniorViolet": "Violeta", "miniorViolet": "Violeta",
"mimikyuDisguised": "Disfarçado", "mimikyuDisguised": "Disfarçado",
"mimikyuBusted": "Descoberto", "mimikyuBusted": "Descoberto",
"necrozma": "Normal",
"necrozmaDuskMane": "Juba Crepúsculo", "necrozmaDuskMane": "Juba Crepúsculo",
"necrozmaDawnWings": "Asas Alvorada", "necrozmaDawnWings": "Asas Alvorada",
"necrozmaUltra": "Ultra", "necrozmaUltra": "Ultra",
"magearna": "Normal",
"magearnaOriginal": "Original", "magearnaOriginal": "Original",
"marshadow": "Normal",
"marshadowZenith": "Zênite", "marshadowZenith": "Zênite",
"cramorant": "Normal",
"cramorantGulping": "Gulping Form",
"cramorantGorging": "Gorging Form",
"toxelAmped": "Amped Form",
"toxelLowkey": "Low-Key Form",
"sinisteaPhony": "Falsificado", "sinisteaPhony": "Falsificado",
"sinisteaAntique": "Autêntico", "sinisteaAntique": "Autêntico",
"milceryVanillaCream": "Creme de Baunilha", "milceryVanillaCream": "Creme de Baunilha",
@ -194,6 +219,7 @@
"milceryRubySwirl": "Mistura Rubi", "milceryRubySwirl": "Mistura Rubi",
"milceryCaramelSwirl": "Mistura de Caramelo", "milceryCaramelSwirl": "Mistura de Caramelo",
"milceryRainbowSwirl": "Mistura Tricolor", "milceryRainbowSwirl": "Mistura Tricolor",
"eiscue": "Ice Face",
"eiscueNoIce": "Descongelado", "eiscueNoIce": "Descongelado",
"indeedeeMale": "Macho", "indeedeeMale": "Macho",
"indeedeeFemale": "Fêmea", "indeedeeFemale": "Fêmea",
@ -205,7 +231,9 @@
"zamazentaCrowned": "Coroado", "zamazentaCrowned": "Coroado",
"kubfuSingleStrike": "Golpe Decisivo", "kubfuSingleStrike": "Golpe Decisivo",
"kubfuRapidStrike": "Golpe Fluido", "kubfuRapidStrike": "Golpe Fluido",
"zarude": "Normal",
"zarudeDada": "Papa", "zarudeDada": "Papa",
"calyrex": "Normal",
"calyrexIce": "Cavaleiro Glacial", "calyrexIce": "Cavaleiro Glacial",
"calyrexShadow": "Cavaleiro Espectral", "calyrexShadow": "Cavaleiro Espectral",
"basculinMale": "Macho", "basculinMale": "Macho",
@ -251,8 +279,10 @@
"ogerponHearthflameMaskTera": "Máscara Fornalha Terastalizada", "ogerponHearthflameMaskTera": "Máscara Fornalha Terastalizada",
"ogerponCornerstoneMask": "Máscara Alicerce", "ogerponCornerstoneMask": "Máscara Alicerce",
"ogerponCornerstoneMaskTera": "Máscara Alicerce Terastalizada", "ogerponCornerstoneMaskTera": "Máscara Alicerce Terastalizada",
"terpagos": "Normal Form",
"terpagosTerastal": "Teracristal", "terpagosTerastal": "Teracristal",
"terpagosStellar": "Astral", "terpagosStellar": "Astral",
"galarDarumaka": "Standard Mode",
"galarDarumakaZen": "Zen", "galarDarumakaZen": "Zen",
"paldeaTaurosCombat": "Combate", "paldeaTaurosCombat": "Combate",
"paldeaTaurosBlaze": "Chamas", "paldeaTaurosBlaze": "Chamas",

View File

@ -1,4 +1,5 @@
{ {
"pikachu": "Normal",
"pikachuCosplay": "换装", "pikachuCosplay": "换装",
"pikachuCoolCosplay": "摇滚巨星", "pikachuCoolCosplay": "摇滚巨星",
"pikachuBeautyCosplay": "贵妇", "pikachuBeautyCosplay": "贵妇",
@ -6,7 +7,9 @@
"pikachuSmartCosplay": "博士", "pikachuSmartCosplay": "博士",
"pikachuToughCosplay": "面罩摔跤手", "pikachuToughCosplay": "面罩摔跤手",
"pikachuPartner": "搭档", "pikachuPartner": "搭档",
"eevee": "Normal",
"eeveePartner": "搭档", "eeveePartner": "搭档",
"pichu": "Normal",
"pichuSpiky": "刺刺耳", "pichuSpiky": "刺刺耳",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
@ -36,6 +39,7 @@
"unownZ": "Z", "unownZ": "Z",
"unownExclamation": "!", "unownExclamation": "!",
"unownQuestion": "?", "unownQuestion": "?",
"castform": "Normal Form",
"castformSunny": "晴天", "castformSunny": "晴天",
"castformRainy": "雨天", "castformRainy": "雨天",
"castformSnowy": "雪天", "castformSnowy": "雪天",
@ -50,12 +54,15 @@
"cherubiSunshine": "Sunshine", "cherubiSunshine": "Sunshine",
"shellosEast": "东海", "shellosEast": "东海",
"shellosWest": "西海", "shellosWest": "西海",
"rotom": "Normal",
"rotomHeat": "加热", "rotomHeat": "加热",
"rotomWash": "清洗", "rotomWash": "清洗",
"rotomFrost": "结冰", "rotomFrost": "结冰",
"rotomFan": "旋转", "rotomFan": "旋转",
"rotomMow": "切割", "rotomMow": "切割",
"dialga": "Normal",
"dialgaOrigin": "Origin", "dialgaOrigin": "Origin",
"palkia": "Normal",
"palkiaOrigin": "Origin", "palkiaOrigin": "Origin",
"giratinaAltered": "别种", "giratinaAltered": "别种",
"giratinaOrigin": "Origin", "giratinaOrigin": "Origin",
@ -64,6 +71,7 @@
"basculinRedStriped": "红条纹", "basculinRedStriped": "红条纹",
"basculinBlueStriped": "蓝条纹", "basculinBlueStriped": "蓝条纹",
"basculinWhiteStriped": "白条纹", "basculinWhiteStriped": "白条纹",
"darumaka": "Standard Mode",
"darumakaZen": "Zen", "darumakaZen": "Zen",
"deerlingSpring": "春天", "deerlingSpring": "春天",
"deerlingSummer": "夏天", "deerlingSummer": "夏天",
@ -75,17 +83,21 @@
"thundurusTherian": "Therian", "thundurusTherian": "Therian",
"landorusIncarnate": "化身", "landorusIncarnate": "化身",
"landorusTherian": "Therian", "landorusTherian": "Therian",
"kyurem": "Normal",
"kyuremBlack": "Black", "kyuremBlack": "Black",
"kyuremWhite": "White", "kyuremWhite": "White",
"keldeoOrdinary": "通常", "keldeoOrdinary": "通常",
"keldeoResolute": "Resolute", "keldeoResolute": "Resolute",
"meloettaAria": "歌声", "meloettaAria": "歌声",
"meloettaPirouette": "舞步形态", "meloettaPirouette": "舞步形态",
"genesect": "Normal",
"genesectShock": "Shock Drive", "genesectShock": "Shock Drive",
"genesectBurn": "Burn Drive", "genesectBurn": "Burn Drive",
"genesectChill": "Chill Drive", "genesectChill": "Chill Drive",
"genesectDouse": "Douse Drive", "genesectDouse": "Douse Drive",
"froakie": "Normal",
"froakieBattleBond": "牵绊变身", "froakieBattleBond": "牵绊变身",
"froakieAsh": "Ash",
"scatterbugMeadow": "花园花纹", "scatterbugMeadow": "花园花纹",
"scatterbugIcySnow": "冰雪花纹", "scatterbugIcySnow": "冰雪花纹",
"scatterbugPolar": "雪国花纹", "scatterbugPolar": "雪国花纹",
@ -111,6 +123,7 @@
"flabebeOrange": "橙花", "flabebeOrange": "橙花",
"flabebeBlue": "蓝花", "flabebeBlue": "蓝花",
"flabebeWhite": "白花", "flabebeWhite": "白花",
"furfrou": "Natural Form",
"furfrouHeart": "心形造型", "furfrouHeart": "心形造型",
"furfrouStar": "星形造型", "furfrouStar": "星形造型",
"furfrouDiamond": "菱形造型", "furfrouDiamond": "菱形造型",
@ -124,6 +137,7 @@
"espurrFemale": "Female", "espurrFemale": "Female",
"honedgeShiled": "Shield", "honedgeShiled": "Shield",
"honedgeBlade": "Blade", "honedgeBlade": "Blade",
"pumpkaboo": "Average Size",
"pumpkabooSmall": "小尺寸", "pumpkabooSmall": "小尺寸",
"pumpkabooLarge": "大尺寸", "pumpkabooLarge": "大尺寸",
"pumpkabooSuper": "特大尺寸", "pumpkabooSuper": "特大尺寸",
@ -134,15 +148,18 @@
"zygarde50Pc": "50%形态 群聚变形", "zygarde50Pc": "50%形态 群聚变形",
"zygarde10Pc": "10%形态 群聚变形", "zygarde10Pc": "10%形态 群聚变形",
"zygardeComplete": "完全体形态", "zygardeComplete": "完全体形态",
"hoopa": "Confined",
"hoopaUnbound": "Unbound", "hoopaUnbound": "Unbound",
"oricorioBaile": "热辣热辣风格", "oricorioBaile": "热辣热辣风格",
"oricorioPompom": "啪滋啪滋风格", "oricorioPompom": "啪滋啪滋风格",
"oricorioPau": "呼拉呼拉风格", "oricorioPau": "呼拉呼拉风格",
"oricorioSensu": "轻盈轻盈风格", "oricorioSensu": "轻盈轻盈风格",
"rockruff": "Normal",
"rockruffOwnTempo": "特殊岩狗狗", "rockruffOwnTempo": "特殊岩狗狗",
"rockruffMidday": "Midday", "rockruffMidday": "Midday",
"rockruffMidnight": "Midnight", "rockruffMidnight": "Midnight",
"rockruffMidnight": "Dusk", "rockruffDusk": "Dusk",
"wishiwashi": "Solo Form",
"wishiwashiSchool": "School", "wishiwashiSchool": "School",
"typeNullNormal": "Type: Normal", "typeNullNormal": "Type: Normal",
"typeNullFighting": "Type: Fighting", "typeNullFighting": "Type: Fighting",
@ -178,11 +195,19 @@
"miniorViolet": "紫色", "miniorViolet": "紫色",
"mimikyuDisguised": "化形", "mimikyuDisguised": "化形",
"mimikyuBusted": "现形", "mimikyuBusted": "现形",
"necrozma": "Normal",
"necrozmaDuskMane": "Dusk Mane", "necrozmaDuskMane": "Dusk Mane",
"necrozmaDawnWings": "Dawn Wings", "necrozmaDawnWings": "Dawn Wings",
"necrozmaUltra": "Ultra", "necrozmaUltra": "Ultra",
"magearna": "Normal",
"magearnaOriginal": "500年前的颜色", "magearnaOriginal": "500年前的颜色",
"marshadow": "Normal",
"marshadowZenith": "全力", "marshadowZenith": "全力",
"cramorant": "Normal",
"cramorantGulping": "Gulping Form",
"cramorantGorging": "Gorging Form",
"toxelAmped": "Amped Form",
"toxelLowkey": "Low-Key Form",
"sinisteaPhony": "赝品", "sinisteaPhony": "赝品",
"sinisteaAntique": "真品", "sinisteaAntique": "真品",
"milceryVanillaCream": "Vanilla Cream", "milceryVanillaCream": "Vanilla Cream",
@ -194,6 +219,7 @@
"milceryRubySwirl": "Ruby Swirl", "milceryRubySwirl": "Ruby Swirl",
"milceryCaramelSwirl": "Caramel Swirl", "milceryCaramelSwirl": "Caramel Swirl",
"milceryRainbowSwirl": "Rainbow Swirl", "milceryRainbowSwirl": "Rainbow Swirl",
"eiscue": "Ice Face",
"eiscueNoIce": "解冻头", "eiscueNoIce": "解冻头",
"indeedeeMale": "雄性", "indeedeeMale": "雄性",
"indeedeeFemale": "雌性", "indeedeeFemale": "雌性",
@ -205,7 +231,9 @@
"zamazentaCrowned": "Crowned", "zamazentaCrowned": "Crowned",
"kubfuSingleStrike": "Single Strike", "kubfuSingleStrike": "Single Strike",
"kubfuRapidStrike": "Rapid Strike", "kubfuRapidStrike": "Rapid Strike",
"zarude": "Normal",
"zarudeDada": "老爹", "zarudeDada": "老爹",
"calyrex": "Normal",
"calyrexIce": "Ice Rider", "calyrexIce": "Ice Rider",
"calyrexShadow": "Shadow Rider", "calyrexShadow": "Shadow Rider",
"basculinMale": "Male", "basculinMale": "Male",
@ -251,8 +279,10 @@
"ogerponHearthflameMaskTera": "Hearthflame Mask Terastallized", "ogerponHearthflameMaskTera": "Hearthflame Mask Terastallized",
"ogerponCornerstoneMask": "Cornerstone Mask", "ogerponCornerstoneMask": "Cornerstone Mask",
"ogerponCornerstoneMaskTera": "Cornerstone Mask Terastallized", "ogerponCornerstoneMaskTera": "Cornerstone Mask Terastallized",
"terpagos": "Normal Form",
"terpagosTerastal": "Terastal", "terpagosTerastal": "Terastal",
"terpagosStellar": "Stellar", "terpagosStellar": "Stellar",
"galarDarumaka": "Standard Mode",
"galarDarumakaZen": "Zen", "galarDarumakaZen": "Zen",
"paldeaTaurosCombat": "斗战种", "paldeaTaurosCombat": "斗战种",
"paldeaTaurosBlaze": "火炽种", "paldeaTaurosBlaze": "火炽种",

View File

@ -1,4 +1,5 @@
{ {
"pikachu": "Normal",
"pikachuCosplay": "換裝", "pikachuCosplay": "換裝",
"pikachuCoolCosplay": "搖滾巨星", "pikachuCoolCosplay": "搖滾巨星",
"pikachuBeautyCosplay": "貴婦", "pikachuBeautyCosplay": "貴婦",
@ -6,7 +7,9 @@
"pikachuSmartCosplay": "博士", "pikachuSmartCosplay": "博士",
"pikachuToughCosplay": "面罩摔跤手", "pikachuToughCosplay": "面罩摔跤手",
"pikachuPartner": "搭檔", "pikachuPartner": "搭檔",
"eevee": "Normal",
"eeveePartner": "搭檔", "eeveePartner": "搭檔",
"pichu": "Normal",
"pichuSpiky": "刺刺耳", "pichuSpiky": "刺刺耳",
"unownA": "A", "unownA": "A",
"unownB": "B", "unownB": "B",
@ -36,6 +39,7 @@
"unownZ": "Z", "unownZ": "Z",
"unownExclamation": "!", "unownExclamation": "!",
"unownQuestion": "?", "unownQuestion": "?",
"castform": "Normal Form",
"castformSunny": "晴天", "castformSunny": "晴天",
"castformRainy": "雨天", "castformRainy": "雨天",
"castformSnowy": "雪天", "castformSnowy": "雪天",
@ -50,12 +54,15 @@
"cherubiSunshine": "Sunshine", "cherubiSunshine": "Sunshine",
"shellosEast": "東海", "shellosEast": "東海",
"shellosWest": "西海", "shellosWest": "西海",
"rotom": "Normal",
"rotomHeat": "加熱", "rotomHeat": "加熱",
"rotomWash": "清洗", "rotomWash": "清洗",
"rotomFrost": "結冰", "rotomFrost": "結冰",
"rotomFan": "旋轉", "rotomFan": "旋轉",
"rotomMow": "切割", "rotomMow": "切割",
"dialga": "Normal",
"dialgaOrigin": "Origin", "dialgaOrigin": "Origin",
"palkia": "Normal",
"palkiaOrigin": "Origin", "palkiaOrigin": "Origin",
"giratinaAltered": "別種", "giratinaAltered": "別種",
"giratinaOrigin": "Origin", "giratinaOrigin": "Origin",
@ -64,6 +71,7 @@
"basculinRedStriped": "紅條紋", "basculinRedStriped": "紅條紋",
"basculinBlueStriped": "藍條紋", "basculinBlueStriped": "藍條紋",
"basculinWhiteStriped": "白條紋", "basculinWhiteStriped": "白條紋",
"darumaka": "Standard Mode",
"darumakaZen": "Zen", "darumakaZen": "Zen",
"deerlingSpring": "春天", "deerlingSpring": "春天",
"deerlingSummer": "夏天", "deerlingSummer": "夏天",
@ -75,17 +83,21 @@
"thundurusTherian": "Therian", "thundurusTherian": "Therian",
"landorusIncarnate": "化身", "landorusIncarnate": "化身",
"landorusTherian": "Therian", "landorusTherian": "Therian",
"kyurem": "Normal",
"kyuremBlack": "Black", "kyuremBlack": "Black",
"kyuremWhite": "White", "kyuremWhite": "White",
"keldeoOrdinary": "通常", "keldeoOrdinary": "通常",
"keldeoResolute": "Resolute", "keldeoResolute": "Resolute",
"meloettaAria": "歌聲", "meloettaAria": "歌聲",
"meloettaPirouette": "舞步形態", "meloettaPirouette": "舞步形態",
"genesect": "Normal",
"genesectShock": "Shock Drive", "genesectShock": "Shock Drive",
"genesectBurn": "Burn Drive", "genesectBurn": "Burn Drive",
"genesectChill": "Chill Drive", "genesectChill": "Chill Drive",
"genesectDouse": "Douse Drive", "genesectDouse": "Douse Drive",
"froakie": "Normal",
"froakieBattleBond": "牽絆變身", "froakieBattleBond": "牽絆變身",
"froakieAsh": "Ash",
"scatterbugMeadow": "花園花紋", "scatterbugMeadow": "花園花紋",
"scatterbugIcySnow": "冰雪花紋", "scatterbugIcySnow": "冰雪花紋",
"scatterbugPolar": "雪國花紋", "scatterbugPolar": "雪國花紋",
@ -111,6 +123,7 @@
"flabebeOrange": "橙花", "flabebeOrange": "橙花",
"flabebeBlue": "藍花", "flabebeBlue": "藍花",
"flabebeWhite": "白花", "flabebeWhite": "白花",
"furfrou": "Natural Form",
"furfrouHeart": "心形造型", "furfrouHeart": "心形造型",
"furfrouStar": "星形造型", "furfrouStar": "星形造型",
"furfrouDiamond": "菱形造型", "furfrouDiamond": "菱形造型",
@ -124,6 +137,7 @@
"espurrFemale": "Female", "espurrFemale": "Female",
"honedgeShiled": "Shield", "honedgeShiled": "Shield",
"honedgeBlade": "Blade", "honedgeBlade": "Blade",
"pumpkaboo": "Average Size",
"pumpkabooSmall": "小尺寸", "pumpkabooSmall": "小尺寸",
"pumpkabooLarge": "大尺寸", "pumpkabooLarge": "大尺寸",
"pumpkabooSuper": "特大尺寸", "pumpkabooSuper": "特大尺寸",
@ -134,15 +148,18 @@
"zygarde50Pc": "50%形態 群聚變形", "zygarde50Pc": "50%形態 群聚變形",
"zygarde10Pc": "10%形態 群聚變形", "zygarde10Pc": "10%形態 群聚變形",
"zygardeComplete": "完全體形態", "zygardeComplete": "完全體形態",
"hoopa": "Confined",
"hoopaUnbound": "Unbound", "hoopaUnbound": "Unbound",
"oricorioBaile": "熱辣熱辣風格", "oricorioBaile": "熱辣熱辣風格",
"oricorioPompom": "啪滋啪滋風格", "oricorioPompom": "啪滋啪滋風格",
"oricorioPau": "呼拉呼拉風格", "oricorioPau": "呼拉呼拉風格",
"oricorioSensu": "輕盈輕盈風格", "oricorioSensu": "輕盈輕盈風格",
"rockruff": "Normal",
"rockruffOwnTempo": "特殊岩狗狗", "rockruffOwnTempo": "特殊岩狗狗",
"rockruffMidday": "Midday", "rockruffMidday": "Midday",
"rockruffMidnight": "Midnight", "rockruffMidnight": "Midnight",
"rockruffMidnight": "Dusk", "rockruffDusk": "Dusk",
"wishiwashi": "Solo Form",
"wishiwashiSchool": "School", "wishiwashiSchool": "School",
"typeNullNormal": "Type: Normal", "typeNullNormal": "Type: Normal",
"typeNullFighting": "Type: Fighting", "typeNullFighting": "Type: Fighting",
@ -178,11 +195,19 @@
"miniorViolet": "紫色", "miniorViolet": "紫色",
"mimikyuDisguised": "化形", "mimikyuDisguised": "化形",
"mimikyuBusted": "現形", "mimikyuBusted": "現形",
"necrozma": "Normal",
"necrozmaDuskMane": "Dusk Mane", "necrozmaDuskMane": "Dusk Mane",
"necrozmaDawnWings": "Dawn Wings", "necrozmaDawnWings": "Dawn Wings",
"necrozmaUltra": "Ultra", "necrozmaUltra": "Ultra",
"magearna": "Normal",
"magearnaOriginal": "500年前的顔色", "magearnaOriginal": "500年前的顔色",
"marshadow": "Normal",
"marshadowZenith": "全力", "marshadowZenith": "全力",
"cramorant": "Normal",
"cramorantGulping": "Gulping Form",
"cramorantGorging": "Gorging Form",
"toxelAmped": "Amped Form",
"toxelLowkey": "Low-Key Form",
"sinisteaPhony": "赝品", "sinisteaPhony": "赝品",
"sinisteaAntique": "真品", "sinisteaAntique": "真品",
"milceryVanillaCream": "Vanilla Cream", "milceryVanillaCream": "Vanilla Cream",
@ -194,6 +219,7 @@
"milceryRubySwirl": "Ruby Swirl", "milceryRubySwirl": "Ruby Swirl",
"milceryCaramelSwirl": "Caramel Swirl", "milceryCaramelSwirl": "Caramel Swirl",
"milceryRainbowSwirl": "Rainbow Swirl", "milceryRainbowSwirl": "Rainbow Swirl",
"eiscue": "Ice Face",
"eiscueNoIce": "解凍頭", "eiscueNoIce": "解凍頭",
"indeedeeMale": "雄性", "indeedeeMale": "雄性",
"indeedeeFemale": "雌性", "indeedeeFemale": "雌性",
@ -205,7 +231,9 @@
"zamazentaCrowned": "Crowned", "zamazentaCrowned": "Crowned",
"kubfuSingleStrike": "Single Strike", "kubfuSingleStrike": "Single Strike",
"kubfuRapidStrike": "Rapid Strike", "kubfuRapidStrike": "Rapid Strike",
"zarude": "Normal",
"zarudeDada": "老爹", "zarudeDada": "老爹",
"calyrex": "Normal",
"calyrexIce": "Ice Rider", "calyrexIce": "Ice Rider",
"calyrexShadow": "Shadow Rider", "calyrexShadow": "Shadow Rider",
"basculinMale": "Male", "basculinMale": "Male",
@ -251,8 +279,10 @@
"ogerponHearthflameMaskTera": "Hearthflame Mask Terastallized", "ogerponHearthflameMaskTera": "Hearthflame Mask Terastallized",
"ogerponCornerstoneMask": "Cornerstone Mask", "ogerponCornerstoneMask": "Cornerstone Mask",
"ogerponCornerstoneMaskTera": "Cornerstone Mask Terastallized", "ogerponCornerstoneMaskTera": "Cornerstone Mask Terastallized",
"terpagos": "Normal Form",
"terpagosTerastal": "Terastal", "terpagosTerastal": "Terastal",
"terpagosStellar": "Stellar", "terpagosStellar": "Stellar",
"galarDarumaka": "Standard Mode",
"galarDarumakaZen": "Zen", "galarDarumakaZen": "Zen",
"paldeaTaurosCombat": "鬥戰種", "paldeaTaurosCombat": "鬥戰種",
"paldeaTaurosBlaze": "火熾種", "paldeaTaurosBlaze": "火熾種",

View File

@ -0,0 +1,87 @@
import { BattlerIndex } from "#app/battle";
import { allMoves, ShellSideArmCategoryAttr } from "#app/data/move";
import { Abilities } from "#enums/abilities";
import { Moves } from "#enums/moves";
import { Species } from "#enums/species";
import GameManager from "#test/utils/gameManager";
import Phaser from "phaser";
import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest";
describe("Moves - Shell Side Arm", () => {
let phaserGame: Phaser.Game;
let game: GameManager;
const TIMEOUT = 20 * 1000;
beforeAll(() => {
phaserGame = new Phaser.Game({
type: Phaser.HEADLESS,
});
});
afterEach(() => {
game.phaseInterceptor.restoreOg();
});
beforeEach(() => {
game = new GameManager(phaserGame);
game.override
.moveset([Moves.SHELL_SIDE_ARM])
.battleType("single")
.startingLevel(100)
.enemyLevel(100)
.enemyAbility(Abilities.BALL_FETCH)
.enemyMoveset(Moves.SPLASH);
});
it("becomes a physical attack if forecasted to deal more damage as physical", async () => {
game.override.enemySpecies(Species.SNORLAX);
await game.classicMode.startBattle([Species.MANAPHY]);
const shellSideArm = allMoves[Moves.SHELL_SIDE_ARM];
const shellSideArmAttr = shellSideArm.getAttrs(ShellSideArmCategoryAttr)[0];
vi.spyOn(shellSideArmAttr, "apply");
game.move.select(Moves.SHELL_SIDE_ARM);
await game.phaseInterceptor.to("MoveEffectPhase");
expect(shellSideArmAttr.apply).toHaveLastReturnedWith(true);
}, TIMEOUT);
it("remains a special attack if forecasted to deal more damage as special", async () => {
game.override.enemySpecies(Species.SLOWBRO);
await game.classicMode.startBattle([Species.MANAPHY]);
const shellSideArm = allMoves[Moves.SHELL_SIDE_ARM];
const shellSideArmAttr = shellSideArm.getAttrs(ShellSideArmCategoryAttr)[0];
vi.spyOn(shellSideArmAttr, "apply");
game.move.select(Moves.SHELL_SIDE_ARM);
await game.phaseInterceptor.to("MoveEffectPhase");
expect(shellSideArmAttr.apply).toHaveLastReturnedWith(false);
}, TIMEOUT);
it("respects stat stage changes when forecasting base damage", async () => {
game.override
.enemySpecies(Species.SNORLAX)
.enemyMoveset(Moves.COTTON_GUARD);
await game.classicMode.startBattle([Species.MANAPHY]);
const shellSideArm = allMoves[Moves.SHELL_SIDE_ARM];
const shellSideArmAttr = shellSideArm.getAttrs(ShellSideArmCategoryAttr)[0];
vi.spyOn(shellSideArmAttr, "apply");
game.move.select(Moves.SHELL_SIDE_ARM);
await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]);
await game.phaseInterceptor.to("BerryPhase", false);
expect(shellSideArmAttr.apply).toHaveLastReturnedWith(false);
}, TIMEOUT);
});

View File

@ -344,6 +344,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler {
super.clear(); super.clear();
this.config = null; this.config = null;
this.optionSelectContainer.setVisible(false); this.optionSelectContainer.setVisible(false);
this.scrollCursor = 0;
this.eraseCursor(); this.eraseCursor();
} }

View File

@ -1,12 +1,13 @@
import BattleScene from "../battle-scene"; import BattleScene from "#app/battle-scene";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import i18next from "i18next"; import i18next from "i18next";
import { Achv, achvs, getAchievementDescription } from "../system/achv"; import { Achv, achvs, getAchievementDescription } from "#app/system/achv";
import { Voucher, getVoucherTypeIcon, getVoucherTypeName, vouchers } from "../system/voucher"; import { Voucher, getVoucherTypeIcon, getVoucherTypeName, vouchers } from "#app/system/voucher";
import MessageUiHandler from "./message-ui-handler"; import MessageUiHandler from "#app/ui/message-ui-handler";
import { addTextObject, TextStyle } from "./text"; import { addTextObject, TextStyle } from "#app/ui/text";
import { Mode } from "./ui"; import { Mode } from "#app/ui/ui";
import { addWindow } from "./ui-theme"; import { addWindow } from "#app/ui/ui-theme";
import { ScrollBar } from "#app/ui/scroll-bar";
import { PlayerGender } from "#enums/player-gender"; import { PlayerGender } from "#enums/player-gender";
enum Page { enum Page {
@ -49,6 +50,7 @@ export default class AchvsUiHandler extends MessageUiHandler {
private vouchersTotal: number; private vouchersTotal: number;
private currentTotal: number; private currentTotal: number;
private scrollBar: ScrollBar;
private scrollCursor: number; private scrollCursor: number;
private cursorObj: Phaser.GameObjects.NineSlice | null; private cursorObj: Phaser.GameObjects.NineSlice | null;
private currentPage: Page; private currentPage: Page;
@ -91,7 +93,10 @@ export default class AchvsUiHandler extends MessageUiHandler {
this.iconsBg = addWindow(this.scene, 0, this.headerBg.height, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - this.headerBg.height - 68); this.iconsBg = addWindow(this.scene, 0, this.headerBg.height, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - this.headerBg.height - 68);
this.iconsBg.setOrigin(0, 0); this.iconsBg.setOrigin(0, 0);
this.iconsContainer = this.scene.add.container(6, this.headerBg.height + 6); const yOffset = 6;
this.scrollBar = new ScrollBar(this.scene, this.iconsBg.width - 9, this.iconsBg.y + yOffset, 4, this.iconsBg.height - yOffset * 2, this.ROWS);
this.iconsContainer = this.scene.add.container(5, this.headerBg.height + 8);
this.icons = []; this.icons = [];
@ -148,6 +153,7 @@ export default class AchvsUiHandler extends MessageUiHandler {
this.mainContainer.add(this.headerText); this.mainContainer.add(this.headerText);
this.mainContainer.add(this.headerActionText); this.mainContainer.add(this.headerActionText);
this.mainContainer.add(this.iconsBg); this.mainContainer.add(this.iconsBg);
this.mainContainer.add(this.scrollBar);
this.mainContainer.add(this.iconsContainer); this.mainContainer.add(this.iconsContainer);
this.mainContainer.add(titleBg); this.mainContainer.add(titleBg);
this.mainContainer.add(this.titleText); this.mainContainer.add(this.titleText);
@ -162,6 +168,7 @@ export default class AchvsUiHandler extends MessageUiHandler {
this.currentPage = Page.ACHIEVEMENTS; this.currentPage = Page.ACHIEVEMENTS;
this.setCursor(0); this.setCursor(0);
this.setScrollCursor(0);
this.mainContainer.setVisible(false); this.mainContainer.setVisible(false);
} }
@ -175,6 +182,8 @@ export default class AchvsUiHandler extends MessageUiHandler {
this.mainContainer.setVisible(true); this.mainContainer.setVisible(true);
this.setCursor(0); this.setCursor(0);
this.setScrollCursor(0); this.setScrollCursor(0);
this.scrollBar.setTotalRows(Math.ceil(this.currentTotal / this.COLS));
this.scrollBar.setScrollCursor(0);
this.getUi().moveTo(this.mainContainer, this.getUi().length - 1); this.getUi().moveTo(this.mainContainer, this.getUi().length - 1);
@ -224,6 +233,8 @@ export default class AchvsUiHandler extends MessageUiHandler {
this.updateAchvIcons(); this.updateAchvIcons();
} }
this.setCursor(0, true); this.setCursor(0, true);
this.scrollBar.setTotalRows(Math.ceil(this.currentTotal / this.COLS));
this.scrollBar.setScrollCursor(0);
this.mainContainer.update(); this.mainContainer.update();
} }
if (button === Button.CANCEL) { if (button === Button.CANCEL) {
@ -237,32 +248,44 @@ export default class AchvsUiHandler extends MessageUiHandler {
if (this.cursor < this.COLS) { if (this.cursor < this.COLS) {
if (this.scrollCursor) { if (this.scrollCursor) {
success = this.setScrollCursor(this.scrollCursor - 1); success = this.setScrollCursor(this.scrollCursor - 1);
} else {
// Wrap around to the last row
success = this.setScrollCursor(Math.ceil(this.currentTotal / this.COLS) - this.ROWS);
let newCursorIndex = this.cursor + (this.ROWS - 1) * this.COLS;
if (newCursorIndex > this.currentTotal - this.scrollCursor * this.COLS -1) {
newCursorIndex -= this.COLS;
}
success = success && this.setCursor(newCursorIndex);
} }
} else { } else {
success = this.setCursor(this.cursor - this.COLS); success = this.setCursor(this.cursor - this.COLS);
} }
break; break;
case Button.DOWN: case Button.DOWN:
const canMoveDown = (this.cursor + itemOffset) + this.COLS < this.currentTotal; const canMoveDown = itemOffset + 1 < this.currentTotal;
if (rowIndex >= this.ROWS - 1) { if (rowIndex >= this.ROWS - 1) {
if (this.scrollCursor < Math.ceil(this.currentTotal / this.COLS) - this.ROWS && canMoveDown) { if (this.scrollCursor < Math.ceil(this.currentTotal / this.COLS) - this.ROWS && canMoveDown) {
// scroll down one row
success = this.setScrollCursor(this.scrollCursor + 1); success = this.setScrollCursor(this.scrollCursor + 1);
} else {
// wrap back to the first row
success = this.setScrollCursor(0) && this.setCursor(this.cursor % this.COLS);
} }
} else if (canMoveDown) { } else if (canMoveDown) {
success = this.setCursor(this.cursor + this.COLS); success = this.setCursor(Math.min(this.cursor + this.COLS, this.currentTotal - itemOffset - 1));
} }
break; break;
case Button.LEFT: case Button.LEFT:
if (!this.cursor && this.scrollCursor) { if (this.cursor % this.COLS === 0) {
success = this.setScrollCursor(this.scrollCursor - 1) && this.setCursor(this.cursor + (this.COLS - 1)); success = this.setCursor(Math.min(this.cursor + this.COLS - 1, this.currentTotal - itemOffset - 1));
} else if (this.cursor) { } else {
success = this.setCursor(this.cursor - 1); success = this.setCursor(this.cursor - 1);
} }
break; break;
case Button.RIGHT: case Button.RIGHT:
if (this.cursor + 1 === this.ROWS * this.COLS && this.scrollCursor < Math.ceil(this.currentTotal / this.COLS) - this.ROWS) { if ((this.cursor + 1) % this.COLS === 0 || (this.cursor + itemOffset) === (this.currentTotal - 1)) {
success = this.setScrollCursor(this.scrollCursor + 1) && this.setCursor(this.cursor - (this.COLS - 1)); success = this.setCursor(this.cursor - this.cursor % this.COLS);
} else if (this.cursor + itemOffset < this.currentTotal - 1) { } else {
success = this.setCursor(this.cursor + 1); success = this.setCursor(this.cursor + 1);
} }
break; break;
@ -315,15 +338,22 @@ export default class AchvsUiHandler extends MessageUiHandler {
} }
this.scrollCursor = scrollCursor; this.scrollCursor = scrollCursor;
this.scrollBar.setScrollCursor(this.scrollCursor);
// Cursor cannot go farther than the last element in the list
const maxCursor = Math.min(this.cursor, this.currentTotal - this.scrollCursor * this.COLS - 1);
if (maxCursor !== this.cursor) {
this.setCursor(maxCursor);
}
switch (this.currentPage) { switch (this.currentPage) {
case Page.ACHIEVEMENTS: case Page.ACHIEVEMENTS:
this.updateAchvIcons(); this.updateAchvIcons();
this.showAchv(achvs[Object.keys(achvs)[Math.min(this.cursor + this.scrollCursor * this.COLS, Object.values(achvs).length - 1)]]); this.showAchv(achvs[Object.keys(achvs)[this.cursor + this.scrollCursor * this.COLS]]);
break; break;
case Page.VOUCHERS: case Page.VOUCHERS:
this.updateVoucherIcons(); this.updateVoucherIcons();
this.showVoucher(vouchers[Object.keys(vouchers)[Math.min(this.cursor + this.scrollCursor * this.COLS, Object.values(vouchers).length - 1)]]); this.showVoucher(vouchers[Object.keys(vouchers)[this.cursor + this.scrollCursor * this.COLS]]);
break; break;
} }
return true; return true;
@ -411,6 +441,7 @@ export default class AchvsUiHandler extends MessageUiHandler {
super.clear(); super.clear();
this.currentPage = Page.ACHIEVEMENTS; this.currentPage = Page.ACHIEVEMENTS;
this.mainContainer.setVisible(false); this.mainContainer.setVisible(false);
this.setScrollCursor(0);
this.eraseCursor(); this.eraseCursor();
} }

View File

@ -235,7 +235,19 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container {
this.pokemonGenderText.setVisible(false); this.pokemonGenderText.setVisible(false);
} }
if (pokemon.species.forms?.[pokemon.formIndex]?.formName && pokemon.species.forms?.[pokemon.formIndex]?.formName !== "Normal") { const formKey = (pokemon.species?.forms?.[pokemon.formIndex!]?.formKey);
const formText = Utils.capitalizeString(formKey, "-", false, false) || "";
const speciesName = Utils.capitalizeString(Species[pokemon.species.getRootSpeciesId()], "_", true, false);
let formName = "";
if (pokemon.species.speciesId === Species.ARCEUS) {
formName = i18next.t(`pokemonInfo:Type.${formText?.toUpperCase()}`);
} else {
const i18key = `pokemonForm:${speciesName}${formText}`;
formName = i18next.exists(i18key) ? i18next.t(i18key) : formText;
}
if (formName) {
this.pokemonFormLabelText.setVisible(true); this.pokemonFormLabelText.setVisible(true);
this.pokemonFormText.setVisible(true); this.pokemonFormText.setVisible(true);
const newForm = BigInt(1 << pokemon.formIndex) * DexAttr.DEFAULT_FORM; const newForm = BigInt(1 << pokemon.formIndex) * DexAttr.DEFAULT_FORM;
@ -248,26 +260,13 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container {
this.pokemonFormLabelText.setShadowColor(getTextColor(TextStyle.WINDOW, true, this.scene.uiTheme)); this.pokemonFormLabelText.setShadowColor(getTextColor(TextStyle.WINDOW, true, this.scene.uiTheme));
} }
const pokemonForm = (pokemon.species?.forms?.[pokemon.formIndex!]?.formKey) || ""; this.pokemonFormText.setText(formName.length > this.numCharsBeforeCutoff ? formName.substring(0, this.numCharsBeforeCutoff - 3) + "..." : formName);
let formName = ""; if (formName.length > this.numCharsBeforeCutoff) {
if (pokemonForm !== "") { this.pokemonFormText.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.pokemonFormText.width, this.pokemonFormText.height), Phaser.Geom.Rectangle.Contains);
const formText = Utils.capitalizeString(pokemonForm, "-", false, false); this.pokemonFormText.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", formName, true));
this.pokemonFormText.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip());
const speciesName = Utils.capitalizeString(Species[pokemon.species.getRootSpeciesId()], "_", true, false); } else {
if (pokemon.species.speciesId === Species.ARCEUS) { this.pokemonFormText.disableInteractive();
formName = i18next.t(`pokemonInfo:Type.${formText?.toUpperCase()}`);
} else {
formName = formText ? i18next.t(`pokemonForm:${speciesName}${formText}`) : "";
}
this.pokemonFormText.setText(formName.length > this.numCharsBeforeCutoff ? formName.substring(0, this.numCharsBeforeCutoff - 3) + "..." : formName);
if (formName.length > this.numCharsBeforeCutoff) {
this.pokemonFormText.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.pokemonFormText.width, this.pokemonFormText.height), Phaser.Geom.Rectangle.Contains);
this.pokemonFormText.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", formName, true));
this.pokemonFormText.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip());
} else {
this.pokemonFormText.disableInteractive();
}
} }
} else { } else {
this.pokemonFormLabelText.setVisible(false); this.pokemonFormLabelText.setVisible(false);

View File

@ -1,36 +1,65 @@
/**
* A vertical scrollbar element that resizes dynamically based on the current scrolling
* and number of elements that can be shown on screen
*/
export class ScrollBar extends Phaser.GameObjects.Container { export class ScrollBar extends Phaser.GameObjects.Container {
private bg: Phaser.GameObjects.Image; private bg: Phaser.GameObjects.NineSlice;
private handleBody: Phaser.GameObjects.Rectangle; private handleBody: Phaser.GameObjects.Rectangle;
private handleBottom: Phaser.GameObjects.Image; private handleBottom: Phaser.GameObjects.NineSlice;
private pages: number; private currentRow: number;
private page: number; private totalRows: number;
private maxRows: number;
constructor(scene: Phaser.Scene, x: number, y: number, pages: number) { /**
* @param scene the current scene
* @param x the scrollbar's x position (origin: top left)
* @param y the scrollbar's y position (origin: top left)
* @param width the scrollbar's width
* @param height the scrollbar's height
* @param maxRows the maximum number of rows that can be shown at once
*/
constructor(scene: Phaser.Scene, x: number, y: number, width: number, height: number, maxRows: number) {
super(scene, x, y); super(scene, x, y);
this.bg = scene.add.image(0, 0, "scroll_bar"); this.maxRows = maxRows;
const borderSize = 2;
width = Math.max(width, 4);
this.bg = scene.add.nineslice(0, 0, "scroll_bar", undefined, width, height, borderSize, borderSize, borderSize, borderSize);
this.bg.setOrigin(0, 0); this.bg.setOrigin(0, 0);
this.add(this.bg); this.add(this.bg);
this.handleBody = scene.add.rectangle(1, 1, 3, 4, 0xaaaaaa); this.handleBody = scene.add.rectangle(1, 1, width - 2, 4, 0xaaaaaa);
this.handleBody.setOrigin(0, 0); this.handleBody.setOrigin(0, 0);
this.add(this.handleBody); this.add(this.handleBody);
this.handleBottom = scene.add.image(1, 1, "scroll_bar_handle"); this.handleBottom = scene.add.nineslice(1, 1, "scroll_bar_handle", undefined, width - 2, 2, 2, 0, 0, 0);
this.handleBottom.setOrigin(0, 0); this.handleBottom.setOrigin(0, 0);
this.add(this.handleBottom); this.add(this.handleBottom);
} }
setPage(page: number): void { /**
this.page = page; * Set the current row that is displayed
this.handleBody.y = 1 + (this.bg.displayHeight - 1 - this.handleBottom.displayHeight) / this.pages * page; * Moves the bar handle up or down accordingly
* @param scrollCursor how many times the view was scrolled down
*/
setScrollCursor(scrollCursor: number): void {
this.currentRow = scrollCursor;
this.handleBody.y = 1 + (this.bg.displayHeight - 1 - this.handleBottom.displayHeight) / this.totalRows * this.currentRow;
this.handleBottom.y = this.handleBody.y + this.handleBody.displayHeight; this.handleBottom.y = this.handleBody.y + this.handleBody.displayHeight;
} }
setPages(pages: number): void { /**
this.pages = pages; * Set the total number of rows to display
this.handleBody.height = (this.bg.displayHeight - 1 - this.handleBottom.displayHeight) * 9 / this.pages; * If it's smaller than the maximum number of rows on screen the bar will get hidden
* Otherwise the scrollbar handle gets resized based on the ratio to the maximum number of rows
* @param rows how many rows of data there are in total
*/
setTotalRows(rows: number): void {
this.totalRows = rows;
this.handleBody.height = (this.bg.displayHeight - 1 - this.handleBottom.displayHeight) * this.maxRows / this.totalRows;
this.setVisible(this.pages > 9); this.setVisible(this.totalRows > this.maxRows);
} }
} }

View File

@ -1,11 +1,12 @@
import UiHandler from "../ui-handler"; import UiHandler from "#app/ui/ui-handler";
import BattleScene from "../../battle-scene"; import BattleScene from "#app/battle-scene";
import {Mode} from "../ui"; import { Mode } from "#app/ui/ui";
import {InterfaceConfig} from "../../inputs-controller"; import { InterfaceConfig } from "#app/inputs-controller";
import {addWindow} from "../ui-theme"; import { addWindow } from "#app/ui/ui-theme";
import {addTextObject, TextStyle} from "../text"; import { addTextObject, TextStyle } from "#app/ui/text";
import {getIconWithSettingName} from "#app/configs/inputs/configHandler"; import { ScrollBar } from "#app/ui/scroll-bar";
import NavigationMenu, {NavigationManager} from "#app/ui/settings/navigationMenu"; import { getIconWithSettingName } from "#app/configs/inputs/configHandler";
import NavigationMenu, { NavigationManager } from "#app/ui/settings/navigationMenu";
import { Device } from "#enums/devices"; import { Device } from "#enums/devices";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import i18next from "i18next"; import i18next from "i18next";
@ -19,7 +20,7 @@ export interface LayoutConfig {
inputsIcons: InputsIcons; inputsIcons: InputsIcons;
settingLabels: Phaser.GameObjects.Text[]; settingLabels: Phaser.GameObjects.Text[];
optionValueLabels: Phaser.GameObjects.Text[][]; optionValueLabels: Phaser.GameObjects.Text[][];
optionCursors: integer[]; optionCursors: number[];
keys: string[]; keys: string[];
bindingSettings: Array<String>; bindingSettings: Array<String>;
} }
@ -31,8 +32,9 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
protected optionsContainer: Phaser.GameObjects.Container; protected optionsContainer: Phaser.GameObjects.Container;
protected navigationContainer: NavigationMenu; protected navigationContainer: NavigationMenu;
protected scrollCursor: integer; protected scrollBar: ScrollBar;
protected optionCursors: integer[]; protected scrollCursor: number;
protected optionCursors: number[];
protected cursorObj: Phaser.GameObjects.NineSlice | null; protected cursorObj: Phaser.GameObjects.NineSlice | null;
protected optionsBg: Phaser.GameObjects.NineSlice; protected optionsBg: Phaser.GameObjects.NineSlice;
@ -65,7 +67,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
protected device: Device; protected device: Device;
abstract saveSettingToLocalStorage(setting, cursor): void; abstract saveSettingToLocalStorage(setting, cursor): void;
abstract setSetting(scene: BattleScene, setting, value: integer): boolean; abstract setSetting(scene: BattleScene, setting, value: number): boolean;
/** /**
* Constructor for the AbstractSettingsUiHandler. * Constructor for the AbstractSettingsUiHandler.
@ -241,7 +243,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
// Calculate the total available space for placing option labels next to their setting label // Calculate the total available space for placing option labels next to their setting label
// We reserve space for the setting label and then distribute the remaining space evenly // We reserve space for the setting label and then distribute the remaining space evenly
const totalSpace = (300 - labelWidth) - totalWidth / 6; const totalSpace = (297 - labelWidth) - totalWidth / 6;
// Calculate the spacing between options based on the available space divided by the number of gaps between labels // Calculate the spacing between options based on the available space divided by the number of gaps between labels
const optionSpacing = Math.floor(totalSpace / (optionValueLabels[s].length - 1)); const optionSpacing = Math.floor(totalSpace / (optionValueLabels[s].length - 1));
@ -269,6 +271,11 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
// Add the options container to the overall settings container to be displayed in the UI. // Add the options container to the overall settings container to be displayed in the UI.
this.settingsContainer.add(optionsContainer); this.settingsContainer.add(optionsContainer);
} }
// Add vertical scrollbar
this.scrollBar = new ScrollBar(this.scene, this.optionsBg.width - 9, this.optionsBg.y + 5, 4, this.optionsBg.height - 11, this.rowsToDisplay);
this.settingsContainer.add(this.scrollBar);
// Add the settings container to the UI. // Add the settings container to the UI.
ui.add(this.settingsContainer); ui.add(this.settingsContainer);
@ -413,6 +420,8 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
this.optionCursors = layout.optionCursors; this.optionCursors = layout.optionCursors;
this.inputsIcons = layout.inputsIcons; this.inputsIcons = layout.inputsIcons;
this.bindingSettings = layout.bindingSettings; this.bindingSettings = layout.bindingSettings;
this.scrollBar.setTotalRows(layout.settingLabels.length);
this.scrollBar.setScrollCursor(0);
// Return true indicating the layout was successfully applied. // Return true indicating the layout was successfully applied.
return true; return true;
@ -538,7 +547,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
* @param cursor - The cursor position to set. * @param cursor - The cursor position to set.
* @returns `true` if the cursor was set successfully. * @returns `true` if the cursor was set successfully.
*/ */
setCursor(cursor: integer): boolean { setCursor(cursor: number): boolean {
const ret = super.setCursor(cursor); const ret = super.setCursor(cursor);
// If the optionsContainer is not initialized, return the result from the parent class directly. // If the optionsContainer is not initialized, return the result from the parent class directly.
if (!this.optionsContainer) { if (!this.optionsContainer) {
@ -547,7 +556,8 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
// Check if the cursor object exists, if not, create it. // Check if the cursor object exists, if not, create it.
if (!this.cursorObj) { if (!this.cursorObj) {
this.cursorObj = this.scene.add.nineslice(0, 0, "summary_moves_cursor", undefined, (this.scene.game.canvas.width / 6) - 10, 16, 1, 1, 1, 1); const cursorWidth = (this.scene.game.canvas.width / 6) - (this.scrollBar.visible? 16 : 10);
this.cursorObj = this.scene.add.nineslice(0, 0, "summary_moves_cursor", undefined, cursorWidth, 16, 1, 1, 1, 1);
this.cursorObj.setOrigin(0, 0); // Set the origin to the top-left corner. this.cursorObj.setOrigin(0, 0); // Set the origin to the top-left corner.
this.optionsContainer.add(this.cursorObj); // Add the cursor to the options container. this.optionsContainer.add(this.cursorObj); // Add the cursor to the options container.
} }
@ -564,7 +574,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
* @param scrollCursor - The scroll cursor position to set. * @param scrollCursor - The scroll cursor position to set.
* @returns `true` if the scroll cursor was set successfully. * @returns `true` if the scroll cursor was set successfully.
*/ */
setScrollCursor(scrollCursor: integer): boolean { setScrollCursor(scrollCursor: number): boolean {
// Check if the new scroll position is the same as the current one; if so, do not update. // Check if the new scroll position is the same as the current one; if so, do not update.
if (scrollCursor === this.scrollCursor) { if (scrollCursor === this.scrollCursor) {
return false; return false;
@ -572,6 +582,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
// Update the internal scroll cursor state // Update the internal scroll cursor state
this.scrollCursor = scrollCursor; this.scrollCursor = scrollCursor;
this.scrollBar.setScrollCursor(this.scrollCursor);
// Apply the new scroll position to the settings UI. // Apply the new scroll position to the settings UI.
this.updateSettingsScroll(); this.updateSettingsScroll();
@ -590,7 +601,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
* @param save - Whether to save the setting to local storage. * @param save - Whether to save the setting to local storage.
* @returns `true` if the option cursor was set successfully. * @returns `true` if the option cursor was set successfully.
*/ */
setOptionCursor(settingIndex: integer, cursor: integer, save?: boolean): boolean { setOptionCursor(settingIndex: number, cursor: number, save?: boolean): boolean {
// Retrieve the specific setting using the settingIndex from the settingDevice enumeration. // Retrieve the specific setting using the settingIndex from the settingDevice enumeration.
const setting = this.setting[Object.keys(this.setting)[settingIndex]]; const setting = this.setting[Object.keys(this.setting)[settingIndex]];

View File

@ -1,12 +1,13 @@
import BattleScene from "../../battle-scene"; import BattleScene from "#app/battle-scene";
import { hasTouchscreen, isMobile } from "../../touch-controls"; import { hasTouchscreen, isMobile } from "#app/touch-controls";
import { TextStyle, addTextObject } from "../text"; import { TextStyle, addTextObject } from "#app/ui/text";
import { Mode } from "../ui"; import { Mode } from "#app/ui/ui";
import UiHandler from "../ui-handler"; import UiHandler from "#app/ui/ui-handler";
import { addWindow } from "../ui-theme"; import { addWindow } from "#app/ui/ui-theme";
import {Button} from "#enums/buttons"; import { ScrollBar } from "#app/ui/scroll-bar";
import {InputsIcons} from "#app/ui/settings/abstract-control-settings-ui-handler"; import { Button } from "#enums/buttons";
import NavigationMenu, {NavigationManager} from "#app/ui/settings/navigationMenu"; import { InputsIcons } from "#app/ui/settings/abstract-control-settings-ui-handler";
import NavigationMenu, { NavigationManager } from "#app/ui/settings/navigationMenu";
import { Setting, SettingKeys, SettingType } from "#app/system/settings/settings"; import { Setting, SettingKeys, SettingType } from "#app/system/settings/settings";
import i18next from "i18next"; import i18next from "i18next";
@ -19,11 +20,12 @@ export default class AbstractSettingsUiHandler extends UiHandler {
private optionsContainer: Phaser.GameObjects.Container; private optionsContainer: Phaser.GameObjects.Container;
private navigationContainer: NavigationMenu; private navigationContainer: NavigationMenu;
private scrollCursor: integer; private scrollCursor: number;
private scrollBar: ScrollBar;
private optionsBg: Phaser.GameObjects.NineSlice; private optionsBg: Phaser.GameObjects.NineSlice;
private optionCursors: integer[]; private optionCursors: number[];
private settingLabels: Phaser.GameObjects.Text[]; private settingLabels: Phaser.GameObjects.Text[];
private optionValueLabels: Phaser.GameObjects.Text[][]; private optionValueLabels: Phaser.GameObjects.Text[][];
@ -117,7 +119,7 @@ export default class AbstractSettingsUiHandler extends UiHandler {
const labelWidth = Math.max(78, this.settingLabels[s].displayWidth + 8); const labelWidth = Math.max(78, this.settingLabels[s].displayWidth + 8);
const totalSpace = (300 - labelWidth) - totalWidth / 6; const totalSpace = (297 - labelWidth) - totalWidth / 6;
const optionSpacing = Math.floor(totalSpace / (this.optionValueLabels[s].length - 1)); const optionSpacing = Math.floor(totalSpace / (this.optionValueLabels[s].length - 1));
let xOffset = 0; let xOffset = 0;
@ -130,7 +132,11 @@ export default class AbstractSettingsUiHandler extends UiHandler {
this.optionCursors = this.settings.map(setting => setting.default); this.optionCursors = this.settings.map(setting => setting.default);
this.scrollBar = new ScrollBar(this.scene, this.optionsBg.width - 9, this.optionsBg.y + 5, 4, this.optionsBg.height - 11, this.rowsToDisplay);
this.scrollBar.setTotalRows(this.settings.length);
this.settingsContainer.add(this.optionsBg); this.settingsContainer.add(this.optionsBg);
this.settingsContainer.add(this.scrollBar);
this.settingsContainer.add(this.navigationContainer); this.settingsContainer.add(this.navigationContainer);
this.settingsContainer.add(actionsBg); this.settingsContainer.add(actionsBg);
this.settingsContainer.add(this.optionsContainer); this.settingsContainer.add(this.optionsContainer);
@ -186,6 +192,7 @@ export default class AbstractSettingsUiHandler extends UiHandler {
this.settingsContainer.setVisible(true); this.settingsContainer.setVisible(true);
this.setCursor(0); this.setCursor(0);
this.setScrollCursor(0);
this.getUi().moveTo(this.settingsContainer, this.getUi().length - 1); this.getUi().moveTo(this.settingsContainer, this.getUi().length - 1);
@ -301,11 +308,12 @@ export default class AbstractSettingsUiHandler extends UiHandler {
* @param cursor - The cursor position to set. * @param cursor - The cursor position to set.
* @returns `true` if the cursor was set successfully. * @returns `true` if the cursor was set successfully.
*/ */
setCursor(cursor: integer): boolean { setCursor(cursor: number): boolean {
const ret = super.setCursor(cursor); const ret = super.setCursor(cursor);
if (!this.cursorObj) { if (!this.cursorObj) {
this.cursorObj = this.scene.add.nineslice(0, 0, "summary_moves_cursor", undefined, (this.scene.game.canvas.width / 6) - 10, 16, 1, 1, 1, 1); const cursorWidth = (this.scene.game.canvas.width / 6) - (this.scrollBar.visible? 16 : 10);
this.cursorObj = this.scene.add.nineslice(0, 0, "summary_moves_cursor", undefined, cursorWidth, 16, 1, 1, 1, 1);
this.cursorObj.setOrigin(0, 0); this.cursorObj.setOrigin(0, 0);
this.optionsContainer.add(this.cursorObj); this.optionsContainer.add(this.cursorObj);
} }
@ -323,7 +331,7 @@ export default class AbstractSettingsUiHandler extends UiHandler {
* @param save - Whether to save the setting to local storage. * @param save - Whether to save the setting to local storage.
* @returns `true` if the option cursor was set successfully. * @returns `true` if the option cursor was set successfully.
*/ */
setOptionCursor(settingIndex: integer, cursor: integer, save?: boolean): boolean { setOptionCursor(settingIndex: number, cursor: number, save?: boolean): boolean {
const setting = this.settings[settingIndex]; const setting = this.settings[settingIndex];
if (setting.key === SettingKeys.Touch_Controls && cursor && hasTouchscreen() && isMobile()) { if (setting.key === SettingKeys.Touch_Controls && cursor && hasTouchscreen() && isMobile()) {
@ -359,12 +367,13 @@ export default class AbstractSettingsUiHandler extends UiHandler {
* @param scrollCursor - The scroll cursor position to set. * @param scrollCursor - The scroll cursor position to set.
* @returns `true` if the scroll cursor was set successfully. * @returns `true` if the scroll cursor was set successfully.
*/ */
setScrollCursor(scrollCursor: integer): boolean { setScrollCursor(scrollCursor: number): boolean {
if (scrollCursor === this.scrollCursor) { if (scrollCursor === this.scrollCursor) {
return false; return false;
} }
this.scrollCursor = scrollCursor; this.scrollCursor = scrollCursor;
this.scrollBar.setScrollCursor(this.scrollCursor);
this.updateSettingsScroll(); this.updateSettingsScroll();
@ -394,6 +403,7 @@ export default class AbstractSettingsUiHandler extends UiHandler {
clear() { clear() {
super.clear(); super.clear();
this.settingsContainer.setVisible(false); this.settingsContainer.setVisible(false);
this.setScrollCursor(0);
this.eraseCursor(); this.eraseCursor();
this.getUi().bgmBar.toggleBgmBar(this.scene.showBgmBar); this.getUi().bgmBar.toggleBgmBar(this.scene.showBgmBar);
if (this.reloadRequired) { if (this.reloadRequired) {

View File

@ -627,7 +627,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
const starterBoxContainer = this.scene.add.container(speciesContainerX + 6, 9); //115 const starterBoxContainer = this.scene.add.container(speciesContainerX + 6, 9); //115
this.starterSelectScrollBar = new ScrollBar(this.scene, 161, 12, 0); this.starterSelectScrollBar = new ScrollBar(this.scene, 161, 12, 5, starterContainerWindow.height - 6, 9);
starterBoxContainer.add(this.starterSelectScrollBar); starterBoxContainer.add(this.starterSelectScrollBar);
@ -2540,8 +2540,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
} }
}); });
this.starterSelectScrollBar.setPages(Math.max(Math.ceil(this.filteredStarterContainers.length / 9), 1)); this.starterSelectScrollBar.setTotalRows(Math.max(Math.ceil(this.filteredStarterContainers.length / 9), 1));
this.starterSelectScrollBar.setPage(0); this.starterSelectScrollBar.setScrollCursor(0);
// sort // sort
const sort = this.filterBar.getVals(DropDownColumn.SORT)[0]; const sort = this.filterBar.getVals(DropDownColumn.SORT)[0];
@ -2576,7 +2576,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
const onScreenFirstIndex = this.scrollCursor * maxColumns; const onScreenFirstIndex = this.scrollCursor * maxColumns;
const onScreenLastIndex = Math.min(this.filteredStarterContainers.length - 1, onScreenFirstIndex + maxRows * maxColumns -1); const onScreenLastIndex = Math.min(this.filteredStarterContainers.length - 1, onScreenFirstIndex + maxRows * maxColumns -1);
this.starterSelectScrollBar.setPage(this.scrollCursor); this.starterSelectScrollBar.setScrollCursor(this.scrollCursor);
let pokerusCursorIndex = 0; let pokerusCursorIndex = 0;
this.filteredStarterContainers.forEach((container, i) => { this.filteredStarterContainers.forEach((container, i) => {