mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 11:44:17 +01:00
convert a few various to callnatives
This commit is contained in:
parent
7ab3d37a7c
commit
34ba9b4e0d
@ -1310,6 +1310,33 @@
|
|||||||
callnative BS_CalcMetalBurstDmg
|
callnative BS_CalcMetalBurstDmg
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro setzeffect
|
||||||
|
callnative BS_SetZEffect
|
||||||
|
.endm
|
||||||
|
|
||||||
|
@ Used by effects that may proc Symbiosis but do not call removeitem.
|
||||||
|
.macro trysymbiosis
|
||||||
|
callnative BS_TrySymbiosis
|
||||||
|
.endm
|
||||||
|
|
||||||
|
@ returns TRUE or FALSE to gBattleCommunication[0]
|
||||||
|
.macro canteleport battler:req
|
||||||
|
callnative BS_CanTeleport
|
||||||
|
.byte \battler
|
||||||
|
.endm
|
||||||
|
|
||||||
|
@ returns B_SIDE_x to gBattleCommunication[0]
|
||||||
|
.macro getbattlerside battler:req
|
||||||
|
callnative BS_GetBattlerSide
|
||||||
|
.byte \battler
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro checkparentalbondcounter counter:req, ptr:req
|
||||||
|
callnative BS_CheckParentalBondCounter
|
||||||
|
.byte \counter
|
||||||
|
.4byte \ptr
|
||||||
|
.endm
|
||||||
|
|
||||||
@ various command changed to more readable macros
|
@ various command changed to more readable macros
|
||||||
.macro cancelmultiturnmoves battler:req
|
.macro cancelmultiturnmoves battler:req
|
||||||
@ -1791,10 +1818,6 @@
|
|||||||
various \battler, VARIOUS_TRY_ACTIVATE_GRIM_NEIGH
|
various \battler, VARIOUS_TRY_ACTIVATE_GRIM_NEIGH
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setzeffect
|
|
||||||
various BS_ATTACKER, VARIOUS_SET_Z_EFFECT
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro consumeberry battler:req, frombattler:req
|
.macro consumeberry battler:req, frombattler:req
|
||||||
various \battler, VARIOUS_CONSUME_BERRY
|
various \battler, VARIOUS_CONSUME_BERRY
|
||||||
.byte \frombattler
|
.byte \frombattler
|
||||||
@ -1986,20 +2009,6 @@
|
|||||||
various BS_ATTACKER, VARIOUS_SWAP_SIDE_STATUSES
|
various BS_ATTACKER, VARIOUS_SWAP_SIDE_STATUSES
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro canteleport battler:req
|
|
||||||
various \battler, VARIOUS_CAN_TELEPORT
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro getbattlerside battler:req
|
|
||||||
various \battler, VARIOUS_GET_BATTLER_SIDE
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro checkparentalbondcounter counter:req, ptr:req
|
|
||||||
various BS_ATTACKER, VARIOUS_CHECK_PARENTAL_BOND_COUNTER
|
|
||||||
.byte \counter
|
|
||||||
.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
|
||||||
@ -2152,8 +2161,3 @@
|
|||||||
.macro skydropyawn
|
.macro skydropyawn
|
||||||
various 0, VARIOUS_SKY_DROP_YAWN
|
various 0, VARIOUS_SKY_DROP_YAWN
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ Used by effects that may proc Symbiosis but do not call removeitem.
|
|
||||||
.macro trysymbiosis
|
|
||||||
various BS_ATTACKER, VARIOUS_TRY_SYMBIOSIS
|
|
||||||
.endm
|
|
||||||
|
@ -241,11 +241,6 @@
|
|||||||
#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 150
|
#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 150
|
||||||
#define VARIOUS_SET_BEAK_BLAST 151
|
#define VARIOUS_SET_BEAK_BLAST 151
|
||||||
#define VARIOUS_SWAP_SIDE_STATUSES 152
|
#define VARIOUS_SWAP_SIDE_STATUSES 152
|
||||||
#define VARIOUS_SET_Z_EFFECT 153
|
|
||||||
#define VARIOUS_TRY_SYMBIOSIS 154
|
|
||||||
#define VARIOUS_CAN_TELEPORT 155
|
|
||||||
#define VARIOUS_GET_BATTLER_SIDE 156
|
|
||||||
#define VARIOUS_CHECK_PARENTAL_BOND_COUNTER 157
|
|
||||||
|
|
||||||
// Cmd_manipulatedamage
|
// Cmd_manipulatedamage
|
||||||
#define DMG_CHANGE_SIGN 0
|
#define DMG_CHANGE_SIGN 0
|
||||||
|
@ -9434,9 +9434,6 @@ static void Cmd_various(void)
|
|||||||
gBattlescriptCurrInstr += 7; // exit if loop failed (failsafe)
|
gBattlescriptCurrInstr += 7; // exit if loop failed (failsafe)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case VARIOUS_SET_Z_EFFECT:
|
|
||||||
SetZEffect(); //handles battle script jumping internally
|
|
||||||
return;
|
|
||||||
case VARIOUS_MOVEEND_ITEM_EFFECTS:
|
case VARIOUS_MOVEEND_ITEM_EFFECTS:
|
||||||
if (ItemBattleEffects(ITEMEFFECT_NORMAL, gActiveBattler, FALSE))
|
if (ItemBattleEffects(ITEMEFFECT_NORMAL, gActiveBattler, FALSE))
|
||||||
return;
|
return;
|
||||||
@ -10035,39 +10032,6 @@ static void Cmd_various(void)
|
|||||||
case VARIOUS_SWAP_SIDE_STATUSES:
|
case VARIOUS_SWAP_SIDE_STATUSES:
|
||||||
CourtChangeSwapSideStatuses();
|
CourtChangeSwapSideStatuses();
|
||||||
break;
|
break;
|
||||||
case VARIOUS_TRY_SYMBIOSIS: //called by Bestow, Fling, and Bug Bite, which don't work with Cmd_removeitem.
|
|
||||||
if (SYMBIOSIS_CHECK(gActiveBattler, BATTLE_PARTNER(gActiveBattler)))
|
|
||||||
{
|
|
||||||
BestowItem(BATTLE_PARTNER(gActiveBattler), gActiveBattler);
|
|
||||||
gLastUsedAbility = gBattleMons[BATTLE_PARTNER(gActiveBattler)].ability;
|
|
||||||
gBattleScripting.battler = gBattlerAbility = BATTLE_PARTNER(gActiveBattler);
|
|
||||||
gBattlerAttacker = gActiveBattler;
|
|
||||||
BattleScriptPushCursor();
|
|
||||||
gBattlescriptCurrInstr = BattleScript_SymbiosisActivates;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case VARIOUS_CAN_TELEPORT:
|
|
||||||
gBattleCommunication[0] = CanTeleport(gActiveBattler);
|
|
||||||
break;
|
|
||||||
case VARIOUS_GET_BATTLER_SIDE:
|
|
||||||
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
|
||||||
gBattleCommunication[0] = B_SIDE_PLAYER;
|
|
||||||
else
|
|
||||||
gBattleCommunication[0] = B_SIDE_OPPONENT;
|
|
||||||
break;
|
|
||||||
case VARIOUS_CHECK_PARENTAL_BOND_COUNTER:
|
|
||||||
{
|
|
||||||
// Some effects should only happen on the first or second strike of Parental Bond,
|
|
||||||
// so a way to check this in battle scripts is useful
|
|
||||||
u8 counter = T1_READ_8(gBattlescriptCurrInstr + 3);
|
|
||||||
if (gSpecialStatuses[gBattlerAttacker].parentalBondState == counter && gBattleMons[gBattlerTarget].hp != 0)
|
|
||||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 4);
|
|
||||||
else
|
|
||||||
gBattlescriptCurrInstr += 8;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
} // End of switch (gBattlescriptCurrInstr[2])
|
} // End of switch (gBattlescriptCurrInstr[2])
|
||||||
|
|
||||||
gBattlescriptCurrInstr += 3;
|
gBattlescriptCurrInstr += 3;
|
||||||
@ -14861,3 +14825,62 @@ static bool8 IsFinalStrikeEffect(u16 move)
|
|||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 10 bytes long (callnative(5) + counter(1) + ptr(4))
|
||||||
|
void BS_CheckParentalBondCounter(void)
|
||||||
|
{
|
||||||
|
// Some effects should only happen on the first or second strike of Parental Bond,
|
||||||
|
// so a way to check this in battle scripts is useful
|
||||||
|
u8 counter = T1_READ_8(gBattlescriptCurrInstr + 5);
|
||||||
|
if (gSpecialStatuses[gBattlerAttacker].parentalBondState == counter && gBattleMons[gBattlerTarget].hp != 0)
|
||||||
|
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 6);
|
||||||
|
else
|
||||||
|
gBattlescriptCurrInstr += 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6 bytes long (callnative(5) + battler(1))
|
||||||
|
void BS_GetBattlerSide(void)
|
||||||
|
{
|
||||||
|
u8 battler = gBattlescriptCurrInstr[5];
|
||||||
|
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||||
|
gBattleCommunication[0] = B_SIDE_PLAYER;
|
||||||
|
else
|
||||||
|
gBattleCommunication[0] = B_SIDE_OPPONENT;
|
||||||
|
|
||||||
|
gBattlescriptCurrInstr += 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6 bytes long (callnative(5) + battler(1))
|
||||||
|
void BS_CanTeleport(void)
|
||||||
|
{
|
||||||
|
u8 battler = gBattlescriptCurrInstr[5];
|
||||||
|
gBattleCommunication[0] = CanTeleport(battler);
|
||||||
|
gBattlescriptCurrInstr += 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5 bytes long
|
||||||
|
void BS_TrySymbiosis(void)
|
||||||
|
{
|
||||||
|
//called by Bestow, Fling, and Bug Bite, which don't work with Cmd_removeitem.
|
||||||
|
gActiveBattler = gBattlerAttacker;
|
||||||
|
if (SYMBIOSIS_CHECK(gBattlerAttacker, BATTLE_PARTNER(gActiveBattler)))
|
||||||
|
{
|
||||||
|
BestowItem(BATTLE_PARTNER(gActiveBattler), gActiveBattler);
|
||||||
|
gLastUsedAbility = gBattleMons[BATTLE_PARTNER(gActiveBattler)].ability;
|
||||||
|
gBattleScripting.battler = gBattlerAbility = BATTLE_PARTNER(gActiveBattler);
|
||||||
|
gBattlerAttacker = gActiveBattler;
|
||||||
|
BattleScriptPushCursor(gBattlescriptCurrInstr + 5);
|
||||||
|
gBattlescriptCurrInstr = BattleScript_SymbiosisActivates;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gBattlescriptCurrInstr += 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BS_SetZEffect(void)
|
||||||
|
{
|
||||||
|
SetZEffect(); // Handles battle script jumping internally
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -593,7 +593,7 @@ const u8 *GetZMoveName(u16 move)
|
|||||||
return gZMoveNames[0]; // Failsafe
|
return gZMoveNames[0]; // Failsafe
|
||||||
}
|
}
|
||||||
|
|
||||||
#define Z_EFFECT_BS_LENGTH 3
|
#define Z_EFFECT_BS_LENGTH 5
|
||||||
// This function kinda cheats by setting a return battle script to after the setzeffect various command
|
// This function kinda cheats by setting a return battle script to after the setzeffect various command
|
||||||
// and then jumping to a z effect script
|
// and then jumping to a z effect script
|
||||||
void SetZEffect(void)
|
void SetZEffect(void)
|
||||||
@ -684,7 +684,7 @@ void SetZEffect(void)
|
|||||||
gBattlescriptCurrInstr = BattleScript_StatUpZMove;
|
gBattlescriptCurrInstr = BattleScript_StatUpZMove;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
gBattlescriptCurrInstr += 3;
|
gBattlescriptCurrInstr += Z_EFFECT_BS_LENGTH;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user