fix, rename, label battle labels and battlescripts
This commit is contained in:
@@ -1231,6 +1231,11 @@
|
|||||||
chosenstatusanimation \bank 0x1 \status
|
chosenstatusanimation \bank 0x1 \status
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro sethword dst, value
|
||||||
|
setbyte \dst, \value & 0xFF
|
||||||
|
setbyte \dst + 1, (\value >> 8) & 0xFF
|
||||||
|
.endm
|
||||||
|
|
||||||
.macro setword dst, value
|
.macro setword dst, value
|
||||||
setbyte \dst, \value & 0xFF
|
setbyte \dst, \value & 0xFF
|
||||||
setbyte \dst + 1, (\value >> 8) & 0xFF
|
setbyte \dst + 1, (\value >> 8) & 0xFF
|
||||||
@@ -1242,6 +1247,10 @@
|
|||||||
copyarray \dst, \src, 0x1
|
copyarray \dst, \src, 0x1
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro copyhword dst, src
|
||||||
|
copyarray \dst, \src, 0x2
|
||||||
|
.endm
|
||||||
|
|
||||||
.macro copyword dst, src
|
.macro copyword dst, src
|
||||||
copyarray \dst, \src, 0x4
|
copyarray \dst, \src, 0x4
|
||||||
.endm
|
.endm
|
||||||
|
|||||||
@@ -145,7 +145,6 @@
|
|||||||
.equiv sANIM_ARG1, gBattleScripting + 0x10
|
.equiv sANIM_ARG1, gBattleScripting + 0x10
|
||||||
.equiv sANIM_ARG2, gBattleScripting + 0x11
|
.equiv sANIM_ARG2, gBattleScripting + 0x11
|
||||||
.equiv sTRIPLE_KICK_POWER, gBattleScripting + 0x12
|
.equiv sTRIPLE_KICK_POWER, gBattleScripting + 0x12
|
||||||
.equiv sFIELD_13, gBattleScripting + 0x13
|
|
||||||
.equiv sMOVEEND_STATE, gBattleScripting + 0x14
|
.equiv sMOVEEND_STATE, gBattleScripting + 0x14
|
||||||
.equiv sFIELD_15, gBattleScripting + 0x15
|
.equiv sFIELD_15, gBattleScripting + 0x15
|
||||||
.equiv sFIELD_16, gBattleScripting + 0x16
|
.equiv sFIELD_16, gBattleScripting + 0x16
|
||||||
|
|||||||
+31
-35
@@ -299,8 +299,8 @@ BattleScript_EffectSleep::
|
|||||||
attackstring
|
attackstring
|
||||||
ppreduce
|
ppreduce
|
||||||
jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
|
jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
|
||||||
jumpifstatus TARGET, STATUS_SLEEP, BattleScript_82D8AB0
|
jumpifstatus TARGET, STATUS_SLEEP, BattleScript_AlreadyAsleep
|
||||||
jumpifcantmakeasleep BattleScript_82D8ACF
|
jumpifcantmakeasleep BattleScript_CantMakeAsleep
|
||||||
jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
|
jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
|
||||||
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
|
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
|
||||||
jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
|
jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
|
||||||
@@ -310,20 +310,20 @@ BattleScript_EffectSleep::
|
|||||||
seteffectprimary
|
seteffectprimary
|
||||||
goto BattleScript_MoveEnd
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
BattleScript_82D8AB0::
|
BattleScript_AlreadyAsleep::
|
||||||
various ATTACKER, 0x17
|
various ATTACKER, 0x17
|
||||||
pause 0x20
|
pause 0x20
|
||||||
printstring STRINGID_PKMNALREADYASLEEP
|
printstring STRINGID_PKMNALREADYASLEEP
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
goto BattleScript_MoveEnd
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
BattleScript_82D8AC1::
|
BattleScript_WasntAffected::
|
||||||
pause 0x20
|
pause 0x20
|
||||||
printstring STRINGID_PKMNWASNTAFFECTED
|
printstring STRINGID_PKMNWASNTAFFECTED
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
goto BattleScript_MoveEnd
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
BattleScript_82D8ACF::
|
BattleScript_CantMakeAsleep::
|
||||||
pause 0x20
|
pause 0x20
|
||||||
printfromtable gUproarAwakeStringIds
|
printfromtable gUproarAwakeStringIds
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
@@ -446,7 +446,7 @@ BattleScript_82D8C0E::
|
|||||||
attackstring
|
attackstring
|
||||||
ppreduce
|
ppreduce
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
goto BattleScript_82D8AC1
|
goto BattleScript_WasntAffected
|
||||||
BattleScript_82D8C18::
|
BattleScript_82D8C18::
|
||||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||||
attackstring
|
attackstring
|
||||||
@@ -628,7 +628,7 @@ BattleScript_EffectMultiHit::
|
|||||||
BattleScript_82D8DFD::
|
BattleScript_82D8DFD::
|
||||||
jumpifhasnohp ATTACKER, BattleScript_82D8E93
|
jumpifhasnohp ATTACKER, BattleScript_82D8E93
|
||||||
jumpifhasnohp TARGET, BattleScript_82D8E74
|
jumpifhasnohp TARGET, BattleScript_82D8E74
|
||||||
jumpifhalfword EQUAL, gLastUsedMove, 0xD6, BattleScript_82D8E1F
|
jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_82D8E1F
|
||||||
jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D8E74
|
jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D8E74
|
||||||
BattleScript_82D8E1F::
|
BattleScript_82D8E1F::
|
||||||
movevaluescleanup
|
movevaluescleanup
|
||||||
@@ -655,7 +655,6 @@ BattleScript_82D8E1F::
|
|||||||
jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_82D8E74
|
jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_82D8E74
|
||||||
decrementmultihit BattleScript_82D8DFD
|
decrementmultihit BattleScript_82D8DFD
|
||||||
goto BattleScript_82D8E74
|
goto BattleScript_82D8E74
|
||||||
|
|
||||||
BattleScript_82D8E71::
|
BattleScript_82D8E71::
|
||||||
pause 0x20
|
pause 0x20
|
||||||
BattleScript_82D8E74::
|
BattleScript_82D8E74::
|
||||||
@@ -927,7 +926,7 @@ BattleScript_EffectConfuse::
|
|||||||
ppreduce
|
ppreduce
|
||||||
jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
|
jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
|
||||||
jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
|
jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
|
||||||
jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_82D9201
|
jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_AlreadyConfused
|
||||||
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
|
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
|
||||||
jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
|
jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
|
||||||
attackanimation
|
attackanimation
|
||||||
@@ -938,7 +937,7 @@ BattleScript_EffectConfuse::
|
|||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
goto BattleScript_MoveEnd
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
BattleScript_82D9201::
|
BattleScript_AlreadyConfused::
|
||||||
various ATTACKER, 0x17
|
various ATTACKER, 0x17
|
||||||
pause 0x20
|
pause 0x20
|
||||||
printstring STRINGID_PKMNALREADYCONFUSED
|
printstring STRINGID_PKMNALREADYCONFUSED
|
||||||
@@ -1033,7 +1032,7 @@ BattleScript_EffectParalyze::
|
|||||||
jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
|
jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
|
||||||
typecalc
|
typecalc
|
||||||
jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_ButItFailed
|
jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_ButItFailed
|
||||||
jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_82D9351
|
jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_AlreadyParalyzed
|
||||||
jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
|
jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
|
||||||
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
|
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
|
||||||
jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
|
jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
|
||||||
@@ -1045,7 +1044,7 @@ BattleScript_EffectParalyze::
|
|||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
goto BattleScript_MoveEnd
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
BattleScript_82D9351::
|
BattleScript_AlreadyParalyzed::
|
||||||
various ATTACKER, 0x17
|
various ATTACKER, 0x17
|
||||||
pause 0x20
|
pause 0x20
|
||||||
printstring STRINGID_PKMNISALREADYPARALYZED
|
printstring STRINGID_PKMNISALREADYPARALYZED
|
||||||
@@ -1282,7 +1281,7 @@ BattleScript_EffectSnore::
|
|||||||
ppreduce
|
ppreduce
|
||||||
goto BattleScript_ButItFailed
|
goto BattleScript_ButItFailed
|
||||||
BattleScript_82D95CE::
|
BattleScript_82D95CE::
|
||||||
jumpifhalfword EQUAL, gLastUsedMove, 0xD6, BattleScript_82D95E2
|
jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_82D95E2
|
||||||
printstring STRINGID_PKMNFASTASLEEP
|
printstring STRINGID_PKMNFASTASLEEP
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
statusanimation ATTACKER
|
statusanimation ATTACKER
|
||||||
@@ -1406,26 +1405,25 @@ BattleScript_EffectTripleKick::
|
|||||||
attackcanceler
|
attackcanceler
|
||||||
attackstring
|
attackstring
|
||||||
ppreduce
|
ppreduce
|
||||||
setbyte sTRIPLE_KICK_POWER, 0x0
|
sethword sTRIPLE_KICK_POWER, 0x0
|
||||||
setbyte sFIELD_13, 0x0
|
|
||||||
initmultihitstring
|
initmultihitstring
|
||||||
setmultihit 0x3
|
setmultihit 0x3
|
||||||
BattleScript_82D9718::
|
BattleScript_TripleKickLoop::
|
||||||
jumpifhasnohp ATTACKER, BattleScript_82D97D7
|
jumpifhasnohp ATTACKER, BattleScript_TripleKickEnd
|
||||||
jumpifhasnohp TARGET, BattleScript_82D9799
|
jumpifhasnohp TARGET, BattleScript_TripleKickNoMoreHits
|
||||||
jumpifhalfword EQUAL, gLastUsedMove, 0xD6, BattleScript_82D973A
|
jumpifhalfword EQUAL, gOriginallyUsedMove, MOVE_SLEEP_TALK, BattleScript_82D973A
|
||||||
jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D9799
|
jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_TripleKickNoMoreHits
|
||||||
BattleScript_82D973A::
|
BattleScript_82D973A::
|
||||||
accuracycheck BattleScript_82D9799, ACC_CURR_MOVE
|
accuracycheck BattleScript_TripleKickNoMoreHits, ACC_CURR_MOVE
|
||||||
movevaluescleanup
|
movevaluescleanup
|
||||||
addbyte sTRIPLE_KICK_POWER, 0xA
|
addbyte sTRIPLE_KICK_POWER, 10
|
||||||
addbyte sMULTIHIT_STRING + 4, 0x1
|
addbyte sMULTIHIT_STRING + 4, 0x1
|
||||||
copyarray gDynamicBasePower, sTRIPLE_KICK_POWER, 0x2
|
copyhword gDynamicBasePower, sTRIPLE_KICK_POWER
|
||||||
critcalc
|
critcalc
|
||||||
damagecalc
|
damagecalc
|
||||||
typecalc
|
typecalc
|
||||||
adjustnormaldamage
|
adjustnormaldamage
|
||||||
jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D9799
|
jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_TripleKickNoMoreHits
|
||||||
attackanimation
|
attackanimation
|
||||||
waitanimation
|
waitanimation
|
||||||
effectivenesssound
|
effectivenesssound
|
||||||
@@ -1439,22 +1437,22 @@ BattleScript_82D973A::
|
|||||||
waitmessage 0x1
|
waitmessage 0x1
|
||||||
setbyte sMOVEEND_STATE, 0x0
|
setbyte sMOVEEND_STATE, 0x0
|
||||||
moveend 0x2, 0x10
|
moveend 0x2, 0x10
|
||||||
jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_82D97AD
|
jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_TripleKickPrintStrings
|
||||||
decrementmultihit BattleScript_82D9718
|
decrementmultihit BattleScript_TripleKickLoop
|
||||||
goto BattleScript_82D97AD
|
goto BattleScript_TripleKickPrintStrings
|
||||||
BattleScript_82D9799::
|
BattleScript_TripleKickNoMoreHits::
|
||||||
pause 0x20
|
pause 0x20
|
||||||
jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_82D97AD
|
jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickPrintStrings
|
||||||
bicbyte gBattleMoveFlags, MOVESTATUS_MISSED
|
bicbyte gBattleMoveFlags, MOVESTATUS_MISSED
|
||||||
BattleScript_82D97AD::
|
BattleScript_TripleKickPrintStrings::
|
||||||
resultmessage
|
resultmessage
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_82D97D7
|
jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickEnd
|
||||||
jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_82D97D7
|
jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_TripleKickEnd
|
||||||
copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6
|
copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6
|
||||||
printstring STRINGID_HITXTIMES
|
printstring STRINGID_HITXTIMES
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
BattleScript_82D97D7::
|
BattleScript_TripleKickEnd::
|
||||||
seteffectwithchance
|
seteffectwithchance
|
||||||
tryfaintmon TARGET, FALSE, NULL
|
tryfaintmon TARGET, FALSE, NULL
|
||||||
setbyte sMOVEEND_STATE, 0xE
|
setbyte sMOVEEND_STATE, 0xE
|
||||||
@@ -3545,7 +3543,6 @@ BattleScript_82DAFE4::
|
|||||||
jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB001
|
jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB001
|
||||||
accuracycheck BattleScript_82DB058, MOVE_FUTURE_SIGHT
|
accuracycheck BattleScript_82DB058, MOVE_FUTURE_SIGHT
|
||||||
goto BattleScript_82DB008
|
goto BattleScript_82DB008
|
||||||
|
|
||||||
BattleScript_82DB001::
|
BattleScript_82DB001::
|
||||||
accuracycheck BattleScript_82DB058, MOVE_DOOM_DESIRE
|
accuracycheck BattleScript_82DB058, MOVE_DOOM_DESIRE
|
||||||
BattleScript_82DB008::
|
BattleScript_82DB008::
|
||||||
@@ -3553,7 +3550,6 @@ BattleScript_82DB008::
|
|||||||
jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB020
|
jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB020
|
||||||
playanimation ATTACKER, ANIM_FUTURE_SIGHT_HIT, NULL
|
playanimation ATTACKER, ANIM_FUTURE_SIGHT_HIT, NULL
|
||||||
goto BattleScript_82DB027
|
goto BattleScript_82DB027
|
||||||
|
|
||||||
BattleScript_82DB020::
|
BattleScript_82DB020::
|
||||||
playanimation ATTACKER, ANIM_x13, NULL
|
playanimation ATTACKER, ANIM_x13, NULL
|
||||||
BattleScript_82DB027::
|
BattleScript_82DB027::
|
||||||
|
|||||||
+1
-9
@@ -706,13 +706,6 @@ struct BattleStruct
|
|||||||
|
|
||||||
extern struct BattleStruct* gBattleStruct;
|
extern struct BattleStruct* gBattleStruct;
|
||||||
|
|
||||||
#define MEME_ACCESS_U8(structName, structPtr, arrayId, offsetField, value) \
|
|
||||||
{ \
|
|
||||||
u8* var2 = (u8*)((u32)(arrayId)); \
|
|
||||||
var2 = (u32)(structPtr) + var2; \
|
|
||||||
var2[offsetof(struct structName, offsetField)] = value; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define GET_MOVE_TYPE(move, typeArg) \
|
#define GET_MOVE_TYPE(move, typeArg) \
|
||||||
{ \
|
{ \
|
||||||
if (gBattleStruct->dynamicMoveType) \
|
if (gBattleStruct->dynamicMoveType) \
|
||||||
@@ -850,8 +843,7 @@ struct BattleScripting
|
|||||||
u8 twoTurnsMoveStringId;
|
u8 twoTurnsMoveStringId;
|
||||||
u8 animArg1;
|
u8 animArg1;
|
||||||
u8 animArg2;
|
u8 animArg2;
|
||||||
u8 tripleKickPower;
|
u16 tripleKickPower;
|
||||||
u8 field_13;
|
|
||||||
u8 atk49_state;
|
u8 atk49_state;
|
||||||
u8 field_15;
|
u8 field_15;
|
||||||
u8 field_16;
|
u8 field_16;
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ extern const u8 BattleScript_PrintMoveMissed[];
|
|||||||
extern const u8 BattleScript_MoveMissedPause[];
|
extern const u8 BattleScript_MoveMissedPause[];
|
||||||
extern const u8 BattleScript_MoveMissed[];
|
extern const u8 BattleScript_MoveMissed[];
|
||||||
extern const u8 BattleScript_EffectSleep[];
|
extern const u8 BattleScript_EffectSleep[];
|
||||||
extern const u8 BattleScript_82D8AB0[];
|
extern const u8 BattleScript_AlreadyAsleep[];
|
||||||
extern const u8 BattleScript_82D8AC1[];
|
extern const u8 BattleScript_WasntAffected[];
|
||||||
extern const u8 BattleScript_82D8ACF[];
|
extern const u8 BattleScript_CantMakeAsleep[];
|
||||||
extern const u8 BattleScript_EffectPoisonHit[];
|
extern const u8 BattleScript_EffectPoisonHit[];
|
||||||
extern const u8 BattleScript_EffectAbsorb[];
|
extern const u8 BattleScript_EffectAbsorb[];
|
||||||
extern const u8 BattleScript_82D8B26[];
|
extern const u8 BattleScript_82D8B26[];
|
||||||
@@ -94,7 +94,7 @@ extern const u8 BattleScript_EffectMist[];
|
|||||||
extern const u8 BattleScript_EffectFocusEnergy[];
|
extern const u8 BattleScript_EffectFocusEnergy[];
|
||||||
extern const u8 BattleScript_EffectRecoil[];
|
extern const u8 BattleScript_EffectRecoil[];
|
||||||
extern const u8 BattleScript_EffectConfuse[];
|
extern const u8 BattleScript_EffectConfuse[];
|
||||||
extern const u8 BattleScript_82D9201[];
|
extern const u8 BattleScript_AlreadyConfused[];
|
||||||
extern const u8 BattleScript_EffectAttackUp2[];
|
extern const u8 BattleScript_EffectAttackUp2[];
|
||||||
extern const u8 BattleScript_EffectDefenseUp2[];
|
extern const u8 BattleScript_EffectDefenseUp2[];
|
||||||
extern const u8 BattleScript_EffectSpeedUp2[];
|
extern const u8 BattleScript_EffectSpeedUp2[];
|
||||||
@@ -109,7 +109,7 @@ extern const u8 BattleScript_EffectReflect[];
|
|||||||
extern const u8 BattleScript_82D928C[];
|
extern const u8 BattleScript_82D928C[];
|
||||||
extern const u8 BattleScript_EffectPoison[];
|
extern const u8 BattleScript_EffectPoison[];
|
||||||
extern const u8 BattleScript_EffectParalyze[];
|
extern const u8 BattleScript_EffectParalyze[];
|
||||||
extern const u8 BattleScript_82D9351[];
|
extern const u8 BattleScript_AlreadyParalyzed[];
|
||||||
extern const u8 BattleScript_LimberProtected[];
|
extern const u8 BattleScript_LimberProtected[];
|
||||||
extern const u8 BattleScript_EffectAttackDownHit[];
|
extern const u8 BattleScript_EffectAttackDownHit[];
|
||||||
extern const u8 BattleScript_EffectDefenseDownHit[];
|
extern const u8 BattleScript_EffectDefenseDownHit[];
|
||||||
@@ -155,11 +155,11 @@ extern const u8 BattleScript_EffectHealBell[];
|
|||||||
extern const u8 BattleScript_82D96ED[];
|
extern const u8 BattleScript_82D96ED[];
|
||||||
extern const u8 BattleScript_82D96FE[];
|
extern const u8 BattleScript_82D96FE[];
|
||||||
extern const u8 BattleScript_EffectTripleKick[];
|
extern const u8 BattleScript_EffectTripleKick[];
|
||||||
extern const u8 BattleScript_82D9718[];
|
extern const u8 BattleScript_TripleKickLoop[];
|
||||||
extern const u8 BattleScript_82D973A[];
|
extern const u8 BattleScript_82D973A[];
|
||||||
extern const u8 BattleScript_82D9799[];
|
extern const u8 BattleScript_TripleKickNoMoreHits[];
|
||||||
extern const u8 BattleScript_82D97AD[];
|
extern const u8 BattleScript_TripleKickPrintStrings[];
|
||||||
extern const u8 BattleScript_82D97D7[];
|
extern const u8 BattleScript_TripleKickEnd[];
|
||||||
extern const u8 BattleScript_EffectThief[];
|
extern const u8 BattleScript_EffectThief[];
|
||||||
extern const u8 BattleScript_EffectMeanLook[];
|
extern const u8 BattleScript_EffectMeanLook[];
|
||||||
extern const u8 BattleScript_EffectNightmare[];
|
extern const u8 BattleScript_EffectNightmare[];
|
||||||
|
|||||||
+21
-21
@@ -123,11 +123,11 @@ extern s32 gBattleMoveDamage;
|
|||||||
extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT];
|
extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT];
|
extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
|
extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT];
|
extern u16 gTurnMovesHitWith[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gUnknown_02024258[BATTLE_BANKS_COUNT];
|
extern u16 gUnknown_02024258[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gUnknown_02024260[BATTLE_BANKS_COUNT];
|
extern u16 gUnknown_02024260[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gLockedMoves[BATTLE_BANKS_COUNT];
|
extern u16 gLockedMoves[BATTLE_BANKS_COUNT];
|
||||||
extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT];
|
extern u8 gTurnMovesHitBy[BATTLE_BANKS_COUNT];
|
||||||
extern u8 gUnknown_02024284[BATTLE_BANKS_COUNT];
|
extern u8 gUnknown_02024284[BATTLE_BANKS_COUNT];
|
||||||
extern u32 gStatuses3[BATTLE_BANKS_COUNT];
|
extern u32 gStatuses3[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gSideAffecting[2];
|
extern u16 gSideAffecting[2];
|
||||||
@@ -149,7 +149,7 @@ extern u16 gDynamicBasePower;
|
|||||||
extern u8 gCritMultiplier;
|
extern u8 gCritMultiplier;
|
||||||
extern u8 gCurrMovePos;
|
extern u8 gCurrMovePos;
|
||||||
extern u8 gUnknown_020241E9;
|
extern u8 gUnknown_020241E9;
|
||||||
extern u16 gLastUsedMove;
|
extern u16 gOriginallyUsedMove;
|
||||||
|
|
||||||
extern const struct BattleMove gBattleMoves[];
|
extern const struct BattleMove gBattleMoves[];
|
||||||
extern const u16 gUnknown_08C004E0[]; // battle textbox palette
|
extern const u16 gUnknown_08C004E0[]; // battle textbox palette
|
||||||
@@ -461,7 +461,7 @@ static void sub_8036A5C(void)
|
|||||||
u32 status = 0;
|
u32 status = 0;
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < PARTY_SIZE; i++)
|
||||||
{
|
{
|
||||||
species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
|
species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
|
||||||
hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
|
hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
|
||||||
@@ -1878,7 +1878,7 @@ static void sub_8038B94(u8 taskId)
|
|||||||
}
|
}
|
||||||
|
|
||||||
r7 = 0;
|
r7 = 0;
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < PARTY_SIZE; i++)
|
||||||
{
|
{
|
||||||
u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2);
|
u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2);
|
||||||
u16 hp = GetMonData(&sp4[i], MON_DATA_HP);
|
u16 hp = GetMonData(&sp4[i], MON_DATA_HP);
|
||||||
@@ -1902,7 +1902,7 @@ static void sub_8038B94(u8 taskId)
|
|||||||
gTasks[taskId].data[3] = r7;
|
gTasks[taskId].data[3] = r7;
|
||||||
|
|
||||||
r7 = 0;
|
r7 = 0;
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < PARTY_SIZE; i++)
|
||||||
{
|
{
|
||||||
u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2);
|
u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2);
|
||||||
u16 hp = GetMonData(&sp8[i], MON_DATA_HP);
|
u16 hp = GetMonData(&sp8[i], MON_DATA_HP);
|
||||||
@@ -2744,10 +2744,10 @@ static void BattleStartClearSetData(void)
|
|||||||
gDisableStructs[i].isFirstTurn = 2;
|
gDisableStructs[i].isFirstTurn = 2;
|
||||||
gUnknown_02024284[i] = 0;
|
gUnknown_02024284[i] = 0;
|
||||||
gLastUsedMovesByBanks[i] = 0;
|
gLastUsedMovesByBanks[i] = 0;
|
||||||
gUnknown_02024250[i] = 0;
|
gTurnMovesHitWith[i] = 0;
|
||||||
gUnknown_02024258[i] = 0;
|
gUnknown_02024258[i] = 0;
|
||||||
gUnknown_02024260[i] = 0;
|
gUnknown_02024260[i] = 0;
|
||||||
gUnknown_02024270[i] = 0xFF;
|
gTurnMovesHitBy[i] = 0xFF;
|
||||||
gLockedMoves[i] = 0;
|
gLockedMoves[i] = 0;
|
||||||
gUnknownMovesUsedByBanks[i] = 0;
|
gUnknownMovesUsedByBanks[i] = 0;
|
||||||
gBattleResources->flags->flags[i] = 0;
|
gBattleResources->flags->flags[i] = 0;
|
||||||
@@ -2911,11 +2911,11 @@ void SwitchInClearSetData(void)
|
|||||||
gDisableStructs[gActiveBank].isFirstTurn= 2;
|
gDisableStructs[gActiveBank].isFirstTurn= 2;
|
||||||
gDisableStructs[gActiveBank].truantUnknownBit = disableStructCopy.truantUnknownBit;
|
gDisableStructs[gActiveBank].truantUnknownBit = disableStructCopy.truantUnknownBit;
|
||||||
gLastUsedMovesByBanks[gActiveBank] = 0;
|
gLastUsedMovesByBanks[gActiveBank] = 0;
|
||||||
gUnknown_02024250[gActiveBank] = 0;
|
gTurnMovesHitWith[gActiveBank] = 0;
|
||||||
gUnknown_02024258[gActiveBank] = 0;
|
gUnknown_02024258[gActiveBank] = 0;
|
||||||
gUnknown_02024260[gActiveBank] = 0;
|
gUnknown_02024260[gActiveBank] = 0;
|
||||||
gUnknownMovesUsedByBanks[gActiveBank] = 0;
|
gUnknownMovesUsedByBanks[gActiveBank] = 0;
|
||||||
gUnknown_02024270[gActiveBank] = 0xFF;
|
gTurnMovesHitBy[gActiveBank] = 0xFF;
|
||||||
|
|
||||||
*(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0;
|
*(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0;
|
||||||
*(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0;
|
*(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0;
|
||||||
@@ -3003,11 +3003,11 @@ void FaintClearSetData(void)
|
|||||||
gDisableStructs[gActiveBank].isFirstTurn = 2;
|
gDisableStructs[gActiveBank].isFirstTurn = 2;
|
||||||
|
|
||||||
gLastUsedMovesByBanks[gActiveBank] = 0;
|
gLastUsedMovesByBanks[gActiveBank] = 0;
|
||||||
gUnknown_02024250[gActiveBank] = 0;
|
gTurnMovesHitWith[gActiveBank] = 0;
|
||||||
gUnknown_02024258[gActiveBank] = 0;
|
gUnknown_02024258[gActiveBank] = 0;
|
||||||
gUnknown_02024260[gActiveBank] = 0;
|
gUnknown_02024260[gActiveBank] = 0;
|
||||||
gUnknownMovesUsedByBanks[gActiveBank] = 0;
|
gUnknownMovesUsedByBanks[gActiveBank] = 0;
|
||||||
gUnknown_02024270[gActiveBank] = 0xFF;
|
gTurnMovesHitBy[gActiveBank] = 0xFF;
|
||||||
|
|
||||||
*(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0;
|
*(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0;
|
||||||
*(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0;
|
*(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0;
|
||||||
@@ -5048,19 +5048,19 @@ static void HandleAction_UseMove(void)
|
|||||||
if (gProtectStructs[gBankAttacker].onlyStruggle)
|
if (gProtectStructs[gBankAttacker].onlyStruggle)
|
||||||
{
|
{
|
||||||
gProtectStructs[gBankAttacker].onlyStruggle = 0;
|
gProtectStructs[gBankAttacker].onlyStruggle = 0;
|
||||||
gCurrentMove = gLastUsedMove = MOVE_STRUGGLE;
|
gCurrentMove = gOriginallyUsedMove = MOVE_STRUGGLE;
|
||||||
gHitMarker |= HITMARKER_NO_PPDEDUCT;
|
gHitMarker |= HITMARKER_NO_PPDEDUCT;
|
||||||
*(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
|
*(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
|
||||||
}
|
}
|
||||||
else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE)
|
else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE)
|
||||||
{
|
{
|
||||||
gCurrentMove = gLastUsedMove = gLockedMoves[gBankAttacker];
|
gCurrentMove = gOriginallyUsedMove = gLockedMoves[gBankAttacker];
|
||||||
}
|
}
|
||||||
// encore forces you to use the same move
|
// encore forces you to use the same move
|
||||||
else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE
|
else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE
|
||||||
&& gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
|
&& gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
|
||||||
{
|
{
|
||||||
gCurrentMove = gLastUsedMove = gDisableStructs[gBankAttacker].encoredMove;
|
gCurrentMove = gOriginallyUsedMove = gDisableStructs[gBankAttacker].encoredMove;
|
||||||
gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos;
|
gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos;
|
||||||
*(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
|
*(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
|
||||||
}
|
}
|
||||||
@@ -5069,7 +5069,7 @@ static void HandleAction_UseMove(void)
|
|||||||
&& gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
|
&& gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
|
||||||
{
|
{
|
||||||
gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos;
|
gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos;
|
||||||
gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
|
gCurrentMove = gOriginallyUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
|
||||||
gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE;
|
gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE;
|
||||||
gDisableStructs[gBankAttacker].encoredMovePos = 0;
|
gDisableStructs[gBankAttacker].encoredMovePos = 0;
|
||||||
gDisableStructs[gBankAttacker].encoreTimer1 = 0;
|
gDisableStructs[gBankAttacker].encoreTimer1 = 0;
|
||||||
@@ -5077,12 +5077,12 @@ static void HandleAction_UseMove(void)
|
|||||||
}
|
}
|
||||||
else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker])
|
else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker])
|
||||||
{
|
{
|
||||||
gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
|
gCurrentMove = gOriginallyUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
|
||||||
*(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
|
*(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
|
gCurrentMove = gOriginallyUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gBattleMons[gBankAttacker].hp != 0)
|
if (gBattleMons[gBankAttacker].hp != 0)
|
||||||
@@ -5122,7 +5122,7 @@ static void HandleAction_UseMove(void)
|
|||||||
}
|
}
|
||||||
if (var == 4)
|
if (var == 4)
|
||||||
{
|
{
|
||||||
if (gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM)
|
if (gBattleMoves[gOriginallyUsedMove].target & MOVE_TARGET_RANDOM)
|
||||||
{
|
{
|
||||||
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
|
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
|
||||||
{
|
{
|
||||||
@@ -5167,7 +5167,7 @@ static void HandleAction_UseMove(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
|
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
|
||||||
&& gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM)
|
&& gBattleMoves[gOriginallyUsedMove].target & MOVE_TARGET_RANDOM)
|
||||||
{
|
{
|
||||||
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
|
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
|
||||||
{
|
{
|
||||||
@@ -5600,7 +5600,7 @@ static void HandleAction_ActionFinished(void)
|
|||||||
gBattleMoveFlags = 0;
|
gBattleMoveFlags = 0;
|
||||||
gBattleScripting.animTurn = 0;
|
gBattleScripting.animTurn = 0;
|
||||||
gBattleScripting.animTargetsHit = 0;
|
gBattleScripting.animTargetsHit = 0;
|
||||||
gUnknown_02024250[gBankAttacker] = 0;
|
gTurnMovesHitWith[gBankAttacker] = 0;
|
||||||
gUnknown_02024258[gBankAttacker] = 0;
|
gUnknown_02024258[gBankAttacker] = 0;
|
||||||
gBattleStruct->dynamicMoveType = 0;
|
gBattleStruct->dynamicMoveType = 0;
|
||||||
gDynamicBasePower = 0;
|
gDynamicBasePower = 0;
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ extern u32 gBattleTypeFlags;
|
|||||||
extern u32 gStatuses3[BATTLE_BANKS_COUNT];
|
extern u32 gStatuses3[BATTLE_BANKS_COUNT];
|
||||||
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
|
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
|
extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT];
|
extern u16 gTurnMovesHitWith[BATTLE_BANKS_COUNT];
|
||||||
extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT];
|
extern u8 gTurnMovesHitBy[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gDynamicBasePower;
|
extern u16 gDynamicBasePower;
|
||||||
extern u8 gBattleMoveFlags;
|
extern u8 gBattleMoveFlags;
|
||||||
extern u8 gCritMultiplier;
|
extern u8 gCritMultiplier;
|
||||||
@@ -141,11 +141,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
|
|||||||
|
|
||||||
if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0)
|
if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (gUnknown_02024250[gActiveBank] == 0)
|
if (gTurnMovesHitWith[gActiveBank] == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (gUnknown_02024250[gActiveBank] == 0xFFFF)
|
if (gTurnMovesHitWith[gActiveBank] == 0xFFFF)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0)
|
if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].power == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||||
@@ -162,11 +162,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
|
|||||||
bankIn2 = gActiveBank;
|
bankIn2 = gActiveBank;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_FIRE)
|
if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].type == TYPE_FIRE)
|
||||||
absorbingTypeAbility = ABILITY_FLASH_FIRE;
|
absorbingTypeAbility = ABILITY_FLASH_FIRE;
|
||||||
else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_WATER)
|
else if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].type == TYPE_WATER)
|
||||||
absorbingTypeAbility = ABILITY_WATER_ABSORB;
|
absorbingTypeAbility = ABILITY_WATER_ABSORB;
|
||||||
else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_ELECTRIC)
|
else if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].type == TYPE_ELECTRIC)
|
||||||
absorbingTypeAbility = ABILITY_VOLT_ABSORB;
|
absorbingTypeAbility = ABILITY_VOLT_ABSORB;
|
||||||
else
|
else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -238,13 +238,13 @@ static bool8 ShouldSwitchIfNaturalCure(void)
|
|||||||
if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 2)
|
if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 2)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if ((gUnknown_02024250[gActiveBank] == 0 || gUnknown_02024250[gActiveBank] == 0xFFFF) && Random() & 1)
|
if ((gTurnMovesHitWith[gActiveBank] == 0 || gTurnMovesHitWith[gActiveBank] == 0xFFFF) && Random() & 1)
|
||||||
{
|
{
|
||||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
|
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
|
||||||
EmitTwoReturnValues(1, ACTION_SWITCH, 0);
|
EmitTwoReturnValues(1, ACTION_SWITCH, 0);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0 && Random() & 1)
|
else if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].power == 0 && Random() & 1)
|
||||||
{
|
{
|
||||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
|
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
|
||||||
EmitTwoReturnValues(1, ACTION_SWITCH, 0);
|
EmitTwoReturnValues(1, ACTION_SWITCH, 0);
|
||||||
@@ -345,13 +345,13 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
|
|||||||
u16 move;
|
u16 move;
|
||||||
u8 moveFlags;
|
u8 moveFlags;
|
||||||
|
|
||||||
if (gUnknown_02024250[gActiveBank] == 0)
|
if (gTurnMovesHitWith[gActiveBank] == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (gUnknown_02024250[gActiveBank] == 0xFFFF)
|
if (gTurnMovesHitWith[gActiveBank] == 0xFFFF)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (gUnknown_02024270[gActiveBank] == 0xFF)
|
if (gTurnMovesHitBy[gActiveBank] == 0xFF)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0)
|
if (gBattleMoves[gTurnMovesHitWith[gActiveBank]].power == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||||
@@ -411,10 +411,10 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
|
|||||||
else
|
else
|
||||||
monAbility = gBaseStats[species].ability1;
|
monAbility = gBaseStats[species].ability1;
|
||||||
|
|
||||||
moveFlags = AI_TypeCalc(gUnknown_02024250[gActiveBank], species, monAbility);
|
moveFlags = AI_TypeCalc(gTurnMovesHitWith[gActiveBank], species, monAbility);
|
||||||
if (moveFlags & flags)
|
if (moveFlags & flags)
|
||||||
{
|
{
|
||||||
bankIn1 = gUnknown_02024270[gActiveBank];
|
bankIn1 = gTurnMovesHitBy[gActiveBank];
|
||||||
|
|
||||||
for (j = 0; j < 4; j++)
|
for (j = 0; j < 4; j++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ extern u8 gEffectBank;
|
|||||||
extern u16 gBattleWeather;
|
extern u16 gBattleWeather;
|
||||||
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
|
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gCurrentMove;
|
extern u16 gCurrentMove;
|
||||||
extern u16 gLastUsedMove;
|
extern u16 gOriginallyUsedMove;
|
||||||
extern u16 gLastUsedItem;
|
extern u16 gLastUsedItem;
|
||||||
extern u8 gBattleOutcome;
|
extern u8 gBattleOutcome;
|
||||||
extern u8 gLastUsedAbility;
|
extern u8 gLastUsedAbility;
|
||||||
@@ -1120,7 +1120,7 @@ void EmitPrintString(u8 bufferId, u16 stringID)
|
|||||||
|
|
||||||
stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
|
stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
|
||||||
stringInfo->currentMove = gCurrentMove;
|
stringInfo->currentMove = gCurrentMove;
|
||||||
stringInfo->lastMove = gLastUsedMove;
|
stringInfo->lastMove = gOriginallyUsedMove;
|
||||||
stringInfo->lastItem = gLastUsedItem;
|
stringInfo->lastItem = gLastUsedItem;
|
||||||
stringInfo->lastAbility = gLastUsedAbility;
|
stringInfo->lastAbility = gLastUsedAbility;
|
||||||
stringInfo->scrActive = gBattleScripting.bank;
|
stringInfo->scrActive = gBattleScripting.bank;
|
||||||
@@ -1152,7 +1152,7 @@ void EmitPrintSelectionString(u8 bufferId, u16 stringID)
|
|||||||
|
|
||||||
stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
|
stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
|
||||||
stringInfo->currentMove = gCurrentMove;
|
stringInfo->currentMove = gCurrentMove;
|
||||||
stringInfo->lastMove = gLastUsedMove;
|
stringInfo->lastMove = gOriginallyUsedMove;
|
||||||
stringInfo->lastItem = gLastUsedItem;
|
stringInfo->lastItem = gLastUsedItem;
|
||||||
stringInfo->lastAbility = gLastUsedAbility;
|
stringInfo->lastAbility = gLastUsedAbility;
|
||||||
stringInfo->scrActive = gBattleScripting.bank;
|
stringInfo->scrActive = gBattleScripting.bank;
|
||||||
|
|||||||
@@ -74,10 +74,10 @@ extern u8 gCurrentActionFuncId;
|
|||||||
extern u32 gHitMarker;
|
extern u32 gHitMarker;
|
||||||
extern u8 gBattleMoveFlags;
|
extern u8 gBattleMoveFlags;
|
||||||
extern u8 gBattleCommunication[];
|
extern u8 gBattleCommunication[];
|
||||||
extern u16 gUnknown_02024250[4];
|
extern u16 gTurnMovesHitWith[4];
|
||||||
extern u16 gUnknown_02024258[4];
|
extern u16 gUnknown_02024258[4];
|
||||||
extern u16 gUnknown_02024260[4];
|
extern u16 gUnknown_02024260[4];
|
||||||
extern u8 gUnknown_02024270[4];
|
extern u8 gTurnMovesHitBy[4];
|
||||||
extern u8 gStringBank;
|
extern u8 gStringBank;
|
||||||
extern u16 gDynamicBasePower;
|
extern u16 gDynamicBasePower;
|
||||||
extern u16 gLastUsedItem;
|
extern u16 gLastUsedItem;
|
||||||
@@ -99,7 +99,7 @@ extern u8 gCurrentTurnActionNumber;
|
|||||||
extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
|
extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
|
||||||
extern u16 gLockedMoves[BATTLE_BANKS_COUNT];
|
extern u16 gLockedMoves[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gPartnerTrainerId;
|
extern u16 gPartnerTrainerId;
|
||||||
extern u16 gLastUsedMove;
|
extern u16 gOriginallyUsedMove;
|
||||||
extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT];
|
extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
|
extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
|
||||||
extern u16 gTrainerBattleOpponent_A;
|
extern u16 gTrainerBattleOpponent_A;
|
||||||
@@ -1105,7 +1105,7 @@ static void atk00_attackcanceler(void)
|
|||||||
{
|
{
|
||||||
CancelMultiTurnMoves(gBankAttacker);
|
CancelMultiTurnMoves(gBankAttacker);
|
||||||
gBattleMoveFlags |= MOVESTATUS_MISSED;
|
gBattleMoveFlags |= MOVESTATUS_MISSED;
|
||||||
gUnknown_02024250[gBankTarget] = 0;
|
gTurnMovesHitWith[gBankTarget] = 0;
|
||||||
gUnknown_02024258[gBankTarget] = 0;
|
gUnknown_02024258[gBankTarget] = 0;
|
||||||
gBattleCommunication[6] = 1;
|
gBattleCommunication[6] = 1;
|
||||||
gBattlescriptCurrInstr++;
|
gBattlescriptCurrInstr++;
|
||||||
@@ -1121,7 +1121,7 @@ static void JumpIfMoveFailed(u8 adder, u16 move)
|
|||||||
const void* BS_ptr = gBattlescriptCurrInstr + adder;
|
const void* BS_ptr = gBattlescriptCurrInstr + adder;
|
||||||
if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
|
if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
|
||||||
{
|
{
|
||||||
gUnknown_02024250[gBankTarget] = 0;
|
gTurnMovesHitWith[gBankTarget] = 0;
|
||||||
gUnknown_02024258[gBankTarget] = 0;
|
gUnknown_02024258[gBankTarget] = 0;
|
||||||
BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
|
BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
|
||||||
}
|
}
|
||||||
@@ -1484,7 +1484,7 @@ static void atk06_typecalc(void)
|
|||||||
{
|
{
|
||||||
gLastUsedAbility = gBattleMons[gBankTarget].ability;
|
gLastUsedAbility = gBattleMons[gBankTarget].ability;
|
||||||
gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
|
gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
|
||||||
gUnknown_02024250[gBankTarget] = 0;
|
gTurnMovesHitWith[gBankTarget] = 0;
|
||||||
gUnknown_02024258[gBankTarget] = 0;
|
gUnknown_02024258[gBankTarget] = 0;
|
||||||
gBattleCommunication[6] = moveType;
|
gBattleCommunication[6] = moveType;
|
||||||
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
|
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
|
||||||
@@ -1520,7 +1520,7 @@ static void atk06_typecalc(void)
|
|||||||
{
|
{
|
||||||
gLastUsedAbility = ABILITY_WONDER_GUARD;
|
gLastUsedAbility = ABILITY_WONDER_GUARD;
|
||||||
gBattleMoveFlags |= MOVESTATUS_MISSED;
|
gBattleMoveFlags |= MOVESTATUS_MISSED;
|
||||||
gUnknown_02024250[gBankTarget] = 0;
|
gTurnMovesHitWith[gBankTarget] = 0;
|
||||||
gUnknown_02024258[gBankTarget] = 0;
|
gUnknown_02024258[gBankTarget] = 0;
|
||||||
gBattleCommunication[6] = 3;
|
gBattleCommunication[6] = 3;
|
||||||
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
|
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
|
||||||
@@ -4860,10 +4860,10 @@ static void atk49_moveend(void)
|
|||||||
|
|
||||||
effect = FALSE;
|
effect = FALSE;
|
||||||
|
|
||||||
if (gLastUsedMove == 0xFFFF)
|
if (gOriginallyUsedMove == 0xFFFF)
|
||||||
lastMove = 0;
|
lastMove = 0;
|
||||||
else
|
else
|
||||||
lastMove = gLastUsedMove;
|
lastMove = gOriginallyUsedMove;
|
||||||
|
|
||||||
arg1 = gBattlescriptCurrInstr[1];
|
arg1 = gBattlescriptCurrInstr[1];
|
||||||
arg2 = gBattlescriptCurrInstr[2];
|
arg2 = gBattlescriptCurrInstr[2];
|
||||||
@@ -4934,14 +4934,14 @@ static void atk49_moveend(void)
|
|||||||
break;
|
break;
|
||||||
case 6: // update choice band move
|
case 6: // update choice band move
|
||||||
if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND
|
if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND
|
||||||
|| gLastUsedMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF))
|
|| gOriginallyUsedMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF))
|
||||||
goto LOOP;
|
goto LOOP;
|
||||||
if (gLastUsedMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED))
|
if (gOriginallyUsedMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED))
|
||||||
{
|
{
|
||||||
gBattleScripting.atk49_state++;
|
gBattleScripting.atk49_state++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
*choicedMoveAtk = gLastUsedMove;
|
*choicedMoveAtk = gOriginallyUsedMove;
|
||||||
LOOP:
|
LOOP:
|
||||||
{
|
{
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
@@ -5036,7 +5036,7 @@ static void atk49_moveend(void)
|
|||||||
}
|
}
|
||||||
if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED)
|
if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED)
|
||||||
{
|
{
|
||||||
gUnknownMovesUsedByBanks[gBankAttacker] = gLastUsedMove;
|
gUnknownMovesUsedByBanks[gBankAttacker] = gOriginallyUsedMove;
|
||||||
}
|
}
|
||||||
if (!(gAbsentBankFlags & gBitTable[gBankAttacker])
|
if (!(gAbsentBankFlags & gBitTable[gBankAttacker])
|
||||||
&& !(gBattleStruct->field_91 & gBitTable[gBankAttacker])
|
&& !(gBattleStruct->field_91 & gBitTable[gBankAttacker])
|
||||||
@@ -5044,7 +5044,7 @@ static void atk49_moveend(void)
|
|||||||
{
|
{
|
||||||
if (gHitMarker & HITMARKER_OBEYS)
|
if (gHitMarker & HITMARKER_OBEYS)
|
||||||
{
|
{
|
||||||
gLastUsedMovesByBanks[gBankAttacker] = gLastUsedMove;
|
gLastUsedMovesByBanks[gBankAttacker] = gOriginallyUsedMove;
|
||||||
gUnknown_02024260[gBankAttacker] = gCurrentMove;
|
gUnknown_02024260[gBankAttacker] = gCurrentMove;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -5054,23 +5054,23 @@ static void atk49_moveend(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget)))
|
if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget)))
|
||||||
gUnknown_02024270[gBankTarget] = gBankAttacker;
|
gTurnMovesHitBy[gBankTarget] = gBankAttacker;
|
||||||
|
|
||||||
if (gHitMarker & HITMARKER_OBEYS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
|
if (gHitMarker & HITMARKER_OBEYS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
|
||||||
{
|
{
|
||||||
if (gLastUsedMove == 0xFFFF)
|
if (gOriginallyUsedMove == 0xFFFF)
|
||||||
{
|
{
|
||||||
gUnknown_02024250[gBankTarget] = gLastUsedMove;
|
gTurnMovesHitWith[gBankTarget] = gOriginallyUsedMove;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gUnknown_02024250[gBankTarget] = gCurrentMove;
|
gTurnMovesHitWith[gBankTarget] = gCurrentMove;
|
||||||
GET_MOVE_TYPE(gCurrentMove, gUnknown_02024258[gBankTarget]);
|
GET_MOVE_TYPE(gCurrentMove, gUnknown_02024258[gBankTarget]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gUnknown_02024250[gBankTarget] = 0xFFFF;
|
gTurnMovesHitWith[gBankTarget] = 0xFFFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gBattleScripting.atk49_state++;
|
gBattleScripting.atk49_state++;
|
||||||
@@ -5083,16 +5083,16 @@ static void atk49_moveend(void)
|
|||||||
{
|
{
|
||||||
u8 target, attacker;
|
u8 target, attacker;
|
||||||
|
|
||||||
*(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gLastUsedMove;
|
*(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gOriginallyUsedMove;
|
||||||
*(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gLastUsedMove >> 8;
|
*(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gOriginallyUsedMove >> 8;
|
||||||
|
|
||||||
target = gBankTarget;
|
target = gBankTarget;
|
||||||
attacker = gBankAttacker;
|
attacker = gBankAttacker;
|
||||||
*(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gLastUsedMove;
|
*(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gOriginallyUsedMove;
|
||||||
|
|
||||||
target = gBankTarget;
|
target = gBankTarget;
|
||||||
attacker = gBankAttacker;
|
attacker = gBankAttacker;
|
||||||
*(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gLastUsedMove >> 8;
|
*(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gOriginallyUsedMove >> 8;
|
||||||
}
|
}
|
||||||
gBattleScripting.atk49_state++;
|
gBattleScripting.atk49_state++;
|
||||||
break;
|
break;
|
||||||
@@ -5144,7 +5144,7 @@ static void atk4A_typecalc2(void)
|
|||||||
{
|
{
|
||||||
gLastUsedAbility = gBattleMons[gBankTarget].ability;
|
gLastUsedAbility = gBattleMons[gBankTarget].ability;
|
||||||
gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
|
gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
|
||||||
gUnknown_02024250[gBankTarget] = 0;
|
gTurnMovesHitWith[gBankTarget] = 0;
|
||||||
gBattleCommunication[6] = moveType;
|
gBattleCommunication[6] = moveType;
|
||||||
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
|
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
|
||||||
}
|
}
|
||||||
@@ -5219,7 +5219,7 @@ static void atk4A_typecalc2(void)
|
|||||||
{
|
{
|
||||||
gLastUsedAbility = ABILITY_WONDER_GUARD;
|
gLastUsedAbility = ABILITY_WONDER_GUARD;
|
||||||
gBattleMoveFlags |= MOVESTATUS_MISSED;
|
gBattleMoveFlags |= MOVESTATUS_MISSED;
|
||||||
gUnknown_02024250[gBankTarget] = 0;
|
gTurnMovesHitWith[gBankTarget] = 0;
|
||||||
gBattleCommunication[6] = 3;
|
gBattleCommunication[6] = 3;
|
||||||
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
|
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
|
||||||
}
|
}
|
||||||
@@ -5452,10 +5452,10 @@ static void atk4F_jumpifcantswitch(void)
|
|||||||
{
|
{
|
||||||
if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
|
if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
|
||||||
{
|
{
|
||||||
r7 = GetBankByIdentity(1);
|
r7 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
|
||||||
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||||
compareVar = GetBankByIdentity(3);
|
compareVar = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
|
||||||
else
|
else
|
||||||
compareVar = r7;
|
compareVar = r7;
|
||||||
|
|
||||||
@@ -5463,10 +5463,10 @@ static void atk4F_jumpifcantswitch(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
r7 = GetBankByIdentity(0);
|
r7 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
|
||||||
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||||
compareVar = GetBankByIdentity(2);
|
compareVar = GetBankByIdentity(IDENTITY_PLAYER_MON2);
|
||||||
else
|
else
|
||||||
compareVar = r7;
|
compareVar = r7;
|
||||||
|
|
||||||
@@ -6009,7 +6009,7 @@ static void atk59_handlelearnnewmove(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gActiveBank = GetBankByIdentity(0);
|
gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
|
||||||
|
|
||||||
if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId
|
if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId
|
||||||
&& !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
|
&& !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
|
||||||
@@ -6018,7 +6018,7 @@ static void atk59_handlelearnnewmove(void)
|
|||||||
}
|
}
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||||
{
|
{
|
||||||
gActiveBank = GetBankByIdentity(2);
|
gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON2);
|
||||||
if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId
|
if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId
|
||||||
&& !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
|
&& !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
|
||||||
{
|
{
|
||||||
@@ -6386,7 +6386,7 @@ static void atk63_jumptorandomattack(void)
|
|||||||
if (gBattlescriptCurrInstr[1] != 0)
|
if (gBattlescriptCurrInstr[1] != 0)
|
||||||
gCurrentMove = gRandomMove;
|
gCurrentMove = gRandomMove;
|
||||||
else
|
else
|
||||||
gLastUsedMove = gCurrentMove = gRandomMove;
|
gOriginallyUsedMove = gCurrentMove = gRandomMove;
|
||||||
|
|
||||||
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
|
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
|
||||||
}
|
}
|
||||||
@@ -6849,7 +6849,7 @@ static void atk6D_resetsentmonsvalue(void)
|
|||||||
|
|
||||||
static void atk6E_setatktoplayer0(void)
|
static void atk6E_setatktoplayer0(void)
|
||||||
{
|
{
|
||||||
gBankAttacker = GetBankByIdentity(0);
|
gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
|
||||||
gBattlescriptCurrInstr++;
|
gBattlescriptCurrInstr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8352,7 +8352,7 @@ static void atk9A_setfocusenergy(void)
|
|||||||
|
|
||||||
static void atk9B_transformdataexecution(void)
|
static void atk9B_transformdataexecution(void)
|
||||||
{
|
{
|
||||||
gLastUsedMove = 0xFFFF;
|
gOriginallyUsedMove = 0xFFFF;
|
||||||
gBattlescriptCurrInstr++;
|
gBattlescriptCurrInstr++;
|
||||||
if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED
|
if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED
|
||||||
|| gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)
|
|| gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)
|
||||||
@@ -8432,7 +8432,7 @@ static bool8 IsMoveUncopyableByMimic(u16 move)
|
|||||||
|
|
||||||
static void atk9D_mimicattackcopy(void)
|
static void atk9D_mimicattackcopy(void)
|
||||||
{
|
{
|
||||||
gLastUsedMove = 0xFFFF;
|
gOriginallyUsedMove = 0xFFFF;
|
||||||
|
|
||||||
if (IsMoveUncopyableByMimic(gLastUsedMovesByBanks[gBankTarget])
|
if (IsMoveUncopyableByMimic(gLastUsedMovesByBanks[gBankTarget])
|
||||||
|| gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED
|
|| gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED
|
||||||
@@ -8652,13 +8652,13 @@ static void atkA5_painsplitdmgcalc(void)
|
|||||||
|
|
||||||
static void atkA6_settypetorandomresistance(void) // conversion 2
|
static void atkA6_settypetorandomresistance(void) // conversion 2
|
||||||
{
|
{
|
||||||
if (gUnknown_02024250[gBankAttacker] == 0
|
if (gTurnMovesHitWith[gBankAttacker] == 0
|
||||||
|| gUnknown_02024250[gBankAttacker] == 0xFFFF)
|
|| gTurnMovesHitWith[gBankAttacker] == 0xFFFF)
|
||||||
{
|
{
|
||||||
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
|
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
|
||||||
}
|
}
|
||||||
else if (IsTwoTurnsMove(gUnknown_02024250[gBankAttacker])
|
else if (IsTwoTurnsMove(gTurnMovesHitWith[gBankAttacker])
|
||||||
&& gBattleMons[gUnknown_02024270[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS)
|
&& gBattleMons[gTurnMovesHitBy[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS)
|
||||||
{
|
{
|
||||||
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
|
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
|
||||||
}
|
}
|
||||||
@@ -8726,7 +8726,7 @@ static void atkA7_setalwayshitflag(void)
|
|||||||
|
|
||||||
static void atkA8_copymovepermanently(void) // sketch
|
static void atkA8_copymovepermanently(void) // sketch
|
||||||
{
|
{
|
||||||
gLastUsedMove = 0xFFFF;
|
gOriginallyUsedMove = 0xFFFF;
|
||||||
|
|
||||||
if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED)
|
if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED)
|
||||||
&& gUnknownMovesUsedByBanks[gBankTarget] != MOVE_STRUGGLE
|
&& gUnknownMovesUsedByBanks[gBankTarget] != MOVE_STRUGGLE
|
||||||
@@ -9024,7 +9024,7 @@ static void atkAE_healpartystatus(void)
|
|||||||
gBattleMons[gBankAttacker].status1 = 0;
|
gBattleMons[gBankAttacker].status1 = 0;
|
||||||
gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
|
gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
|
||||||
|
|
||||||
gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2);
|
gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
|
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
|
||||||
&& !(gAbsentBankFlags & gBitTable[gActiveBank]))
|
&& !(gAbsentBankFlags & gBitTable[gActiveBank]))
|
||||||
{
|
{
|
||||||
|
|||||||
+38
-64
@@ -584,11 +584,7 @@ u8 UpdateTurnCounters(void)
|
|||||||
{
|
{
|
||||||
gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT;
|
gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT;
|
||||||
BattleScriptExecute(BattleScript_82DACFA);
|
BattleScriptExecute(BattleScript_82DACFA);
|
||||||
gBattleTextBuff1[0] = 0xFD;
|
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT);
|
||||||
gBattleTextBuff1[1] = 2;
|
|
||||||
gBattleTextBuff1[2] = MOVE_REFLECT;
|
|
||||||
gBattleTextBuff1[3] = MOVE_REFLECT >> 8;
|
|
||||||
gBattleTextBuff1[4] = EOS;
|
|
||||||
effect++;
|
effect++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -614,11 +610,7 @@ u8 UpdateTurnCounters(void)
|
|||||||
gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN;
|
gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN;
|
||||||
BattleScriptExecute(BattleScript_82DACFA);
|
BattleScriptExecute(BattleScript_82DACFA);
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
|
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
|
||||||
gBattleTextBuff1[0] = 0xFD;
|
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN);
|
||||||
gBattleTextBuff1[1] = 2;
|
|
||||||
gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN;
|
|
||||||
gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8;
|
|
||||||
gBattleTextBuff1[4] = EOS;
|
|
||||||
effect++;
|
effect++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -643,11 +635,7 @@ u8 UpdateTurnCounters(void)
|
|||||||
gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST;
|
gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST;
|
||||||
BattleScriptExecute(BattleScript_82DACFA);
|
BattleScriptExecute(BattleScript_82DACFA);
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
|
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
|
||||||
gBattleTextBuff1[0] = 0xFD;
|
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST);
|
||||||
gBattleTextBuff1[1] = 2;
|
|
||||||
gBattleTextBuff1[2] = MOVE_MIST;
|
|
||||||
gBattleTextBuff1[3] = MOVE_MIST >> 8;
|
|
||||||
gBattleTextBuff1[4] = EOS;
|
|
||||||
effect++;
|
effect++;
|
||||||
}
|
}
|
||||||
gBattleStruct->turnSideTracker++;
|
gBattleStruct->turnSideTracker++;
|
||||||
@@ -773,9 +761,10 @@ u8 UpdateTurnCounters(void)
|
|||||||
gBattlescriptCurrInstr = BattleScript_82DACC9;
|
gBattlescriptCurrInstr = BattleScript_82DACC9;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
gBattlescriptCurrInstr = BattleScript_82DAC47;
|
gBattlescriptCurrInstr = BattleScript_82DAC47;
|
||||||
|
}
|
||||||
gBattleScripting.animArg1 = 0xD;
|
gBattleScripting.animArg1 = B_ANIM_HAIL_CONTINUES;
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
|
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
|
||||||
BattleScriptExecute(gBattlescriptCurrInstr);
|
BattleScriptExecute(gBattlescriptCurrInstr);
|
||||||
effect++;
|
effect++;
|
||||||
@@ -929,8 +918,8 @@ u8 TurnBasedEffects(void)
|
|||||||
// This is the only way I could get this array access to match.
|
// This is the only way I could get this array access to match.
|
||||||
gBattleScripting.animArg1 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
|
gBattleScripting.animArg1 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
|
||||||
gBattleScripting.animArg2 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
|
gBattleScripting.animArg2 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
|
||||||
gBattleTextBuff1[0] = 0xFD;
|
gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
|
||||||
gBattleTextBuff1[1] = 2;
|
gBattleTextBuff1[1] = B_BUFF_MOVE;
|
||||||
gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
|
gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
|
||||||
gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
|
gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
|
||||||
gBattleTextBuff1[4] = EOS;
|
gBattleTextBuff1[4] = EOS;
|
||||||
@@ -941,8 +930,8 @@ u8 TurnBasedEffects(void)
|
|||||||
}
|
}
|
||||||
else // broke free
|
else // broke free
|
||||||
{
|
{
|
||||||
gBattleTextBuff1[0] = 0xFD;
|
gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
|
||||||
gBattleTextBuff1[1] = 2;
|
gBattleTextBuff1[1] = B_BUFF_MOVE;
|
||||||
gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
|
gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
|
||||||
gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
|
gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
|
||||||
gBattleTextBuff1[4] = EOS;
|
gBattleTextBuff1[4] = EOS;
|
||||||
@@ -1014,7 +1003,7 @@ u8 TurnBasedEffects(void)
|
|||||||
gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS);
|
gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS);
|
||||||
if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION))
|
if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION))
|
||||||
{
|
{
|
||||||
gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47;
|
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER;
|
||||||
SetMoveEffect(1, 0);
|
SetMoveEffect(1, 0);
|
||||||
if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)
|
if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)
|
||||||
BattleScriptExecute(BattleScript_ThrashConfuses);
|
BattleScriptExecute(BattleScript_ThrashConfuses);
|
||||||
@@ -1139,11 +1128,8 @@ bool8 sub_8041364(void)
|
|||||||
else
|
else
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
|
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
|
||||||
|
|
||||||
gBattleTextBuff1[0] = 0xFD;
|
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[gActiveBank]);
|
||||||
gBattleTextBuff1[1] = 2;
|
|
||||||
gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBank];
|
|
||||||
gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBank] >> 8;
|
|
||||||
gBattleTextBuff1[4] = EOS;
|
|
||||||
gBankTarget = gActiveBank;
|
gBankTarget = gActiveBank;
|
||||||
gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank];
|
gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank];
|
||||||
gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank];
|
gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank];
|
||||||
@@ -1151,11 +1137,11 @@ bool8 sub_8041364(void)
|
|||||||
BattleScriptExecute(BattleScript_82DAFE4);
|
BattleScriptExecute(BattleScript_82DAFE4);
|
||||||
|
|
||||||
if (gWishFutureKnock.futureSightCounter[gActiveBank] == 0
|
if (gWishFutureKnock.futureSightCounter[gActiveBank] == 0
|
||||||
&& gWishFutureKnock.futureSightCounter[gActiveBank ^ 2] == 0)
|
&& gWishFutureKnock.futureSightCounter[gActiveBank ^ BIT_MON] == 0)
|
||||||
{
|
{
|
||||||
gSideAffecting[GetBankIdentity(gBankTarget) & 1] &= ~SIDE_STATUS_FUTUREATTACK;
|
gSideAffecting[GET_BANK_SIDE(gBankTarget)] &= ~(SIDE_STATUS_FUTUREATTACK);
|
||||||
}
|
}
|
||||||
return 1;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Why do I have to keep doing this to match?
|
// Why do I have to keep doing this to match?
|
||||||
@@ -1177,12 +1163,7 @@ bool8 sub_8041364(void)
|
|||||||
gBattleStruct->field_1A1++;
|
gBattleStruct->field_1A1++;
|
||||||
if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG)
|
if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG)
|
||||||
{
|
{
|
||||||
gBattleTextBuff1[0] = 0xFD;
|
PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gActiveBank].perishSongTimer1);
|
||||||
gBattleTextBuff1[1] = 1;
|
|
||||||
gBattleTextBuff1[2] = 1;
|
|
||||||
gBattleTextBuff1[3] = 1;
|
|
||||||
gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSongTimer1;
|
|
||||||
gBattleTextBuff1[5] = EOS;
|
|
||||||
if (gDisableStructs[gActiveBank].perishSongTimer1 == 0)
|
if (gDisableStructs[gActiveBank].perishSongTimer1 == 0)
|
||||||
{
|
{
|
||||||
gStatuses3[gActiveBank] &= ~STATUS3_PERISH_SONG;
|
gStatuses3[gActiveBank] &= ~STATUS3_PERISH_SONG;
|
||||||
@@ -1195,7 +1176,7 @@ bool8 sub_8041364(void)
|
|||||||
gBattlescriptCurrInstr = BattleScript_82DAF20;
|
gBattlescriptCurrInstr = BattleScript_82DAF20;
|
||||||
}
|
}
|
||||||
BattleScriptExecute(gBattlescriptCurrInstr);
|
BattleScriptExecute(gBattlescriptCurrInstr);
|
||||||
return 1;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Hm...
|
// Hm...
|
||||||
@@ -1218,14 +1199,14 @@ bool8 sub_8041364(void)
|
|||||||
gBattlescriptCurrInstr = BattleScript_82DB8F3;
|
gBattlescriptCurrInstr = BattleScript_82DB8F3;
|
||||||
BattleScriptExecute(BattleScript_82DB8F3);
|
BattleScriptExecute(BattleScript_82DB8F3);
|
||||||
gBattleStruct->field_1A0++;
|
gBattleStruct->field_1A0++;
|
||||||
return 1;
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20);
|
gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20);
|
||||||
|
|
||||||
return 0;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define sub_8041728_MAX_CASE 7
|
#define sub_8041728_MAX_CASE 7
|
||||||
@@ -1572,7 +1553,7 @@ u8 AtkCanceller_UnableToUseMove(void)
|
|||||||
}
|
}
|
||||||
gBattleStruct->atkCancellerTracker++;
|
gBattleStruct->atkCancellerTracker++;
|
||||||
break;
|
break;
|
||||||
case 14: // last case
|
case ATKCANCELLER_MAX_CASE:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1674,14 +1655,14 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2)
|
|||||||
{
|
{
|
||||||
if (GetBankSide(bank) == SIDE_OPPONENT)
|
if (GetBankSide(bank) == SIDE_OPPONENT)
|
||||||
{
|
{
|
||||||
r7 = GetBankByIdentity(1);
|
r7 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
|
||||||
r6 = GetBankByIdentity(3);
|
r6 = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
|
||||||
party = gEnemyParty;
|
party = gEnemyParty;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
r7 = GetBankByIdentity(0);
|
r7 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
|
||||||
r6 = GetBankByIdentity(2);
|
r6 = GetBankByIdentity(IDENTITY_PLAYER_MON2);
|
||||||
party = gPlayerParty;
|
party = gPlayerParty;
|
||||||
}
|
}
|
||||||
if (r1 == 6)
|
if (r1 == 6)
|
||||||
@@ -1799,10 +1780,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
|
|||||||
else
|
else
|
||||||
move = gCurrentMove;
|
move = gCurrentMove;
|
||||||
|
|
||||||
if (gBattleStruct->dynamicMoveType)
|
GET_MOVE_TYPE(move, moveType);
|
||||||
moveType = gBattleStruct->dynamicMoveType & 0x3F;
|
|
||||||
else
|
|
||||||
moveType = gBattleMoves[move].type;
|
|
||||||
|
|
||||||
switch (caseID)
|
switch (caseID)
|
||||||
{
|
{
|
||||||
@@ -3265,7 +3243,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
|
|||||||
switch (moveTarget)
|
switch (moveTarget)
|
||||||
{
|
{
|
||||||
case MOVE_TARGET_SELECTED:
|
case MOVE_TARGET_SELECTED:
|
||||||
side = GetBankSide(gBankAttacker) ^ 1;
|
side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
|
||||||
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
|
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
|
||||||
targetBank = gSideTimers[side].followmeTarget;
|
targetBank = gSideTimers[side].followmeTarget;
|
||||||
else
|
else
|
||||||
@@ -3279,7 +3257,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
|
|||||||
&& AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0)
|
&& AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0)
|
||||||
&& gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD)
|
&& gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD)
|
||||||
{
|
{
|
||||||
targetBank ^= 2;
|
targetBank ^= BIT_MON;
|
||||||
RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability);
|
RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability);
|
||||||
gSpecialStatuses[targetBank].lightningRodRedirected = 1;
|
gSpecialStatuses[targetBank].lightningRodRedirected = 1;
|
||||||
}
|
}
|
||||||
@@ -3289,12 +3267,12 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
|
|||||||
case MOVE_TARGET_BOTH:
|
case MOVE_TARGET_BOTH:
|
||||||
case MOVE_TARGET_FOES_AND_ALLY:
|
case MOVE_TARGET_FOES_AND_ALLY:
|
||||||
case MOVE_TARGET_OPPONENTS_FIELD:
|
case MOVE_TARGET_OPPONENTS_FIELD:
|
||||||
targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1);
|
targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & BIT_SIDE) ^ BIT_SIDE);
|
||||||
if (gAbsentBankFlags & gBitTable[targetBank])
|
if (gAbsentBankFlags & gBitTable[targetBank])
|
||||||
targetBank ^= 2;
|
targetBank ^= BIT_MON;
|
||||||
break;
|
break;
|
||||||
case MOVE_TARGET_RANDOM:
|
case MOVE_TARGET_RANDOM:
|
||||||
side = GetBankSide(gBankAttacker) ^ 1;
|
side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
|
||||||
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
|
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
|
||||||
targetBank = gSideTimers[side].followmeTarget;
|
targetBank = gSideTimers[side].followmeTarget;
|
||||||
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM)
|
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM)
|
||||||
@@ -3302,22 +3280,22 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
|
|||||||
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
|
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
|
||||||
{
|
{
|
||||||
if (Random() & 1)
|
if (Random() & 1)
|
||||||
targetBank = GetBankByIdentity(1);
|
targetBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
|
||||||
else
|
else
|
||||||
targetBank = GetBankByIdentity(3);
|
targetBank = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Random() & 1)
|
if (Random() & 1)
|
||||||
targetBank = GetBankByIdentity(0);
|
targetBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
|
||||||
else
|
else
|
||||||
targetBank = GetBankByIdentity(2);
|
targetBank = GetBankByIdentity(IDENTITY_PLAYER_MON2);
|
||||||
}
|
}
|
||||||
if (gAbsentBankFlags & gBitTable[targetBank])
|
if (gAbsentBankFlags & gBitTable[targetBank])
|
||||||
targetBank ^= 2;
|
targetBank ^= BIT_MON;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1);
|
targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & BIT_SIDE) ^ BIT_SIDE);
|
||||||
break;
|
break;
|
||||||
case MOVE_TARGET_USER:
|
case MOVE_TARGET_USER:
|
||||||
case MOVE_TARGET_x10:
|
case MOVE_TARGET_x10:
|
||||||
@@ -3325,11 +3303,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NONMATCHING
|
*(gBattleStruct->moveTarget + gBankAttacker) = targetBank;
|
||||||
MEME_ACCESS_U8(BattleStruct, gBattleStruct, gBankAttacker, moveTarget, targetBank);
|
|
||||||
#else
|
|
||||||
gBattleStruct->moveTarget[gBankAttacker] = targetBank;
|
|
||||||
#endif // NONMATCHING
|
|
||||||
|
|
||||||
return targetBank;
|
return targetBank;
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -312,7 +312,7 @@ gUnknown_020241E9: @ 20241E9
|
|||||||
gCurrentMove: @ 20241EA
|
gCurrentMove: @ 20241EA
|
||||||
.space 0x2
|
.space 0x2
|
||||||
|
|
||||||
gLastUsedMove: @ 20241EC
|
gOriginallyUsedMove: @ 20241EC
|
||||||
.space 0x2
|
.space 0x2
|
||||||
|
|
||||||
gRandomMove: @ 20241EE
|
gRandomMove: @ 20241EE
|
||||||
@@ -375,7 +375,7 @@ gUnknownMovesUsedByBanks: @ 2024240
|
|||||||
gLastUsedMovesByBanks: @ 2024248
|
gLastUsedMovesByBanks: @ 2024248
|
||||||
.space 0x8
|
.space 0x8
|
||||||
|
|
||||||
gUnknown_02024250: @ 2024250
|
gTurnMovesHitWith: @ 2024250
|
||||||
.space 0x8
|
.space 0x8
|
||||||
|
|
||||||
gUnknown_02024258: @ 2024258
|
gUnknown_02024258: @ 2024258
|
||||||
@@ -387,7 +387,7 @@ gUnknown_02024260: @ 2024260
|
|||||||
gLockedMoves: @ 2024268
|
gLockedMoves: @ 2024268
|
||||||
.space 0x8
|
.space 0x8
|
||||||
|
|
||||||
gUnknown_02024270: @ 2024270
|
gTurnMovesHitBy: @ 2024270
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
gChosenMovesByBanks: @ 2024274
|
gChosenMovesByBanks: @ 2024274
|
||||||
|
|||||||
Reference in New Issue
Block a user