From 848c1f01e0fb3d241fae33e8974a82efb3f7b924 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Tue, 2 Sep 2025 11:14:55 -0500 Subject: [PATCH 01/32] chore: bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 574beb80466..b7aebd879d2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pokemon-rogue-battle", "private": true, - "version": "1.10.6", + "version": "1.10.7", "type": "module", "scripts": { "start": "vite", From 9fc31350f895a497559a5b1bbfe800156e73386f Mon Sep 17 00:00:00 2001 From: Fabi <192151969+fabske0@users.noreply.github.com> Date: Wed, 3 Sep 2025 04:07:40 +0200 Subject: [PATCH 02/32] [Bug] Fix monotype selector image (#6471) --- src/data/challenge.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/challenge.ts b/src/data/challenge.ts index cea8661e78c..11adec79203 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -764,7 +764,7 @@ export class SingleTypeChallenge extends Challenge { } getValue(overrideValue: number = this.value): string { - return i18next.t(`pokemonInfo:type.${toCamelCase(PokemonType[overrideValue - 1])}`); + return PokemonType[overrideValue - 1].toLowerCase(); } getDescription(overrideValue: number = this.value): string { From 4a2877392985a84496fcab1b217494750f61fe18 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Tue, 2 Sep 2025 21:44:43 -0500 Subject: [PATCH 03/32] [Bug] [Move] Fix poltergeist crash when no remaining enemies (#6473) * fix: poltergeist crash with no target * fix: adjust move phase history --- src/data/moves/move.ts | 3 ++ src/phases/move-phase.ts | 39 ++++++++++++++++---------- test/moves/poltergeist.test.ts | 50 ++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 15 deletions(-) create mode 100644 test/moves/poltergeist.test.ts diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 5a22b352e73..1c64b28fa75 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -8164,6 +8164,9 @@ const failIfGhostTypeCondition: MoveConditionFunc = (user: Pokemon, target: Poke const failIfNoTargetHeldItemsCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => target.getHeldItems().filter(i => i.isTransferable)?.length > 0; const attackedByItemMessageFunc = (user: Pokemon, target: Pokemon, move: Move) => { + if (isNullOrUndefined(target)) { // Fix bug when used against targets that have both fainted + return ""; + } const heldItems = target.getHeldItems().filter(i => i.isTransferable); if (heldItems.length === 0) { return ""; diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 9a8e509e302..dd73227a4a8 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -24,6 +24,7 @@ import { applyMoveAttrs } from "#moves/apply-attrs"; import { frenzyMissFunc } from "#moves/move-utils"; import type { PokemonMove } from "#moves/pokemon-move"; import { BattlePhase } from "#phases/battle-phase"; +import type { TurnMove } from "#types/turn-move"; import { NumberHolder } from "#utils/common"; import { enumValueToKey } from "#utils/enums"; import i18next from "i18next"; @@ -41,6 +42,13 @@ export class MovePhase extends BattlePhase { /** Whether the current move should fail and retain PP. */ protected cancelled = false; + /** The move history entry object that is pushed to the pokemon's move history + * + * @remarks + * Can be edited _after_ being pushed to the history to adjust the result, targets, etc, for this move phase. + */ + protected moveHistoryEntry: TurnMove; + public get pokemon(): Pokemon { return this._pokemon; } @@ -82,6 +90,11 @@ export class MovePhase extends BattlePhase { this.move = move; this.useMode = useMode; this.forcedLast = forcedLast; + this.moveHistoryEntry = { + move: MoveId.NONE, + targets, + useMode, + }; } /** @@ -410,13 +423,9 @@ export class MovePhase extends BattlePhase { if (showText) { this.showMoveText(); } - - this.pokemon.pushMoveHistory({ - move: this.move.moveId, - targets: this.targets, - result: MoveResult.FAIL, - useMode: this.useMode, - }); + const moveHistoryEntry = this.moveHistoryEntry; + moveHistoryEntry.result = MoveResult.FAIL; + this.pokemon.pushMoveHistory(moveHistoryEntry); // Use move-specific failure messages if present before checking terrain/weather blockage // and falling back to the classic "But it failed!". @@ -630,12 +639,9 @@ export class MovePhase extends BattlePhase { frenzyMissFunc(this.pokemon, this.move.getMove()); } - this.pokemon.pushMoveHistory({ - move: MoveId.NONE, - result: MoveResult.FAIL, - targets: this.targets, - useMode: this.useMode, - }); + const moveHistoryEntry = this.moveHistoryEntry; + moveHistoryEntry.result = MoveResult.FAIL; + this.pokemon.pushMoveHistory(moveHistoryEntry); this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); this.pokemon.lapseTags(BattlerTagLapseType.AFTER_MOVE); @@ -649,13 +655,16 @@ export class MovePhase extends BattlePhase { * Displays the move's usage text to the player as applicable for the move being used. */ public showMoveText(): void { + const moveId = this.move.moveId; if ( - this.move.moveId === MoveId.NONE || + moveId === MoveId.NONE || this.pokemon.getTag(BattlerTagType.RECHARGING) || this.pokemon.getTag(BattlerTagType.INTERRUPTED) ) { return; } + // Showing move text always adjusts the move history entry's move id + this.moveHistoryEntry.move = moveId; // TODO: This should be done by the move... globalScene.phaseManager.queueMessage( @@ -668,7 +677,7 @@ export class MovePhase extends BattlePhase { // Moves with pre-use messages (Magnitude, Chilly Reception, Fickle Beam, etc.) always display their messages even on failure // TODO: This assumes single target for message funcs - is this sustainable? - applyMoveAttrs("PreMoveMessageAttr", this.pokemon, this.pokemon.getOpponents(false)[0], this.move.getMove()); + applyMoveAttrs("PreMoveMessageAttr", this.pokemon, this.getActiveTargetPokemon()[0], this.move.getMove()); } /** diff --git a/test/moves/poltergeist.test.ts b/test/moves/poltergeist.test.ts new file mode 100644 index 00000000000..3e603702416 --- /dev/null +++ b/test/moves/poltergeist.test.ts @@ -0,0 +1,50 @@ +import { AbilityId } from "#enums/ability-id"; +import { BattlerIndex } from "#enums/battler-index"; +import { MoveId } from "#enums/move-id"; +import { MoveResult } from "#enums/move-result"; +import { SpeciesId } from "#enums/species-id"; +import { GameManager } from "#test/test-utils/game-manager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Move - Poltergeist", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .ability(AbilityId.BALL_FETCH) + .battleStyle("single") + .criticalHits(false) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.BALL_FETCH) + .enemyMoveset(MoveId.SPLASH) + .startingLevel(100) + .enemyLevel(100); + }); + + it("should not crash when used after both opponents have fainted", async () => { + game.override.battleStyle("double").enemyLevel(5); + await game.classicMode.startBattle([SpeciesId.STARYU, SpeciesId.SLOWPOKE]); + + game.move.use(MoveId.DAZZLING_GLEAM); + game.move.use(MoveId.POLTERGEIST, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + const [_, poltergeistUser] = game.scene.getPlayerField(); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2]); + await game.toEndOfTurn(); + // Expect poltergeist to have failed + expect(poltergeistUser).toHaveUsedMove({ move: MoveId.POLTERGEIST, result: MoveResult.FAIL }); + // If the test makes it to the end of turn, no crash occurred. Nothing to assert + }); +}); From ddde977a0a485f327a041bedb0d7b249df4770bf Mon Sep 17 00:00:00 2001 From: Fabi <192151969+fabske0@users.noreply.github.com> Date: Thu, 4 Sep 2025 11:31:52 +0200 Subject: [PATCH 04/32] [UI/UX] Auto focus first input field (#6413) --- src/ui/form-modal-ui-handler.ts | 5 +++++ src/ui/pokedex-scan-ui-handler.ts | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ui/form-modal-ui-handler.ts b/src/ui/form-modal-ui-handler.ts index 5c547465de9..c6ef8705aa8 100644 --- a/src/ui/form-modal-ui-handler.ts +++ b/src/ui/form-modal-ui-handler.ts @@ -136,6 +136,11 @@ export abstract class FormModalUiHandler extends ModalUiHandler { this.submitAction = config.buttonActions.length ? config.buttonActions[0] : null; this.cancelAction = config.buttonActions[1] ?? null; + // Auto focus the first input field after a short delay, to prevent accidental inputs + setTimeout(() => { + this.inputs[0].setFocus(); + }, 50); + // #region: Override button pointerDown // Override the pointerDown event for the buttonBgs to call the `submitAction` and `cancelAction` // properties that we set above, allowing their behavior to change after this method terminates diff --git a/src/ui/pokedex-scan-ui-handler.ts b/src/ui/pokedex-scan-ui-handler.ts index 4f606cbcbb0..9be7a903dec 100644 --- a/src/ui/pokedex-scan-ui-handler.ts +++ b/src/ui/pokedex-scan-ui-handler.ts @@ -106,10 +106,6 @@ export class PokedexScanUiHandler extends FormModalUiHandler { this.reduceKeys(); - setTimeout(() => { - input.setFocus(); // Focus after a short delay to avoid unwanted input - }, 50); - input.on("keydown", (inputObject, evt: KeyboardEvent) => { if ( ["escape", "space"].some(v => v === evt.key.toLowerCase() || v === evt.code.toLowerCase()) && From 309e31e196f005911b65eecc3fba8828e3e73b47 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Fri, 5 Sep 2025 14:38:01 -0400 Subject: [PATCH 05/32] [Bug] Future Sight no longer crashes after catching the user (#6479) --- src/battle-scene.ts | 2 + src/data/battle-anims.ts | 2 +- src/data/positional-tags/positional-tag.ts | 4 +- test/moves/delayed-attack.test.ts | 69 ++++++++++++++++------ test/test-utils/phase-interceptor.ts | 2 + 5 files changed, 58 insertions(+), 21 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 9ac6e385220..3a1de1bcc43 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -863,6 +863,8 @@ export class BattleScene extends SceneBase { * @param pokemonId - The ID whose Pokemon will be retrieved. * @returns The {@linkcode Pokemon} associated with the given id. * Returns `null` if the ID is `undefined` or not present in either party. + * @todo Change the `null` to `undefined` and update callers' signatures - + * this is weird and causes a lot of random jank */ getPokemonById(pokemonId: number | undefined): Pokemon | null { if (isNullOrUndefined(pokemonId)) { diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index 5ff4472d148..85b15c934be 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -835,7 +835,7 @@ export abstract class BattleAnim { // biome-ignore lint/complexity/noBannedTypes: callback is used liberally play(onSubstitute?: boolean, callback?: Function) { const isOppAnim = this.isOppAnim(); - const user = !isOppAnim ? this.user! : this.target!; // TODO: are those bangs correct? + const user = !isOppAnim ? this.user! : this.target!; // TODO: These bangs are LITERALLY not correct at all const target = !isOppAnim ? this.target! : this.user!; if (!target?.isOnField() && !this.playRegardlessOfIssues) { diff --git a/src/data/positional-tags/positional-tag.ts b/src/data/positional-tags/positional-tag.ts index 77ca6f0e9eb..a877b45b045 100644 --- a/src/data/positional-tags/positional-tag.ts +++ b/src/data/positional-tags/positional-tag.ts @@ -126,7 +126,9 @@ export class DelayedAttackTag extends PositionalTag implements DelayedAttackArgs // Silently disappear if either source or target are missing or happen to be the same pokemon // (i.e. targeting oneself) // We also need to check for fainted targets as they don't technically leave the field until _after_ the turn ends - return !!source && !!target && source !== target && !target.isFainted(); + // TODO: Figure out a way to store the target's offensive stat if they faint to allow pending attacks to persist + // TODO: Remove the `?.scene` checks once battle anims are cleaned up - needed to avoid catch+release crash + return !!source?.scene && !!target?.scene && source !== target && !target.isFainted(); } } diff --git a/test/moves/delayed-attack.test.ts b/test/moves/delayed-attack.test.ts index e8cf2871626..420ef6d1f00 100644 --- a/test/moves/delayed-attack.test.ts +++ b/test/moves/delayed-attack.test.ts @@ -4,12 +4,15 @@ import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { BattleType } from "#enums/battle-type"; import { BattlerIndex } from "#enums/battler-index"; +import { Button } from "#enums/buttons"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; +import { PokeballType } from "#enums/pokeball"; import { PokemonType } from "#enums/pokemon-type"; import { PositionalTagType } from "#enums/positional-tag-type"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; +import { UiMode } from "#enums/ui-mode"; import { GameManager } from "#test/test-utils/game-manager"; import i18next from "i18next"; import Phaser from "phaser"; @@ -95,7 +98,7 @@ describe("Moves - Delayed Attacks", () => { expectFutureSightActive(0); const enemy = game.field.getEnemyPokemon(); - expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); + expect(enemy).not.toHaveFullHp(); expect(game.textInterceptor.logs).toContain( i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(enemy), @@ -130,12 +133,12 @@ describe("Moves - Delayed Attacks", () => { expectFutureSightActive(); const enemy = game.field.getEnemyPokemon(); - expect(enemy.hp).toBe(enemy.getMaxHp()); + expect(enemy).toHaveFullHp(); await passTurns(2); expectFutureSightActive(0); - expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); + expect(enemy).not.toHaveFullHp(); }); it("should work when used against different targets in doubles", async () => { @@ -149,15 +152,15 @@ describe("Moves - Delayed Attacks", () => { await game.toEndOfTurn(); expectFutureSightActive(2); - expect(enemy1.hp).toBe(enemy1.getMaxHp()); - expect(enemy2.hp).toBe(enemy2.getMaxHp()); + expect(enemy1).toHaveFullHp(); + expect(enemy2).toHaveFullHp(); expect(karp.getLastXMoves()[0].result).toBe(MoveResult.OTHER); expect(feebas.getLastXMoves()[0].result).toBe(MoveResult.OTHER); await passTurns(2); - expect(enemy1.hp).toBeLessThan(enemy1.getMaxHp()); - expect(enemy2.hp).toBeLessThan(enemy2.getMaxHp()); + expect(enemy1).not.toHaveFullHp(); + expect(enemy2).not.toHaveFullHp(); }); it("should trigger multiple pending attacks in order of creation, even if that order changes later on", async () => { @@ -222,8 +225,8 @@ describe("Moves - Delayed Attacks", () => { expect(game.scene.getPlayerParty()).toEqual([milotic, karp, feebas]); - expect(karp.hp).toBe(karp.getMaxHp()); - expect(feebas.hp).toBe(feebas.getMaxHp()); + expect(karp).toHaveFullHp(); + expect(feebas).toHaveFullHp(); expect(game.textInterceptor.logs).not.toContain( i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(karp), @@ -245,15 +248,14 @@ describe("Moves - Delayed Attacks", () => { expect(enemy2.isFainted()).toBe(true); expectFutureSightActive(); - const attack = game.scene.arena.positionalTagManager.tags.find( - t => t.tagType === PositionalTagType.DELAYED_ATTACK, - )!; - expect(attack).toBeDefined(); - expect(attack.targetIndex).toBe(enemy1.getBattlerIndex()); + expect(game).toHavePositionalTag({ + tagType: PositionalTagType.DELAYED_ATTACK, + targetIndex: enemy1.getBattlerIndex(), + }); await passTurns(2); - expect(enemy1.hp).toBeLessThan(enemy1.getMaxHp()); + expect(enemy1).not.toHaveFullHp(); expect(game.textInterceptor.logs).toContain( i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(enemy1), @@ -281,7 +283,7 @@ describe("Moves - Delayed Attacks", () => { await game.toNextTurn(); expectFutureSightActive(0); - expect(enemy1.hp).toBe(enemy1.getMaxHp()); + expect(enemy1).toHaveFullHp(); expect(game.textInterceptor.logs).not.toContain( i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(enemy1), @@ -317,8 +319,8 @@ describe("Moves - Delayed Attacks", () => { await game.toEndOfTurn(); - expect(enemy1.hp).toBe(enemy1.getMaxHp()); - expect(enemy2.hp).toBeLessThan(enemy2.getMaxHp()); + expect(enemy1).toHaveFullHp(); + expect(enemy2).not.toHaveFullHp(); expect(game.textInterceptor.logs).toContain( i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(enemy2), @@ -351,7 +353,7 @@ describe("Moves - Delayed Attacks", () => { // Player Normalize was not applied due to being off field const enemy = game.field.getEnemyPokemon(); - expect(enemy.hp).toBeLessThan(enemy.getMaxHp()); + expect(enemy).not.toHaveFullHp(); expect(game.textInterceptor.logs).toContain( i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(enemy), @@ -384,6 +386,35 @@ describe("Moves - Delayed Attacks", () => { expect(typeBoostSpy).not.toHaveBeenCalled(); }); + it("should not crash when catching & releasing a Pokemon on the same turn its delayed attack expires", async () => { + game.override.startingModifier([{ name: "MASTER_BALL", count: 1 }]); + await game.classicMode.startBattle([ + SpeciesId.FEEBAS, + SpeciesId.FEEBAS, + SpeciesId.FEEBAS, + SpeciesId.FEEBAS, + SpeciesId.FEEBAS, + SpeciesId.FEEBAS, + ]); + + game.move.use(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.FUTURE_SIGHT); + await game.toNextTurn(); + + expectFutureSightActive(1); + + await passTurns(1); + + // Throw master ball and release the enemy + game.doThrowPokeball(PokeballType.MASTER_BALL); + game.onNextPrompt("AttemptCapturePhase", UiMode.CONFIRM, () => { + game.scene.ui.processInput(Button.CANCEL); + }); + await game.toEndOfTurn(); + + expectFutureSightActive(0); + }); + // TODO: Implement and move to a power spot's test file it.todo("Should activate ally's power spot when switched in during single battles"); }); diff --git a/test/test-utils/phase-interceptor.ts b/test/test-utils/phase-interceptor.ts index 996f00806c6..f2f11db9d12 100644 --- a/test/test-utils/phase-interceptor.ts +++ b/test/test-utils/phase-interceptor.ts @@ -1,6 +1,7 @@ import type { BattleScene } from "#app/battle-scene"; import { Phase } from "#app/phase"; import { UiMode } from "#enums/ui-mode"; +import { AttemptCapturePhase } from "#phases/attempt-capture-phase"; import { AttemptRunPhase } from "#phases/attempt-run-phase"; import { BattleEndPhase } from "#phases/battle-end-phase"; import { BerryPhase } from "#phases/berry-phase"; @@ -183,6 +184,7 @@ export class PhaseInterceptor { PostGameOverPhase, RevivalBlessingPhase, PokemonHealPhase, + AttemptCapturePhase, ]; private endBySetMode = [ From 39760a8514fc0db644e9232cd3cab3ce94f149d6 Mon Sep 17 00:00:00 2001 From: Lugiad Date: Sat, 6 Sep 2025 11:08:33 +0200 Subject: [PATCH 06/32] [UI/UX] [Localization] Battle & Party UI translation (#6482) --- public/images/ui/legacy/numbers_alt.png | Bin 237 -> 0 bytes public/images/ui/legacy/numbers_red_alt.png | Bin 237 -> 0 bytes public/images/ui/legacy/overlay_lv.png | Bin 114 -> 0 bytes public/images/ui/legacy/overlay_lv_alt.png | Bin 129 -> 0 bytes public/images/ui/legacy/party_slot_hp_bar.png | Bin 169 -> 140 bytes .../ui/legacy/party_slot_overlay_lv_alt.png | Bin 124 -> 0 bytes public/images/ui/legacy/pbinfo_enemy_boss.png | Bin 331 -> 299 bytes public/images/ui/legacy/pbinfo_enemy_mini.png | Bin 308 -> 274 bytes public/images/ui/legacy/pbinfo_player.png | Bin 355 -> 318 bytes .../images/ui/legacy/pbinfo_player_mini.png | Bin 309 -> 292 bytes public/images/ui/legacy/pbinfo_stat.png | Bin 232 -> 0 bytes .../ca/battle_ui/overlay_exp_label_ca.png | Bin 0 -> 116 bytes .../ca/battle_ui/overlay_hp_label_boss_ca.png | Bin 0 -> 169 bytes .../ca/battle_ui/overlay_hp_label_ca.png | Bin 0 -> 149 bytes .../ca/battle_ui/overlay_lv_ca.png | Bin 0 -> 124 bytes .../ca/battle_ui/pbinfo_stat_ca.json | 209 ++++++++++++++++++ .../ca/battle_ui/pbinfo_stat_ca.png | Bin 0 -> 288 bytes .../ca/party_ui/party_slot_overlay_hp_ca.png | Bin 0 -> 146 bytes .../ca/party_ui/party_slot_overlay_lv_ca.png | Bin 0 -> 125 bytes .../da/battle_ui/overlay_exp_label_da.png | Bin 0 -> 120 bytes .../da/battle_ui/overlay_hp_label_boss_da.png | Bin 0 -> 169 bytes .../da/battle_ui/overlay_hp_label_da.png | Bin 0 -> 146 bytes .../da/battle_ui/overlay_lv_da.png | Bin 0 -> 111 bytes .../da/battle_ui/pbinfo_stat_da.json | 209 ++++++++++++++++++ .../da/battle_ui/pbinfo_stat_da.png | Bin 0 -> 236 bytes .../da/party_ui/party_slot_overlay_hp_da.png | Bin 0 -> 144 bytes .../da/party_ui/party_slot_overlay_lv_da.png} | Bin .../de/battle_ui/overlay_exp_label_de.png | Bin 0 -> 120 bytes .../de/battle_ui/overlay_hp_label_boss_de.png | Bin 0 -> 169 bytes .../de/battle_ui/overlay_hp_label_de.png | Bin 0 -> 149 bytes .../de/battle_ui/overlay_lv_de.png | Bin 0 -> 111 bytes .../de/battle_ui/pbinfo_stat_de.json | 209 ++++++++++++++++++ .../de/battle_ui/pbinfo_stat_de.png | Bin 0 -> 240 bytes .../de/party_ui/party_slot_overlay_hp_de.png | Bin 0 -> 145 bytes .../de/party_ui/party_slot_overlay_lv_de.png | Bin 0 -> 112 bytes .../en/battle_ui/overlay_exp_label.png | Bin 0 -> 1401 bytes .../en/battle_ui/overlay_hp_label.png | Bin 0 -> 146 bytes .../en/battle_ui/overlay_hp_label_boss.png | Bin 0 -> 169 bytes .../text_images/en/battle_ui/overlay_lv.png | Bin 0 -> 111 bytes .../en/battle_ui}/pbinfo_stat.json | 0 .../text_images/en/battle_ui/pbinfo_stat.png | Bin 0 -> 236 bytes .../en/party_ui/party_slot_overlay_hp.png | Bin 0 -> 144 bytes .../en/party_ui/party_slot_overlay_lv.png | Bin 0 -> 112 bytes .../battle_ui/overlay_exp_label_es-ES.png | Bin 0 -> 116 bytes .../battle_ui/overlay_hp_label_boss_es-ES.png | Bin 0 -> 159 bytes .../battle_ui/overlay_hp_label_es-ES.png | Bin 0 -> 149 bytes .../es-ES/battle_ui/overlay_lv_es-ES.png | Bin 0 -> 124 bytes .../es-ES/battle_ui/pbinfo_stat_es_ES.json | 209 ++++++++++++++++++ .../es-ES/battle_ui/pbinfo_stat_es_ES.png | Bin 0 -> 285 bytes .../party_ui/party_slot_overlay_hp_es-ES.png | Bin 0 -> 146 bytes .../party_ui/party_slot_overlay_lv_es-ES.png | Bin 0 -> 125 bytes .../battle_ui/overlay_exp_label_es-MX.png | Bin 0 -> 116 bytes .../battle_ui/overlay_hp_label_boss_es-MX.png | Bin 0 -> 159 bytes .../battle_ui/overlay_hp_label_es-MX.png | Bin 0 -> 149 bytes .../es-MX/battle_ui/overlay_lv_es-MX.png | Bin 0 -> 124 bytes .../es-MX/battle_ui/pbinfo_stat_es_MX.json | 209 ++++++++++++++++++ .../es-MX/battle_ui/pbinfo_stat_es_MX.png | Bin 0 -> 285 bytes .../party_ui/party_slot_overlay_hp_es-MX.png | Bin 0 -> 146 bytes .../party_ui/party_slot_overlay_lv_es-MX.png | Bin 0 -> 125 bytes .../fr/battle_ui/overlay_exp_label_fr.png | Bin 0 -> 1401 bytes .../fr/battle_ui/overlay_hp_label_boss_fr.png | Bin 0 -> 169 bytes .../fr/battle_ui/overlay_hp_label_fr.png | Bin 0 -> 147 bytes .../fr/battle_ui/overlay_lv_fr.png | Bin 0 -> 124 bytes .../fr/battle_ui/pbinfo_stat_fr.json | 209 ++++++++++++++++++ .../fr/battle_ui/pbinfo_stat_fr.png | Bin 0 -> 273 bytes .../fr/party_ui/party_slot_overlay_hp_fr.png | Bin 0 -> 148 bytes .../fr/party_ui/party_slot_overlay_lv_fr.png | Bin 0 -> 119 bytes .../it/battle_ui/overlay_exp_label_it.png | Bin 0 -> 120 bytes .../it/battle_ui/overlay_hp_label_boss_it.png | Bin 0 -> 169 bytes .../it/battle_ui/overlay_hp_label_it.png | Bin 0 -> 149 bytes .../it/battle_ui/overlay_lv_it.png | Bin 0 -> 117 bytes .../it/battle_ui/pbinfo_stat_it.json | 209 ++++++++++++++++++ .../it/battle_ui/pbinfo_stat_it.png | Bin 0 -> 267 bytes .../it/party_ui/party_slot_overlay_hp_it.png | Bin 0 -> 146 bytes .../it/party_ui/party_slot_overlay_lv_it.png | Bin 0 -> 111 bytes .../ja/battle_ui/overlay_exp_label_ja.png | Bin 0 -> 1401 bytes .../ja/battle_ui/overlay_hp_label_boss_ja.png | Bin 0 -> 169 bytes .../ja/battle_ui/overlay_hp_label_ja.png | Bin 0 -> 146 bytes .../ja/battle_ui/overlay_lv_ja.png | Bin 0 -> 111 bytes .../ja/battle_ui/pbinfo_stat_ja.json | 209 ++++++++++++++++++ .../ja/battle_ui/pbinfo_stat_ja.png | Bin 0 -> 236 bytes .../ja/party_ui/party_slot_overlay_hp_ja.png | Bin 0 -> 144 bytes .../ja/party_ui/party_slot_overlay_lv_ja.png | Bin 0 -> 112 bytes .../ko/battle_ui/overlay_exp_label_ko.png | Bin 0 -> 1401 bytes .../ko/battle_ui/overlay_hp_label_boss_ko.png | Bin 0 -> 169 bytes .../ko/battle_ui/overlay_hp_label_ko.png | Bin 0 -> 146 bytes .../ko/battle_ui/overlay_lv_ko.png | Bin 0 -> 111 bytes .../ko/battle_ui/pbinfo_stat_ko.json | 209 ++++++++++++++++++ .../ko/battle_ui/pbinfo_stat_ko.png | Bin 0 -> 236 bytes .../ko/party_ui/party_slot_overlay_hp_ko.png | Bin 0 -> 144 bytes .../ko/party_ui/party_slot_overlay_lv_ko.png | Bin 0 -> 112 bytes .../battle_ui/overlay_exp_label_pt-BR.png | Bin 0 -> 116 bytes .../battle_ui/overlay_hp_label_boss_pt-BR.png | Bin 0 -> 169 bytes .../battle_ui/overlay_hp_label_pt-BR.png | Bin 0 -> 149 bytes .../pt-BR/battle_ui/overlay_lv_pt-BR.png | Bin 0 -> 124 bytes .../pt-BR/battle_ui/pbinfo_stat_pt-BR.json | 209 ++++++++++++++++++ .../pt-BR/battle_ui/pbinfo_stat_pt-BR.png | Bin 0 -> 282 bytes .../party_ui/party_slot_overlay_hp_pt-BR.png | Bin 0 -> 146 bytes .../party_ui/party_slot_overlay_lv_pt-BR.png | Bin 0 -> 125 bytes .../ro/battle_ui/overlay_exp_label_ro.png | Bin 0 -> 1401 bytes .../ro/battle_ui/overlay_hp_label_boss_ro.png | Bin 0 -> 169 bytes .../ro/battle_ui/overlay_hp_label_ro.png | Bin 0 -> 146 bytes .../ro/battle_ui/overlay_lv_ro.png | Bin 0 -> 111 bytes .../ro/battle_ui/pbinfo_stat_ro.json | 209 ++++++++++++++++++ .../ro/battle_ui/pbinfo_stat_ro.png | Bin 0 -> 236 bytes .../ro/party_ui/party_slot_overlay_hp_ro.png | Bin 0 -> 144 bytes .../ro/party_ui/party_slot_overlay_lv_ro.png | Bin 0 -> 112 bytes .../ru/battle_ui/overlay_exp_label_ru.png | Bin 0 -> 129 bytes .../ru/battle_ui/overlay_hp_label_boss_ru.png | Bin 0 -> 170 bytes .../ru/battle_ui/overlay_hp_label_ru.png | Bin 0 -> 150 bytes .../ru/battle_ui/overlay_lv_ru.png | Bin 0 -> 138 bytes .../ru/battle_ui/pbinfo_stat_ru.json | 209 ++++++++++++++++++ .../ru/battle_ui/pbinfo_stat_ru.png | Bin 0 -> 286 bytes .../ru/party_ui/party_slot_overlay_hp_ru.png | Bin 0 -> 145 bytes .../ru/party_ui/party_slot_overlay_lv_ru.png | Bin 0 -> 137 bytes .../tl/battle_ui/overlay_exp_label_tl.png | Bin 0 -> 1401 bytes .../tl/battle_ui/overlay_hp_label_boss_tl.png | Bin 0 -> 169 bytes .../tl/battle_ui/overlay_hp_label_tl.png | Bin 0 -> 146 bytes .../tl/battle_ui/overlay_lv_tl.png | Bin 0 -> 111 bytes .../tl/battle_ui/pbinfo_stat_tl.json | 209 ++++++++++++++++++ .../tl/battle_ui/pbinfo_stat_tl.png | Bin 0 -> 236 bytes .../tl/party_ui/party_slot_overlay_hp_tl.png | Bin 0 -> 144 bytes .../tl/party_ui/party_slot_overlay_lv_tl.png | Bin 0 -> 112 bytes .../tr/battle_ui/overlay_exp_label_tr.png | Bin 0 -> 129 bytes .../tr/battle_ui/overlay_hp_label_boss_tr.png | Bin 0 -> 169 bytes .../tr/battle_ui/overlay_hp_label_tr.png | Bin 0 -> 147 bytes .../tr/battle_ui/overlay_lv_tr.png | Bin 0 -> 137 bytes .../tr/battle_ui/pbinfo_stat_tr.json | 209 ++++++++++++++++++ .../tr/battle_ui/pbinfo_stat_tr.png | Bin 0 -> 236 bytes .../tr/party_ui/party_slot_overlay_hp_tr.png | Bin 0 -> 147 bytes .../tr/party_ui/party_slot_overlay_lv_tr.png | Bin 0 -> 146 bytes .../battle_ui/overlay_exp_label_zh-CN.png | Bin 0 -> 1401 bytes .../battle_ui/overlay_hp_label_boss_zh-CN.png | Bin 0 -> 169 bytes .../battle_ui/overlay_hp_label_zh-CN.png | Bin 0 -> 146 bytes .../zh-CN/battle_ui/overlay_lv_zh-CN.png | Bin 0 -> 111 bytes .../zh-CN/battle_ui/pbinfo_stat_zh-CN.json | 209 ++++++++++++++++++ .../zh-CN/battle_ui/pbinfo_stat_zh-CN.png | Bin 0 -> 236 bytes .../party_ui/party_slot_overlay_hp_zh-CN.png | Bin 0 -> 144 bytes .../party_ui/party_slot_overlay_lv_zh-CN.png | Bin 0 -> 112 bytes .../battle_ui/overlay_exp_label_zh-TW.png | Bin 0 -> 1401 bytes .../battle_ui/overlay_hp_label_boss_zh-TW.png | Bin 0 -> 169 bytes .../battle_ui/overlay_hp_label_zh-TW.png | Bin 0 -> 146 bytes .../zh-TW/battle_ui/overlay_lv_zh-TW.png | Bin 0 -> 111 bytes .../zh-TW/battle_ui/pbinfo_stat_zh-TW.json | 209 ++++++++++++++++++ .../zh-TW/battle_ui/pbinfo_stat_zh-TW.png | Bin 0 -> 236 bytes .../party_ui/party_slot_overlay_hp_zh-TW.png | Bin 0 -> 144 bytes .../party_ui/party_slot_overlay_lv_zh-TW.png | Bin 0 -> 112 bytes public/images/ui/overlay_lv.png | Bin 129 -> 0 bytes public/images/ui/party_slot_hp_bar.png | Bin 160 -> 139 bytes public/images/ui/pbinfo_enemy_boss.png | Bin 290 -> 252 bytes public/images/ui/pbinfo_enemy_mini.png | Bin 275 -> 251 bytes public/images/ui/pbinfo_player.png | Bin 344 -> 285 bytes public/images/ui/pbinfo_player_mini.png | Bin 276 -> 253 bytes public/images/ui/pbinfo_stat.png | Bin 277 -> 0 bytes .../ca/battle_ui/overlay_exp_label_ca.png | Bin 0 -> 126 bytes .../ca/battle_ui/overlay_hp_label_boss_ca.png | Bin 0 -> 148 bytes .../ca/battle_ui/overlay_hp_label_ca.png | Bin 0 -> 147 bytes .../ca/battle_ui/overlay_lv_ca.png | Bin 0 -> 124 bytes .../ca/battle_ui/pbinfo_stat_ca.json | 209 ++++++++++++++++++ .../ca/battle_ui/pbinfo_stat_ca.png | Bin 0 -> 298 bytes .../ca/party_ui/party_slot_overlay_hp_ca.png | Bin 0 -> 131 bytes .../ca/party_ui/party_slot_overlay_lv_ca.png | Bin 0 -> 127 bytes .../da/battle_ui/overlay_exp_label_da.png | Bin 0 -> 125 bytes .../da/battle_ui/overlay_hp_label_boss_da.png | Bin 0 -> 148 bytes .../da/battle_ui/overlay_hp_label_da.png | Bin 0 -> 127 bytes .../da/battle_ui/overlay_lv_da.png | Bin 0 -> 123 bytes .../da/battle_ui/pbinfo_stat_da.json | 209 ++++++++++++++++++ .../da/battle_ui/pbinfo_stat_da.png | Bin 0 -> 278 bytes .../da/party_ui/party_slot_overlay_hp_da.png | Bin 0 -> 127 bytes .../da/party_ui/party_slot_overlay_lv_da.png} | Bin .../de/battle_ui/overlay_exp_label_de.png | Bin 0 -> 125 bytes .../de/battle_ui/overlay_hp_label_boss_de.png | Bin 0 -> 148 bytes .../de/battle_ui/overlay_hp_label_de.png | Bin 0 -> 150 bytes .../de/battle_ui/overlay_lv_de.png | Bin 0 -> 123 bytes .../de/battle_ui/pbinfo_stat_de.json | 209 ++++++++++++++++++ .../de/battle_ui/pbinfo_stat_de.png | Bin 0 -> 269 bytes .../de/party_ui/party_slot_overlay_hp_de.png | Bin 0 -> 128 bytes .../de/party_ui/party_slot_overlay_lv_de.png | Bin 0 -> 124 bytes .../en/battle_ui/overlay_exp_label.png | Bin 0 -> 126 bytes .../en/battle_ui/overlay_hp_label.png | Bin 0 -> 127 bytes .../en/battle_ui/overlay_hp_label_boss.png | Bin 0 -> 148 bytes .../text_images/en/battle_ui/overlay_lv.png | Bin 0 -> 123 bytes .../en/battle_ui}/pbinfo_stat.json | 0 .../text_images/en/battle_ui/pbinfo_stat.png | Bin 0 -> 278 bytes .../en/party_ui/party_slot_overlay_hp.png | Bin 0 -> 127 bytes .../en/party_ui/party_slot_overlay_lv.png | Bin 0 -> 124 bytes .../battle_ui/overlay_exp_label_es-ES.png | Bin 0 -> 126 bytes .../battle_ui/overlay_hp_label_boss_es-ES.png | Bin 0 -> 171 bytes .../battle_ui/overlay_hp_label_es-ES.png | Bin 0 -> 147 bytes .../es-ES/battle_ui/overlay_lv_es-ES.png | Bin 0 -> 124 bytes .../es-ES/battle_ui/pbinfo_stat_es-ES.json | 209 ++++++++++++++++++ .../es-ES/battle_ui/pbinfo_stat_es-ES.png | Bin 0 -> 295 bytes .../party_ui/party_slot_overlay_hp_es-ES.png | Bin 0 -> 131 bytes .../party_ui/party_slot_overlay_lv_es-ES.png | Bin 0 -> 127 bytes .../battle_ui/overlay_exp_label_es-MX.png | Bin 0 -> 126 bytes .../battle_ui/overlay_hp_label_boss_es-MX.png | Bin 0 -> 171 bytes .../battle_ui/overlay_hp_label_es-MX.png | Bin 0 -> 147 bytes .../es-MX/battle_ui/overlay_lv_es-MX.png | Bin 0 -> 124 bytes .../es-MX/battle_ui/pbinfo_stat_es-MX.json | 209 ++++++++++++++++++ .../es-MX/battle_ui/pbinfo_stat_es-MX.png | Bin 0 -> 295 bytes .../party_ui/party_slot_overlay_hp_es-MX.png | Bin 0 -> 131 bytes .../party_ui/party_slot_overlay_lv_es-MX.png | Bin 0 -> 127 bytes .../fr/battle_ui/overlay_exp_label_fr.png | Bin 0 -> 126 bytes .../fr/battle_ui/overlay_hp_label_boss_fr.png | Bin 0 -> 148 bytes .../fr/battle_ui/overlay_hp_label_fr.png | Bin 0 -> 130 bytes .../fr/battle_ui/overlay_lv_fr.png | Bin 0 -> 133 bytes .../fr/battle_ui/pbinfo_stat_fr.json | 209 ++++++++++++++++++ .../fr/battle_ui/pbinfo_stat_fr.png | Bin 0 -> 304 bytes .../fr/party_ui/party_slot_overlay_hp_fr.png | Bin 0 -> 130 bytes .../fr/party_ui/party_slot_overlay_lv_fr.png | Bin 0 -> 134 bytes .../it/battle_ui/overlay_exp_label_it.png | Bin 0 -> 128 bytes .../it/battle_ui/overlay_hp_label_boss_it.png | Bin 0 -> 148 bytes .../it/battle_ui/overlay_hp_label_it.png | Bin 0 -> 147 bytes .../it/battle_ui/overlay_lv_it.png | Bin 0 -> 113 bytes .../it/battle_ui/pbinfo_stat_it.json | 209 ++++++++++++++++++ .../it/battle_ui/pbinfo_stat_it.png | Bin 0 -> 287 bytes .../it/party_ui/party_slot_overlay_hp_it.png | Bin 0 -> 131 bytes .../it/party_ui/party_slot_overlay_lv_it.png | Bin 0 -> 115 bytes .../ja/battle_ui/overlay_exp_label_ja.png | Bin 0 -> 126 bytes .../ja/battle_ui/overlay_hp_label_boss_ja.png | Bin 0 -> 148 bytes .../ja/battle_ui/overlay_hp_label_ja.png | Bin 0 -> 127 bytes .../ja/battle_ui/overlay_lv_ja.png | Bin 0 -> 123 bytes .../ja/battle_ui/pbinfo_stat_ja.json | 209 ++++++++++++++++++ .../ja/battle_ui/pbinfo_stat_ja.png | Bin 0 -> 278 bytes .../ja/party_ui/party_slot_overlay_hp_ja.png | Bin 0 -> 127 bytes .../ja/party_ui/party_slot_overlay_lv_ja.png | Bin 0 -> 124 bytes .../ko/battle_ui/overlay_exp_label_ko.png | Bin 0 -> 126 bytes .../ko/battle_ui/overlay_hp_label_boss_ko.png | Bin 0 -> 148 bytes .../ko/battle_ui/overlay_hp_label_ko.png | Bin 0 -> 127 bytes .../ko/battle_ui/overlay_lv_ko.png | Bin 0 -> 123 bytes .../ko/battle_ui/pbinfo_stat_ko.json | 209 ++++++++++++++++++ .../ko/battle_ui/pbinfo_stat_ko.png | Bin 0 -> 278 bytes .../ko/party_ui/party_slot_overlay_hp_ko.png | Bin 0 -> 127 bytes .../ko/party_ui/party_slot_overlay_lv_ko.png | Bin 0 -> 124 bytes .../battle_ui/overlay_exp_label_pt-BR.png | Bin 0 -> 126 bytes .../battle_ui/overlay_hp_label_boss_pt-BR.png | Bin 0 -> 148 bytes .../battle_ui/overlay_hp_label_pt-BR.png | Bin 0 -> 147 bytes .../pt-BR/battle_ui/overlay_lv_pt-BR.png | Bin 0 -> 124 bytes .../pt-BR/battle_ui/pbinfo_stat_pt-BR.json | 209 ++++++++++++++++++ .../pt-BR/battle_ui/pbinfo_stat_pt-BR.png | Bin 0 -> 292 bytes .../party_ui/party_slot_overlay_hp_pt-BR.png | Bin 0 -> 131 bytes .../party_ui/party_slot_overlay_lv_pt-BR.png | Bin 0 -> 127 bytes .../ro/battle_ui/overlay_exp_label_ro.png | Bin 0 -> 126 bytes .../ro/battle_ui/overlay_hp_label_boss_ro.png | Bin 0 -> 148 bytes .../ro/battle_ui/overlay_hp_label_ro.png | Bin 0 -> 127 bytes .../ro/battle_ui/overlay_lv_ro.png | Bin 0 -> 123 bytes .../ro/battle_ui/pbinfo_stat_ro.json | 209 ++++++++++++++++++ .../ro/battle_ui/pbinfo_stat_ro.png | Bin 0 -> 278 bytes .../ro/party_ui/party_slot_overlay_hp_ro.png | Bin 0 -> 127 bytes .../ro/party_ui/party_slot_overlay_lv_ro.png | Bin 0 -> 124 bytes .../ru/battle_ui/overlay_exp_label_ru.png | Bin 0 -> 136 bytes .../ru/battle_ui/overlay_hp_label_boss_ru.png | Bin 0 -> 156 bytes .../ru/battle_ui/overlay_hp_label_ru.png | Bin 0 -> 146 bytes .../ru/battle_ui/overlay_lv_ru.png | Bin 0 -> 144 bytes .../ru/battle_ui/pbinfo_stat_ru.json | 209 ++++++++++++++++++ .../ru/battle_ui/pbinfo_stat_ru.png | Bin 0 -> 318 bytes .../ru/party_ui/party_slot_overlay_hp_ru.png | Bin 0 -> 145 bytes .../ru/party_ui/party_slot_overlay_lv_ru.png | Bin 0 -> 144 bytes .../tl/battle_ui/overlay_exp_label_tl.png | Bin 0 -> 126 bytes .../tl/battle_ui/overlay_hp_label_boss_tl.png | Bin 0 -> 148 bytes .../tl/battle_ui/overlay_hp_label_tl.png | Bin 0 -> 127 bytes .../tl/battle_ui/overlay_lv_tl.png | Bin 0 -> 123 bytes .../tl/battle_ui/pbinfo_stat_tl.json | 209 ++++++++++++++++++ .../tl/battle_ui/pbinfo_stat_tl.png | Bin 0 -> 278 bytes .../tl/party_ui/party_slot_overlay_hp_tl.png | Bin 0 -> 127 bytes .../tl/party_ui/party_slot_overlay_lv_tl.png | Bin 0 -> 124 bytes .../tr/battle_ui/overlay_exp_label_tr.png | Bin 0 -> 125 bytes .../tr/battle_ui/overlay_hp_label_boss_tr.png | Bin 0 -> 148 bytes .../tr/battle_ui/overlay_hp_label_tr.png | Bin 0 -> 145 bytes .../tr/battle_ui/overlay_lv_tr.png | Bin 0 -> 124 bytes .../tr/battle_ui/pbinfo_stat_tr.json | 209 ++++++++++++++++++ .../tr/battle_ui/pbinfo_stat_tr.png | Bin 0 -> 278 bytes .../tr/party_ui/party_slot_overlay_hp_tr.png | Bin 0 -> 148 bytes .../tr/party_ui/party_slot_overlay_lv_tr.png | Bin 0 -> 126 bytes .../battle_ui/overlay_exp_label_zh-CN.png | Bin 0 -> 126 bytes .../battle_ui/overlay_hp_label_boss_zh-CN.png | Bin 0 -> 148 bytes .../battle_ui/overlay_hp_label_zh-CN.png | Bin 0 -> 127 bytes .../zh-CN/battle_ui/overlay_lv_zh-CN.png | Bin 0 -> 123 bytes .../zh-CN/battle_ui/pbinfo_stat_zh-CN.json | 209 ++++++++++++++++++ .../zh-CN/battle_ui/pbinfo_stat_zh-CN.png | Bin 0 -> 278 bytes .../party_ui/party_slot_overlay_hp_zh-CN.png | Bin 0 -> 127 bytes .../party_ui/party_slot_overlay_lv_zh-CN.png | Bin 0 -> 124 bytes .../battle_ui/overlay_exp_label_zh-TW.png | Bin 0 -> 126 bytes .../battle_ui/overlay_hp_label_boss_zh-TW.png | Bin 0 -> 148 bytes .../battle_ui/overlay_hp_label_zh-TW.png | Bin 0 -> 127 bytes .../zh-TW/battle_ui/overlay_lv_zh-TW.png | Bin 0 -> 123 bytes .../zh-TW/battle_ui/pbinfo_stat_zh-TW.json | 209 ++++++++++++++++++ .../zh-TW/battle_ui/pbinfo_stat_zh-TW.png | Bin 0 -> 278 bytes .../party_ui/party_slot_overlay_hp_zh-TW.png | Bin 0 -> 127 bytes .../party_ui/party_slot_overlay_lv_zh-TW.png | Bin 0 -> 124 bytes src/loading-scene.ts | 31 ++- src/ui/battle-info/battle-info.ts | 10 +- src/ui/battle-info/enemy-battle-info.ts | 4 + src/ui/battle-info/player-battle-info.ts | 11 +- src/ui/party-ui-handler.ts | 21 +- 295 files changed, 6757 insertions(+), 8 deletions(-) delete mode 100644 public/images/ui/legacy/numbers_alt.png delete mode 100644 public/images/ui/legacy/numbers_red_alt.png delete mode 100644 public/images/ui/legacy/overlay_lv.png delete mode 100644 public/images/ui/legacy/overlay_lv_alt.png delete mode 100644 public/images/ui/legacy/party_slot_overlay_lv_alt.png delete mode 100644 public/images/ui/legacy/pbinfo_stat.png create mode 100644 public/images/ui/legacy/text_images/ca/battle_ui/overlay_exp_label_ca.png create mode 100644 public/images/ui/legacy/text_images/ca/battle_ui/overlay_hp_label_boss_ca.png create mode 100644 public/images/ui/legacy/text_images/ca/battle_ui/overlay_hp_label_ca.png create mode 100644 public/images/ui/legacy/text_images/ca/battle_ui/overlay_lv_ca.png create mode 100644 public/images/ui/legacy/text_images/ca/battle_ui/pbinfo_stat_ca.json create mode 100644 public/images/ui/legacy/text_images/ca/battle_ui/pbinfo_stat_ca.png create mode 100644 public/images/ui/legacy/text_images/ca/party_ui/party_slot_overlay_hp_ca.png create mode 100644 public/images/ui/legacy/text_images/ca/party_ui/party_slot_overlay_lv_ca.png create mode 100644 public/images/ui/legacy/text_images/da/battle_ui/overlay_exp_label_da.png create mode 100644 public/images/ui/legacy/text_images/da/battle_ui/overlay_hp_label_boss_da.png create mode 100644 public/images/ui/legacy/text_images/da/battle_ui/overlay_hp_label_da.png create mode 100644 public/images/ui/legacy/text_images/da/battle_ui/overlay_lv_da.png create mode 100644 public/images/ui/legacy/text_images/da/battle_ui/pbinfo_stat_da.json create mode 100644 public/images/ui/legacy/text_images/da/battle_ui/pbinfo_stat_da.png create mode 100644 public/images/ui/legacy/text_images/da/party_ui/party_slot_overlay_hp_da.png rename public/images/ui/legacy/{party_slot_overlay_lv.png => text_images/da/party_ui/party_slot_overlay_lv_da.png} (100%) create mode 100644 public/images/ui/legacy/text_images/de/battle_ui/overlay_exp_label_de.png create mode 100644 public/images/ui/legacy/text_images/de/battle_ui/overlay_hp_label_boss_de.png create mode 100644 public/images/ui/legacy/text_images/de/battle_ui/overlay_hp_label_de.png create mode 100644 public/images/ui/legacy/text_images/de/battle_ui/overlay_lv_de.png create mode 100644 public/images/ui/legacy/text_images/de/battle_ui/pbinfo_stat_de.json create mode 100644 public/images/ui/legacy/text_images/de/battle_ui/pbinfo_stat_de.png create mode 100644 public/images/ui/legacy/text_images/de/party_ui/party_slot_overlay_hp_de.png create mode 100644 public/images/ui/legacy/text_images/de/party_ui/party_slot_overlay_lv_de.png create mode 100644 public/images/ui/legacy/text_images/en/battle_ui/overlay_exp_label.png create mode 100644 public/images/ui/legacy/text_images/en/battle_ui/overlay_hp_label.png create mode 100644 public/images/ui/legacy/text_images/en/battle_ui/overlay_hp_label_boss.png create mode 100644 public/images/ui/legacy/text_images/en/battle_ui/overlay_lv.png rename public/images/ui/legacy/{ => text_images/en/battle_ui}/pbinfo_stat.json (100%) create mode 100644 public/images/ui/legacy/text_images/en/battle_ui/pbinfo_stat.png create mode 100644 public/images/ui/legacy/text_images/en/party_ui/party_slot_overlay_hp.png create mode 100644 public/images/ui/legacy/text_images/en/party_ui/party_slot_overlay_lv.png create mode 100644 public/images/ui/legacy/text_images/es-ES/battle_ui/overlay_exp_label_es-ES.png create mode 100644 public/images/ui/legacy/text_images/es-ES/battle_ui/overlay_hp_label_boss_es-ES.png create mode 100644 public/images/ui/legacy/text_images/es-ES/battle_ui/overlay_hp_label_es-ES.png create mode 100644 public/images/ui/legacy/text_images/es-ES/battle_ui/overlay_lv_es-ES.png create mode 100644 public/images/ui/legacy/text_images/es-ES/battle_ui/pbinfo_stat_es_ES.json create mode 100644 public/images/ui/legacy/text_images/es-ES/battle_ui/pbinfo_stat_es_ES.png create mode 100644 public/images/ui/legacy/text_images/es-ES/party_ui/party_slot_overlay_hp_es-ES.png create mode 100644 public/images/ui/legacy/text_images/es-ES/party_ui/party_slot_overlay_lv_es-ES.png create mode 100644 public/images/ui/legacy/text_images/es-MX/battle_ui/overlay_exp_label_es-MX.png create mode 100644 public/images/ui/legacy/text_images/es-MX/battle_ui/overlay_hp_label_boss_es-MX.png create mode 100644 public/images/ui/legacy/text_images/es-MX/battle_ui/overlay_hp_label_es-MX.png create mode 100644 public/images/ui/legacy/text_images/es-MX/battle_ui/overlay_lv_es-MX.png create mode 100644 public/images/ui/legacy/text_images/es-MX/battle_ui/pbinfo_stat_es_MX.json create mode 100644 public/images/ui/legacy/text_images/es-MX/battle_ui/pbinfo_stat_es_MX.png create mode 100644 public/images/ui/legacy/text_images/es-MX/party_ui/party_slot_overlay_hp_es-MX.png create mode 100644 public/images/ui/legacy/text_images/es-MX/party_ui/party_slot_overlay_lv_es-MX.png create mode 100644 public/images/ui/legacy/text_images/fr/battle_ui/overlay_exp_label_fr.png create mode 100644 public/images/ui/legacy/text_images/fr/battle_ui/overlay_hp_label_boss_fr.png create mode 100644 public/images/ui/legacy/text_images/fr/battle_ui/overlay_hp_label_fr.png create mode 100644 public/images/ui/legacy/text_images/fr/battle_ui/overlay_lv_fr.png create mode 100644 public/images/ui/legacy/text_images/fr/battle_ui/pbinfo_stat_fr.json create mode 100644 public/images/ui/legacy/text_images/fr/battle_ui/pbinfo_stat_fr.png create mode 100644 public/images/ui/legacy/text_images/fr/party_ui/party_slot_overlay_hp_fr.png create mode 100644 public/images/ui/legacy/text_images/fr/party_ui/party_slot_overlay_lv_fr.png create mode 100644 public/images/ui/legacy/text_images/it/battle_ui/overlay_exp_label_it.png create mode 100644 public/images/ui/legacy/text_images/it/battle_ui/overlay_hp_label_boss_it.png create mode 100644 public/images/ui/legacy/text_images/it/battle_ui/overlay_hp_label_it.png create mode 100644 public/images/ui/legacy/text_images/it/battle_ui/overlay_lv_it.png create mode 100644 public/images/ui/legacy/text_images/it/battle_ui/pbinfo_stat_it.json create mode 100644 public/images/ui/legacy/text_images/it/battle_ui/pbinfo_stat_it.png create mode 100644 public/images/ui/legacy/text_images/it/party_ui/party_slot_overlay_hp_it.png create mode 100644 public/images/ui/legacy/text_images/it/party_ui/party_slot_overlay_lv_it.png create mode 100644 public/images/ui/legacy/text_images/ja/battle_ui/overlay_exp_label_ja.png create mode 100644 public/images/ui/legacy/text_images/ja/battle_ui/overlay_hp_label_boss_ja.png create mode 100644 public/images/ui/legacy/text_images/ja/battle_ui/overlay_hp_label_ja.png create mode 100644 public/images/ui/legacy/text_images/ja/battle_ui/overlay_lv_ja.png create mode 100644 public/images/ui/legacy/text_images/ja/battle_ui/pbinfo_stat_ja.json create mode 100644 public/images/ui/legacy/text_images/ja/battle_ui/pbinfo_stat_ja.png create mode 100644 public/images/ui/legacy/text_images/ja/party_ui/party_slot_overlay_hp_ja.png create mode 100644 public/images/ui/legacy/text_images/ja/party_ui/party_slot_overlay_lv_ja.png create mode 100644 public/images/ui/legacy/text_images/ko/battle_ui/overlay_exp_label_ko.png create mode 100644 public/images/ui/legacy/text_images/ko/battle_ui/overlay_hp_label_boss_ko.png create mode 100644 public/images/ui/legacy/text_images/ko/battle_ui/overlay_hp_label_ko.png create mode 100644 public/images/ui/legacy/text_images/ko/battle_ui/overlay_lv_ko.png create mode 100644 public/images/ui/legacy/text_images/ko/battle_ui/pbinfo_stat_ko.json create mode 100644 public/images/ui/legacy/text_images/ko/battle_ui/pbinfo_stat_ko.png create mode 100644 public/images/ui/legacy/text_images/ko/party_ui/party_slot_overlay_hp_ko.png create mode 100644 public/images/ui/legacy/text_images/ko/party_ui/party_slot_overlay_lv_ko.png create mode 100644 public/images/ui/legacy/text_images/pt-BR/battle_ui/overlay_exp_label_pt-BR.png create mode 100644 public/images/ui/legacy/text_images/pt-BR/battle_ui/overlay_hp_label_boss_pt-BR.png create mode 100644 public/images/ui/legacy/text_images/pt-BR/battle_ui/overlay_hp_label_pt-BR.png create mode 100644 public/images/ui/legacy/text_images/pt-BR/battle_ui/overlay_lv_pt-BR.png create mode 100644 public/images/ui/legacy/text_images/pt-BR/battle_ui/pbinfo_stat_pt-BR.json create mode 100644 public/images/ui/legacy/text_images/pt-BR/battle_ui/pbinfo_stat_pt-BR.png create mode 100644 public/images/ui/legacy/text_images/pt-BR/party_ui/party_slot_overlay_hp_pt-BR.png create mode 100644 public/images/ui/legacy/text_images/pt-BR/party_ui/party_slot_overlay_lv_pt-BR.png create mode 100644 public/images/ui/legacy/text_images/ro/battle_ui/overlay_exp_label_ro.png create mode 100644 public/images/ui/legacy/text_images/ro/battle_ui/overlay_hp_label_boss_ro.png create mode 100644 public/images/ui/legacy/text_images/ro/battle_ui/overlay_hp_label_ro.png create mode 100644 public/images/ui/legacy/text_images/ro/battle_ui/overlay_lv_ro.png create mode 100644 public/images/ui/legacy/text_images/ro/battle_ui/pbinfo_stat_ro.json create mode 100644 public/images/ui/legacy/text_images/ro/battle_ui/pbinfo_stat_ro.png create mode 100644 public/images/ui/legacy/text_images/ro/party_ui/party_slot_overlay_hp_ro.png create mode 100644 public/images/ui/legacy/text_images/ro/party_ui/party_slot_overlay_lv_ro.png create mode 100644 public/images/ui/legacy/text_images/ru/battle_ui/overlay_exp_label_ru.png create mode 100644 public/images/ui/legacy/text_images/ru/battle_ui/overlay_hp_label_boss_ru.png create mode 100644 public/images/ui/legacy/text_images/ru/battle_ui/overlay_hp_label_ru.png create mode 100644 public/images/ui/legacy/text_images/ru/battle_ui/overlay_lv_ru.png create mode 100644 public/images/ui/legacy/text_images/ru/battle_ui/pbinfo_stat_ru.json create mode 100644 public/images/ui/legacy/text_images/ru/battle_ui/pbinfo_stat_ru.png create mode 100644 public/images/ui/legacy/text_images/ru/party_ui/party_slot_overlay_hp_ru.png create mode 100644 public/images/ui/legacy/text_images/ru/party_ui/party_slot_overlay_lv_ru.png create mode 100644 public/images/ui/legacy/text_images/tl/battle_ui/overlay_exp_label_tl.png create mode 100644 public/images/ui/legacy/text_images/tl/battle_ui/overlay_hp_label_boss_tl.png create mode 100644 public/images/ui/legacy/text_images/tl/battle_ui/overlay_hp_label_tl.png create mode 100644 public/images/ui/legacy/text_images/tl/battle_ui/overlay_lv_tl.png create mode 100644 public/images/ui/legacy/text_images/tl/battle_ui/pbinfo_stat_tl.json create mode 100644 public/images/ui/legacy/text_images/tl/battle_ui/pbinfo_stat_tl.png create mode 100644 public/images/ui/legacy/text_images/tl/party_ui/party_slot_overlay_hp_tl.png create mode 100644 public/images/ui/legacy/text_images/tl/party_ui/party_slot_overlay_lv_tl.png create mode 100644 public/images/ui/legacy/text_images/tr/battle_ui/overlay_exp_label_tr.png create mode 100644 public/images/ui/legacy/text_images/tr/battle_ui/overlay_hp_label_boss_tr.png create mode 100644 public/images/ui/legacy/text_images/tr/battle_ui/overlay_hp_label_tr.png create mode 100644 public/images/ui/legacy/text_images/tr/battle_ui/overlay_lv_tr.png create mode 100644 public/images/ui/legacy/text_images/tr/battle_ui/pbinfo_stat_tr.json create mode 100644 public/images/ui/legacy/text_images/tr/battle_ui/pbinfo_stat_tr.png create mode 100644 public/images/ui/legacy/text_images/tr/party_ui/party_slot_overlay_hp_tr.png create mode 100644 public/images/ui/legacy/text_images/tr/party_ui/party_slot_overlay_lv_tr.png create mode 100644 public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_exp_label_zh-CN.png create mode 100644 public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_hp_label_boss_zh-CN.png create mode 100644 public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_hp_label_zh-CN.png create mode 100644 public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_lv_zh-CN.png create mode 100644 public/images/ui/legacy/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.json create mode 100644 public/images/ui/legacy/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.png create mode 100644 public/images/ui/legacy/text_images/zh-CN/party_ui/party_slot_overlay_hp_zh-CN.png create mode 100644 public/images/ui/legacy/text_images/zh-CN/party_ui/party_slot_overlay_lv_zh-CN.png create mode 100644 public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_exp_label_zh-TW.png create mode 100644 public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_hp_label_boss_zh-TW.png create mode 100644 public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_hp_label_zh-TW.png create mode 100644 public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_lv_zh-TW.png create mode 100644 public/images/ui/legacy/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.json create mode 100644 public/images/ui/legacy/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.png create mode 100644 public/images/ui/legacy/text_images/zh-TW/party_ui/party_slot_overlay_hp_zh-TW.png create mode 100644 public/images/ui/legacy/text_images/zh-TW/party_ui/party_slot_overlay_lv_zh-TW.png delete mode 100644 public/images/ui/overlay_lv.png delete mode 100644 public/images/ui/pbinfo_stat.png create mode 100644 public/images/ui/text_images/ca/battle_ui/overlay_exp_label_ca.png create mode 100644 public/images/ui/text_images/ca/battle_ui/overlay_hp_label_boss_ca.png create mode 100644 public/images/ui/text_images/ca/battle_ui/overlay_hp_label_ca.png create mode 100644 public/images/ui/text_images/ca/battle_ui/overlay_lv_ca.png create mode 100644 public/images/ui/text_images/ca/battle_ui/pbinfo_stat_ca.json create mode 100644 public/images/ui/text_images/ca/battle_ui/pbinfo_stat_ca.png create mode 100644 public/images/ui/text_images/ca/party_ui/party_slot_overlay_hp_ca.png create mode 100644 public/images/ui/text_images/ca/party_ui/party_slot_overlay_lv_ca.png create mode 100644 public/images/ui/text_images/da/battle_ui/overlay_exp_label_da.png create mode 100644 public/images/ui/text_images/da/battle_ui/overlay_hp_label_boss_da.png create mode 100644 public/images/ui/text_images/da/battle_ui/overlay_hp_label_da.png create mode 100644 public/images/ui/text_images/da/battle_ui/overlay_lv_da.png create mode 100644 public/images/ui/text_images/da/battle_ui/pbinfo_stat_da.json create mode 100644 public/images/ui/text_images/da/battle_ui/pbinfo_stat_da.png create mode 100644 public/images/ui/text_images/da/party_ui/party_slot_overlay_hp_da.png rename public/images/ui/{party_slot_overlay_lv.png => text_images/da/party_ui/party_slot_overlay_lv_da.png} (100%) create mode 100644 public/images/ui/text_images/de/battle_ui/overlay_exp_label_de.png create mode 100644 public/images/ui/text_images/de/battle_ui/overlay_hp_label_boss_de.png create mode 100644 public/images/ui/text_images/de/battle_ui/overlay_hp_label_de.png create mode 100644 public/images/ui/text_images/de/battle_ui/overlay_lv_de.png create mode 100644 public/images/ui/text_images/de/battle_ui/pbinfo_stat_de.json create mode 100644 public/images/ui/text_images/de/battle_ui/pbinfo_stat_de.png create mode 100644 public/images/ui/text_images/de/party_ui/party_slot_overlay_hp_de.png create mode 100644 public/images/ui/text_images/de/party_ui/party_slot_overlay_lv_de.png create mode 100644 public/images/ui/text_images/en/battle_ui/overlay_exp_label.png create mode 100644 public/images/ui/text_images/en/battle_ui/overlay_hp_label.png create mode 100644 public/images/ui/text_images/en/battle_ui/overlay_hp_label_boss.png create mode 100644 public/images/ui/text_images/en/battle_ui/overlay_lv.png rename public/images/ui/{ => text_images/en/battle_ui}/pbinfo_stat.json (100%) create mode 100644 public/images/ui/text_images/en/battle_ui/pbinfo_stat.png create mode 100644 public/images/ui/text_images/en/party_ui/party_slot_overlay_hp.png create mode 100644 public/images/ui/text_images/en/party_ui/party_slot_overlay_lv.png create mode 100644 public/images/ui/text_images/es-ES/battle_ui/overlay_exp_label_es-ES.png create mode 100644 public/images/ui/text_images/es-ES/battle_ui/overlay_hp_label_boss_es-ES.png create mode 100644 public/images/ui/text_images/es-ES/battle_ui/overlay_hp_label_es-ES.png create mode 100644 public/images/ui/text_images/es-ES/battle_ui/overlay_lv_es-ES.png create mode 100644 public/images/ui/text_images/es-ES/battle_ui/pbinfo_stat_es-ES.json create mode 100644 public/images/ui/text_images/es-ES/battle_ui/pbinfo_stat_es-ES.png create mode 100644 public/images/ui/text_images/es-ES/party_ui/party_slot_overlay_hp_es-ES.png create mode 100644 public/images/ui/text_images/es-ES/party_ui/party_slot_overlay_lv_es-ES.png create mode 100644 public/images/ui/text_images/es-MX/battle_ui/overlay_exp_label_es-MX.png create mode 100644 public/images/ui/text_images/es-MX/battle_ui/overlay_hp_label_boss_es-MX.png create mode 100644 public/images/ui/text_images/es-MX/battle_ui/overlay_hp_label_es-MX.png create mode 100644 public/images/ui/text_images/es-MX/battle_ui/overlay_lv_es-MX.png create mode 100644 public/images/ui/text_images/es-MX/battle_ui/pbinfo_stat_es-MX.json create mode 100644 public/images/ui/text_images/es-MX/battle_ui/pbinfo_stat_es-MX.png create mode 100644 public/images/ui/text_images/es-MX/party_ui/party_slot_overlay_hp_es-MX.png create mode 100644 public/images/ui/text_images/es-MX/party_ui/party_slot_overlay_lv_es-MX.png create mode 100644 public/images/ui/text_images/fr/battle_ui/overlay_exp_label_fr.png create mode 100644 public/images/ui/text_images/fr/battle_ui/overlay_hp_label_boss_fr.png create mode 100644 public/images/ui/text_images/fr/battle_ui/overlay_hp_label_fr.png create mode 100644 public/images/ui/text_images/fr/battle_ui/overlay_lv_fr.png create mode 100644 public/images/ui/text_images/fr/battle_ui/pbinfo_stat_fr.json create mode 100644 public/images/ui/text_images/fr/battle_ui/pbinfo_stat_fr.png create mode 100644 public/images/ui/text_images/fr/party_ui/party_slot_overlay_hp_fr.png create mode 100644 public/images/ui/text_images/fr/party_ui/party_slot_overlay_lv_fr.png create mode 100644 public/images/ui/text_images/it/battle_ui/overlay_exp_label_it.png create mode 100644 public/images/ui/text_images/it/battle_ui/overlay_hp_label_boss_it.png create mode 100644 public/images/ui/text_images/it/battle_ui/overlay_hp_label_it.png create mode 100644 public/images/ui/text_images/it/battle_ui/overlay_lv_it.png create mode 100644 public/images/ui/text_images/it/battle_ui/pbinfo_stat_it.json create mode 100644 public/images/ui/text_images/it/battle_ui/pbinfo_stat_it.png create mode 100644 public/images/ui/text_images/it/party_ui/party_slot_overlay_hp_it.png create mode 100644 public/images/ui/text_images/it/party_ui/party_slot_overlay_lv_it.png create mode 100644 public/images/ui/text_images/ja/battle_ui/overlay_exp_label_ja.png create mode 100644 public/images/ui/text_images/ja/battle_ui/overlay_hp_label_boss_ja.png create mode 100644 public/images/ui/text_images/ja/battle_ui/overlay_hp_label_ja.png create mode 100644 public/images/ui/text_images/ja/battle_ui/overlay_lv_ja.png create mode 100644 public/images/ui/text_images/ja/battle_ui/pbinfo_stat_ja.json create mode 100644 public/images/ui/text_images/ja/battle_ui/pbinfo_stat_ja.png create mode 100644 public/images/ui/text_images/ja/party_ui/party_slot_overlay_hp_ja.png create mode 100644 public/images/ui/text_images/ja/party_ui/party_slot_overlay_lv_ja.png create mode 100644 public/images/ui/text_images/ko/battle_ui/overlay_exp_label_ko.png create mode 100644 public/images/ui/text_images/ko/battle_ui/overlay_hp_label_boss_ko.png create mode 100644 public/images/ui/text_images/ko/battle_ui/overlay_hp_label_ko.png create mode 100644 public/images/ui/text_images/ko/battle_ui/overlay_lv_ko.png create mode 100644 public/images/ui/text_images/ko/battle_ui/pbinfo_stat_ko.json create mode 100644 public/images/ui/text_images/ko/battle_ui/pbinfo_stat_ko.png create mode 100644 public/images/ui/text_images/ko/party_ui/party_slot_overlay_hp_ko.png create mode 100644 public/images/ui/text_images/ko/party_ui/party_slot_overlay_lv_ko.png create mode 100644 public/images/ui/text_images/pt-BR/battle_ui/overlay_exp_label_pt-BR.png create mode 100644 public/images/ui/text_images/pt-BR/battle_ui/overlay_hp_label_boss_pt-BR.png create mode 100644 public/images/ui/text_images/pt-BR/battle_ui/overlay_hp_label_pt-BR.png create mode 100644 public/images/ui/text_images/pt-BR/battle_ui/overlay_lv_pt-BR.png create mode 100644 public/images/ui/text_images/pt-BR/battle_ui/pbinfo_stat_pt-BR.json create mode 100644 public/images/ui/text_images/pt-BR/battle_ui/pbinfo_stat_pt-BR.png create mode 100644 public/images/ui/text_images/pt-BR/party_ui/party_slot_overlay_hp_pt-BR.png create mode 100644 public/images/ui/text_images/pt-BR/party_ui/party_slot_overlay_lv_pt-BR.png create mode 100644 public/images/ui/text_images/ro/battle_ui/overlay_exp_label_ro.png create mode 100644 public/images/ui/text_images/ro/battle_ui/overlay_hp_label_boss_ro.png create mode 100644 public/images/ui/text_images/ro/battle_ui/overlay_hp_label_ro.png create mode 100644 public/images/ui/text_images/ro/battle_ui/overlay_lv_ro.png create mode 100644 public/images/ui/text_images/ro/battle_ui/pbinfo_stat_ro.json create mode 100644 public/images/ui/text_images/ro/battle_ui/pbinfo_stat_ro.png create mode 100644 public/images/ui/text_images/ro/party_ui/party_slot_overlay_hp_ro.png create mode 100644 public/images/ui/text_images/ro/party_ui/party_slot_overlay_lv_ro.png create mode 100644 public/images/ui/text_images/ru/battle_ui/overlay_exp_label_ru.png create mode 100644 public/images/ui/text_images/ru/battle_ui/overlay_hp_label_boss_ru.png create mode 100644 public/images/ui/text_images/ru/battle_ui/overlay_hp_label_ru.png create mode 100644 public/images/ui/text_images/ru/battle_ui/overlay_lv_ru.png create mode 100644 public/images/ui/text_images/ru/battle_ui/pbinfo_stat_ru.json create mode 100644 public/images/ui/text_images/ru/battle_ui/pbinfo_stat_ru.png create mode 100644 public/images/ui/text_images/ru/party_ui/party_slot_overlay_hp_ru.png create mode 100644 public/images/ui/text_images/ru/party_ui/party_slot_overlay_lv_ru.png create mode 100644 public/images/ui/text_images/tl/battle_ui/overlay_exp_label_tl.png create mode 100644 public/images/ui/text_images/tl/battle_ui/overlay_hp_label_boss_tl.png create mode 100644 public/images/ui/text_images/tl/battle_ui/overlay_hp_label_tl.png create mode 100644 public/images/ui/text_images/tl/battle_ui/overlay_lv_tl.png create mode 100644 public/images/ui/text_images/tl/battle_ui/pbinfo_stat_tl.json create mode 100644 public/images/ui/text_images/tl/battle_ui/pbinfo_stat_tl.png create mode 100644 public/images/ui/text_images/tl/party_ui/party_slot_overlay_hp_tl.png create mode 100644 public/images/ui/text_images/tl/party_ui/party_slot_overlay_lv_tl.png create mode 100644 public/images/ui/text_images/tr/battle_ui/overlay_exp_label_tr.png create mode 100644 public/images/ui/text_images/tr/battle_ui/overlay_hp_label_boss_tr.png create mode 100644 public/images/ui/text_images/tr/battle_ui/overlay_hp_label_tr.png create mode 100644 public/images/ui/text_images/tr/battle_ui/overlay_lv_tr.png create mode 100644 public/images/ui/text_images/tr/battle_ui/pbinfo_stat_tr.json create mode 100644 public/images/ui/text_images/tr/battle_ui/pbinfo_stat_tr.png create mode 100644 public/images/ui/text_images/tr/party_ui/party_slot_overlay_hp_tr.png create mode 100644 public/images/ui/text_images/tr/party_ui/party_slot_overlay_lv_tr.png create mode 100644 public/images/ui/text_images/zh-CN/battle_ui/overlay_exp_label_zh-CN.png create mode 100644 public/images/ui/text_images/zh-CN/battle_ui/overlay_hp_label_boss_zh-CN.png create mode 100644 public/images/ui/text_images/zh-CN/battle_ui/overlay_hp_label_zh-CN.png create mode 100644 public/images/ui/text_images/zh-CN/battle_ui/overlay_lv_zh-CN.png create mode 100644 public/images/ui/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.json create mode 100644 public/images/ui/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.png create mode 100644 public/images/ui/text_images/zh-CN/party_ui/party_slot_overlay_hp_zh-CN.png create mode 100644 public/images/ui/text_images/zh-CN/party_ui/party_slot_overlay_lv_zh-CN.png create mode 100644 public/images/ui/text_images/zh-TW/battle_ui/overlay_exp_label_zh-TW.png create mode 100644 public/images/ui/text_images/zh-TW/battle_ui/overlay_hp_label_boss_zh-TW.png create mode 100644 public/images/ui/text_images/zh-TW/battle_ui/overlay_hp_label_zh-TW.png create mode 100644 public/images/ui/text_images/zh-TW/battle_ui/overlay_lv_zh-TW.png create mode 100644 public/images/ui/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.json create mode 100644 public/images/ui/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.png create mode 100644 public/images/ui/text_images/zh-TW/party_ui/party_slot_overlay_hp_zh-TW.png create mode 100644 public/images/ui/text_images/zh-TW/party_ui/party_slot_overlay_lv_zh-TW.png diff --git a/public/images/ui/legacy/numbers_alt.png b/public/images/ui/legacy/numbers_alt.png deleted file mode 100644 index fb5104654718c85a083aeaa46a8d57fdf6eb020f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^5kSn&!VDzqlBcTzDgFST5LX~AARr(iAu(&xtk0i6 z`$wEU0Tf~^3GxeOaCmkj4an*7ba4!+h>Ptz$jfBN!*V@j!qixYk_!$Bye-B5O&{_e zZ$F-~B=V$Dk4jfP_o{dX_x7_gA7pMT{?_UiT=|c+q9o!NlXk$o)8``0JO!28%NlR5 zKAhd6e%AEKr$e7|ny&uMvbZO^agtg1>V3y~H;3k5eR{W`o@t$S)pi|$`2V|fz8HC! iDQ{;@`FOv-k6)HeMWA@fl0u-n7(8A5T-G@yGywpVcUV*a diff --git a/public/images/ui/legacy/numbers_red_alt.png b/public/images/ui/legacy/numbers_red_alt.png deleted file mode 100644 index d9edb0468d82ac38c26557d4023a246aefb1c658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^5kSn&!VDzqlBcTzDgFST5LX~AARr(iAu&}}@)ro3fI^HVL4Lsu4$p3+0XaRME{-7;aj|^|d6^7(Sgwamm>TO)a=}4?x25>M=|kS* z?Z-2gM4mM2QR%AZUKP*a-hNi*gUoHk-&);*EB~=pltdh3(hit+`doyWr=W6sS>x^1 zhqGJM&ze5@bm&t~)78IO7WZT~PBIH$z3({h=Ft4BPwy7gGp*CE+O8uI|9_Xx7b6cd h3NRSx} Mp00i_>zopr0QamXH2?qr delta 141 zcmeBST*){=rCun&C&ZP3fuW$FARr*%$Ay3&K(N7Kg;PTsP?WJG$S;_|;n@uk$JNut zF+?IfIYA&uiIc;?z(7k{Qd?SDd#3=Wh@?b|LsZX{(2lLAJR2N6Oie^OLRdOk5_BCG pu5$ERl9AYwp?Fk(NxK9?yqn3lh3oD{0S#pEbY=5%S?83{1ON!gF0B9n diff --git a/public/images/ui/legacy/party_slot_overlay_lv_alt.png b/public/images/ui/legacy/party_slot_overlay_lv_alt.png deleted file mode 100644 index 7aa9a590a1379c15f6e2a9677c6e4556aff7b580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^S0F7QATTRY;PWPi)!k3O z0r`w2L4Lsu4$p3+0XcG>E{-7_vdIih0&HzUY;BhW+CB-jZCc8+wOrE4nbGhN>zvG~ Rx{^SZ44$rjF6*2UngC`j9_Ii6 diff --git a/public/images/ui/legacy/pbinfo_enemy_boss.png b/public/images/ui/legacy/pbinfo_enemy_boss.png index 98b2f09f9417cbfb3f505e772623dd53c16c6a18..20eb74c59b3c1bd42103bde83b712ccb8802d3d2 100644 GIT binary patch delta 249 zcmVX$7!3pi00027CW>nS001hHB_@B?wg3O#|NsA*U}!I=HfUe~gLXwhDg&Vku)!RPn!BkCCaHr>W|ureZE#W? zY;uzh)lEJPF}ZLK%}m}is7)RJ)0^RFhM)b9L>-{9Y+HIGo^aVEOaZm00000NkvXXu0mjfsHS20 delta 282 zcmV+#0pWkU)kd`gSbb@3(n8Ud*q<`VvG5$)+&QQLM32*U`P!m7bGx%L8_u4nLsEEYyg|0 z`b;uGkt)~(R`FHjg5{!M6Oy#ZHen^igup6_O_)WB0i!02nr|>_!U`80z>`=LTD*5- z2b*RQX@bjUW9-06i&zu3xL^lfTGa8ya*9K8k!k{krCebsxVR4@zpxhy4Nah|!U+up wJAy5gB9Op<0Z244i~$p*QtSwZG}0Ua0K#YFp3uCRE&u=k07*qoM6N<$f>TOkF#rGn delta 281 zcmV+!0p|Xa0<;2o`IZ{F)IRM7JbKcgq|Nq|B&b?A=TK~0s z|Ns9=LR$BfbKYxOyp)n700001bW%=J06^y0W&i*HwMj%lRCr!vU|{AlL|O0+VYwxuDbuY=W>k*(Q`hOi&4@*nfm{;tUuyVbp|C6FO(& z1=9$cP%(4W%9X2Dt(?6ZJJ_5~$b?F;2`g9bIfES>Hz#bu-Mcq|Xy;7qV7fVBU%Y$y z^4-gs_>IB_*&U7?mgj0t~2tbQ2XBFo6)o fj$jZZ%@F{I+!FfxW2m5c00000NkvXXu0mjf+wpX$ diff --git a/public/images/ui/legacy/pbinfo_player.png b/public/images/ui/legacy/pbinfo_player.png index 60c92f886aaa950f71f07334f047eaed3d4ded04..f9e16a9aa0c1821dcf7710f4ef3430e007295741 100644 GIT binary patch delta 303 zcmV+~0nq;A0=@!}7=Hu<0001uVxCO^001XYOjJbx0G0p${~r&iz24Tf|Nq|q|Nm$`@zMYQ00MMUPE!B?c9YFG0002QNkl88dG(rIL59(Tl~tR0MGZsYxjGQeZk*XKV30AtfU>AIKYx_WU6P6OJ#F{@06%!& z^pK<~0bZJ@7R0j0D@?7h>SqO~TqRamY)f7nD+pCG+gqU%I19tC055pK3+MPv(@Fq7 z3%mKfxy!Mo5MRg5O`^8KEpBcW{pkw+CprCG@PZdMRxoTq)q+641WtomFi=^+Y7|0~ zBmuBz6rO^CODGA+mm!$9?trS4q;V27Q5P<)i5{*3K9Dm?1gZc4002ovPDHLkV1i6~ Bf}sEa delta 340 zcmV-a0jvJL0^QOSOoUqkIv#by4x39LWx?nhg8n6R2;K-rFoF?`V1(m@S2z^^BS`)uh#xX=lhECWMM0b9(R0NM{f}Io~<$eTWkX@(?Mdkjf0VJj4Tj$CF|NBN)L54r&iz24Tf z|Nq|q|Nldx1*HH000MMUPE!B?c9YFG00020Nklv7G;%=!#02(aB{G3> zI>dxx<*rrafo3y^2}#|%$pkypz$UO8?r5Lcv}-|!qHIdAljOmz9^$KB-zt6c2ic;mZceYt)ir~XHQE@ zR-&lJDNCaS6fg*~lV(6V13C~aBhgMw6G(FbrU49sl!C!#!l((OCIA4eMSf?4u45Gd P0000o`IZ{F)IRM7JbKcgq|Nq|B&b?A=TK~0s z|Ns9=LR$BfbKYxOyp)n700001bW%=J06^y0W&i*Hwn;=mRCr!vfB;4%a)AKU0A&|4 zfwLmS1Yzf}H1a^O5yS+Q@NzOisT0H##^vOKGKdLGt`wW#R)0<$7&T$kgi#YZXW|9Z z2%1nabJfa~t5&U?y&F5&oKDDuN{|UawC41)~4}2or$yaBmupYXATM07*qoM6N<$g0iG|jQ{`u diff --git a/public/images/ui/legacy/pbinfo_stat.png b/public/images/ui/legacy/pbinfo_stat.png deleted file mode 100644 index 25c94f9a8076e6cedffd87d147fde80f0194a058..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!#0(@$l{S3lFzsfZIj?#R{bz|;CL=L?6kpTbe*)(N4@9wb{Wf3b{7&f&;Z z5drJvIXrvpYo_etycw!;)IwE^g=J32!jRwBJDInJy|I4x$c?3NOX<(g)y`LYBk#28 zE|_pu!OeO8^W}?0*o|$v92nao6rJZSzkDQ|BRTdU#|ggT=F3<2c}K4+>sf1i%fgMR cy#GhNW4>E};>)L&K!-7Sy85}Sb4q9e0CPW98UO$Q diff --git a/public/images/ui/legacy/text_images/ca/battle_ui/overlay_exp_label_ca.png b/public/images/ui/legacy/text_images/ca/battle_ui/overlay_exp_label_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..acb04a84a31793070378d9cf958105fa8b104d28 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f#0(^7rN5gBq&Ne7LR|j?!E=UVdy9EhnC}Ax z8B2ovf*Bm1-ADs+Bt2amLn`8u53q-otYHXbWKvYnI&zfJgONf1BXg>P+Dc!bA_h-a KKbLh*2~7a2cOP;9 literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ca/battle_ui/overlay_hp_label_boss_ca.png b/public/images/ui/legacy/text_images/ca/battle_ui/overlay_hp_label_boss_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ca/battle_ui/overlay_hp_label_ca.png b/public/images/ui/legacy/text_images/ca/battle_ui/overlay_hp_label_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..4f388b70a75f1238f6d9bb1369f61c0645b1057f GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh)BFFWe{ zl;UgW_WE%=TL+Y7ED7=pW^j0RBMrzg^mK6ysfbH%U=DLM5J=z<2?}CTVq|kvR8>?| tbyRRZa?~~80;`5%U(Iin5dh`2_=MhRu`HW&x?4o-U3d6>+`27kLjE@VI=QsMm0csfDj0$n3-4XvKT= zqVHxY{BT^Q>wW%xlIqp_TJjYO=B=iT!DE>YKQS#xrf9 z3(SFn3~DVhy4fFiuF6NJOj5MYyDHVUp5>%cbs6`z{+NZktR3<+#P+Ic>jrXr) cv~qTK{#y3Z{08W4$S;_|;n|HeAjiL|_t literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/da/battle_ui/overlay_exp_label_da.png b/public/images/ui/legacy/text_images/da/battle_ui/overlay_exp_label_da.png new file mode 100644 index 0000000000000000000000000000000000000000..4c456fff94e65576f0f68c71b7709e41b99926bb GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f#0(^7rN5gBq<8{+LR|j?!E=UVdy9eOL0R8p zKyjv$AirP+hO)_LEr2{pPZ!6Kin!zh>|tvn7#G>q{9s!2?~X0Q5{8g{>}jiO0-ggE OF?hQAxvXNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/da/battle_ui/overlay_hp_label_da.png b/public/images/ui/legacy/text_images/da/battle_ui/overlay_hp_label_da.png new file mode 100644 index 0000000000000000000000000000000000000000..67824c7ee4e61e92f26c658f4ca03de81e78bffc GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh*seM<4Y z?5Jz!_G+KJZ3&cRED7=pW^j0RBMr#W^K@|xsfbH%U=DLM5J=z<2@(lK r;7LqQR$%h#+|kjogM;gUC^JK&8q2FYbJ8vWbuxIm`njxgN@xNAczi2J literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/da/battle_ui/overlay_lv_da.png b/public/images/ui/legacy/text_images/da/battle_ui/overlay_lv_da.png new file mode 100644 index 0000000000000000000000000000000000000000..ea32ac03ee21098b52fcaf67fa2564acc4b0f169 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQk(%kA+D)IEGZjCC@m(;AXrqBUQ_J1qXvY6Ps}IlINU2c?M5cKbLh* G2~7ZOmmCfN literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/da/battle_ui/pbinfo_stat_da.json b/public/images/ui/legacy/text_images/da/battle_ui/pbinfo_stat_da.json new file mode 100644 index 00000000000..eca2a9071ac --- /dev/null +++ b/public/images/ui/legacy/text_images/da/battle_ui/pbinfo_stat_da.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_da.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 6 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 16, + "h": 6 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 6 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 8, + "h": 6 + }, + "frame": { + "x": 112, + "y": 0, + "w": 8, + "h": 6 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/text_images/da/battle_ui/pbinfo_stat_da.png b/public/images/ui/legacy/text_images/da/battle_ui/pbinfo_stat_da.png new file mode 100644 index 0000000000000000000000000000000000000000..c729e7a2207ca6b2fd4dc50a86d82a35118b275a GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!!VDyTCAkLxDgFST5LY05@7mV?|NlEUH~<;z zT}AE#g_ui%{DMI$%Z}UwQk|YIjv*Csw!Ig5ofUbG_*Lax5`4tCV#nX~R};mjdL+E* zf8jVkpRw_lE9;M%stiVjPw=yFfX3({s<_SRfSjzp)) zKmQwi&1s1qE|ZCxzTC%F_>?m}Ws+SGHP`33=FyK&CorD8{q2-!#8W4$S;_|;n|HeAV=TR#WAEJE;+%Vkdcv{ElpiiRb5q;olRK4`6%a!0ud1w mB>`ub3xO<4*iJRPW@7Lt<0>_{cxnSsD}$%2pUXO@geCxPBPDtO literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/party_slot_overlay_lv.png b/public/images/ui/legacy/text_images/da/party_ui/party_slot_overlay_lv_da.png similarity index 100% rename from public/images/ui/legacy/party_slot_overlay_lv.png rename to public/images/ui/legacy/text_images/da/party_ui/party_slot_overlay_lv_da.png diff --git a/public/images/ui/legacy/text_images/de/battle_ui/overlay_exp_label_de.png b/public/images/ui/legacy/text_images/de/battle_ui/overlay_exp_label_de.png new file mode 100644 index 0000000000000000000000000000000000000000..4c456fff94e65576f0f68c71b7709e41b99926bb GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f#0(^7rN5gBq<8{+LR|j?!E=UVdy9eOL0R8p zKyjv$AirP+hO)_LEr2{pPZ!6Kin!zh>|tvn7#G>q{9s!2?~X0Q5{8g{>}jiO0-ggE OF?hQAxvXNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/de/battle_ui/overlay_hp_label_de.png b/public/images/ui/legacy/text_images/de/battle_ui/overlay_hp_label_de.png new file mode 100644 index 0000000000000000000000000000000000000000..b8404159bc93079db787b7dfe1db5c68fb20ca05 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh*seM<4Y z?5Jz!_G+KJZ3&cRED7=pW^j0RBMrzg^mK6ysfbH%U=DLM5J=z<2?`Mk3KB{X5D8*Z uQdDrhaUIEGZjCC@m(;AXrqBUQ_J1qXvY6Ps}IlINU2c?M5cKbLh* G2~7ZOmmCfN literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/de/battle_ui/pbinfo_stat_de.json b/public/images/ui/legacy/text_images/de/battle_ui/pbinfo_stat_de.json new file mode 100644 index 00000000000..c5ace776596 --- /dev/null +++ b/public/images/ui/legacy/text_images/de/battle_ui/pbinfo_stat_de.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_de.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 6 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 16, + "h": 6 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 6 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 8, + "h": 6 + }, + "frame": { + "x": 112, + "y": 0, + "w": 8, + "h": 6 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/text_images/de/battle_ui/pbinfo_stat_de.png b/public/images/ui/legacy/text_images/de/battle_ui/pbinfo_stat_de.png new file mode 100644 index 0000000000000000000000000000000000000000..8de02e9f16e39742c34ecb0852f1837a656dc95e GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!!VDyTCAkLxDWL$L5LY1W;NWoY+SdR7|3esN z>%U(Iin5dh`2_=MhRu`HW&x>APZ!6Kin!G7gSk?n*KjE*J)Wv8W4$S;_|;n|HeAjiPd#WAEJE;+%Vkdcv{ElpiiRb5q;olRK4`6%a!0uhly n5fK(c7ZzDphpYuWJMgTe~DWM4fbfhG~ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/de/party_ui/party_slot_overlay_lv_de.png b/public/images/ui/legacy/text_images/de/party_ui/party_slot_overlay_lv_de.png new file mode 100644 index 0000000000000000000000000000000000000000..11bb545c7affbde77af5aac4f1de158d934f56d4 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$efR}XF0A3uH+6cqfNc-#pn z$XF8O7tG-B>_!@pBkJkm7{U>q>=SW-!!;*BgTe~ HDWM4f##kP+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/en/battle_ui/overlay_exp_label.png b/public/images/ui/legacy/text_images/en/battle_ui/overlay_exp_label.png new file mode 100644 index 0000000000000000000000000000000000000000..40b5e8925a1b3dbfcb82560db7225ebbda8e3d88 GIT binary patch literal 1401 zcmbVMzfaUq952Bjpezy+Wok+^7;XF7yI$!F74Zsk#v*}Bz)9b=@9r9|eYJhZ-I3^E zSd5FV#y`Or7bXWy7~OQy#leL*xtOREzTS@p3`(TQ>-+V2pYQMQqou{`Bg5mv9LJ3m z7OZ79kFjxbaDe@HhX#^qC|tN5bKI%XWb|>*o}cBo6JNdJ8eOw*LWlSga!CnGO+RF4 zj+>rohR9jRlrQ0m7ns7g*KY*gb4_7Yvwca7O<^_>$gkN;e4a#@*QA{2C|Q-)4N1uXL(N|1RiNlH z&}Ahf0tJE`%ou$46PUEfEyHDNzAKCEOrc6?2xYm^Xh@BWM52nU7=|GORaRAzA;h>9 zP}CHIc%sK(;n<11ka{HG6Gl`bb!rMs(~b##n9>Gu*GZzL))lgM*5F%cVICo(*}z0Y=wF2h-8wP>T*(p9V_HN4Q$`-tJfZ!HGyQA zb|1D$`xg#a(~4Mk+Ieu}KI?3`f;C&59CLo|?alOWD?5Yw_m7{y?19r~-p)_F8{K`s sdv$#4>G>zWK#OYDx#166k1zD~b1&{}|M;ZSS4nd$%q?0kuibt48<8ltA^-pY literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/en/battle_ui/overlay_hp_label.png b/public/images/ui/legacy/text_images/en/battle_ui/overlay_hp_label.png new file mode 100644 index 0000000000000000000000000000000000000000..67824c7ee4e61e92f26c658f4ca03de81e78bffc GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh*seM<4Y z?5Jz!_G+KJZ3&cRED7=pW^j0RBMr#W^K@|xsfbH%U=DLM5J=z<2@(lK r;7LqQR$%h#+|kjogM;gUC^JK&8q2FYbJ8vWbuxIm`njxgN@xNAczi2J literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/en/battle_ui/overlay_hp_label_boss.png b/public/images/ui/legacy/text_images/en/battle_ui/overlay_hp_label_boss.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/en/battle_ui/overlay_lv.png b/public/images/ui/legacy/text_images/en/battle_ui/overlay_lv.png new file mode 100644 index 0000000000000000000000000000000000000000..ea32ac03ee21098b52fcaf67fa2564acc4b0f169 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQk(%kA+D)IEGZjCC@m(;AXrqBUQ_J1qXvY6Ps}IlINU2c?M5cKbLh* G2~7ZOmmCfN literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/pbinfo_stat.json b/public/images/ui/legacy/text_images/en/battle_ui/pbinfo_stat.json similarity index 100% rename from public/images/ui/legacy/pbinfo_stat.json rename to public/images/ui/legacy/text_images/en/battle_ui/pbinfo_stat.json diff --git a/public/images/ui/legacy/text_images/en/battle_ui/pbinfo_stat.png b/public/images/ui/legacy/text_images/en/battle_ui/pbinfo_stat.png new file mode 100644 index 0000000000000000000000000000000000000000..c729e7a2207ca6b2fd4dc50a86d82a35118b275a GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!!VDyTCAkLxDgFST5LY05@7mV?|NlEUH~<;z zT}AE#g_ui%{DMI$%Z}UwQk|YIjv*Csw!Ig5ofUbG_*Lax5`4tCV#nX~R};mjdL+E* zf8jVkpRw_lE9;M%stiVjPw=yFfX3({s<_SRfSjzp)) zKmQwi&1s1qE|ZCxzTC%F_>?m}Ws+SGHP`33=FyK&CorD8{q2-!#8W4$S;_|;n|HeAV=TR#WAEJE;+%Vkdcv{ElpiiRb5q;olRK4`6%a!0ud1w mB>`ub3xO<4*iJRPW@7Lt<0>_{cxnSsD}$%2pUXO@geCxPBPDtO literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/en/party_ui/party_slot_overlay_lv.png b/public/images/ui/legacy/text_images/en/party_ui/party_slot_overlay_lv.png new file mode 100644 index 0000000000000000000000000000000000000000..11bb545c7affbde77af5aac4f1de158d934f56d4 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$efR}XF0A3uH+6cqfNc-#pn z$XF8O7tG-B>_!@pBkJkm7{U>q>=SW-!!;*BgTe~ HDWM4f##kP+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/es-ES/battle_ui/overlay_exp_label_es-ES.png b/public/images/ui/legacy/text_images/es-ES/battle_ui/overlay_exp_label_es-ES.png new file mode 100644 index 0000000000000000000000000000000000000000..acb04a84a31793070378d9cf958105fa8b104d28 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f#0(^7rN5gBq&Ne7LR|j?!E=UVdy9EhnC}Ax z8B2ovf*Bm1-ADs+Bt2amLn`8u53q-otYHXbWKvYnI&zfJgONf1BXg>P+Dc!bA_h-a KKbLh*2~7a2cOP;9 literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/es-ES/battle_ui/overlay_hp_label_boss_es-ES.png b/public/images/ui/legacy/text_images/es-ES/battle_ui/overlay_hp_label_boss_es-ES.png new file mode 100644 index 0000000000000000000000000000000000000000..6018011d75bf5ba58aded90339304d7354e74a90 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQP?T_?GDTNT?| tbyRRZa?~~80;`5%U(Iin5dh`2_=MhRu`HW&x>fo-U3d6>+`&7kLjGaJc*|Fw0Q)uy%M_!hGL;QQH5| zs&tW+_EVXd>@5T~eT~2EU$HQLgZ*juxG1}%2S2_vKI9RIQrvvceL|2*{v1}$-yfuT zW^k4m7zRyvwNYDmen{LNZE1bW3WE)PoH;3^uqng8{-qJ Z9&s=5DO-NouIn7gC!Vf;F6*2UngAPkZmR$Q literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/es-ES/party_ui/party_slot_overlay_hp_es-ES.png b/public/images/ui/legacy/text_images/es-ES/party_ui/party_slot_overlay_hp_es-ES.png new file mode 100644 index 0000000000000000000000000000000000000000..981d8573acab5cd43b100adbd3995babe8dd034e GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96Jg1Oj|QT!HkD4Gupp1QZk$1Ox;; z_&xnSP>8W4$S;_|;n|HeAjiL|_t literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/es-MX/battle_ui/overlay_exp_label_es-MX.png b/public/images/ui/legacy/text_images/es-MX/battle_ui/overlay_exp_label_es-MX.png new file mode 100644 index 0000000000000000000000000000000000000000..acb04a84a31793070378d9cf958105fa8b104d28 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f#0(^7rN5gBq&Ne7LR|j?!E=UVdy9EhnC}Ax z8B2ovf*Bm1-ADs+Bt2amLn`8u53q-otYHXbWKvYnI&zfJgONf1BXg>P+Dc!bA_h-a KKbLh*2~7a2cOP;9 literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/es-MX/battle_ui/overlay_hp_label_boss_es-MX.png b/public/images/ui/legacy/text_images/es-MX/battle_ui/overlay_hp_label_boss_es-MX.png new file mode 100644 index 0000000000000000000000000000000000000000..6018011d75bf5ba58aded90339304d7354e74a90 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQP?T_?GDTNT?| tbyRRZa?~~80;`5%U(Iin5dh`2_=MhRu`HW&x>fo-U3d6>+`&7kLjGaJc*|Fw0Q)uy%M_!hGL;QQH5| zs&tW+_EVXd>@5T~eT~2EU$HQLgZ*juxG1}%2S2_vKI9RIQrvvceL|2*{v1}$-yfuT zW^k4m7zRyvwNYDmen{LNZE1bW3WE)PoH;3^uqng8{-qJ Z9&s=5DO-NouIn7gC!Vf;F6*2UngAPkZmR$Q literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/es-MX/party_ui/party_slot_overlay_hp_es-MX.png b/public/images/ui/legacy/text_images/es-MX/party_ui/party_slot_overlay_hp_es-MX.png new file mode 100644 index 0000000000000000000000000000000000000000..981d8573acab5cd43b100adbd3995babe8dd034e GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96Jg1Oj|QT!HkD4Gupp1QZk$1Ox;; z_&xnSP>8W4$S;_|;n|HeAjiL|_t literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/fr/battle_ui/overlay_exp_label_fr.png b/public/images/ui/legacy/text_images/fr/battle_ui/overlay_exp_label_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..40b5e8925a1b3dbfcb82560db7225ebbda8e3d88 GIT binary patch literal 1401 zcmbVMzfaUq952Bjpezy+Wok+^7;XF7yI$!F74Zsk#v*}Bz)9b=@9r9|eYJhZ-I3^E zSd5FV#y`Or7bXWy7~OQy#leL*xtOREzTS@p3`(TQ>-+V2pYQMQqou{`Bg5mv9LJ3m z7OZ79kFjxbaDe@HhX#^qC|tN5bKI%XWb|>*o}cBo6JNdJ8eOw*LWlSga!CnGO+RF4 zj+>rohR9jRlrQ0m7ns7g*KY*gb4_7Yvwca7O<^_>$gkN;e4a#@*QA{2C|Q-)4N1uXL(N|1RiNlH z&}Ahf0tJE`%ou$46PUEfEyHDNzAKCEOrc6?2xYm^Xh@BWM52nU7=|GORaRAzA;h>9 zP}CHIc%sK(;n<11ka{HG6Gl`bb!rMs(~b##n9>Gu*GZzL))lgM*5F%cVICo(*}z0Y=wF2h-8wP>T*(p9V_HN4Q$`-tJfZ!HGyQA zb|1D$`xg#a(~4Mk+Ieu}KI?3`f;C&59CLo|?alOWD?5Yw_m7{y?19r~-p)_F8{K`s sdv$#4>G>zWK#OYDx#166k1zD~b1&{}|M;ZSS4nd$%q?0kuibt48<8ltA^-pY literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/fr/battle_ui/overlay_hp_label_boss_fr.png b/public/images/ui/legacy/text_images/fr/battle_ui/overlay_hp_label_boss_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/fr/battle_ui/overlay_hp_label_fr.png b/public/images/ui/legacy/text_images/fr/battle_ui/overlay_hp_label_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..3f7e12c3246f4d7b445002a4963a36dbe85ab373 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh*seM<4Q zb9?V)M_vCB_XjA;SQ6wH%;50sMjDW#@9E+gQW2Njz%1ryAdpZX5)>p96e5%$AQB|h sWYE&v%i7D^7_?|%Q`4d*rh=mk^;smg8_sU*lRn1P{e@>vTYPuA1LF{C0cnW5>putc4I!Vmk#hkxzbuK$*pww8$@_#3B* Thf!iJP$7e-tDnm{r-UW|x{D|8 literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/fr/battle_ui/pbinfo_stat_fr.json b/public/images/ui/legacy/text_images/fr/battle_ui/pbinfo_stat_fr.json new file mode 100644 index 00000000000..00cc9f7ea0e --- /dev/null +++ b/public/images/ui/legacy/text_images/fr/battle_ui/pbinfo_stat_fr.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_fr.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 8 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 18, + "h": 8 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 8 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 18, + "h": 8 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 8 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 16, + "h": 8 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 8 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 12, + "h": 8 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 8 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 12, + "h": 8 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 8 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 12, + "h": 8 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 8 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 12, + "h": 8 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 8 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 12, + "h": 8 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 8 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 8, + "h": 8 + }, + "frame": { + "x": 112, + "y": 0, + "w": 8, + "h": 8 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/text_images/fr/battle_ui/pbinfo_stat_fr.png b/public/images/ui/legacy/text_images/fr/battle_ui/pbinfo_stat_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..1919561ddfe1415983277fed18b1230d4dc2b6b0 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0v!VDx2WT+_sDgFST5LY05@7mV?|NlEUH~<;z zT}AE#g_ui%{DOh>ud*ZefYdrq7srr_xZ2)}nMWLWT*R-59tl5aCHq2DA$|G(Sw&foQPxOtZ) zC^(#Wu%nn;}k4TVZ~IM|eej*}+fVZZ}t^E}ymK>GmZhOVVyUDa8W4$S;_|;n|HeAjjC##WAEJE;+%Vkdcv{ElpijRb5n-olRI>RGs5+V8Dey q7l9)Jg@uA5jH?(8WnyI>>|*fe=ej5FlJXL$ox#)9&t;ucLK6V*;U%L0 literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/fr/party_ui/party_slot_overlay_lv_fr.png b/public/images/ui/legacy/text_images/fr/party_ui/party_slot_overlay_lv_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..e7bbec23b0737888443a4d2040a8a19dd5a29320 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRM#0(_E7Tct<7UrG+vTYPtw!HF{C0c`2c%Z#u|n|d7pm`E9~X@7&IB2RoPs3Eb?vv PDq`?-^>bP0l+XkK%XK46 literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/it/battle_ui/overlay_hp_label_boss_it.png b/public/images/ui/legacy/text_images/it/battle_ui/overlay_hp_label_boss_it.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/it/battle_ui/overlay_hp_label_it.png b/public/images/ui/legacy/text_images/it/battle_ui/overlay_hp_label_it.png new file mode 100644 index 0000000000000000000000000000000000000000..4f388b70a75f1238f6d9bb1369f61c0645b1057f GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh)BFFWe{ zl;UgW_WE%=TL+Y7ED7=pW^j0RBMrzg^mK6ysfbH%U=DLM5J=z<2?}CTVq|kvR8>?| tbyRRZa?~~80;`5{2`X49@^n OFnGH9xvX%U(Iin5dh`2_=MhRu`HW&x=so-U3d6>+Bh7c*HLd7Rljq&Rl-KKZ6~L;K(_@w6-T z+7rWFn5P{%JR@?xp2$1qqyI0s9%!xG(Z+u3BlqclT5=Hwu3h8xbvTr9TvU!D_2$1> zJGtWb{JPg`>C_%{vi0%Nf(k3+(^vPcxy#+=eqX&|v19uSrHtesK4*R(JaPI#r)bA> zo|xk8X_dY0?9cAs{+Std$^5?VRt?`=``5nW+BODvef?kCyKab6-~B8m1>|l|S3j3^ HP68W4$S;_|;n|HeAjiNo>$(k4 zkg+7lFPOpM*^M+HN5s>`F{C0cdB%Z;E)&VHETfh#CI%~WmScP?cf|tb89ZJ6T-G@y GGywn-+V2pYQMQqou{`Bg5mv9LJ3m z7OZ79kFjxbaDe@HhX#^qC|tN5bKI%XWb|>*o}cBo6JNdJ8eOw*LWlSga!CnGO+RF4 zj+>rohR9jRlrQ0m7ns7g*KY*gb4_7Yvwca7O<^_>$gkN;e4a#@*QA{2C|Q-)4N1uXL(N|1RiNlH z&}Ahf0tJE`%ou$46PUEfEyHDNzAKCEOrc6?2xYm^Xh@BWM52nU7=|GORaRAzA;h>9 zP}CHIc%sK(;n<11ka{HG6Gl`bb!rMs(~b##n9>Gu*GZzL))lgM*5F%cVICo(*}z0Y=wF2h-8wP>T*(p9V_HN4Q$`-tJfZ!HGyQA zb|1D$`xg#a(~4Mk+Ieu}KI?3`f;C&59CLo|?alOWD?5Yw_m7{y?19r~-p)_F8{K`s sdv$#4>G>zWK#OYDx#166k1zD~b1&{}|M;ZSS4nd$%q?0kuibt48<8ltA^-pY literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ja/battle_ui/overlay_hp_label_boss_ja.png b/public/images/ui/legacy/text_images/ja/battle_ui/overlay_hp_label_boss_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ja/battle_ui/overlay_hp_label_ja.png b/public/images/ui/legacy/text_images/ja/battle_ui/overlay_hp_label_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..67824c7ee4e61e92f26c658f4ca03de81e78bffc GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh*seM<4Y z?5Jz!_G+KJZ3&cRED7=pW^j0RBMr#W^K@|xsfbH%U=DLM5J=z<2@(lK r;7LqQR$%h#+|kjogM;gUC^JK&8q2FYbJ8vWbuxIm`njxgN@xNAczi2J literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ja/battle_ui/overlay_lv_ja.png b/public/images/ui/legacy/text_images/ja/battle_ui/overlay_lv_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..ea32ac03ee21098b52fcaf67fa2564acc4b0f169 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQk(%kA+D)IEGZjCC@m(;AXrqBUQ_J1qXvY6Ps}IlINU2c?M5cKbLh* G2~7ZOmmCfN literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ja/battle_ui/pbinfo_stat_ja.json b/public/images/ui/legacy/text_images/ja/battle_ui/pbinfo_stat_ja.json new file mode 100644 index 00000000000..d8907e8e68c --- /dev/null +++ b/public/images/ui/legacy/text_images/ja/battle_ui/pbinfo_stat_ja.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_ja.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 6 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 16, + "h": 6 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 6 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 8, + "h": 6 + }, + "frame": { + "x": 112, + "y": 0, + "w": 8, + "h": 6 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/text_images/ja/battle_ui/pbinfo_stat_ja.png b/public/images/ui/legacy/text_images/ja/battle_ui/pbinfo_stat_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..c729e7a2207ca6b2fd4dc50a86d82a35118b275a GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!!VDyTCAkLxDgFST5LY05@7mV?|NlEUH~<;z zT}AE#g_ui%{DMI$%Z}UwQk|YIjv*Csw!Ig5ofUbG_*Lax5`4tCV#nX~R};mjdL+E* zf8jVkpRw_lE9;M%stiVjPw=yFfX3({s<_SRfSjzp)) zKmQwi&1s1qE|ZCxzTC%F_>?m}Ws+SGHP`33=FyK&CorD8{q2-!#8W4$S;_|;n|HeAV=TR#WAEJE;+%Vkdcv{ElpiiRb5q;olRK4`6%a!0ud1w mB>`ub3xO<4*iJRPW@7Lt<0>_{cxnSsD}$%2pUXO@geCxPBPDtO literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ja/party_ui/party_slot_overlay_lv_ja.png b/public/images/ui/legacy/text_images/ja/party_ui/party_slot_overlay_lv_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..11bb545c7affbde77af5aac4f1de158d934f56d4 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$efR}XF0A3uH+6cqfNc-#pn z$XF8O7tG-B>_!@pBkJkm7{U>q>=SW-!!;*BgTe~ HDWM4f##kP+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ko/battle_ui/overlay_exp_label_ko.png b/public/images/ui/legacy/text_images/ko/battle_ui/overlay_exp_label_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..40b5e8925a1b3dbfcb82560db7225ebbda8e3d88 GIT binary patch literal 1401 zcmbVMzfaUq952Bjpezy+Wok+^7;XF7yI$!F74Zsk#v*}Bz)9b=@9r9|eYJhZ-I3^E zSd5FV#y`Or7bXWy7~OQy#leL*xtOREzTS@p3`(TQ>-+V2pYQMQqou{`Bg5mv9LJ3m z7OZ79kFjxbaDe@HhX#^qC|tN5bKI%XWb|>*o}cBo6JNdJ8eOw*LWlSga!CnGO+RF4 zj+>rohR9jRlrQ0m7ns7g*KY*gb4_7Yvwca7O<^_>$gkN;e4a#@*QA{2C|Q-)4N1uXL(N|1RiNlH z&}Ahf0tJE`%ou$46PUEfEyHDNzAKCEOrc6?2xYm^Xh@BWM52nU7=|GORaRAzA;h>9 zP}CHIc%sK(;n<11ka{HG6Gl`bb!rMs(~b##n9>Gu*GZzL))lgM*5F%cVICo(*}z0Y=wF2h-8wP>T*(p9V_HN4Q$`-tJfZ!HGyQA zb|1D$`xg#a(~4Mk+Ieu}KI?3`f;C&59CLo|?alOWD?5Yw_m7{y?19r~-p)_F8{K`s sdv$#4>G>zWK#OYDx#166k1zD~b1&{}|M;ZSS4nd$%q?0kuibt48<8ltA^-pY literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ko/battle_ui/overlay_hp_label_boss_ko.png b/public/images/ui/legacy/text_images/ko/battle_ui/overlay_hp_label_boss_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ko/battle_ui/overlay_hp_label_ko.png b/public/images/ui/legacy/text_images/ko/battle_ui/overlay_hp_label_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..67824c7ee4e61e92f26c658f4ca03de81e78bffc GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh*seM<4Y z?5Jz!_G+KJZ3&cRED7=pW^j0RBMr#W^K@|xsfbH%U=DLM5J=z<2@(lK r;7LqQR$%h#+|kjogM;gUC^JK&8q2FYbJ8vWbuxIm`njxgN@xNAczi2J literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ko/battle_ui/overlay_lv_ko.png b/public/images/ui/legacy/text_images/ko/battle_ui/overlay_lv_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..ea32ac03ee21098b52fcaf67fa2564acc4b0f169 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQk(%kA+D)IEGZjCC@m(;AXrqBUQ_J1qXvY6Ps}IlINU2c?M5cKbLh* G2~7ZOmmCfN literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ko/battle_ui/pbinfo_stat_ko.json b/public/images/ui/legacy/text_images/ko/battle_ui/pbinfo_stat_ko.json new file mode 100644 index 00000000000..359e3a5b76f --- /dev/null +++ b/public/images/ui/legacy/text_images/ko/battle_ui/pbinfo_stat_ko.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_ko.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 6 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 16, + "h": 6 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 6 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 8, + "h": 6 + }, + "frame": { + "x": 112, + "y": 0, + "w": 8, + "h": 6 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/text_images/ko/battle_ui/pbinfo_stat_ko.png b/public/images/ui/legacy/text_images/ko/battle_ui/pbinfo_stat_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..c729e7a2207ca6b2fd4dc50a86d82a35118b275a GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!!VDyTCAkLxDgFST5LY05@7mV?|NlEUH~<;z zT}AE#g_ui%{DMI$%Z}UwQk|YIjv*Csw!Ig5ofUbG_*Lax5`4tCV#nX~R};mjdL+E* zf8jVkpRw_lE9;M%stiVjPw=yFfX3({s<_SRfSjzp)) zKmQwi&1s1qE|ZCxzTC%F_>?m}Ws+SGHP`33=FyK&CorD8{q2-!#8W4$S;_|;n|HeAV=TR#WAEJE;+%Vkdcv{ElpiiRb5q;olRK4`6%a!0ud1w mB>`ub3xO<4*iJRPW@7Lt<0>_{cxnSsD}$%2pUXO@geCxPBPDtO literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ko/party_ui/party_slot_overlay_lv_ko.png b/public/images/ui/legacy/text_images/ko/party_ui/party_slot_overlay_lv_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..11bb545c7affbde77af5aac4f1de158d934f56d4 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$efR}XF0A3uH+6cqfNc-#pn z$XF8O7tG-B>_!@pBkJkm7{U>q>=SW-!!;*BgTe~ HDWM4f##kP+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/pt-BR/battle_ui/overlay_exp_label_pt-BR.png b/public/images/ui/legacy/text_images/pt-BR/battle_ui/overlay_exp_label_pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..acb04a84a31793070378d9cf958105fa8b104d28 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f#0(^7rN5gBq&Ne7LR|j?!E=UVdy9EhnC}Ax z8B2ovf*Bm1-ADs+Bt2amLn`8u53q-otYHXbWKvYnI&zfJgONf1BXg>P+Dc!bA_h-a KKbLh*2~7a2cOP;9 literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/pt-BR/battle_ui/overlay_hp_label_boss_pt-BR.png b/public/images/ui/legacy/text_images/pt-BR/battle_ui/overlay_hp_label_boss_pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/pt-BR/battle_ui/overlay_hp_label_pt-BR.png b/public/images/ui/legacy/text_images/pt-BR/battle_ui/overlay_hp_label_pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..4f388b70a75f1238f6d9bb1369f61c0645b1057f GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh)BFFWe{ zl;UgW_WE%=TL+Y7ED7=pW^j0RBMrzg^mK6ysfbH%U=DLM5J=z<2?}CTVq|kvR8>?| tbyRRZa?~~80;`5%U(Iin5dh`2_=MhRu`HW`QVA7srr_xZd7CJ|;sBm!CKG9;|A*$~@zmbjd%?X}{x- z&b;PU@6*E2KT}{$&GDTN`aZe;u~_%>dSP#yvX^tQ7{_gwva_#0ELU1@=XmJmp9V(T zMkcc`t{|z<){2QmA6Mr6c~T`Iv7Y5xQSqviUtXRLDQma*VOcGa@v4}iU`IkmNbIFA zuBT*u&m{j~eV?3F!z{5ddurCK%k$G7zj^Uwc3^OQ|`wr*Zh6#2#Q@5Jp2+1=t= WZ^}aNbj9?5yy5BU=d#Wzp$P!ba(E5^ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/pt-BR/party_ui/party_slot_overlay_hp_pt-BR.png b/public/images/ui/legacy/text_images/pt-BR/party_ui/party_slot_overlay_hp_pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..981d8573acab5cd43b100adbd3995babe8dd034e GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96Jg1Oj|QT!HkD4Gupp1QZk$1Ox;; z_&xnSP>8W4$S;_|;n|HeAjiL|_t literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ro/battle_ui/overlay_exp_label_ro.png b/public/images/ui/legacy/text_images/ro/battle_ui/overlay_exp_label_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..40b5e8925a1b3dbfcb82560db7225ebbda8e3d88 GIT binary patch literal 1401 zcmbVMzfaUq952Bjpezy+Wok+^7;XF7yI$!F74Zsk#v*}Bz)9b=@9r9|eYJhZ-I3^E zSd5FV#y`Or7bXWy7~OQy#leL*xtOREzTS@p3`(TQ>-+V2pYQMQqou{`Bg5mv9LJ3m z7OZ79kFjxbaDe@HhX#^qC|tN5bKI%XWb|>*o}cBo6JNdJ8eOw*LWlSga!CnGO+RF4 zj+>rohR9jRlrQ0m7ns7g*KY*gb4_7Yvwca7O<^_>$gkN;e4a#@*QA{2C|Q-)4N1uXL(N|1RiNlH z&}Ahf0tJE`%ou$46PUEfEyHDNzAKCEOrc6?2xYm^Xh@BWM52nU7=|GORaRAzA;h>9 zP}CHIc%sK(;n<11ka{HG6Gl`bb!rMs(~b##n9>Gu*GZzL))lgM*5F%cVICo(*}z0Y=wF2h-8wP>T*(p9V_HN4Q$`-tJfZ!HGyQA zb|1D$`xg#a(~4Mk+Ieu}KI?3`f;C&59CLo|?alOWD?5Yw_m7{y?19r~-p)_F8{K`s sdv$#4>G>zWK#OYDx#166k1zD~b1&{}|M;ZSS4nd$%q?0kuibt48<8ltA^-pY literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ro/battle_ui/overlay_hp_label_boss_ro.png b/public/images/ui/legacy/text_images/ro/battle_ui/overlay_hp_label_boss_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ro/battle_ui/overlay_hp_label_ro.png b/public/images/ui/legacy/text_images/ro/battle_ui/overlay_hp_label_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..67824c7ee4e61e92f26c658f4ca03de81e78bffc GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh*seM<4Y z?5Jz!_G+KJZ3&cRED7=pW^j0RBMr#W^K@|xsfbH%U=DLM5J=z<2@(lK r;7LqQR$%h#+|kjogM;gUC^JK&8q2FYbJ8vWbuxIm`njxgN@xNAczi2J literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ro/battle_ui/overlay_lv_ro.png b/public/images/ui/legacy/text_images/ro/battle_ui/overlay_lv_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..ea32ac03ee21098b52fcaf67fa2564acc4b0f169 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQk(%kA+D)IEGZjCC@m(;AXrqBUQ_J1qXvY6Ps}IlINU2c?M5cKbLh* G2~7ZOmmCfN literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ro/battle_ui/pbinfo_stat_ro.json b/public/images/ui/legacy/text_images/ro/battle_ui/pbinfo_stat_ro.json new file mode 100644 index 00000000000..8c268a77098 --- /dev/null +++ b/public/images/ui/legacy/text_images/ro/battle_ui/pbinfo_stat_ro.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_ro.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 6 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 16, + "h": 6 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 6 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 8, + "h": 6 + }, + "frame": { + "x": 112, + "y": 0, + "w": 8, + "h": 6 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/text_images/ro/battle_ui/pbinfo_stat_ro.png b/public/images/ui/legacy/text_images/ro/battle_ui/pbinfo_stat_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..c729e7a2207ca6b2fd4dc50a86d82a35118b275a GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!!VDyTCAkLxDgFST5LY05@7mV?|NlEUH~<;z zT}AE#g_ui%{DMI$%Z}UwQk|YIjv*Csw!Ig5ofUbG_*Lax5`4tCV#nX~R};mjdL+E* zf8jVkpRw_lE9;M%stiVjPw=yFfX3({s<_SRfSjzp)) zKmQwi&1s1qE|ZCxzTC%F_>?m}Ws+SGHP`33=FyK&CorD8{q2-!#8W4$S;_|;n|HeAV=TR#WAEJE;+%Vkdcv{ElpiiRb5q;olRK4`6%a!0ud1w mB>`ub3xO<4*iJRPW@7Lt<0>_{cxnSsD}$%2pUXO@geCxPBPDtO literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ro/party_ui/party_slot_overlay_lv_ro.png b/public/images/ui/legacy/text_images/ro/party_ui/party_slot_overlay_lv_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..11bb545c7affbde77af5aac4f1de158d934f56d4 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$efR}XF0A3uH+6cqfNc-#pn z$XF8O7tG-B>_!@pBkJkm7{U>q>=SW-!!;*BgTe~ HDWM4f##kP+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ru/battle_ui/overlay_exp_label_ru.png b/public/images/ui/legacy/text_images/ru/battle_ui/overlay_exp_label_ru.png new file mode 100644 index 0000000000000000000000000000000000000000..d88171084086ba5f0f90cc33203e9d926f8727ce GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f!VF@mOPc~I{s5m4*Z)B9oZ;BsVhHK@y~GeG z#at5P7Yw9-l^wYUq~ttZ978JNk`+XESTrcKVUGR>j48#x z*9(Po))f8;P3Jex@s3+GD~}^YZ|AXD2`&Q9c{w)hOSUe)`^4<}{tt}OKP8%dLhNdR PCNg-s`njxgN@xNAG8jAe literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ru/battle_ui/overlay_hp_label_ru.png b/public/images/ui/legacy/text_images/ru/battle_ui/overlay_hp_label_ru.png new file mode 100644 index 0000000000000000000000000000000000000000..490c93f8d3975fc1b9785db7ad412e8608802042 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh)BFFWe{ zl;UgW_WE%=TL+Y7ED7=pW^j0RBMrzg@^o8(ARQ9K sV&oFz!V)Xf7mdKI;Vst01{d(#{d8T literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/ru/battle_ui/overlay_lv_ru.png b/public/images/ui/legacy/text_images/ru/battle_ui/overlay_lv_ru.png new file mode 100644 index 0000000000000000000000000000000000000000..e8760560dfaf68d4b21cdad96506af1c7d14277d GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U4`~f~8uJ^8OP1W=K|Np;}lM|4A zbg|-BpcHdSkY6y6{#AD59*|P^ba4!+h)XswOcZGmJjTa!PEAdXM@OOQ;E@}xjt7q( fndsq)}JzX3_D&l;55Are@^054EU<=4N5Tn%~Wb^;Tk-yuW z=4|$}=$Fkb6U{vFJo^AsvB#E)nRoUT^h}xlv48vAvyL2%k{c8>?ov*g&pNa>{GwlN`m~F? bu3!Dfm}i-`E3f3T2FNR(u6{1-oD!M8W4$S;_|;n|HeAjiPd#WAEJE;+%Vkdcv{ElpijRb5@3olRI>Rh{E-;Dw8> n0W60Ym=;L6J30z5uj6LO_2pi?@psl@pk4+~S3j3^P60f0>?g1$^PZ!6KinwG0!$1)ir8&MmvJw$KK0Xo>3N0JCnVY*i em6<1mFfcUtvF_z@=6ej(!QkoY=d#Wzp$P!A0VaC@ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/tl/battle_ui/overlay_exp_label_tl.png b/public/images/ui/legacy/text_images/tl/battle_ui/overlay_exp_label_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..40b5e8925a1b3dbfcb82560db7225ebbda8e3d88 GIT binary patch literal 1401 zcmbVMzfaUq952Bjpezy+Wok+^7;XF7yI$!F74Zsk#v*}Bz)9b=@9r9|eYJhZ-I3^E zSd5FV#y`Or7bXWy7~OQy#leL*xtOREzTS@p3`(TQ>-+V2pYQMQqou{`Bg5mv9LJ3m z7OZ79kFjxbaDe@HhX#^qC|tN5bKI%XWb|>*o}cBo6JNdJ8eOw*LWlSga!CnGO+RF4 zj+>rohR9jRlrQ0m7ns7g*KY*gb4_7Yvwca7O<^_>$gkN;e4a#@*QA{2C|Q-)4N1uXL(N|1RiNlH z&}Ahf0tJE`%ou$46PUEfEyHDNzAKCEOrc6?2xYm^Xh@BWM52nU7=|GORaRAzA;h>9 zP}CHIc%sK(;n<11ka{HG6Gl`bb!rMs(~b##n9>Gu*GZzL))lgM*5F%cVICo(*}z0Y=wF2h-8wP>T*(p9V_HN4Q$`-tJfZ!HGyQA zb|1D$`xg#a(~4Mk+Ieu}KI?3`f;C&59CLo|?alOWD?5Yw_m7{y?19r~-p)_F8{K`s sdv$#4>G>zWK#OYDx#166k1zD~b1&{}|M;ZSS4nd$%q?0kuibt48<8ltA^-pY literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/tl/battle_ui/overlay_hp_label_boss_tl.png b/public/images/ui/legacy/text_images/tl/battle_ui/overlay_hp_label_boss_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/tl/battle_ui/overlay_hp_label_tl.png b/public/images/ui/legacy/text_images/tl/battle_ui/overlay_hp_label_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..67824c7ee4e61e92f26c658f4ca03de81e78bffc GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh*seM<4Y z?5Jz!_G+KJZ3&cRED7=pW^j0RBMr#W^K@|xsfbH%U=DLM5J=z<2@(lK r;7LqQR$%h#+|kjogM;gUC^JK&8q2FYbJ8vWbuxIm`njxgN@xNAczi2J literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/tl/battle_ui/overlay_lv_tl.png b/public/images/ui/legacy/text_images/tl/battle_ui/overlay_lv_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..ea32ac03ee21098b52fcaf67fa2564acc4b0f169 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQk(%kA+D)IEGZjCC@m(;AXrqBUQ_J1qXvY6Ps}IlINU2c?M5cKbLh* G2~7ZOmmCfN literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/tl/battle_ui/pbinfo_stat_tl.json b/public/images/ui/legacy/text_images/tl/battle_ui/pbinfo_stat_tl.json new file mode 100644 index 00000000000..023a5ee45f9 --- /dev/null +++ b/public/images/ui/legacy/text_images/tl/battle_ui/pbinfo_stat_tl.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_tl.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 6 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 16, + "h": 6 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 6 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 8, + "h": 6 + }, + "frame": { + "x": 112, + "y": 0, + "w": 8, + "h": 6 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/text_images/tl/battle_ui/pbinfo_stat_tl.png b/public/images/ui/legacy/text_images/tl/battle_ui/pbinfo_stat_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..c729e7a2207ca6b2fd4dc50a86d82a35118b275a GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!!VDyTCAkLxDgFST5LY05@7mV?|NlEUH~<;z zT}AE#g_ui%{DMI$%Z}UwQk|YIjv*Csw!Ig5ofUbG_*Lax5`4tCV#nX~R};mjdL+E* zf8jVkpRw_lE9;M%stiVjPw=yFfX3({s<_SRfSjzp)) zKmQwi&1s1qE|ZCxzTC%F_>?m}Ws+SGHP`33=FyK&CorD8{q2-!#8W4$S;_|;n|HeAV=TR#WAEJE;+%Vkdcv{ElpiiRb5q;olRK4`6%a!0ud1w mB>`ub3xO<4*iJRPW@7Lt<0>_{cxnSsD}$%2pUXO@geCxPBPDtO literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/tl/party_ui/party_slot_overlay_lv_tl.png b/public/images/ui/legacy/text_images/tl/party_ui/party_slot_overlay_lv_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..11bb545c7affbde77af5aac4f1de158d934f56d4 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$efR}XF0A3uH+6cqfNc-#pn z$XF8O7tG-B>_!@pBkJkm7{U>q>=SW-!!;*BgTe~ HDWM4f##kP+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/tr/battle_ui/overlay_exp_label_tr.png b/public/images/ui/legacy/text_images/tr/battle_ui/overlay_exp_label_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9bd8825819f8f45c6d9535e454a71d082a97c7 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f!VF@mOPc~I{s5m4*Z=?jAKP2}|2YE?0U1}` zOjrk$VlD~t3kK4^%8uLvQgWUyjv*Cs$qJ%7EOuG!uyD9>sOuOP8&AQuM#C0n2G4S4 V`w#LZmw_r7JYD@<);T3K0RS=hC~p7& literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/tr/battle_ui/overlay_hp_label_boss_tr.png b/public/images/ui/legacy/text_images/tr/battle_ui/overlay_hp_label_boss_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/tr/battle_ui/overlay_hp_label_tr.png b/public/images/ui/legacy/text_images/tr/battle_ui/overlay_hp_label_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..da11c11cb50cb2734e2e628d82195263138daede GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh)BFFWe{ zl;UgW_WE%=TL+Y7ED7=pW^j0RBMr#W_jGX#sfbH%U=DLM5J=z<2?}CTVq|kvR8a&wJOl{{R2q$;k=G zsFzCi0ZK8K1o;I6>0f0>?g1$^PZ!6Kin!zeGr@!egF;5ZE;TitbAAp^M_4>0c3bQ= e*kRFS!NB03z^XWN@`=qr9SokXelF{r5}E*?Rwr5j literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/tr/battle_ui/pbinfo_stat_tr.json b/public/images/ui/legacy/text_images/tr/battle_ui/pbinfo_stat_tr.json new file mode 100644 index 00000000000..6de50500767 --- /dev/null +++ b/public/images/ui/legacy/text_images/tr/battle_ui/pbinfo_stat_tr.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_tr.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 6 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 16, + "h": 6 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 6 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 8, + "h": 6 + }, + "frame": { + "x": 112, + "y": 0, + "w": 8, + "h": 6 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/text_images/tr/battle_ui/pbinfo_stat_tr.png b/public/images/ui/legacy/text_images/tr/battle_ui/pbinfo_stat_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..c729e7a2207ca6b2fd4dc50a86d82a35118b275a GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!!VDyTCAkLxDgFST5LY05@7mV?|NlEUH~<;z zT}AE#g_ui%{DMI$%Z}UwQk|YIjv*Csw!Ig5ofUbG_*Lax5`4tCV#nX~R};mjdL+E* zf8jVkpRw_lE9;M%stiVjPw=yFfX3({s<_SRfSjzp)) zKmQwi&1s1qE|ZCxzTC%F_>?m}Ws+SGHP`33=FyK&CorD8{q2-!#8W4$S;_|;n|HeAjinl#WAEJE;+%Vkdcv{ElpijRiOyT2`U64CL5#nph3g&EVwxSqlmZ{{R2~st-^rgQu&X%Q~loCIFvFF^m8J literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_exp_label_zh-CN.png b/public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_exp_label_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..40b5e8925a1b3dbfcb82560db7225ebbda8e3d88 GIT binary patch literal 1401 zcmbVMzfaUq952Bjpezy+Wok+^7;XF7yI$!F74Zsk#v*}Bz)9b=@9r9|eYJhZ-I3^E zSd5FV#y`Or7bXWy7~OQy#leL*xtOREzTS@p3`(TQ>-+V2pYQMQqou{`Bg5mv9LJ3m z7OZ79kFjxbaDe@HhX#^qC|tN5bKI%XWb|>*o}cBo6JNdJ8eOw*LWlSga!CnGO+RF4 zj+>rohR9jRlrQ0m7ns7g*KY*gb4_7Yvwca7O<^_>$gkN;e4a#@*QA{2C|Q-)4N1uXL(N|1RiNlH z&}Ahf0tJE`%ou$46PUEfEyHDNzAKCEOrc6?2xYm^Xh@BWM52nU7=|GORaRAzA;h>9 zP}CHIc%sK(;n<11ka{HG6Gl`bb!rMs(~b##n9>Gu*GZzL))lgM*5F%cVICo(*}z0Y=wF2h-8wP>T*(p9V_HN4Q$`-tJfZ!HGyQA zb|1D$`xg#a(~4Mk+Ieu}KI?3`f;C&59CLo|?alOWD?5Yw_m7{y?19r~-p)_F8{K`s sdv$#4>G>zWK#OYDx#166k1zD~b1&{}|M;ZSS4nd$%q?0kuibt48<8ltA^-pY literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_hp_label_boss_zh-CN.png b/public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_hp_label_boss_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_hp_label_zh-CN.png b/public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_hp_label_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..67824c7ee4e61e92f26c658f4ca03de81e78bffc GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh*seM<4Y z?5Jz!_G+KJZ3&cRED7=pW^j0RBMr#W^K@|xsfbH%U=DLM5J=z<2@(lK r;7LqQR$%h#+|kjogM;gUC^JK&8q2FYbJ8vWbuxIm`njxgN@xNAczi2J literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_lv_zh-CN.png b/public/images/ui/legacy/text_images/zh-CN/battle_ui/overlay_lv_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..ea32ac03ee21098b52fcaf67fa2564acc4b0f169 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQk(%kA+D)IEGZjCC@m(;AXrqBUQ_J1qXvY6Ps}IlINU2c?M5cKbLh* G2~7ZOmmCfN literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.json b/public/images/ui/legacy/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.json new file mode 100644 index 00000000000..49649bbc315 --- /dev/null +++ b/public/images/ui/legacy/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_zh-CN.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 6 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 16, + "h": 6 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 6 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 8, + "h": 6 + }, + "frame": { + "x": 112, + "y": 0, + "w": 8, + "h": 6 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.png b/public/images/ui/legacy/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..c729e7a2207ca6b2fd4dc50a86d82a35118b275a GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!!VDyTCAkLxDgFST5LY05@7mV?|NlEUH~<;z zT}AE#g_ui%{DMI$%Z}UwQk|YIjv*Csw!Ig5ofUbG_*Lax5`4tCV#nX~R};mjdL+E* zf8jVkpRw_lE9;M%stiVjPw=yFfX3({s<_SRfSjzp)) zKmQwi&1s1qE|ZCxzTC%F_>?m}Ws+SGHP`33=FyK&CorD8{q2-!#8W4$S;_|;n|HeAV=TR#WAEJE;+%Vkdcv{ElpiiRb5q;olRK4`6%a!0ud1w mB>`ub3xO<4*iJRPW@7Lt<0>_{cxnSsD}$%2pUXO@geCxPBPDtO literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-CN/party_ui/party_slot_overlay_lv_zh-CN.png b/public/images/ui/legacy/text_images/zh-CN/party_ui/party_slot_overlay_lv_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..11bb545c7affbde77af5aac4f1de158d934f56d4 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$efR}XF0A3uH+6cqfNc-#pn z$XF8O7tG-B>_!@pBkJkm7{U>q>=SW-!!;*BgTe~ HDWM4f##kP+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_exp_label_zh-TW.png b/public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_exp_label_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..40b5e8925a1b3dbfcb82560db7225ebbda8e3d88 GIT binary patch literal 1401 zcmbVMzfaUq952Bjpezy+Wok+^7;XF7yI$!F74Zsk#v*}Bz)9b=@9r9|eYJhZ-I3^E zSd5FV#y`Or7bXWy7~OQy#leL*xtOREzTS@p3`(TQ>-+V2pYQMQqou{`Bg5mv9LJ3m z7OZ79kFjxbaDe@HhX#^qC|tN5bKI%XWb|>*o}cBo6JNdJ8eOw*LWlSga!CnGO+RF4 zj+>rohR9jRlrQ0m7ns7g*KY*gb4_7Yvwca7O<^_>$gkN;e4a#@*QA{2C|Q-)4N1uXL(N|1RiNlH z&}Ahf0tJE`%ou$46PUEfEyHDNzAKCEOrc6?2xYm^Xh@BWM52nU7=|GORaRAzA;h>9 zP}CHIc%sK(;n<11ka{HG6Gl`bb!rMs(~b##n9>Gu*GZzL))lgM*5F%cVICo(*}z0Y=wF2h-8wP>T*(p9V_HN4Q$`-tJfZ!HGyQA zb|1D$`xg#a(~4Mk+Ieu}KI?3`f;C&59CLo|?alOWD?5Yw_m7{y?19r~-p)_F8{K`s sdv$#4>G>zWK#OYDx#166k1zD~b1&{}|M;ZSS4nd$%q?0kuibt48<8ltA^-pY literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_hp_label_boss_zh-TW.png b/public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_hp_label_boss_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..283d63fb235a416b3244c48f3915efc696ef55c1 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDWL$L5ZC`eu(kU8l;V5YQPNkKH-| PG?2m5)z4*}Q$iB}IL1A+ literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_hp_label_zh-TW.png b/public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_hp_label_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..67824c7ee4e61e92f26c658f4ca03de81e78bffc GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngk!VDx;S96H~DWL$L5ZC|z{|9A9{oh*seM<4Y z?5Jz!_G+KJZ3&cRED7=pW^j0RBMr#W^K@|xsfbH%U=DLM5J=z<2@(lK r;7LqQR$%h#+|kjogM;gUC^JK&8q2FYbJ8vWbuxIm`njxgN@xNAczi2J literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_lv_zh-TW.png b/public/images/ui/legacy/text_images/zh-TW/battle_ui/overlay_lv_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..ea32ac03ee21098b52fcaf67fa2564acc4b0f169 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQk(%kA+D)IEGZjCC@m(;AXrqBUQ_J1qXvY6Ps}IlINU2c?M5cKbLh* G2~7ZOmmCfN literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.json b/public/images/ui/legacy/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.json new file mode 100644 index 00000000000..5a2e0fe2c30 --- /dev/null +++ b/public/images/ui/legacy/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_zh-TW.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 6 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 16, + "h": 6 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 6 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 8, + "h": 6 + }, + "frame": { + "x": 112, + "y": 0, + "w": 8, + "h": 6 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.png b/public/images/ui/legacy/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..c729e7a2207ca6b2fd4dc50a86d82a35118b275a GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0!!VDyTCAkLxDgFST5LY05@7mV?|NlEUH~<;z zT}AE#g_ui%{DMI$%Z}UwQk|YIjv*Csw!Ig5ofUbG_*Lax5`4tCV#nX~R};mjdL+E* zf8jVkpRw_lE9;M%stiVjPw=yFfX3({s<_SRfSjzp)) zKmQwi&1s1qE|ZCxzTC%F_>?m}Ws+SGHP`33=FyK&CorD8{q2-!#8W4$S;_|;n|HeAV=TR#WAEJE;+%Vkdcv{ElpiiRb5q;olRK4`6%a!0ud1w mB>`ub3xO<4*iJRPW@7Lt<0>_{cxnSsD}$%2pUXO@geCxPBPDtO literal 0 HcmV?d00001 diff --git a/public/images/ui/legacy/text_images/zh-TW/party_ui/party_slot_overlay_lv_zh-TW.png b/public/images/ui/legacy/text_images/zh-TW/party_ui/party_slot_overlay_lv_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..11bb545c7affbde77af5aac4f1de158d934f56d4 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$efR}XF0A3uH+6cqfNc-#pn z$XF8O7tG-B>_!@pBkJkm7{U>q>=SW-!!;*BgTe~ HDWM4f##kP+ literal 0 HcmV?d00001 diff --git a/public/images/ui/overlay_lv.png b/public/images/ui/overlay_lv.png deleted file mode 100644 index 6ced2da2660c9eec9aaf776259483dfcfc02ce46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^+(69E#0(@CGsK?*Qak}ZA+A7LQBkp}wC(@@|6!Y- z@B{gbB|(0{3=Yq3qyag~o-U3d9J0xYU+y0`bb;Z>8b%!+8D1Tp`u+_DC+rduJAU&s YL>yyxZ7$t!094N4>FVdQ&MBb@0N}PHk^lez diff --git a/public/images/ui/party_slot_hp_bar.png b/public/images/ui/party_slot_hp_bar.png index 181bd04c0ea744ce1f717d2dd97ae0b19075c9b8..c1818439e75a1f9b99672cc41835f1ae9b1c3a0d 100644 GIT binary patch delta 105 zcmZ3$*v&XWGwJ{T{|pQaKYsjBR8%xHG@SeYK?0D^R1)MD%)n4K`K$$yr|Ie97*Y|J z+`!}}uGFZ&%(Fp5kW)r7;lRlm9t)g0#RMzopr07VZi2mk;8 diff --git a/public/images/ui/pbinfo_enemy_boss.png b/public/images/ui/pbinfo_enemy_boss.png index ce829bf46319da69f9361b177861d8cb3483d633..421edabba03c3af6915719d66028dd00a24cc3bc 100644 GIT binary patch delta 224 zcmV<603ZLN0{j7xB!3uCOjJbx00960{~;kEHZ4A5V`J9V*7*4N|NsB96=@Ry0007X zQchC<0CtnjH~;_ukx4{BRCr$P)iDZyFbqcFpWdK1C~eify+IM&1#x%q0HXBz+QE*h zkO+$J0N;=V0?8Gl3J2WlOuk0C4|q$g3>E&(Aw{%b!%TB!KXB(SCgr90M40aq-DT16x@U|_xs6~Afn0fo01Yki4fYxT-RsqAPlM|zyA2e#i2wiq M07*qoM6N<$f_|TQAOHXW diff --git a/public/images/ui/pbinfo_enemy_mini.png b/public/images/ui/pbinfo_enemy_mini.png index ddf107767784f608b86b404e08b9c872d17d6af3..bf60bb0f964cbe3eea6acecca7988585481fe36b 100644 GIT binary patch delta 223 zcmV<503iR90{a1wB!3uCOjJbx00960{~;kEHZ4A5V`J9V*7*4N|NsB96=@Ry0007X zQchC<0CtnjH~;_ukV!;ARCr$P)iDZ$Fc5{|M{eK^LZWV;+&~0-LAJNp1BjCA?^-yO zWAU6~3;%ZDgJd8*L_t(|UhUMe3d0}}fMM|wd;&R}rnA05xF-+-oimiqS-J;O zeC(P+%n+4wTp>gLSwFZF6vs#cDZL5Ck+O_}bi_2DV5ov+6L6#>r+I{J2>KYO@aNYA zYXHnof@u0o9xolDf>PfzVilfY--OsjqZ>|6U002ovPDHLkV1h0fYZL$g diff --git a/public/images/ui/pbinfo_player.png b/public/images/ui/pbinfo_player.png index c7b2227e8009d48f321aca057c652feb89b8ae7b..55c381bd436c821a4fc4f5eeefb26f0ca3e5eb06 100644 GIT binary patch delta 257 zcmV+c0sj8j0-XYoB!3=IOjJbx00960{~;kEHZ4A5V`G|L_t(|UftF~3WOjOhw*qfXio6Zh}!B6Voord_5mHF zRqJ-$wv=XPQqMmaeXBtHfl^vgruH78*i)k1%tIh6ijjhr33>)7kQK%_K}!V#6Ud5V zl%VB;0SROiVlRB7sk8j37pgVZ(#+we)(v+~sN=$w-RQ|L2DR)->yBqcg@_#Hpx8?_h{&GKrfLX-`S33SsL>h@#00000NkvXX Hu0mjfd)#)x delta 317 zcmV-D0mA;B0@wnOB!4GROjJbx0001angF`<4ze#HAt5#`J~{t;V`F2QlA6}m*7Ni8 z`1tt$|Nk}I21Wn?00DGTPE!Ct=GbNc007@fL_t(|UhUQ~4uUWg$Kej|2wuR(BX9s> z{*@3M%MD0R(4-e|a%S-!Y_5(TN{a(ADOesgIQW~JFT92p#D81=z)B2J%_>hRD4w7b z3RE-8(+P?z=wt%b?DABC;tP7YFg*mc0#w8pw#QX`w^7su$Xig2^I;;u5a)`v8niQTj!8Y9}3R0p}uilCYrsSKi6>&*u7f)cSXI z>Tj0DE0#dLAU5TGyOUDQ9%2wSkYEY|zSlGG{y+rhjEZ1%j_&j|VfGXc-G>W?OL{;# P00000NkvXXu0mjfvoVit diff --git a/public/images/ui/pbinfo_player_mini.png b/public/images/ui/pbinfo_player_mini.png index 90d5e03dae845086de1c1202903b48ad3147621a..255ad00f8cad728d0e92c7eb8eedeba5b4138426 100644 GIT binary patch delta 225 zcmV<703QF80{sDyB!3uCOjJbx00960{~;kEHZ4A5V`J9V*7*4N|NsB96=@Ry0007X zQchC<0CtnjH~;_ul1W5CRCr$P)G-Q#Fc5{|M{ck;2#IQ++&~0-LF_H|0E?3AuNFy_ zu^6YYn7@7SK@tc)Pm>Y=<5*cB3qG<6f`W<6teoJvLJ$*7WLjsX1kV>j7F2l4YoZzH z9Mv@r$ikYae%-g;)~9q7!Q2R&tJhtEEyBbT_9CENsAlpM?Kz?d4eurgK;o}{nhGkY bpaRt&G?;vWYa6_d00000NkvXXu0mjf?aN>Y delta 248 zcmVdlgdQ%om5l$@uhn{dRg4&}xvLKxG!dYcTKe>H!SBuP&vUMeG6vlo*90000+(JhFnaB0iNzKW& zvig#I=K0B~PH)8m68E%rtu>TjYIpdSwBJQyM(4H*D?|7m#ha@|yQZ`q znrqP`*gkcdQ2Tt@Q+F=1sj*~mDo@+^JayTVo0gk4HHUld+joI8;ojZ}xBpK{SeyNW YVWDURgH6UQkQW#{UHx3vIVCg!07p1)UH||9 diff --git a/public/images/ui/text_images/ca/battle_ui/overlay_exp_label_ca.png b/public/images/ui/text_images/ca/battle_ui/overlay_exp_label_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..fde37213effdba1b333d1473a6b50afb1c49ad79 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj)JF)V@O3@G6yd&Z{mqrUvpHQ%WiC$s&Fl2LIeY|3 XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ca/battle_ui/overlay_hp_label_boss_ca.png b/public/images/ui/text_images/ca/battle_ui/overlay_hp_label_boss_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ca/battle_ui/overlay_hp_label_ca.png b/public/images/ui/text_images/ca/battle_ui/overlay_hp_label_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7ccba752f616e929200052cf590d6aecdbbc92 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj<3?vofZfOE3{s5m4S4Bld%m39tl5dkfka1W; z;Q&yIsU*lRn1P{e@>vTY&(PDwF{C0+wxf}g!GPoNDZLw_zuE{6aB literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ca/battle_ui/overlay_lv_ca.png b/public/images/ui/text_images/ca/battle_ui/overlay_lv_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..869a1ee0051e250ca529dce8a0e1ad60311262cc GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+Gb1zgD%auH-4-Eb(rt@t^#|NlU;sk9Bq za9kuLK*#Y}OYmdvQUK zuQcz;3U1d+5{fdv$_|t<@zqKn0Xg4P pea^|g$IfoNd^T!-*cykQ%xs6M_pdJFS_AYCgQu&X%Q~loCIG@sc7^}| literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ca/party_ui/party_slot_overlay_hp_ca.png b/public/images/ui/text_images/ca/party_ui/party_slot_overlay_hp_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc95e4f95e8d6ce67a830c47147845b9eada2b8 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^*Z=?j|M>C4z`&rOpx^?V z{XC#JV@Z%-FoVOh8)-m}s;7%%NJU)og{UoEjfq*M8O(>boLI%ywlXxjan00+ygX7q bt0fo~i*OZ}EAd+aH86O(`njxgN@xNARZ=J! literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ca/party_ui/party_slot_overlay_lv_ca.png b/public/images/ui/text_images/ca/party_ui/party_slot_overlay_lv_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..c5971de4fd005e1a917668e47e5b7094cd447f07 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^*Z*LkprFuH+IIc$;weCJ z#*!evU*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/da/battle_ui/overlay_hp_label_da.png b/public/images/ui/text_images/da/battle_ui/overlay_hp_label_da.png new file mode 100644 index 0000000000000000000000000000000000000000..38a3476138190b4674143ff0cff9c670388ee965 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj>3?$dd>30Gto&cW^*Z=?jD=I2l{;%fSq%YjO zE&wRbSQ6wH%;50sMjDW#=;`7ZQW2Ldz{!)Ea3W^gtwzP{n>rGVPneD_Gh#@Um0&pR W$aOaPsFgHOF@vY8pUXO@geCx;=_1Mi literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/da/battle_ui/overlay_lv_da.png b/public/images/ui/text_images/da/battle_ui/overlay_lv_da.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad4312d561bd3e159ba3d76a939101c2ad54002 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+A7LQBm>#|Nl*;Z96{w z&j<1uOM?7@862M7NCR?YJzX3_D&mqk5)(Xth&R#0JJI9+sR@>o6-`7K^meei?ATfH Q6sVBF)78&qol`;+07EY#-2eap literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/da/battle_ui/pbinfo_stat_da.json b/public/images/ui/text_images/da/battle_ui/pbinfo_stat_da.json new file mode 100644 index 00000000000..5108fa59582 --- /dev/null +++ b/public/images/ui/text_images/da/battle_ui/pbinfo_stat_da.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_da.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 7 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 7 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 7 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 9, + "h": 7 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 7 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/da/battle_ui/pbinfo_stat_da.png b/public/images/ui/text_images/da/battle_ui/pbinfo_stat_da.png new file mode 100644 index 0000000000000000000000000000000000000000..9656c5f04b96333ab6e6c721419dccf1d16d415c GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!K#0(^Z)Q_+(JhFpgn1YDN~`X@;4>FUkXP4V3Ngl%Kt948a^ zlbS9;Z)EQz-Och4Eow@==~R%@)GEKMg8BbP$M;)O*8X31Me4zh`9imR&G%fIl9Zo& zIp{90;#~LH#&@?ha2>uYp0kQ;Z~FU_F=wW8*cx9HlM-!y-@Py_tK{9=d24q{Ep*s; z{!W+ks)u?WVa^3&{ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/da/party_ui/party_slot_overlay_hp_da.png b/public/images/ui/text_images/da/party_ui/party_slot_overlay_hp_da.png new file mode 100644 index 0000000000000000000000000000000000000000..9be90b5c6bb6247d67c12aea99e7edaa4679e131 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^S0HU@X!zsDkAi}NMLq{C zfPBW1AirP+hi5m^fE-0n7srr_xMTrNp45aBG23o6DrVo*QD97A+!-v{AjHSR(3QmT UxHrOS4^T0Kr>mdKI;Vst083IKvH$=8 literal 0 HcmV?d00001 diff --git a/public/images/ui/party_slot_overlay_lv.png b/public/images/ui/text_images/da/party_ui/party_slot_overlay_lv_da.png similarity index 100% rename from public/images/ui/party_slot_overlay_lv.png rename to public/images/ui/text_images/da/party_ui/party_slot_overlay_lv_da.png diff --git a/public/images/ui/text_images/de/battle_ui/overlay_exp_label_de.png b/public/images/ui/text_images/de/battle_ui/overlay_exp_label_de.png new file mode 100644 index 0000000000000000000000000000000000000000..39a92725bc0ffbc81c8e5c5cb98379d9efeb2674 GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj=ZOfV@O3@G6ySD+nUJJVMZzLxwpAemijVwvKky*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/de/battle_ui/overlay_hp_label_de.png b/public/images/ui/text_images/de/battle_ui/overlay_hp_label_de.png new file mode 100644 index 0000000000000000000000000000000000000000..8b227eebd7a70a2a5fc7e8fc8473547120f5d931 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj<3?vofZfOE3p#Yx{*Z=?jTmG-++oTUfii(Or z_C3CXr-8D}B|(0{K>AnNk$XVOz|+Msq#`akp|BvaurM*9fS0qBm$xi|LC8U^gRk+@ pL50E%H67f{%-xH-yO^1o84~XBSkAvuehH|T!PC{xWt~$(69B2QEDQhu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/de/battle_ui/overlay_lv_de.png b/public/images/ui/text_images/de/battle_ui/overlay_lv_de.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad4312d561bd3e159ba3d76a939101c2ad54002 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+A7LQBm>#|Nl*;Z96{w z&j<1uOM?7@862M7NCR?YJzX3_D&mqk5)(Xth&R#0JJI9+sR@>o6-`7K^meei?ATfH Q6sVBF)78&qol`;+07EY#-2eap literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/de/battle_ui/pbinfo_stat_de.json b/public/images/ui/text_images/de/battle_ui/pbinfo_stat_de.json new file mode 100644 index 00000000000..dbf39c94059 --- /dev/null +++ b/public/images/ui/text_images/de/battle_ui/pbinfo_stat_de.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_de.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 7 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 7 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 7 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 9, + "h": 7 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 7 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/de/battle_ui/pbinfo_stat_de.png b/public/images/ui/text_images/de/battle_ui/pbinfo_stat_de.png new file mode 100644 index 0000000000000000000000000000000000000000..b8bcb6138b968236b484358a56e89c0f9d70a6db GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!K!VDzurW-E666=mz)&{%tOby_+SA1`q#~|%;zdqoLmp@2LlZfZp86J~FdhGWJ|xGrO zv+jt|5>IFMSHDiAh|b@%zGSOpa^5!{-S_Vv79PGMaV`94Ge0-a6f>C{ix)ELsDzi7 zS2ATapWgcS!Qqz16FVaeZry2Sn09ThxyHNiZEquMKP2|4PFenOk7LKARU4|r7Wn7B zG-%7rJZVa=N|~wc)&GAR{`RaF|8UhOeWv@$&p>B0 Nc)I$ztaD0e0su|(Z4Ceb literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/de/party_ui/party_slot_overlay_hp_de.png b/public/images/ui/text_images/de/party_ui/party_slot_overlay_hp_de.png new file mode 100644 index 0000000000000000000000000000000000000000..47ac22e52cb9cfe432a1ab6a3f5e1298ee0652a7 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^*Z=?j|M>C4z`&rOpx^?V z{XC#JV@Z%-FoVOh8)-m}lBbJfNJU)og@`R(jfqhy70idPoC;BxD0z?JNtz*ps+0u7 Y3>D608w1s}fT|fhUHx3vIVCg!0Jdo+CIA2c literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/de/party_ui/party_slot_overlay_lv_de.png b/public/images/ui/text_images/de/party_ui/party_slot_overlay_lv_de.png new file mode 100644 index 0000000000000000000000000000000000000000..122d3f7151cdeab41b5c0c4d8ebb20efa9bb7ccf GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^S0F7QATVpvtk0i6zt(j* z2IMoA1o;IsI6S+N2IRPiAtGI+ZBxvX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/en/battle_ui/overlay_exp_label.png b/public/images/ui/text_images/en/battle_ui/overlay_exp_label.png new file mode 100644 index 0000000000000000000000000000000000000000..fde37213effdba1b333d1473a6b50afb1c49ad79 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj)JF)V@O3@G6yd&Z{mqrUvpHQ%WiC$s&Fl2LIeY|3 XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/en/battle_ui/overlay_hp_label.png b/public/images/ui/text_images/en/battle_ui/overlay_hp_label.png new file mode 100644 index 0000000000000000000000000000000000000000..38a3476138190b4674143ff0cff9c670388ee965 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj>3?$dd>30Gto&cW^*Z=?jD=I2l{;%fSq%YjO zE&wRbSQ6wH%;50sMjDW#=;`7ZQW2Ldz{!)Ea3W^gtwzP{n>rGVPneD_Gh#@Um0&pR W$aOaPsFgHOF@vY8pUXO@geCx;=_1Mi literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/en/battle_ui/overlay_hp_label_boss.png b/public/images/ui/text_images/en/battle_ui/overlay_hp_label_boss.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/en/battle_ui/overlay_lv.png b/public/images/ui/text_images/en/battle_ui/overlay_lv.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad4312d561bd3e159ba3d76a939101c2ad54002 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+A7LQBm>#|Nl*;Z96{w z&j<1uOM?7@862M7NCR?YJzX3_D&mqk5)(Xth&R#0JJI9+sR@>o6-`7K^meei?ATfH Q6sVBF)78&qol`;+07EY#-2eap literal 0 HcmV?d00001 diff --git a/public/images/ui/pbinfo_stat.json b/public/images/ui/text_images/en/battle_ui/pbinfo_stat.json similarity index 100% rename from public/images/ui/pbinfo_stat.json rename to public/images/ui/text_images/en/battle_ui/pbinfo_stat.json diff --git a/public/images/ui/text_images/en/battle_ui/pbinfo_stat.png b/public/images/ui/text_images/en/battle_ui/pbinfo_stat.png new file mode 100644 index 0000000000000000000000000000000000000000..9656c5f04b96333ab6e6c721419dccf1d16d415c GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!K#0(^Z)Q_+(JhFpgn1YDN~`X@;4>FUkXP4V3Ngl%Kt948a^ zlbS9;Z)EQz-Och4Eow@==~R%@)GEKMg8BbP$M;)O*8X31Me4zh`9imR&G%fIl9Zo& zIp{90;#~LH#&@?ha2>uYp0kQ;Z~FU_F=wW8*cx9HlM-!y-@Py_tK{9=d24q{Ep*s; z{!W+ks)u?WVa^3&{ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/en/party_ui/party_slot_overlay_hp.png b/public/images/ui/text_images/en/party_ui/party_slot_overlay_hp.png new file mode 100644 index 0000000000000000000000000000000000000000..9be90b5c6bb6247d67c12aea99e7edaa4679e131 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^S0HU@X!zsDkAi}NMLq{C zfPBW1AirP+hi5m^fE-0n7srr_xMTrNp45aBG23o6DrVo*QD97A+!-v{AjHSR(3QmT UxHrOS4^T0Kr>mdKI;Vst083IKvH$=8 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/en/party_ui/party_slot_overlay_lv.png b/public/images/ui/text_images/en/party_ui/party_slot_overlay_lv.png new file mode 100644 index 0000000000000000000000000000000000000000..122d3f7151cdeab41b5c0c4d8ebb20efa9bb7ccf GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^S0F7QATVpvtk0i6zt(j* z2IMoA1o;IsI6S+N2IRPiAtGI+ZBxvX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/es-ES/battle_ui/overlay_exp_label_es-ES.png b/public/images/ui/text_images/es-ES/battle_ui/overlay_exp_label_es-ES.png new file mode 100644 index 0000000000000000000000000000000000000000..fde37213effdba1b333d1473a6b50afb1c49ad79 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj)JF)V@O3@G6yd&Z{mqrUvpHQ%WiC$s&Fl2LIeY|3 XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/es-ES/battle_ui/overlay_hp_label_boss_es-ES.png b/public/images/ui/text_images/es-ES/battle_ui/overlay_hp_label_boss_es-ES.png new file mode 100644 index 0000000000000000000000000000000000000000..440ba6136dc87f67fb8b57236d8777e30d435c4d GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC!VDz;`FiF7DbWC*5ZC|z|0^mg?lzSD9HRv! zfove-#LVjRKm{x%L4LtNnql+gv{^vP(bL5-q#`cafqmhcg#j#2HY{sh>KMo{W4aWV zBO}k6g$@@(ID`^7yj`bpdwMfwdZn_wPUhte<>fWy6%gU&6=h&}enM)>G7r{zkfENg KelF{r5}E)j3@>y5 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/es-ES/battle_ui/overlay_hp_label_es-ES.png b/public/images/ui/text_images/es-ES/battle_ui/overlay_hp_label_es-ES.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7ccba752f616e929200052cf590d6aecdbbc92 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj<3?vofZfOE3{s5m4S4Bld%m39tl5dkfka1W; z;Q&yIsU*lRn1P{e@>vTY&(PDwF{C0+wxf}g!GPoNDZLw_zuE{6aB literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/es-ES/battle_ui/overlay_lv_es-ES.png b/public/images/ui/text_images/es-ES/battle_ui/overlay_lv_es-ES.png new file mode 100644 index 0000000000000000000000000000000000000000..869a1ee0051e250ca529dce8a0e1ad60311262cc GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+Gb1zgD%auH-4-Eb(rt@t^#|NlU;sk9Bq za9kC4z`&rOpx^?V z{XC#JV@Z%-FoVOh8)-m}s;7%%NJU)og{UoEjfq*M8O(>boLI%ywlXxjan00+ygX7q bt0fo~i*OZ}EAd+aH86O(`njxgN@xNARZ=J! literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/es-ES/party_ui/party_slot_overlay_lv_es-ES.png b/public/images/ui/text_images/es-ES/party_ui/party_slot_overlay_lv_es-ES.png new file mode 100644 index 0000000000000000000000000000000000000000..c5971de4fd005e1a917668e47e5b7094cd447f07 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^*Z*LkprFuH+IIc$;weCJ z#*!evU XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/es-MX/battle_ui/overlay_hp_label_boss_es-MX.png b/public/images/ui/text_images/es-MX/battle_ui/overlay_hp_label_boss_es-MX.png new file mode 100644 index 0000000000000000000000000000000000000000..440ba6136dc87f67fb8b57236d8777e30d435c4d GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC!VDz;`FiF7DbWC*5ZC|z|0^mg?lzSD9HRv! zfove-#LVjRKm{x%L4LtNnql+gv{^vP(bL5-q#`cafqmhcg#j#2HY{sh>KMo{W4aWV zBO}k6g$@@(ID`^7yj`bpdwMfwdZn_wPUhte<>fWy6%gU&6=h&}enM)>G7r{zkfENg KelF{r5}E)j3@>y5 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/es-MX/battle_ui/overlay_hp_label_es-MX.png b/public/images/ui/text_images/es-MX/battle_ui/overlay_hp_label_es-MX.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7ccba752f616e929200052cf590d6aecdbbc92 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj<3?vofZfOE3{s5m4S4Bld%m39tl5dkfka1W; z;Q&yIsU*lRn1P{e@>vTY&(PDwF{C0+wxf}g!GPoNDZLw_zuE{6aB literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/es-MX/battle_ui/overlay_lv_es-MX.png b/public/images/ui/text_images/es-MX/battle_ui/overlay_lv_es-MX.png new file mode 100644 index 0000000000000000000000000000000000000000..869a1ee0051e250ca529dce8a0e1ad60311262cc GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+Gb1zgD%auH-4-Eb(rt@t^#|NlU;sk9Bq za9kC4z`&rOpx^?V z{XC#JV@Z%-FoVOh8)-m}s;7%%NJU)og{UoEjfq*M8O(>boLI%ywlXxjan00+ygX7q bt0fo~i*OZ}EAd+aH86O(`njxgN@xNARZ=J! literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/es-MX/party_ui/party_slot_overlay_lv_es-MX.png b/public/images/ui/text_images/es-MX/party_ui/party_slot_overlay_lv_es-MX.png new file mode 100644 index 0000000000000000000000000000000000000000..c5971de4fd005e1a917668e47e5b7094cd447f07 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^*Z*LkprFuH+IIc$;weCJ z#*!evU XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/fr/battle_ui/overlay_hp_label_boss_fr.png b/public/images/ui/text_images/fr/battle_ui/overlay_hp_label_boss_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/fr/battle_ui/overlay_hp_label_fr.png b/public/images/ui/text_images/fr/battle_ui/overlay_hp_label_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..e086339f047615cd38b7e7fc2b08849f397c9ab6 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj>3?$dd>30Gto&cW^*Z=?jTmG+BR8-{Kr2jV3 z=owI)u_VYZn8D%MjWi%f#nZ(xq#`c)Le!S7#>A}DEat;oJR}UaTFIP<5o{KXYh3Ob6Mw<&;$Uo#3ytB literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/fr/battle_ui/overlay_lv_fr.png b/public/images/ui/text_images/fr/battle_ui/overlay_lv_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9ccb6d02d8be6ab3d9f0196ec8e3d427e247f7 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@!VDyjmkZ_sDgFST5LZP-#sB~RL&&DmHiolb z*nv_^B|(0{3=CzH&sqR^%APKcAr*1S0YO1R2?1e7OhRr7hmLkMI!4~~;8aOtnH0*z Y;M~ppvt1_bI#4--r>mdKI;Vst0I5?Y4FCWD literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/fr/battle_ui/pbinfo_stat_fr.json b/public/images/ui/text_images/fr/battle_ui/pbinfo_stat_fr.json new file mode 100644 index 00000000000..1275fe16ec3 --- /dev/null +++ b/public/images/ui/text_images/fr/battle_ui/pbinfo_stat_fr.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_fr.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 9 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": -1, + "w": 19, + "h": 9 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 9 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": -1, + "w": 19, + "h": 9 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 9 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": -1, + "w": 17, + "h": 9 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 9 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": -1, + "w": 13, + "h": 9 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 9 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": -1, + "w": 13, + "h": 9 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 9 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": -1, + "w": 13, + "h": 9 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 9 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": -1, + "w": 13, + "h": 9 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 9 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": -1, + "w": 13, + "h": 9 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 9 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": -1, + "w": 9, + "h": 9 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 9 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/fr/battle_ui/pbinfo_stat_fr.png b/public/images/ui/text_images/fr/battle_ui/pbinfo_stat_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..baea5c8d93cebdefaad4f2949c545441aaa7d4eb GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!F!VDyz=LTH^QbGYfA+A7LQBm>#|NlU;sk9Bq za9kzopr0PQ1v)c^nh literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/fr/party_ui/party_slot_overlay_hp_fr.png b/public/images/ui/text_images/fr/party_ui/party_slot_overlay_hp_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..140c99eef6886b265f5d6d22bc93f38a475e702a GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^*Z=?j|M>C4z`&rOpx^?V z{XC#JV@Z%-FoVOh8)-m}il>WXNJU)og{UoEjfq*QSQJ}$S;_Ip=|P53m{L$)5S5QA}*PMSyffljV)DGSs{@{DW-=-a>~@+DGo_)3X!S| Y4t&gaZ}Bkg2dZcAboFyt=akR{08s8CF#rGn literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/it/battle_ui/overlay_exp_label_it.png b/public/images/ui/text_images/it/battle_ui/overlay_exp_label_it.png new file mode 100644 index 0000000000000000000000000000000000000000..6ad5855cc46ea34559600c71bf71becdbfea2093 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj*_Q~V@O3@G6yd&Z{mqr+j3Q%%WiC)$`iSHoiA%AtHA+A Zh8vSOH=fu0y&b5U!PC{xWt~$(695j7C7l2O literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/it/battle_ui/overlay_hp_label_boss_it.png b/public/images/ui/text_images/it/battle_ui/overlay_hp_label_boss_it.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/it/battle_ui/overlay_hp_label_it.png b/public/images/ui/text_images/it/battle_ui/overlay_hp_label_it.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7ccba752f616e929200052cf590d6aecdbbc92 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj<3?vofZfOE3{s5m4S4Bld%m39tl5dkfka1W; z;Q&yIsU*lRn1P{e@>vTY&(PDwF{C0+wxf}g!GPoNDZLw_zuE{6aB literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/it/battle_ui/overlay_lv_it.png b/public/images/ui/text_images/it/battle_ui/overlay_lv_it.png new file mode 100644 index 0000000000000000000000000000000000000000..987d806b93a4abab3cf51571751e91adff240af6 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQk(%kA+G=b|5s2@0Fn|LxSWB4 zj3q&S!3+-1ZlnP@VxBIJAr*1S9Ek}YjSH^?w5^%Rvv47U;$P+$R}{|F16441y85}S Ib4q9e09`gAwg3PC literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/it/battle_ui/pbinfo_stat_it.json b/public/images/ui/text_images/it/battle_ui/pbinfo_stat_it.json new file mode 100644 index 00000000000..111a88ba365 --- /dev/null +++ b/public/images/ui/text_images/it/battle_ui/pbinfo_stat_it.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_it.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 7 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 7 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 7 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 9, + "h": 7 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 7 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/it/battle_ui/pbinfo_stat_it.png b/public/images/ui/text_images/it/battle_ui/pbinfo_stat_it.png new file mode 100644 index 0000000000000000000000000000000000000000..c2ac58da1847c38084481ba978019b0dea4eb974 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!K!VDzurW-E#|NlU;sk9Bq za9kn!-_d=^A>m-aO;T*+z|Fy-+fBtd>yN-k>(cl5F3e|4lZilcE{iUy|}IPPt*Br fi}x=sKVv`LJ7Y5Mv^0O9Cm1|k{an^LB{Ts5H79fd literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/it/party_ui/party_slot_overlay_hp_it.png b/public/images/ui/text_images/it/party_ui/party_slot_overlay_hp_it.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc95e4f95e8d6ce67a830c47147845b9eada2b8 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^*Z=?j|M>C4z`&rOpx^?V z{XC#JV@Z%-FoVOh8)-m}s;7%%NJU)og{UoEjfq*M8O(>boLI%ywlXxjan00+ygX7q bt0fo~i*OZ}EAd+aH86O(`njxgN@xNARZ=J! literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/it/party_ui/party_slot_overlay_lv_it.png b/public/images/ui/text_images/it/party_ui/party_slot_overlay_lv_it.png new file mode 100644 index 0000000000000000000000000000000000000000..31a2a31dd411542f95aac9f347334c52bae5882a GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$ef*Z=?jD<~)cNr??y&OkxN zk|4ie28U-i(tsQZPZ!6KinwHkCIPlK5eYBe)DyE#3II)2Vqku8DxpXcsD{DQ)z4*} HQ$iB}0+$_t literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ja/battle_ui/overlay_exp_label_ja.png b/public/images/ui/text_images/ja/battle_ui/overlay_exp_label_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..fde37213effdba1b333d1473a6b50afb1c49ad79 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj)JF)V@O3@G6yd&Z{mqrUvpHQ%WiC$s&Fl2LIeY|3 XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ja/battle_ui/overlay_hp_label_boss_ja.png b/public/images/ui/text_images/ja/battle_ui/overlay_hp_label_boss_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ja/battle_ui/overlay_hp_label_ja.png b/public/images/ui/text_images/ja/battle_ui/overlay_hp_label_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..38a3476138190b4674143ff0cff9c670388ee965 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj>3?$dd>30Gto&cW^*Z=?jD=I2l{;%fSq%YjO zE&wRbSQ6wH%;50sMjDW#=;`7ZQW2Ldz{!)Ea3W^gtwzP{n>rGVPneD_Gh#@Um0&pR W$aOaPsFgHOF@vY8pUXO@geCx;=_1Mi literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ja/battle_ui/overlay_lv_ja.png b/public/images/ui/text_images/ja/battle_ui/overlay_lv_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad4312d561bd3e159ba3d76a939101c2ad54002 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+A7LQBm>#|Nl*;Z96{w z&j<1uOM?7@862M7NCR?YJzX3_D&mqk5)(Xth&R#0JJI9+sR@>o6-`7K^meei?ATfH Q6sVBF)78&qol`;+07EY#-2eap literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ja/battle_ui/pbinfo_stat_ja.json b/public/images/ui/text_images/ja/battle_ui/pbinfo_stat_ja.json new file mode 100644 index 00000000000..d8de5c788ef --- /dev/null +++ b/public/images/ui/text_images/ja/battle_ui/pbinfo_stat_ja.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_ja.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 7 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 7 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 7 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 9, + "h": 7 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 7 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/ja/battle_ui/pbinfo_stat_ja.png b/public/images/ui/text_images/ja/battle_ui/pbinfo_stat_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..9656c5f04b96333ab6e6c721419dccf1d16d415c GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!K#0(^Z)Q_+(JhFpgn1YDN~`X@;4>FUkXP4V3Ngl%Kt948a^ zlbS9;Z)EQz-Och4Eow@==~R%@)GEKMg8BbP$M;)O*8X31Me4zh`9imR&G%fIl9Zo& zIp{90;#~LH#&@?ha2>uYp0kQ;Z~FU_F=wW8*cx9HlM-!y-@Py_tK{9=d24q{Ep*s; z{!W+ks)u?WVa^3&{ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ja/party_ui/party_slot_overlay_hp_ja.png b/public/images/ui/text_images/ja/party_ui/party_slot_overlay_hp_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..9be90b5c6bb6247d67c12aea99e7edaa4679e131 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^S0HU@X!zsDkAi}NMLq{C zfPBW1AirP+hi5m^fE-0n7srr_xMTrNp45aBG23o6DrVo*QD97A+!-v{AjHSR(3QmT UxHrOS4^T0Kr>mdKI;Vst083IKvH$=8 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ja/party_ui/party_slot_overlay_lv_ja.png b/public/images/ui/text_images/ja/party_ui/party_slot_overlay_lv_ja.png new file mode 100644 index 0000000000000000000000000000000000000000..122d3f7151cdeab41b5c0c4d8ebb20efa9bb7ccf GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^S0F7QATVpvtk0i6zt(j* z2IMoA1o;IsI6S+N2IRPiAtGI+ZBxvX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ko/battle_ui/overlay_exp_label_ko.png b/public/images/ui/text_images/ko/battle_ui/overlay_exp_label_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..fde37213effdba1b333d1473a6b50afb1c49ad79 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj)JF)V@O3@G6yd&Z{mqrUvpHQ%WiC$s&Fl2LIeY|3 XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ko/battle_ui/overlay_hp_label_boss_ko.png b/public/images/ui/text_images/ko/battle_ui/overlay_hp_label_boss_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ko/battle_ui/overlay_hp_label_ko.png b/public/images/ui/text_images/ko/battle_ui/overlay_hp_label_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..38a3476138190b4674143ff0cff9c670388ee965 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj>3?$dd>30Gto&cW^*Z=?jD=I2l{;%fSq%YjO zE&wRbSQ6wH%;50sMjDW#=;`7ZQW2Ldz{!)Ea3W^gtwzP{n>rGVPneD_Gh#@Um0&pR W$aOaPsFgHOF@vY8pUXO@geCx;=_1Mi literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ko/battle_ui/overlay_lv_ko.png b/public/images/ui/text_images/ko/battle_ui/overlay_lv_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad4312d561bd3e159ba3d76a939101c2ad54002 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+A7LQBm>#|Nl*;Z96{w z&j<1uOM?7@862M7NCR?YJzX3_D&mqk5)(Xth&R#0JJI9+sR@>o6-`7K^meei?ATfH Q6sVBF)78&qol`;+07EY#-2eap literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ko/battle_ui/pbinfo_stat_ko.json b/public/images/ui/text_images/ko/battle_ui/pbinfo_stat_ko.json new file mode 100644 index 00000000000..a1d660dfca3 --- /dev/null +++ b/public/images/ui/text_images/ko/battle_ui/pbinfo_stat_ko.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_ko.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 7 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 7 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 7 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 9, + "h": 7 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 7 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/ko/battle_ui/pbinfo_stat_ko.png b/public/images/ui/text_images/ko/battle_ui/pbinfo_stat_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..9656c5f04b96333ab6e6c721419dccf1d16d415c GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!K#0(^Z)Q_+(JhFpgn1YDN~`X@;4>FUkXP4V3Ngl%Kt948a^ zlbS9;Z)EQz-Och4Eow@==~R%@)GEKMg8BbP$M;)O*8X31Me4zh`9imR&G%fIl9Zo& zIp{90;#~LH#&@?ha2>uYp0kQ;Z~FU_F=wW8*cx9HlM-!y-@Py_tK{9=d24q{Ep*s; z{!W+ks)u?WVa^3&{ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ko/party_ui/party_slot_overlay_hp_ko.png b/public/images/ui/text_images/ko/party_ui/party_slot_overlay_hp_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..9be90b5c6bb6247d67c12aea99e7edaa4679e131 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^S0HU@X!zsDkAi}NMLq{C zfPBW1AirP+hi5m^fE-0n7srr_xMTrNp45aBG23o6DrVo*QD97A+!-v{AjHSR(3QmT UxHrOS4^T0Kr>mdKI;Vst083IKvH$=8 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ko/party_ui/party_slot_overlay_lv_ko.png b/public/images/ui/text_images/ko/party_ui/party_slot_overlay_lv_ko.png new file mode 100644 index 0000000000000000000000000000000000000000..122d3f7151cdeab41b5c0c4d8ebb20efa9bb7ccf GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^S0F7QATVpvtk0i6zt(j* z2IMoA1o;IsI6S+N2IRPiAtGI+ZBxvX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/pt-BR/battle_ui/overlay_exp_label_pt-BR.png b/public/images/ui/text_images/pt-BR/battle_ui/overlay_exp_label_pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..fde37213effdba1b333d1473a6b50afb1c49ad79 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj)JF)V@O3@G6yd&Z{mqrUvpHQ%WiC$s&Fl2LIeY|3 XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/pt-BR/battle_ui/overlay_hp_label_boss_pt-BR.png b/public/images/ui/text_images/pt-BR/battle_ui/overlay_hp_label_boss_pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/pt-BR/battle_ui/overlay_hp_label_pt-BR.png b/public/images/ui/text_images/pt-BR/battle_ui/overlay_hp_label_pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7ccba752f616e929200052cf590d6aecdbbc92 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj<3?vofZfOE3{s5m4S4Bld%m39tl5dkfka1W; z;Q&yIsU*lRn1P{e@>vTY&(PDwF{C0+wxf}g!GPoNDZLw_zuE{6aB literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/pt-BR/battle_ui/overlay_lv_pt-BR.png b/public/images/ui/text_images/pt-BR/battle_ui/overlay_lv_pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..869a1ee0051e250ca529dce8a0e1ad60311262cc GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+Gb1zgD%auH-4-Eb(rt@t^#|NlU;sk9Bq za9kw9#I#NL}$ z7hek>UN({M)zWusj$U$eI_cvOx=?^s@NC6GwkI17&)(qvRGP=@bV#6SgxGpx?Kw+R zPt-D<^$RI-I31AAR%7&FwxdXPo6Co%0qzO~c@K6pcO8?JT5VzZtuycYiI!vwb=$*5 k@jutj71NC`XL`x&`n=XW_u1B6K%X#py85}Sb4q9e060K(@c;k- literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/pt-BR/party_ui/party_slot_overlay_hp_pt-BR.png b/public/images/ui/text_images/pt-BR/party_ui/party_slot_overlay_hp_pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc95e4f95e8d6ce67a830c47147845b9eada2b8 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^*Z=?j|M>C4z`&rOpx^?V z{XC#JV@Z%-FoVOh8)-m}s;7%%NJU)og{UoEjfq*M8O(>boLI%ywlXxjan00+ygX7q bt0fo~i*OZ}EAd+aH86O(`njxgN@xNARZ=J! literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/pt-BR/party_ui/party_slot_overlay_lv_pt-BR.png b/public/images/ui/text_images/pt-BR/party_ui/party_slot_overlay_lv_pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..c5971de4fd005e1a917668e47e5b7094cd447f07 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^*Z*LkprFuH+IIc$;weCJ z#*!evU XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ro/battle_ui/overlay_hp_label_boss_ro.png b/public/images/ui/text_images/ro/battle_ui/overlay_hp_label_boss_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ro/battle_ui/overlay_hp_label_ro.png b/public/images/ui/text_images/ro/battle_ui/overlay_hp_label_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..38a3476138190b4674143ff0cff9c670388ee965 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj>3?$dd>30Gto&cW^*Z=?jD=I2l{;%fSq%YjO zE&wRbSQ6wH%;50sMjDW#=;`7ZQW2Ldz{!)Ea3W^gtwzP{n>rGVPneD_Gh#@Um0&pR W$aOaPsFgHOF@vY8pUXO@geCx;=_1Mi literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ro/battle_ui/overlay_lv_ro.png b/public/images/ui/text_images/ro/battle_ui/overlay_lv_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad4312d561bd3e159ba3d76a939101c2ad54002 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+A7LQBm>#|Nl*;Z96{w z&j<1uOM?7@862M7NCR?YJzX3_D&mqk5)(Xth&R#0JJI9+sR@>o6-`7K^meei?ATfH Q6sVBF)78&qol`;+07EY#-2eap literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ro/battle_ui/pbinfo_stat_ro.json b/public/images/ui/text_images/ro/battle_ui/pbinfo_stat_ro.json new file mode 100644 index 00000000000..b5f74fdd7cc --- /dev/null +++ b/public/images/ui/text_images/ro/battle_ui/pbinfo_stat_ro.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_ro.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 7 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 7 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 7 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 9, + "h": 7 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 7 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/ro/battle_ui/pbinfo_stat_ro.png b/public/images/ui/text_images/ro/battle_ui/pbinfo_stat_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..9656c5f04b96333ab6e6c721419dccf1d16d415c GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!K#0(^Z)Q_+(JhFpgn1YDN~`X@;4>FUkXP4V3Ngl%Kt948a^ zlbS9;Z)EQz-Och4Eow@==~R%@)GEKMg8BbP$M;)O*8X31Me4zh`9imR&G%fIl9Zo& zIp{90;#~LH#&@?ha2>uYp0kQ;Z~FU_F=wW8*cx9HlM-!y-@Py_tK{9=d24q{Ep*s; z{!W+ks)u?WVa^3&{ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ro/party_ui/party_slot_overlay_hp_ro.png b/public/images/ui/text_images/ro/party_ui/party_slot_overlay_hp_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..9be90b5c6bb6247d67c12aea99e7edaa4679e131 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^S0HU@X!zsDkAi}NMLq{C zfPBW1AirP+hi5m^fE-0n7srr_xMTrNp45aBG23o6DrVo*QD97A+!-v{AjHSR(3QmT UxHrOS4^T0Kr>mdKI;Vst083IKvH$=8 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ro/party_ui/party_slot_overlay_lv_ro.png b/public/images/ui/text_images/ro/party_ui/party_slot_overlay_lv_ro.png new file mode 100644 index 0000000000000000000000000000000000000000..122d3f7151cdeab41b5c0c4d8ebb20efa9bb7ccf GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^S0F7QATVpvtk0i6zt(j* z2IMoA1o;IsI6S+N2IRPiAtGI+ZBxvX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ru/battle_ui/overlay_exp_label_ru.png b/public/images/ui/text_images/ru/battle_ui/overlay_exp_label_ru.png new file mode 100644 index 0000000000000000000000000000000000000000..8342acb74fbd61926096e54d2396a61a13f97a0f GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p!VDxo^Ia$eQv3lvA+G=b|5sF0WZ3nYp>h_G z@#9GALZB2=NswPK14G&5vlc*}nx~6nNJU(7K_e5Jx~izEDv)4P7Zp`i7FV6XG2_z4&Gl8AnNk$XT&$J50zq#`ak!OVd2OwYOrw0kp)RPZ;mWjl9O^|K~B<} kGYgiaEID%Ez!DV(hUiw7cIP1ea-dEIPgg&ebxsLQ03%Q>s{jB1 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/ru/battle_ui/pbinfo_stat_ru.json b/public/images/ui/text_images/ru/battle_ui/pbinfo_stat_ru.json new file mode 100644 index 00000000000..61618578d25 --- /dev/null +++ b/public/images/ui/text_images/ru/battle_ui/pbinfo_stat_ru.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_ru.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 8 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 8 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 8 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 8 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 8 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 8 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 8 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 8 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 8 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 8 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 8 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 8 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 8 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 8 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 8 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 8 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 8 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 9, + "h": 8 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 8 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/ru/battle_ui/pbinfo_stat_ru.png b/public/images/ui/text_images/ru/battle_ui/pbinfo_stat_ru.png new file mode 100644 index 0000000000000000000000000000000000000000..9688d78d42532a1c340b48270f69b190addcacb6 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!7!VDyJ3>%AqlxToYh%1m*R8(v#ZTtWKKb$em zYVIna1WQSfUoenn*gQFH7LdB)>Eakt5jS<>>(0Xl0xi5N9gc{q@E)1QJz?j?5QUI~ zZ@$GJTFCCF_dm~pd$;@d_N`?F#Uaa z?bOG!_ii1FKeFGd;Qxzlzm?C_aVNTR6xP4%{~%Uu8$`0V!=y7srr_xa0&gGd3kQwqWsaVPRorHsN&fWbt%^Tp^(( i24VJd2OwYOrw0kp)RPZ;mWjl9O^|K~B<} kGYgiaEID%Ez!DV(hUiw7cIP1ea-dEIPgg&ebxsLQ03%Q>s{jB1 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tl/battle_ui/overlay_exp_label_tl.png b/public/images/ui/text_images/tl/battle_ui/overlay_exp_label_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..fde37213effdba1b333d1473a6b50afb1c49ad79 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj)JF)V@O3@G6yd&Z{mqrUvpHQ%WiC$s&Fl2LIeY|3 XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tl/battle_ui/overlay_hp_label_boss_tl.png b/public/images/ui/text_images/tl/battle_ui/overlay_hp_label_boss_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tl/battle_ui/overlay_hp_label_tl.png b/public/images/ui/text_images/tl/battle_ui/overlay_hp_label_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..38a3476138190b4674143ff0cff9c670388ee965 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj>3?$dd>30Gto&cW^*Z=?jD=I2l{;%fSq%YjO zE&wRbSQ6wH%;50sMjDW#=;`7ZQW2Ldz{!)Ea3W^gtwzP{n>rGVPneD_Gh#@Um0&pR W$aOaPsFgHOF@vY8pUXO@geCx;=_1Mi literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tl/battle_ui/overlay_lv_tl.png b/public/images/ui/text_images/tl/battle_ui/overlay_lv_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad4312d561bd3e159ba3d76a939101c2ad54002 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+A7LQBm>#|Nl*;Z96{w z&j<1uOM?7@862M7NCR?YJzX3_D&mqk5)(Xth&R#0JJI9+sR@>o6-`7K^meei?ATfH Q6sVBF)78&qol`;+07EY#-2eap literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tl/battle_ui/pbinfo_stat_tl.json b/public/images/ui/text_images/tl/battle_ui/pbinfo_stat_tl.json new file mode 100644 index 00000000000..d2277c79f24 --- /dev/null +++ b/public/images/ui/text_images/tl/battle_ui/pbinfo_stat_tl.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_tl.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 7 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 7 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 7 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 9, + "h": 7 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 7 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/tl/battle_ui/pbinfo_stat_tl.png b/public/images/ui/text_images/tl/battle_ui/pbinfo_stat_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..9656c5f04b96333ab6e6c721419dccf1d16d415c GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!K#0(^Z)Q_+(JhFpgn1YDN~`X@;4>FUkXP4V3Ngl%Kt948a^ zlbS9;Z)EQz-Och4Eow@==~R%@)GEKMg8BbP$M;)O*8X31Me4zh`9imR&G%fIl9Zo& zIp{90;#~LH#&@?ha2>uYp0kQ;Z~FU_F=wW8*cx9HlM-!y-@Py_tK{9=d24q{Ep*s; z{!W+ks)u?WVa^3&{ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tl/party_ui/party_slot_overlay_hp_tl.png b/public/images/ui/text_images/tl/party_ui/party_slot_overlay_hp_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..9be90b5c6bb6247d67c12aea99e7edaa4679e131 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^S0HU@X!zsDkAi}NMLq{C zfPBW1AirP+hi5m^fE-0n7srr_xMTrNp45aBG23o6DrVo*QD97A+!-v{AjHSR(3QmT UxHrOS4^T0Kr>mdKI;Vst083IKvH$=8 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tl/party_ui/party_slot_overlay_lv_tl.png b/public/images/ui/text_images/tl/party_ui/party_slot_overlay_lv_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..122d3f7151cdeab41b5c0c4d8ebb20efa9bb7ccf GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^S0F7QATVpvtk0i6zt(j* z2IMoA1o;IsI6S+N2IRPiAtGI+ZBxvX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tr/battle_ui/overlay_exp_label_tr.png b/public/images/ui/text_images/tr/battle_ui/overlay_exp_label_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..0920a95fba26347b0a38107833f4efcf8e4e6f06 GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj=ZOfV@O3@G6ySD+nUJJVMZ>lv9nJph_a@1HXV7uz;NUR W$GmU-FOL9~GI+ZBxvX*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tr/battle_ui/overlay_hp_label_tr.png b/public/images/ui/text_images/tr/battle_ui/overlay_hp_label_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..e28aceaf0fa69a3d89f609941474a722c76c5fb3 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj<3?vofZfOE3{s5m4*Z=?jD}n*vCVk8Q)!M6h zwSiJhB|(0{3=CzH&sqR^`kpS1Ar*1S0zpAcN^ESY;^Ly>>8xy`;;N$R;;ahyC4ID4 lIvjPZQDxgu#mdIU@WO@t_kueG=Yd)oJYD@<);T3K0RYu;BP;*_ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tr/battle_ui/overlay_lv_tr.png b/public/images/ui/text_images/tr/battle_ui/overlay_lv_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..5140444ec158a0bedc28aa6b11d4f6f835515004 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+G+(JhFpgn1YDN~`X@;4>FUkXP4V3Ngl%Kt948a^ zlbS9;Z)EQz-Och4Eow@==~R%@)GEKMg8BbP$M;)O*8X31Me4zh`9imR&G%fIl9Zo& zIp{90;#~LH#&@?ha2>uYp0kQ;Z~FU_F=wW8*cx9HlM-!y-@Py_tK{9=d24q{Ep*s; z{!W+ks)u?WVa^3&{ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tr/party_ui/party_slot_overlay_hp_tr.png b/public/images/ui/text_images/tr/party_ui/party_slot_overlay_hp_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..bb0017bcb582c6c4ccc1d87a9493bb4d53076d8e GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML%3?yGMarOWyp#Yx{S0HU*U|?uy_~XZqf`S4d zySQM{aiAzuNswPK14G&5vlc*}zNd?0NJU(-057j-P*73=hoKptnOR^0hZ!fYnNe5* o2XEttMwbnO0dhmdKI;Vst09^bfYXATM literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/tr/party_ui/party_slot_overlay_lv_tr.png b/public/images/ui/text_images/tr/party_ui/party_slot_overlay_lv_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..12782430b9e2f39a3010f74cc17dde19d661ed9d GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^*Z=?jD<~)c$)?ga4#TT= zf#QrML4Lsu4$p3+0XYhuE{-7;amfh@2^^&fD~b|4cvDx*J1OvOx}tTjqKOED)lb$p UN4@5K0;*;3boFyt=akR{07v;IsQ>@~ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-CN/battle_ui/overlay_exp_label_zh-CN.png b/public/images/ui/text_images/zh-CN/battle_ui/overlay_exp_label_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..fde37213effdba1b333d1473a6b50afb1c49ad79 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj)JF)V@O3@G6yd&Z{mqrUvpHQ%WiC$s&Fl2LIeY|3 XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-CN/battle_ui/overlay_hp_label_boss_zh-CN.png b/public/images/ui/text_images/zh-CN/battle_ui/overlay_hp_label_boss_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-CN/battle_ui/overlay_hp_label_zh-CN.png b/public/images/ui/text_images/zh-CN/battle_ui/overlay_hp_label_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..38a3476138190b4674143ff0cff9c670388ee965 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj>3?$dd>30Gto&cW^*Z=?jD=I2l{;%fSq%YjO zE&wRbSQ6wH%;50sMjDW#=;`7ZQW2Ldz{!)Ea3W^gtwzP{n>rGVPneD_Gh#@Um0&pR W$aOaPsFgHOF@vY8pUXO@geCx;=_1Mi literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-CN/battle_ui/overlay_lv_zh-CN.png b/public/images/ui/text_images/zh-CN/battle_ui/overlay_lv_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad4312d561bd3e159ba3d76a939101c2ad54002 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+A7LQBm>#|Nl*;Z96{w z&j<1uOM?7@862M7NCR?YJzX3_D&mqk5)(Xth&R#0JJI9+sR@>o6-`7K^meei?ATfH Q6sVBF)78&qol`;+07EY#-2eap literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.json b/public/images/ui/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.json new file mode 100644 index 00000000000..22a1da0b536 --- /dev/null +++ b/public/images/ui/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_zh-CN.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 7 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 7 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 7 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 9, + "h": 7 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 7 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.png b/public/images/ui/text_images/zh-CN/battle_ui/pbinfo_stat_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..9656c5f04b96333ab6e6c721419dccf1d16d415c GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!K#0(^Z)Q_+(JhFpgn1YDN~`X@;4>FUkXP4V3Ngl%Kt948a^ zlbS9;Z)EQz-Och4Eow@==~R%@)GEKMg8BbP$M;)O*8X31Me4zh`9imR&G%fIl9Zo& zIp{90;#~LH#&@?ha2>uYp0kQ;Z~FU_F=wW8*cx9HlM-!y-@Py_tK{9=d24q{Ep*s; z{!W+ks)u?WVa^3&{ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-CN/party_ui/party_slot_overlay_hp_zh-CN.png b/public/images/ui/text_images/zh-CN/party_ui/party_slot_overlay_hp_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..9be90b5c6bb6247d67c12aea99e7edaa4679e131 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^S0HU@X!zsDkAi}NMLq{C zfPBW1AirP+hi5m^fE-0n7srr_xMTrNp45aBG23o6DrVo*QD97A+!-v{AjHSR(3QmT UxHrOS4^T0Kr>mdKI;Vst083IKvH$=8 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-CN/party_ui/party_slot_overlay_lv_zh-CN.png b/public/images/ui/text_images/zh-CN/party_ui/party_slot_overlay_lv_zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..122d3f7151cdeab41b5c0c4d8ebb20efa9bb7ccf GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^S0F7QATVpvtk0i6zt(j* z2IMoA1o;IsI6S+N2IRPiAtGI+ZBxvX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-TW/battle_ui/overlay_exp_label_zh-TW.png b/public/images/ui/text_images/zh-TW/battle_ui/overlay_exp_label_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..fde37213effdba1b333d1473a6b50afb1c49ad79 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p#0(^B{8TRjDV_kI5ZC|z|0^mgGVJ=yP&rF* z^3@QaIAckWUoeBivm0qZj)JF)V@O3@G6yd&Z{mqrUvpHQ%WiC$s&Fl2LIeY|3 XMVwo=-0qVDs%7wW^>bP0l+XkKy&fbu literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-TW/battle_ui/overlay_hp_label_boss_zh-TW.png b/public/images/ui/text_images/zh-TW/battle_ui/overlay_hp_label_boss_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec679e05ec0550ddedd3d24c8bff2c7c78b12 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC#0(@0dH0+HQak}ZA+G=b|Nk7LrKqU5+fcU3 zMt(g|oUtUxFPOpM*^M+H$IR2kF{C0cxq)%5>*|J%#>A}BAJ<-7U~9`X4qm?YOjg2- usF}OATFIP=7u~vrQN@0%(H_QSatxDH#8WrgwnqR>VDNPHb6Mw<&;$S(1TUBX literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-TW/battle_ui/overlay_hp_label_zh-TW.png b/public/images/ui/text_images/zh-TW/battle_ui/overlay_hp_label_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..38a3476138190b4674143ff0cff9c670388ee965 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mj>3?$dd>30Gto&cW^*Z=?jD=I2l{;%fSq%YjO zE&wRbSQ6wH%;50sMjDW#=;`7ZQW2Ldz{!)Ea3W^gtwzP{n>rGVPneD_Gh#@Um0&pR W$aOaPsFgHOF@vY8pUXO@geCx;=_1Mi literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-TW/battle_ui/overlay_lv_zh-TW.png b/public/images/ui/text_images/zh-TW/battle_ui/overlay_lv_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad4312d561bd3e159ba3d76a939101c2ad54002 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@#0(@o%%7YEQak}ZA+A7LQBm>#|Nl*;Z96{w z&j<1uOM?7@862M7NCR?YJzX3_D&mqk5)(Xth&R#0JJI9+sR@>o6-`7K^meei?ATfH Q6sVBF)78&qol`;+07EY#-2eap literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.json b/public/images/ui/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.json new file mode 100644 index 00000000000..26c01d8bcc2 --- /dev/null +++ b/public/images/ui/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.json @@ -0,0 +1,209 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_zh-TW.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 7 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 7 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 7 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "HP", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 9, + "h": 7 + }, + "frame": { + "x": 120, + "y": 0, + "w": 9, + "h": 7 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.png b/public/images/ui/text_images/zh-TW/battle_ui/pbinfo_stat_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..9656c5f04b96333ab6e6c721419dccf1d16d415c GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^jX=!K#0(^Z)Q_+(JhFpgn1YDN~`X@;4>FUkXP4V3Ngl%Kt948a^ zlbS9;Z)EQz-Och4Eow@==~R%@)GEKMg8BbP$M;)O*8X31Me4zh`9imR&G%fIl9Zo& zIp{90;#~LH#&@?ha2>uYp0kQ;Z~FU_F=wW8*cx9HlM-!y-@Py_tK{9=d24q{Ep*s; z{!W+ks)u?WVa^3&{ literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-TW/party_ui/party_slot_overlay_hp_zh-TW.png b/public/images/ui/text_images/zh-TW/party_ui/party_slot_overlay_hp_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..9be90b5c6bb6247d67c12aea99e7edaa4679e131 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp@K+ML(3?x&X{^$THo&cW^S0HU@X!zsDkAi}NMLq{C zfPBW1AirP+hi5m^fE-0n7srr_xMTrNp45aBG23o6DrVo*QD97A+!-v{AjHSR(3QmT UxHrOS4^T0Kr>mdKI;Vst083IKvH$=8 literal 0 HcmV?d00001 diff --git a/public/images/ui/text_images/zh-TW/party_ui/party_slot_overlay_lv_zh-TW.png b/public/images/ui/text_images/zh-TW/party_ui/party_slot_overlay_lv_zh-TW.png new file mode 100644 index 0000000000000000000000000000000000000000..122d3f7151cdeab41b5c0c4d8ebb20efa9bb7ccf GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^S0F7QATVpvtk0i6zt(j* z2IMoA1o;IsI6S+N2IRPiAtGI+ZBxvX literal 0 HcmV?d00001 diff --git a/src/loading-scene.ts b/src/loading-scene.ts index e1b658f578a..232c2abca29 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -60,9 +60,7 @@ export class LoadingScene extends SceneBase { this.loadAtlas("pbinfo_enemy_type", "ui"); this.loadAtlas("pbinfo_enemy_type1", "ui"); this.loadAtlas("pbinfo_enemy_type2", "ui"); - this.loadAtlas("pbinfo_stat", "ui"); this.loadAtlas("pbinfo_stat_numbers", "ui"); - this.loadImage("overlay_lv", "ui"); this.loadAtlas("numbers", "ui"); this.loadAtlas("numbers_red", "ui"); this.loadAtlas("overlay_hp", "ui"); @@ -125,7 +123,6 @@ export class LoadingScene extends SceneBase { this.loadAtlas("party_slot_main", "ui"); this.loadAtlas("party_slot_main_short", "ui"); this.loadAtlas("party_slot", "ui"); - this.loadImage("party_slot_overlay_lv", "ui"); this.loadImage("party_slot_hp_bar", "ui"); this.loadAtlas("party_slot_hp_overlay", "ui"); this.loadAtlas("party_pb", "ui"); @@ -309,6 +306,34 @@ export class LoadingScene extends SceneBase { `text_images/${lang}/summary/summary_moves_effect_title${keySuffix}.png`, ); // Pixel text 'EFFECT' + this.loadAtlas(`pbinfo_stat${keySuffix}`, "ui", `text_images/${lang}/battle_ui/pbinfo_stat${keySuffix}`); // Pixel text for in-battle stats info tab + this.loadImage(`overlay_lv${keySuffix}`, "ui", `text_images/${lang}/battle_ui/overlay_lv${keySuffix}.png`); // Pixel text in-battle 'Lv.' + this.loadImage( + `overlay_hp_label${keySuffix}`, + "ui", + `text_images/${lang}/battle_ui/overlay_hp_label${keySuffix}.png`, + ); // Pixel text in-battle 'HP' + this.loadImage( + `overlay_hp_label_boss${keySuffix}`, + "ui", + `text_images/${lang}/battle_ui/overlay_hp_label_boss${keySuffix}.png`, + ); // Pixel text in-battle 'BOSS' + this.loadImage( + `overlay_exp_label${keySuffix}`, + "ui", + `text_images/${lang}/battle_ui/overlay_exp_label${keySuffix}.png`, + ); // Pixel text in-battle 'EXP' + this.loadImage( + `party_slot_overlay_lv${keySuffix}`, + "ui", + `text_images/${lang}/party_ui/party_slot_overlay_lv${keySuffix}.png`, + ); // Pixel text party 'Lv.' + this.loadImage( + `party_slot_overlay_hp${keySuffix}`, + "ui", + `text_images/${lang}/party_ui/party_slot_overlay_hp${keySuffix}.png`, + ); // Pixel text party 'HP' + if (timedEventManager.activeEventHasBanner()) { const availableLangs = timedEventManager.getEventBannerLangs(); if (lang && availableLangs.includes(lang)) { diff --git a/src/ui/battle-info/battle-info.ts b/src/ui/battle-info/battle-info.ts index 4d2cf597ed2..2a502148bc5 100644 --- a/src/ui/battle-info/battle-info.ts +++ b/src/ui/battle-info/battle-info.ts @@ -72,6 +72,7 @@ export abstract class BattleInfo extends Phaser.GameObjects.Container { protected splicedIcon: Phaser.GameObjects.Sprite; protected statusIndicator: Phaser.GameObjects.Sprite; protected levelContainer: Phaser.GameObjects.Container; + protected hpLabel: Phaser.GameObjects.Image; protected hpBar: Phaser.GameObjects.Image; protected levelNumbersContainer: Phaser.GameObjects.Container; protected type1Icon: Phaser.GameObjects.Sprite; @@ -178,7 +179,7 @@ export abstract class BattleInfo extends Phaser.GameObjects.Container { } const statLabel = globalScene.add - .sprite(statX, statY, "pbinfo_stat", Stat[s]) + .sprite(statX, statY, getLocalizedSpriteKey("pbinfo_stat"), Stat[s]) .setName("icon_stat_label_" + i.toString()) .setOrigin(0); statLabels.push(statLabel); @@ -259,12 +260,17 @@ export abstract class BattleInfo extends Phaser.GameObjects.Container { .setName("container_level"); this.add(this.levelContainer); - const levelOverlay = globalScene.add.image(0, 0, "overlay_lv"); + const levelOverlay = globalScene.add.image(5.5, 0, getLocalizedSpriteKey("overlay_lv")).setOrigin(1, 0.5); this.levelContainer.add(levelOverlay); this.hpBar = globalScene.add.image(posParams.hpBarX, posParams.hpBarY, "overlay_hp").setName("hp_bar").setOrigin(0); this.add(this.hpBar); + this.hpLabel = globalScene.add + .image(posParams.hpBarX - 1, posParams.hpBarY - 3, getLocalizedSpriteKey("overlay_hp_label")) + .setOrigin(1, 0); + this.add(this.hpLabel); + this.levelNumbersContainer = globalScene.add .container(9.5, globalScene.uiTheme === UiTheme.LEGACY ? 0 : -0.5) .setName("container_level"); diff --git a/src/ui/battle-info/enemy-battle-info.ts b/src/ui/battle-info/enemy-battle-info.ts index 0feb314a2e7..a48948e9617 100644 --- a/src/ui/battle-info/enemy-battle-info.ts +++ b/src/ui/battle-info/enemy-battle-info.ts @@ -8,6 +8,7 @@ import type { BattleInfoParamList } from "#ui/battle-info"; import { BattleInfo } from "#ui/battle-info"; import { addTextObject } from "#ui/text"; import { addWindow, WindowVariant } from "#ui/ui-theme"; +import { getLocalizedSpriteKey } from "#utils/common"; import i18next from "i18next"; import type { GameObjects } from "phaser"; @@ -189,6 +190,9 @@ export class EnemyBattleInfo extends BattleInfo { this.hpBar.x += 38 * (boss ? -1 : 1); this.hpBar.y += 2 * (this.boss ? -1 : 1); this.hpBar.setTexture(`overlay_hp${boss ? "_boss" : ""}`); + this.hpLabel.x += 38 * (boss ? -1 : 1); + this.hpLabel.y += 1 * (this.boss ? -1 : 1); + this.hpLabel.setTexture(getLocalizedSpriteKey(`overlay_hp_label${boss ? "_boss" : ""}`)); this.levelContainer.x += 2 * (boss ? -1 : 1); this.box.setTexture(this.getTextureName()); this.statsBox.setTexture(`${this.getTextureName()}_stats`); diff --git a/src/ui/battle-info/player-battle-info.ts b/src/ui/battle-info/player-battle-info.ts index f0b50748154..5a23eab2071 100644 --- a/src/ui/battle-info/player-battle-info.ts +++ b/src/ui/battle-info/player-battle-info.ts @@ -5,10 +5,12 @@ import { Stat } from "#enums/stat"; import type { PlayerPokemon } from "#field/pokemon"; import type { BattleInfoParamList } from "#ui/battle-info"; import { BattleInfo } from "#ui/battle-info"; +import { getLocalizedSpriteKey } from "#utils/common"; export class PlayerBattleInfo extends BattleInfo { protected player: true = true; protected hpNumbersContainer: Phaser.GameObjects.Container; + protected expBarLabel: Phaser.GameObjects.Image; override get statOrder(): Stat[] { return [Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.ACC, Stat.EVA, Stat.SPD]; @@ -46,6 +48,12 @@ export class PlayerBattleInfo extends BattleInfo { // hp number container must be beneath the stat container for overlay to display properly this.addAt(this.hpNumbersContainer, this.getIndex(this.statsContainer)); + const expBarLabel = globalScene.add + .image(-91, 20, getLocalizedSpriteKey("overlay_exp_label")) + .setName("overlay_exp_label") + .setOrigin(1, 1); + this.add(expBarLabel); + const expBar = globalScene.add.image(-98, 18, "overlay_exp").setName("overlay_exp").setOrigin(0); this.add(expBar); @@ -60,6 +68,7 @@ export class PlayerBattleInfo extends BattleInfo { expBar.setMask(expMask); + this.expBarLabel = expBarLabel; this.expBar = expBar; this.expMaskRect = expMaskRect; } @@ -108,7 +117,7 @@ export class PlayerBattleInfo extends BattleInfo { this.statValuesContainer.x += 2 * (mini ? 1 : -1); this.statValuesContainer.y += -7 * (mini ? 1 : -1); - const toggledElements = [this.hpNumbersContainer, this.expBar]; + const toggledElements = [this.hpNumbersContainer, this.expBarLabel, this.expBar]; toggledElements.forEach(el => el.setVisible(!mini)); } diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index b77710d8140..9fc777809bf 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -631,6 +631,7 @@ export class PartyUiHandler extends MessageUiHandler { // this else relates to the transfer pokemon. We set the text to be blank so there's no "Able"/"Not able" text ableToTransferText = ""; } + partySlot.slotHpLabel.setVisible(false); partySlot.slotHpBar.setVisible(false); partySlot.slotHpOverlay.setVisible(false); partySlot.slotHpText.setVisible(false); @@ -1738,6 +1739,7 @@ export class PartyUiHandler extends MessageUiHandler { this.partySlots[this.transferCursor].setTransfer(false); for (let i = 0; i < this.partySlots.length; i++) { this.partySlots[i].slotDescriptionLabel.setVisible(false); + this.partySlots[i].slotHpLabel.setVisible(true); this.partySlots[i].slotHpBar.setVisible(true); this.partySlots[i].slotHpOverlay.setVisible(true); this.partySlots[i].slotHpText.setVisible(true); @@ -1890,6 +1892,7 @@ class PartySlot extends Phaser.GameObjects.Container { private slotBg: Phaser.GameObjects.Image; private slotPb: Phaser.GameObjects.Sprite; public slotName: Phaser.GameObjects.Text; + public slotHpLabel: Phaser.GameObjects.Image; public slotHpBar: Phaser.GameObjects.Image; public slotHpOverlay: Phaser.GameObjects.Sprite; public slotHpText: Phaser.GameObjects.Text; @@ -2042,7 +2045,7 @@ class PartySlot extends Phaser.GameObjects.Container { this.slotName.setOrigin(0); const slotLevelLabel = globalScene.add - .image(0, 0, "party_slot_overlay_lv") + .image(0, 0, getLocalizedSpriteKey("party_slot_overlay_lv")) .setPositionRelative(this.slotBg, levelLabelPosition.x, levelLabelPosition.y) .setOrigin(0); @@ -2104,6 +2107,12 @@ class PartySlot extends Phaser.GameObjects.Container { } } + this.slotHpLabel = globalScene.add + .image(0, 0, getLocalizedSpriteKey("party_slot_overlay_hp")) + .setOrigin(1, 0) + .setVisible(false) + .setPositionRelative(this.slotBg, hpBarPosition.x + 15, hpBarPosition.y); + this.slotHpBar = globalScene.add .image(0, 0, "party_slot_hp_bar") .setOrigin(0) @@ -2133,14 +2142,22 @@ class PartySlot extends Phaser.GameObjects.Container { .setVisible(false) .setPositionRelative(this.slotBg, descriptionLabelPosition.x, descriptionLabelPosition.y); - slotInfoContainer.add([this.slotHpBar, this.slotHpOverlay, this.slotHpText, this.slotDescriptionLabel]); + slotInfoContainer.add([ + this.slotHpLabel, + this.slotHpBar, + this.slotHpOverlay, + this.slotHpText, + this.slotDescriptionLabel, + ]); if (partyUiMode !== PartyUiMode.TM_MODIFIER) { this.slotDescriptionLabel.setVisible(false); + this.slotHpLabel.setVisible(true); this.slotHpBar.setVisible(true); this.slotHpOverlay.setVisible(true); this.slotHpText.setVisible(true); } else { + this.slotHpLabel.setVisible(false); this.slotHpBar.setVisible(false); this.slotHpOverlay.setVisible(false); this.slotHpText.setVisible(false); From 7001f78beb154767e07d09ef960139a4249ca806 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sat, 6 Sep 2025 02:45:28 -0700 Subject: [PATCH 07/32] [i18n] Update locales submodule --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 2686cd3edc0..090bfefaf7e 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 2686cd3edc0bd2c7a7f12cc54c00c109e51a48d7 +Subproject commit 090bfefaf7e9d4efcbca61fa78a9cdf5d701830b From d18f77bea95c7c1d70f91d0367021e30152544bf Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sat, 6 Sep 2025 11:25:09 -0400 Subject: [PATCH 08/32] [Misc] [Docs] Update README.md svg to actually go to discord (#6501) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf70b5d9335..d381b8f47f5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ PokéRogue -![Discord Static Badge](https://img.shields.io/badge/Community_Discord-blurple?style=flat&logo=discord&logoSize=auto&labelColor=white&color=5865F2&link=https://discord.gg/pokerogue) +[![Discord Static Badge](https://img.shields.io/badge/Community_Discord-blurple?style=flat&logo=discord&logoSize=auto&labelColor=white&color=5865F2)](https://discord.gg/pokerogue) [![Docs Coverage Static Badge](https://pagefaultgames.github.io/pokerogue/beta/coverage.svg)](https://pagefaultgames.github.io/pokerogue/beta) [![Testing Badge](https://github.com/pagefaultgames/pokerogue/actions/workflows/tests.yml/badge.svg)](https://github.com/pagefaultgames/pokerogue/actions/workflows/tests.yml) [![License: GNU AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) From 21aa40e46a4995cf80e9185bcef70716b300b426 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sat, 6 Sep 2025 11:39:09 -0400 Subject: [PATCH 09/32] [GitHub] [Docs] Update github-pages.yml to add the files into the right subdirectory (#6500) --- .github/workflows/github-pages.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index b7b1aad5ae7..4148b4e9db0 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -77,9 +77,7 @@ jobs: cd pokerogue_gh git config user.email "github-actions[bot]@users.noreply.github.com" git config user.name "github-actions[bot]" - mkdir -p $GITHUB_REF_NAME - rm -rf $GITHUB_REF_NAME/* - cp -r /tmp/docs $GITHUB_REF_NAME + mv -f /tmp/docs $GITHUB_REF_NAME git add $GITHUB_REF_NAME git commit -m "[skip ci] Deploy docs" git push From 550f3b896e867646faa4bb2eac3371a2c6f2938f Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sat, 6 Sep 2025 10:58:03 -0500 Subject: [PATCH 10/32] [GitHub] [Docs] Copy entirety of docs folder --- .github/workflows/github-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index 4148b4e9db0..57140f3c4fb 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -77,7 +77,7 @@ jobs: cd pokerogue_gh git config user.email "github-actions[bot]@users.noreply.github.com" git config user.name "github-actions[bot]" - mv -f /tmp/docs $GITHUB_REF_NAME + mv -f /tmp/docs/* $GITHUB_REF_NAME git add $GITHUB_REF_NAME git commit -m "[skip ci] Deploy docs" git push From f29bfa31cda2a111904580c18c1189c25c37b346 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sat, 6 Sep 2025 11:16:31 -0500 Subject: [PATCH 11/32] [GitHub] [Docs] Use `rsync` in workflow run --- .github/workflows/github-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index 57140f3c4fb..6e056bc4032 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -77,7 +77,7 @@ jobs: cd pokerogue_gh git config user.email "github-actions[bot]@users.noreply.github.com" git config user.name "github-actions[bot]" - mv -f /tmp/docs/* $GITHUB_REF_NAME + rsync -rd --delete /tmp/docs/ $GITHUB_REF_NAME git add $GITHUB_REF_NAME git commit -m "[skip ci] Deploy docs" git push From b5124ae3ce8297a49fab42f4318fb1c3c9c77970 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sat, 6 Sep 2025 18:43:26 -0400 Subject: [PATCH 12/32] [Misc/Docs] Fix Typedoc workflow to not break the "go to main" link (#6502) * Fixed missing `img src=` --- typedoc-plugins/typedoc-plugin-rename-svg.js | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/typedoc-plugins/typedoc-plugin-rename-svg.js b/typedoc-plugins/typedoc-plugin-rename-svg.js index 5fda4ee3c6d..307206d6006 100644 --- a/typedoc-plugins/typedoc-plugin-rename-svg.js +++ b/typedoc-plugins/typedoc-plugin-rename-svg.js @@ -19,15 +19,10 @@ export function load(app) { app.renderer.on(Renderer.EVENT_END_PAGE, page => { if (page.pageKind === PageKind.Index && page.contents) { page.contents = page.contents - // Replace links to the beta documentation site with the current ref name + // Replace the SVG to the beta documentation site with the current ref name .replace( - /href="(.*pagefaultgames.github.io\/pokerogue\/).*?"/, // formatting - `href="$1/${process.env.REF_NAME}"`, - ) - // Replace the link to Beta's coverage SVG with the SVG file for the branch in question. - .replace( - /img src=".*?coverage.svg/, // formatting - `img src="coverage.svg"`, + /^ Date: Sun, 7 Sep 2025 08:16:43 +0900 Subject: [PATCH 13/32] [UI] Add cyclic navigation in settings menu for LEFT/RIGHT buttons (#6404) * feat: add cyclic navigation to settings menu * review > refactor: use Phaser.Math.Wrap instead the ternary operator --- .../abstract-control-settings-ui-handler.ts | 18 +++++++++++++---- .../settings/abstract-settings-ui-handler.ts | 20 +++++++++++-------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/ui/settings/abstract-control-settings-ui-handler.ts b/src/ui/settings/abstract-control-settings-ui-handler.ts index c08f1570b75..17812785d1e 100644 --- a/src/ui/settings/abstract-control-settings-ui-handler.ts +++ b/src/ui/settings/abstract-control-settings-ui-handler.ts @@ -544,8 +544,13 @@ export abstract class AbstractControlSettingsUiHandler extends UiHandler { } if (this.settingBlacklisted.includes(setting) || setting.includes("BUTTON_")) { success = false; - } else if (this.optionCursors[cursor]) { - success = this.setOptionCursor(cursor, this.optionCursors[cursor] - 1, true); + } else { + // Cycle to the rightmost position when at the leftmost, otherwise move left + success = this.setOptionCursor( + cursor, + Phaser.Math.Wrap(this.optionCursors[cursor] - 1, 0, this.optionValueLabels[cursor].length), + true, + ); } break; case Button.RIGHT: // Move selection right within the current option set. @@ -554,8 +559,13 @@ export abstract class AbstractControlSettingsUiHandler extends UiHandler { } if (this.settingBlacklisted.includes(setting) || setting.includes("BUTTON_")) { success = false; - } else if (this.optionCursors[cursor] < this.optionValueLabels[cursor].length - 1) { - success = this.setOptionCursor(cursor, this.optionCursors[cursor] + 1, true); + } else { + // Cycle to the leftmost position when at the rightmost, otherwise move right + success = this.setOptionCursor( + cursor, + Phaser.Math.Wrap(this.optionCursors[cursor] + 1, 0, this.optionValueLabels[cursor].length), + true, + ); } break; case Button.CYCLE_FORM: diff --git a/src/ui/settings/abstract-settings-ui-handler.ts b/src/ui/settings/abstract-settings-ui-handler.ts index ae1bb40dbeb..85e93bd8e2e 100644 --- a/src/ui/settings/abstract-settings-ui-handler.ts +++ b/src/ui/settings/abstract-settings-ui-handler.ts @@ -318,16 +318,20 @@ export class AbstractSettingsUiHandler extends MessageUiHandler { } break; case Button.LEFT: - if (this.optionCursors[cursor]) { - // Moves the option cursor left, if possible. - success = this.setOptionCursor(cursor, this.optionCursors[cursor] - 1, true); - } + // Cycle to the rightmost position when at the leftmost, otherwise move left + success = this.setOptionCursor( + cursor, + Phaser.Math.Wrap(this.optionCursors[cursor] - 1, 0, this.optionValueLabels[cursor].length), + true, + ); break; case Button.RIGHT: - // Moves the option cursor right, if possible. - if (this.optionCursors[cursor] < this.optionValueLabels[cursor].length - 1) { - success = this.setOptionCursor(cursor, this.optionCursors[cursor] + 1, true); - } + // Cycle to the leftmost position when at the rightmost, otherwise move right + success = this.setOptionCursor( + cursor, + Phaser.Math.Wrap(this.optionCursors[cursor] + 1, 0, this.optionValueLabels[cursor].length), + true, + ); break; case Button.CYCLE_FORM: case Button.CYCLE_SHINY: From 9815c5eebffca0e0c6016782d581c130cae47102 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sun, 7 Sep 2025 10:18:47 -0400 Subject: [PATCH 14/32] [Test] Revamped `MockConsoleLog` with color support (#6218) * Added mock console and fixed up many many things * Cleaned up handling of colors and such * Added minor comment * Fix Focus Punch test * Fix typo * Remove redundant comment * Update vitest.setup.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Added color map inside new folder * Made constants not object bc i was told to * Update src/constants/colors.ts * Removed all moves init check * Removed import * Fixed up some stuff + added aquamarine color to settings helper * Added logging for test end * Removed intentionally failing test * Fixed console log to use inheritance to not override vitest's wrapping * Added a custom Vitest reporter to not log the test name every 2 lines * Moved coloration to a hook to prevent misplacing things * Fixed import issue by copypasting vitest soure * Removed intentionally failing test look i need to check that `test:silent` works on github ok * Added REUSE annotations to copied parts of source * Fixed import issue --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- package.json | 1 + pnpm-lock.yaml | 3 + public/locales | 2 +- src/constants/colors.ts | 23 ++ src/phase-manager.ts | 2 +- src/phases/move-phase.ts | 6 +- test/abilities/cud-chew.test.ts | 2 +- test/moves/focus-punch.test.ts | 6 +- test/test-utils/game-wrapper.ts | 19 +- test/test-utils/helpers/overrides-helper.ts | 5 +- test/test-utils/helpers/settings-helper.ts | 4 +- test/test-utils/mocks/mock-console-log.ts | 80 ------- .../mocks/mock-console/color-map.json | 150 +++++++++++++ .../mocks/mock-console/infer-color.ts | 61 +++++ .../mocks/mock-console/mock-console.ts | 211 ++++++++++++++++++ .../mocks/mocks-container/mock-text.ts | 22 +- .../reporters/custom-default-reporter.ts | 62 +++++ test/test-utils/setup/test-end-log.ts | 113 ++++++++++ test/test-utils/test-file-initialization.ts | 25 ++- test/test-utils/text-interceptor.ts | 60 ++--- test/vitest.setup.ts | 36 ++- typedoc.config.js | 8 +- vitest.config.ts | 13 +- 23 files changed, 747 insertions(+), 167 deletions(-) create mode 100644 src/constants/colors.ts delete mode 100644 test/test-utils/mocks/mock-console-log.ts create mode 100644 test/test-utils/mocks/mock-console/color-map.json create mode 100644 test/test-utils/mocks/mock-console/infer-color.ts create mode 100644 test/test-utils/mocks/mock-console/mock-console.ts create mode 100644 test/test-utils/reporters/custom-default-reporter.ts create mode 100644 test/test-utils/setup/test-end-log.ts diff --git a/package.json b/package.json index 0620cf6a88c..f6097b8ccb9 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "@types/node": "^22.16.5", "@vitest/coverage-istanbul": "^3.2.4", "@vitest/expect": "^3.2.4", + "@vitest/utils": "^3.2.4", "chalk": "^5.4.1", "dependency-cruiser": "^16.10.4", "inquirer": "^12.8.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 089689818ac..be3e683f71c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,6 +63,9 @@ importers: '@vitest/expect': specifier: ^3.2.4 version: 3.2.4 + '@vitest/utils': + specifier: ^3.2.4 + version: 3.2.4 chalk: specifier: ^5.4.1 version: 5.4.1 diff --git a/public/locales b/public/locales index 2686cd3edc0..102cbdcd924 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 2686cd3edc0bd2c7a7f12cc54c00c109e51a48d7 +Subproject commit 102cbdcd924e2a7cdc7eab64d1ce79f6ec7604ff diff --git a/src/constants/colors.ts b/src/constants/colors.ts new file mode 100644 index 00000000000..e4d740addff --- /dev/null +++ b/src/constants/colors.ts @@ -0,0 +1,23 @@ +/** + * @module + * A big file storing colors used in logging. + * Minified by Terser during production builds, so has no overhead. + */ + +// Colors used in prod +export const PHASE_START_COLOR = "green" as const; +export const MOVE_COLOR = "RebeccaPurple" as const; + +// Colors used for testing code +export const NEW_TURN_COLOR = "#ffad00ff" as const; +export const UI_MSG_COLOR = "#009dffff" as const; +export const OVERRIDES_COLOR = "#b0b01eff" as const; +export const SETTINGS_COLOR = "#008844ff" as const; + +// Colors used for Vitest-related test utils +export const TEST_NAME_COLOR = "#008886ff" as const; +export const VITEST_PINK_COLOR = "#c162de" as const; + +// Mock console log stuff +export const TRACE_COLOR = "#b700ff" as const; +export const DEBUG_COLOR = "#874600ff" as const; diff --git a/src/phase-manager.ts b/src/phase-manager.ts index 281ac8bd671..68b7d74293b 100644 --- a/src/phase-manager.ts +++ b/src/phase-manager.ts @@ -392,7 +392,7 @@ export class PhaseManager { * Helper method to start and log the current phase. */ private startCurrentPhase(): void { - console.log(`%cStart Phase ${this.currentPhase.phaseName}`, "color:green;"); + console.log(`%cStart Phase ${this.currentPhase.phaseName}`, "color:${PHASE_START_COLOR};"); this.currentPhase.start(); } diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 9a8e509e302..6587597a0d9 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -1,4 +1,5 @@ import { applyAbAttrs } from "#abilities/apply-ab-attrs"; +import { MOVE_COLOR } from "#app/constants/colors"; import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; import Overrides from "#app/overrides"; @@ -118,7 +119,10 @@ export class MovePhase extends BattlePhase { public start(): void { super.start(); - console.log(MoveId[this.move.moveId], enumValueToKey(MoveUseMode, this.useMode)); + console.log( + `%cMove: ${MoveId[this.move.moveId]}\nUse Mode: ${enumValueToKey(MoveUseMode, this.useMode)}`, + `color:${MOVE_COLOR}`, + ); // Check if move is unusable (e.g. running out of PP due to a mid-turn Spite // or the user no longer being on field), ending the phase early if not. diff --git a/test/abilities/cud-chew.test.ts b/test/abilities/cud-chew.test.ts index f68141096eb..ae3b4ad8765 100644 --- a/test/abilities/cud-chew.test.ts +++ b/test/abilities/cud-chew.test.ts @@ -99,7 +99,7 @@ describe("Abilities - Cud Chew", () => { expect(abDisplaySpy.mock.calls[1][2]).toBe(false); // should display messgae - expect(game.textInterceptor.getLatestMessage()).toBe( + expect(game.textInterceptor.logs).toContain( i18next.t("battle:hpIsFull", { pokemonName: getPokemonNameWithAffix(farigiraf), }), diff --git a/test/moves/focus-punch.test.ts b/test/moves/focus-punch.test.ts index 9a76dbec0db..d7b40569aaa 100644 --- a/test/moves/focus-punch.test.ts +++ b/test/moves/focus-punch.test.ts @@ -9,7 +9,7 @@ import { TurnStartPhase } from "#phases/turn-start-phase"; import { GameManager } from "#test/test-utils/game-manager"; import i18next from "i18next"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Focus Punch", () => { let phaserGame: Phaser.Game; @@ -125,8 +125,8 @@ describe("Moves - Focus Punch", () => { game.move.select(MoveId.FOCUS_PUNCH); await game.phaseInterceptor.to("MoveEndPhase", true); await game.phaseInterceptor.to("MessagePhase", false); - const consoleSpy = vi.spyOn(console, "log"); await game.phaseInterceptor.to("MoveEndPhase", true); - expect(consoleSpy).nthCalledWith(1, i18next.t("moveTriggers:lostFocus", { pokemonName: "Charizard" })); + expect(game.textInterceptor.logs).toContain(i18next.t("moveTriggers:lostFocus", { pokemonName: "Charizard" })); + expect(game.textInterceptor.logs).not.toContain(i18next.t("battle:attackFailed")); }); }); diff --git a/test/test-utils/game-wrapper.ts b/test/test-utils/game-wrapper.ts index 1a906bf8492..d18ea9301ea 100644 --- a/test/test-utils/game-wrapper.ts +++ b/test/test-utils/game-wrapper.ts @@ -6,17 +6,13 @@ import * as bypassLoginModule from "#app/global-vars/bypass-login"; import { MoveAnim } from "#data/battle-anims"; import { Pokemon } from "#field/pokemon"; import { version } from "#package.json"; -import { blobToString } from "#test/test-utils/game-manager-utils"; import { MockClock } from "#test/test-utils/mocks/mock-clock"; -import { MockFetch } from "#test/test-utils/mocks/mock-fetch"; import { MockGameObjectCreator } from "#test/test-utils/mocks/mock-game-object-creator"; import { MockLoader } from "#test/test-utils/mocks/mock-loader"; import { MockTextureManager } from "#test/test-utils/mocks/mock-texture-manager"; import { MockTimedEventManager } from "#test/test-utils/mocks/mock-timed-event-manager"; import { MockContainer } from "#test/test-utils/mocks/mocks-container/mock-container"; import { PokedexMonContainer } from "#ui/pokedex-mon-container"; -import { sessionIdKey } from "#utils/common"; -import { setCookie } from "#utils/cookies"; import fs from "node:fs"; import Phaser from "phaser"; import { vi } from "vitest"; @@ -28,20 +24,6 @@ const GamepadPlugin = Phaser.Input.Gamepad.GamepadPlugin; const EventEmitter = Phaser.Events.EventEmitter; const UpdateList = Phaser.GameObjects.UpdateList; -window.URL.createObjectURL = (blob: Blob) => { - blobToString(blob).then((data: string) => { - localStorage.setItem("toExport", data); - }); - return null; -}; -navigator.getGamepads = () => []; -global.fetch = vi.fn(MockFetch); -setCookie(sessionIdKey, "fake_token"); - -window.matchMedia = () => ({ - matches: false, -}); - export class GameWrapper { public game: Phaser.Game; public scene: BattleScene; @@ -99,6 +81,7 @@ export class GameWrapper { removeAll: () => null, }; + // TODO: Can't we just turn on `noAudio` in audio config? this.scene.sound = { play: () => null, pause: () => null, diff --git a/test/test-utils/helpers/overrides-helper.ts b/test/test-utils/helpers/overrides-helper.ts index 93b89688935..07ea1ea3d09 100644 --- a/test/test-utils/helpers/overrides-helper.ts +++ b/test/test-utils/helpers/overrides-helper.ts @@ -1,7 +1,9 @@ /** biome-ignore-start lint/correctness/noUnusedImports: tsdoc imports */ import type { NewArenaEvent } from "#events/battle-scene"; + /** biome-ignore-end lint/correctness/noUnusedImports: tsdoc imports */ +import { OVERRIDES_COLOR } from "#app/constants/colors"; import type { BattleStyle, RandomTrainerOverride } from "#app/overrides"; import Overrides from "#app/overrides"; import { AbilityId } from "#enums/ability-id"; @@ -19,6 +21,7 @@ import type { ModifierOverride } from "#modifiers/modifier-type"; import type { Variant } from "#sprites/variant"; import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import { coerceArray, shiftCharCodes } from "#utils/common"; +import chalk from "chalk"; import { vi } from "vitest"; /** @@ -665,6 +668,6 @@ export class OverridesHelper extends GameManagerHelper { } private log(...params: any[]) { - console.log("Overrides:", ...params); + console.log(chalk.hex(OVERRIDES_COLOR)(...params)); } } diff --git a/test/test-utils/helpers/settings-helper.ts b/test/test-utils/helpers/settings-helper.ts index a26aa2de33c..46ac74b83dc 100644 --- a/test/test-utils/helpers/settings-helper.ts +++ b/test/test-utils/helpers/settings-helper.ts @@ -1,7 +1,9 @@ +import { SETTINGS_COLOR } from "#app/constants/colors"; import { BattleStyle } from "#enums/battle-style"; import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { PlayerGender } from "#enums/player-gender"; import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; +import chalk from "chalk"; /** * Helper to handle settings for tests @@ -49,6 +51,6 @@ export class SettingsHelper extends GameManagerHelper { } private log(...params: any[]) { - console.log("Settings:", ...params); + console.log(chalk.hex(SETTINGS_COLOR)(...params)); } } diff --git a/test/test-utils/mocks/mock-console-log.ts b/test/test-utils/mocks/mock-console-log.ts deleted file mode 100644 index f54d41fea3e..00000000000 --- a/test/test-utils/mocks/mock-console-log.ts +++ /dev/null @@ -1,80 +0,0 @@ -const originalLog = console.log; -const originalError = console.error; -const originalDebug = console.debug; -const originalWarn = console.warn; - -const blacklist = ["Phaser", "variant icon does not exist", 'Texture "%s" not found']; -const whitelist = ["Phase"]; - -export class MockConsoleLog { - constructor( - private logDisabled = false, - private phaseText = false, - ) {} - private logs: any[] = []; - private notified: any[] = []; - - public log(...args) { - const argsStr = this.getStr(args); - this.logs.push(argsStr); - if (this.logDisabled && !this.phaseText) { - return; - } - if ((this.phaseText && !whitelist.some(b => argsStr.includes(b))) || blacklist.some(b => argsStr.includes(b))) { - return; - } - originalLog(args); - } - public error(...args) { - const argsStr = this.getStr(args); - this.logs.push(argsStr); - originalError(args); // Appelle le console.error originel - } - public debug(...args) { - const argsStr = this.getStr(args); - this.logs.push(argsStr); - if (this.logDisabled && !this.phaseText) { - return; - } - if (!whitelist.some(b => argsStr.includes(b)) || blacklist.some(b => argsStr.includes(b))) { - return; - } - originalDebug(args); - } - warn(...args) { - const argsStr = this.getStr(args); - this.logs.push(args); - if (this.logDisabled && !this.phaseText) { - return; - } - if (!whitelist.some(b => argsStr.includes(b)) || blacklist.some(b => argsStr.includes(b))) { - return; - } - originalWarn(args); - } - notify(msg) { - originalLog(msg); - this.notified.push(msg); - } - getLogs() { - return this.logs; - } - clearLogs() { - this.logs = []; - } - getStr(...args) { - return args - .map(arg => { - if (typeof arg === "object" && arg !== null) { - // Handle objects including arrays - return JSON.stringify(arg, (_key, value) => (typeof value === "bigint" ? value.toString() : value)); - } - if (typeof arg === "bigint") { - // Handle BigInt values - return arg.toString(); - } - return arg.toString(); - }) - .join(";"); - } -} diff --git a/test/test-utils/mocks/mock-console/color-map.json b/test/test-utils/mocks/mock-console/color-map.json new file mode 100644 index 00000000000..ded83e889b0 --- /dev/null +++ b/test/test-utils/mocks/mock-console/color-map.json @@ -0,0 +1,150 @@ +{ + "AliceBlue": "f0f8ff", + "AntiqueWhite": "faebd7", + "Aqua": "00ffff", + "Aquamarine": "7fffd4", + "Azure": "f0ffff", + "Beige": "f5f5dc", + "Bisque": "ffe4c4", + "Black": "000000", + "BlanchedAlmond": "ffebcd", + "Blue": "0000ff", + "BlueViolet": "8a2be2", + "Brown": "a52a2a", + "BurlyWood": "deb887", + "CadetBlue": "5f9ea0", + "Chartreuse": "7fff00", + "Chocolate": "d2691e", + "Coral": "ff7f50", + "CornflowerBlue": "6495ed", + "Cornsilk": "fff8dc", + "Crimson": "dc143c", + "Cyan": "00ffff", + "DarkBlue": "00008b", + "DarkCyan": "008b8b", + "DarkGoldenRod": "b8860b", + "DarkGray": "a9a9a9", + "DarkGrey": "a9a9a9", + "DarkGreen": "006400", + "DarkKhaki": "bdb76b", + "DarkMagenta": "8b008b", + "DarkOliveGreen": "556b2f", + "DarkOrange": "ff8c00", + "DarkOrchid": "9932cc", + "DarkRed": "8b0000", + "DarkSalmon": "e9967a", + "DarkSeaGreen": "8fbc8f", + "DarkSlateBlue": "483d8b", + "DarkSlateGray": "2f4f4f", + "DarkSlateGrey": "2f4f4f", + "DarkTurquoise": "00ced1", + "DarkViolet": "9400d3", + "DeepPink": "ff1493", + "DeepSkyBlue": "00bfff", + "DimGray": "696969", + "DimGrey": "696969", + "DodgerBlue": "1e90ff", + "FireBrick": "b22222", + "FloralWhite": "fffaf0", + "ForestGreen": "228b22", + "Fuchsia": "ff00ff", + "Gainsboro": "dcdcdc", + "GhostWhite": "f8f8ff", + "Gold": "ffd700", + "GoldenRod": "daa520", + "Gray": "808080", + "Grey": "808080", + "Green": "008000", + "GreenYellow": "adff2f", + "HoneyDew": "f0fff0", + "HotPink": "ff69b4", + "IndianRed": "cd5c5c", + "Indigo": "4b0082", + "Ivory": "fffff0", + "Khaki": "f0e68c", + "Lavender": "e6e6fa", + "LavenderBlush": "fff0f5", + "LawnGreen": "7cfc00", + "LemonChiffon": "fffacd", + "LightBlue": "add8e6", + "LightCoral": "f08080", + "LightCyan": "e0ffff", + "LightGoldenRodYellow": "fafad2", + "LightGray": "d3d3d3", + "LightGrey": "d3d3d3", + "LightGreen": "90ee90", + "LightPink": "ffb6c1", + "LightSalmon": "ffa07a", + "LightSeaGreen": "20b2aa", + "LightSkyBlue": "87cefa", + "LightSlateGray": "778899", + "LightSlateGrey": "778899", + "LightSteelBlue": "b0c4de", + "LightYellow": "ffffe0", + "Lime": "00ff00", + "LimeGreen": "32cd32", + "Linen": "faf0e6", + "Magenta": "ff00ff", + "Maroon": "800000", + "MediumAquaMarine": "66cdaa", + "MediumBlue": "0000cd", + "MediumOrchid": "ba55d3", + "MediumPurple": "9370db", + "MediumSeaGreen": "3cb371", + "MediumSlateBlue": "7b68ee", + "MediumSpringGreen": "00fa9a", + "MediumTurquoise": "48d1cc", + "MediumVioletRed": "c71585", + "MidnightBlue": "191970", + "MintCream": "f5fffa", + "MistyRose": "ffe4e1", + "Moccasin": "ffe4b5", + "NavajoWhite": "ffdead", + "Navy": "000080", + "OldLace": "fdf5e6", + "Olive": "808000", + "OliveDrab": "6b8e23", + "Orange": "ffa500", + "OrangeRed": "ff4500", + "Orchid": "da70d6", + "PaleGoldenRod": "eee8aa", + "PaleGreen": "98fb98", + "PaleTurquoise": "afeeee", + "PaleVioletRed": "db7093", + "PapayaWhip": "ffefd5", + "PeachPuff": "ffdab9", + "Peru": "cd853f", + "Pink": "ffc0cb", + "Plum": "dda0dd", + "PowderBlue": "b0e0e6", + "Purple": "800080", + "RebeccaPurple": "663399", + "Red": "ff0000", + "RosyBrown": "bc8f8f", + "RoyalBlue": "4169e1", + "SaddleBrown": "8b4513", + "Salmon": "fa8072", + "SandyBrown": "f4a460", + "SeaGreen": "2e8b57", + "SeaShell": "fff5ee", + "Sienna": "a0522d", + "Silver": "c0c0c0", + "SkyBlue": "87ceeb", + "SlateBlue": "6a5acd", + "SlateGray": "708090", + "SlateGrey": "708090", + "Snow": "fffafa", + "SpringGreen": "00ff7f", + "SteelBlue": "4682b4", + "Tan": "d2b48c", + "Teal": "008080", + "Thistle": "d8bfd8", + "Tomato": "ff6347", + "Turquoise": "40e0d0", + "Violet": "ee82ee", + "Wheat": "f5deb3", + "White": "ffffff", + "WhiteSmoke": "f5f5f5", + "Yellow": "ffff00", + "YellowGreen": "9acd32" +} diff --git a/test/test-utils/mocks/mock-console/infer-color.ts b/test/test-utils/mocks/mock-console/infer-color.ts new file mode 100644 index 00000000000..e01adbc4ad4 --- /dev/null +++ b/test/test-utils/mocks/mock-console/infer-color.ts @@ -0,0 +1,61 @@ +import { hslToHex } from "#utils/common"; +import chalk, { type ChalkInstance, type ForegroundColorName, foregroundColorNames } from "chalk"; +import colorMap from "./color-map.json"; + +export function inferColorFormat(data: [string, ...unknown[]]): ChalkInstance { + // Remove all CSS format strings and find the first one containing something vaguely resembling a color + data[0] = data[0].replaceAll("%c", ""); + const args = data.slice(1).filter(t => typeof t === "string"); + const color = findColorPrefix(args); + + // If the color is within Chalk's native roster, use it directly. + if ((foregroundColorNames as string[]).includes(color)) { + return chalk[color as ForegroundColorName]; + } + + // Otherwise, coerce it to hex before feeding it in. + return getColor(color); +} + +/** + * Find the first string with a "color:" CSS directive in an argument list. + * @param args - The arguments containing the color directive + * @returns The found color, or `"green"` if none were found + */ +function findColorPrefix(args: string[]): string { + for (const arg of args) { + const match = /color:\s*(.+?)(?:;|$)/g.exec(arg); + if (match === null) { + continue; + } + + return match[1]; + } + return "green"; +} + +/** + * Coerce an arbitrary CSS color string to a Chalk instance. + * @param color - The color to coerce + * @returns The Chalk color equivalent. + */ +function getColor(color: string): ChalkInstance { + if (/^#([a-z0-9]{3,4}|[a-z0-9]{6}|[a-z0-9]{8})$/i.test(color)) { + // already in hex + return chalk.hex(color); + } + + const rgbMatch = /^rgba?\((\d{1,3})%?,\s*(\d{1,3})%?,?\s*(\d{1,3})%?,\s*/i.exec(color); + if (rgbMatch) { + const [red, green, blue] = rgbMatch; + return chalk.rgb(+red, +green, +blue); + } + + const hslMatch = /^hslv?\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%\)$/i.exec(color); + if (hslMatch) { + const [hue, saturation, light] = hslMatch; + return chalk.hex(hslToHex(+hue, +saturation / 100, +light / 100)); + } + + return chalk.hex(colorMap[color] ?? "#00ff95ff"); +} diff --git a/test/test-utils/mocks/mock-console/mock-console.ts b/test/test-utils/mocks/mock-console/mock-console.ts new file mode 100644 index 00000000000..52ed0af6aa7 --- /dev/null +++ b/test/test-utils/mocks/mock-console/mock-console.ts @@ -0,0 +1,211 @@ +import { DEBUG_COLOR, NEW_TURN_COLOR, TRACE_COLOR, UI_MSG_COLOR } from "#app/constants/colors"; +import { inferColorFormat } from "#test/test-utils/mocks/mock-console/infer-color"; +import { coerceArray } from "#utils/common"; +import { type InspectOptions, inspect } from "node:util"; +import chalk, { type ChalkInstance } from "chalk"; + +// Tell chalk we support truecolor +chalk.level = 3; + +// TODO: Review this +const blacklist = [ + "variant icon does not exist", // Repetitive warnings about icons not found + 'Texture "%s" not found', // Repetitive warnings about textures not found + "type: 'Pokemon',", // Large Pokemon objects + "gameVersion: ", // Large session-data and system-data objects + "Phaser v", // Phaser version text + "Seed:", // Stuff about wave seed (we should really stop logging this shit) + "Wave Seed:", // Stuff about wave seed (we should really stop logging this shit) +] as const; +const whitelist = ["Start Phase"] as const; + +const inspectOptions: InspectOptions = { sorted: true, breakLength: 120, numericSeparator: true }; + +/** + * The {@linkcode MockConsole} is a wrapper around the global {@linkcode console} object. + * It automatically colors text and such. + */ +export class MockConsole implements Omit { + /** + * A list of warnings that are queued to be displayed after all tests in the same file are finished. + */ + private static readonly queuedWarnings: unknown[][] = []; + /** + * The original `Console` object, preserved to avoid overwriting + * Vitest's native `console.log` wrapping. + */ + private console = console; + + //#region Static Properties + + /** + * Queue a warning to be printed after all tests in the same file are finished. + */ + // TODO: Add some warnings + public static queuePostTestWarning(...data: unknown[]): void { + MockConsole.queuedWarnings.push(data); + } + + /** + * Print and reset all post-test warnings. + */ + public static printPostTestWarnings(): void { + for (const data of MockConsole.queuedWarnings) { + console.warn(...data); + } + MockConsole.queuedWarnings.splice(0); + } + + //#endregion Private Properties + + //#region Utilities + + /** + * Check whether a given set of data is in the blacklist to be barred from logging. + * @param data - The data being logged + * @returns Whether `data` is blacklisted from console logging + */ + private checkBlacklist(data: unknown[]): boolean { + const dataStr = this.getStr(data); + return !whitelist.some(b => dataStr.includes(b)) && blacklist.some(b => dataStr.includes(b)); + } + + /** + * Returns a human-readable string representation of `data`. + */ + private getStr(data: unknown): string { + return inspect(data, inspectOptions); + } + + /** + * Stringify the given data in a manner fit for logging. + * @param color - A Chalk instance or other transformation function used to transform the output, + * or `undefined` to not transform it at all. + * @param data - The data that the format should be applied to. + * @returns A stringified copy of `data` with {@linkcode color} applied to each individual argument. + * @todo Do we need to apply color to each entry or just run it through `util.format`? + */ + private format(color: ((s: unknown) => unknown) | undefined, data: unknown | unknown[]): unknown[] { + data = coerceArray(data); + color ??= a => a; + return (data as unknown[]).map(a => color(typeof a === "function" || typeof a === "object" ? this.getStr(a) : a)); + } + + //#endregion Utilities + + //#region Custom wrappers + public info(...data: unknown[]) { + return this.log(...data); + } + + public trace(...data: unknown[]) { + if (this.checkBlacklist(data)) { + return; + } + + // TODO: Figure out how to add color to the full trace text + this.console.trace(...this.format(chalk.hex(TRACE_COLOR), data)); + } + + public debug(...data: unknown[]) { + if (this.checkBlacklist(data)) { + return; + } + + this.console.debug(...this.format(chalk.hex(DEBUG_COLOR), data)); + } + + public log(...data: unknown[]): void { + if (this.checkBlacklist(data)) { + return; + } + + let formatter: ChalkInstance | undefined; + + if (data.some(d => typeof d === "string" && d.includes("color:"))) { + // Infer the color format from the arguments, then remove everything but the message. + formatter = inferColorFormat(data as [string, ...unknown[]]); + data.splice(1); + } else if (data[0] === "[UI]") { + // Cyan for UI debug messages + formatter = chalk.hex(UI_MSG_COLOR); + } else if (typeof data[0] === "string" && data[0].startsWith("=====")) { + // Orange logging for "New Turn"/etc messages + formatter = chalk.hex(NEW_TURN_COLOR); + } + + this.console.log(...this.format(formatter, data)); + } + + public warn(...data: unknown[]) { + if (this.checkBlacklist(data)) { + return; + } + + this.console.warn(...this.format(chalk.yellow, data)); + } + + public error(...data: unknown[]) { + if (this.checkBlacklist(data)) { + return; + } + + this.console.error(...this.format(chalk.redBright, data)); + } + + //#endregion Custom Wrappers + + //#region Copy-pasted Console code + // TODO: Progressively add proper coloration and support for all these methods + public dir(...args: Parameters<(typeof console)["dir"]>): ReturnType<(typeof console)["dir"]> { + return this.console.dir(...args); + } + public dirxml(...args: Parameters<(typeof console)["dirxml"]>): ReturnType<(typeof console)["dirxml"]> { + return this.console.dirxml(...args); + } + public table(...args: Parameters<(typeof console)["table"]>): ReturnType<(typeof console)["table"]> { + return this.console.table(...args); + } + public group(...args: Parameters<(typeof console)["group"]>): ReturnType<(typeof console)["group"]> { + return this.console.group(...args); + } + public groupCollapsed( + ...args: Parameters<(typeof console)["groupCollapsed"]> + ): ReturnType<(typeof console)["groupCollapsed"]> { + return this.console.groupCollapsed(...args); + } + public groupEnd(...args: Parameters<(typeof console)["groupEnd"]>): ReturnType<(typeof console)["groupEnd"]> { + return this.console.groupEnd(...args); + } + public clear(...args: Parameters<(typeof console)["clear"]>): ReturnType<(typeof console)["clear"]> { + return this.console.clear(...args); + } + public count(...args: Parameters<(typeof console)["count"]>): ReturnType<(typeof console)["count"]> { + return this.console.count(...args); + } + public countReset(...args: Parameters<(typeof console)["countReset"]>): ReturnType<(typeof console)["countReset"]> { + return this.console.countReset(...args); + } + public assert(...args: Parameters<(typeof console)["assert"]>): ReturnType<(typeof console)["assert"]> { + return this.console.assert(...args); + } + public profile(...args: Parameters<(typeof console)["profile"]>): ReturnType<(typeof console)["profile"]> { + return this.console.profile(...args); + } + public profileEnd(...args: Parameters<(typeof console)["profileEnd"]>): ReturnType<(typeof console)["profileEnd"]> { + return this.console.profileEnd(...args); + } + public time(...args: Parameters<(typeof console)["time"]>): ReturnType<(typeof console)["time"]> { + return this.console.time(...args); + } + public timeLog(...args: Parameters<(typeof console)["timeLog"]>): ReturnType<(typeof console)["timeLog"]> { + return this.console.timeLog(...args); + } + public timeEnd(...args: Parameters<(typeof console)["timeEnd"]>): ReturnType<(typeof console)["timeEnd"]> { + return this.console.timeEnd(...args); + } + public timeStamp(...args: Parameters<(typeof console)["timeStamp"]>): ReturnType<(typeof console)["timeStamp"]> { + return this.console.timeStamp(...args); + } + //#endregion Copy-pasted Console code +} diff --git a/test/test-utils/mocks/mocks-container/mock-text.ts b/test/test-utils/mocks/mocks-container/mock-text.ts index ad2fce80972..a64aa45ef80 100644 --- a/test/test-utils/mocks/mocks-container/mock-text.ts +++ b/test/test-utils/mocks/mocks-container/mock-text.ts @@ -1,4 +1,5 @@ import type { MockGameObject } from "#test/test-utils/mocks/mock-game-object"; +import type { TextInterceptor } from "#test/test-utils/text-interceptor"; import { UI } from "#ui/ui"; export class MockText implements MockGameObject { @@ -82,13 +83,14 @@ export class MockText implements MockGameObject { showText( text: string, - delay?: number | null, + _delay?: number | null, callback?: Function | null, - callbackDelay?: number | null, - prompt?: boolean | null, - promptDelay?: number | null, + _callbackDelay?: number | null, + _prompt?: boolean | null, + _promptDelay?: number | null, ) { - this.scene.messageWrapper.showText(text, delay, callback, callbackDelay, prompt, promptDelay); + // TODO: this is a very bad way to pass calls around + (this.scene.messageWrapper as TextInterceptor).showText(text); if (callback) { callback(); } @@ -96,13 +98,13 @@ export class MockText implements MockGameObject { showDialogue( keyOrText: string, - name: string | undefined, - delay: number | null = 0, + name: string, + _delay: number | null, callback: Function, - callbackDelay?: number, - promptDelay?: number, + _callbackDelay?: number, + _promptDelay?: number, ) { - this.scene.messageWrapper.showDialogue(keyOrText, name, delay, callback, callbackDelay, promptDelay); + (this.scene.messageWrapper as TextInterceptor).showDialogue(keyOrText, name); if (callback) { callback(); } diff --git a/test/test-utils/reporters/custom-default-reporter.ts b/test/test-utils/reporters/custom-default-reporter.ts new file mode 100644 index 00000000000..15c4881b83c --- /dev/null +++ b/test/test-utils/reporters/custom-default-reporter.ts @@ -0,0 +1,62 @@ +import { relative } from "node:path"; +import { parseStacktrace } from "@vitest/utils/source-map"; +import chalk from "chalk"; +import type { UserConsoleLog } from "vitest"; +import type { TestState } from "vitest/node"; +import { DefaultReporter } from "vitest/reporters"; + +/** + * Custom Vitest reporter to strip the current file names from the output. + */ +export default class CustomDefaultReporter extends DefaultReporter { + public override onUserConsoleLog(log: UserConsoleLog, taskState?: TestState): void { + // This code is more or less copied verbatim from `vitest/reporters` source, with minor tweaks to use + // dependencies we actually _have_ (i.e. chalk) rather than ones we don't (i.e. tinyrainbow). + + // SPDX-SnippetBegin + // SPDX-SnippetCopyrightText: 2021 VoidZero Inc. and Vitest contributors + // SPDX-License-Identifier: MIT + + if (!super.shouldLog(log, taskState)) { + return; + } + + const output = log.type === "stdout" ? this.ctx.logger.outputStream : this.ctx.logger.errorStream; + + const write = (msg: string) => output.write(msg); + + const task = log.taskId ? this.ctx.state.idMap.get(log.taskId) : undefined; + + write(log.content); // this is about the only changed line (that and us skipping a newline) + + if (!log.origin) { + return; + } + + // Code for stack trace, ripped directly out of Vitest source code. + // I wish they had a helper function to do this so we didn't have to import `@vitest/utils`, but oh well... + // browser logs don't have an extra end of line at the end like Node.js does + if (log.browser) { + write("\n"); + } + + const project = task ? this.ctx.getProjectByName(task.file.projectName ?? "") : this.ctx.getRootProject(); + + const stack = log.browser ? (project.browser?.parseStacktrace(log.origin) ?? []) : parseStacktrace(log.origin); + + const highlight = task && stack.find(i => i.file === task.file.filepath); + + for (const frame of stack) { + const color = frame === highlight ? chalk.cyan : chalk.gray; + const path = relative(project.config.root, frame.file); + + const positions = [frame.method, `${path}:${chalk.dim(`${frame.line}:${frame.column}`)}`] + .filter(Boolean) + .join(" "); + + write(color(` ${chalk.dim(">")} ${positions}\n`)); + } + + // SPDX-SnippetEnd + } +} diff --git a/test/test-utils/setup/test-end-log.ts b/test/test-utils/setup/test-end-log.ts new file mode 100644 index 00000000000..9814ba8a45c --- /dev/null +++ b/test/test-utils/setup/test-end-log.ts @@ -0,0 +1,113 @@ +// biome-ignore lint/correctness/noUnusedImports: TSDoc +import type CustomDefaultReporter from "#test/test-utils/reporters/custom-default-reporter"; +import { basename, join, relative } from "path"; +import chalk from "chalk"; +import type { RunnerTask, RunnerTaskResult, RunnerTestCase } from "vitest"; + +/** + * @module + * Code to add markers to the beginning and end of tests. + * Intended for use with {@linkcode CustomDefaultReporter}, and placed inside test hooks + * (rather than as part of the reporter) to ensure Vitest waits for the log messages to be printed. + */ + +/** A long string of "="s to partition off each test from one another. */ +const TEST_END_BARRIER = chalk.bold.hex("#ff7c7cff")("=================="); + +// Colors used for Vitest-related test utils +const TEST_NAME_COLOR = "#008886ff" as const; +const VITEST_PINK_COLOR = "#c162de" as const; + +const testRoot = join(import.meta.dirname, "..", "..", ".."); + +/** + * Log the testfile name and path upon a case starting. \ + * Used to compensate for us overridding the global Console object and removing Vitest's + * test name annotations. + * @param test - The {@linkcode RunnerTask} passed from the context + */ +export function logTestStart(test: RunnerTask): void { + console.log(TEST_END_BARRIER); + console.log( + `${chalk.dim("> ")}${chalk.hex(VITEST_PINK_COLOR)("Starting test: ")}${chalk.hex(TEST_NAME_COLOR)(getTestName(test))}`, + ); +} + +/** + * Log the testfile name, path and result upon a case ending. \ + * Used to compensate for us overridding the global Console object and removing Vitest's + * test name annotations. + * @param task - The {@linkcode RunnerTestCase} passed from the hook + */ +export function logTestEnd(task: RunnerTestCase): void { + const durationStr = getDurationPrefix(task.result); + const resultStr = getResultStr(task.result); + console.log(`${chalk.dim("> ")}${chalk.black.bgHex(VITEST_PINK_COLOR)(" Test finished! ")} + Name: ${chalk.hex(TEST_NAME_COLOR)(getTestName(task))} + Result: ${resultStr}${durationStr} + File: ${chalk.hex("#d29b0eff")( + getPathFromTest(task.file.filepath) + (task.location ? `:${task.location.line}:${task.location.column}` : ""), + )}`); +} + +/** + * Get the path of the current test file relative to the `test` directory. + * @param abs - The absolute path to the file + * @returns The relative path with `test/` appended to it. + */ +function getPathFromTest(abs: string): string { + return join(basename(testRoot), relative(testRoot, abs)); +} + +function getResultStr(result: RunnerTaskResult | undefined): string { + if (result?.state !== "pass" && result?.state !== "fail") { + return "Unknown"; + } + + const resultStr = + result.state === "pass" + ? chalk.green.bold("✔ Passed") + : (result?.duration ?? 0) > 2 + ? chalk.cyan.bold("◴ Timed out") + : chalk.red.bold("✗ Failed"); + + return resultStr; +} + +/** + * Get the text to be displayed for a test's duration. + * @param result - The {@linkcode RunnerTaskResult} of the finished test + * @returns An appropriately colored suffix for the start time. + * Will return an empty string if `result.startTime` is `undefined` + */ +function getDurationPrefix(result?: RunnerTaskResult): string { + const startTime = result?.startTime; + if (!startTime) { + return ""; + } + const duration = Math.round(Date.now() - startTime); + + // TODO: Figure out a way to access the current vitest config from a hook + const color = duration > 10_000 ? chalk.yellow : chalk.green; + return ` ${chalk.dim("in")} ${color(duration)}${chalk.dim("ms")}`; +} + +// Function copied from vitest source to avoid having to import `@vitest/runner/utils` for 1 function + +// SPDX-SnippetBegin +// SPDX-SnippetCopyrightText: 2021 VoidZero Inc. and Vitest contributors +// SPDX-License-Identifier: MIT +function getTestName(task: RunnerTask, separator = " > "): string { + const names: string[] = [task.name]; + let current: RunnerTask | undefined = task; + + while ((current = current?.suite)) { + if (current?.name) { + names.unshift(current.name); + } + } + + return names.join(separator); +} + +// SPDX-SnippetEnd diff --git a/test/test-utils/test-file-initialization.ts b/test/test-utils/test-file-initialization.ts index 631d3f9146b..c172e2d1da8 100644 --- a/test/test-utils/test-file-initialization.ts +++ b/test/test-utils/test-file-initialization.ts @@ -3,7 +3,7 @@ import { initializeGame } from "#app/init/init"; import { initI18n } from "#plugins/i18n"; import { blobToString } from "#test/test-utils/game-manager-utils"; import { manageListeners } from "#test/test-utils/listeners-manager"; -import { MockConsoleLog } from "#test/test-utils/mocks/mock-console-log"; +import { MockConsole } from "#test/test-utils/mocks/mock-console/mock-console"; import { mockContext } from "#test/test-utils/mocks/mock-context-canvas"; import { mockLocalStorage } from "#test/test-utils/mocks/mock-local-storage"; import { MockImage } from "#test/test-utils/mocks/mocks-container/mock-image"; @@ -38,14 +38,22 @@ function initTestFile(): void { /** * Setup various stubs for testing. * @todo Move this into a dedicated stub file instead of running it once per test instance + * @todo review these to see which are actually necessary * @todo Investigate why this resets on new test suite start */ function setupStubs(): void { - Object.defineProperty(window, "localStorage", { - value: mockLocalStorage(), - }); - Object.defineProperty(window, "console", { - value: new MockConsoleLog(false), + Object.defineProperties(global, { + localStorage: { + value: mockLocalStorage(), + }, + console: { + value: new MockConsole(), + }, + matchMedia: { + value: () => ({ + matches: false, + }), + }, }); Object.defineProperty(document, "fonts", { writable: true, @@ -69,11 +77,6 @@ function setupStubs(): void { navigator.getGamepads = () => []; setCookie(SESSION_ID_COOKIE_NAME, "fake_token"); - window.matchMedia = () => - ({ - matches: false, - }) as any; - /** * Sets this object's position relative to another object with a given offset * @param guideObject - The {@linkcode Phaser.GameObjects.GameObject} to base the position off of diff --git a/test/test-utils/text-interceptor.ts b/test/test-utils/text-interceptor.ts index 36a5db4c78d..dfbaf2ff11c 100644 --- a/test/test-utils/text-interceptor.ts +++ b/test/test-utils/text-interceptor.ts @@ -1,39 +1,49 @@ +import type { BattleScene } from "#app/battle-scene"; +import chalk from "chalk"; + /** - * Class will intercept any text or dialogue message calls and log them for test purposes + * The {@linkcode TextInterceptor} is a wrapper class that intercepts and logs any messages + * that would be displayed on-screen. */ export class TextInterceptor { - private scene; - public logs: string[] = []; - constructor(scene) { - this.scene = scene; + /** A log containing messages having been displayed on screen, sorted in FIFO order. */ + public readonly logs: string[] = []; + + constructor(scene: BattleScene) { + // @ts-expect-error: Find another more sanitary way of doing this scene.messageWrapper = this; } - showText( - text: string, - _delay?: number, - _callback?: Function, - _callbackDelay?: number, - _prompt?: boolean, - _promptDelay?: number, - ): void { - console.log(text); + /** Clear the current content of the TextInterceptor. */ + public clearLogs(): void { + this.logs.splice(0); + } + + showText(text: string): void { + // NB: We do not format the raw _logs_ themselves as tests will be actively checking it. + console.log(this.formatText(text)); this.logs.push(text); } - showDialogue( - text: string, - name: string, - _delay?: number, - _callback?: Function, - _callbackDelay?: number, - _promptDelay?: number, - ): void { - console.log(name, text); + showDialogue(text: string, name: string): void { + console.log(`${name}: \n${this.formatText(text)}`); this.logs.push(name, text); } - getLatestMessage(): string { - return this.logs.pop() ?? ""; + /** + * Format text to be displayed to the test console, as follows: + * 1. Replaces new lines and new text boxes (marked by `$`) with indented new lines. + * 2. Removes all `@c{}`, `@d{}`, `@s{}`, and `@f{}` flags from the text. + * 3. Makes text blue + * @param text - The unformatted text + * @returns The formatted text + */ + private formatText(text: string): string { + return chalk.blue( + text + .replace(/\n/g, " ") + .replace(/\$/g, "\n ") + .replace(/@\w{.*?}/g, ""), + ); } } diff --git a/test/vitest.setup.ts b/test/vitest.setup.ts index be35e18e2e9..23adab01a05 100644 --- a/test/vitest.setup.ts +++ b/test/vitest.setup.ts @@ -1,16 +1,21 @@ import "vitest-canvas-mock"; +import { MockConsole } from "#test/test-utils/mocks/mock-console/mock-console"; +import { logTestEnd, logTestStart } from "#test/test-utils/setup/test-end-log"; import { initTests } from "#test/test-utils/test-file-initialization"; -import { afterAll, beforeAll, vi } from "vitest"; +import chalk from "chalk"; +import { afterAll, afterEach, beforeAll, beforeEach, vi } from "vitest"; -/** Set the timezone to UTC for tests. */ +//#region Mocking -/** Mock the override import to always return default values, ignoring any custom overrides. */ -vi.mock("#app/overrides", async importOriginal => { - const { defaultOverrides } = await importOriginal(); +// Mock the override import to always return default values, ignoring any custom overrides. +vi.mock(import("#app/overrides"), async importOriginal => { + const { defaultOverrides } = await importOriginal(); return { default: defaultOverrides, - defaultOverrides, + // Export `defaultOverrides` as a *copy*. + // This ensures we can easily reset `overrides` back to its default values after modifying it. + defaultOverrides: { ...defaultOverrides }, } satisfies typeof import("#app/overrides"); }); @@ -20,7 +25,7 @@ vi.mock("#app/overrides", async importOriginal => { * This is necessary because how our code is structured. * Do NOT try to put any of this code into external functions, it won't work as it's elevated during runtime. */ -vi.mock("i18next", async importOriginal => { +vi.mock(import("i18next"), async importOriginal => { console.log("Mocking i18next"); const { setupServer } = await import("msw/node"); const { http, HttpResponse } = await import("msw"); @@ -30,8 +35,11 @@ vi.mock("i18next", async importOriginal => { const filename = req.params[0]; try { - const json = await import(`../public/locales/en/${req.params[0]}`); - console.log("Loaded locale", filename); + const localeFiles = import.meta.glob("../public/locales/en/**/*.json", { eager: true }); + const json = localeFiles[`../public/locales/en/${filename}`] || {}; + if (import.meta.env.VITE_I18N_DEBUG === "1") { + console.log("Loaded locale", filename); + } return HttpResponse.json(json); } catch (err) { console.log(`Failed to load locale ${filename}!`, err); @@ -54,7 +62,15 @@ beforeAll(() => { initTests(); }); +beforeEach(context => { + logTestStart(context.task); +}); +afterEach(context => { + logTestEnd(context.task); +}); + afterAll(() => { global.server.close(); - console.log("Closing i18n MSW server!"); + MockConsole.printPostTestWarnings(); + console.log(chalk.hex("#dfb8d8")("Closing i18n MSW server!")); }); diff --git a/typedoc.config.js b/typedoc.config.js index 1f944cd544e..ef932a5d077 100644 --- a/typedoc.config.js +++ b/typedoc.config.js @@ -8,7 +8,13 @@ const dryRun = !!process.env.DRY_RUN?.match(/true/gi); const config = { entryPoints: ["./src", "./test/test-utils"], entryPointStrategy: "expand", - exclude: ["**/*+.test.ts", "src/polyfills.ts", "src/vite.env.d.ts"], + exclude: [ + "src/polyfills.ts", + "src/vite.env.d.ts", + "**/*+.test.ts", + "test/test-utils/setup", + "test/test-utils/reporters", + ], excludeReferences: true, // prevent documenting re-exports requiredToBeDocumented: [ "Enum", diff --git a/vitest.config.ts b/vitest.config.ts index 65c5427e591..7fa2494bb4e 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,18 +1,25 @@ -import { defineProject } from "vitest/config"; +import { defineConfig } from "vitest/config"; import { BaseSequencer, type TestSpecification } from "vitest/node"; import { defaultConfig } from "./vite.config"; -export default defineProject(({ mode }) => ({ +export default defineConfig(({ mode }) => ({ ...defaultConfig, test: { + reporters: process.env.GITHUB_ACTIONS + ? ["github-actions", "./test/test-utils/reporters/custom-default-reporter.ts"] + : ["./test/test-utils/reporters/custom-default-reporter.ts"], env: { TZ: "UTC", }, - testTimeout: 20000, + testTimeout: 20_000, + slowTestThreshold: 10_000, + // TODO: Consider enabling + // expect: {requireAssertions: true}, setupFiles: ["./test/font-face.setup.ts", "./test/vitest.setup.ts", "./test/matchers.setup.ts"], sequence: { sequencer: MySequencer, }, + includeTaskLocation: true, environment: "jsdom" as const, environmentOptions: { jsdom: { From e222731623b78aac65963f9293c6c8b4e0810d80 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sun, 7 Sep 2025 09:43:01 -0500 Subject: [PATCH 15/32] Center text in README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d381b8f47f5..73477968bc0 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -PokéRogue +
PokéRogue [![Discord Static Badge](https://img.shields.io/badge/Community_Discord-blurple?style=flat&logo=discord&logoSize=auto&labelColor=white&color=5865F2)](https://discord.gg/pokerogue) [![Docs Coverage Static Badge](https://pagefaultgames.github.io/pokerogue/beta/coverage.svg)](https://pagefaultgames.github.io/pokerogue/beta) [![Testing Badge](https://github.com/pagefaultgames/pokerogue/actions/workflows/tests.yml/badge.svg)](https://github.com/pagefaultgames/pokerogue/actions/workflows/tests.yml) -[![License: GNU AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) +[![License: GNU AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
PokéRogue is a browser based Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, fighting trainers, bosses, and more! From 2cf23b7ea7b1662c260b74ee61a42a19dd955e8b Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sun, 7 Sep 2025 10:58:40 -0700 Subject: [PATCH 16/32] [Misc] Fix console log colors --- src/constants/colors.ts | 4 +++- src/phase-manager.ts | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/constants/colors.ts b/src/constants/colors.ts index e4d740addff..717c5fa5f0d 100644 --- a/src/constants/colors.ts +++ b/src/constants/colors.ts @@ -5,8 +5,10 @@ */ // Colors used in prod +/** Color used for "Start Phase " logs */ export const PHASE_START_COLOR = "green" as const; -export const MOVE_COLOR = "RebeccaPurple" as const; +/** Color used for logs in `MovePhase` */ +export const MOVE_COLOR = "orchid" as const; // Colors used for testing code export const NEW_TURN_COLOR = "#ffad00ff" as const; diff --git a/src/phase-manager.ts b/src/phase-manager.ts index 68b7d74293b..2185de559ae 100644 --- a/src/phase-manager.ts +++ b/src/phase-manager.ts @@ -1,3 +1,4 @@ +import { PHASE_START_COLOR } from "#app/constants/colors"; import { globalScene } from "#app/global-scene"; import type { Phase } from "#app/phase"; import { type PhasePriorityQueue, PostSummonPhasePriorityQueue } from "#data/phase-priority-queue"; @@ -392,7 +393,7 @@ export class PhaseManager { * Helper method to start and log the current phase. */ private startCurrentPhase(): void { - console.log(`%cStart Phase ${this.currentPhase.phaseName}`, "color:${PHASE_START_COLOR};"); + console.log(`%cStart Phase ${this.currentPhase.phaseName}`, `color:${PHASE_START_COLOR};`); this.currentPhase.start(); } From 8b95361d616a778c47c2f0da9c9e40317996be9e Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sun, 7 Sep 2025 14:35:52 -0400 Subject: [PATCH 17/32] [Dev] Added egg move parse script & script type checking (#6116) * Added egg move parse utility script * Update interactive.js Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Update interactive.js Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Update interactive.js Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Applied kev's reviews * Removed `basePath` from tsconfig the docs literally recommend against using it so yeah * Fixed up configs so that script folder has its own file * Reverted changes to egg move contents * renamed boilerplate so biome doesn't lint it * Fix `jsconfig.json` so that it doesn't typecheck all of `node_modules` See https://github.com/microsoft/TypeScript/issues/50862#issuecomment-1565175938 for more info * Update tsconfig.json Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Updated workflows and fixed issues * Removed eslint from linting workflow * Fixed type error in d.ts file to shut up linters * Reverted test-filters.yml * Update biome.jsonc * Update decrypt-save.js comment * Update interactive.js * Apply Biome * Fixed type errors for scripts * Fixed biome from removing tsdoc linkcodes * Update test/@types/vitest.d.ts --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- .github/workflows/linting.yml | 81 +++++++-- biome.jsonc | 15 +- package.json | 2 + scripts/create-test/create-test.js | 2 +- scripts/decrypt-save.js | 18 +- scripts/jsconfig.json | 17 ++ .../egg-move-template.boilerplate.ts | 10 ++ scripts/parse-egg-moves/help-message.js | 17 ++ scripts/parse-egg-moves/interactive.js | 108 +++++++++++ scripts/parse-egg-moves/main.js | 168 ++++++++++++++++++ scripts/parse-egg-moves/parse.js | 79 ++++++++ scripts/scrape-trainer-names/fetch-names.js | 8 +- src/data/balance/egg-moves.ts | 62 +------ src/init/init.ts | 2 - test/@types/vitest.d.ts | 12 +- .../helpers/challenge-mode-helper.ts | 2 +- tsconfig.json | 74 ++++---- 17 files changed, 550 insertions(+), 127 deletions(-) create mode 100644 scripts/jsconfig.json create mode 100644 scripts/parse-egg-moves/egg-move-template.boilerplate.ts create mode 100644 scripts/parse-egg-moves/help-message.js create mode 100644 scripts/parse-egg-moves/interactive.js create mode 100644 scripts/parse-egg-moves/main.js create mode 100644 scripts/parse-egg-moves/parse.js diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 08327ee3653..edecae64f95 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -18,7 +18,7 @@ on: jobs: run-linters: - name: Run linters + name: Run all linters timeout-minutes: 10 runs-on: ubuntu-latest @@ -26,27 +26,86 @@ jobs: - name: Check out Git repository uses: actions/checkout@v4 with: - submodules: 'recursive' + submodules: "recursive" - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 10 - - name: Set up Node.js + - name: Set up Node uses: actions/setup-node@v4 with: - node-version-file: '.nvmrc' - cache: 'pnpm' + node-version-file: ".nvmrc" + cache: "pnpm" - - name: Install Node.js dependencies + - name: Install Node modules run: pnpm i - - name: Lint with Biome + # Lint files with Biome-Lint - https://biomejs.dev/linter/ + - name: Run Biome-Lint run: pnpm biome-ci + id: biome_lint + continue-on-error: true - - name: Check dependencies with depcruise + # Validate dependencies with dependency-cruiser - https://github.com/sverweij/dependency-cruiser + - name: Run Dependency-Cruise run: pnpm depcruise - - - name: Lint with ls-lint - run: pnpm ls-lint \ No newline at end of file + id: depcruise + continue-on-error: true + + # Validate types with tsc - https://www.typescriptlang.org/docs/handbook/compiler-options.html#using-the-cli + - name: Run Typecheck + run: pnpm typecheck + id: typecheck + continue-on-error: true + + # The exact same thing + - name: Run Typecheck (scripts) + run: pnpm typecheck:scripts + id: typecheck-scripts + continue-on-error: true + + - name: Evaluate for Errors + env: + BIOME_LINT_OUTCOME: ${{ steps.biome_lint.outcome }} + DEPCRUISE_OUTCOME: ${{ steps.depcruise.outcome }} + TYPECHECK_OUTCOME: ${{ steps.typecheck.outcome }} + TYPECHECK_SCRIPTS_OUTCOME: ${{ steps.typecheck-scripts.outcome }} + run: | + # Check for Errors + + # Make text red. + red () { + printf "\e[31m%s\e[0m" "$1" + } + + # Make text green. + green () { + printf "\e[32m%s\e[0m" "$1" + } + + print_result() { + local name=$1 + local outcome=$2 + if [ "$outcome" == "success" ]; then + printf "$(green "✅ $name: $outcome")\n" + else + printf "$(red "❌ $name: $outcome")\n" + fi + } + + print_result "Biome" "$BIOME_LINT_OUTCOME" + print_result "Depcruise" "$DEPCRUISE_OUTCOME" + print_result "Typecheck" "$TYPECHECK_OUTCOME" + print_result "Typecheck scripts" "$TYPECHECK_SCRIPTS_OUTCOME" + + if [[ "$BIOME_LINT_OUTCOME" != "success" || \ + "$DEPCRUISE_OUTCOME" != "success" || \ + "$TYPECHECK_OUTCOME" != "success" || \ + "$TYPECHECK_SCRIPTS_OUTCOME" != "success" ]]; then + printf "$(red "❌ One or more checks failed!")\n" >&2 + exit 1 + fi + + printf "$(green "✅ All checks passed!")\n" diff --git a/biome.jsonc b/biome.jsonc index a63ce0ee07d..e6f9ff5711a 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -175,10 +175,17 @@ } }, - // Overrides to prevent unused import removal inside `overrides.ts` and enums files (for TSDoc linkcodes), - // as well as in all TS files in `scripts/` (which are assumed to be boilerplate templates). + // Overrides to prevent unused import removal inside `overrides.ts`, enums & `.d.ts` files (for TSDoc linkcodes), + // as well as inside script boilerplate files. { - "includes": ["**/src/overrides.ts", "**/src/enums/**/*", "**/scripts/**/*.ts", "**/*.d.ts"], + // TODO: Rename existing boilerplates in the folder and remove this last alias + "includes": [ + "**/src/overrides.ts", + "**/src/enums/**/*", + "**/*.d.ts", + "scripts/**/*.boilerplate.ts", + "**/boilerplates/*.ts" + ], "linter": { "rules": { "correctness": { @@ -188,7 +195,7 @@ } }, { - "includes": ["**/src/overrides.ts", "**/scripts/**/*.ts"], + "includes": ["**/src/overrides.ts"], "linter": { "rules": { "style": { diff --git a/package.json b/package.json index f6097b8ccb9..d33c5e390d6 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,10 @@ "test:watch": "vitest watch --coverage --no-isolate", "test:silent": "vitest run --silent='passed-only' --no-isolate", "test:create": "node scripts/create-test/create-test.js", + "eggMoves:parse": "node scripts/parse-egg-moves/main.js", "scrape-trainers": "node scripts/scrape-trainer-names/main.js", "typecheck": "tsc --noEmit", + "typecheck:scripts": "tsc -p scripts/jsconfig.json", "biome": "biome check --write --changed --no-errors-on-unmatched --diagnostic-level=error", "biome-ci": "biome ci --diagnostic-level=error --reporter=github --no-errors-on-unmatched", "typedoc": "typedoc", diff --git a/scripts/create-test/create-test.js b/scripts/create-test/create-test.js index 765993959d1..5e395783da7 100644 --- a/scripts/create-test/create-test.js +++ b/scripts/create-test/create-test.js @@ -156,7 +156,7 @@ async function runInteractive() { console.log(chalk.green.bold(`✔ File created at: test/${localDir}/${fileName}.test.ts\n`)); console.groupEnd(); } catch (err) { - console.error(chalk.red("✗ Error: ", err.message)); + console.error(chalk.red("✗ Error: ", err)); } } diff --git a/scripts/decrypt-save.js b/scripts/decrypt-save.js index e50f152f159..26b0a311378 100644 --- a/scripts/decrypt-save.js +++ b/scripts/decrypt-save.js @@ -1,7 +1,6 @@ // Usage: node decrypt-save.js [save-file] -// biome-ignore lint/performance/noNamespaceImport: This is how you import fs from node -import * as fs from "node:fs"; +import fs from "node:fs"; import crypto_js from "crypto-js"; const { AES, enc } = crypto_js; @@ -60,6 +59,11 @@ function decryptSave(path) { try { fileData = fs.readFileSync(path, "utf8"); } catch (e) { + if (!(e instanceof Error)) { + console.error(`Unrecognized error: ${e}`); + process.exit(1); + } + // @ts-expect-error - e is usually a SystemError (all of which have codes) switch (e.code) { case "ENOENT": console.error(`File not found: ${path}`); @@ -104,6 +108,13 @@ function writeToFile(filePath, data) { try { fs.writeFileSync(filePath, data); } catch (e) { + if (!(e instanceof Error)) { + console.error("Unknown error detected: ", e); + process.exitCode = 1; + return; + } + + // @ts-expect-error - e is usually a SystemError (all of which have codes) switch (e.code) { case "EACCES": console.error(`Could not open ${filePath}: Permission denied`); @@ -114,7 +125,8 @@ function writeToFile(filePath, data) { default: console.error(`Error writing file: ${e.message}`); } - process.exit(1); + process.exitCode = 1; + return; } } diff --git a/scripts/jsconfig.json b/scripts/jsconfig.json new file mode 100644 index 00000000000..aed71f4f576 --- /dev/null +++ b/scripts/jsconfig.json @@ -0,0 +1,17 @@ +{ + "include": ["**/*.js"], + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "rootDir": ".", + "target": "esnext", + "module": "nodenext", + "moduleResolution": "nodenext", + "erasableSyntaxOnly": true, + "strict": true, + "noEmit": true, + // Forcibly disable `node_modules` recursion to prevent TSC from typechecking random JS files. + // This is disabled by default in `tsconfig.json`, but needs to be explicitly disabled from the default of `2` + "maxNodeModuleJsDepth": 0 + } +} diff --git a/scripts/parse-egg-moves/egg-move-template.boilerplate.ts b/scripts/parse-egg-moves/egg-move-template.boilerplate.ts new file mode 100644 index 00000000000..bfac05f4bde --- /dev/null +++ b/scripts/parse-egg-moves/egg-move-template.boilerplate.ts @@ -0,0 +1,10 @@ +//! DO NOT EDIT THIS FILE - CREATED BY THE `eggMoves:parse` script automatically +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; + +/** + * An object mapping all base form {@linkcode SpeciesId}s to an array of {@linkcode MoveId}s corresponding + * to their current egg moves. + * Generated by the `eggMoves:parse` script using a CSV sourced from the current Balance Team spreadsheet. + */ +export const speciesEggMoves = "{{table}}"; diff --git a/scripts/parse-egg-moves/help-message.js b/scripts/parse-egg-moves/help-message.js new file mode 100644 index 00000000000..397a28e5011 --- /dev/null +++ b/scripts/parse-egg-moves/help-message.js @@ -0,0 +1,17 @@ +import chalk from "chalk"; + +/** Show help/usage text for the `eggMoves:parse` CLI. */ +export function showHelpText() { + console.log(` +Usage: ${chalk.cyan("pnpm eggMoves:parse [options]")} +If given no options, assumes ${chalk.blue("\`--interactive\`")}. +If given only a file path, assumes ${chalk.blue("\`--file\`")}. + +${chalk.hex("#ffa500")("Options:")} + ${chalk.blue("-h, --help")} Show this help message. + ${chalk.blue("-f, --file[=PATH]")} Specify a path to a CSV file to read, or provide one from stdin. + ${chalk.blue("-t, --text[=TEXT]")} + ${chalk.blue("-c, --console[=TEXT]")} Specify CSV text to read, or provide it from stdin. + ${chalk.blue("-i, --interactive")} Run in interactive mode (default) +`); +} diff --git a/scripts/parse-egg-moves/interactive.js b/scripts/parse-egg-moves/interactive.js new file mode 100644 index 00000000000..68ee41e7900 --- /dev/null +++ b/scripts/parse-egg-moves/interactive.js @@ -0,0 +1,108 @@ +import fs from "fs"; +import chalk from "chalk"; +import inquirer from "inquirer"; +import { showHelpText } from "./help-message.js"; + +/** + * @import { Option } from "./main.js" + */ + +/** + * Prompt the user to interactively select an option (console/file) to retrieve the egg move CSV. + * @returns {Promise