clear battle code and battlescripts

This commit is contained in:
DizzyEggg 2017-11-26 11:55:17 +01:00
parent 938d346b6d
commit cc572f7c00
6 changed files with 124 additions and 133 deletions

View File

@ -163,7 +163,7 @@
.4byte \param4 .4byte \param4
.endm .endm
.macro jumpifstatus3 bank, status3, param2, param3 .macro jumpifstatus3condition bank, status3, param2, param3
.byte 0x21 .byte 0x21
.byte \bank .byte \bank
.4byte \status3 .4byte \status3
@ -1253,3 +1253,19 @@
.macro jumpifbyteequal byte1, byte2, jumpptr .macro jumpifbyteequal byte1, byte2, jumpptr
jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr
.endm .endm
.macro jumpifmove move, jumpptr
jumpifhalfword EQUAL, gCurrentMove, \move, \jumpptr
.endm
.macro jumpifnotmove move, jumpptr
jumpifhalfword NOT_EQUAL, gCurrentMove, \move, \jumpptr
.endm
.macro jumpifstatus3 bank, status, jumpptr
jumpifstatus3condition \bank, \status, 0x0, \jumpptr
.endm
.macro jumpifnostatus3 bank, status, jumpptr
jumpifstatus3condition \bank, \status, 0x1, \jumpptr
.endm

View File

