Compare commits

..

No commits in common. "9c21ed243f238b075e96bdb155f4d9a1377f83c8" and "028deedd5993436a33ce42b26914a5bb91a4ba3d" have entirely different histories.

15 changed files with 8419 additions and 8494 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 584 B

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 B

View File

@ -98,7 +98,7 @@ export class LoadingScene extends SceneBase {
this.loadImage("type_tera", "ui"); this.loadImage("type_tera", "ui");
this.loadAtlas("type_bgs", "ui"); this.loadAtlas("type_bgs", "ui");
this.loadAtlas("button_tera", "ui"); this.loadAtlas("button_tera", "ui");
this.loadImage("common_egg", "ui"); this.loadImage("mystery_egg", "ui");
this.loadImage("normal_memory", "ui"); this.loadImage("normal_memory", "ui");
this.loadImage("dawn_icon_fg", "ui"); this.loadImage("dawn_icon_fg", "ui");

View File

@ -42,11 +42,13 @@ export class Achv {
constructor( constructor(
localizationKey: string, localizationKey: string,
name: string,
description: string, description: string,
iconImage: string, iconImage: string,
score: number, score: number,
conditionFunc?: ConditionFn, conditionFunc?: ConditionFn,
) { ) {
this.name = name;
this.description = description; this.description = description;
this.iconImage = iconImage; this.iconImage = iconImage;
this.score = score; this.score = score;
@ -105,8 +107,8 @@ export class Achv {
export class MoneyAchv extends Achv { export class MoneyAchv extends Achv {
moneyAmount: number; moneyAmount: number;
constructor(localizationKey: string, moneyAmount: number, iconImage: string, score: number) { constructor(localizationKey: string, name: string, moneyAmount: number, iconImage: string, score: number) {
super(localizationKey, "", iconImage, score, (_args: any[]) => globalScene.money >= this.moneyAmount); super(localizationKey, name, "", iconImage, score, (_args: any[]) => globalScene.money >= this.moneyAmount);
this.moneyAmount = moneyAmount; this.moneyAmount = moneyAmount;
} }
} }
@ -114,9 +116,10 @@ export class MoneyAchv extends Achv {
export class RibbonAchv extends Achv { export class RibbonAchv extends Achv {
ribbonAmount: number; ribbonAmount: number;
constructor(localizationKey: string, ribbonAmount: number, iconImage: string, score: number) { constructor(localizationKey: string, name: string, ribbonAmount: number, iconImage: string, score: number) {
super( super(
localizationKey, localizationKey,
name,
"", "",
iconImage, iconImage,
score, score,
@ -129,9 +132,10 @@ export class RibbonAchv extends Achv {
export class DamageAchv extends Achv { export class DamageAchv extends Achv {
damageAmount: number; damageAmount: number;
constructor(localizationKey: string, damageAmount: number, iconImage: string, score: number) { constructor(localizationKey: string, name: string, damageAmount: number, iconImage: string, score: number) {
super( super(
localizationKey, localizationKey,
name,
"", "",
iconImage, iconImage,
score, score,
@ -144,9 +148,10 @@ export class DamageAchv extends Achv {
export class HealAchv extends Achv { export class HealAchv extends Achv {
healAmount: number; healAmount: number;
constructor(localizationKey: string, healAmount: number, iconImage: string, score: number) { constructor(localizationKey: string, name: string, healAmount: number, iconImage: string, score: number) {
super( super(
localizationKey, localizationKey,
name,
"", "",
iconImage, iconImage,
score, score,
@ -159,9 +164,10 @@ export class HealAchv extends Achv {
export class LevelAchv extends Achv { export class LevelAchv extends Achv {
level: number; level: number;
constructor(localizationKey: string, level: number, iconImage: string, score: number) { constructor(localizationKey: string, name: string, level: number, iconImage: string, score: number) {
super( super(
localizationKey, localizationKey,
name,
"", "",
iconImage, iconImage,
score, score,
@ -174,24 +180,26 @@ export class LevelAchv extends Achv {
export class ModifierAchv extends Achv { export class ModifierAchv extends Achv {
constructor( constructor(
localizationKey: string, localizationKey: string,
name: string,
description: string, description: string,
iconImage: string, iconImage: string,
score: number, score: number,
modifierFunc: (modifier: Modifier) => boolean, modifierFunc: (modifier: Modifier) => boolean,
) { ) {
super(localizationKey, description, iconImage, score, (args: any[]) => modifierFunc(args[0] as Modifier)); super(localizationKey, name, description, iconImage, score, (args: any[]) => modifierFunc(args[0] as Modifier));
} }
} }
export class ChallengeAchv extends Achv { export class ChallengeAchv extends Achv {
constructor( constructor(
localizationKey: string, localizationKey: string,
name: string,
description: string, description: string,
iconImage: string, iconImage: string,
score: number, score: number,
challengeFunc: (challenge: Challenge) => boolean, challengeFunc: (challenge: Challenge) => boolean,
) { ) {
super(localizationKey, description, iconImage, score, (args: any[]) => challengeFunc(args[0] as Challenge)); super(localizationKey, name, description, iconImage, score, (args: any[]) => challengeFunc(args[0] as Challenge));
} }
} }
@ -450,109 +458,83 @@ export function getAchievementDescription(localizationKey: string): string {
} }
export const achvs = { export const achvs = {
CLASSIC_VICTORY: new Achv( _10K_MONEY: new MoneyAchv("10K_MONEY", "", 10000, "nugget", 10),
"CLASSIC_VICTORY", _100K_MONEY: new MoneyAchv("100K_MONEY", "", 100000, "big_nugget", 25).setSecret(true),
"CLASSIC_VICTORY.description", _1M_MONEY: new MoneyAchv("1M_MONEY", "", 1000000, "relic_gold", 50).setSecret(true),
"relic_crown", _10M_MONEY: new MoneyAchv("10M_MONEY", "", 10000000, "coin_case", 100).setSecret(true),
150, _250_DMG: new DamageAchv("250_DMG", "", 250, "lucky_punch", 10),
_ => globalScene.gameData.gameStats.sessionsWon === 0, _1000_DMG: new DamageAchv("1000_DMG", "", 1000, "lucky_punch_great", 25).setSecret(true),
), _2500_DMG: new DamageAchv("2500_DMG", "", 2500, "lucky_punch_ultra", 50).setSecret(true),
_10_RIBBONS: new RibbonAchv("10_RIBBONS", 10, "bronze_ribbon", 10), _10000_DMG: new DamageAchv("10000_DMG", "", 10000, "lucky_punch_master", 100).setSecret(true),
_25_RIBBONS: new RibbonAchv("25_RIBBONS", 25, "great_ribbon", 25), _250_HEAL: new HealAchv("250_HEAL", "", 250, "potion", 10),
_50_RIBBONS: new RibbonAchv("50_RIBBONS", 50, "ultra_ribbon", 50), _1000_HEAL: new HealAchv("1000_HEAL", "", 1000, "super_potion", 25).setSecret(true),
_75_RIBBONS: new RibbonAchv("75_RIBBONS", 75, "rogue_ribbon", 75), _2500_HEAL: new HealAchv("2500_HEAL", "", 2500, "hyper_potion", 50).setSecret(true),
_100_RIBBONS: new RibbonAchv("100_RIBBONS", 100, "master_ribbon", 100), _10000_HEAL: new HealAchv("10000_HEAL", "", 10000, "max_potion", 100).setSecret(true),
_10K_MONEY: new MoneyAchv("10K_MONEY", 10000, "nugget", 10), LV_100: new LevelAchv("LV_100", "", 100, "rare_candy", 25).setSecret(),
_100K_MONEY: new MoneyAchv("100K_MONEY", 100000, "big_nugget", 25).setSecret(true), LV_250: new LevelAchv("LV_250", "", 250, "rarer_candy", 50).setSecret(true),
_1M_MONEY: new MoneyAchv("1M_MONEY", 1000000, "relic_gold", 50).setSecret(true), LV_1000: new LevelAchv("LV_1000", "", 1000, "candy_jar", 100).setSecret(true),
_10M_MONEY: new MoneyAchv("10M_MONEY", 10000000, "coin_case", 100).setSecret(true), _10_RIBBONS: new RibbonAchv("10_RIBBONS", "", 10, "bronze_ribbon", 10),
_250_DMG: new DamageAchv("250_DMG", 250, "lucky_punch", 10), _25_RIBBONS: new RibbonAchv("25_RIBBONS", "", 25, "great_ribbon", 25).setSecret(true),
_1000_DMG: new DamageAchv("1000_DMG", 1000, "lucky_punch_great", 25).setSecret(true), _50_RIBBONS: new RibbonAchv("50_RIBBONS", "", 50, "ultra_ribbon", 50).setSecret(true),
_2500_DMG: new DamageAchv("2500_DMG", 2500, "lucky_punch_ultra", 50).setSecret(true), _75_RIBBONS: new RibbonAchv("75_RIBBONS", "", 75, "rogue_ribbon", 75).setSecret(true),
_10000_DMG: new DamageAchv("10000_DMG", 10000, "lucky_punch_master", 100).setSecret(true), _100_RIBBONS: new RibbonAchv("100_RIBBONS", "", 100, "master_ribbon", 100).setSecret(true),
_250_HEAL: new HealAchv("250_HEAL", 250, "potion", 10), TRANSFER_MAX_STAT_STAGE: new Achv("TRANSFER_MAX_STAT_STAGE", "", "TRANSFER_MAX_STAT_STAGE.description", "baton", 20),
_1000_HEAL: new HealAchv("1000_HEAL", 1000, "super_potion", 25).setSecret(true), MAX_FRIENDSHIP: new Achv("MAX_FRIENDSHIP", "", "MAX_FRIENDSHIP.description", "soothe_bell", 25),
_2500_HEAL: new HealAchv("2500_HEAL", 2500, "hyper_potion", 50).setSecret(true), MEGA_EVOLVE: new Achv("MEGA_EVOLVE", "", "MEGA_EVOLVE.description", "mega_bracelet", 50),
_10000_HEAL: new HealAchv("10000_HEAL", 10000, "max_potion", 100).setSecret(true), GIGANTAMAX: new Achv("GIGANTAMAX", "", "GIGANTAMAX.description", "dynamax_band", 50),
LV_100: new LevelAchv("LV_100", 100, "rare_candy", 25).setSecret(), TERASTALLIZE: new Achv("TERASTALLIZE", "", "TERASTALLIZE.description", "tera_orb", 25),
LV_250: new LevelAchv("LV_250", 250, "rarer_candy", 50).setSecret(true),
LV_1000: new LevelAchv("LV_1000", 1000, "candy_jar", 100).setSecret(true),
TRANSFER_MAX_STAT_STAGE: new Achv("TRANSFER_MAX_STAT_STAGE", "TRANSFER_MAX_STAT_STAGE.description", "baton", 20),
MAX_FRIENDSHIP: new Achv("MAX_FRIENDSHIP", "MAX_FRIENDSHIP.description", "soothe_bell", 25),
MEGA_EVOLVE: new Achv("MEGA_EVOLVE", "MEGA_EVOLVE.description", "mega_bracelet", 50),
GIGANTAMAX: new Achv("GIGANTAMAX", "GIGANTAMAX.description", "dynamax_band", 50),
TERASTALLIZE: new Achv("TERASTALLIZE", "TERASTALLIZE.description", "tera_orb", 25),
STELLAR_TERASTALLIZE: new Achv( STELLAR_TERASTALLIZE: new Achv(
"STELLAR_TERASTALLIZE", "STELLAR_TERASTALLIZE",
"",
"STELLAR_TERASTALLIZE.description", "STELLAR_TERASTALLIZE.description",
"stellar_tera_shard", "stellar_tera_shard",
25, 25,
).setSecret(true), ).setSecret(true),
SPLICE: new Achv("SPLICE", "SPLICE.description", "dna_splicers", 10), SPLICE: new Achv("SPLICE", "", "SPLICE.description", "dna_splicers", 10),
MINI_BLACK_HOLE: new ModifierAchv( MINI_BLACK_HOLE: new ModifierAchv(
"MINI_BLACK_HOLE", "MINI_BLACK_HOLE",
"",
"MINI_BLACK_HOLE.description", "MINI_BLACK_HOLE.description",
"mini_black_hole", "mini_black_hole",
25, 25,
modifier => modifier instanceof TurnHeldItemTransferModifier, modifier => modifier instanceof TurnHeldItemTransferModifier,
).setSecret(), ).setSecret(),
CATCH_MYTHICAL: new Achv("CATCH_MYTHICAL", "CATCH_MYTHICAL.description", "strange_ball", 50).setSecret(), CATCH_MYTHICAL: new Achv("CATCH_MYTHICAL", "", "CATCH_MYTHICAL.description", "strange_ball", 50).setSecret(),
CATCH_SUB_LEGENDARY: new Achv("CATCH_SUB_LEGENDARY", "CATCH_SUB_LEGENDARY.description", "rb", 75).setSecret(), CATCH_SUB_LEGENDARY: new Achv("CATCH_SUB_LEGENDARY", "", "CATCH_SUB_LEGENDARY.description", "rb", 75).setSecret(),
CATCH_LEGENDARY: new Achv("CATCH_LEGENDARY", "CATCH_LEGENDARY.description", "mb", 100).setSecret(), CATCH_LEGENDARY: new Achv("CATCH_LEGENDARY", "", "CATCH_LEGENDARY.description", "mb", 100).setSecret(),
SEE_SHINY: new Achv("SEE_SHINY", "SEE_SHINY.description", "pb_gold", 75), SEE_SHINY: new Achv("SEE_SHINY", "", "SEE_SHINY.description", "pb_gold", 75),
SHINY_PARTY: new Achv("SHINY_PARTY", "SHINY_PARTY.description", "shiny_charm", 100).setSecret(true), SHINY_PARTY: new Achv("SHINY_PARTY", "", "SHINY_PARTY.description", "shiny_charm", 100).setSecret(true),
HATCH_MYTHICAL: new Achv("HATCH_MYTHICAL", "HATCH_MYTHICAL.description", "manaphy_egg", 75).setSecret(), HATCH_MYTHICAL: new Achv("HATCH_MYTHICAL", "", "HATCH_MYTHICAL.description", "mystery_egg", 75).setSecret(),
HATCH_SUB_LEGENDARY: new Achv("HATCH_SUB_LEGENDARY", "HATCH_SUB_LEGENDARY.description", "epic_egg", 100).setSecret(), HATCH_SUB_LEGENDARY: new Achv(
HATCH_LEGENDARY: new Achv("HATCH_LEGENDARY", "HATCH_LEGENDARY.description", "legendary_egg", 125).setSecret(), "HATCH_SUB_LEGENDARY",
HATCH_SHINY: new Achv("HATCH_SHINY", "HATCH_SHINY.description", "rogue_egg", 100).setSecret(), "",
HIDDEN_ABILITY: new Achv("HIDDEN_ABILITY", "HIDDEN_ABILITY.description", "ability_charm", 75), "HATCH_SUB_LEGENDARY.description",
PERFECT_IVS: new Achv("PERFECT_IVS", "PERFECT_IVS.description", "blunder_policy", 100), "oval_stone",
100,
).setSecret(),
HATCH_LEGENDARY: new Achv("HATCH_LEGENDARY", "", "HATCH_LEGENDARY.description", "lucky_egg", 125).setSecret(),
HATCH_SHINY: new Achv("HATCH_SHINY", "", "HATCH_SHINY.description", "golden_egg", 100).setSecret(),
HIDDEN_ABILITY: new Achv("HIDDEN_ABILITY", "", "HIDDEN_ABILITY.description", "ability_charm", 75),
PERFECT_IVS: new Achv("PERFECT_IVS", "", "PERFECT_IVS.description", "blunder_policy", 100),
CLASSIC_VICTORY: new Achv(
"CLASSIC_VICTORY",
"",
"CLASSIC_VICTORY.description",
"relic_crown",
150,
_ => globalScene.gameData.gameStats.sessionsWon === 0,
),
UNEVOLVED_CLASSIC_VICTORY: new Achv( UNEVOLVED_CLASSIC_VICTORY: new Achv(
"UNEVOLVED_CLASSIC_VICTORY", "UNEVOLVED_CLASSIC_VICTORY",
"",
"UNEVOLVED_CLASSIC_VICTORY.description", "UNEVOLVED_CLASSIC_VICTORY.description",
"eviolite", "eviolite",
175, 175,
_ => globalScene.getPlayerParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions), _ => globalScene.getPlayerParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions),
), ),
FRESH_START: new ChallengeAchv(
"FRESH_START",
"FRESH_START.description",
"reviver_seed",
100,
c =>
c instanceof FreshStartChallenge &&
c.value === 1 &&
!globalScene.gameMode.challenges.some(
c => [Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT].includes(c.id) && c.value > 0,
),
),
NUZLOCKE: new ChallengeAchv(
"NUZLOCKE",
"NUZLOCKE.description",
"leaf_stone",
100,
c =>
c instanceof LimitedCatchChallenge &&
c.value > 0 &&
globalScene.gameMode.challenges.some(c => c.id === Challenges.HARDCORE && c.value > 0) &&
globalScene.gameMode.challenges.some(c => c.id === Challenges.FRESH_START && c.value > 0),
),
INVERSE_BATTLE: new ChallengeAchv(
"INVERSE_BATTLE",
"INVERSE_BATTLE.description",
"inverse",
100,
c => c instanceof InverseBattleChallenge && c.value > 0,
),
FLIP_STATS: new ChallengeAchv(
"FLIP_STATS",
"FLIP_STATS.description",
"dubious_disc",
100,
c => c instanceof FlipStatChallenge && c.value > 0,
),
MONO_GEN_ONE_VICTORY: new ChallengeAchv( MONO_GEN_ONE_VICTORY: new ChallengeAchv(
"MONO_GEN_ONE", "MONO_GEN_ONE",
"",
"MONO_GEN_ONE.description", "MONO_GEN_ONE.description",
"ribbon_gen1", "ribbon_gen1",
100, 100,
@ -565,6 +547,7 @@ export const achvs = {
), ),
MONO_GEN_TWO_VICTORY: new ChallengeAchv( MONO_GEN_TWO_VICTORY: new ChallengeAchv(
"MONO_GEN_TWO", "MONO_GEN_TWO",
"",
"MONO_GEN_TWO.description", "MONO_GEN_TWO.description",
"ribbon_gen2", "ribbon_gen2",
100, 100,
@ -577,6 +560,7 @@ export const achvs = {
), ),
MONO_GEN_THREE_VICTORY: new ChallengeAchv( MONO_GEN_THREE_VICTORY: new ChallengeAchv(
"MONO_GEN_THREE", "MONO_GEN_THREE",
"",
"MONO_GEN_THREE.description", "MONO_GEN_THREE.description",
"ribbon_gen3", "ribbon_gen3",
100, 100,
@ -589,6 +573,7 @@ export const achvs = {
), ),
MONO_GEN_FOUR_VICTORY: new ChallengeAchv( MONO_GEN_FOUR_VICTORY: new ChallengeAchv(
"MONO_GEN_FOUR", "MONO_GEN_FOUR",
"",
"MONO_GEN_FOUR.description", "MONO_GEN_FOUR.description",
"ribbon_gen4", "ribbon_gen4",
100, 100,
@ -601,6 +586,7 @@ export const achvs = {
), ),
MONO_GEN_FIVE_VICTORY: new ChallengeAchv( MONO_GEN_FIVE_VICTORY: new ChallengeAchv(
"MONO_GEN_FIVE", "MONO_GEN_FIVE",
"",
"MONO_GEN_FIVE.description", "MONO_GEN_FIVE.description",
"ribbon_gen5", "ribbon_gen5",
100, 100,
@ -613,6 +599,7 @@ export const achvs = {
), ),
MONO_GEN_SIX_VICTORY: new ChallengeAchv( MONO_GEN_SIX_VICTORY: new ChallengeAchv(
"MONO_GEN_SIX", "MONO_GEN_SIX",
"",
"MONO_GEN_SIX.description", "MONO_GEN_SIX.description",
"ribbon_gen6", "ribbon_gen6",
100, 100,
@ -625,6 +612,7 @@ export const achvs = {
), ),
MONO_GEN_SEVEN_VICTORY: new ChallengeAchv( MONO_GEN_SEVEN_VICTORY: new ChallengeAchv(
"MONO_GEN_SEVEN", "MONO_GEN_SEVEN",
"",
"MONO_GEN_SEVEN.description", "MONO_GEN_SEVEN.description",
"ribbon_gen7", "ribbon_gen7",
100, 100,
@ -637,6 +625,7 @@ export const achvs = {
), ),
MONO_GEN_EIGHT_VICTORY: new ChallengeAchv( MONO_GEN_EIGHT_VICTORY: new ChallengeAchv(
"MONO_GEN_EIGHT", "MONO_GEN_EIGHT",
"",
"MONO_GEN_EIGHT.description", "MONO_GEN_EIGHT.description",
"ribbon_gen8", "ribbon_gen8",
100, 100,
@ -649,6 +638,7 @@ export const achvs = {
), ),
MONO_GEN_NINE_VICTORY: new ChallengeAchv( MONO_GEN_NINE_VICTORY: new ChallengeAchv(
"MONO_GEN_NINE", "MONO_GEN_NINE",
"",
"MONO_GEN_NINE.description", "MONO_GEN_NINE.description",
"ribbon_gen9", "ribbon_gen9",
100, 100,
@ -661,6 +651,7 @@ export const achvs = {
), ),
MONO_NORMAL: new ChallengeAchv( MONO_NORMAL: new ChallengeAchv(
"MONO_NORMAL", "MONO_NORMAL",
"",
"MONO_NORMAL.description", "MONO_NORMAL.description",
"silk_scarf", "silk_scarf",
100, 100,
@ -673,6 +664,7 @@ export const achvs = {
), ),
MONO_FIGHTING: new ChallengeAchv( MONO_FIGHTING: new ChallengeAchv(
"MONO_FIGHTING", "MONO_FIGHTING",
"",
"MONO_FIGHTING.description", "MONO_FIGHTING.description",
"black_belt", "black_belt",
100, 100,
@ -685,6 +677,7 @@ export const achvs = {
), ),
MONO_FLYING: new ChallengeAchv( MONO_FLYING: new ChallengeAchv(
"MONO_FLYING", "MONO_FLYING",
"",
"MONO_FLYING.description", "MONO_FLYING.description",
"sharp_beak", "sharp_beak",
100, 100,
@ -697,6 +690,7 @@ export const achvs = {
), ),
MONO_POISON: new ChallengeAchv( MONO_POISON: new ChallengeAchv(
"MONO_POISON", "MONO_POISON",
"",
"MONO_POISON.description", "MONO_POISON.description",
"poison_barb", "poison_barb",
100, 100,
@ -709,6 +703,7 @@ export const achvs = {
), ),
MONO_GROUND: new ChallengeAchv( MONO_GROUND: new ChallengeAchv(
"MONO_GROUND", "MONO_GROUND",
"",
"MONO_GROUND.description", "MONO_GROUND.description",
"soft_sand", "soft_sand",
100, 100,
@ -721,6 +716,7 @@ export const achvs = {
), ),
MONO_ROCK: new ChallengeAchv( MONO_ROCK: new ChallengeAchv(
"MONO_ROCK", "MONO_ROCK",
"",
"MONO_ROCK.description", "MONO_ROCK.description",
"hard_stone", "hard_stone",
100, 100,
@ -733,6 +729,7 @@ export const achvs = {
), ),
MONO_BUG: new ChallengeAchv( MONO_BUG: new ChallengeAchv(
"MONO_BUG", "MONO_BUG",
"",
"MONO_BUG.description", "MONO_BUG.description",
"silver_powder", "silver_powder",
100, 100,
@ -745,6 +742,7 @@ export const achvs = {
), ),
MONO_GHOST: new ChallengeAchv( MONO_GHOST: new ChallengeAchv(
"MONO_GHOST", "MONO_GHOST",
"",
"MONO_GHOST.description", "MONO_GHOST.description",
"spell_tag", "spell_tag",
100, 100,
@ -757,6 +755,7 @@ export const achvs = {
), ),
MONO_STEEL: new ChallengeAchv( MONO_STEEL: new ChallengeAchv(
"MONO_STEEL", "MONO_STEEL",
"",
"MONO_STEEL.description", "MONO_STEEL.description",
"metal_coat", "metal_coat",
100, 100,
@ -769,6 +768,7 @@ export const achvs = {
), ),
MONO_FIRE: new ChallengeAchv( MONO_FIRE: new ChallengeAchv(
"MONO_FIRE", "MONO_FIRE",
"",
"MONO_FIRE.description", "MONO_FIRE.description",
"charcoal", "charcoal",
100, 100,
@ -781,6 +781,7 @@ export const achvs = {
), ),
MONO_WATER: new ChallengeAchv( MONO_WATER: new ChallengeAchv(
"MONO_WATER", "MONO_WATER",
"",
"MONO_WATER.description", "MONO_WATER.description",
"mystic_water", "mystic_water",
100, 100,
@ -793,6 +794,7 @@ export const achvs = {
), ),
MONO_GRASS: new ChallengeAchv( MONO_GRASS: new ChallengeAchv(
"MONO_GRASS", "MONO_GRASS",
"",
"MONO_GRASS.description", "MONO_GRASS.description",
"miracle_seed", "miracle_seed",
100, 100,
@ -805,6 +807,7 @@ export const achvs = {
), ),
MONO_ELECTRIC: new ChallengeAchv( MONO_ELECTRIC: new ChallengeAchv(
"MONO_ELECTRIC", "MONO_ELECTRIC",
"",
"MONO_ELECTRIC.description", "MONO_ELECTRIC.description",
"magnet", "magnet",
100, 100,
@ -817,6 +820,7 @@ export const achvs = {
), ),
MONO_PSYCHIC: new ChallengeAchv( MONO_PSYCHIC: new ChallengeAchv(
"MONO_PSYCHIC", "MONO_PSYCHIC",
"",
"MONO_PSYCHIC.description", "MONO_PSYCHIC.description",
"twisted_spoon", "twisted_spoon",
100, 100,
@ -829,6 +833,7 @@ export const achvs = {
), ),
MONO_ICE: new ChallengeAchv( MONO_ICE: new ChallengeAchv(
"MONO_ICE", "MONO_ICE",
"",
"MONO_ICE.description", "MONO_ICE.description",
"never_melt_ice", "never_melt_ice",
100, 100,
@ -841,6 +846,7 @@ export const achvs = {
), ),
MONO_DRAGON: new ChallengeAchv( MONO_DRAGON: new ChallengeAchv(
"MONO_DRAGON", "MONO_DRAGON",
"",
"MONO_DRAGON.description", "MONO_DRAGON.description",
"dragon_fang", "dragon_fang",
100, 100,
@ -853,6 +859,7 @@ export const achvs = {
), ),
MONO_DARK: new ChallengeAchv( MONO_DARK: new ChallengeAchv(
"MONO_DARK", "MONO_DARK",
"",
"MONO_DARK.description", "MONO_DARK.description",
"black_glasses", "black_glasses",
100, 100,
@ -865,6 +872,7 @@ export const achvs = {
), ),
MONO_FAIRY: new ChallengeAchv( MONO_FAIRY: new ChallengeAchv(
"MONO_FAIRY", "MONO_FAIRY",
"",
"MONO_FAIRY.description", "MONO_FAIRY.description",
"fairy_feather", "fairy_feather",
100, 100,
@ -875,8 +883,38 @@ export const achvs = {
c => [Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT].includes(c.id) && c.value > 0, c => [Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT].includes(c.id) && c.value > 0,
), ),
), ),
FRESH_START: new ChallengeAchv(
"FRESH_START",
"",
"FRESH_START.description",
"reviver_seed",
100,
c =>
c instanceof FreshStartChallenge &&
c.value === 1 &&
!globalScene.gameMode.challenges.some(
c => [Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT].includes(c.id) && c.value > 0,
),
),
INVERSE_BATTLE: new ChallengeAchv(
"INVERSE_BATTLE",
"",
"INVERSE_BATTLE.description",
"inverse",
100,
c => c instanceof InverseBattleChallenge && c.value > 0,
),
FLIP_STATS: new ChallengeAchv(
"FLIP_STATS",
"",
"FLIP_STATS.description",
"dubious_disc",
100,
c => c instanceof FlipStatChallenge && c.value > 0,
),
FLIP_INVERSE: new ChallengeAchv( FLIP_INVERSE: new ChallengeAchv(
"FLIP_INVERSE", "FLIP_INVERSE",
"",
"FLIP_INVERSE.description", "FLIP_INVERSE.description",
"cracked_pot", "cracked_pot",
100, 100,
@ -885,7 +923,20 @@ export const achvs = {
c.value > 0 && c.value > 0 &&
globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0), globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0),
).setSecret(), ).setSecret(),
BREEDERS_IN_SPACE: new Achv("BREEDERS_IN_SPACE", "BREEDERS_IN_SPACE.description", "moon_stone", 50).setSecret(), // TODO: Decide on icon
NUZLOCKE: new ChallengeAchv(
"NUZLOCKE",
"",
"NUZLOCKE.description",
"leaf_stone",
100,
c =>
c instanceof LimitedCatchChallenge &&
c.value > 0 &&
globalScene.gameMode.challenges.some(c => c.id === Challenges.HARDCORE && c.value > 0) &&
globalScene.gameMode.challenges.some(c => c.id === Challenges.FRESH_START && c.value > 0),
),
BREEDERS_IN_SPACE: new Achv("BREEDERS_IN_SPACE", "", "BREEDERS_IN_SPACE.description", "moon_stone", 50).setSecret(),
}; };
export function initAchievements() { export function initAchievements() {

View File

@ -30,7 +30,7 @@ const languageSettings: { [key: string]: LanguageSetting } = {
export class AchvsUiHandler extends MessageUiHandler { export class AchvsUiHandler extends MessageUiHandler {
private readonly ROWS = 4; private readonly ROWS = 4;
private readonly COLS = 18; private readonly COLS = 17;
private mainContainer: Phaser.GameObjects.Container; private mainContainer: Phaser.GameObjects.Container;
private iconsContainer: Phaser.GameObjects.Container; private iconsContainer: Phaser.GameObjects.Container;
@ -115,8 +115,8 @@ export class AchvsUiHandler extends MessageUiHandler {
this.icons = []; this.icons = [];
for (let a = 0; a < this.ROWS * this.COLS; a++) { for (let a = 0; a < this.ROWS * this.COLS; a++) {
const x = (a % this.COLS) * 17; const x = (a % this.COLS) * 18;
const y = Math.floor(a / this.COLS) * 19; const y = Math.floor(a / this.COLS) * 18;
const icon = globalScene.add.sprite(x, y, "items", "unknown").setOrigin(0).setScale(0.5); const icon = globalScene.add.sprite(x, y, "items", "unknown").setOrigin(0).setScale(0.5);

View File

@ -107,7 +107,7 @@ export class PokedexMonContainer extends Phaser.GameObjects.Container {
this.candyUpgradeOverlayIcon = candyUpgradeOverlayIcon; this.candyUpgradeOverlayIcon = candyUpgradeOverlayIcon;
// move icons // move icons
const eggMove1Icon = globalScene.add.image(0, 12, "common_egg"); const eggMove1Icon = globalScene.add.image(0, 12, "mystery_egg");
eggMove1Icon.setOrigin(0, 0); eggMove1Icon.setOrigin(0, 0);
eggMove1Icon.setScale(0.25); eggMove1Icon.setScale(0.25);
eggMove1Icon.setVisible(false); eggMove1Icon.setVisible(false);
@ -123,7 +123,7 @@ export class PokedexMonContainer extends Phaser.GameObjects.Container {
this.tmMove1Icon = tmMove1Icon; this.tmMove1Icon = tmMove1Icon;
// move icons // move icons
const eggMove2Icon = globalScene.add.image(7, 12, "common_egg"); const eggMove2Icon = globalScene.add.image(7, 12, "mystery_egg");
eggMove2Icon.setOrigin(0, 0); eggMove2Icon.setOrigin(0, 0);
eggMove2Icon.setScale(0.25); eggMove2Icon.setScale(0.25);
eggMove2Icon.setVisible(false); eggMove2Icon.setVisible(false);