Add end biome and set final wave at 200

This commit is contained in:
Flashfyre 2023-04-26 17:40:08 -04:00
parent 55ba3cd5e7
commit 998972e12b
8 changed files with 96 additions and 47 deletions

View File

@ -117,6 +117,8 @@ export class Arena {
return 'cave';
case Biome.POWER_PLANT:
return 'ruins';
case Biome.END:
return 'wasteland';
}
return Biome[this.biomeType].toLowerCase();
}
@ -164,12 +166,13 @@ export class Arena {
case Biome.DOJO:
return Type.FIGHTING;
case Biome.RUINS:
case Biome.SPACE:
return Type.PSYCHIC;
case Biome.WASTELAND:
return Type.DRAGON;
case Biome.ABYSS:
return Type.DARK;
case Biome.SPACE:
case Biome.END:
return Type.STEEL;
}
}

View File

@ -200,7 +200,9 @@ export class SelectBiomePhase extends BattlePhase {
this.end();
};
if (Array.isArray(biomeLinks[currentBiome]))
if (this.scene.currentBattle.waveIndex === this.scene.finalWave - 9)
setNextBiome(Biome.END);
else if (Array.isArray(biomeLinks[currentBiome]))
this.scene.ui.setMode(Mode.BIOME_SELECT, currentBiome, (biomeIndex: integer) => {
this.scene.ui.setMode(Mode.MESSAGE);
setNextBiome((biomeLinks[currentBiome] as Biome[])[biomeIndex]);
@ -1422,24 +1424,32 @@ export class VictoryPhase extends PokemonPhase {
}
this.scene.pushPhase(new BattleEndPhase(this.scene));
this.scene.pushPhase(new SelectModifierPhase(this.scene));
this.scene.newBattle();
if (this.scene.currentBattle.waveIndex < this.scene.finalWave) {
this.scene.pushPhase(new SelectModifierPhase(this.scene));
this.scene.newBattle();
} else
this.scene.pushPhase(new GameOverPhase(this.scene, true));
this.end();
}
}
export class GameOverPhase extends BattlePhase {
constructor(scene: BattleScene) {
private victory: boolean;
constructor(scene: BattleScene, victory?: boolean) {
super(scene);
this.victory = !!victory;
}
start() {
super.start();
this.scene.time.delayedCall(1000, () => {
this.scene.fadeOutBgm(5000, true);
this.scene.ui.fadeOut(5000).then(() => {
const fadeDuration = this.victory ? 10000 : 5000;
this.scene.fadeOutBgm(fadeDuration, true);
this.scene.ui.fadeOut(fadeDuration).then(() => {
this.scene.clearPhaseQueue();
this.scene.ui.clearText();
this.scene.reset();

View File

@ -51,6 +51,7 @@ export default class BattleScene extends Phaser.Scene {
public auto: boolean;
public gameSpeed: integer = 1;
public quickStart: boolean = quickStart;
public finalWave: integer = 200;
public gameData: GameData;
@ -521,8 +522,6 @@ export default class BattleScene extends Phaser.Scene {
}
randomSpecies(waveIndex: integer, level: integer, fromArenaPool?: boolean): PokemonSpecies {
if (waveIndex === 150)
return getPokemonSpecies(Species.ETERNATUS);
return fromArenaPool
? this.arena.randomSpecies(waveIndex, level)
: getPokemonSpecies(allSpecies[(Utils.randInt(allSpecies.length)) - 1].getSpeciesForLevel(level));

View File

@ -18,10 +18,9 @@ export class Battle {
let baseLevel = 1 + this.waveIndex / 2 + Math.pow(this.waveIndex / 25, 2);
if (!(this.waveIndex % 10)) {
let bossMultiplier = 1.2;
if (this.waveIndex > 100)
bossMultiplier += 0.028 * Math.floor((this.waveIndex - 100) / 10);
return Math.floor(baseLevel * bossMultiplier);
if (this.waveIndex === 200)
return 200;
return Math.floor(baseLevel * 1.2);
}
const deviation = 10 / this.waveIndex;

View File

@ -30,7 +30,8 @@ export enum Biome {
RUINS,
WASTELAND,
ABYSS,
SPACE
SPACE,
END
};
export function getBiomeName(biome: Biome) {
@ -45,6 +46,8 @@ export function getBiomeName(biome: Biome) {
return 'THE ABYSS';
case Biome.SPACE:
return 'STRATOSPHERE';
case Biome.END:
return 'FINAL DESTINATION';
default:
return Biome[biome].replace(/\_/g, ' ');
}
@ -508,8 +511,8 @@ export const biomePools: BiomePools = {
[BiomePoolTier.ULTRA_RARE]: [ Species.REGISTEEL, Species.UXIE, Species.COBALION ],
[BiomePoolTier.BOSS]: [ Species.PARASECT, Species.ONIX, Species.CROBAT, Species.URSARING, Species.EXPLOUD, Species.MAWILE, Species.PROBOPASS, Species.GIGALITH, Species.SWOOBAT ],
[BiomePoolTier.BOSS_RARE]: [ Species.SHUCKLE ],
[BiomePoolTier.BOSS_SUPER_RARE]: [ Species.REGISTEEL, Species.UXIE ],
[BiomePoolTier.BOSS_ULTRA_RARE]: [ Species.MEWTWO, Species.COBALION ]
[BiomePoolTier.BOSS_SUPER_RARE]: [ Species.REGISTEEL, Species.UXIE, Species.COBALION ],
[BiomePoolTier.BOSS_ULTRA_RARE]: []
},
[Biome.DESERT]: {
[BiomePoolTier.COMMON]: [
@ -676,7 +679,7 @@ export const biomePools: BiomePools = {
[BiomePoolTier.BOSS]: [ Species.DRAGONITE, Species.TYRANITAR, Species.FLYGON, Species.SALAMENCE, Species.GARCHOMP, Species.HAXORUS ],
[BiomePoolTier.BOSS_RARE]: [ Species.AERODACTYL, Species.DRUDDIGON ],
[BiomePoolTier.BOSS_SUPER_RARE]: [],
[BiomePoolTier.BOSS_ULTRA_RARE]: [ Species.RAYQUAZA, Species.DIALGA ]
[BiomePoolTier.BOSS_ULTRA_RARE]: [ Species.DIALGA ]
},
[Biome.ABYSS]: {
[BiomePoolTier.COMMON]: [ Species.MURKROW, { 1: [ Species.HOUNDOUR ], 24: [ Species.HOUNDOOM ] }, Species.SABLEYE, { 1: [ Species.PURRLOIN ], 20: [ Species.LIEPARD ] }, { 1: [ Species.PAWNIARD ], 52: [ Species.BISHARP ] } ],
@ -694,11 +697,22 @@ export const biomePools: BiomePools = {
[BiomePoolTier.UNCOMMON]: [ { 1: [ Species.BALTOY ], 36: [ Species.CLAYDOL ] }, { 1: [ Species.CHINGLING ], 20: [ Species.CHIMECHO ] }, { 1: [ Species.ELGYEM ], 42: [ Species.BEHEEYEM ] } ],
[BiomePoolTier.RARE]: [ { 1: [ Species.BELDUM ], 20: [ Species.METANG ], 45: [ Species.METAGROSS ] }, Species.SIGILYPH, { 1: [ Species.SOLOSIS ], 32: [ Species.DUOSION ], 41: [ Species.REUNICLUS ] } ],
[BiomePoolTier.SUPER_RARE]: [ { 1: [ Species.PORYGON ], 20: [ Species.PORYGON2 ] } ],
[BiomePoolTier.ULTRA_RARE]: [ Species.JIRACHI, Species.DEOXYS, Species.CRESSELIA, Species.GENESECT ],
[BiomePoolTier.ULTRA_RARE]: [ Species.JIRACHI, Species.DEOXYS, Species.CRESSELIA ],
[BiomePoolTier.BOSS]: [ Species.CLEFABLE, Species.LUNATONE, Species.SOLROCK, Species.CHIMECHO, Species.BRONZONG, Species.MUSHARNA, Species.REUNICLUS ],
[BiomePoolTier.BOSS_RARE]: [ Species.METAGROSS, Species.PORYGON_Z ],
[BiomePoolTier.BOSS_SUPER_RARE]: [ Species.JIRACHI, Species.DEOXYS, Species.CRESSELIA, Species.GENESECT ],
[BiomePoolTier.BOSS_ULTRA_RARE]: [ Species.ARCEUS ]
[BiomePoolTier.BOSS_SUPER_RARE]: [ Species.JIRACHI, Species.DEOXYS, Species.CRESSELIA ],
[BiomePoolTier.BOSS_ULTRA_RARE]: []
},
[Biome.END]: {
[BiomePoolTier.COMMON]: [ Species.ARCANINE, Species.DRAGONITE, Species.TYRANITAR, Species.SALAMENCE, Species.GARCHOMP, Species.HYDREIGON, Species.VOLCARONA ],
[BiomePoolTier.UNCOMMON]: [ Species.KINGDRA, Species.METAGROSS, Species.MAGNEZONE, Species.RHYPERIOR, Species.TANGROWTH, Species.ELECTIVIRE, Species.MAGMORTAR, Species.TOGEKISS, Species.MAMOSWINE ],
[BiomePoolTier.RARE]: [ Species.BLISSEY, Species.PORYGON_Z ],
[BiomePoolTier.SUPER_RARE]: [ Species.GENESECT ],
[BiomePoolTier.ULTRA_RARE]: [ Species.MEWTWO, Species.RAYQUAZA, Species.ARCEUS ],
[BiomePoolTier.BOSS]: [ Species.ETERNATUS ],
[BiomePoolTier.BOSS_RARE]: [],
[BiomePoolTier.BOSS_SUPER_RARE]: [],
[BiomePoolTier.BOSS_ULTRA_RARE]: []
}
};
@ -984,7 +998,8 @@ export const biomePools: BiomePools = {
]
],
[ Species.ARCANINE, Type.FIRE, -1, [
[ Biome.VOLCANO, BiomePoolTier.BOSS ]
[ Biome.VOLCANO, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.COMMON ]
]
],
[ Species.POLIWAG, Type.WATER, -1, [
@ -1415,11 +1430,12 @@ export const biomePools: BiomePools = {
],
[ Species.DRAGONITE, Type.DRAGON, Type.FLYING, [
[ Biome.WASTELAND, BiomePoolTier.RARE ],
[ Biome.WASTELAND, BiomePoolTier.BOSS ]
[ Biome.WASTELAND, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.COMMON ]
]
],
[ Species.MEWTWO, Type.PSYCHIC, -1, [
[ Biome.CAVE, BiomePoolTier.BOSS_ULTRA_RARE ]
[ Biome.END, BiomePoolTier.ULTRA_RARE ]
]
],
[ Species.MEW, Type.PSYCHIC, -1, [
@ -1790,7 +1806,8 @@ export const biomePools: BiomePools = {
],
[ Species.KINGDRA, Type.WATER, Type.DRAGON, [
[ Biome.SEA, BiomePoolTier.SUPER_RARE ],
[ Biome.SEA, BiomePoolTier.BOSS_RARE ]
[ Biome.SEA, BiomePoolTier.BOSS_RARE ],
[ Biome.END, BiomePoolTier.UNCOMMON ]
]
],
[ Species.PHANPY, Type.GROUND, -1, [
@ -1843,7 +1860,8 @@ export const biomePools: BiomePools = {
]
],
[ Species.BLISSEY, Type.NORMAL, -1, [
[ Biome.MEADOW, BiomePoolTier.BOSS_RARE ]
[ Biome.MEADOW, BiomePoolTier.BOSS_RARE ],
[ Biome.END, BiomePoolTier.RARE ]
]
],
[ Species.RAIKOU, Type.ELECTRIC, -1, [
@ -1873,7 +1891,8 @@ export const biomePools: BiomePools = {
],
[ Species.TYRANITAR, Type.ROCK, Type.DARK, [
[ Biome.WASTELAND, BiomePoolTier.COMMON ],
[ Biome.WASTELAND, BiomePoolTier.BOSS ]
[ Biome.WASTELAND, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.COMMON ]
]
],
[ Species.LUGIA, Type.PSYCHIC, Type.FLYING, [
@ -2463,7 +2482,8 @@ export const biomePools: BiomePools = {
],
[ Species.SALAMENCE, Type.DRAGON, Type.FLYING, [
[ Biome.WASTELAND, BiomePoolTier.COMMON ],
[ Biome.WASTELAND, BiomePoolTier.BOSS ]
[ Biome.WASTELAND, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.COMMON ]
]
],
[ Species.BELDUM, Type.STEEL, Type.PSYCHIC, [
@ -2478,7 +2498,8 @@ export const biomePools: BiomePools = {
],
[ Species.METAGROSS, Type.STEEL, Type.PSYCHIC, [
[ Biome.SPACE, BiomePoolTier.RARE ],
[ Biome.SPACE, BiomePoolTier.BOSS_RARE ]
[ Biome.SPACE, BiomePoolTier.BOSS_RARE ],
[ Biome.END, BiomePoolTier.UNCOMMON ]
]
],
[ Species.REGIROCK, Type.ROCK, -1, [
@ -2515,7 +2536,7 @@ export const biomePools: BiomePools = {
]
],
[ Species.RAYQUAZA, Type.DRAGON, Type.FLYING, [
[ Biome.WASTELAND, BiomePoolTier.BOSS_ULTRA_RARE ]
[ Biome.END, BiomePoolTier.ULTRA_RARE ]
]
],
[ Species.JIRACHI, Type.STEEL, Type.PSYCHIC, [
@ -2814,7 +2835,8 @@ export const biomePools: BiomePools = {
[ Species.GARCHOMP, Type.DRAGON, Type.GROUND, [
[ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ],
[ Biome.WASTELAND, BiomePoolTier.COMMON ],
[ Biome.WASTELAND, BiomePoolTier.BOSS ]
[ Biome.WASTELAND, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.COMMON ]
]
],
[ Species.MUNCHLAX, Type.NORMAL, -1, [
@ -2893,7 +2915,8 @@ export const biomePools: BiomePools = {
]
],
[ Species.MAGNEZONE, Type.ELECTRIC, Type.STEEL, [
[ Biome.POWER_PLANT, BiomePoolTier.BOSS ]
[ Biome.POWER_PLANT, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.UNCOMMON ]
]
],
[ Species.LICKILICKY, Type.NORMAL, -1, [
@ -2901,23 +2924,28 @@ export const biomePools: BiomePools = {
]
],
[ Species.RHYPERIOR, Type.GROUND, Type.ROCK, [
[ Biome.LAND, BiomePoolTier.BOSS ]
[ Biome.LAND, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.UNCOMMON ]
]
],
[ Species.TANGROWTH, Type.GRASS, -1, [
[ Biome.TALL_GRASS, BiomePoolTier.BOSS ]
[ Biome.TALL_GRASS, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.UNCOMMON ]
]
],
[ Species.ELECTIVIRE, Type.ELECTRIC, -1, [
[ Biome.POWER_PLANT, BiomePoolTier.BOSS ]
[ Biome.POWER_PLANT, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.UNCOMMON ]
]
],
[ Species.MAGMORTAR, Type.FIRE, -1, [
[ Biome.VOLCANO, BiomePoolTier.BOSS ]
[ Biome.VOLCANO, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.UNCOMMON ]
]
],
[ Species.TOGEKISS, Type.FAIRY, Type.FLYING, [
[ Biome.MEADOW, BiomePoolTier.BOSS ]
[ Biome.MEADOW, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.UNCOMMON ]
]
],
[ Species.YANMEGA, Type.BUG, Type.FLYING, [
@ -2937,11 +2965,13 @@ export const biomePools: BiomePools = {
]
],
[ Species.MAMOSWINE, Type.ICE, Type.GROUND, [
[ Biome.ICE_CAVE, BiomePoolTier.BOSS ]
[ Biome.ICE_CAVE, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.UNCOMMON ]
]
],
[ Species.PORYGON_Z, Type.NORMAL, -1, [
[ Biome.SPACE, BiomePoolTier.BOSS_RARE ]
[ Biome.SPACE, BiomePoolTier.BOSS_RARE ],
[ Biome.END, BiomePoolTier.RARE ]
]
],
[ Species.GALLADE, Type.PSYCHIC, Type.FIGHTING, [
@ -3028,7 +3058,7 @@ export const biomePools: BiomePools = {
]
],
[ Species.ARCEUS, Type.NORMAL, -1, [
[ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ]
[ Biome.END, BiomePoolTier.ULTRA_RARE ]
]
],
[ Species.VICTINI, Type.PSYCHIC, Type.FIRE, [
@ -3687,7 +3717,8 @@ export const biomePools: BiomePools = {
[ Species.HYDREIGON, Type.DARK, Type.DRAGON, [
[ Biome.WASTELAND, BiomePoolTier.UNCOMMON ],
[ Biome.ABYSS, BiomePoolTier.RARE ],
[ Biome.ABYSS, BiomePoolTier.BOSS ]
[ Biome.ABYSS, BiomePoolTier.BOSS ],
[ Biome.END, BiomePoolTier.COMMON ]
]
],
[ Species.LARVESTA, Type.BUG, Type.FIRE, [
@ -3696,12 +3727,13 @@ export const biomePools: BiomePools = {
],
[ Species.VOLCARONA, Type.BUG, Type.FIRE, [
[ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ],
[ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ]
[ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ],
[ Biome.END, BiomePoolTier.COMMON ]
]
],
[ Species.COBALION, Type.STEEL, Type.FIGHTING, [
[ Biome.CAVE, BiomePoolTier.ULTRA_RARE ],
[ Biome.CAVE, BiomePoolTier.BOSS_ULTRA_RARE ],
[ Biome.CAVE, BiomePoolTier.BOSS_SUPER_RARE ],
[ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ]
]
],
@ -3757,8 +3789,11 @@ export const biomePools: BiomePools = {
]
],
[ Species.GENESECT, Type.BUG, Type.STEEL, [
[ Biome.SPACE, BiomePoolTier.ULTRA_RARE ],
[ Biome.SPACE, BiomePoolTier.BOSS_SUPER_RARE ]
[ Biome.END, BiomePoolTier.SUPER_RARE ]
]
],
[ Species.ETERNATUS, Type.POISON, Type.DRAGON, [
[ Biome.END, BiomePoolTier.BOSS ]
]
]
];

View File

@ -2727,6 +2727,6 @@ export const allMoves = [
.attr(StatChangeAttr, [ BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 2, true),
new AttackMove(Moves.OBLIVION_WING, "Oblivion Wing", Type.FLYING, MoveCategory.SPECIAL, 80, 100, 10, -1, "User recovers 3/4 the HP inflicted on the opponent.", -1, 0, 6)
.attr(HitHealAttr, 0.75),
new AttackMove(Moves.DYNAMAX_CANNON, "Dynamax Cannon", Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 5, -1, "Power is doubled if the target is over level 150.", -1, 0, 8)
.attr(MovePowerMultiplierAttr, (user: Pokemon, target: Pokemon, move: Move) => target.level > 150 ? 2 : 1)
new AttackMove(Moves.DYNAMAX_CANNON, "Dynamax Cannon", Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 5, -1, "Power is doubled if the target is over level 200.", -1, 0, 8)
.attr(MovePowerMultiplierAttr, (user: Pokemon, target: Pokemon, move: Move) => target.level > 200 ? 2 : 1)
];

View File

@ -725,7 +725,10 @@ export function getPlayerModifierTypeOptionsForWave(waveIndex: integer, count: i
}
export function getEnemyModifierTypesForWave(waveIndex: integer, count: integer, party: EnemyPokemon[]): PokemonHeldItemModifierType[] {
return new Array(count).fill(0).map(() => getNewModifierTypeOption(party, false).type as PokemonHeldItemModifierType);
const ret = new Array(count).fill(0).map(() => getNewModifierTypeOption(party, false).type as PokemonHeldItemModifierType);
if (waveIndex === 200)
ret.push(modifierTypes.MINI_BLACK_HOLE());
return ret;
}
function getNewModifierTypeOption(party: Pokemon[], player?: boolean, tier?: ModifierTier, upgrade?: boolean): ModifierTypeOption {