Fix display issue with unlocked hidden achievements
parent
729b70c6a6
commit
c2b5135627
|
@ -34,7 +34,7 @@ import SettingsUiHandler from './ui/settings-ui-handler';
|
||||||
import MessageUiHandler from './ui/message-ui-handler';
|
import MessageUiHandler from './ui/message-ui-handler';
|
||||||
import { Species } from './data/species';
|
import { Species } from './data/species';
|
||||||
import InvertPostFX from './pipelines/invert';
|
import InvertPostFX from './pipelines/invert';
|
||||||
import { Achv, achvs } from './system/achv';
|
import { Achv, ModifierAchv, achvs } from './system/achv';
|
||||||
|
|
||||||
const enableAuto = true;
|
const enableAuto = true;
|
||||||
const quickStart = false;
|
const quickStart = false;
|
||||||
|
@ -1177,6 +1177,7 @@ export default class BattleScene extends Phaser.Scene {
|
||||||
addModifier(modifier: Modifier, ignoreUpdate?: boolean, playSound?: boolean, virtual?: boolean): Promise<void> {
|
addModifier(modifier: Modifier, ignoreUpdate?: boolean, playSound?: boolean, virtual?: boolean): Promise<void> {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
const soundName = modifier.type.soundName;
|
const soundName = modifier.type.soundName;
|
||||||
|
this.validateAchvs(ModifierAchv, modifier);
|
||||||
if (modifier instanceof PersistentModifier) {
|
if (modifier instanceof PersistentModifier) {
|
||||||
if ((modifier as PersistentModifier).add(this.modifiers, !!virtual)) {
|
if ((modifier as PersistentModifier).add(this.modifiers, !!virtual)) {
|
||||||
if (playSound && !this.sound.get(soundName))
|
if (playSound && !this.sound.get(soundName))
|
||||||
|
|
|
@ -1466,6 +1466,8 @@ export class PlayerPokemon extends Pokemon {
|
||||||
this.fusionGender = pokemon.gender;
|
this.fusionGender = pokemon.gender;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.scene.validateAchv(achvs.SPLICE);
|
||||||
|
|
||||||
this.calculateStats();
|
this.calculateStats();
|
||||||
this.generateCompatibleTms();
|
this.generateCompatibleTms();
|
||||||
this.updateInfo(true).then(() => {
|
this.updateInfo(true).then(() => {
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
|
import { Modifier } from "typescript";
|
||||||
import BattleScene from "../battle-scene";
|
import BattleScene from "../battle-scene";
|
||||||
import * as Utils from "../utils";
|
import * as Utils from "../utils";
|
||||||
|
import { TurnHeldItemTransferModifier } from "../modifier/modifier";
|
||||||
|
|
||||||
export enum AchvTier {
|
export enum AchvTier {
|
||||||
COMMON,
|
COMMON,
|
||||||
|
@ -90,6 +92,12 @@ export class LevelAchv extends Achv {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class ModifierAchv extends Achv {
|
||||||
|
constructor(name: string, description: string, iconImage: string, score: integer, modifierFunc: (modifier: Modifier) => boolean) {
|
||||||
|
super(name, description, iconImage, score, (_scene: BattleScene, args: any[]) => modifierFunc((args[0] as Modifier)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const achvs = {
|
export const achvs = {
|
||||||
_10K_MONEY: new MoneyAchv('Money Haver', 10000, 'nugget', 10),
|
_10K_MONEY: new MoneyAchv('Money Haver', 10000, 'nugget', 10),
|
||||||
_100K_MONEY: new MoneyAchv('Rich', 100000, 'big_nugget', 25).setSecret(true),
|
_100K_MONEY: new MoneyAchv('Rich', 100000, 'big_nugget', 25).setSecret(true),
|
||||||
|
@ -106,7 +114,9 @@ export const achvs = {
|
||||||
LV_100: new LevelAchv('But Wait, There\'s More!', 50, 'rare_candy', 50).setSecret(),
|
LV_100: new LevelAchv('But Wait, There\'s More!', 50, 'rare_candy', 50).setSecret(),
|
||||||
LV_250: new LevelAchv('Elite', 250, 'rarer_candy', 150).setSecret(true),
|
LV_250: new LevelAchv('Elite', 250, 'rarer_candy', 150).setSecret(true),
|
||||||
LV_1000: new LevelAchv('To Go Even Further Beyond', 250, 'candy_jar', 400).setSecret(true),
|
LV_1000: new LevelAchv('To Go Even Further Beyond', 250, 'candy_jar', 400).setSecret(true),
|
||||||
TRANSFER_MAX_BATTLE_STAT: new Achv('Teamwork', 'Baton pass to another party member with at least one stat maxed out', 'stick', 25),
|
TRANSFER_MAX_BATTLE_STAT: new Achv('Teamwork', 'Baton pass to another party member with at least one stat maxed out', 'stick', 40),
|
||||||
|
SPLICE: new Achv('Infinite Fusion', 'Splice two Pokémon together with DNA Splicers', 'dna_splicers', 25),
|
||||||
|
MINI_BLACK_HOLE: new ModifierAchv('A Hole Lot of Items', 'Acquire a Mini Black Hole', 'mini_black_hole', 40, modifier => modifier instanceof TurnHeldItemTransferModifier).setSecret(),
|
||||||
CATCH_LEGENDARY: new Achv('Legendary', 'Catch a legendary Pokémon', 'mb', 100).setSecret(),
|
CATCH_LEGENDARY: new Achv('Legendary', 'Catch a legendary Pokémon', 'mb', 100).setSecret(),
|
||||||
CATCH_MYTHICAL: new Achv('Mythical', 'Catch a mythical Pokémon', 'strange_ball', 100).setSecret(),
|
CATCH_MYTHICAL: new Achv('Mythical', 'Catch a mythical Pokémon', 'strange_ball', 100).setSecret(),
|
||||||
SEE_SHINY: new Achv('Shiny', 'Find a shiny Pokémon in the wild', 'pb_gold', 150).setSecret(),
|
SEE_SHINY: new Achv('Shiny', 'Find a shiny Pokémon in the wild', 'pb_gold', 150).setSecret(),
|
||||||
|
|
|
@ -112,7 +112,7 @@ export default class AchvsUiHandler extends MessageUiHandler {
|
||||||
Object.values(achvs).forEach((achv: Achv, i: integer) => {
|
Object.values(achvs).forEach((achv: Achv, i: integer) => {
|
||||||
const icon = this.achvIcons[i];
|
const icon = this.achvIcons[i];
|
||||||
const unlocked = achvUnlocks.hasOwnProperty(achv.id);
|
const unlocked = achvUnlocks.hasOwnProperty(achv.id);
|
||||||
const hidden = achv.secret && (!achv.parentId || !achvUnlocks.hasOwnProperty(achv.parentId));
|
const hidden = !unlocked && achv.secret && (!achv.parentId || !achvUnlocks.hasOwnProperty(achv.parentId));
|
||||||
const tinted = !hidden && !unlocked;
|
const tinted = !hidden && !unlocked;
|
||||||
|
|
||||||
icon.setFrame(!hidden ? achv.iconImage : 'unknown');
|
icon.setFrame(!hidden ? achv.iconImage : 'unknown');
|
||||||
|
@ -133,7 +133,7 @@ export default class AchvsUiHandler extends MessageUiHandler {
|
||||||
protected showAchv(achv: Achv) {
|
protected showAchv(achv: Achv) {
|
||||||
const achvUnlocks = this.scene.gameData.achvUnlocks;
|
const achvUnlocks = this.scene.gameData.achvUnlocks;
|
||||||
const unlocked = achvUnlocks.hasOwnProperty(achv.id);
|
const unlocked = achvUnlocks.hasOwnProperty(achv.id);
|
||||||
const hidden = achv.secret && (!achv.parentId || !achvUnlocks.hasOwnProperty(achv.parentId));
|
const hidden = !unlocked && achv.secret && (!achv.parentId || !achvUnlocks.hasOwnProperty(achv.parentId));
|
||||||
|
|
||||||
this.titleText.setText(unlocked ? achv.name : '???');
|
this.titleText.setText(unlocked ? achv.name : '???');
|
||||||
this.showText(!hidden ? achv.description : '');
|
this.showText(!hidden ? achv.description : '');
|
||||||
|
@ -160,11 +160,11 @@ export default class AchvsUiHandler extends MessageUiHandler {
|
||||||
success = this.setCursor(this.cursor + 17);
|
success = this.setCursor(this.cursor + 17);
|
||||||
break;
|
break;
|
||||||
case Button.LEFT:
|
case Button.LEFT:
|
||||||
if (this.cursor % 17)
|
if (this.cursor)
|
||||||
success = this.setCursor(this.cursor - 1);
|
success = this.setCursor(this.cursor - 1);
|
||||||
break;
|
break;
|
||||||
case Button.RIGHT:
|
case Button.RIGHT:
|
||||||
if (this.cursor % 17 < 16 && this.cursor < Object.keys(achvs).length - 1)
|
if (this.cursor < Object.keys(achvs).length - 1)
|
||||||
success = this.setCursor(this.cursor + 1);
|
success = this.setCursor(this.cursor + 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue