mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 11:44:17 +01:00
Fixed Hyperspace Fury not breaking through protections
Also repositioned VARIOUS_JUMP_IF_SPECIES.
This commit is contained in:
parent
1ab8c84f41
commit
28522f3ffb
@ -1864,6 +1864,11 @@
|
|||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro jumpifprotected battler:req, ptr:req
|
||||||
|
various \battler, VARIOUS_JUMP_IF_PROTECTED
|
||||||
|
.4byte \ptr
|
||||||
|
.endm
|
||||||
|
|
||||||
@ helpful macros
|
@ helpful macros
|
||||||
.macro setstatchanger stat:req, stages:req, down:req
|
.macro setstatchanger stat:req, stages:req, down:req
|
||||||
setbyte sSTATCHANGER \stat | \stages << 3 | \down << 7
|
setbyte sSTATCHANGER \stat | \stages << 3 | \down << 7
|
||||||
|
@ -394,7 +394,7 @@ gBattleScriptsForMoveEffects::
|
|||||||
.4byte BattleScript_EffectHyperspaceFury @ EFFECT_HYPERSPACE_FURY
|
.4byte BattleScript_EffectHyperspaceFury @ EFFECT_HYPERSPACE_FURY
|
||||||
|
|
||||||
BattleScript_EffectHyperspaceFury:
|
BattleScript_EffectHyperspaceFury:
|
||||||
jumpifspecies BS_ATTACKER, SPECIES_HOOPA_UNBOUND, BattleScript_EffectAttackerDefenseDownHit
|
jumpifspecies BS_ATTACKER, SPECIES_HOOPA_UNBOUND, BattleScript_EffectHyperspaceFuryUnbound
|
||||||
jumpifspecies BS_ATTACKER, SPECIES_HOOPA, BattleScript_ButHoopaCantUseIt
|
jumpifspecies BS_ATTACKER, SPECIES_HOOPA, BattleScript_ButHoopaCantUseIt
|
||||||
printstring STRINGID_BUTPOKEMONCANTUSETHEMOVE
|
printstring STRINGID_BUTPOKEMONCANTUSETHEMOVE
|
||||||
waitmessage B_WAIT_TIME_LONG
|
waitmessage B_WAIT_TIME_LONG
|
||||||
@ -403,6 +403,78 @@ BattleScript_ButHoopaCantUseIt:
|
|||||||
printstring STRINGID_BUTHOOPACANTUSEIT
|
printstring STRINGID_BUTHOOPACANTUSEIT
|
||||||
waitmessage B_WAIT_TIME_LONG
|
waitmessage B_WAIT_TIME_LONG
|
||||||
goto BattleScript_MoveEnd
|
goto BattleScript_MoveEnd
|
||||||
|
BattleScript_EffectHyperspaceFuryUnbound:
|
||||||
|
attackcanceler
|
||||||
|
jumpifprotected BS_TARGET, BattleScript_HyperspaceFuryBrokeThroughProtection
|
||||||
|
argumenttomoveeffect
|
||||||
|
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||||
|
attackstring
|
||||||
|
ppreduce
|
||||||
|
critcalc
|
||||||
|
damagecalc
|
||||||
|
adjustdamage
|
||||||
|
attackanimation
|
||||||
|
waitanimation
|
||||||
|
effectivenesssound
|
||||||
|
hitanimation BS_TARGET
|
||||||
|
waitstate
|
||||||
|
healthbarupdate BS_TARGET
|
||||||
|
datahpupdate BS_TARGET
|
||||||
|
critmessage
|
||||||
|
waitmessage B_WAIT_TIME_LONG
|
||||||
|
resultmessage
|
||||||
|
waitmessage B_WAIT_TIME_LONG
|
||||||
|
seteffectwithchance
|
||||||
|
tryfaintmon BS_TARGET, FALSE, NULL
|
||||||
|
swapattackerwithtarget @ to make gStatDownStringIds down below print the right battler
|
||||||
|
setstatchanger STAT_DEF, 1, TRUE
|
||||||
|
statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED, BattleScript_HyperspaceFuryTargetDefenseCantGoLower
|
||||||
|
setgraphicalstatchangevalues
|
||||||
|
playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||||
|
printfromtable gStatDownStringIds
|
||||||
|
waitmessage B_WAIT_TIME_LONG
|
||||||
|
swapattackerwithtarget @ restore the battlers, just in case
|
||||||
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
|
BattleScript_HyperspaceFuryBrokeThroughProtection::
|
||||||
|
argumenttomoveeffect
|
||||||
|
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||||
|
attackstring
|
||||||
|
ppreduce
|
||||||
|
pause B_WAIT_TIME_LONG
|
||||||
|
printstring STRINGID_BROKETHROUGHPROTECTION
|
||||||
|
waitmessage B_WAIT_TIME_LONG
|
||||||
|
critcalc
|
||||||
|
damagecalc
|
||||||
|
adjustdamage
|
||||||
|
attackanimation
|
||||||
|
waitanimation
|
||||||
|
effectivenesssound
|
||||||
|
hitanimation BS_TARGET
|
||||||
|
waitstate
|
||||||
|
healthbarupdate BS_TARGET
|
||||||
|
datahpupdate BS_TARGET
|
||||||
|
critmessage
|
||||||
|
waitmessage B_WAIT_TIME_LONG
|
||||||
|
resultmessage
|
||||||
|
waitmessage B_WAIT_TIME_LONG
|
||||||
|
seteffectwithchance
|
||||||
|
tryfaintmon BS_TARGET, FALSE, NULL
|
||||||
|
swapattackerwithtarget @ to make gStatDownStringIds down below print the right battler
|
||||||
|
setstatchanger STAT_DEF, 1, TRUE
|
||||||
|
statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED, BattleScript_HyperspaceFuryTargetDefenseCantGoLower
|
||||||
|
setgraphicalstatchangevalues
|
||||||
|
playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||||
|
printfromtable gStatDownStringIds
|
||||||
|
waitmessage B_WAIT_TIME_LONG
|
||||||
|
swapattackerwithtarget @ restore the battlers, just in case
|
||||||
|
goto BattleScript_MoveEnd
|
||||||
|
return
|
||||||
|
|
||||||
|
BattleScript_HyperspaceFuryTargetDefenseCantGoLower:
|
||||||
|
printstring STRINGID_STATSWONTDECREASE
|
||||||
|
waitmessage B_WAIT_TIME_LONG
|
||||||
|
return
|
||||||
|
|
||||||
BattleScript_EffectPlasmaFists:
|
BattleScript_EffectPlasmaFists:
|
||||||
attackcanceler
|
attackcanceler
|
||||||
|
@ -638,6 +638,16 @@ struct BattleStruct
|
|||||||
gBattleMons[battlerId].type3 = TYPE_MYSTERY; \
|
gBattleMons[battlerId].type3 = TYPE_MYSTERY; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define IS_BATTLER_PROTECTED(battlerId)(gProtectStructs[battlerId].protected \
|
||||||
|
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_WIDE_GUARD \
|
||||||
|
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_QUICK_GUARD \
|
||||||
|
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_CRAFTY_SHIELD \
|
||||||
|
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_MAT_BLOCK \
|
||||||
|
|| gProtectStructs[battlerId].spikyShielded \
|
||||||
|
|| gProtectStructs[battlerId].kingsShielded \
|
||||||
|
|| gProtectStructs[battlerId].banefulBunkered \
|
||||||
|
|| gProtectStructs[battlerId].obstructed) \
|
||||||
|
|
||||||
#define GET_STAT_BUFF_ID(n)((n & 7)) // first three bits 0x1, 0x2, 0x4
|
#define GET_STAT_BUFF_ID(n)((n & 7)) // first three bits 0x1, 0x2, 0x4
|
||||||
#define GET_STAT_BUFF_VALUE_WITH_SIGN(n)((n & 0xF8))
|
#define GET_STAT_BUFF_VALUE_WITH_SIGN(n)((n & 0xF8))
|
||||||
#define GET_STAT_BUFF_VALUE(n)(((n >> 3) & 0xF)) // 0x8, 0x10, 0x20, 0x40
|
#define GET_STAT_BUFF_VALUE(n)(((n >> 3) & 0xF)) // 0x8, 0x10, 0x20, 0x40
|
||||||
|
@ -194,6 +194,7 @@
|
|||||||
#define VARIOUS_HANDLE_PRIMAL_REVERSION 121
|
#define VARIOUS_HANDLE_PRIMAL_REVERSION 121
|
||||||
#define VARIOUS_APPLY_PLASMA_FISTS 122
|
#define VARIOUS_APPLY_PLASMA_FISTS 122
|
||||||
#define VARIOUS_JUMP_IF_SPECIES 123
|
#define VARIOUS_JUMP_IF_SPECIES 123
|
||||||
|
#define VARIOUS_JUMP_IF_PROTECTED 124
|
||||||
|
|
||||||
// Cmd_manipulatedamage
|
// Cmd_manipulatedamage
|
||||||
#define DMG_CHANGE_SIGN 0
|
#define DMG_CHANGE_SIGN 0
|
||||||
|
@ -596,8 +596,9 @@
|
|||||||
#define STRINGID_PKMNREVERTEDTOPRIMAL 593
|
#define STRINGID_PKMNREVERTEDTOPRIMAL 593
|
||||||
#define STRINGID_BUTPOKEMONCANTUSETHEMOVE 594
|
#define STRINGID_BUTPOKEMONCANTUSETHEMOVE 594
|
||||||
#define STRINGID_BUTHOOPACANTUSEIT 595
|
#define STRINGID_BUTHOOPACANTUSEIT 595
|
||||||
|
#define STRINGID_BROKETHROUGHPROTECTION 596
|
||||||
|
|
||||||
#define BATTLESTRINGS_COUNT 596
|
#define BATTLESTRINGS_COUNT 597
|
||||||
|
|
||||||
// The below IDs are all indexes into battle message tables,
|
// The below IDs are all indexes into battle message tables,
|
||||||
// used to determine which of a set of messages to print.
|
// used to determine which of a set of messages to print.
|
||||||
|
@ -722,9 +722,11 @@ 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_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_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_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!");
|
||||||
|
|
||||||
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
||||||
{
|
{
|
||||||
|
[STRINGID_BROKETHROUGHPROTECTION - 12] = sText_BrokeThroughProtection,
|
||||||
[STRINGID_BUTPOKEMONCANTUSETHEMOVE - 12] = sText_ButPokemonCantUseTheMove,
|
[STRINGID_BUTPOKEMONCANTUSETHEMOVE - 12] = sText_ButPokemonCantUseTheMove,
|
||||||
[STRINGID_BUTHOOPACANTUSEIT - 12] = sText_ButHoopaCantUseIt,
|
[STRINGID_BUTHOOPACANTUSEIT - 12] = sText_ButHoopaCantUseIt,
|
||||||
[STRINGID_PKMNREVERTEDTOPRIMAL - 12] = sText_PkmnRevertedToPrimal,
|
[STRINGID_PKMNREVERTEDTOPRIMAL - 12] = sText_PkmnRevertedToPrimal,
|
||||||
|
@ -8698,12 +8698,6 @@ static void Cmd_various(void)
|
|||||||
gBattlescriptCurrInstr += 7; // exit if loop failed (failsafe)
|
gBattlescriptCurrInstr += 7; // exit if loop failed (failsafe)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case VARIOUS_JUMP_IF_SPECIES:
|
|
||||||
if (gBattleMons[gActiveBattler].species == T1_READ_16(gBattlescriptCurrInstr + 3))
|
|
||||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 5);
|
|
||||||
else
|
|
||||||
gBattlescriptCurrInstr += 9;
|
|
||||||
return;
|
|
||||||
case VARIOUS_MOVEEND_ITEM_EFFECTS:
|
case VARIOUS_MOVEEND_ITEM_EFFECTS:
|
||||||
if (ItemBattleEffects(1, gActiveBattler, FALSE))
|
if (ItemBattleEffects(1, gActiveBattler, FALSE))
|
||||||
return;
|
return;
|
||||||
@ -8983,6 +8977,18 @@ static void Cmd_various(void)
|
|||||||
for (i = 0; i < gBattlersCount; i++)
|
for (i = 0; i < gBattlersCount; i++)
|
||||||
gStatuses4[i] |= STATUS4_PLASMA_FISTS;
|
gStatuses4[i] |= STATUS4_PLASMA_FISTS;
|
||||||
break;
|
break;
|
||||||
|
case VARIOUS_JUMP_IF_SPECIES:
|
||||||
|
if (gBattleMons[gActiveBattler].species == T1_READ_16(gBattlescriptCurrInstr + 3))
|
||||||
|
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 5);
|
||||||
|
else
|
||||||
|
gBattlescriptCurrInstr += 9;
|
||||||
|
return;
|
||||||
|
case VARIOUS_JUMP_IF_PROTECTED:
|
||||||
|
if (IS_BATTLER_PROTECTED(gActiveBattler))
|
||||||
|
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3);
|
||||||
|
else
|
||||||
|
gBattlescriptCurrInstr += 7;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattlescriptCurrInstr += 3;
|
gBattlescriptCurrInstr += 3;
|
||||||
|
Loading…
Reference in New Issue
Block a user