mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-06 00:12:16 +02:00
Compare commits
11 Commits
4cca68b323
...
92c4f2d9ab
Author | SHA1 | Date | |
---|---|---|---|
|
92c4f2d9ab | ||
|
e5d9cfd10f | ||
|
c71d794d97 | ||
|
0c85823645 | ||
|
6e52bc7980 | ||
|
124ef7065f | ||
|
d6a8394503 | ||
|
965d8d33fb | ||
|
e6ce85cd3f | ||
|
0e7498f9ef | ||
|
b721aeee87 |
12
index.html
12
index.html
@ -4,12 +4,24 @@
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>PokéRogue</title>
|
||||
<meta name="title" content="PokéRogue" />
|
||||
<meta name="description" content="A Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, and reaching Pokémon stats you never thought possible." />
|
||||
<meta name="theme-color" content="#da3838" />
|
||||
<meta name="keywords" content="pokerogue, pokemon, roguelite" />
|
||||
<meta name="news_keywords" content="pokerogue, pokemon, roguelite" />
|
||||
<meta name="distribution" content="Global">
|
||||
<meta http-equiv="audience" content="General">
|
||||
<meta property="og:title" content="PokéRogue" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:description" content="A Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, and reaching Pokémon stats you never thought possible." />
|
||||
<meta property="og:image" content="https://pokerogue.net/logo512.png" />
|
||||
<meta property="og:url" content="https://pokerogue.net" />
|
||||
<meta property="og:site_name" content="PokéRogue" />
|
||||
<meta property="twitter:title" content="PokéRogue" />
|
||||
<meta property="twitter:description" content="A Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, and reaching Pokémon stats you never thought possible." />
|
||||
<meta property="twitter:image" content="https://pokerogue.net/logo512.png" />
|
||||
<meta property="twitter:card" content="summary" />
|
||||
<meta property="twitter:url" content="https://pokerogue.net" />
|
||||
<link rel="apple-touch-icon" href="./logo512.png" />
|
||||
<link rel="shortcut icon" type="image/png" href="./logo512.png" />
|
||||
<link rel="canonical" href="https://pokerogue.net" />
|
||||
|
@ -68,6 +68,12 @@ export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1";
|
||||
|
||||
const DEBUG_RNG = false;
|
||||
|
||||
const OPP_IVS_OVERRIDE_VALIDATED : integer[] = (
|
||||
Array.isArray(Overrides.OPP_IVS_OVERRIDE) ?
|
||||
Overrides.OPP_IVS_OVERRIDE :
|
||||
new Array(6).fill(Overrides.OPP_IVS_OVERRIDE)
|
||||
).map(iv => isNaN(iv) || iv === null || iv > 31 ? -1 : iv);
|
||||
|
||||
export const startingWave = Overrides.STARTING_WAVE_OVERRIDE || 1;
|
||||
|
||||
const expSpriteKeys: string[] = [];
|
||||
@ -689,6 +695,10 @@ export default class BattleScene extends SceneBase {
|
||||
return this.getPlayerField().find(p => p.isActive());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of PlayerPokemon of length 1 or 2 depending on if double battles or not
|
||||
* @returns array of {@linkcode PlayerPokemon}
|
||||
*/
|
||||
getPlayerField(): PlayerPokemon[] {
|
||||
const party = this.getParty();
|
||||
return party.slice(0, Math.min(party.length, this.currentBattle?.double ? 2 : 1));
|
||||
@ -702,6 +712,10 @@ export default class BattleScene extends SceneBase {
|
||||
return this.getEnemyField().find(p => p.isActive());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of EnemyPokemon of length 1 or 2 depending on if double battles or not
|
||||
* @returns array of {@linkcode EnemyPokemon}
|
||||
*/
|
||||
getEnemyField(): EnemyPokemon[] {
|
||||
const party = this.getEnemyParty();
|
||||
return party.slice(0, Math.min(party.length, this.currentBattle?.double ? 2 : 1));
|
||||
@ -766,6 +780,13 @@ export default class BattleScene extends SceneBase {
|
||||
if (postProcess) {
|
||||
postProcess(pokemon);
|
||||
}
|
||||
|
||||
for (let i = 0; i < pokemon.ivs.length; i++) {
|
||||
if (OPP_IVS_OVERRIDE_VALIDATED[i] > -1) {
|
||||
pokemon.ivs[i] = OPP_IVS_OVERRIDE_VALIDATED[i];
|
||||
}
|
||||
}
|
||||
|
||||
pokemon.init();
|
||||
return pokemon;
|
||||
}
|
||||
|
@ -7141,6 +7141,7 @@ export function initMoves() {
|
||||
.attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], -1, true),
|
||||
new AttackMove(Moves.HYPERSPACE_FURY, Type.DARK, MoveCategory.PHYSICAL, 100, -1, 5, 100, 0, 6)
|
||||
.attr(StatChangeAttr, BattleStat.DEF, -1, true)
|
||||
.makesContact(false)
|
||||
.ignoresProtect(),
|
||||
/* Unused */
|
||||
new AttackMove(Moves.BREAKNECK_BLITZ__PHYSICAL, Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7)
|
||||
|
@ -2167,12 +2167,22 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
tags.filter(t => t.sourceId === sourceId).forEach(t => t.sourceId = newSourceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Transferring stat changes and Tags
|
||||
* @param source {@linkcode Pokemon} the pokemon whose stats/Tags are to be passed on from, ie: the Pokemon using Baton Pass
|
||||
*/
|
||||
transferSummon(source: Pokemon): void {
|
||||
const battleStats = Utils.getEnumValues(BattleStat);
|
||||
for (const stat of battleStats) {
|
||||
this.summonData.battleStats[stat] = source.summonData.battleStats[stat];
|
||||
}
|
||||
for (const tag of source.summonData.tags) {
|
||||
|
||||
// bypass yawn, and infatuation as those can not be passed via Baton Pass
|
||||
if (tag.sourceMove === Moves.YAWN || tag.tagType === BattlerTagType.INFATUATED) {
|
||||
continue;
|
||||
}
|
||||
|
||||
this.summonData.tags.push(tag);
|
||||
}
|
||||
if (this instanceof PlayerPokemon && source.summonData.battleStats.find(bs => bs === 6)) {
|
||||
|
@ -4,4 +4,6 @@ export const fightUiHandler: SimpleTranslationEntries = {
|
||||
"pp": "AP",
|
||||
"power": "Stärke",
|
||||
"accuracy": "Genauigkeit",
|
||||
"abilityFlyInText": "{{passive}}{{abilityName}} von {{pokemonName}} wirkt!",
|
||||
"passive": "Passive Fähigkeit ", // The space at the end is important
|
||||
} as const;
|
||||
|
@ -4,4 +4,6 @@ export const fightUiHandler: SimpleTranslationEntries = {
|
||||
"pp": "PP",
|
||||
"power": "Power",
|
||||
"accuracy": "Accuracy",
|
||||
"abilityFlyInText": " {{pokemonName}}'s {{passive}}{{abilityName}}",
|
||||
"passive": "Passive ", // The space at the end is important
|
||||
} as const;
|
||||
|
@ -61,5 +61,5 @@ export const battle: SimpleTranslationEntries = {
|
||||
"useMove": "¡{{pokemonNameWithAffix}} usó {{moveName}}!",
|
||||
"drainMessage": "¡{{pokemonName}} tuvo su\nenergía absorbida!",
|
||||
"regainHealth": "¡{{pokemonName}} recuperó\nPS!",
|
||||
"fainted": "{{pokemonNameWithAffix}} fainted!"
|
||||
"fainted": "¡El {{pokemonNameWithAffix}} se debilitó!"
|
||||
} as const;
|
||||
|
@ -4,4 +4,6 @@ export const fightUiHandler: SimpleTranslationEntries = {
|
||||
"pp": "PP",
|
||||
"power": "Potencia",
|
||||
"accuracy": "Precisión",
|
||||
"abilityFlyInText": " {{pokemonName}}'s {{passive}}{{abilityName}}",
|
||||
"passive": "Passive ", // The space at the end is important
|
||||
} as const;
|
||||
|
@ -60,6 +60,6 @@ export const battle: SimpleTranslationEntries = {
|
||||
"foePokemonWithAffix": "{{pokemonName}} ennemi",
|
||||
"useMove": "{{pokemonNameWithAffix}} utilise\n{{moveName}} !",
|
||||
"drainMessage": "{{pokemonName}} had its\nenergy drained!",
|
||||
"regainHealth": "{{pokemonName}} regained\nhealth!",
|
||||
"fainted": "{{pokemonNameWithAffix}} fainted!"
|
||||
"regainHealth": "{{pokemonName}} a récupéré\ndes PV!",
|
||||
"fainted": "{{pokemonNameWithAffix}} est tombé KO!"
|
||||
} as const;
|
||||
|
@ -4,4 +4,6 @@ export const fightUiHandler: SimpleTranslationEntries = {
|
||||
"pp": "PP",
|
||||
"power": "Puissance",
|
||||
"accuracy": "Précision",
|
||||
"abilityFlyInText": " {{pokemonName}}'s {{passive}}{{abilityName}}",
|
||||
"passive": "Passive ", // The space at the end is important
|
||||
} as const;
|
||||
|
@ -3,266 +3,266 @@ import { AchievementTranslationEntries } from "#app/plugins/i18n.js";
|
||||
// Achievement translations for the when the player character is male
|
||||
export const PGMachv: AchievementTranslationEntries = {
|
||||
"Achievements": {
|
||||
name: "Achievements",
|
||||
name: "Trofei",
|
||||
},
|
||||
"Locked": {
|
||||
name: "Locked",
|
||||
name: "Bloccato",
|
||||
},
|
||||
|
||||
"MoneyAchv": {
|
||||
description: "Accumulate a total of ₽{{moneyAmount}}",
|
||||
description: "Accumula ₽{{moneyAmount}} PokéDollari",
|
||||
},
|
||||
"10K_MONEY": {
|
||||
name: "Money Haver",
|
||||
name: "Benestante",
|
||||
},
|
||||
"100K_MONEY": {
|
||||
name: "Rich",
|
||||
name: "Ricco",
|
||||
},
|
||||
"1M_MONEY": {
|
||||
name: "Millionaire",
|
||||
name: "Milionario",
|
||||
},
|
||||
"10M_MONEY": {
|
||||
name: "One Percenter",
|
||||
name: "L'Un Percento",
|
||||
},
|
||||
|
||||
"DamageAchv": {
|
||||
description: "Inflict {{damageAmount}} damage in one hit",
|
||||
description: "Infliggi {{damageAmount}} danno in un colpo",
|
||||
},
|
||||
"250_DMG": {
|
||||
name: "Hard Hitter",
|
||||
name: "Gran Danni!",
|
||||
},
|
||||
"1000_DMG": {
|
||||
name: "Harder Hitter",
|
||||
name: "Incredibili Danni",
|
||||
},
|
||||
"2500_DMG": {
|
||||
name: "That's a Lotta Damage!",
|
||||
name: "Danni a Palate!",
|
||||
},
|
||||
"10000_DMG": {
|
||||
name: "One Punch Man",
|
||||
},
|
||||
|
||||
"HealAchv": {
|
||||
description: "Heal {{healAmount}} {{HP}} at once with a move, ability, or held item",
|
||||
description: "Cura {{healAmount}} {{HP}} tramite mossa, abilità, o oggetto",
|
||||
},
|
||||
"250_HEAL": {
|
||||
name: "Novice Healer",
|
||||
name: "Paramedico",
|
||||
},
|
||||
"1000_HEAL": {
|
||||
name: "Big Healer",
|
||||
name: "Dottore",
|
||||
},
|
||||
"2500_HEAL": {
|
||||
name: "Cleric",
|
||||
name: "Chierico",
|
||||
},
|
||||
"10000_HEAL": {
|
||||
name: "Recovery Master",
|
||||
name: "Mastro Curatore",
|
||||
},
|
||||
|
||||
"LevelAchv": {
|
||||
description: "Level up a Pokémon to Lv{{level}}",
|
||||
description: "Porta un pokémon a Lv{{level}}",
|
||||
},
|
||||
"LV_100": {
|
||||
name: "But Wait, There's More!",
|
||||
name: "E Non Finisce Qui!",
|
||||
},
|
||||
"LV_250": {
|
||||
name: "Elite",
|
||||
},
|
||||
"LV_1000": {
|
||||
name: "To Go Even Further Beyond",
|
||||
name: "Verso l'Infinito ed Oltre!",
|
||||
},
|
||||
|
||||
"RibbonAchv": {
|
||||
description: "Accumulate a total of {{ribbonAmount}} Ribbons",
|
||||
description: "Accumula un Totale di {{ribbonAmount}} Nastri",
|
||||
},
|
||||
"10_RIBBONS": {
|
||||
name: "Pokémon League Champion",
|
||||
name: "Campione Lega Pokémon",
|
||||
},
|
||||
"25_RIBBONS": {
|
||||
name: "Great League Champion",
|
||||
name: "Campione Lega Estesa",
|
||||
},
|
||||
"50_RIBBONS": {
|
||||
name: "Ultra League Champion",
|
||||
name: "Campione Lega Ultra",
|
||||
},
|
||||
"75_RIBBONS": {
|
||||
name: "Rogue League Champion",
|
||||
name: "Campione Lega Rogue",
|
||||
},
|
||||
"100_RIBBONS": {
|
||||
name: "Master League Champion",
|
||||
name: "Campione Lega Assoluta",
|
||||
},
|
||||
|
||||
"TRANSFER_MAX_BATTLE_STAT": {
|
||||
name: "Teamwork",
|
||||
description: "Baton pass to another party member with at least one stat maxed out",
|
||||
name: "Lavoro di Squadra",
|
||||
description: "Trasferisci almeno sei bonus statistiche tramite staffetta",
|
||||
},
|
||||
"MAX_FRIENDSHIP": {
|
||||
name: "Friendmaxxing",
|
||||
description: "Reach max friendship on a Pokémon",
|
||||
name: "Amiconi",
|
||||
description: "Raggiungi amicizia massima con un Pokémon",
|
||||
},
|
||||
"MEGA_EVOLVE": {
|
||||
name: "Megamorph",
|
||||
description: "Mega evolve a Pokémon",
|
||||
name: "Megamorfosi",
|
||||
description: "Megaevolvi un pokémon",
|
||||
},
|
||||
"GIGANTAMAX": {
|
||||
name: "Absolute Unit",
|
||||
description: "Gigantamax a Pokémon",
|
||||
name: "Grosso e Cattivo",
|
||||
description: "Ottieni una gigamax",
|
||||
},
|
||||
"TERASTALLIZE": {
|
||||
name: "STAB Enthusiast",
|
||||
description: "Terastallize a Pokémon",
|
||||
name: "STAB Per Tutti",
|
||||
description: "Teracristallizza un Pokémon",
|
||||
},
|
||||
"STELLAR_TERASTALLIZE": {
|
||||
name: "The Hidden Type",
|
||||
description: "Stellar Terastallize a Pokémon",
|
||||
name: "Tipo Segreto",
|
||||
description: "Teracristallizza un Pokémon stellare",
|
||||
},
|
||||
"SPLICE": {
|
||||
name: "Infinite Fusion",
|
||||
description: "Splice two Pokémon together with DNA Splicers",
|
||||
name: "Fusione Infinita",
|
||||
description: "Fondi due Pokémon insieme tramite cuneo DNA",
|
||||
},
|
||||
"MINI_BLACK_HOLE": {
|
||||
name: "A Hole Lot of Items",
|
||||
description: "Acquire a Mini Black Hole",
|
||||
name: "Universo di Oggetti",
|
||||
description: "Ottieni un Mini Buco Nero",
|
||||
},
|
||||
"CATCH_MYTHICAL": {
|
||||
name: "Mythical",
|
||||
description: "Catch a mythical Pokémon",
|
||||
name: "Mitico",
|
||||
description: "Cattura un Pokémon mitico",
|
||||
},
|
||||
"CATCH_SUB_LEGENDARY": {
|
||||
name: "(Sub-)Legendary",
|
||||
description: "Catch a sub-legendary Pokémon",
|
||||
name: "(Semi)Leggendario",
|
||||
description: "Cattura un Pokémon semileggendario",
|
||||
},
|
||||
"CATCH_LEGENDARY": {
|
||||
name: "Legendary",
|
||||
description: "Catch a legendary Pokémon",
|
||||
name: "Leggendario",
|
||||
description: "Cattura un Pokémon leggendario",
|
||||
},
|
||||
"SEE_SHINY": {
|
||||
name: "Shiny",
|
||||
description: "Find a shiny Pokémon in the wild",
|
||||
name: "Cromatico",
|
||||
description: "Trova un Pokémon shiny in natura",
|
||||
},
|
||||
"SHINY_PARTY": {
|
||||
name: "That's Dedication",
|
||||
description: "Have a full party of shiny Pokémon",
|
||||
name: "Dedizione Totale",
|
||||
description: "Riempi la squadra di Pokémon shiny",
|
||||
},
|
||||
"HATCH_MYTHICAL": {
|
||||
name: "Mythical Egg",
|
||||
description: "Hatch a mythical Pokémon from an egg",
|
||||
name: "Uovo Mitico",
|
||||
description: "Schiudi l'uovo di un Pokémon mitico",
|
||||
},
|
||||
"HATCH_SUB_LEGENDARY": {
|
||||
name: "Sub-Legendary Egg",
|
||||
description: "Hatch a sub-legendary Pokémon from an egg",
|
||||
name: "Uovo (Semi)Leggendario",
|
||||
description: "Schiudi l'uovo di un Pokémon semileggendario",
|
||||
},
|
||||
"HATCH_LEGENDARY": {
|
||||
name: "Legendary Egg",
|
||||
description: "Hatch a legendary Pokémon from an egg",
|
||||
name: "Uovo Leggendario",
|
||||
description: "Schiudi l'uovo di un Pokémon leggendario",
|
||||
},
|
||||
"HATCH_SHINY": {
|
||||
name: "Shiny Egg",
|
||||
description: "Hatch a shiny Pokémon from an egg",
|
||||
name: "Uovo Cromatico",
|
||||
description: "Schiudi l'uovo di un Pokémon shiny",
|
||||
},
|
||||
"HIDDEN_ABILITY": {
|
||||
name: "Hidden Potential",
|
||||
description: "Catch a Pokémon with a hidden ability",
|
||||
name: "Potenziale Nascosto",
|
||||
description: "Cattura un Pokémon con abilità nascosta",
|
||||
},
|
||||
"PERFECT_IVS": {
|
||||
name: "Certificate of Authenticity",
|
||||
description: "Get perfect IVs on a Pokémon",
|
||||
name: "Certificato di Autenticità",
|
||||
description: "Ottieni un Pokémon con IV perfetti",
|
||||
},
|
||||
"CLASSIC_VICTORY": {
|
||||
name: "Undefeated",
|
||||
description: "Beat the game in classic mode",
|
||||
name: "Imbattuto",
|
||||
description: "Vinci in modalità classica",
|
||||
},
|
||||
|
||||
"MONO_GEN_ONE": {
|
||||
name: "The Original Rival",
|
||||
description: "Complete the generation one only challenge.",
|
||||
name: "Rivale Originale",
|
||||
description: "Completa la modalità sfida generazione uno.",
|
||||
},
|
||||
"MONO_GEN_TWO": {
|
||||
name: "Generation 1.5",
|
||||
description: "Complete the generation two only challenge.",
|
||||
name: "Generazione 1.5",
|
||||
description: "Completa la modalità sfida generazione due.",
|
||||
},
|
||||
"MONO_GEN_THREE": {
|
||||
name: "Too much water?",
|
||||
description: "Complete the generation three only challenge.",
|
||||
name: "Troppa Acqua?",
|
||||
description: "Completa la modalità sfida generazione tre.",
|
||||
},
|
||||
"MONO_GEN_FOUR": {
|
||||
name: "Is she really the hardest?",
|
||||
description: "Complete the generation four only challenge.",
|
||||
name: "È Davvero La Più Forte?",
|
||||
description: "Completa la modalità sfida generazione quattro.",
|
||||
},
|
||||
"MONO_GEN_FIVE": {
|
||||
name: "All Original",
|
||||
description: "Complete the generation five only challenge.",
|
||||
name: "Tutti Originali",
|
||||
description: "Completa la modalità sfida generazione cinque.",
|
||||
},
|
||||
"MONO_GEN_SIX": {
|
||||
name: "Almost Royalty",
|
||||
description: "Complete the generation six only challenge.",
|
||||
name: "Quasi Reali",
|
||||
description: "Completa la modalità sfida generazione sei.",
|
||||
},
|
||||
"MONO_GEN_SEVEN": {
|
||||
name: "Only Technically",
|
||||
description: "Complete the generation seven only challenge.",
|
||||
name: "Solo In Teoria",
|
||||
description: "Completa la modalità sfida generazione sette.",
|
||||
},
|
||||
"MONO_GEN_EIGHT": {
|
||||
name: "A Champion Time!",
|
||||
description: "Complete the generation eight only challenge.",
|
||||
name: "È Champion-time!",
|
||||
description: "Completa la modalità sfida generazione otto.",
|
||||
},
|
||||
"MONO_GEN_NINE": {
|
||||
name: "She was going easy on you",
|
||||
description: "Complete the generation nine only challenge.",
|
||||
name: "Non si Stava Impegnando...",
|
||||
description: "Completa la modalità sfida generazione nove.",
|
||||
},
|
||||
|
||||
"MonoType": {
|
||||
description: "Complete the {{type}} monotype challenge.",
|
||||
description: "Completa la modalità sfida monotipo {{type}}",
|
||||
},
|
||||
"MONO_NORMAL": {
|
||||
name: "Mono NORMAL",
|
||||
name: "Mono NORMALE",
|
||||
},
|
||||
"MONO_FIGHTING": {
|
||||
name: "I Know Kung Fu",
|
||||
name: "Conosco il Kung-fu",
|
||||
},
|
||||
"MONO_FLYING": {
|
||||
name: "Mono FLYING",
|
||||
name: "Mono VOLANTE",
|
||||
},
|
||||
"MONO_POISON": {
|
||||
name: "Kanto's Favourite",
|
||||
name: "I migliori di Kanto",
|
||||
},
|
||||
"MONO_GROUND": {
|
||||
name: "Mono GROUND",
|
||||
name: "Mono TERRA",
|
||||
},
|
||||
"MONO_ROCK": {
|
||||
name: "Brock Hard",
|
||||
name: "Brock-o Forte!",
|
||||
},
|
||||
"MONO_BUG": {
|
||||
name: "Sting Like A Beedrill",
|
||||
name: "Pungi Come un Beedrill",
|
||||
},
|
||||
"MONO_GHOST": {
|
||||
name: "Who you gonna call?",
|
||||
name: "Chi Chiamerai?",
|
||||
},
|
||||
"MONO_STEEL": {
|
||||
name: "Mono STEEL",
|
||||
name: "Mono ACCIAIO",
|
||||
},
|
||||
"MONO_FIRE": {
|
||||
name: "Mono FIRE",
|
||||
name: "Mono FUOCO",
|
||||
},
|
||||
"MONO_WATER": {
|
||||
name: "When It Rains, It Pours",
|
||||
name: "Piove Sempre Sul Bagnato",
|
||||
},
|
||||
"MONO_GRASS": {
|
||||
name: "Mono GRASS",
|
||||
name: "Mono ERBA",
|
||||
},
|
||||
"MONO_ELECTRIC": {
|
||||
name: "Mono ELECTRIC",
|
||||
name: "Mono ELETTRO",
|
||||
},
|
||||
"MONO_PSYCHIC": {
|
||||
name: "Mono PSYCHIC",
|
||||
name: "Mono PSICO",
|
||||
},
|
||||
"MONO_ICE": {
|
||||
name: "Mono ICE",
|
||||
name: "Mono GHIACCIO",
|
||||
},
|
||||
"MONO_DRAGON": {
|
||||
name: "Mono DRAGON",
|
||||
name: "Mono DRAGO",
|
||||
},
|
||||
"MONO_DARK": {
|
||||
name: "It's just a phase",
|
||||
name: "Solo una fase",
|
||||
},
|
||||
"MONO_FAIRY": {
|
||||
name: "Mono FAIRY",
|
||||
name: "Mono FATA",
|
||||
},
|
||||
} as const;
|
||||
|
||||
|
@ -4,4 +4,6 @@ export const fightUiHandler: SimpleTranslationEntries = {
|
||||
"pp": "PP",
|
||||
"power": "Potenza",
|
||||
"accuracy": "Precisione",
|
||||
"abilityFlyInText": " {{pokemonName}}'s {{passive}}{{abilityName}}",
|
||||
"passive": "Passive ", // The space at the end is important
|
||||
} as const;
|
||||
|
@ -2,7 +2,7 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const menuUiHandler: SimpleTranslationEntries = {
|
||||
"GAME_SETTINGS": "Impostazioni",
|
||||
"ACHIEVEMENTS": "Risultati",
|
||||
"ACHIEVEMENTS": "Trofei",
|
||||
"STATS": "Statistiche",
|
||||
"VOUCHERS": "Biglietti",
|
||||
"EGG_LIST": "Lista Uova",
|
||||
|
@ -4,4 +4,6 @@ export const fightUiHandler: SimpleTranslationEntries = {
|
||||
"pp": "PP",
|
||||
"power": "위력",
|
||||
"accuracy": "명중률",
|
||||
"abilityFlyInText": " {{pokemonName}}의 {{passive}}{{abilityName}}",
|
||||
"passive": "패시브 ", // The space at the end is important
|
||||
} as const;
|
||||
|
@ -479,7 +479,7 @@ export const PGFachv: AchievementTranslationEntries = {
|
||||
description: "Complete o desafio de monotipo {{type}}.",
|
||||
},
|
||||
"MONO_NORMAL": {
|
||||
name: "Tenho medo de fantasma",
|
||||
name: "Extra Ordinário",
|
||||
},
|
||||
"MONO_FIGHTING": {
|
||||
name: "Briga de Rua",
|
||||
@ -491,16 +491,16 @@ export const PGFachv: AchievementTranslationEntries = {
|
||||
name: "Menina Veneno",
|
||||
},
|
||||
"MONO_GROUND": {
|
||||
name: "Deixou eles comendo poeira!",
|
||||
name: "Comendo Poeira",
|
||||
},
|
||||
"MONO_ROCK": {
|
||||
name: "Duro como Pedra",
|
||||
name: "Duro Como Pedra",
|
||||
},
|
||||
"MONO_BUG": {
|
||||
name: "Vida de Inseto",
|
||||
},
|
||||
"MONO_GHOST": {
|
||||
name: "Posso dormir com você hoje, mamãe?",
|
||||
name: "Fantasminha Camarada",
|
||||
},
|
||||
"MONO_STEEL": {
|
||||
name: "Levantando Ferro",
|
||||
@ -509,7 +509,7 @@ export const PGFachv: AchievementTranslationEntries = {
|
||||
name: "Tá Pegando Fogo, Bicho!",
|
||||
},
|
||||
"MONO_WATER": {
|
||||
name: "Água mole em pedra dura...",
|
||||
name: "Água Mole em Pedra Dura...",
|
||||
},
|
||||
"MONO_GRASS": {
|
||||
name: "Jardim Botânico",
|
||||
@ -527,9 +527,9 @@ export const PGFachv: AchievementTranslationEntries = {
|
||||
name: "Caverna do Dragão",
|
||||
},
|
||||
"MONO_DARK": {
|
||||
name: "É só uma fase",
|
||||
name: "É Só Uma Fase",
|
||||
},
|
||||
"MONO_FAIRY": {
|
||||
name: "Clube das Winx",
|
||||
name: "O Clube das Winx",
|
||||
},
|
||||
} as const;
|
||||
|
@ -61,5 +61,5 @@ export const battle: SimpleTranslationEntries = {
|
||||
"useMove": "{{pokemonNameWithAffix}} usou {{moveName}}!",
|
||||
"drainMessage": "{{pokemonName}} teve sua\nenergia drenada!",
|
||||
"regainHealth": "{{pokemonName}} recuperou\npontos de saúde!",
|
||||
"fainted": "{{pokemonNameWithAffix}} fainted!"
|
||||
"fainted": "{{pokemonNameWithAffix}} desmaiou!",
|
||||
} as const;
|
||||
|
@ -4,4 +4,6 @@ export const fightUiHandler: SimpleTranslationEntries = {
|
||||
"pp": "PP",
|
||||
"power": "Poder",
|
||||
"accuracy": "Precisão",
|
||||
"abilityFlyInText": " {{pokemonName}}'s {{passive}}{{abilityName}}",
|
||||
"passive": "Passive ", // The space at the end is important
|
||||
} as const;
|
||||
|
@ -4,4 +4,6 @@ export const fightUiHandler: SimpleTranslationEntries = {
|
||||
"pp": "PP",
|
||||
"power": "威力",
|
||||
"accuracy": "命中",
|
||||
} as const;
|
||||
"abilityFlyInText": " {{pokemonName}}'s {{passive}}{{abilityName}}",
|
||||
"passive": "Passive ", // The space at the end is important
|
||||
} as const;
|
||||
|
@ -4,4 +4,6 @@ export const fightUiHandler: SimpleTranslationEntries = {
|
||||
"pp": "PP",
|
||||
"power": "威力",
|
||||
"accuracy": "命中率",
|
||||
"abilityFlyInText": " {{pokemonName}}'s {{passive}}{{abilityName}}",
|
||||
"passive": "Passive ", // The space at the end is important
|
||||
} as const;
|
||||
|
@ -85,6 +85,7 @@ export const OPP_GENDER_OVERRIDE: Gender = null;
|
||||
export const OPP_MOVESET_OVERRIDE: Array<Moves> = [];
|
||||
export const OPP_SHINY_OVERRIDE: boolean = false;
|
||||
export const OPP_VARIANT_OVERRIDE: Variant = 0;
|
||||
export const OPP_IVS_OVERRIDE: integer | integer[] = [];
|
||||
|
||||
/**
|
||||
* MODIFIER / ITEM OVERRIDES
|
||||
|
@ -1,6 +1,7 @@
|
||||
import BattleScene from "../battle-scene";
|
||||
import Pokemon from "../field/pokemon";
|
||||
import { TextStyle, addTextObject } from "./text";
|
||||
import i18next from "i18next";
|
||||
|
||||
const hiddenX = -118;
|
||||
const shownX = 0;
|
||||
@ -8,8 +9,7 @@ const baseY = -116;
|
||||
|
||||
export default class AbilityBar extends Phaser.GameObjects.Container {
|
||||
private bg: Phaser.GameObjects.Image;
|
||||
private pokemonNameText: Phaser.GameObjects.Text;
|
||||
private abilityNameText: Phaser.GameObjects.Text;
|
||||
private abilityBarText: Phaser.GameObjects.Text;
|
||||
|
||||
private tween: Phaser.Tweens.Tween;
|
||||
private autoHideTimer: NodeJS.Timeout;
|
||||
@ -26,21 +26,17 @@ export default class AbilityBar extends Phaser.GameObjects.Container {
|
||||
|
||||
this.add(this.bg);
|
||||
|
||||
this.pokemonNameText = addTextObject(this.scene, 15, 3, "", TextStyle.MESSAGE, { fontSize: "72px" });
|
||||
this.pokemonNameText.setOrigin(0, 0);
|
||||
this.add(this.pokemonNameText);
|
||||
|
||||
this.abilityNameText = addTextObject(this.scene, 97, 16, "", TextStyle.WINDOW, { fontSize: "72px" });
|
||||
this.abilityNameText.setOrigin(1, 0);
|
||||
this.add(this.abilityNameText);
|
||||
this.abilityBarText = addTextObject(this.scene, 15, 3, "", TextStyle.MESSAGE, { fontSize: "72px" });
|
||||
this.abilityBarText.setOrigin(0, 0);
|
||||
this.abilityBarText.setWordWrapWidth(600, true);
|
||||
this.add(this.abilityBarText);
|
||||
|
||||
this.setVisible(false);
|
||||
this.shown = false;
|
||||
}
|
||||
|
||||
showAbility(pokemon: Pokemon, passive: boolean = false): void {
|
||||
this.pokemonNameText.setText(`${pokemon.name}'s${passive ? " Passive" : ""}`);
|
||||
this.abilityNameText.setText((!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name);
|
||||
this.abilityBarText.setText(`${i18next.t("fightUiHandler:abilityFlyInText", { pokemonName: pokemon.name, passive: passive ? i18next.t("fightUiHandler:passive") : "", abilityName: !passive ? pokemon.getAbility().name : pokemon.getPassiveAbility().name })}`);
|
||||
|
||||
if (this.shown) {
|
||||
return;
|
||||
|
@ -18,6 +18,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler {
|
||||
protected inputs: InputText[];
|
||||
protected errorMessage: Phaser.GameObjects.Text;
|
||||
protected submitAction: Function;
|
||||
protected tween: Phaser.Tweens.Tween;
|
||||
|
||||
constructor(scene: BattleScene, mode?: Mode) {
|
||||
super(scene, mode);
|
||||
@ -99,7 +100,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler {
|
||||
this.modalContainer.y += 24;
|
||||
this.modalContainer.setAlpha(0);
|
||||
|
||||
this.scene.tweens.add({
|
||||
this.tween = this.scene.tweens.add({
|
||||
targets: this.modalContainer,
|
||||
duration: Utils.fixedInt(1000),
|
||||
ease: "Sine.easeInOut",
|
||||
@ -142,5 +143,9 @@ export abstract class FormModalUiHandler extends ModalUiHandler {
|
||||
this.inputContainers.map(ic => ic.setVisible(false));
|
||||
|
||||
this.submitAction = null;
|
||||
|
||||
if (this.tween) {
|
||||
this.tween.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -69,6 +69,7 @@ export class StatsContainer extends Phaser.GameObjects.Container {
|
||||
if (ivs) {
|
||||
const ivChartData = new Array(6).fill(null).map((_, i) => [ (ivs[ivChartStatIndexes[i]] / 31) * ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][0], (ivs[ivChartStatIndexes[i]] / 31) * ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][1] ] ).flat();
|
||||
const lastIvChartData = this.statsIvsCache || defaultIvChartData;
|
||||
const perfectIVColor: string = getTextColor(TextStyle.SUMMARY_GOLD, false, (this.scene as BattleScene).uiTheme);
|
||||
this.statsIvsCache = ivChartData.slice(0);
|
||||
|
||||
this.ivStatValueTexts.map((t: BBCodeText, i: integer) => {
|
||||
@ -76,7 +77,7 @@ export class StatsContainer extends Phaser.GameObjects.Container {
|
||||
|
||||
// Check to see if IVs are 31, if so change the text style to gold, otherwise leave them be.
|
||||
if (ivs[i] === 31) {
|
||||
label += `[color=${getTextColor(TextStyle.SUMMARY_GOLD, false, (this.scene as BattleScene).uiTheme)}][shadow]${ivs[i].toString()}[/shadow][/color]`;
|
||||
label += `[color=${perfectIVColor}][shadow]${ivs[i].toString()}[/shadow][/color]`;
|
||||
} else {
|
||||
label = ivs[i].toString();
|
||||
}
|
||||
@ -90,6 +91,13 @@ export class StatsContainer extends Phaser.GameObjects.Container {
|
||||
t.setText(`[shadow]${label}[/shadow]`);
|
||||
});
|
||||
|
||||
const newColor = ivs.every(iv => iv === 31) ? parseInt(perfectIVColor.substr(1), 16) : 0x98d8a0;
|
||||
const oldColor = this.ivChart.fillColor;
|
||||
const interpolateColor = oldColor !== newColor ? [
|
||||
Phaser.Display.Color.IntegerToColor(oldColor),
|
||||
Phaser.Display.Color.IntegerToColor(newColor)
|
||||
] : null;
|
||||
|
||||
this.scene.tweens.addCounter({
|
||||
from: 0,
|
||||
to: 1,
|
||||
@ -98,6 +106,13 @@ export class StatsContainer extends Phaser.GameObjects.Container {
|
||||
onUpdate: (tween: Phaser.Tweens.Tween) => {
|
||||
const progress = tween.getValue();
|
||||
const interpolatedData = ivChartData.map((v: number, i: integer) => v * progress + (lastIvChartData[i] * (1 - progress)));
|
||||
if (interpolateColor) {
|
||||
this.ivChart.setFillStyle(
|
||||
Phaser.Display.Color.ValueToColor(
|
||||
Phaser.Display.Color.Interpolate.ColorWithColor(interpolateColor[0], interpolateColor[1], 1, progress)
|
||||
).color,
|
||||
0.75);
|
||||
}
|
||||
this.ivChart.setTo(interpolatedData);
|
||||
}
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user