Indicate starters that exceed cost on starter select and show values for locked starters

This commit is contained in:
Flashfyre 2024-04-09 16:58:56 -04:00
parent 2a6042ff7e
commit e672ead184
2 changed files with 10 additions and 5 deletions

View File

@ -2729,7 +2729,7 @@ export function initAbilities() {
new Ability(Abilities.DAUNTLESS_SHIELD, "Dauntless Shield", "Boosts the Pokémon's Defense stat when the Pokémon enters a battle.", 8) new Ability(Abilities.DAUNTLESS_SHIELD, "Dauntless Shield", "Boosts the Pokémon's Defense stat when the Pokémon enters a battle.", 8)
.attr(PostSummonStatChangeAbAttr, BattleStat.DEF, 1, true), .attr(PostSummonStatChangeAbAttr, BattleStat.DEF, 1, true),
new Ability(Abilities.LIBERO, "Libero (N)", "Changes the Pokémon's type to the type of the move it's about to use.", 8), new Ability(Abilities.LIBERO, "Libero (N)", "Changes the Pokémon's type to the type of the move it's about to use.", 8),
new Ability(Abilities.BALL_FETCH, "Ball Fetch (N)", "If the Pokémon is not holding an item, it will fetch the Poké Ball from the first failed throw of the battle.", 8), new Ability(Abilities.BALL_FETCH, "Ball Fetch (N)", "The Pokémon will fetch the Poké Ball from the first failed throw of the battle.", 8),
new Ability(Abilities.COTTON_DOWN, "Cotton Down (N)", "When the Pokémon is hit by an attack, it scatters cotton fluff around and lowers the Speed stat of all Pokémon except itself.", 8), new Ability(Abilities.COTTON_DOWN, "Cotton Down (N)", "When the Pokémon is hit by an attack, it scatters cotton fluff around and lowers the Speed stat of all Pokémon except itself.", 8),
new Ability(Abilities.PROPELLER_TAIL, "Propeller Tail (N)", "Ignores the effects of opposing Pokémon's Abilities and moves that draw in moves.", 8), new Ability(Abilities.PROPELLER_TAIL, "Propeller Tail (N)", "Ignores the effects of opposing Pokémon's Abilities and moves that draw in moves.", 8),
new Ability(Abilities.MIRROR_ARMOR, "Mirror Armor (N)", "Bounces back only the stat-lowering effects that the Pokémon receives.", 8) new Ability(Abilities.MIRROR_ARMOR, "Mirror Armor (N)", "Bounces back only the stat-lowering effects that the Pokémon receives.", 8)

View File

@ -889,7 +889,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
const genLimit = this.genSpecies[genCursorWithScroll].length; const genLimit = this.genSpecies[genCursorWithScroll].length;
for (let s = 0; s < 81; s++) { for (let s = 0; s < 81; s++) {
const speciesId = s < genLimit ? this.genSpecies[genCursorWithScroll][s].speciesId : 0 as Species; const speciesId = s < genLimit ? this.genSpecies[genCursorWithScroll][s].speciesId : 0 as Species;
const slotVisible = speciesId && !!(this.scene.gameData.dexData[speciesId].caughtAttr); const slotVisible = !!speciesId;
if (slotVisible) { if (slotVisible) {
const baseStarterValue = speciesStarters[speciesId]; const baseStarterValue = speciesStarters[speciesId];
const starterValue = slotVisible ? this.scene.gameData.getSpeciesStarterValue(speciesId) : 0; const starterValue = slotVisible ? this.scene.gameData.getSpeciesStarterValue(speciesId) : 0;
@ -914,7 +914,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.starterValueLabels[s].setShadowColor(this.getTextColor(textStyle, true)); this.starterValueLabels[s].setShadowColor(this.getTextColor(textStyle, true));
} }
this.starterValueLabels[s].setVisible(slotVisible); this.starterValueLabels[s].setVisible(slotVisible);
this.shinyIcons[s].setVisible(slotVisible && !!(this.scene.gameData.dexData[speciesId].caughtAttr & DexAttr.SHINY)); this.shinyIcons[s].setVisible(slotVisible && !!this.scene.gameData.dexData[speciesId].caughtAttr && !!(this.scene.gameData.dexData[speciesId].caughtAttr & DexAttr.SHINY));
} }
} else { } else {
changed = super.setCursor(cursor); changed = super.setCursor(cursor);
@ -1244,17 +1244,22 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
tryUpdateValue(add?: integer): boolean { tryUpdateValue(add?: integer): boolean {
const value = this.starterGens.reduce((total: integer, gen: integer, i: integer) => total += this.scene.gameData.getSpeciesStarterValue(this.genSpecies[gen][this.starterCursors[i]].speciesId), 0); const value = this.starterGens.reduce((total: integer, gen: integer, i: integer) => total += this.scene.gameData.getSpeciesStarterValue(this.genSpecies[gen][this.starterCursors[i]].speciesId), 0);
const newValue = value + (add || 0); const newValue = value + (add || 0);
const overLimit = newValue > this.getValueLimit(); const valueLimit = this.getValueLimit();
const overLimit = newValue > valueLimit;
let newValueStr = newValue.toString(); let newValueStr = newValue.toString();
if (newValueStr.startsWith('0.')) if (newValueStr.startsWith('0.'))
newValueStr = newValueStr.slice(1); newValueStr = newValueStr.slice(1);
this.valueLimitLabel.setText(`${newValueStr}/${this.getValueLimit()}`); this.valueLimitLabel.setText(`${newValueStr}/${valueLimit}`);
this.valueLimitLabel.setColor(this.getTextColor(!overLimit ? TextStyle.TOOLTIP_CONTENT : TextStyle.SUMMARY_PINK)); this.valueLimitLabel.setColor(this.getTextColor(!overLimit ? TextStyle.TOOLTIP_CONTENT : TextStyle.SUMMARY_PINK));
this.valueLimitLabel.setShadowColor(this.getTextColor(!overLimit ? TextStyle.TOOLTIP_CONTENT : TextStyle.SUMMARY_PINK, true)); this.valueLimitLabel.setShadowColor(this.getTextColor(!overLimit ? TextStyle.TOOLTIP_CONTENT : TextStyle.SUMMARY_PINK, true));
if (overLimit) { if (overLimit) {
this.scene.time.delayedCall(Utils.fixedInt(500), () => this.tryUpdateValue()); this.scene.time.delayedCall(Utils.fixedInt(500), () => this.tryUpdateValue());
return false; return false;
} }
for (let g = 0; g < this.genSpecies.length; g++) {
for (let s = 0; s < this.genSpecies[g].length; s++)
(this.starterSelectGenIconContainers[g].getAt(s) as Phaser.GameObjects.Sprite).setAlpha((newValue + this.scene.gameData.getSpeciesStarterValue(this.genSpecies[g][s].speciesId)) > valueLimit ? 0.375 : 1);
}
this.value = newValue; this.value = newValue;
return true; return true;
} }