mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-09-04 13:49:32 +02:00
Compare commits
6 Commits
35981318e5
...
20c482c3c4
Author | SHA1 | Date | |
---|---|---|---|
|
20c482c3c4 | ||
|
79576ad117 | ||
|
f0a56a3049 | ||
|
7316628448 | ||
|
2d6267b668 | ||
|
8b65f9afab |
10
.github/CODEOWNERS
vendored
10
.github/CODEOWNERS
vendored
@ -3,9 +3,6 @@
|
||||
# everything (whole code-base) - Junior Devs
|
||||
* @pagefaultgames/junior-dev-team
|
||||
|
||||
# github actions/templates etc. - Dev Leads
|
||||
/.github @pagefaultgames/senior-dev-team
|
||||
|
||||
# Art Team
|
||||
/public/**/*.png @pagefaultgames/art-team
|
||||
/public/**/*.json @pagefaultgames/art-team
|
||||
@ -20,3 +17,10 @@
|
||||
|
||||
# Balance Files; contain actual code logic and must also be owned by dev team
|
||||
/src/data/balance @pagefaultgames/balance-team @pagefaultgames/junior-dev-team
|
||||
/src/data/trainers @pagefaultgames/balance-team @pagefaultgames/junior-dev-team
|
||||
|
||||
# GitHub actions/templates etc. - Senior Devs
|
||||
# Should be defined last in the file to make sure these always override all other definitions
|
||||
/.github @pagefaultgames/senior-dev-team
|
||||
package.json @pagefaultgames/senior-dev-team
|
||||
pnpm-lock.yaml @pagefaultgames/senior-dev-team
|
41
public/images/trainer/rocket_boss_giovanni_1.json
Normal file
41
public/images/trainer/rocket_boss_giovanni_1.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"textures": [
|
||||
{
|
||||
"image": "rocket_boss_giovanni_1.png",
|
||||
"format": "RGBA8888",
|
||||
"size": {
|
||||
"w": 79,
|
||||
"h": 79
|
||||
},
|
||||
"scale": 1,
|
||||
"frames": [
|
||||
{
|
||||
"filename": "0001.png",
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"sourceSize": {
|
||||
"w": 39,
|
||||
"h": 79
|
||||
},
|
||||
"spriteSourceSize": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 39,
|
||||
"h": 79
|
||||
},
|
||||
"frame": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 39,
|
||||
"h": 79
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"app": "https://www.codeandweb.com/texturepacker",
|
||||
"version": "3.0",
|
||||
"smartupdate": "$TexturePacker:SmartUpdate:d6c5e1804414106d43a7c46f83468d39:1f3f7898a58950988acac6ee7167e012:5f742cbdaafcd5ae864f18ec2af7512a$"
|
||||
}
|
||||
}
|
BIN
public/images/trainer/rocket_boss_giovanni_1.png
Normal file
BIN
public/images/trainer/rocket_boss_giovanni_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 698 B |
@ -223,9 +223,8 @@ export class TrainerConfig {
|
||||
case TrainerType.LARRY_ELITE:
|
||||
trainerType = TrainerType.LARRY;
|
||||
break;
|
||||
case TrainerType.ROCKET_BOSS_GIOVANNI_1:
|
||||
case TrainerType.ROCKET_BOSS_GIOVANNI_2:
|
||||
trainerType = TrainerType.GIOVANNI;
|
||||
trainerType = TrainerType.ROCKET_BOSS_GIOVANNI_1;
|
||||
break;
|
||||
case TrainerType.MAXIE_2:
|
||||
trainerType = TrainerType.MAXIE;
|
||||
@ -895,7 +894,7 @@ export class TrainerConfig {
|
||||
|
||||
/**
|
||||
* Helper function to check if a specialty type is set
|
||||
* @returns true if specialtyType is defined and not Type.UNKNOWN
|
||||
* @returns `true` if `specialtyType` is defined and not {@link PokemonType.UNKNOWN}
|
||||
*/
|
||||
hasSpecialtyType(): boolean {
|
||||
return !isNullOrUndefined(this.specialtyType) && this.specialtyType !== PokemonType.UNKNOWN;
|
||||
|
@ -44,6 +44,22 @@ describe("Abilities - Intimidate", () => {
|
||||
expect(enemy.getStatStage(Stat.ATK)).toBe(-2);
|
||||
});
|
||||
|
||||
// TODO: This fails due to a limitation in our switching logic - the animations and field entry occur concurrently
|
||||
// inside `SummonPhase`, unshifting 2 `PostSummmonPhase`s and proccing intimidate twice
|
||||
it.todo("should lower all opponents' ATK by 1 stage on initial switch prompt", async () => {
|
||||
await game.classicMode.runToSummon([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA]);
|
||||
await game.classicMode.startBattleWithSwitch(1);
|
||||
|
||||
const [poochyena, mightyena] = game.scene.getPlayerField();
|
||||
expect(poochyena.species.speciesId).toBe(SpeciesId.POOCHYENA);
|
||||
|
||||
const enemy = game.field.getEnemyPokemon();
|
||||
expect(enemy).toHaveStatStage(Stat.ATK, -1);
|
||||
|
||||
expect(poochyena).toHaveAbilityApplied(AbilityId.INTIMIDATE);
|
||||
expect(mightyena).not.toHaveAbilityApplied(AbilityId.INTIMIDATE);
|
||||
});
|
||||
|
||||
it("should lower ATK of all opponents in a double battle", async () => {
|
||||
game.override.battleStyle("double");
|
||||
await game.classicMode.startBattle([SpeciesId.MIGHTYENA]);
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { getGameMode } from "#app/game-mode";
|
||||
import overrides from "#app/overrides";
|
||||
import { BattleStyle } from "#enums/battle-style";
|
||||
import { Button } from "#enums/buttons";
|
||||
import { GameModes } from "#enums/game-modes";
|
||||
import { Nature } from "#enums/nature";
|
||||
import type { SpeciesId } from "#enums/species-id";
|
||||
@ -100,4 +101,33 @@ export class ClassicModeHelper extends GameManagerHelper {
|
||||
await this.game.phaseInterceptor.to(CommandPhase);
|
||||
console.log("==================[New Turn]==================");
|
||||
}
|
||||
|
||||
/**
|
||||
* Queue inputs to switch at the start of the next battle, and then start it.
|
||||
* @param pokemonIndex - The 0-indexed position of the party pokemon to switch to.
|
||||
* Should never be called with 0 as that will select the currently active pokemon and freeze
|
||||
* @returns A Promise that resolves once the battle has been started and the switch prompt resolved
|
||||
* @todo Make this work for double battles
|
||||
* @example
|
||||
* ```ts
|
||||
* await game.classicMode.runToSummon([SpeciesId.MIGHTYENA, SpeciesId.POOCHYENA])
|
||||
* await game.startBattleWithSwitch(1);
|
||||
* ```
|
||||
*/
|
||||
public async startBattleWithSwitch(pokemonIndex: number): Promise<void> {
|
||||
this.game.scene.battleStyle = BattleStyle.SWITCH;
|
||||
this.game.onNextPrompt(
|
||||
"CheckSwitchPhase",
|
||||
UiMode.CONFIRM,
|
||||
() => {
|
||||
this.game.scene.ui.getHandler().setCursor(0);
|
||||
this.game.scene.ui.getHandler().processInput(Button.ACTION);
|
||||
},
|
||||
() => this.game.isCurrentPhase("CommandPhase") || this.game.isCurrentPhase("TurnInitPhase"),
|
||||
);
|
||||
this.game.doSelectPartyPokemon(pokemonIndex);
|
||||
|
||||
await this.game.phaseInterceptor.to("CommandPhase");
|
||||
console.log("==================[New Battle (Initial Switch)]==================");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user