@ -246,8 +246,8 @@ BattleScript_EffectUnused83::
BattleScript_EffectUnused8d:: BattleScript_EffectUnused8d::
BattleScript_EffectUnusedA3:: BattleScript_EffectUnusedA3::
BattleScript_EffectHit:: BattleScript_EffectHit::
jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_SURF, BattleScript_HitFromAtkCanceler jumpifnotmove MOVE_SURF, BattleScript_HitFromAtkCanceler
jumpifstatus3 TARGET, STATUS3_UNDERWATER, 0x1, BattleScript_HitFromAtkCanceler jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_HitFromAtkCanceler
orword gHitMarker, HITMARKER_IGNORE_UNDERWATER orword gHitMarker, HITMARKER_IGNORE_UNDERWATER
setbyte sDMG_MULTIPLIER, 0x2 setbyte sDMG_MULTIPLIER, 0x2
BattleScript_HitFromAtkCanceler:: BattleScript_HitFromAtkCanceler::
@ -507,7 +507,7 @@ BattleScript_EffectStatUp::
BattleScript_EffectStatUpAfterAtkCanceler:: BattleScript_EffectStatUpAfterAtkCanceler::
attackstring attackstring
ppreduce ppreduce
statbuffchange 0x41, BattleScript_StatUpEnd statbuffchange AFFECTS_USER | 0x1, BattleScript_StatUpEnd
jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpAttackAnim jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpAttackAnim
pause 0x20 pause 0x20
goto BattleScript_StatUpPrintString goto BattleScript_StatUpPrintString
@ -611,7 +611,7 @@ BattleScript_EffectRoar::
attackstring attackstring
ppreduce ppreduce
jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_82DB5B9 jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_82DB5B9
jumpifstatus3 TARGET, STATUS3_ROOTED, 0x0, BattleScript_82DB109 jumpifstatus3 TARGET, STATUS3_ROOTED, BattleScript_82DB109
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_ARENA, BattleScript_ButItFailed jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_ARENA, BattleScript_ButItFailed
@ -808,7 +808,7 @@ BattleScript_82D9040::
setbyte sANIM_TURN, 0x1 setbyte sANIM_TURN, 0x1
clearstatusfromeffect ATTACKER clearstatusfromeffect ATTACKER
orword gHitMarker, HITMARKER_NO_PPDEDUCT orword gHitMarker, HITMARKER_NO_PPDEDUCT
jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_SKY_ATTACK, BattleScript_HitFromAccCheck jumpifnotmove MOVE_SKY_ATTACK, BattleScript_HitFromAccCheck
setmoveeffect EFFECT_FLINCH setmoveeffect EFFECT_FLINCH
goto BattleScript_HitFromAccCheck goto BattleScript_HitFromAccCheck
@ -848,8 +848,8 @@ BattleScript_EffectDragonRage::
goto BattleScript_HitFromAtkAnimation goto BattleScript_HitFromAtkAnimation
BattleScript_EffectTrap:: BattleScript_EffectTrap::
jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_WHIRLPOOL, BattleScript_82D9105 jumpifnotmove MOVE_WHIRLPOOL, BattleScript_82D9105
jumpifstatus3 TARGET, STATUS3_UNDERWATER, 0x1, BattleScript_82D9105 jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_82D9105
orword gHitMarker, HITMARKER_IGNORE_UNDERWATER orword gHitMarker, HITMARKER_IGNORE_UNDERWATER
setbyte sDMG_MULTIPLIER, 0x2 setbyte sDMG_MULTIPLIER, 0x2
BattleScript_82D9105:: BattleScript_82D9105::
@ -917,7 +917,7 @@ BattleScript_EffectFocusEnergy::
BattleScript_EffectRecoil:: BattleScript_EffectRecoil::
setmoveeffect EFFECT_RECOIL_25 | AFFECTS_USER | CERTAIN setmoveeffect EFFECT_RECOIL_25 | AFFECTS_USER | CERTAIN
jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_STRUGGLE, BattleScript_EffectHit jumpifnotmove MOVE_STRUGGLE, BattleScript_EffectHit
incrementgamestat 0x1B incrementgamestat 0x1B
goto BattleScript_EffectHit goto BattleScript_EffectHit
@ -1389,7 +1389,7 @@ BattleScript_EffectHealBell::
waitanimation waitanimation
printfromtable gPartyStatusHealStringIds printfromtable gPartyStatusHealStringIds
waitmessage 0x40 waitmessage 0x40
jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_HEAL_BELL, BattleScript_82D96FE jumpifnotmove MOVE_HEAL_BELL, BattleScript_82D96FE
jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_82D96ED jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_82D96ED
printstring STRINGID_PKMNSXBLOCKSY printstring STRINGID_PKMNSXBLOCKSY
waitmessage 0x40 waitmessage 0x40
@ -1517,17 +1517,17 @@ BattleScript_CurseTrySpeed::
attackanimation attackanimation
waitanimation waitanimation
setstatchanger SPEED, 1, TRUE setstatchanger SPEED, 1, TRUE
statbuffchange 0x41, BattleScript_CurseTryAttack statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryAttack
printfromtable gStatDownStringIds printfromtable gStatDownStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_CurseTryAttack:: BattleScript_CurseTryAttack::
setstatchanger ATK, 1, FALSE setstatchanger ATK, 1, FALSE
statbuffchange 0x41, BattleScript_CurseTryDefence statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryDefence
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_CurseTryDefence:: BattleScript_CurseTryDefence::
setstatchanger DEF, 1, FALSE setstatchanger DEF, 1, FALSE
statbuffchange 0x41, BattleScript_CurseEnd statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseEnd
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_CurseEnd:: BattleScript_CurseEnd::
@ -1838,7 +1838,7 @@ BattleScript_EffectSkullBash::
setbyte sTWOTURN_STRINGID, 0x2 setbyte sTWOTURN_STRINGID, 0x2
call BattleScriptFirstChargingTurn call BattleScriptFirstChargingTurn
setstatchanger DEF, 1, FALSE setstatchanger DEF, 1, FALSE
statbuffchange 0x41, BattleScript_82D9C16 statbuffchange AFFECTS_USER | 0x1, BattleScript_82D9C16
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D9C16 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82D9C16
setgraphicalstatchangevalues setgraphicalstatchangevalues
playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1
@ -1848,7 +1848,7 @@ BattleScript_82D9C16::
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_EffectTwister:: BattleScript_EffectTwister::
jumpifstatus3 TARGET, STATUS3_ON_AIR, 0x1, BattleScript_82D9C35 jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_82D9C35
orword gHitMarker, HITMARKER_IGNORE_ON_AIR orword gHitMarker, HITMARKER_IGNORE_ON_AIR
setbyte sDMG_MULTIPLIER, 0x2 setbyte sDMG_MULTIPLIER, 0x2
BattleScript_82D9C35:: BattleScript_82D9C35::
@ -1862,7 +1862,7 @@ BattleScript_EffectEarthquake::
selectfirstvalidtarget selectfirstvalidtarget
BattleScript_82D9C44:: BattleScript_82D9C44::
movevaluescleanup movevaluescleanup
jumpifstatus3 TARGET, STATUS3_UNDERGROUND, 0x1, BattleScript_82D9C64 jumpifnostatus3 TARGET, STATUS3_UNDERGROUND, BattleScript_82D9C64
orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND
setbyte sDMG_MULTIPLIER, 0x2 setbyte sDMG_MULTIPLIER, 0x2
goto BattleScript_82D9C73 goto BattleScript_82D9C73
@ -1918,13 +1918,13 @@ BattleScript_EffectFutureSight::
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_EffectGust:: BattleScript_EffectGust::
jumpifstatus3 TARGET, STATUS3_ON_AIR, 0x1, BattleScript_EffectHit jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_EffectHit
orword gHitMarker, HITMARKER_IGNORE_ON_AIR orword gHitMarker, HITMARKER_IGNORE_ON_AIR
setbyte sDMG_MULTIPLIER, 0x2 setbyte sDMG_MULTIPLIER, 0x2
goto BattleScript_EffectHit goto BattleScript_EffectHit
BattleScript_EffectStomp:: BattleScript_EffectStomp::
jumpifstatus3 TARGET, STATUS3_MINIMIZED, 0x1, BattleScript_82D9C35 jumpifnostatus3 TARGET, STATUS3_MINIMIZED, BattleScript_82D9C35
setbyte sDMG_MULTIPLIER, 0x2 setbyte sDMG_MULTIPLIER, 0x2
goto BattleScript_82D9C35 goto BattleScript_82D9C35
@ -2002,9 +2002,9 @@ BattleScript_BeatUpEnd::
BattleScript_EffectSemiInvulnerable:: BattleScript_EffectSemiInvulnerable::
jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable
jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable
jumpifhalfword EQUAL, gCurrentMove, MOVE_FLY, BattleScript_FirstTurnFly jumpifmove MOVE_FLY, BattleScript_FirstTurnFly
jumpifhalfword EQUAL, gCurrentMove, MOVE_DIVE, BattleScript_FirstTurnDive jumpifmove MOVE_DIVE, BattleScript_FirstTurnDive
jumpifhalfword EQUAL, gCurrentMove, MOVE_BOUNCE, BattleScript_FirstTurnBounce jumpifmove MOVE_BOUNCE, BattleScript_FirstTurnBounce
setbyte sTWOTURN_STRINGID, 0x5 setbyte sTWOTURN_STRINGID, 0x5
goto BattleScript_FirstTurnSemiInvulnerable goto BattleScript_FirstTurnSemiInvulnerable
@ -2029,7 +2029,7 @@ BattleScript_SecondTurnSemiInvulnerable::
setbyte sANIM_TURN, 0x1 setbyte sANIM_TURN, 0x1
clearstatusfromeffect ATTACKER clearstatusfromeffect ATTACKER
orword gHitMarker, HITMARKER_NO_PPDEDUCT orword gHitMarker, HITMARKER_NO_PPDEDUCT
jumpifhalfword NOT_EQUAL, gCurrentMove, MOVE_BOUNCE, BattleScript_82D9EA3 jumpifnotmove MOVE_BOUNCE, BattleScript_82D9EA3
setmoveeffect EFFECT_PARALYSIS setmoveeffect EFFECT_PARALYSIS
BattleScript_82D9EA3:: BattleScript_82D9EA3::
accuracycheck BattleScript_SemiInvulnerableMiss, ACC_CURR_MOVE accuracycheck BattleScript_SemiInvulnerableMiss, ACC_CURR_MOVE
@ -2046,7 +2046,7 @@ BattleScript_EffectDefenseCurl::
ppreduce ppreduce
setdefensecurlbit setdefensecurlbit
setstatchanger DEF, 1, FALSE setstatchanger DEF, 1, FALSE
statbuffchange 0x41, BattleScript_82D9ED3 statbuffchange AFFECTS_USER | 0x1, BattleScript_82D9ED3
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString
attackanimation attackanimation
waitanimation waitanimation
@ -2724,13 +2724,13 @@ BattleScript_82DA5F8::
setbyte sFIELD_1B, 0x0 setbyte sFIELD_1B, 0x0
playstatchangeanimation ATTACKER, 0x24, 0x0 playstatchangeanimation ATTACKER, 0x24, 0x0
setstatchanger DEF, 1, FALSE setstatchanger DEF, 1, FALSE
statbuffchange 0x41, BattleScript_82DA623 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA623
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA623 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA623
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_82DA623:: BattleScript_82DA623::
setstatchanger SPDEF, 1, FALSE setstatchanger SPDEF, 1, FALSE
statbuffchange 0x41, BattleScript_82DA642 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA642
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA642 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA642
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
@ -2753,13 +2753,13 @@ BattleScript_82DA66A::
setbyte sFIELD_1B, 0x0 setbyte sFIELD_1B, 0x0
playstatchangeanimation ATTACKER, 0x6, 0x0 playstatchangeanimation ATTACKER, 0x6, 0x0
setstatchanger ATK, 1, FALSE setstatchanger ATK, 1, FALSE
statbuffchange 0x41, BattleScript_82DA695 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA695
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA695 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA695
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_82DA695:: BattleScript_82DA695::
setstatchanger DEF, 1, FALSE setstatchanger DEF, 1, FALSE
statbuffchange 0x41, BattleScript_82DA6B4 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA6B4
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6B4 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6B4
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
@ -2778,13 +2778,13 @@ BattleScript_82DA6CE::
setbyte sFIELD_1B, 0x0 setbyte sFIELD_1B, 0x0
playstatchangeanimation ATTACKER, 0x30, 0x0 playstatchangeanimation ATTACKER, 0x30, 0x0
setstatchanger SPATK, 1, FALSE setstatchanger SPATK, 1, FALSE
statbuffchange 0x41, BattleScript_82DA6F9 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA6F9
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6F9 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA6F9
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_82DA6F9:: BattleScript_82DA6F9::
setstatchanger SPDEF, 1, FALSE setstatchanger SPDEF, 1, FALSE
statbuffchange 0x41, BattleScript_82DA718 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA718
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA718 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA718
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
@ -2810,13 +2810,13 @@ BattleScript_82DA746::
setbyte sFIELD_1B, 0x0 setbyte sFIELD_1B, 0x0
playstatchangeanimation ATTACKER, 0xA, 0x0 playstatchangeanimation ATTACKER, 0xA, 0x0
setstatchanger ATK, 1, FALSE setstatchanger ATK, 1, FALSE
statbuffchange 0x41, BattleScript_82DA771 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA771
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA771 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA771
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_82DA771:: BattleScript_82DA771::
setstatchanger SPEED, 1, FALSE setstatchanger SPEED, 1, FALSE
statbuffchange 0x41, BattleScript_82DA790 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DA790
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA790 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DA790
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
@ -3493,27 +3493,27 @@ BattleScript_82DAF54::
setbyte sFIELD_1B, 0x0 setbyte sFIELD_1B, 0x0
playstatchangeanimation ATTACKER, 0x3E, 0x0 playstatchangeanimation ATTACKER, 0x3E, 0x0
setstatchanger ATK, 1, FALSE setstatchanger ATK, 1, FALSE
statbuffchange 0x41, BattleScript_82DAF72 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAF72
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_82DAF72:: BattleScript_82DAF72::
setstatchanger DEF, 1, FALSE setstatchanger DEF, 1, FALSE
statbuffchange 0x41, BattleScript_82DAF86 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAF86
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_82DAF86:: BattleScript_82DAF86::
setstatchanger SPEED, 1, FALSE setstatchanger SPEED, 1, FALSE
statbuffchange 0x41, BattleScript_82DAF9A statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAF9A
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_82DAF9A:: BattleScript_82DAF9A::
setstatchanger SPATK, 1, FALSE setstatchanger SPATK, 1, FALSE
statbuffchange 0x41, BattleScript_82DAFAE statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAFAE
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_82DAFAE:: BattleScript_82DAFAE::
setstatchanger SPDEF, 1, FALSE setstatchanger SPDEF, 1, FALSE
statbuffchange 0x41, BattleScript_82DAFC2 statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAFC2
printfromtable gStatUpStringIds printfromtable gStatUpStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_82DAFC2:: BattleScript_82DAFC2::
@ -3664,14 +3664,14 @@ BattleScript_AtkDefDown::
playstatchangeanimation ATTACKER, 0x6, 0xD playstatchangeanimation ATTACKER, 0x6, 0xD
playstatchangeanimation ATTACKER, 0x2, 0x9 playstatchangeanimation ATTACKER, 0x2, 0x9
setstatchanger ATK, 1, TRUE setstatchanger ATK, 1, TRUE
statbuffchange 0xC1, BattleScript_82DB144 statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB144
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144
printfromtable gStatDownStringIds printfromtable gStatDownStringIds
waitmessage 0x40 waitmessage 0x40
BattleScript_82DB144:: BattleScript_82DB144::
playstatchangeanimation ATTACKER, 0x4, 0x9 playstatchangeanimation ATTACKER, 0x4, 0x9
setstatchanger DEF, 1, TRUE setstatchanger DEF, 1, TRUE
statbuffchange 0xC1, BattleScript_82DB167 statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB167
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167
printfromtable gStatDownStringIds printfromtable gStatDownStringIds
waitmessage 0x40 waitmessage 0x40
@ -3737,7 +3737,7 @@ BattleScript_SAtkDown2::
setbyte sFIELD_1B, 0x0 setbyte sFIELD_1B, 0x0
playstatchangeanimation ATTACKER, 0x10, 0xB playstatchangeanimation ATTACKER, 0x10, 0xB
setstatchanger SPATK, 2, TRUE setstatchanger SPATK, 2, TRUE
statbuffchange 0xC1, BattleScript_82DB1FE statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB1FE
jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE
printfromtable gStatDownStringIds printfromtable gStatDownStringIds
waitmessage 0x40 waitmessage 0x40
@ -3974,7 +3974,7 @@ BattleScript_MoveEffectConfusion::
return return
BattleScript_MoveEffectRecoil33:: BattleScript_MoveEffectRecoil33::
jumpifhalfword EQUAL, gCurrentMove, MOVE_STRUGGLE, BattleScript_DoRecoil33 jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil33
jumpifability ATTACKER, ABILITY_ROCK_HEAD, BattleScript_Recoil33End jumpifability ATTACKER, ABILITY_ROCK_HEAD, BattleScript_Recoil33End
BattleScript_DoRecoil33:: BattleScript_DoRecoil33::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
@ -4450,7 +4450,7 @@ BattleScript_BerryConfuseHealEnd2::
BattleScript_BerryStatRaiseEnd2:: BattleScript_BerryStatRaiseEnd2::
playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
statbuffchange 0x41, BattleScript_82DB85B statbuffchange AFFECTS_USER | 0x1, BattleScript_82DB85B
BattleScript_82DB85B:: BattleScript_82DB85B::
setbyte cMULTISTRING_CHOOSER, 0x4 setbyte cMULTISTRING_CHOOSER, 0x4
call BattleScript_StatUp call BattleScript_StatUp

