From 271f19e6cb0ad7450ac127d20865aee6fb8c3f32 Mon Sep 17 00:00:00 2001 From: Xhyzi Date: Tue, 15 Jun 2021 20:01:57 +0200 Subject: [PATCH] Terrain Pulse --- data/battle_scripts_1.s | 2 ++ include/constants/battle_move_effects.h | 3 ++- src/battle_main.c | 11 +++++++++++ src/battle_util.c | 4 ++++ src/data/battle_moves.h | 2 +- 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 02da8a3bb8..6f074b6643 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -375,6 +375,7 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectRisingVoltage .4byte BattleScript_EffectCorrosiveGas .4byte BattleScript_EffectBeakBlast + .4byte BattleScript_EffectTerrainPulse BattleScript_EffectBeakBlast:: attackcanceler @@ -2196,6 +2197,7 @@ BattleScript_EffectBelch: BattleScript_EffectBodyPress: BattleScript_EffectExpandingForce: BattleScript_EffectRisingVoltage: +BattleScript_EffectTerrainPulse: BattleScript_HitFromAtkCanceler:: attackcanceler diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 1ccba4d43a..d975da2fb0 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -359,7 +359,8 @@ #define EFFECT_RISING_VOLTAGE 353 #define EFFECT_CORROSIVE_GAS 354 #define EFFECT_BEAK_BLAST 355 +#define EFFECT_TERRAIN_PULSE 356 -#define NUM_BATTLE_MOVE_EFFECTS 356 +#define NUM_BATTLE_MOVE_EFFECTS 357 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/src/battle_main.c b/src/battle_main.c index f053c13ef9..9f51051510 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5070,6 +5070,17 @@ void SetTypeBeforeUsingMove(u16 move, u8 battlerAtk) if (ItemId_GetPocket(gBattleMons[battlerAtk].item) == POCKET_BERRIES) gBattleStruct->dynamicMoveType = gNaturalGiftTable[ITEM_TO_BERRY(gBattleMons[battlerAtk].item)].type; } + else if (gBattleMoves[move].effect == EFFECT_TERRAIN_PULSE) + { + if (gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN) + gBattleStruct->dynamicMoveType = TYPE_FAIRY | 0x80; + else if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN) + gBattleStruct->dynamicMoveType = TYPE_ELECTRIC | 0x80; + else if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN) + gBattleStruct->dynamicMoveType = TYPE_PSYCHIC | 0x80; + else if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN) + gBattleStruct->dynamicMoveType = TYPE_GRASS | 0x80; + } attackerAbility = GetBattlerAbility(battlerAtk); GET_MOVE_TYPE(move, moveType); diff --git a/src/battle_util.c b/src/battle_util.c index 9d7453bab6..1f0ef56ae5 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -7224,6 +7224,10 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) #endif basePower *= 2; break; + case EFFECT_TERRAIN_PULSE: + if (gFieldStatuses & (STATUS_FIELD_GRASSY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_PSYCHIC_TERRAIN)) + basePower *= 2; + break; } if (basePower == 0) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 2455b90cdf..8bcdccc850 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11332,7 +11332,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_TERRAIN_PULSE] = { - .effect = EFFECT_PLACEHOLDER, //TODO + .effect = EFFECT_TERRAIN_PULSE, .power = 50, .type = TYPE_NORMAL, .accuracy = 100,