From 5d2dfe218ea01f28588da574cf0251ab440e59f7 Mon Sep 17 00:00:00 2001 From: ZnogyroP Date: Tue, 6 Feb 2024 19:18:35 -0500 Subject: [PATCH 1/4] Fixes to strings + Hospitality (#4147) * Fixes to strings + Hospitality * Requested changes --------- Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> --- src/battle_message.c | 12 ++++++------ src/battle_util.c | 1 + test/battle/ability/dry_skin.c | 2 +- test/battle/ability/hospitality.c | 8 ++++---- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/battle_message.c b/src/battle_message.c index 97ea9794a5..a99f3cde9d 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -613,10 +613,10 @@ static const u8 sText_TeravoltEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is r static const u8 sText_TurboblazeEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na blazing aura!"); static const u8 sText_SlowStartEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can't get it going!"); static const u8 sText_SlowStartEnd[] = _("{B_ATK_NAME_WITH_PREFIX} finally got\nits act together!"); -static const u8 sText_SolarPowerHpDrop[] = _("The {B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\ntakes its toll!"); +static const u8 sText_SolarPowerHpDrop[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\ntakes its toll!"); static const u8 sText_AftermathDmg[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt!"); static const u8 sText_AnticipationActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} shuddered\nin anticipation!"); -static const u8 sText_ForewarnActivates[] = _("{B_SCR_ACTIVE_ABILITY} alerted {B_SCR_ACTIVE_NAME_WITH_PREFIX}\nto the {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); +static const u8 sText_ForewarnActivates[] = _("{B_SCR_ACTIVE_ABILITY} alerted {B_SCR_ACTIVE_NAME_WITH_PREFIX}\nto {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); static const u8 sText_IceBodyHpGain[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nhealed it a little bit!"); static const u8 sText_SnowWarningHail[] = _("It started to hail!"); static const u8 sText_SnowWarningSnow[] = _("It started to snow!"); @@ -648,14 +648,14 @@ static const u8 sText_ToxicSpikesDisappearedFromTeam[] = _("The poison spikes di static const u8 sText_StealthRockDisappearedFromTeam[] = _("The pointed stones disappeared\nfrom around {B_ATK_TEAM2} team!"); static const u8 sText_StickyWebDisappearedFromTeam[] = _("The sticky web has disappeared from\nthe ground around {B_ATK_TEAM2} team!"); static const u8 sText_StickyWebUsed[] = _("A sticky web spreads out on the\nground around {B_DEF_TEAM2} team!"); -static const u8 sText_QuashSuccess[] = _("The opposing {B_DEF_NAME_WITH_PREFIX}'s\nmove was postponed!"); +static const u8 sText_QuashSuccess[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nmove was postponed!"); static const u8 sText_IonDelugeOn[] = _("A deluge of ions showers\nthe battlefield!"); static const u8 sText_TopsyTurvySwitchedStats[] = _("{B_DEF_NAME_WITH_PREFIX}'s stat changes were\nall reversed!"); static const u8 sText_TerrainBecomesMisty[] = _("Mist swirled about\nthe battlefield!"); static const u8 sText_TerrainBecomesGrassy[] = _("Grass grew to cover\nthe battlefield!"); static const u8 sText_TerrainBecomesElectric[] = _("An electric current runs across\nthe battlefield!"); static const u8 sText_TerrainBecomesPsychic[] = _("The battlefield got weird!"); -static const u8 sText_TargetElectrified[] = _("The {B_DEF_NAME_WITH_PREFIX}'s moves\nhave been electrified!"); +static const u8 sText_TargetElectrified[] = _("{B_DEF_NAME_WITH_PREFIX}'s moves\nhave been electrified!"); static const u8 sText_AssaultVestDoesntAllow[] = _("{B_LAST_ITEM}'s effects prevent\nstatus moves from being used!\p"); static const u8 sText_GravityPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} can't use {B_CURRENT_MOVE}\nbecause of gravity!\p"); static const u8 sText_HealBlockPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} was\nprevented from healing!\p"); @@ -758,7 +758,7 @@ static const u8 sText_StuffCheeksCantSelect[] = _("Stuff Cheeks cannot be\nselec static const u8 sText_PkmnRevertedToPrimal[] = _("{B_ATK_NAME_WITH_PREFIX}'s Primal Reversion!\nIt reverted to its primal form!"); static const u8 sText_ButPokemonCantUseTheMove[] = _("But {B_ATK_NAME_WITH_PREFIX} can't\nuse the move!"); static const u8 sText_ButHoopaCantUseIt[] = _("But Hoopa can't use it\nthe way it is now!"); -static const u8 sText_BrokeThroughProtection[] = _("It broke through the\n{B_DEF_NAME_WITH_PREFIX}'s protection!"); +static const u8 sText_BrokeThroughProtection[] = _("It broke through\n{B_DEF_NAME_WITH_PREFIX}'s protection!"); static const u8 sText_AbilityAllowsOnlyMove[] = _("{B_ATK_ABILITY} allows the\nuse of only {B_CURRENT_MOVE}!\p"); static const u8 sText_SwappedAbilities[] = _("{B_DEF_NAME_WITH_PREFIX} swapped Abilities\nwith its target!"); static const u8 sText_PastelVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is protected\nby a pastel veil!"); @@ -834,7 +834,7 @@ static const u8 sText_HurtByTheSeaOfFire[] = _("{B_ATK_TEAM1} {B_ATK_NAME_WITH_P static const u8 sText_TheSeaOfFireDisappeared[] = _("The sea of fire around {B_ATK_TEAM2}\nteam disappeared!"); static const u8 sText_SwampEnvelopedSide[] = _("A swamp enveloped\n{B_DEF_TEAM2} team!"); static const u8 sText_TheSwampDisappeared[] = _("The swamp around {B_ATK_TEAM2}\nteam disappeared!"); -static const u8 sText_HospitalityRestoration[] = _("The {B_ATK_PARTNER_NAME} drank down all\nthe matcha that Sinistcha made!"); +static const u8 sText_HospitalityRestoration[] = _("{B_ATK_PARTNER_NAME} drank down all the\nmatcha that {B_ATK_NAME_WITH_PREFIX} made!"); static const u8 sText_ElectroShotCharging[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nelectricity!"); static const u8 sText_ItemWasUsedUp[] = _("The {B_LAST_ITEM}\nwas used up..."); static const u8 sText_AttackerLostItsType[] = _("{B_ATK_NAME_WITH_PREFIX} lost\nits {B_BUFF1} type!"); diff --git a/src/battle_util.c b/src/battle_util.c index fe40102f6f..39b9060426 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4653,6 +4653,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!gSpecialStatuses[battler].switchInAbilityDone && IsDoubleBattle() && gBattleMons[partner].hp < gBattleMons[partner].maxHP) { gBattlerTarget = partner; + gBattlerAttacker = battler; gSpecialStatuses[battler].switchInAbilityDone = TRUE; gBattleMoveDamage = (GetNonDynamaxMaxHP(partner) / 4) * -1; BattleScriptPushCursorAndCallback(BattleScript_HospitalityActivates); diff --git a/test/battle/ability/dry_skin.c b/test/battle/ability/dry_skin.c index e91daa1641..368e4b8047 100644 --- a/test/battle/ability/dry_skin.c +++ b/test/battle/ability/dry_skin.c @@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Dry Skin causes 1/8th Max HP damage in Sun") } SCENE { ABILITY_POPUP(player, ABILITY_DRY_SKIN); HP_BAR(player, damage: 200 / 8); - MESSAGE("The Parasect's Dry Skin takes its toll!"); + MESSAGE("Parasect's Dry Skin takes its toll!"); } } diff --git a/test/battle/ability/hospitality.c b/test/battle/ability/hospitality.c index 8bb78bffc0..74648b0c9a 100644 --- a/test/battle/ability/hospitality.c +++ b/test/battle/ability/hospitality.c @@ -18,12 +18,12 @@ DOUBLE_BATTLE_TEST("Hospitality user restores 25% of ally's health") } SCENE { if (health == 75) { ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); - MESSAGE("The Wobbuffet drank down all the matcha that Sinistcha made!"); + MESSAGE("Wobbuffet drank down all the matcha that Ptchageist made!"); HP_BAR(playerRight, damage: -25); } else { NONE_OF { ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); - MESSAGE("The Wobbuffet drank down all the matcha that Sinistcha made!"); + MESSAGE("Wobbuffet drank down all the matcha that Ptchageist made!"); HP_BAR(playerRight, damage: -25); } } @@ -44,7 +44,7 @@ DOUBLE_BATTLE_TEST("Hospitality user restores 25% of ally's health on switch-in" MESSAGE("Wobbuffet, that's enough! Come back!"); MESSAGE("Go! Ptchageist!"); ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); - MESSAGE("The Wobbuffet drank down all the matcha that Sinistcha made!"); + MESSAGE("Wobbuffet drank down all the matcha that Ptchageist made!"); HP_BAR(playerRight, damage: -25); } } @@ -65,6 +65,6 @@ DOUBLE_BATTLE_TEST("Hospitality ignores Substitute") MESSAGE("Wobbuffet, that's enough! Come back!"); MESSAGE("Go! Ptchageist!"); ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); - MESSAGE("The Wobbuffet drank down all the matcha that Sinistcha made!"); + MESSAGE("Wobbuffet drank down all the matcha that Ptchageist made!"); } } From b18857321a477619ca0aa8709a98d3a80ab1efa2 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Wed, 7 Feb 2024 10:13:03 +0100 Subject: [PATCH 2/4] Update README.md (#4144) * Update README.md Removes Mulches, Dynamax Candy and Mints from the "Existing item data but missing effects" category in upcoming's README, as said features do in fact have functionality in upcoming. * Add Guillotine to feature branch list * Update README.md Co-authored-by: Eduardo Quezada D'Ottone --------- Co-authored-by: Eduardo Quezada D'Ottone --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 82a9582337..aa85e556a6 100644 --- a/README.md +++ b/README.md @@ -118,9 +118,6 @@ Based off RHH's pokeemerald-expansion v1.7.3 https://github.com/rh-hideout/pokee - Berserk Gene - Most battle items from Gen 4+ - Existing item data but missing effects: - - Mints - - Dynamax Candy - - Mulches - Gimmighoul Coin - Booster Energy - Tera Shards @@ -141,6 +138,7 @@ Based off RHH's pokeemerald-expansion v1.7.3 https://github.com/rh-hideout/pokee - *Dark Mode*. - [Nature Colors](https://github.com/DizzyEggg/pokeemerald/tree/nature_color) in summary screen by @DizzyEggg - [Dynamic Multichoice](https://github.com/SBird1337/pokeemerald/tree/feature/dynmulti) by @SBird1337 + - [Guillotine](https://github.com/aarant/pokeemerald/tree/guillotine) (Decapitalization) by @aarant - ***Other features*** - Pressing B while holding a Pokémon drops them like in modern games (configurable). - Running indoors (configurable). From 02e4154f0c81214ef1b702b1f3e8cacf21d528ab Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Wed, 7 Feb 2024 11:26:23 +0100 Subject: [PATCH 3/4] Electro Shot Animation (#4148) Co-authored-by: Bassoonian --- data/battle_anim_scripts.s | 89 +++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 1 deletion(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index b9bd3efaf0..f20b30acef 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -17228,6 +17228,94 @@ Move_JET_PUNCH: blendoff end +Move_ELECTRO_SHOT:: + choosetwoturnanim ElectroShotSetUp, ElectroShotUnleash +ElectroShotEnd: + waitforvisualfinish + end +ElectroShotSetUp: + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation + loadspritegfx ANIM_TAG_ORBS @circles + loadspritegfx ANIM_TAG_BLACK_BALL_2 @blast + loadspritegfx ANIM_TAG_SPARK_2 @blast particles + loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal + monbg ANIM_ATTACKER + setalpha 14, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 + waitforvisualfinish + loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 0xE, 0x8 + createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0x0 + call TechnoBlastCharging1 + delay 0xF + call TechnoBlastCharging2 + delay 0xF + call TechnoBlastCharging1 + delay 0xF + call TechnoBlastCharging2 + delay 0xF + call TechnoBlastCharging1 + delay 0xF + call TechnoBlastCharging2 + delay 0xF + call TechnoBlastCharging1 + delay 0xF + call TechnoBlastCharging2 + delay 0xF + call TechnoBlastCharging1 + delay 0xF + call TechnoBlastCharging2 + delay 0xF + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 + waitforvisualfinish + blendoff + clearmonbg ANIM_ATTACKER + goto ElectroShotEnd +ElectroShotUnleash: + loadspritegfx ANIM_TAG_ELECTRIC_ORBS + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT + loadspritegfx ANIM_TAG_ELECTRICITY + loadspritegfx ANIM_TAG_SPARK_2 + setalpha 12, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xC, 0x0 + waitforvisualfinish + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER + delay 12 + createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 2 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 11, RGB(31, 31, 22) + delay 50 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 1, 16, 0, 5 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 50, 1 + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 50, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 11, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 11, RGB(31, 31, 22) + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + delay 20 + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x0 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 11, 0, RGB(31, 31, 22) + waitforvisualfinish + blendoff + end + Move_TERA_BLAST:: Move_AXE_KICK:: Move_LAST_RESPECTS:: @@ -17271,7 +17359,6 @@ Move_HYDRO_STEAM:: Move_BLOOD_MOON:: Move_MATCHA_GOTCHA:: Move_IVY_CUDGEL:: -Move_ELECTRO_SHOT:: Move_TERA_STARSTORM:: Move_FICKLE_BEAM:: Move_THUNDERCLAP:: From 8d4c3a8acb5abc8c79c4e4a6e180eee59c961856 Mon Sep 17 00:00:00 2001 From: Nephrite Date: Wed, 7 Feb 2024 23:42:05 +0900 Subject: [PATCH 4/4] Two turn moves tweaks (#4150) * Two turn move tweaks Fixed comment bug and added CheckIfCanFireTwoTurnMoveNow function * Renamed `tryfiretwoturnmovenowcheckeffect` macro --- asm/macros/battle_script.inc | 10 +++++++++- data/battle_scripts_1.s | 10 ++++++---- src/battle_script_commands.c | 33 ++++++++++++++++++++++++--------- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index b3a5c77716..5ae9b691b2 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1061,13 +1061,21 @@ setsemiinvulnerablebit TRUE .endm - .macro jumpifweathercheckchargeeffects battler:req, checkChargeTurnEffects:req, jumpInstr:req + .macro tryfiretwoturnmovenowbyeffect battler:req, checkChargeTurnEffects:req, jumpInstr:req .byte 0xc6 .byte \battler .byte \checkChargeTurnEffects .4byte \jumpInstr .endm + .macro tryfiretwoturnmovewithoutcharging battler:req, jumpInstr:req + tryfiretwoturnmovenowbyeffect \battler, TRUE, \jumpInstr + .endm + + .macro tryfiretwoturnmoveaftercharging battler:req, jumpInstr:req + tryfiretwoturnmovenowbyeffect \battler, FALSE, \jumpInstr + .endm + .macro setminimize .byte 0xc7 .endm diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index d3ac025056..a5d3b7cbcf 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3718,9 +3718,9 @@ BattleScript_PowerHerbActivation: BattleScript_EffectTwoTurnsAttack:: jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn - jumpifweathercheckchargeeffects BS_ATTACKER, TRUE, BattleScript_EffectHit + tryfiretwoturnmovewithoutcharging BS_ATTACKER, BattleScript_EffectHit @ e.g. Solar Beam call BattleScript_FirstChargingTurn - jumpifweathercheckchargeeffects BS_ATTACKER, FALSE, BattleScript_TwoTurnMovesSecondTurn + tryfiretwoturnmoveaftercharging BS_ATTACKER, BattleScript_TwoTurnMovesSecondTurn @ e.g. Electro Shot jumpifholdeffect BS_ATTACKER, HOLD_EFFECT_POWER_HERB, BattleScript_TwoTurnMovesSecondPowerHerbActivates goto BattleScript_MoveEnd @@ -3766,7 +3766,8 @@ BattleScript_GeomancyEnd:: BattleScript_FirstChargingTurn:: attackcanceler -.if B_UPDATED_MOVE_DATA >= GEN_5 @ before Gen 5, charge moves did not print an attack string on the charge turn +@ before Gen 5, charge moves did not print an attack string on the charge turn +.if B_UPDATED_MOVE_DATA >= GEN_5 flushtextbox attackstring waitmessage B_WAIT_TIME_LONG @@ -3784,7 +3785,8 @@ BattleScript_TwoTurnMovesSecondPowerHerbActivates: call BattleScript_PowerHerbActivation call BattleScript_TwoTurnMovesSecondTurnRet accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE -.if B_UPDATED_MOVE_DATA < GEN_5 @ before Gen 5, charge moves did not print an attack string on the charge turn +@ before Gen 5, charge moves did not print an attack string on the charge turn +.if B_UPDATED_MOVE_DATA < GEN_5 attackstring .endif goto BattleScript_HitFromCritCalc diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index df023953f4..cf282162ac 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -556,7 +556,7 @@ static void Cmd_selectfirstvalidtarget(void); static void Cmd_trysetfutureattack(void); static void Cmd_trydobeatup(void); static void Cmd_setsemiinvulnerablebit(void); -static void Cmd_jumpifweathercheckchargeeffects(void); +static void Cmd_tryfiretwoturnmovenowbyeffect(void); static void Cmd_setminimize(void); static void Cmd_sethail(void); static void Cmd_trymemento(void); @@ -815,7 +815,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_trysetfutureattack, //0xC3 Cmd_trydobeatup, //0xC4 Cmd_setsemiinvulnerablebit, //0xC5 - Cmd_jumpifweathercheckchargeeffects, //0xC6 + Cmd_tryfiretwoturnmovenowbyeffect, //0xC6 Cmd_setminimize, //0xC7 Cmd_sethail, //0xC8 Cmd_trymemento, //0xC9 @@ -13668,16 +13668,31 @@ static void Cmd_setsemiinvulnerablebit(void) gBattlescriptCurrInstr = cmd->nextInstr; } -static void Cmd_jumpifweathercheckchargeeffects(void) +static bool32 CheckIfCanFireTwoTurnMoveNow(u8 battler, bool8 checkChargeTurnEffects) +{ + // Semi-invulnerable moves cannot skip their charge turn (except with Power Herb) + if (gBattleMoveEffects[gMovesInfo[gCurrentMove].effect].semiInvulnerableEffect == TRUE) + return FALSE; + + // If this move has charge turn effects, it must charge, activate them, then try to fire + if (checkChargeTurnEffects && MoveHasChargeTurnMoveEffect(gCurrentMove)) + return FALSE; + + // Insert custom conditions here + + // Certain two-turn moves may fire on the first turn in the right weather (Solar Beam, Electro Shot) + // By default, all two-turn moves have the option of adding weather to their argument + if (IsBattlerWeatherAffected(battler, HIHALF(gMovesInfo[gCurrentMove].argument))) + return TRUE; + + return FALSE; +} + +static void Cmd_tryfiretwoturnmovenowbyeffect(void) { CMD_ARGS(u8 battler, bool8 checkChargeTurnEffects, const u8 *jumpInstr); - /* If this is NOT semi-invulnerable move and we don't have charge turn effects - yet to fire, we can fire the move right away so long as the weather matches - the argument and the battler is affected by it (not blocked by Cloud Nine etc) */ - if (gBattleMoveEffects[gMovesInfo[gCurrentMove].effect].semiInvulnerableEffect == FALSE - && !(cmd->checkChargeTurnEffects && MoveHasChargeTurnMoveEffect(gCurrentMove)) - && IsBattlerWeatherAffected(cmd->battler, HIHALF(gMovesInfo[gCurrentMove].argument))) + if (CheckIfCanFireTwoTurnMoveNow(cmd->battler, cmd->checkChargeTurnEffects) == TRUE) { gBattleScripting.animTurn = 1; gBattlescriptCurrInstr = cmd->jumpInstr;