From 5e190d07822dc372b6d203d52df4e4e0a635a13f Mon Sep 17 00:00:00 2001 From: spindrift64 <102487911+spindrift64@users.noreply.github.com> Date: Thu, 8 May 2025 20:17:32 +0200 Subject: [PATCH] Fix gems activating for moves that don't deal type damage (#6789) --- src/battle_main.c | 5 ++++- src/battle_script_commands.c | 1 - test/battle/hold_effect/gems.c | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/battle_main.c b/src/battle_main.c index 671a31737b..3f6c5e8617 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -6074,7 +6074,10 @@ void SetTypeBeforeUsingMove(u32 move, u32 battler) gBattleStruct->dynamicMoveType = TYPE_ELECTRIC | F_DYNAMIC_TYPE_SET; // Check if a gem should activate. - if (holdEffect == HOLD_EFFECT_GEMS && GetBattleMoveType(move) == ItemId_GetSecondaryId(heldItem)) + if (holdEffect == HOLD_EFFECT_GEMS + && GetBattleMoveType(move) == ItemId_GetSecondaryId(heldItem) + && GetMoveEffect(move) != EFFECT_PLEDGE + && GetMovePower(move) > 1) { gSpecialStatuses[battler].gemParam = GetBattlerHoldEffectParam(battler); gSpecialStatuses[battler].gemBoost = TRUE; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index bd9e19b035..39e23021fa 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2202,7 +2202,6 @@ static void Cmd_adjustdamage(void) && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) && !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && gBattleMons[gBattlerAttacker].item - && moveEffect != EFFECT_PLEDGE && gCurrentMove != MOVE_STRUGGLE) { BattleScriptPushCursor(); diff --git a/test/battle/hold_effect/gems.c b/test/battle/hold_effect/gems.c index 52c85d7fb5..5486443808 100644 --- a/test/battle/hold_effect/gems.c +++ b/test/battle/hold_effect/gems.c @@ -87,3 +87,19 @@ SINGLE_BATTLE_TEST("Gem is consumed if the move type is changed") ANIMATION(ANIM_TYPE_MOVE, MOVE_FEINT_ATTACK, player); } } + +SINGLE_BATTLE_TEST("Gem is not consumed if a no type damage move is used") //ie. Counter, Psywave, Super Fang. All these moves have 1 base power. +{ + ASSUME(GetMovePower(MOVE_PSYWAVE) == 1); + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PSYCHIC_GEM); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PSYWAVE); } + } SCENE { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("The Psychic Gem strengthened Wobbuffet's power!"); + } + } +}