From 4058d16f2f644c895a766a2edbf8257d247dd1d8 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Sat, 25 Nov 2023 23:56:17 +0900 Subject: [PATCH] 2-Turn moves + unique moves with secondary effects Two turn moves (Bounce, Freeze Shock, Sky Attack, Shadow/Phantom Force), Dire Claw, Stone Axe, Ceaseless Edge, Wicked Torque, Relic Song, Fake Out, --- asm/macros/battle_script.inc | 4 - data/battle_scripts_1.s | 31 +--- include/constants/battle_move_effects.h | 8 +- include/constants/battle_script_commands.h | 184 ++++++++++----------- src/battle_script_commands.c | 12 +- src/battle_tv.c | 1 - src/data/battle_moves.h | 60 ++++--- test/battle/move_effect/dire_claw.c | 2 +- test/battle/move_effect/relic_song.c | 1 + 9 files changed, 145 insertions(+), 158 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 35455fdc96..f53595c16d 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1821,10 +1821,6 @@ various \battler, VARIOUS_POWER_TRICK .endm - .macro argumenttomoveeffect - various BS_ATTACKER, VARIOUS_ARGUMENT_TO_MOVE_EFFECT - .endm - .macro jumpifnotgrounded battler:req, jumpInstr:req various \battler, VARIOUS_JUMP_IF_NOT_GROUNDED .4byte \jumpInstr diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c8b59f3ba0..cf2af4bcde 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -53,7 +53,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectRoar @ EFFECT_ROAR .4byte BattleScript_EffectHit @ EFFECT_MULTI_HIT .4byte BattleScript_EffectConversion @ EFFECT_CONVERSION - .4byte BattleScript_EffectFlinchHit @ EFFECT_FLINCH_HIT + .4byte BattleScript_EffectHit @ EFFECT_UNUSED_31 .4byte BattleScript_EffectRestoreHp @ EFFECT_RESTORE_HP .4byte BattleScript_EffectToxic @ EFFECT_TOXIC .4byte BattleScript_EffectPayDay @ EFFECT_PAY_DAY @@ -406,7 +406,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectExtremeEvoboost @ EFFECT_EXTREME_EVOBOOST .4byte BattleScript_EffectHitSetRemoveTerrain @ EFFECT_HIT_SET_REMOVE_TERRAIN .4byte BattleScript_EffectDarkVoid @ EFFECT_DARK_VOID - .4byte BattleScript_EffectSleepHit @ EFFECT_SLEEP_HIT + .4byte BattleScript_EffectHit @ EFFET_UNUSED_384 .4byte BattleScript_EffectDoubleShock @ EFFECT_DOUBLE_SHOCK .4byte BattleScript_EffectSpecialAttackUpHit @ EFFECT_SPECIAL_ATTACK_UP_HIT .4byte BattleScript_EffectVictoryDance @ EFFECT_VICTORY_DANCE @@ -415,8 +415,8 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectShellTrap @ EFFECT_SHELL_TRAP .4byte BattleScript_EffectHit @ EFFECT_PSYBLADE .4byte BattleScript_EffectHit @ EFFECT_HYDRO_STEAM - .4byte BattleScript_EffectHitSetEntryHazard @ EFFECT_HIT_SET_ENTRY_HAZARD - .4byte BattleScript_EffectDireClaw @ EFFECT_DIRE_CLAW + .4byte BattleScript_EffectHit @ EFFECT_HIT_SET_ENTRY_HAZARD + .4byte BattleScript_EffectHit @ EFFECT_UNUSED_394 .4byte BattleScript_EffectHit @ EFFECT_BARB_BARRAGE .4byte BattleScript_EffectRevivalBlessing @ EFFECT_REVIVAL_BLESSING .4byte BattleScript_EffectHit @ EFFECT_UNUSED_397 @@ -426,7 +426,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectTakeHeart @ EFFECT_TAKE_HEART .4byte BattleScript_EffectHit @ EFFECT_UNUSED_402 .4byte BattleScript_EffectHit @ EFFECT_COLLISION_COURSE - .4byte BattleScript_EffectHit @ EFFECT_HIT_404 + .4byte BattleScript_EffectHit @ EFFECT_UNUSED_404 .4byte BattleScript_EffectMakeItRain @ EFFECT_MAKE_IT_RAIN .4byte BattleScript_EffectCorrosiveGas @ EFFECT_CORROSIVE_GAS .4byte BattleScript_EffectHit @ EFFECT_POPULATION_BOMB @@ -563,14 +563,6 @@ BattleScript_StealthRockActivates:: waitmessage B_WAIT_TIME_LONG return -BattleScript_EffectDireClaw:: - setmoveeffect MOVE_EFFECT_DIRE_CLAW - goto BattleScript_EffectHit - -BattleScript_EffectHitSetEntryHazard:: - argumenttomoveeffect - goto BattleScript_EffectHit - BattleScript_SpikesActivates:: trysetspikes BattleScript_MoveEnd printfromtable gDmgHazardsStringIds @@ -862,7 +854,6 @@ BattleScript_SkyDropTurn2: setbyte sB_ANIM_TURN, 0x1 clearstatusfromeffect BS_ATTACKER orword gHitMarker, HITMARKER_NO_PPDEDUCT - argumenttomoveeffect clearsemiinvulnerablebit attackstring clearskydrop BattleScript_SkyDropChangedTarget @@ -1315,7 +1306,6 @@ BattleScript_NoMoveEffect: goto BattleScript_EffectHit BattleScript_EffectRelicSong: - setmoveeffect MOVE_EFFECT_SLEEP call BattleScript_EffectHit_Ret tryfaintmon BS_TARGET moveendall @@ -3343,10 +3333,6 @@ BattleScript_AbsorbHealBlock:: tryfaintmon BS_TARGET goto BattleScript_MoveEnd -BattleScript_EffectSleepHit:: - setmoveeffect MOVE_EFFECT_SLEEP - goto BattleScript_EffectHit - BattleScript_EffectExplosion_AnimDmgRet: jumpifbyte CMP_NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_ExplosionAnimRet call BattleScript_PreserveMissedBitDoMoveAnim @@ -3730,10 +3716,6 @@ BattleScript_EffectConversion:: waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd -BattleScript_EffectFlinchHit:: - setmoveeffect MOVE_EFFECT_FLINCH - goto BattleScript_EffectHit - BattleScript_EffectRestoreHp:: attackcanceler attackstring @@ -3873,7 +3855,6 @@ BattleScript_TwoTurnMovesSecondTurn:: setbyte sB_ANIM_TURN, 1 clearstatusfromeffect BS_ATTACKER orword gHitMarker, HITMARKER_NO_PPDEDUCT - argumenttomoveeffect goto BattleScript_HitFromAccCheck BattleScriptFirstChargingTurn:: @@ -5307,7 +5288,6 @@ BattleScript_SecondTurnSemiInvulnerable:: setbyte sB_ANIM_TURN, 1 clearstatusfromeffect BS_ATTACKER orword gHitMarker, HITMARKER_NO_PPDEDUCT - argumenttomoveeffect BattleScript_SemiInvulnerableTryHit:: accuracycheck BattleScript_SemiInvulnerableMiss, ACC_CURR_MOVE clearsemiinvulnerablebit @@ -5354,7 +5334,6 @@ BattleScript_AlreadyAtFullHp:: BattleScript_EffectFakeOut:: attackcanceler jumpifnotfirstturn BattleScript_FailedFromAtkString - setmoveeffect MOVE_EFFECT_FLINCH goto BattleScript_EffectHit BattleScript_FailedFromAtkCanceler:: diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 4530a2279a..ae37a27b5f 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -32,7 +32,7 @@ #define EFFECT_ROAR 28 #define EFFECT_MULTI_HIT 29 #define EFFECT_CONVERSION 30 -#define EFFECT_FLINCH_HIT 31 +#define EFFECT_UNUSED_31 31 #define EFFECT_RESTORE_HP 32 #define EFFECT_TOXIC 33 #define EFFECT_PAY_DAY 34 @@ -387,7 +387,7 @@ #define EFFECT_EXTREME_EVOBOOST 381 #define EFFECT_HIT_SET_REMOVE_TERRAIN 382 // genesis supernova #define EFFECT_DARK_VOID 383 -#define EFFECT_SLEEP_HIT 384 +#define EFFET_UNUSED_384 384 #define EFFECT_DOUBLE_SHOCK 385 #define EFFECT_SPECIAL_ATTACK_UP_HIT 386 #define EFFECT_VICTORY_DANCE 387 @@ -397,7 +397,7 @@ #define EFFECT_PSYBLADE 391 #define EFFECT_HYDRO_STEAM 392 #define EFFECT_HIT_SET_ENTRY_HAZARD 393 -#define EFFECT_DIRE_CLAW 394 +#define EFFECT_UNUSED_394 394 #define EFFECT_BARB_BARRAGE 395 #define EFFECT_REVIVAL_BLESSING 396 #define EFFECT_UNUSED_397 397 @@ -407,7 +407,7 @@ #define EFFECT_TAKE_HEART 401 #define EFFECT_UNUSED_402 402 #define EFFECT_COLLISION_COURSE 403 -#define EFFECT_HIT_404 404 +#define EFFECT_UNUSED_404 404 #define EFFECT_MAKE_IT_RAIN 405 #define EFFECT_CORROSIVE_GAS 406 #define EFFECT_POPULATION_BOMB 407 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 9526d549fd..f9901cc372 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -154,99 +154,97 @@ #define VARIOUS_POWER_TRICK 62 #define VARIOUS_AFTER_YOU 63 #define VARIOUS_BESTOW 64 -#define VARIOUS_ARGUMENT_TO_MOVE_EFFECT 65 -#define VARIOUS_JUMP_IF_NOT_GROUNDED 66 -#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 67 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 68 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 69 -#define VARIOUS_SET_AURORA_VEIL 70 -#define VARIOUS_TRY_THIRD_TYPE 71 -#define VARIOUS_ACUPRESSURE 72 -#define VARIOUS_SET_POWDER 73 -#define VARIOUS_SPECTRAL_THIEF 74 -#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 75 -#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 76 -#define VARIOUS_JUMP_IF_ROAR_FAILS 77 -#define VARIOUS_TRY_INSTRUCT 78 -#define VARIOUS_JUMP_IF_NOT_BERRY 79 -#define VARIOUS_TRACE_ABILITY 80 -#define VARIOUS_UPDATE_NICK 81 -#define VARIOUS_TRY_ILLUSION_OFF 82 -#define VARIOUS_SET_SPRITEIGNORE0HP 83 -#define VARIOUS_HANDLE_FORM_CHANGE 84 -#define VARIOUS_GET_STAT_VALUE 85 -#define VARIOUS_JUMP_IF_FULL_HP 86 -#define VARIOUS_LOSE_TYPE 87 -#define VARIOUS_TRY_ACTIVATE_SOULHEART 88 -#define VARIOUS_TRY_ACTIVATE_RECEIVER 89 -#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 90 -#define VARIOUS_TRY_FRISK 91 -#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 92 -#define VARIOUS_TRY_FAIRY_LOCK 93 -#define VARIOUS_JUMP_IF_NO_ALLY 94 -#define VARIOUS_POISON_TYPE_IMMUNITY 95 -#define VARIOUS_JUMP_IF_NO_HOLD_EFFECT 96 -#define VARIOUS_INFATUATE_WITH_BATTLER 97 -#define VARIOUS_SET_LAST_USED_ITEM 98 -#define VARIOUS_PARALYZE_TYPE_IMMUNITY 99 -#define VARIOUS_JUMP_IF_ABSENT 100 -#define VARIOUS_DESTROY_ABILITY_POPUP 101 -#define VARIOUS_TOTEM_BOOST 102 -#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 103 -#define VARIOUS_MOVEEND_ITEM_EFFECTS 104 -#define VARIOUS_TERRAIN_SEED 105 -#define VARIOUS_MAKE_INVISIBLE 106 -#define VARIOUS_ROOM_SERVICE 107 - -#define VARIOUS_EERIE_SPELL_PP_REDUCE 108 -#define VARIOUS_JUMP_IF_TEAM_HEALTHY 109 -#define VARIOUS_TRY_HEAL_QUARTER_HP 110 -#define VARIOUS_REMOVE_TERRAIN 111 -#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 112 -#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 113 -#define VARIOUS_GET_ROTOTILLER_TARGETS 114 -#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 115 -#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 116 -#define VARIOUS_CONSUME_BERRY 117 -#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 118 -#define VARIOUS_JUMP_IF_SPECIES 119 -#define VARIOUS_UPDATE_ABILITY_POPUP 120 -#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 121 -#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 122 -#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 123 -#define VARIOUS_PHOTON_GEYSER_CHECK 124 -#define VARIOUS_SHELL_SIDE_ARM_CHECK 125 -#define VARIOUS_TRY_NO_RETREAT 126 -#define VARIOUS_TRY_TAR_SHOT 127 -#define VARIOUS_CAN_TAR_SHOT_WORK 128 -#define VARIOUS_CHECK_POLTERGEIST 129 -#define VARIOUS_CUT_1_3_HP_RAISE_STATS 130 -#define VARIOUS_TRY_END_NEUTRALIZING_GAS 131 -#define VARIOUS_JUMP_IF_UNDER_200 132 -#define VARIOUS_SET_SKY_DROP 133 -#define VARIOUS_CLEAR_SKY_DROP 134 -#define VARIOUS_SKY_DROP_YAWN 135 -#define VARIOUS_JUMP_IF_HOLD_EFFECT 136 -#define VARIOUS_CURE_CERTAIN_STATUSES 137 -#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 138 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 139 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 140 -#define VARIOUS_SAVE_BATTLER_ITEM 141 -#define VARIOUS_RESTORE_BATTLER_ITEM 142 -#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 143 -#define VARIOUS_SET_BEAK_BLAST 144 -#define VARIOUS_SWAP_SIDE_STATUSES 145 -#define VARIOUS_SWAP_STATS 146 -#define VARIOUS_TEATIME_INVUL 147 -#define VARIOUS_TEATIME_TARGETS 148 -#define VARIOUS_TRY_WIND_RIDER_POWER 149 -#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 150 -#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 151 -#define VARIOUS_STORE_HEALING_WISH 152 -#define VARIOUS_HIT_SWITCH_TARGET_FAILED 153 -#define VARIOUS_TRY_REVIVAL_BLESSING 154 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 155 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 156 +#define VARIOUS_JUMP_IF_NOT_GROUNDED 65 +#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 66 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 67 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 68 +#define VARIOUS_SET_AURORA_VEIL 69 +#define VARIOUS_TRY_THIRD_TYPE 70 +#define VARIOUS_ACUPRESSURE 71 +#define VARIOUS_SET_POWDER 72 +#define VARIOUS_SPECTRAL_THIEF 73 +#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 74 +#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 75 +#define VARIOUS_JUMP_IF_ROAR_FAILS 76 +#define VARIOUS_TRY_INSTRUCT 77 +#define VARIOUS_JUMP_IF_NOT_BERRY 78 +#define VARIOUS_TRACE_ABILITY 79 +#define VARIOUS_UPDATE_NICK 80 +#define VARIOUS_TRY_ILLUSION_OFF 81 +#define VARIOUS_SET_SPRITEIGNORE0HP 82 +#define VARIOUS_HANDLE_FORM_CHANGE 83 +#define VARIOUS_GET_STAT_VALUE 84 +#define VARIOUS_JUMP_IF_FULL_HP 85 +#define VARIOUS_LOSE_TYPE 86 +#define VARIOUS_TRY_ACTIVATE_SOULHEART 87 +#define VARIOUS_TRY_ACTIVATE_RECEIVER 88 +#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 89 +#define VARIOUS_TRY_FRISK 90 +#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 91 +#define VARIOUS_TRY_FAIRY_LOCK 92 +#define VARIOUS_JUMP_IF_NO_ALLY 93 +#define VARIOUS_POISON_TYPE_IMMUNITY 94 +#define VARIOUS_JUMP_IF_NO_HOLD_EFFECT 95 +#define VARIOUS_INFATUATE_WITH_BATTLER 96 +#define VARIOUS_SET_LAST_USED_ITEM 97 +#define VARIOUS_PARALYZE_TYPE_IMMUNITY 98 +#define VARIOUS_JUMP_IF_ABSENT 99 +#define VARIOUS_DESTROY_ABILITY_POPUP 100 +#define VARIOUS_TOTEM_BOOST 101 +#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 102 +#define VARIOUS_MOVEEND_ITEM_EFFECTS 103 +#define VARIOUS_TERRAIN_SEED 104 +#define VARIOUS_MAKE_INVISIBLE 105 +#define VARIOUS_ROOM_SERVICE 106 +#define VARIOUS_EERIE_SPELL_PP_REDUCE 107 +#define VARIOUS_JUMP_IF_TEAM_HEALTHY 108 +#define VARIOUS_TRY_HEAL_QUARTER_HP 109 +#define VARIOUS_REMOVE_TERRAIN 110 +#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 111 +#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 112 +#define VARIOUS_GET_ROTOTILLER_TARGETS 113 +#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 114 +#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 115 +#define VARIOUS_CONSUME_BERRY 116 +#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 117 +#define VARIOUS_JUMP_IF_SPECIES 118 +#define VARIOUS_UPDATE_ABILITY_POPUP 119 +#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 120 +#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 121 +#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 122 +#define VARIOUS_PHOTON_GEYSER_CHECK 123 +#define VARIOUS_SHELL_SIDE_ARM_CHECK 124 +#define VARIOUS_TRY_NO_RETREAT 125 +#define VARIOUS_TRY_TAR_SHOT 126 +#define VARIOUS_CAN_TAR_SHOT_WORK 127 +#define VARIOUS_CHECK_POLTERGEIST 128 +#define VARIOUS_CUT_1_3_HP_RAISE_STATS 129 +#define VARIOUS_TRY_END_NEUTRALIZING_GAS 130 +#define VARIOUS_JUMP_IF_UNDER_200 131 +#define VARIOUS_SET_SKY_DROP 132 +#define VARIOUS_CLEAR_SKY_DROP 133 +#define VARIOUS_SKY_DROP_YAWN 134 +#define VARIOUS_JUMP_IF_HOLD_EFFECT 135 +#define VARIOUS_CURE_CERTAIN_STATUSES 136 +#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 137 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 138 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 139 +#define VARIOUS_SAVE_BATTLER_ITEM 140 +#define VARIOUS_RESTORE_BATTLER_ITEM 141 +#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 142 +#define VARIOUS_SET_BEAK_BLAST 143 +#define VARIOUS_SWAP_SIDE_STATUSES 144 +#define VARIOUS_SWAP_STATS 145 +#define VARIOUS_TEATIME_INVUL 146 +#define VARIOUS_TEATIME_TARGETS 147 +#define VARIOUS_TRY_WIND_RIDER_POWER 148 +#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 149 +#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 150 +#define VARIOUS_STORE_HEALING_WISH 151 +#define VARIOUS_HIT_SWITCH_TARGET_FAILED 152 +#define VARIOUS_TRY_REVIVAL_BLESSING 153 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 154 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 155 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index dabb7dc43d..9b5982d56d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3584,6 +3584,8 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattleScripting.moveEffect = RandomElement(RNG_DIRE_CLAW, sDireClawEffects); SetMoveEffect(TRUE, 0); } + else + gBattlescriptCurrInstr++; break; case MOVE_EFFECT_STEALTH_ROCK: if (!(gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_STEALTH_ROCK)) @@ -3592,6 +3594,8 @@ void SetMoveEffect(bool32 primary, u32 certain) BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StealthRockActivates; } + else + gBattlescriptCurrInstr++; break; case MOVE_EFFECT_SPIKES: if (gSideTimers[GetBattlerSide(gEffectBattler)].spikesAmount < 3) @@ -3600,6 +3604,8 @@ void SetMoveEffect(bool32 primary, u32 certain) BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_SpikesActivates; } + else + gBattlescriptCurrInstr++; break; case MOVE_EFFECT_SYRUP_BOMB: if (!(gStatuses4[gEffectBattler] & STATUS4_SYRUP_BOMB)) @@ -9714,12 +9720,6 @@ static void Cmd_various(void) } return; } - case VARIOUS_ARGUMENT_TO_MOVE_EFFECT: - { - VARIOUS_ARGS(); - gBattleScripting.moveEffect = gBattleMoves[gCurrentMove].argument; - break; - } case VARIOUS_JUMP_IF_NOT_GROUNDED: { VARIOUS_ARGS(const u8 *jumpInstr); diff --git a/src/battle_tv.c b/src/battle_tv.c index 7dab9b842a..7880b29086 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -463,7 +463,6 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_EXTREME_EVOBOOST] = 0, // TODO: Assign points [EFFECT_HIT_SET_REMOVE_TERRAIN] = 0, // TODO: Assign points [EFFECT_DARK_VOID] = 0, // TODO: Assign points - [EFFECT_SLEEP_HIT] = 1, [EFFECT_DOUBLE_SHOCK] = 0, // TODO: Assign points [EFFECT_SPECIAL_ATTACK_UP_HIT] = 1, [EFFECT_VICTORY_DANCE] = 0, // TODO: Assign points diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index b116756d6b..58d44053dd 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -526,7 +526,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .sheerForceBoost = TRUE, ADDITIONAL_EFFECTS( SECONDARY_EFFECT(MOVE_EFFECT_FLINCH, 30) - ) + ), }, [MOVE_HORN_ATTACK] = @@ -2566,16 +2566,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_FLYING, .accuracy = 90, .pp = 5, - .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .argument = MOVE_EFFECT_FLINCH, .zMoveEffect = Z_EFFECT_NONE, .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + ADDITIONAL_EFFECTS( + SECONDARY_EFFECT(MOVE_EFFECT_FLINCH, 30) + ), }, [MOVE_TRANSFORM] = @@ -4571,11 +4572,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, - .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + ADDITIONAL_EFFECTS( + SECONDARY_EFFECT(MOVE_EFFECT_FLINCH, 100) + ), }, [MOVE_UPROAR] = @@ -6120,11 +6123,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_FLYING, .accuracy = 85, .pp = 5, - .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, .twoTurnMove = TRUE, .makesContact = TRUE, @@ -6133,6 +6134,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .sleepTalkBanned = TRUE, .instructBanned = TRUE, .assistBanned = TRUE, + ADDITIONAL_EFFECTS( + SECONDARY_EFFECT(MOVE_EFFECT_PARALYSIS, 30) + ), }, [MOVE_MUD_SHOT] = @@ -8314,19 +8318,20 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_GHOST, .accuracy = 100, .pp = 5, - .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .argument = MOVE_EFFECT_FEINT, .twoTurnMove = TRUE, .ignoresProtect = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, .assistBanned = TRUE, + ADDITIONAL_EFFECTS( + PRIMARY_EFFECT(MOVE_EFFECT_FEINT) + ), }, [MOVE_HONE_CLAWS] = @@ -9668,7 +9673,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, - .secondaryEffectChance = 10, .target = MOVE_TARGET_BOTH, .priority = 0, .split = SPLIT_SPECIAL, @@ -9677,6 +9681,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, + ADDITIONAL_EFFECTS( + SECONDARY_EFFECT(MOVE_EFFECT_SLEEP, 10) + ), }, [MOVE_SECRET_SWORD] = @@ -9768,17 +9775,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_ICE, .accuracy = 90, .pp = 5, - .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + ADDITIONAL_EFFECTS( + SECONDARY_EFFECT(MOVE_EFFECT_PARALYSIS, 30) + ), }, [MOVE_ICE_BURN] = @@ -10006,11 +10014,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_GHOST, .accuracy = 100, .pp = 10, - .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .argument = MOVE_EFFECT_FEINT, .zMoveEffect = Z_EFFECT_NONE, .twoTurnMove = TRUE, .ignoresProtect = TRUE, @@ -10019,6 +10025,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .sleepTalkBanned = TRUE, .instructBanned = TRUE, .assistBanned = TRUE, + ADDITIONAL_EFFECTS( + PRIMARY_EFFECT(MOVE_EFFECT_FEINT) + ), }, [MOVE_TRICK_OR_TREAT] = @@ -12754,7 +12763,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_DRAGON, .accuracy = 90, .pp = 20, - .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, @@ -13133,7 +13141,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .metronomeBanned = TRUE, ADDITIONAL_EFFECTS( SECONDARY_EFFECT(MOVE_EFFECT_FLINCH, 20) - ) + ), }, [MOVE_THUNDEROUS_KICK] = @@ -13211,17 +13219,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = #else .power = 60, #endif - .effect = EFFECT_DIRE_CLAW, + .effect = EFFECT_HIT, .type = TYPE_POISON, .accuracy = 100, .pp = 15, - .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .sheerForceBoost = TRUE, + ADDITIONAL_EFFECTS( + SECONDARY_EFFECT(MOVE_EFFECT_DIRE_CLAW, 50) + ), }, [MOVE_PSYSHIELD_BASH] = @@ -13265,15 +13275,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_ROCK, .accuracy = 90, .pp = 15, - .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .argument = MOVE_EFFECT_STEALTH_ROCK, .sheerForceBoost = TRUE, .slicingMove = TRUE, + ADDITIONAL_EFFECTS( + SECONDARY_EFFECT(MOVE_EFFECT_STEALTH_ROCK, 100) + ), }, [MOVE_SPRINGTIDE_STORM] = @@ -13549,15 +13560,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .type = TYPE_DARK, .accuracy = 90, .pp = 15, - .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .argument = MOVE_EFFECT_SPIKES, .sheerForceBoost = TRUE, .slicingMove = TRUE, + ADDITIONAL_EFFECTS( + SECONDARY_EFFECT(MOVE_EFFECT_SPIKES, 100) + ), }, [MOVE_BLEAKWIND_STORM] = @@ -14398,12 +14410,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_WICKED_TORQUE] = { - .effect = EFFECT_SLEEP_HIT, + .effect = EFFECT_HIT, .power = 80, .type = TYPE_DARK, .accuracy = 100, .pp = 10, - .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, @@ -14418,6 +14429,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .instructBanned = TRUE, .encoreBanned = TRUE, .assistBanned = TRUE, + ADDITIONAL_EFFECTS( + SECONDARY_EFFECT(MOVE_EFFECT_SLEEP, 10) + ) }, [MOVE_NOXIOUS_TORQUE] = diff --git a/test/battle/move_effect/dire_claw.c b/test/battle/move_effect/dire_claw.c index 9149f4a3cc..94f3391e83 100644 --- a/test/battle/move_effect/dire_claw.c +++ b/test/battle/move_effect/dire_claw.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(gBattleMoves[MOVE_DIRE_CLAW].effect == EFFECT_DIRE_CLAW); + ASSUME(gBattleMoves[MOVE_DIRE_CLAW].additionalEffects[0].moveEffect == MOVE_EFFECT_DIRE_CLAW); } SINGLE_BATTLE_TEST("Dire Claw can inflict poison, paralysis or sleep") diff --git a/test/battle/move_effect/relic_song.c b/test/battle/move_effect/relic_song.c index 7b14a57e72..819cbcde52 100644 --- a/test/battle/move_effect/relic_song.c +++ b/test/battle/move_effect/relic_song.c @@ -4,6 +4,7 @@ ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_RELIC_SONG].effect == EFFECT_RELIC_SONG); + ASSUME(gBattleMoves[MOVE_RELIC_SONG].additionalEffects[0].moveEffect == MOVE_EFFECT_SLEEP); ASSUME(P_GEN_5_POKEMON == TRUE); }