From 7de7599a7bf84639d520db38fe38206104913b56 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Tue, 7 Mar 2023 12:07:11 -0800 Subject: [PATCH] reworked scripts to remove jumpifnotally / jumpiftargetabsent --- asm/macros/battle_script.inc | 10 -- data/battle_scripts_1.s | 123 ++++++++++----------- include/config/battle.h | 2 +- include/constants/battle_script_commands.h | 14 +-- src/battle_script_commands.c | 18 --- 5 files changed, 68 insertions(+), 99 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index d0a8dbc9c2..2d8eaec0ab 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2218,16 +2218,6 @@ various 0, VARIOUS_SET_MAX_MOVE_EFFECT .endm - .macro jumpiftargetabsent, ptr:req - various 0, VARIOUS_JUMP_IF_TARGET_ABSENT - .4byte \ptr - .endm - - .macro jumpiftargetnotally, ptr:req - various 0, VARIOUS_JUMP_IF_TARGET_NOT_ALLY - .4byte \ptr - .endm - .macro setsteelsurge, failInstr:req various 0, VARIOUS_SET_STEELSURGE .4byte \failInstr diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 802dd78ffe..0709626c67 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -10334,6 +10334,16 @@ BattleScript_SymbiosisActivates:: waitmessage B_WAIT_TIME_LONG return +BattleScript_TargetAbilityStatRaiseRet:: + copybyte gBattlerAbility, gEffectBattler + copybyte gBattlerAttacker, gBattlerTarget + call BattleScript_AbilityPopUp + statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN, BattleScript_TargetAbilityStatRaiseRet_End + setgraphicalstatchangevalues + call BattleScript_StatUp +BattleScript_TargetAbilityStatRaiseRet_End: + return + @@@ MAX MOVES @@@ BattleScript_EffectMaxMove:: attackcanceler @@ -10354,17 +10364,16 @@ BattleScript_EffectMaxMove:: waitmessage B_WAIT_TIME_LONG resultmessage waitmessage B_WAIT_TIME_LONG - setmaxmoveeffect tryfaintmon BS_TARGET - goto BattleScript_MoveEnd + setmaxmoveeffect + moveendall + end -@ TODO: Maybe rework to use setallytonexttarget. BattleScript_EffectRaiseStatAllies:: savetarget - setbyte gBattlerTarget, 0 + copybyte gBattlerTarget, gBattlerAttacker BattleScript_RaiseSideStatsLoop: - jumpiftargetnotally BattleScript_RaiseSideStatsIncrement - jumpiftargetabsent BattleScript_RaiseSideStatsIncrement + jumpifabsent BS_TARGET, BattleScript_RaiseSideStatsIncrement statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_RaiseSideStatsIncrement jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_RaiseSideStatsIncrement setgraphicalstatchangevalues @@ -10373,18 +10382,17 @@ BattleScript_RaiseSideStatsLoop: waitmessage B_WAIT_TIME_LONG BattleScript_RaiseSideStatsIncrement: setbyte sSTAT_ANIM_PLAYED, FALSE - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RaiseSideStatsLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseSideStatsEnd + setallytonexttarget BattleScript_RaiseSideStatsLoop BattleScript_RaiseSideStatsEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectLowerStatFoes:: savetarget - setbyte gBattlerTarget, 0 + copybyte sBATTLER, gBattlerTarget BattleScript_LowerSideStatsLoop: - jumpiftargetally BattleScript_LowerSideStatsIncrement - jumpiftargetabsent BattleScript_LowerSideStatsIncrement + jumpifabsent BS_TARGET, BattleScript_LowerSideStatsIncrement statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_LowerSideStatsIncrement jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_LowerSideStatsIncrement setgraphicalstatchangevalues @@ -10393,18 +10401,18 @@ BattleScript_LowerSideStatsLoop: waitmessage B_WAIT_TIME_LONG BattleScript_LowerSideStatsIncrement: setbyte sSTAT_ANIM_PLAYED, FALSE - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_LowerSideStatsLoop + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_LowerSideStatsEnd + setallytonexttarget BattleScript_LowerSideStatsLoop BattleScript_LowerSideStatsEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectSetWeather:: playanimation 0, B_ANIM_MAX_SET_WEATHER printfromtable gMoveWeatherChangeStringIds waitmessage B_WAIT_TIME_LONG call BattleScript_WeatherFormChanges - return + goto BattleScript_MoveEnd BattleScript_EffectSetTerrain:: printfromtable gTerrainStringIds @@ -10412,21 +10420,12 @@ BattleScript_EffectSetTerrain:: playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG call BattleScript_TerrainSeedLoop jumpifabilitypresent ABILITY_MIMICRY, BattleScript_MimicryActivates_End3 - return -BattleScript_TargetAbilityStatRaiseRet:: - copybyte gBattlerAbility, gEffectBattler - copybyte gBattlerAttacker, gBattlerTarget - call BattleScript_AbilityPopUp - statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN, BattleScript_TargetAbilityStatRaiseRet_End - setgraphicalstatchangevalues - call BattleScript_StatUp -BattleScript_TargetAbilityStatRaiseRet_End: - return + goto BattleScript_MoveEnd BattleScript_DamageNonTypesStarts:: printfromtable gDamageNonTypesStartStringIds waitmessage B_WAIT_TIME_LONG - return + goto BattleScript_MoveEnd BattleScript_DamageNonTypesContinues:: @printfromtable gDamageNonTypesStartStringIds @@ -10463,10 +10462,9 @@ BattleScript_EffectTryReducePP:: BattleScript_EffectStatus1Foes:: savetarget - setbyte gBattlerTarget, 0 + copybyte sBATTLER, gBattlerTarget BattleScript_Status1FoesLoop: - jumpiftargetally BattleScript_Status1FoesIncrement - jumpiftargetabsent BattleScript_Status1FoesIncrement + jumpifabsent BS_TARGET, BattleScript_Status1FoesIncrement trysetstatus1 BattleScript_Status1FoesIncrement statusanimation BS_TARGET updatestatusicon BS_TARGET @@ -10474,18 +10472,17 @@ BattleScript_Status1FoesLoop: waitmessage B_WAIT_TIME_LONG goto BattleScript_UpdateEffectStatusIconRet BattleScript_Status1FoesIncrement: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_Status1FoesLoop + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_Status1FoesEnd + setallytonexttarget BattleScript_Status1FoesLoop BattleScript_Status1FoesEnd: restoretarget goto BattleScript_MoveEnd BattleScript_EffectStatus2Foes:: savetarget - setbyte gBattlerTarget, 0 + copybyte sBATTLER, gBattlerTarget BattleScript_Status2FoesLoop: - jumpiftargetally BattleScript_Status2FoesIncrement - jumpiftargetabsent BattleScript_Status2FoesIncrement + jumpifabsent BS_TARGET, BattleScript_Status2FoesIncrement trysetstatus2 BattleScript_Status2FoesIncrement jumpifbyte CMP_EQUAL, gBattleCommunication, 1, BattleScript_DoConfuseAnim jumpifbyte CMP_EQUAL, gBattleCommunication, 2, BattleScript_DoInfatuationAnim @@ -10493,11 +10490,11 @@ BattleScript_Status2FoesPrintMessage: printfromtable gStatus2StringIds waitmessage B_WAIT_TIME_LONG BattleScript_Status2FoesIncrement: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_Status2FoesLoop + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_Status2FoesEnd + setallytonexttarget BattleScript_Status2FoesLoop BattleScript_Status2FoesEnd: restoretarget - jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_PrintCoinsScattered + jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_PrintCoinsScattered @ Gold Rush goto BattleScript_MoveEnd BattleScript_DoConfuseAnim: @@ -10519,10 +10516,9 @@ BattleScript_TormentEnds:: BattleScript_EffectRaiseCritAlliesAnim:: savetarget - setbyte gBattlerTarget, 0 + copybyte gBattlerTarget, gBattlerAttacker BattleScript_RaiseCritAlliesLoop: - jumpiftargetnotally BattleScript_RaiseCritAlliesIncrement - jumpiftargetabsent BattleScript_RaiseCritAlliesIncrement + jumpifabsent BS_TARGET, BattleScript_RaiseCritAlliesIncrement setstatchanger STAT_ATK, 0, FALSE @ for animation setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 @@ -10530,18 +10526,18 @@ BattleScript_RaiseCritAlliesLoop: waitmessage B_WAIT_TIME_LONG BattleScript_RaiseCritAlliesIncrement: setbyte sSTAT_ANIM_PLAYED, FALSE - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RaiseCritAlliesLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseCritAlliesEnd + setallytonexttarget BattleScript_RaiseCritAlliesLoop BattleScript_RaiseCritAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectHealOneSixthAllies:: jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd - setbyte gBattlerTarget, 0 + savetarget + copybyte gBattlerTarget, gBattlerAttacker BattleScript_HealOneSixthAlliesLoop: - jumpiftargetnotally BattleScript_HealOneSixthAlliesIncrement - jumpiftargetabsent BattleScript_HealOneSixthAlliesIncrement + jumpifabsent BS_TARGET, BattleScript_HealOneSixthAlliesIncrement tryhealsixthhealth BattleScript_HealOneSixthAlliesIncrement orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate BS_TARGET @@ -10549,25 +10545,26 @@ BattleScript_HealOneSixthAlliesLoop: printstring STRINGID_PKMNREGAINEDHEALTH waitmessage B_WAIT_TIME_LONG BattleScript_HealOneSixthAlliesIncrement: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_HealOneSixthAlliesLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_HealOneSixthAlliesEnd + setallytonexttarget BattleScript_HealOneSixthAlliesLoop BattleScript_HealOneSixthAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd BattleScript_EffectCureStatusAllies:: jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd - setbyte gBattlerTarget, 0 + savetarget + copybyte gBattlerTarget, gBattlerAttacker BattleScript_CureStatusAlliesLoop: - jumpiftargetnotally BattleScript_CureStatusAlliesIncrement - jumpiftargetabsent BattleScript_CureStatusAlliesIncrement + jumpifabsent BS_TARGET, BattleScript_CureStatusAlliesIncrement jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_CureStatusActivate BattleScript_CureStatusAlliesIncrement: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_CureStatusAlliesLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_CureStatusAlliesLoop + setallytonexttarget BattleScript_CureStatusAlliesLoop BattleScript_CureStatusAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd + BattleScript_CureStatusActivate: curestatus BS_TARGET updatestatusicon BS_TARGET @@ -10577,19 +10574,21 @@ BattleScript_CureStatusActivate: BattleScript_EffectRecycleBerriesAllies:: jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd - setbyte gBattlerTarget, 0 + savetarget + copybyte gBattlerTarget, gBattlerAttacker BattleScript_RecycleBerriesAlliesLoop: - jumpiftargetnotally BattleScript_RecycleBerriesAlliesIncrement - jumpiftargetabsent BattleScript_RecycleBerriesAlliesIncrement + jumpifabsent BS_TARGET, BattleScript_RecycleBerriesAlliesIncrement tryrecycleberry BattleScript_RecycleBerriesAlliesIncrement printstring STRINGID_XFOUNDONEY waitmessage B_WAIT_TIME_LONG BattleScript_RecycleBerriesAlliesIncrement: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RecycleBerriesAlliesLoop + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RecycleBerriesAlliesEnd + setallytonexttarget BattleScript_RecycleBerriesAlliesLoop BattleScript_RecycleBerriesAlliesEnd: restoretarget - return + goto BattleScript_MoveEnd + +@@ End Max Moves BattleScript_PokemonCantUseTheMove:: attackstring diff --git a/include/config/battle.h b/include/config/battle.h index a8f4a3e8b4..e965da940b 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -180,7 +180,7 @@ #define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball. // Other settings -#define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. +#define B_DOUBLE_WILD_CHANCE 100 // % chance of encountering two Pokémon in a Wild Encounter. #define B_MULTI_BATTLE_WHITEOUT GEN_LATEST // In Gen4+, multi battles end when the Player and also their Partner don't have any more Pokémon to fight. #define B_EVOLUTION_AFTER_WHITEOUT GEN_LATEST // In Gen6+, Pokemon that qualify for evolution after battle will evolve even if the player loses. #define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 7452d22057..c17c440d02 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -261,14 +261,12 @@ #define VARIOUS_JUMP_IF_SHELL_TRAP 169 #define VARIOUS_SET_MAX_MOVE_EFFECT 170 #define VARIOUS_JUMP_IF_NO_VALID_TARGETS 171 -#define VARIOUS_JUMP_IF_TARGET_NOT_ALLY 172 -#define VARIOUS_JUMP_IF_TARGET_ABSENT 173 -#define VARIOUS_SET_STEELSURGE 174 -#define VARIOUS_DAMAGE_NON_TYPES 175 -#define VARIOUS_TRY_SET_STATUS1 176 -#define VARIOUS_TRY_SET_STATUS2 177 -#define VARIOUS_TRY_HEAL_SIXTH_HP 178 -#define VARIOUS_TRY_RECYCLE_BERRY 179 +#define VARIOUS_SET_STEELSURGE 172 +#define VARIOUS_DAMAGE_NON_TYPES 173 +#define VARIOUS_TRY_SET_STATUS1 174 +#define VARIOUS_TRY_SET_STATUS2 175 +#define VARIOUS_TRY_HEAL_SIXTH_HP 176 +#define VARIOUS_TRY_RECYCLE_BERRY 177 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e79403a10f..6144be8c1b 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11164,24 +11164,6 @@ static void Cmd_various(void) return; break; } - case VARIOUS_JUMP_IF_TARGET_NOT_ALLY: - { - VARIOUS_ARGS(const u8 *jumpInstr); - if (GetBattlerSide(gBattlerTarget) != GetBattlerSide(gBattlerAttacker)) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } - case VARIOUS_JUMP_IF_TARGET_ABSENT: - { - VARIOUS_ARGS(const u8 *jumpInstr); - if (!IsBattlerAlive(gBattlerTarget)) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } case VARIOUS_SET_STEELSURGE: { VARIOUS_ARGS(const u8 *failInstr);