From e87fe533c3ce9b97046c5e6ca0b865d69f824e60 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Sun, 24 Dec 2023 23:43:12 +0900 Subject: [PATCH] Superpower, CC, Hammer Arm --- data/battle_scripts_1.s | 18 ++-------- include/constants/battle_move_effects.h | 6 ++-- src/battle_ai_main.c | 6 ++-- src/battle_ai_util.c | 4 ++- src/battle_tv.c | 2 -- src/data/battle_moves.h | 48 +++++++++++++++---------- test/battle/ability/hyper_cutter.c | 2 +- 7 files changed, 43 insertions(+), 43 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 02993884d5..9decc8c1d7 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -116,7 +116,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectConversion2 @ EFFECT_CONVERSION_2 .4byte BattleScript_EffectLockOn @ EFFECT_LOCK_ON .4byte BattleScript_EffectSketch @ EFFECT_SKETCH - .4byte BattleScript_EffectHammerArm @ EFFECT_HAMMER_ARM + .4byte BattleScript_EffectHit @ EFFECT_UNUSED_94 .4byte BattleScript_EffectSleepTalk @ EFFECT_SLEEP_TALK .4byte BattleScript_EffectDestinyBond @ EFFECT_DESTINY_BOND .4byte BattleScript_EffectHit @ EFFECT_FLAIL @@ -199,7 +199,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectWish @ EFFECT_WISH .4byte BattleScript_EffectAssist @ EFFECT_ASSIST .4byte BattleScript_EffectIngrain @ EFFECT_INGRAIN - .4byte BattleScript_EffectSuperpower @ EFFECT_SUPERPOWER + .4byte BattleScript_EffectHit @ EFFECT_UNUSED_177 .4byte BattleScript_EffectMagicCoat @ EFFECT_MAGIC_COAT .4byte BattleScript_EffectRecycle @ EFFECT_RECYCLE .4byte BattleScript_EffectHit @ EFFECT_REVENGE @@ -301,7 +301,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectReflectType @ EFFECT_REFLECT_TYPE .4byte BattleScript_EffectSoak @ EFFECT_SOAK .4byte BattleScript_EffectGrowth @ EFFECT_GROWTH - .4byte BattleScript_EffectCloseCombat @ EFFECT_CLOSE_COMBAT + .4byte BattleScript_EffectHit @ EFFECT_UNUSED_279 .4byte BattleScript_EffectLastResort @ EFFECT_LAST_RESORT .4byte BattleScript_EffectHit @ EFFECT_RECOIL_33_STATUS .4byte BattleScript_EffectHit @ EFFECT_UNUSED_282 @@ -5630,14 +5630,6 @@ BattleScript_EffectIngrain: waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd -BattleScript_EffectSuperpower: - setmoveeffect MOVE_EFFECT_ATK_DEF_DOWN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN - goto BattleScript_EffectHit - -BattleScript_EffectCloseCombat: - setmoveeffect MOVE_EFFECT_DEF_SPDEF_DOWN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN - goto BattleScript_EffectHit - BattleScript_EffectMagicCoat: attackcanceler trysetmagiccoat BattleScript_FailedFromAtkString @@ -5884,10 +5876,6 @@ BattleScript_EffectWaterSport:: waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd -BattleScript_EffectHammerArm:: - setmoveeffect MOVE_EFFECT_SPD_MINUS_1 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN - goto BattleScript_EffectHit - BattleScript_EffectTickle:: attackcanceler attackstring diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 35dd8e6458..d47a274784 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -95,7 +95,7 @@ #define EFFECT_CONVERSION_2 91 #define EFFECT_LOCK_ON 92 #define EFFECT_SKETCH 93 -#define EFFECT_HAMMER_ARM 94 +#define EFFECT_UNUSED_94 94 #define EFFECT_SLEEP_TALK 95 #define EFFECT_DESTINY_BOND 96 #define EFFECT_FLAIL 97 @@ -178,7 +178,7 @@ #define EFFECT_WISH 174 #define EFFECT_ASSIST 175 #define EFFECT_INGRAIN 176 -#define EFFECT_SUPERPOWER 177 +#define EFFECT_UNUSED_177 177 #define EFFECT_MAGIC_COAT 178 #define EFFECT_RECYCLE 179 #define EFFECT_REVENGE 180 @@ -282,7 +282,7 @@ #define EFFECT_REFLECT_TYPE 276 #define EFFECT_SOAK 277 #define EFFECT_GROWTH 278 -#define EFFECT_CLOSE_COMBAT 279 +#define EFFECT_UNUSED_279 279 #define EFFECT_LAST_RESORT 280 #define EFFECT_RECOIL_33_STATUS 281 #define EFFECT_UNUSED_282 282 diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index b622fe423b..969deb5f23 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -4339,7 +4339,6 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score else ADJUST_SCORE(1); break; - case EFFECT_SUPERPOWER: case EFFECT_MAKE_IT_RAIN: if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY) ADJUST_SCORE(3); @@ -4870,7 +4869,10 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if (sereneGraceBoost) IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPATK, &score); break; - // case EFFECT_SUPERPOWER: + // Effects that lower stat(s) - only need to consider Contrary + case MOVE_EFFECT_V_CREATE: + case MOVE_EFFECT_DEF_SPDEF_DOWN: + case MOVE_EFFECT_ATK_DEF_DOWN: case MOVE_EFFECT_SP_ATK_TWO_DOWN: if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY) ADJUST_SCORE(3); diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 476f3a4bb6..5ee70f9456 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -955,7 +955,6 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s switch (gBattleMoves[move].effect) { case EFFECT_RECHARGE: - case EFFECT_SUPERPOWER: case EFFECT_MAKE_IT_RAIN: case EFFECT_MIND_BLOWN: case EFFECT_STEEL_BEAM: @@ -978,6 +977,9 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s case MOVE_EFFECT_SPD_MINUS_1: case MOVE_EFFECT_SP_ATK_MINUS_1: case MOVE_EFFECT_SP_ATK_TWO_DOWN: + case MOVE_EFFECT_V_CREATE: + case MOVE_EFFECT_ATK_DEF_DOWN: + case MOVE_EFFECT_DEF_SPDEF_DOWN: case MOVE_EFFECT_SP_DEF_MINUS_1: case MOVE_EFFECT_SP_DEF_MINUS_2: if ((gBattleMoves[move].additionalEffects[i].self && GetBattlerAbility(battlerAtk) != ABILITY_CONTRARY) diff --git a/src/battle_tv.c b/src/battle_tv.c index 1bd97fcb4d..fad7d2a103 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -246,7 +246,6 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_WISH] = 2, [EFFECT_ASSIST] = 2, [EFFECT_INGRAIN] = 6, - [EFFECT_SUPERPOWER] = 3, [EFFECT_MAGIC_COAT] = 6, [EFFECT_RECYCLE] = 4, [EFFECT_REVENGE] = 4, @@ -344,7 +343,6 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_REFLECT_TYPE] = 0, // TODO: Assign points [EFFECT_SOAK] = 0, // TODO: Assign points [EFFECT_GROWTH] = 0, // TODO: Assign points - [EFFECT_CLOSE_COMBAT] = 0, // TODO: Assign points [EFFECT_LAST_RESORT] = 0, // TODO: Assign points [EFFECT_RECOIL_33_STATUS] = 0, // TODO: Assign points [EFFECT_RECOIL_50] = 0, // TODO: Assign points diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 4d29c8754e..4b61f3c1b3 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -5061,17 +5061,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_SUPERPOWER] = { - .effect = EFFECT_SUPERPOWER, + .effect = EFFECT_HIT, .power = 120, .type = TYPE_FIGHTING, .accuracy = 100, .pp = 5, - .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + ADDITIONAL_EFFECTS( + PRIMARY_EFFECT_SELF(MOVE_EFFECT_ATK_DEF_DOWN) + ), }, [MOVE_MAGIC_COAT] = @@ -6542,18 +6544,20 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_HAMMER_ARM] = { - .effect = EFFECT_HAMMER_ARM, + .effect = EFFECT_HIT, .power = 100, .type = TYPE_FIGHTING, .accuracy = 90, .pp = 10, - .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .punchingMove = TRUE, + ADDITIONAL_EFFECTS( + PRIMARY_EFFECT_SELF(MOVE_EFFECT_SPD_MINUS_1) + ), }, [MOVE_GYRO_BALL] = @@ -6727,17 +6731,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_CLOSE_COMBAT] = { - .effect = EFFECT_CLOSE_COMBAT, + .effect = EFFECT_HIT, .power = 120, .type = TYPE_FIGHTING, .accuracy = 100, .pp = 5, - .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + ADDITIONAL_EFFECTS( + PRIMARY_EFFECT_SELF(MOVE_EFFECT_DEF_SPDEF_DOWN) + ), }, [MOVE_PAYBACK] = @@ -11042,18 +11048,20 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_DRAGON_ASCENT] = { - .effect = EFFECT_CLOSE_COMBAT, + .effect = EFFECT_HIT, .power = 120, .type = TYPE_FLYING, .accuracy = 100, .pp = 5, - .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .metronomeBanned = TRUE, + ADDITIONAL_EFFECTS( + PRIMARY_EFFECT_SELF(MOVE_EFFECT_DEF_SPDEF_DOWN) + ), }, [MOVE_HYPERSPACE_FURY] = @@ -11182,18 +11190,20 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_ICE_HAMMER] = { - .effect = EFFECT_HAMMER_ARM, + .effect = EFFECT_HIT, .power = 100, .type = TYPE_ICE, .accuracy = 90, .pp = 10, - .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .punchingMove = TRUE, + ADDITIONAL_EFFECTS( + PRIMARY_EFFECT_SELF(MOVE_EFFECT_SPD_MINUS_1) + ), }, [MOVE_FLORAL_HEALING] = @@ -13585,22 +13595,20 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_HEADLONG_RUSH] = { - #if B_UPDATED_MOVE_DATA >= GEN_9 - .power = 120, - #else - .power = 100, - #endif - .effect = EFFECT_CLOSE_COMBAT, + .effect = EFFECT_HIT, + .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 100, .type = TYPE_GROUND, .accuracy = 100, .pp = 5, - .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .punchingMove = TRUE, + ADDITIONAL_EFFECTS( + PRIMARY_EFFECT_SELF(MOVE_EFFECT_DEF_SPDEF_DOWN) + ), }, [MOVE_BARB_BARRAGE] = @@ -14476,17 +14484,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_ARMOR_CANNON] = { - .effect = EFFECT_CLOSE_COMBAT, + .effect = EFFECT_HIT, .power = 120, .type = TYPE_FIRE, .accuracy = 100, .pp = 5, - .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .metronomeBanned = TRUE, + ADDITIONAL_EFFECTS( + PRIMARY_EFFECT_SELF(MOVE_EFFECT_DEF_SPDEF_DOWN) + ), }, [MOVE_BITTER_BLADE] = diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index d11a197ebe..f46c021eb5 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -79,7 +79,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker") SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack stage reduction from moves used by the user") { GIVEN { - ASSUME(gBattleMoves[MOVE_SUPERPOWER].effect == EFFECT_SUPERPOWER); + ASSUME(gBattleMoves[MOVE_SUPERPOWER].additionalEffects[0].moveEffect == MOVE_EFFECT_ATK_DEF_DOWN); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } } WHEN {