mirror of
https://github.com/pret/pokefirered.git
synced 2026-09-30 12:59:43 -05:00
updated Cmd_jumpifstatus, Cmd_jumpifstatus2 and Cmd_jumpifability
This commit is contained in:
@@ -133,25 +133,25 @@
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro jumpifstatus battler:req, status1:req, ptr:req
|
||||
.macro jumpifstatus battler:req, flags:req, jumpInstr:req
|
||||
.byte 0x1c
|
||||
.byte \battler
|
||||
.4byte \status1
|
||||
.4byte \ptr
|
||||
.4byte \flags
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifstatus2 battler:req, status2:req, ptr:req
|
||||
.macro jumpifstatus2 battler:req, flags:req, jumpInstr:req
|
||||
.byte 0x1d
|
||||
.byte \battler
|
||||
.4byte \status2
|
||||
.4byte \ptr
|
||||
.4byte \flags
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifability param0:req, ability:req, ptr:req
|
||||
.macro jumpifability battler:req, ability:req, jumpInstr:req
|
||||
.byte 0x1e
|
||||
.byte \param0
|
||||
.byte \battler
|
||||
.2byte \ability
|
||||
.4byte \ptr
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifsideaffecting battler:req, sidestatus:req, ptr:req
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
#define BS_FAINTED_LINK_MULTIPLE_2 6 // for openpartyscreen
|
||||
#define BS_BATTLER_0 7
|
||||
#define BS_ATTACKER_SIDE 8 // for Cmd_jumpifability
|
||||
#define BS_NOT_ATTACKER_SIDE 9 // for Cmd_jumpifability
|
||||
#define BS_TARGET_SIDE 9 // for Cmd_jumpifability
|
||||
#define BS_SCRIPTING 10
|
||||
#define BS_PLAYER1 11
|
||||
#define BS_OPPONENT1 12
|
||||
|
||||
@@ -396,9 +396,9 @@ void (* const gBattleScriptingCommandsTable[])(void) =
|
||||
Cmd_tryfaintmon, //0x19 // done
|
||||
Cmd_dofaintanimation, //0x1A // done
|
||||
Cmd_cleareffectsonfaint, //0x1B // done
|
||||
Cmd_jumpifstatus, //0x1C
|
||||
Cmd_jumpifstatus2, //0x1D
|
||||
Cmd_jumpifability, //0x1E
|
||||
Cmd_jumpifstatus, //0x1C // done
|
||||
Cmd_jumpifstatus2, //0x1D // done
|
||||
Cmd_jumpifability, //0x1E // done
|
||||
Cmd_jumpifsideaffecting, //0x1F
|
||||
Cmd_jumpifstat, //0x20
|
||||
Cmd_jumpifstatus3condition, //0x21
|
||||
@@ -4126,75 +4126,75 @@ static void Cmd_cleareffectsonfaint(void)
|
||||
|
||||
static void Cmd_jumpifstatus(void)
|
||||
{
|
||||
u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
|
||||
u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2);
|
||||
const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 6);
|
||||
CMD_ARGS(u8 battler, u32 flags, const u8 *jumpInstr);
|
||||
|
||||
if (gBattleMons[battlerId].status1 & flags && gBattleMons[battlerId].hp != 0) {
|
||||
gBattlescriptCurrInstr = jumpPtr;
|
||||
}
|
||||
else {
|
||||
gBattlescriptCurrInstr += 10;
|
||||
}
|
||||
u8 battler = GetBattlerForBattleScript(cmd->battler);
|
||||
u32 flags = cmd->flags;
|
||||
const u8 *jumpInstr = cmd->jumpInstr;
|
||||
|
||||
if (gBattleMons[battler].status1 & flags && gBattleMons[battler].hp != 0)
|
||||
gBattlescriptCurrInstr = jumpInstr;
|
||||
else
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
|
||||
static void Cmd_jumpifstatus2(void)
|
||||
{
|
||||
u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
|
||||
u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2);
|
||||
const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 6);
|
||||
CMD_ARGS(u8 battler, u32 flags, const u8 *jumpInstr);
|
||||
|
||||
if (gBattleMons[battlerId].status2 & flags && gBattleMons[battlerId].hp != 0)
|
||||
gBattlescriptCurrInstr = jumpPtr;
|
||||
u8 battler = GetBattlerForBattleScript(cmd->battler);
|
||||
u32 flags = cmd->flags;
|
||||
const u8 *jumpInstr = cmd->jumpInstr;
|
||||
|
||||
if (gBattleMons[battler].status2 & flags && gBattleMons[battler].hp != 0)
|
||||
gBattlescriptCurrInstr = jumpInstr;
|
||||
else
|
||||
gBattlescriptCurrInstr += 10;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
|
||||
static void Cmd_jumpifability(void)
|
||||
{
|
||||
CMD_ARGS(u8 battler, u16 ability, const u8 *jumpInstr);
|
||||
u32 battlerId;
|
||||
|
||||
u32 battler;
|
||||
bool32 hasAbility = FALSE;
|
||||
u32 ability = cmd->ability;
|
||||
|
||||
if (cmd->battler == BS_ATTACKER_SIDE)
|
||||
switch (cmd->battler)
|
||||
{
|
||||
battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_BATTLER_SIDE, gBattlerAttacker, ability, 0, 0);
|
||||
if (battlerId)
|
||||
default:
|
||||
battler = GetBattlerForBattleScript(cmd->battler);
|
||||
if (GetBattlerAbility(battler) == ability)
|
||||
hasAbility = TRUE;
|
||||
break;
|
||||
case BS_ATTACKER_SIDE:
|
||||
battler = IsAbilityOnSide(gBattlerAttacker, ability);
|
||||
if (battler)
|
||||
{
|
||||
gLastUsedAbility = ability;
|
||||
gBattlescriptCurrInstr = cmd->jumpInstr;
|
||||
RecordAbilityBattle(battlerId - 1, gLastUsedAbility);
|
||||
gBattleScripting.battlerWithAbility = battlerId - 1;
|
||||
battler--;
|
||||
hasAbility = TRUE;
|
||||
}
|
||||
else
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
break;
|
||||
case BS_TARGET_SIDE:
|
||||
battler = IsAbilityOnOpposingSide(gBattlerAttacker, ability);
|
||||
if (battler)
|
||||
{
|
||||
battler--;
|
||||
hasAbility = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if (cmd->battler == BS_NOT_ATTACKER_SIDE)
|
||||
|
||||
if (hasAbility)
|
||||
{
|
||||
battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBattlerAttacker, ability, 0, 0);
|
||||
if (battlerId)
|
||||
{
|
||||
gLastUsedAbility = ability;
|
||||
gBattlescriptCurrInstr = cmd->jumpInstr;
|
||||
RecordAbilityBattle(battlerId - 1, gLastUsedAbility);
|
||||
gBattleScripting.battlerWithAbility = battlerId - 1;
|
||||
}
|
||||
else
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
gLastUsedAbility = ability;
|
||||
gBattlescriptCurrInstr = cmd->jumpInstr;
|
||||
RecordAbilityBattle(battler, gLastUsedAbility);
|
||||
gBattlerAbility = battler;
|
||||
}
|
||||
else
|
||||
{
|
||||
battlerId = GetBattlerForBattleScript(cmd->battler);
|
||||
if (gBattleMons[battlerId].ability == ability)
|
||||
{
|
||||
gLastUsedAbility = ability;
|
||||
gBattlescriptCurrInstr = cmd->jumpInstr;
|
||||
RecordAbilityBattle(battlerId, gLastUsedAbility);
|
||||
gBattleScripting.battlerWithAbility = battlerId;
|
||||
}
|
||||
else
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ u8 GetBattlerForBattleScript(u8 caseId)
|
||||
case BS_ATTACKER_WITH_PARTNER:
|
||||
case BS_FAINTED_LINK_MULTIPLE_2:
|
||||
case BS_ATTACKER_SIDE:
|
||||
case BS_NOT_ATTACKER_SIDE:
|
||||
case BS_TARGET_SIDE:
|
||||
break;
|
||||
case BS_ABILITY_BATTLER:
|
||||
ret = gBattlerAbility;
|
||||
|
||||
Reference in New Issue
Block a user