Compare commits

...

3 Commits

Author SHA1 Message Date
Acelynn Zhang
9328f69b13
Merge e20d7047f7 into 79576ad117 2025-08-09 09:49:16 -04:00
NightKev
79576ad117
[GitHub] Update .github/CODEOWNERS file (#6240)
* [GitHub] Update `.github/CODEOWNERS` file

`@pagefaultgames/senior-dev-team` added to
`package.json` and `pnpm-lock.yaml`

`@pagefaultgames/balance-team` added to `/src/data/trainers`

* Move senior dev team entries to the bottom of the file
2025-08-09 03:18:40 +00:00
Acelynn Zhang
e20d7047f7 Fix behavior of ally-targeting moves during sleep 2025-07-29 22:02:18 -05:00
3 changed files with 53 additions and 13 deletions

12
.github/CODEOWNERS vendored
View File

@ -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
@ -19,4 +16,11 @@
/public/audio @pagefaultgames/composer-team
# 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/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

View File

@ -120,14 +120,8 @@ export class MovePhase extends BattlePhase {
console.log(MoveId[this.move.moveId], enumValueToKey(MoveUseMode, this.useMode));
// Check if move is unusable (e.g. running out of PP due to a mid-turn Spite
// or the user no longer being on field), ending the phase early if not.
if (!this.canMove(true)) {
if (this.pokemon.isActive(true)) {
this.fail();
this.showMoveText();
this.showFailedText();
}
if (!this.pokemon.isActive(true)) {
this.cancel();
this.end();
return;
}
@ -155,6 +149,7 @@ export class MovePhase extends BattlePhase {
this.resolveCounterAttackTarget();
// Check status cancellation from sleep, freeze, etc.
this.resolvePreMoveStatusEffects();
this.lapsePreMoveAndMoveTags();
@ -180,6 +175,18 @@ export class MovePhase extends BattlePhase {
const targets = this.getActiveTargetPokemon();
const moveQueue = this.pokemon.getMoveQueue();
// Check if move is unusable (e.g. running out of PP due to a mid-turn Spite
// or the user no longer being on field)
if (!this.canMove(true)) {
if (this.pokemon.isActive(true)) {
this.fail();
this.showMoveText();
this.showFailedText();
}
return;
}
if (
(targets.length === 0 && !this.move.getMove().hasAttr("AddArenaTrapTagAttr")) ||
(moveQueue.length > 0 && moveQueue[0].move === MoveId.NONE)

View File

@ -353,7 +353,7 @@ describe("Status Effects", () => {
beforeEach(() => {
game = new GameManager(phaserGame);
game.override
.moveset([MoveId.SPLASH])
.moveset([MoveId.SPLASH, MoveId.DRAGON_CHEER])
.ability(AbilityId.BALL_FETCH)
.battleStyle("single")
.criticalHits(false)
@ -390,6 +390,35 @@ describe("Status Effects", () => {
expect(player.status).toBeFalsy();
expect(player.getLastXMoves(1)[0].result).toBe(MoveResult.SUCCESS);
});
it("Sleep turns should tick down when failing to use ally-targeting moves", async () => {
await game.classicMode.startBattle([SpeciesId.FEEBAS]);
const player = game.field.getPlayerPokemon();
player.status = new Status(StatusEffect.SLEEP, 0, 4);
game.move.select(MoveId.DRAGON_CHEER);
await game.toNextTurn();
expect(player.status.effect).toBe(StatusEffect.SLEEP);
game.move.select(MoveId.DRAGON_CHEER);
await game.toNextTurn();
expect(player.status.effect).toBe(StatusEffect.SLEEP);
game.move.select(MoveId.DRAGON_CHEER);
await game.toNextTurn();
expect(player.status.effect).toBe(StatusEffect.SLEEP);
expect(player.getLastXMoves(1)[0].result).toBe(MoveResult.FAIL);
game.move.select(MoveId.DRAGON_CHEER);
await game.toNextTurn();
expect(player.status).toBeFalsy();
expect(player.getLastXMoves(1)[0].result).toBe(MoveResult.FAIL);
});
});
describe("Behavior", () => {