mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-08-26 09:19:31 +02:00
Merge branch 'beta' into mystery-encounters-translations-sequel
This commit is contained in:
commit
7c785cc4e0
@ -447,30 +447,6 @@ export class SingleGenerationChallenge extends Challenge {
|
||||
applyFixedBattle(waveIndex: Number, battleConfig: FixedBattleConfig): boolean {
|
||||
let trainerTypes: TrainerType[] = [];
|
||||
switch (waveIndex) {
|
||||
case 35:
|
||||
trainerTypes = [ TrainerType.ROCKET_GRUNT, TrainerType.ROCKET_GRUNT, Utils.randSeedItem([ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ]), TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, Utils.randSeedItem([ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ]), TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ];
|
||||
break;
|
||||
case 62:
|
||||
trainerTypes = [ TrainerType.ROCKET_GRUNT, TrainerType.ROCKET_GRUNT, Utils.randSeedItem([ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ]), TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, Utils.randSeedItem([ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ]), TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ];
|
||||
break;
|
||||
case 64:
|
||||
trainerTypes = [ TrainerType.ROCKET_GRUNT, TrainerType.ROCKET_GRUNT, Utils.randSeedItem([ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ]), TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, Utils.randSeedItem([ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ]), TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ];
|
||||
break;
|
||||
case 66:
|
||||
trainerTypes = [ Utils.randSeedItem([ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ]), Utils.randSeedItem([ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ]), Utils.randSeedItem([ TrainerType.TABITHA, TrainerType.COURTNEY, TrainerType.MATT, TrainerType.SHELLY ]), Utils.randSeedItem([ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ]), Utils.randSeedItem([ TrainerType.ZINZOLIN, TrainerType.ROOD ]), Utils.randSeedItem([ TrainerType.XEROSIC, TrainerType.BRYONY ]), Utils.randSeedItem([ TrainerType.FABA, TrainerType.PLUMERIA ]), TrainerType.OLEANA, Utils.randSeedItem([ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]) ];
|
||||
break;
|
||||
case 112:
|
||||
trainerTypes = [ TrainerType.ROCKET_GRUNT, TrainerType.ROCKET_GRUNT, Utils.randSeedItem([ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ]), TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, Utils.randSeedItem([ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ]), TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ];
|
||||
break;
|
||||
case 114:
|
||||
trainerTypes = [ Utils.randSeedItem([ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ]), Utils.randSeedItem([ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ]), Utils.randSeedItem([ TrainerType.TABITHA, TrainerType.COURTNEY, TrainerType.MATT, TrainerType.SHELLY ]), Utils.randSeedItem([ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ]), Utils.randSeedItem([ TrainerType.ZINZOLIN, TrainerType.ROOD ]), Utils.randSeedItem([ TrainerType.XEROSIC, TrainerType.BRYONY ]), Utils.randSeedItem([ TrainerType.FABA, TrainerType.PLUMERIA ]), TrainerType.OLEANA, Utils.randSeedItem([ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]) ];
|
||||
break;
|
||||
case 115:
|
||||
trainerTypes = [ TrainerType.ROCKET_BOSS_GIOVANNI_1, TrainerType.ROCKET_BOSS_GIOVANNI_1, Utils.randSeedItem([ TrainerType.MAXIE, TrainerType.ARCHIE ]), TrainerType.CYRUS, TrainerType.GHETSIS, TrainerType.LYSANDRE, Utils.randSeedItem([ TrainerType.LUSAMINE, TrainerType.GUZMA ]), TrainerType.ROSE, TrainerType.PENNY ];
|
||||
break;
|
||||
case 165:
|
||||
trainerTypes = [ TrainerType.ROCKET_BOSS_GIOVANNI_2, TrainerType.ROCKET_BOSS_GIOVANNI_2, Utils.randSeedItem([ TrainerType.MAXIE_2, TrainerType.ARCHIE_2 ]), TrainerType.CYRUS_2, TrainerType.GHETSIS_2, TrainerType.LYSANDRE_2, Utils.randSeedItem([ TrainerType.LUSAMINE_2, TrainerType.GUZMA_2 ]), TrainerType.ROSE_2, TrainerType.PENNY_2 ];
|
||||
break;
|
||||
case 182:
|
||||
trainerTypes = [ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, Utils.randSeedItem([ TrainerType.HALA, TrainerType.MOLAYNE ]), TrainerType.MARNIE_ELITE, TrainerType.RIKA ];
|
||||
break;
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { GachaType } from "./enums/gacha-types";
|
||||
import { trainerConfigs } from "./data/trainer-config";
|
||||
import { getBiomeHasProps } from "./field/arena";
|
||||
import CacheBustedLoaderPlugin from "./plugins/cache-busted-loader-plugin";
|
||||
import { SceneBase } from "./scene-base";
|
||||
@ -21,7 +20,6 @@ import i18next from "i18next";
|
||||
import { initStatsKeys } from "./ui/game-stats-ui-handler";
|
||||
import { initVouchers } from "./system/voucher";
|
||||
import { Biome } from "#enums/biome";
|
||||
import { TrainerType } from "#enums/trainer-type";
|
||||
import {initMysteryEncounters} from "#app/data/mystery-encounters/mystery-encounters";
|
||||
|
||||
export class LoadingScene extends SceneBase {
|
||||
@ -208,14 +206,6 @@ export class LoadingScene extends SceneBase {
|
||||
this.loadAtlas("trainer_f_back", "trainer");
|
||||
this.loadAtlas("trainer_f_back_pb", "trainer");
|
||||
|
||||
Utils.getEnumValues(TrainerType).map(tt => {
|
||||
const config = trainerConfigs[tt];
|
||||
this.loadAtlas(config.getSpriteKey(), "trainer");
|
||||
if (config.doubleOnly || config.hasDouble) {
|
||||
this.loadAtlas(config.getSpriteKey(true), "trainer");
|
||||
}
|
||||
});
|
||||
|
||||
// Load character sprites
|
||||
this.loadAtlas("c_rival_m", "character", "rival_m");
|
||||
this.loadAtlas("c_rival_f", "character", "rival_f");
|
||||
|
@ -8,7 +8,6 @@ import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest";
|
||||
describe("Abilities - Arena Trap", () => {
|
||||
let phaserGame: Phaser.Game;
|
||||
let game: GameManager;
|
||||
const TIMEOUT = 20 * 1000;
|
||||
|
||||
beforeAll(() => {
|
||||
phaserGame = new Phaser.Game({
|
||||
@ -43,7 +42,7 @@ describe("Abilities - Arena Trap", () => {
|
||||
await game.toNextTurn();
|
||||
|
||||
expect(enemy).toBe(game.scene.getEnemyPokemon());
|
||||
}, TIMEOUT);
|
||||
});
|
||||
|
||||
it("should guarantee double battle with any one LURE", async () => {
|
||||
game.override
|
||||
@ -55,5 +54,5 @@ describe("Abilities - Arena Trap", () => {
|
||||
await game.classicMode.startBattle();
|
||||
|
||||
expect(game.scene.getEnemyField().length).toBe(2);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
});
|
||||
|
@ -8,7 +8,6 @@ import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest";
|
||||
describe("Abilities - Illuminate", () => {
|
||||
let phaserGame: Phaser.Game;
|
||||
let game: GameManager;
|
||||
const TIMEOUT = 20 * 1000;
|
||||
|
||||
beforeAll(() => {
|
||||
phaserGame = new Phaser.Game({
|
||||
@ -43,7 +42,7 @@ describe("Abilities - Illuminate", () => {
|
||||
await game.toNextTurn();
|
||||
|
||||
expect(player.getStatStage(Stat.ACC)).toBe(0);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
|
||||
it("should guarantee double battle with any one LURE", async () => {
|
||||
game.override
|
||||
@ -55,5 +54,5 @@ describe("Abilities - Illuminate", () => {
|
||||
await game.classicMode.startBattle();
|
||||
|
||||
expect(game.scene.getEnemyField().length).toBe(2);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
});
|
||||
|
@ -11,7 +11,6 @@ import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vite
|
||||
describe("Abilities - No Guard", () => {
|
||||
let phaserGame: Phaser.Game;
|
||||
let game: GameManager;
|
||||
const TIMEOUT = 20 * 1000;
|
||||
|
||||
beforeAll(() => {
|
||||
phaserGame = new Phaser.Game({
|
||||
@ -52,7 +51,7 @@ describe("Abilities - No Guard", () => {
|
||||
await game.phaseInterceptor.to(MoveEndPhase);
|
||||
|
||||
expect(moveEffectPhase.hitCheck).toHaveReturnedWith(true);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
|
||||
it("should guarantee double battle with any one LURE", async () => {
|
||||
game.override
|
||||
@ -64,5 +63,5 @@ describe("Abilities - No Guard", () => {
|
||||
await game.classicMode.startBattle();
|
||||
|
||||
expect(game.scene.getEnemyField().length).toBe(2);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
});
|
||||
|
@ -6,8 +6,6 @@ import GameManager from "#test/utils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
|
||||
const TIMEOUT = 20 * 1000;
|
||||
|
||||
describe("Moves - Chilly Reception", () => {
|
||||
let phaserGame: Phaser.Game;
|
||||
let game: GameManager;
|
||||
@ -39,7 +37,7 @@ describe("Moves - Chilly Reception", () => {
|
||||
|
||||
await game.phaseInterceptor.to("BerryPhase", false);
|
||||
expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
|
||||
it("should switch out even if it's snowing", async () => {
|
||||
await game.classicMode.startBattle([Species.SLOWKING, Species.MEOWTH]);
|
||||
@ -55,7 +53,7 @@ describe("Moves - Chilly Reception", () => {
|
||||
await game.phaseInterceptor.to("BerryPhase", false);
|
||||
expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW);
|
||||
expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MEOWTH);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
|
||||
it("happy case - switch out and weather changes", async () => {
|
||||
|
||||
@ -67,5 +65,5 @@ describe("Moves - Chilly Reception", () => {
|
||||
await game.phaseInterceptor.to("BerryPhase", false);
|
||||
expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.SNOW);
|
||||
expect(game.scene.getPlayerField()[0].species.speciesId).toBe(Species.MEOWTH);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
});
|
||||
|
@ -10,8 +10,6 @@ import { Species } from "#enums/species";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
|
||||
const TIMEOUT = 20 * 1000;
|
||||
|
||||
// Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Heal_Block_(move)
|
||||
describe("Moves - Heal Block", () => {
|
||||
let phaserGame: Phaser.Game;
|
||||
@ -53,8 +51,7 @@ describe("Moves - Heal Block", () => {
|
||||
|
||||
expect(player.hp).toBe(1);
|
||||
expect(enemy.hp).toBeLessThan(enemy.getMaxHp());
|
||||
}, TIMEOUT
|
||||
);
|
||||
});
|
||||
|
||||
it("shouldn't stop Liquid Ooze from dealing damage", async() => {
|
||||
game.override.enemyAbility(Abilities.LIQUID_OOZE);
|
||||
@ -70,7 +67,7 @@ describe("Moves - Heal Block", () => {
|
||||
|
||||
expect(player.isFullHp()).toBe(false);
|
||||
expect(enemy.isFullHp()).toBe(false);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
|
||||
it("should stop delayed heals, such as from Wish", async() => {
|
||||
await game.classicMode.startBattle([Species.CHARIZARD]);
|
||||
@ -89,7 +86,7 @@ describe("Moves - Heal Block", () => {
|
||||
}
|
||||
|
||||
expect(player.hp).toBe(1);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
|
||||
it("should prevent Grassy Terrain from restoring HP", async() => {
|
||||
game.override.enemyAbility(Abilities.GRASSY_SURGE);
|
||||
@ -104,7 +101,7 @@ describe("Moves - Heal Block", () => {
|
||||
await game.phaseInterceptor.to("TurnEndPhase");
|
||||
|
||||
expect(player.hp).toBe(1);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
|
||||
it("should prevent healing from heal-over-time moves", async() => {
|
||||
await game.classicMode.startBattle([Species.CHARIZARD]);
|
||||
@ -118,7 +115,7 @@ describe("Moves - Heal Block", () => {
|
||||
|
||||
expect(player.getTag(BattlerTagType.AQUA_RING)).toBeDefined();
|
||||
expect(player.hp).toBe(1);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
|
||||
it("should prevent abilities from restoring HP", async() => {
|
||||
game.override
|
||||
@ -135,7 +132,7 @@ describe("Moves - Heal Block", () => {
|
||||
await game.phaseInterceptor.to("TurnEndPhase");
|
||||
|
||||
expect(player.hp).toBe(1);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
|
||||
it("should stop healing from items", async() => {
|
||||
game.override.startingHeldItems([{name: "LEFTOVERS"}]);
|
||||
@ -149,5 +146,5 @@ describe("Moves - Heal Block", () => {
|
||||
await game.phaseInterceptor.to("TurnEndPhase");
|
||||
|
||||
expect(player.hp).toBe(1);
|
||||
}, TIMEOUT);
|
||||
});
|
||||
});
|
||||
|
@ -288,25 +288,29 @@ export default class RunInfoUiHandler extends UiHandler {
|
||||
private parseTrainerDefeat(enemyContainer: Phaser.GameObjects.Container) {
|
||||
// Creating the trainer sprite and adding it to enemyContainer
|
||||
const tObj = this.runInfo.trainer.toTrainer(this.scene);
|
||||
const tObjSpriteKey = tObj.config.getSpriteKey(this.runInfo.trainer.variant === TrainerVariant.FEMALE, false);
|
||||
const tObjSprite = this.scene.add.sprite(0, 5, tObjSpriteKey);
|
||||
if (this.runInfo.trainer.variant === TrainerVariant.DOUBLE) {
|
||||
const doubleContainer = this.scene.add.container(5, 8);
|
||||
tObjSprite.setPosition(-3, -3);
|
||||
const tObjPartnerSpriteKey = tObj.config.getSpriteKey(true, true);
|
||||
const tObjPartnerSprite = this.scene.add.sprite(5, -3, tObjPartnerSpriteKey);
|
||||
// Double Trainers have smaller sprites than Single Trainers
|
||||
tObjPartnerSprite.setScale(0.20);
|
||||
tObjSprite.setScale(0.20);
|
||||
doubleContainer.add(tObjSprite);
|
||||
doubleContainer.add(tObjPartnerSprite);
|
||||
doubleContainer.setPosition(12, 38);
|
||||
enemyContainer.add(doubleContainer);
|
||||
} else {
|
||||
tObjSprite.setScale(0.35, 0.35);
|
||||
tObjSprite.setPosition(12, 28);
|
||||
enemyContainer.add(tObjSprite);
|
||||
}
|
||||
|
||||
// Loads trainer assets on demand, as they are not loaded by default in the scene
|
||||
tObj.config.loadAssets(this.scene, this.runInfo.trainer.variant).then(() => {
|
||||
const tObjSpriteKey = tObj.config.getSpriteKey(this.runInfo.trainer.variant === TrainerVariant.FEMALE, false);
|
||||
const tObjSprite = this.scene.add.sprite(0, 5, tObjSpriteKey);
|
||||
if (this.runInfo.trainer.variant === TrainerVariant.DOUBLE) {
|
||||
const doubleContainer = this.scene.add.container(5, 8);
|
||||
tObjSprite.setPosition(-3, -3);
|
||||
const tObjPartnerSpriteKey = tObj.config.getSpriteKey(true, true);
|
||||
const tObjPartnerSprite = this.scene.add.sprite(5, -3, tObjPartnerSpriteKey);
|
||||
// Double Trainers have smaller sprites than Single Trainers
|
||||
tObjPartnerSprite.setScale(0.20);
|
||||
tObjSprite.setScale(0.20);
|
||||
doubleContainer.add(tObjSprite);
|
||||
doubleContainer.add(tObjPartnerSprite);
|
||||
doubleContainer.setPosition(12, 38);
|
||||
enemyContainer.add(doubleContainer);
|
||||
} else {
|
||||
tObjSprite.setScale(0.35, 0.35);
|
||||
tObjSprite.setPosition(12, 28);
|
||||
enemyContainer.add(tObjSprite);
|
||||
}
|
||||
});
|
||||
|
||||
// Determining which Terastallize Modifier belongs to which Pokemon
|
||||
// Creates a dictionary {PokemonId: TeraShardType}
|
||||
|
Loading…
Reference in New Issue
Block a user