diff --git a/public/images/ui/champion_ribbon.png b/public/images/ui/champion_ribbon.png new file mode 100644 index 00000000000..baf9c664da5 Binary files /dev/null and b/public/images/ui/champion_ribbon.png differ diff --git a/src/loading-scene.ts b/src/loading-scene.ts index 2f37b900ab5..0ecefed69e6 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -68,6 +68,7 @@ export class LoadingScene extends SceneBase { this.loadImage('shiny_star_small_1', 'ui', 'shiny_small_1.png'); this.loadImage('shiny_star_small_2', 'ui', 'shiny_small_2.png'); this.loadImage('ha_capsule', 'ui', 'ha_capsule.png'); + this.loadImage('champion_ribbon', 'ui', 'champion_ribbon.png'); this.loadImage('icon_spliced', 'ui'); this.loadImage('icon_tera', 'ui'); this.loadImage('type_tera', 'ui'); diff --git a/src/system/game-data.ts b/src/system/game-data.ts index e11c2dcc572..5b4dcc99a50 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -128,6 +128,7 @@ export interface DexEntry { seenCount: integer; caughtCount: integer; hatchedCount: integer; + winCount: integer; ivs: integer[]; } @@ -951,7 +952,7 @@ export class GameData { for (let species of allSpecies) { data[species.speciesId] = { - seenAttr: 0n, caughtAttr: 0n, natureAttr: 0, seenCount: 0, caughtCount: 0, hatchedCount: 0, ivs: [ 0, 0, 0, 0, 0, 0 ] + seenAttr: 0n, caughtAttr: 0n, natureAttr: 0, seenCount: 0, caughtCount: 0, hatchedCount: 0, winCount: 1, ivs: [ 0, 0, 0, 0, 0, 0 ] }; } diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index f1e058b12cf..c4b19482844 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -170,6 +170,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private starterValueLabels: Phaser.GameObjects.Text[]; private shinyIcons: Phaser.GameObjects.Image[][]; private hiddenAbilityIcons: Phaser.GameObjects.Image[]; + private classicWinIcons: Phaser.GameObjects.Image[]; private iconAnimHandler: PokemonIconAnimHandler; @@ -406,6 +407,17 @@ export default class StarterSelectUiHandler extends MessageUiHandler { return ret; }); + this.classicWinIcons = new Array(81).fill(null).map((_, i) => { + const x = (i % 9) * 18; + const y = Math.floor(i / 9) * 18; + const ret = this.scene.add.image(x + 152, y + 16, 'champion_ribbon'); + ret.setOrigin(0, 0); + ret.setScale(0.5); + ret.setVisible(false); + this.starterSelectContainer.add(ret); + return ret; + }); + this.pokemonSprite = this.scene.add.sprite(53, 63, `pkmn__sub`); this.pokemonSprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); this.starterSelectContainer.add(this.pokemonSprite); @@ -1176,6 +1188,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.shinyIcons[s][v].setTint(getVariantTint(speciesVariants[v] === DexAttr.DEFAULT_VARIANT ? 0 : speciesVariants[v] === DexAttr.VARIANT_2 ? 1 : 2)); } this.hiddenAbilityIcons[s].setVisible(slotVisible && !!this.scene.gameData.dexData[speciesId].caughtAttr && !!(this.scene.gameData.starterData[speciesId].abilityAttr & 4)); + // this.classicWinIcons[s].setVisible(slotVisible); + this.classicWinIcons[s].setVisible(slotVisible && this.scene.gameData.dexData[speciesId].winCount > 0); } } else { changed = super.setCursor(cursor);