View File

@ -837,9 +837,10 @@ extern struct BattleStruct* gBattleStruct;
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40 #define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit #define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
#define SET_STAT_BUFF_ID(n)((n & 0xF))
#define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0)) #define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0))
#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
struct BattleScripting struct BattleScripting
{ {
s32 painSplitHp; s32 painSplitHp;

View File

@ -74,6 +74,14 @@
#define B_BUFF_PLACEHOLDER_BEGIN 0xFD #define B_BUFF_PLACEHOLDER_BEGIN 0xFD
#define B_BUFF_EOS 0xFF #define B_BUFF_EOS 0xFF
#define PREPARE_FLAVOUR_BUFFER(textVar, flavourId) \
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
textVar[1] = B_BUFF_NEGATIVE_FLAVOUR; \
textVar[2] = flavourId; \
textVar[3] = B_BUFF_EOS; \
}
#define PREPARE_STAT_BUFFER(textVar, statId) \ #define PREPARE_STAT_BUFFER(textVar, statId) \
{ \ { \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \

View File

@ -214,7 +214,7 @@ static void atk1D_jumpifstatus2(void);
static void atk1E_jumpifability(void); static void atk1E_jumpifability(void);
static void atk1F_jumpifsideaffecting(void); static void atk1F_jumpifsideaffecting(void);
static void atk20_jumpifstat(void); static void atk20_jumpifstat(void);
static void atk21_jumpifstatus3(void); static void atk21_jumpifstatus3condition(void);
static void atk22_jumpiftype(void); static void atk22_jumpiftype(void);
static void atk23_getexp(void); static void atk23_getexp(void);
static void atk24(void); static void atk24(void);
@ -466,7 +466,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atk1E_jumpifability, atk1E_jumpifability,
atk1F_jumpifsideaffecting, atk1F_jumpifsideaffecting,
atk20_jumpifstat, atk20_jumpifstat,
atk21_jumpifstatus3, atk21_jumpifstatus3condition,
atk22_jumpiftype, atk22_jumpiftype,
atk23_getexp, atk23_getexp,
atk24, atk24,
@ -3314,10 +3314,10 @@ static void atk20_jumpifstat(void)
gBattlescriptCurrInstr += 9; gBattlescriptCurrInstr += 9;
} }
static void atk21_jumpifstatus3(void) static void atk21_jumpifstatus3condition(void)
{ {
u32 flags; u32 flags;
const u8* jumpPtr; const u8 *jumpPtr;
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
@ -7557,9 +7557,9 @@ static void atk88_negativedamage(void)
gBattlescriptCurrInstr++; gBattlescriptCurrInstr++;
} }
static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
{ {
bool8 certain = 0; bool8 certain = FALSE;
bool8 notProtectAffected = FALSE; bool8 notProtectAffected = FALSE;
u32 index; u32 index;
@ -7667,15 +7667,15 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr)
if (statValue == -2) if (statValue == -2)
{ {
gBattleTextBuff2[1] = B_BUFF_STRING; gBattleTextBuff2[1] = B_BUFF_STRING;
gBattleTextBuff2[2] = 0xD3; // harshly gBattleTextBuff2[2] = STRINGID_STATHARSHLY;
gBattleTextBuff2[3] = 0xD3 >> 8; gBattleTextBuff2[3] = STRINGID_STATHARSHLY >> 8;
index = 4; index = 4;
} }
gBattleTextBuff2[index] = B_BUFF_STRING; gBattleTextBuff2[index] = B_BUFF_STRING;
index++; index++;
gBattleTextBuff2[index] = 0xD4; // fell gBattleTextBuff2[index] = STRINGID_STATFELL;
index++; index++;
gBattleTextBuff2[index] = 0xD4 >> 8; gBattleTextBuff2[index] = STRINGID_STATFELL >> 8;
index++; index++;
gBattleTextBuff2[index] = B_BUFF_EOS; gBattleTextBuff2[index] = B_BUFF_EOS;
@ -7694,15 +7694,15 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr)
if (statValue == 2) if (statValue == 2)
{ {
gBattleTextBuff2[1] = B_BUFF_STRING; gBattleTextBuff2[1] = B_BUFF_STRING;
gBattleTextBuff2[2] = 0xD1; // sharply gBattleTextBuff2[2] = STRINGID_STATSHARPLY;
gBattleTextBuff2[3] = 0xD1 >> 8; gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8;
index = 4; index = 4;
} }
gBattleTextBuff2[index] = B_BUFF_STRING; gBattleTextBuff2[index] = B_BUFF_STRING;
index++; index++;
gBattleTextBuff2[index] = 0xD2; // rose gBattleTextBuff2[index] = STRINGID_STATROSE;
index++; index++;
gBattleTextBuff2[index] = 0xD2 >> 8; gBattleTextBuff2[index] = STRINGID_STATROSE >> 8;
index++; index++;
gBattleTextBuff2[index] = B_BUFF_EOS; gBattleTextBuff2[index] = B_BUFF_EOS;

View File

@ -14,6 +14,7 @@
#include "text.h" #include "text.h"
#include "string_util.h" #include "string_util.h"
#include "battle_message.h" #include "battle_message.h"
#include "battle_string_ids.h"
#include "battle_ai_script_commands.h" #include "battle_ai_script_commands.h"
#include "battle_controllers.h" #include "battle_controllers.h"
#include "event_data.h" #include "event_data.h"
@ -2615,7 +2616,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleStruct->moneyMultiplier = 2; gBattleStruct->moneyMultiplier = 2;
break; break;
case HOLD_EFFECT_RESTORE_STATS: case HOLD_EFFECT_RESTORE_STATS:
for (i = 0; i < 8; i++) for (i = 0; i < BATTLE_STATS_NO; i++)
{ {
if (gBattleMons[bank].statStages[i] < 6) if (gBattleMons[bank].statStages[i] < 6)
{ {
@ -2652,19 +2653,19 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_RESTORE_PP: case HOLD_EFFECT_RESTORE_PP:
if (!moveTurn) if (!moveTurn)
{ {
struct Pokemon* poke; struct Pokemon *mon;
u8 ppBonuses; u8 ppBonuses;
u16 move; u16 move;
if (GetBankSide(bank) == SIDE_PLAYER) if (GetBankSide(bank) == SIDE_PLAYER)
poke = &gPlayerParty[gBattlePartyID[bank]]; mon = &gPlayerParty[gBattlePartyID[bank]];
else else
poke = &gEnemyParty[gBattlePartyID[bank]]; mon = &gEnemyParty[gBattlePartyID[bank]];
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
move = GetMonData(poke, MON_DATA_MOVE1 + i); move = GetMonData(mon, MON_DATA_MOVE1 + i);
changedPP = GetMonData(poke, MON_DATA_PP1 + i); changedPP = GetMonData(mon, MON_DATA_PP1 + i);
ppBonuses = GetMonData(poke, MON_DATA_PP_BONUSES); ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
if (move && changedPP == 0) if (move && changedPP == 0)
break; break;
} }
@ -2675,11 +2676,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
changedPP = maxPP; changedPP = maxPP;
else else
changedPP = changedPP + bankQuality; changedPP = changedPP + bankQuality;
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 2; PREPARE_MOVE_BUFFER(gBattleTextBuff1, move);
gBattleTextBuff1[2] = move;
gBattleTextBuff1[3] = move >> 8;
gBattleTextBuff1[4] = 0xFF;
BattleScriptExecute(BattleScript_BerryPPHealEnd2); BattleScriptExecute(BattleScript_BerryPPHealEnd2);
EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
MarkBufferBankForExecution(gActiveBank); MarkBufferBankForExecution(gActiveBank);
@ -2688,7 +2687,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
} }
break; break;
case HOLD_EFFECT_RESTORE_STATS: case HOLD_EFFECT_RESTORE_STATS:
for (i = 0; i < 8; i++) for (i = 0; i < BATTLE_STATS_NO; i++)
{ {
if (gBattleMons[bank].statStages[i] < 6) if (gBattleMons[bank].statStages[i] < 6)
{ {
@ -2722,10 +2721,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_CONFUSE_SPICY: case HOLD_EFFECT_CONFUSE_SPICY:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
{ {
gBattleTextBuff1[0] = 0xFD; PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY);
gBattleTextBuff1[1] = 8;
gBattleTextBuff1[2] = FLAVOR_SPICY;
gBattleTextBuff1[3] = EOS;
gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
if (gBattleMoveDamage == 0) if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1; gBattleMoveDamage = 1;
@ -2742,10 +2739,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_CONFUSE_DRY: case HOLD_EFFECT_CONFUSE_DRY:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
{ {
gBattleTextBuff1[0] = 0xFD; PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_DRY);
gBattleTextBuff1[1] = 8;
gBattleTextBuff1[2] = FLAVOR_DRY;
gBattleTextBuff1[3] = EOS;
gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
if (gBattleMoveDamage == 0) if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1; gBattleMoveDamage = 1;
@ -2762,10 +2757,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_CONFUSE_SWEET: case HOLD_EFFECT_CONFUSE_SWEET:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
{ {
gBattleTextBuff1[0] = 0xFD; PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET);
gBattleTextBuff1[1] = 8;
gBattleTextBuff1[2] = FLAVOR_SWEET;
gBattleTextBuff1[3] = EOS;
gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
if (gBattleMoveDamage == 0) if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1; gBattleMoveDamage = 1;
@ -2782,10 +2775,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_CONFUSE_BITTER: case HOLD_EFFECT_CONFUSE_BITTER:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
{ {
gBattleTextBuff1[0] = 0xFD; PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER);
gBattleTextBuff1[1] = 8;
gBattleTextBuff1[2] = FLAVOR_BITTER;
gBattleTextBuff1[3] = EOS;
gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
if (gBattleMoveDamage == 0) if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1; gBattleMoveDamage = 1;
@ -2802,10 +2793,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_CONFUSE_SOUR: case HOLD_EFFECT_CONFUSE_SOUR:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
{ {
gBattleTextBuff1[0] = 0xFD; PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR);
gBattleTextBuff1[1] = 8;
gBattleTextBuff1[2] = FLAVOR_SOUR;
gBattleTextBuff1[3] = EOS;
gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
if (gBattleMoveDamage == 0) if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1; gBattleMoveDamage = 1;
@ -2823,19 +2812,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_ATTACK_UP: case HOLD_EFFECT_ATTACK_UP:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC)
{ {
gBattleTextBuff1[0] = 0xFD; PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_ATK);
gBattleTextBuff1[1] = 5; PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE);
gBattleTextBuff1[2] = STAT_STAGE_ATK;
gBattleTextBuff1[3] = EOS;
gBattleTextBuff2[0] = 0xFD;
gBattleTextBuff2[1] = 0;
gBattleTextBuff2[2] = 0xD2;
gBattleTextBuff2[3] = 0xD2 >> 8;
gBattleTextBuff2[4] = EOS;
gEffectBank = bank; gEffectBank = bank;
gBattleScripting.statChanger = 0x10 + STAT_STAGE_ATK; SET_STATCHANGER(STAT_STAGE_ATK, 1, FALSE);
gBattleScripting.animArg1 = 0xE + STAT_STAGE_ATK; gBattleScripting.animArg1 = 0xE + STAT_STAGE_ATK;
gBattleScripting.animArg2 = 0; gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@ -2845,13 +2826,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_DEFENSE_UP: case HOLD_EFFECT_DEFENSE_UP:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC)
{ {
gBattleTextBuff1[0] = 0xFD; PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_DEF);
gBattleTextBuff1[1] = 5;
gBattleTextBuff1[2] = STAT_STAGE_DEF;
gBattleTextBuff1[3] = EOS;
gEffectBank = bank; gEffectBank = bank;
gBattleScripting.statChanger = 0x10 + STAT_STAGE_DEF; SET_STATCHANGER(STAT_STAGE_DEF, 1, FALSE);
gBattleScripting.animArg1 = 0xE + STAT_STAGE_DEF; gBattleScripting.animArg1 = 0xE + STAT_STAGE_DEF;
gBattleScripting.animArg2 = 0; gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@ -2861,13 +2839,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_SPEED_UP: case HOLD_EFFECT_SPEED_UP:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC)
{ {
gBattleTextBuff1[0] = 0xFD; PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPEED);
gBattleTextBuff1[1] = 5;
gBattleTextBuff1[2] = STAT_STAGE_SPEED;
gBattleTextBuff1[3] = EOS;
gEffectBank = bank; gEffectBank = bank;
gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPEED; SET_STATCHANGER(STAT_STAGE_SPEED, 1, FALSE);
gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPEED; gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPEED;
gBattleScripting.animArg2 = 0; gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@ -2877,13 +2852,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_SP_ATTACK_UP: case HOLD_EFFECT_SP_ATTACK_UP:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC)
{ {
gBattleTextBuff1[0] = 0xFD; PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPATK);
gBattleTextBuff1[1] = 5;
gBattleTextBuff1[2] = STAT_STAGE_SPATK;
gBattleTextBuff1[3] = EOS;
gEffectBank = bank; gEffectBank = bank;
gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPATK; SET_STATCHANGER(STAT_STAGE_SPATK, 1, FALSE);
gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPATK; gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPATK;
gBattleScripting.animArg2 = 0; gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@ -2893,13 +2865,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_SP_DEFENSE_UP: case HOLD_EFFECT_SP_DEFENSE_UP:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC)
{ {
gBattleTextBuff1[0] = 0xFD; PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPDEF);
gBattleTextBuff1[1] = 5;
gBattleTextBuff1[2] = STAT_STAGE_SPDEF;
gBattleTextBuff1[3] = EOS;
gEffectBank = bank; gEffectBank = bank;
gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPDEF; SET_STATCHANGER(STAT_STAGE_SPDEF, 1, FALSE);
gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPDEF; gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPDEF;
gBattleScripting.animArg2 = 0; gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@ -2929,22 +2898,19 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
i = Random() % 5; i = Random() % 5;
} while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC); } while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC);
gBattleTextBuff1[0] = 0xFD; PREPARE_STAT_BUFFER(gBattleTextBuff1, i + 1);
gBattleTextBuff1[1] = 5;
gBattleTextBuff1[2] = i + 1;
gBattleTextBuff1[3] = EOS;
gBattleTextBuff2[0] = 0xFD; gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN;
gBattleTextBuff2[1] = 0; gBattleTextBuff2[1] = B_BUFF_STRING;
gBattleTextBuff2[2] = 0xD1; gBattleTextBuff2[2] = STRINGID_STATSHARPLY;
gBattleTextBuff2[3] = 0xD1 >> 8; gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8;
gBattleTextBuff2[4] = 0; gBattleTextBuff2[4] = B_BUFF_STRING;
gBattleTextBuff2[5] = 0xD2; gBattleTextBuff2[5] = STRINGID_STATROSE;
gBattleTextBuff2[6] = 0xD2 >> 8; gBattleTextBuff2[6] = STRINGID_STATROSE >> 8;
gBattleTextBuff2[7] = EOS; gBattleTextBuff2[7] = EOS;
gEffectBank = bank; gEffectBank = bank;
gBattleScripting.statChanger = 0x21 + i; SET_STATCHANGER(i + 1, 2, FALSE);
gBattleScripting.animArg1 = 0x21 + i + 6; gBattleScripting.animArg1 = 0x21 + i + 6;
gBattleScripting.animArg2 = 0; gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@ -3197,7 +3163,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
} }
break; break;
case HOLD_EFFECT_RESTORE_STATS: case HOLD_EFFECT_RESTORE_STATS:
for (i = 0; i < 8; i++) for (i = 0; i < BATTLE_STATS_NO; i++)
{ {
if (gBattleMons[bank].statStages[i] < 6) if (gBattleMons[bank].statStages[i] < 6)
{ {