From 1c077d150652c695731ec32d8f055cc0819bc647 Mon Sep 17 00:00:00 2001 From: Ishan Patel Date: Mon, 15 Apr 2024 16:20:25 -0400 Subject: [PATCH] Initial push with roost fix --- package-lock.json | 4 ++-- src/data/battler-tags.ts | 2 ++ src/data/enums/battler-tag-type.ts | 1 + src/data/move.ts | 2 +- src/field/pokemon.ts | 6 ++++++ 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b93e2b2c6a3..5521dcc86a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pokemon-rogue-battle", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pokemon-rogue-battle", - "version": "1.0.0", + "version": "1.0.1", "dependencies": { "@material/material-color-utilities": "^0.2.7", "crypto-js": "^4.2.0", diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index a95527e6ae4..47c3ce3f840 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -1094,6 +1094,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc return new BattlerTag(BattlerTagType.BYPASS_SLEEP, BattlerTagLapseType.TURN_END, turnCount, sourceMove); case BattlerTagType.IGNORE_FLYING: return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount, sourceMove); + case BattlerTagType.GROUNDED: + return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount - 1, sourceMove); case BattlerTagType.SALT_CURED: return new SaltCuredTag(sourceId); case BattlerTagType.NONE: diff --git a/src/data/enums/battler-tag-type.ts b/src/data/enums/battler-tag-type.ts index 2dcb12ea231..4fdd8182272 100644 --- a/src/data/enums/battler-tag-type.ts +++ b/src/data/enums/battler-tag-type.ts @@ -47,5 +47,6 @@ export enum BattlerTagType { IGNORE_ACCURACY = "IGNORE_ACCURACY", BYPASS_SLEEP = "BYPASS_SLEEP", IGNORE_FLYING = "IGNORE_FLYING", + GROUNDED = "GROUNDED", SALT_CURED = "SALT_CURED" } diff --git a/src/data/move.ts b/src/data/move.ts index aa4c2204d5e..bebbc3b21ae 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -4315,7 +4315,7 @@ export function initMoves() { .attr(StatChangeAttr, BattleStat.SPATK, -2, true), new SelfStatusMove(Moves.ROOST, "Roost", Type.FLYING, -1, 5, "The user lands and rests its body. This move restores the user's HP by up to half of its max HP.", -1, 0, 4) .attr(HealAttr, 0.5) - .attr(AddBattlerTagAttr, BattlerTagType.IGNORE_FLYING, true, false, 1) + .attr(AddBattlerTagAttr, BattlerTagType.GROUNDED, true, false, 1) .triageMove(), new StatusMove(Moves.GRAVITY, "Gravity", Type.PSYCHIC, -1, 5, "This move enables Flying-type Pokémon or Pokémon with the Levitate Ability to be hit by Ground-type moves. Moves that involve flying can't be used.", -1, 0, 4) .attr(AddArenaTagAttr, ArenaTagType.GRAVITY, 5) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 6c9df8ad0cf..8911e28ac0d 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -698,6 +698,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { types.splice(flyingIndex, 1); } + if (forDefend && (this.getTag(BattlerTagType.GROUNDED) || this.scene.arena.getTag(ArenaTagType.GRAVITY))) { + const flyingIndex = types.indexOf(Type.FLYING); + if (flyingIndex > -1) + types.splice(flyingIndex, 1); + } + if (!types.length) types.push(Type.NORMAL);