@ commands .macro attackcanceler .byte B_SCR_OP_ATTACKCANCELER .endm .macro accuracycheck failPtr:req, move:req .byte B_SCR_OP_ACCURACYCHECK .4byte \failPtr .2byte \move .endm .macro attackstring .byte B_SCR_OP_ATTACKSTRING .endm .macro ppreduce .byte B_SCR_OP_PPREDUCE .endm .macro critcalc .byte B_SCR_OP_CRITCALC .endm .macro damagecalc .byte B_SCR_OP_DAMAGECALC .endm .macro typecalc .byte B_SCR_OP_TYPECALC .endm .macro adjustnormaldamage .byte B_SCR_OP_ADJUSTNORMALDAMAGE .endm .macro adjustnormaldamage2 .byte B_SCR_OP_ADJUSTNORMALDAMAGE2 .endm .macro attackanimation .byte B_SCR_OP_ATTACKANIMATION .endm .macro waitanimation .byte B_SCR_OP_WAITANIMATION .endm .macro healthbarupdate battler:req .byte B_SCR_OP_HEALTHBARUPDATE .byte \battler .endm .macro datahpupdate battler:req .byte B_SCR_OP_DATAHPUPDATE .byte \battler .endm .macro critmessage .byte B_SCR_OP_CRITMESSAGE .endm .macro effectivenesssound .byte B_SCR_OP_EFFECTIVENESSSOUND .endm .macro resultmessage .byte B_SCR_OP_RESULTMESSAGE .endm .macro printstring id:req .byte B_SCR_OP_PRINTSTRING .2byte \id .endm .macro printselectionstring id:req .byte B_SCR_OP_PRINTSELECTIONSTRING .2byte \id .endm .macro waitmessage time:req .byte B_SCR_OP_WAITMESSAGE .2byte \time .endm .macro printfromtable ptr:req .byte B_SCR_OP_PRINTFROMTABLE .4byte \ptr .endm .macro printselectionstringfromtable ptr:req .byte B_SCR_OP_PRINTSELECTIONSTRINGFROMTABLE .4byte \ptr .endm .macro seteffectwithchance .byte B_SCR_OP_SETEFFECTWITHCHANCE .endm .macro seteffectprimary .byte B_SCR_OP_SETEFFECTPRIMARY .endm .macro seteffectsecondary .byte B_SCR_OP_SETEFFECTSECONDARY .endm .macro clearstatusfromeffect battler:req .byte B_SCR_OP_CLEARSTATUSFROMEFFECT .byte \battler .endm .macro tryfaintmon battler:req .byte B_SCR_OP_TRYFAINTMON .byte \battler .byte FALSE .4byte NULL .endm .macro tryfaintmon_spikes battler:req, ptr:req .byte B_SCR_OP_TRYFAINTMON .byte \battler .byte TRUE .4byte \ptr .endm .macro dofaintanimation battler:req .byte B_SCR_OP_DOFAINTANIMATION .byte \battler .endm .macro cleareffectsonfaint battler:req .byte B_SCR_OP_CLEAREFFECTSONFAINT .byte \battler .endm .macro jumpifstatus battler:req, status1:req, ptr:req .byte B_SCR_OP_JUMPIFSTATUS .byte \battler .4byte \status1 .4byte \ptr .endm .macro jumpifstatus2 battler:req, status2:req, ptr:req .byte B_SCR_OP_JUMPIFSTATUS2 .byte \battler .4byte \status2 .4byte \ptr .endm .macro jumpifability battler:req, ability:req, ptr:req .byte B_SCR_OP_JUMPIFABILITY .byte \battler .byte \ability .4byte \ptr .endm .macro jumpifsideaffecting battler:req, sidestatus:req, ptr:req .byte B_SCR_OP_JUMPIFSIDEAFFECTING .byte \battler .2byte \sidestatus .4byte \ptr .endm .macro jumpifstat battler:req, ifflag:req, stat:req, value:req, ptr .byte B_SCR_OP_JUMPIFSTAT .byte \battler .byte \ifflag .byte \stat .byte \value .4byte \ptr .endm .macro jumpifstatus3condition battler:req, status3:req, condition:req, ptr:req .byte B_SCR_OP_JUMPIFSTATUS3CONDITION .byte \battler .4byte \status3 .byte \condition .4byte \ptr .endm .macro jumpiftype battler:req, type:req, ptr:req .byte B_SCR_OP_JUMPIFTYPE .byte \battler .byte \type .4byte \ptr .endm .macro getexp battler:req .byte B_SCR_OP_GETEXP .byte \battler .endm .macro checkteamslost ptr:req .byte B_SCR_OP_CHECKTEAMSLOST .4byte \ptr .endm .macro movevaluescleanup .byte B_SCR_OP_MOVEVALUESCLEANUP .endm .macro setmultihit value:req .byte B_SCR_OP_SETMULTIHIT .byte \value .endm .macro decrementmultihit value:req .byte B_SCR_OP_DECREMENTMULTIHIT .4byte \value .endm .macro goto ptr:req .byte B_SCR_OP_GOTO .4byte \ptr .endm .macro jumpifbyte ifflag:req, val:req, byte:req, ptr:req .byte B_SCR_OP_JUMPIFBYTE .byte \ifflag .4byte \val .byte \byte .4byte \ptr .endm .macro jumpifhalfword ifflag:req, val:req, hword:req, ptr:req .byte B_SCR_OP_JUMPIFHALFWORD .byte \ifflag .4byte \val .2byte \hword .4byte \ptr .endm .macro jumpifword ifflag:req, val:req, word:req, ptr:req .byte B_SCR_OP_JUMPIFWORD .byte \ifflag .4byte \val .4byte \word .4byte \ptr .endm .macro jumpifarrayequal val1:req, val2:req, size:req, ptr:req .byte B_SCR_OP_JUMPIFARRAYEQUAL .4byte \val1 .4byte \val2 .byte \size .4byte \ptr .endm .macro jumpifarraynotequal val1:req, val2:req, size:req, ptr:req .byte B_SCR_OP_JUMPIFARRAYNOTEQUAL .4byte \val1 .4byte \val2 .byte \size .4byte \ptr .endm .macro setbyte ptr:req, byte:req .byte B_SCR_OP_SETBYTE .4byte \ptr .byte \byte .endm .macro addbyte ptr:req, byte:req .byte B_SCR_OP_ADDBYTE .4byte \ptr .byte \byte .endm .macro subbyte ptr:req, byte:req .byte B_SCR_OP_SUBBYTE .4byte \ptr .byte \byte .endm .macro copyarray dest:req, src:req, size:req .byte B_SCR_OP_COPYARRAY .4byte \dest .4byte \src .byte \size .endm .macro copyarraywithindex dest:req, src:req, index:req, size:req .byte B_SCR_OP_COPYARRAYWITHINDEX .4byte \dest .4byte \src .4byte \index .byte \size .endm .macro orbyte ptr:req, byte:req .byte B_SCR_OP_ORBYTE .4byte \ptr .byte \byte .endm .macro orhalfword ptr:req, hword:req .byte B_SCR_OP_ORHALFWORD .4byte \ptr .2byte \hword .endm .macro orword ptr:req, word:req .byte B_SCR_OP_ORWORD .4byte \ptr .4byte \word .endm .macro bicbyte ptr:req, byte:req .byte B_SCR_OP_BICBYTE .4byte \ptr .byte \byte .endm .macro bichalfword ptr:req, hword:req .byte B_SCR_OP_BICHALFWORD .4byte \ptr .2byte \hword .endm .macro bicword ptr:req, word:req .byte B_SCR_OP_BICWORD .4byte \ptr .4byte \word .endm .macro pause time:req .byte B_SCR_OP_PAUSE .2byte \time .endm .macro waitstate .byte B_SCR_OP_WAITSTATE .endm .macro healthbar_update battler:req .byte B_SCR_OP_HEALTHBAR_UPDATE .byte \battler .endm .macro return .byte B_SCR_OP_RETURN .endm .macro end .byte B_SCR_OP_END .endm .macro end2 .byte B_SCR_OP_END2 .endm .macro end3 .byte B_SCR_OP_END3 .endm .macro jumpifaffectedbyprotect ptr:req .byte B_SCR_OP_JUMPIFAFFECTEDBYPROTECT .4byte \ptr .endm .macro call ptr:req .byte B_SCR_OP_CALL .4byte \ptr .endm .macro jumpiftype2 battler:req, type:req, ptr:req .byte B_SCR_OP_JUMPIFTYPE2 .byte \battler .byte \type .4byte \ptr .endm .macro jumpifabilitypresent ability:req, ptr:req .byte B_SCR_OP_JUMPIFABILITYPRESENT .byte \ability .4byte \ptr .endm .macro endselectionscript .byte B_SCR_OP_ENDSELECTIONSCRIPT .endm .macro playanimation battler:req, animType:req, arg=NULL .byte B_SCR_OP_PLAYANIMATION .byte \battler .byte \animType .4byte \arg .endm .macro playanimation_var battler:req, animType:req, arg=NULL .byte B_SCR_OP_PLAYANIMATION_VAR .byte \battler .4byte \animType .4byte \arg .endm .macro setgraphicalstatchangevalues .byte B_SCR_OP_SETGRAPHICALSTATCHANGEVALUES .endm .macro playstatchangeanimation battler:req, stats:req, statchange:req .byte B_SCR_OP_PLAYSTATCHANGEANIMATION .byte \battler .byte \stats .byte \statchange .endm .macro moveend endMode:req, endState:req .byte B_SCR_OP_MOVEEND .byte \endMode .byte \endState .endm @ Help macros for 5 uses of moveend command @ All cases .macro moveendall setbyte sMOVEEND_STATE, 0 moveend 0, 0 .endm @ Chosen case .macro moveendcase case:req setbyte sMOVEEND_STATE, \case moveend 1, 0 .endm @ All cases from (inclusive) .macro moveendfrom from:req setbyte sMOVEEND_STATE, \from moveend 0, 0 .endm @ All cases from 0 to (not inclusive) .macro moveendto to:req setbyte sMOVEEND_STATE, 0 moveend 2, \to .endm @ Cases from (inclusive) to (not inclusive) .macro moveendfromto from:req, to:req setbyte sMOVEEND_STATE, \from moveend 2, \to .endm .macro typecalc2 .byte B_SCR_OP_TYPECALC2 .endm .macro returnatktoball .byte B_SCR_OP_RETURNATKTOBALL .endm .macro getswitchedmondata battler:req .byte B_SCR_OP_GETSWITCHEDMONDATA .byte \battler .endm .macro switchindataupdate battler:req .byte B_SCR_OP_SWITCHINDATAUPDATE .byte \battler .endm .macro switchinanim battler:req, dontclearsubstitutebit:req .byte B_SCR_OP_SWITCHINANIM .byte \battler .byte \dontclearsubstitutebit .endm .macro jumpifcantswitch battler:req, ptr:req .byte B_SCR_OP_JUMPIFCANTSWITCH .byte \battler .4byte \ptr .endm .macro openpartyscreen battler:req, ptr:req .byte B_SCR_OP_OPENPARTYSCREEN .byte \battler .4byte \ptr .endm .macro switchhandleorder battler:req, state:req .byte B_SCR_OP_SWITCHHANDLEORDER .byte \battler .byte \state .endm .macro switchineffects battler:req .byte B_SCR_OP_SWITCHINEFFECTS .byte \battler .endm .macro trainerslidein battler:req .byte B_SCR_OP_TRAINERSLIDEIN .byte \battler .endm .macro playse song:req .byte B_SCR_OP_PLAYSE .2byte \song .endm .macro fanfare song:req .byte B_SCR_OP_FANFARE .2byte \song .endm .macro playfaintcry battler:req .byte B_SCR_OP_PLAYFAINTCRY .byte \battler .endm .macro endlinkbattle .byte B_SCR_OP_ENDLINKBATTLE .endm .macro returntoball battler:req .byte B_SCR_OP_RETURNTOBALL .byte \battler .endm .macro handlelearnnewmove learnedMovePtr:req, nothingToLearnPtr:req, isFirstMove:req .byte B_SCR_OP_HANDLELEARNNEWMOVE .4byte \learnedMovePtr .4byte \nothingToLearnPtr .byte \isFirstMove .endm .macro yesnoboxlearnmove forgotMovePtr:req .byte B_SCR_OP_YESNOBOXLEARNMOVE .4byte \forgotMovePtr .endm .macro yesnoboxstoplearningmove noPtr:req .byte B_SCR_OP_YESNOBOXSTOPLEARNINGMOVE .4byte \noPtr .endm .macro hitanimation battler:req .byte B_SCR_OP_HITANIMATION .byte \battler .endm .macro getmoneyreward .byte B_SCR_OP_GETMONEYREWARD .endm .macro updatebattlermoves battler:req .byte B_SCR_OP_UPDATEBATTLERMOVES .byte \battler .endm .macro swapattackerwithtarget .byte B_SCR_OP_SWAPATTACKERWITHTARGET .endm .macro incrementgamestat stat:req .byte B_SCR_OP_INCREMENTGAMESTAT .byte \stat .endm .macro drawpartystatussummary battler:req .byte B_SCR_OP_DRAWPARTYSTATUSSUMMARY .byte \battler .endm .macro hidepartystatussummary battler:req .byte B_SCR_OP_HIDEPARTYSTATUSSUMMARY .byte \battler .endm .macro jumptocalledmove notChosenMove:req .byte B_SCR_OP_JUMPTOCALLEDMOVE .byte \notChosenMove .endm .macro statusanimation battler:req .byte B_SCR_OP_STATUSANIMATION .byte \battler .endm .macro status2animation battler:req, status2:req .byte B_SCR_OP_STATUS2ANIMATION .byte \battler .4byte \status2 .endm .macro chosenstatusanimation battler:req, isStatus2:req, status:req .byte B_SCR_OP_CHOSENSTATUSANIMATION .byte \battler .byte \isStatus2 .4byte \status .endm .macro yesnobox .byte B_SCR_OP_YESNOBOX .endm .macro cancelallactions .byte B_SCR_OP_CANCELALLACTIONS .endm .macro adjustsetdamage .byte B_SCR_OP_ADJUSTSETDAMAGE .endm .macro removeitem battler:req .byte B_SCR_OP_REMOVEITEM .byte \battler .endm .macro atknameinbuff1 .byte B_SCR_OP_ATKNAMEINBUFF1 .endm .macro drawlvlupbox .byte B_SCR_OP_DRAWLVLUPBOX .endm .macro resetsentmonsvalue .byte B_SCR_OP_RESETSENTMONSVALUE .endm .macro setatktoplayer0 .byte B_SCR_OP_SETATKTOPLAYER0 .endm .macro makevisible battler:req .byte B_SCR_OP_MAKEVISIBLE .byte \battler .endm .macro recordlastability battler:req .byte B_SCR_OP_RECORDLASTABILITY .byte \battler .endm .macro buffermovetolearn .byte B_SCR_OP_BUFFERMOVETOLEARN .endm .macro jumpifplayerran ptr:req .byte B_SCR_OP_JUMPIFPLAYERRAN .4byte \ptr .endm .macro hpthresholds battler:req .byte B_SCR_OP_HPTHRESHOLDS .byte \battler .endm .macro hpthresholds2 battler:req .byte B_SCR_OP_HPTHRESHOLDS2 .byte \battler .endm .macro useitemonopponent .byte B_SCR_OP_USEITEMONOPPONENT .endm .macro various battler:req, id:req .byte B_SCR_OP_VARIOUS .byte \battler .byte \id .endm .macro setprotectlike .byte B_SCR_OP_SETPROTECTLIKE .endm .macro tryexplosion .byte B_SCR_OP_TRYEXPLOSION .endm .macro setatkhptozero .byte B_SCR_OP_SETATKHPTOZERO .endm .macro jumpifnexttargetvalid ptr:req .byte B_SCR_OP_JUMPIFNEXTTARGETVALID .4byte \ptr .endm .macro tryhealhalfhealth ptr:req, battler:req .byte B_SCR_OP_TRYHEALHALFHEALTH .4byte \ptr .byte \battler .endm .macro trymirrormove .byte B_SCR_OP_TRYMIRRORMOVE .endm .macro setrain .byte B_SCR_OP_SETRAIN .endm .macro setreflect .byte B_SCR_OP_SETREFLECT .endm .macro setseeded .byte B_SCR_OP_SETSEEDED .endm .macro manipulatedamage mode:req .byte B_SCR_OP_MANIPULATEDAMAGE .byte \mode .endm .macro trysetrest ptr:req .byte B_SCR_OP_TRYSETREST .4byte \ptr .endm .macro jumpifnotfirstturn ptr:req .byte B_SCR_OP_JUMPIFNOTFIRSTTURN .4byte \ptr .endm .macro nop .byte B_SCR_OP_NOP .endm .macro jumpifcantmakeasleep ptr:req .byte B_SCR_OP_JUMPIFCANTMAKEASLEEP .4byte \ptr .endm .macro stockpile .byte B_SCR_OP_STOCKPILE .endm .macro stockpiletobasedamage ptr:req .byte B_SCR_OP_STOCKPILETOBASEDAMAGE .4byte \ptr .endm .macro stockpiletohpheal ptr:req .byte B_SCR_OP_STOCKPILETOHPHEAL .4byte \ptr .endm .macro negativedamage .byte B_SCR_OP_NEGATIVEDAMAGE .endm .macro statbuffchange flags:req, jumpptr:req .byte B_SCR_OP_STATBUFFCHANGE .byte \flags .4byte \jumpptr .endm .macro normalisebuffs .byte B_SCR_OP_NORMALISEBUFFS .endm .macro setbide .byte B_SCR_OP_SETBIDE .endm .macro confuseifrepeatingattackends .byte B_SCR_OP_CONFUSEIFREPEATINGATTACKENDS .endm .macro setmultihitcounter val:req .byte B_SCR_OP_SETMULTIHITCOUNTER .byte \val .endm .macro initmultihitstring .byte B_SCR_OP_INITMULTIHITSTRING .endm .macro forcerandomswitch ptr:req .byte B_SCR_OP_FORCERANDOMSWITCH .4byte \ptr .endm .macro tryconversiontypechange ptr:req .byte B_SCR_OP_TRYCONVERSIONTYPECHANGE .4byte \ptr .endm .macro givepaydaymoney .byte B_SCR_OP_GIVEPAYDAYMONEY .endm .macro setlightscreen .byte B_SCR_OP_SETLIGHTSCREEN .endm .macro tryKO ptr:req .byte B_SCR_OP_TRYKO .4byte \ptr .endm .macro damagetohalftargethp .byte B_SCR_OP_DAMAGETOHALFTARGETHP .endm .macro setsandstorm .byte B_SCR_OP_SETSANDSTORM .endm .macro weatherdamage .byte B_SCR_OP_WEATHERDAMAGE .endm .macro tryinfatuating ptr:req .byte B_SCR_OP_TRYINFATUATING .4byte \ptr .endm .macro updatestatusicon battler:req .byte B_SCR_OP_UPDATESTATUSICON .byte \battler .endm .macro setmist .byte B_SCR_OP_SETMIST .endm .macro setfocusenergy .byte B_SCR_OP_SETFOCUSENERGY .endm .macro transformdataexecution .byte B_SCR_OP_TRANSFORMDATAEXECUTION .endm .macro setsubstitute .byte B_SCR_OP_SETSUBSTITUTE .endm .macro mimicattackcopy ptr:req .byte B_SCR_OP_MIMICATTACKCOPY .4byte \ptr .endm .macro metronome .byte B_SCR_OP_METRONOME .endm .macro dmgtolevel .byte B_SCR_OP_DMGTOLEVEL .endm .macro psywavedamageeffect .byte B_SCR_OP_PSYWAVEDAMAGEEFFECT .endm .macro counterdamagecalculator ptr:req .byte B_SCR_OP_COUNTERDAMAGECALCULATOR .4byte \ptr .endm .macro mirrorcoatdamagecalculator ptr:req .byte B_SCR_OP_MIRRORCOATDAMAGECALCULATOR .4byte \ptr .endm .macro disablelastusedattack ptr:req .byte B_SCR_OP_DISABLELASTUSEDATTACK .4byte \ptr .endm .macro trysetencore ptr:req .byte B_SCR_OP_TRYSETENCORE .4byte \ptr .endm .macro painsplitdmgcalc ptr:req .byte B_SCR_OP_PAINSPLITDMGCALC .4byte \ptr .endm .macro settypetorandomresistance ptr:req .byte B_SCR_OP_SETTYPETORANDOMRESISTANCE .4byte \ptr .endm .macro setalwayshitflag .byte B_SCR_OP_SETALWAYSHITFLAG .endm .macro copymovepermanently ptr:req .byte B_SCR_OP_COPYMOVEPERMANENTLY .4byte \ptr .endm .macro trychoosesleeptalkmove ptr:req .byte B_SCR_OP_TRYCHOOSESLEEPTALKMOVE .4byte \ptr .endm .macro setdestinybond .byte B_SCR_OP_SETDESTINYBOND .endm .macro trysetdestinybondtohappen .byte B_SCR_OP_TRYSETDESTINYBONDTOHAPPEN .endm .macro remaininghptopower .byte B_SCR_OP_REMAININGHPTOPOWER .endm .macro tryspiteppreduce ptr:req .byte B_SCR_OP_TRYSPITEPPREDUCE .4byte \ptr .endm .macro healpartystatus .byte B_SCR_OP_HEALPARTYSTATUS .endm .macro cursetarget ptr:req .byte B_SCR_OP_CURSETARGET .4byte \ptr .endm .macro trysetspikes ptr:req .byte B_SCR_OP_TRYSETSPIKES .4byte \ptr .endm .macro setforesight .byte B_SCR_OP_SETFORESIGHT .endm .macro trysetperishsong ptr:req .byte B_SCR_OP_TRYSETPERISHSONG .4byte \ptr .endm .macro rolloutdamagecalculation .byte B_SCR_OP_ROLLOUTDAMAGECALCULATION .endm .macro jumpifconfusedandstatmaxed stat:req, ptr:req .byte B_SCR_OP_JUMPIFCONFUSEDANDSTATMAXED .byte \stat .4byte \ptr .endm .macro furycuttercalc .byte B_SCR_OP_FURYCUTTERCALC .endm .macro friendshiptodamagecalculation .byte B_SCR_OP_FRIENDSHIPTODAMAGECALCULATION .endm .macro presentdamagecalculation .byte B_SCR_OP_PRESENTDAMAGECALCULATION .endm .macro setsafeguard .byte B_SCR_OP_SETSAFEGUARD .endm .macro magnitudedamagecalculation .byte B_SCR_OP_MAGNITUDEDAMAGECALCULATION .endm .macro jumpifnopursuitswitchdmg ptr:req .byte B_SCR_OP_JUMPIFNOPURSUITSWITCHDMG .4byte \ptr .endm .macro setsunny .byte B_SCR_OP_SETSUNNY .endm .macro maxattackhalvehp ptr:req .byte B_SCR_OP_MAXATTACKHALVEHP .4byte \ptr .endm .macro copyfoestats ptr:req .byte B_SCR_OP_COPYFOESTATS .4byte \ptr .endm .macro rapidspinfree .byte B_SCR_OP_RAPIDSPINFREE .endm .macro setdefensecurlbit .byte B_SCR_OP_SETDEFENSECURLBIT .endm .macro recoverbasedonsunlight ptr:req .byte B_SCR_OP_RECOVERBASEDONSUNLIGHT .4byte \ptr .endm .macro hiddenpowercalc .byte B_SCR_OP_HIDDENPOWERCALC .endm .macro selectfirstvalidtarget .byte B_SCR_OP_SELECTFIRSTVALIDTARGET .endm .macro trysetfutureattack ptr:req .byte B_SCR_OP_TRYSETFUTUREATTACK .4byte \ptr .endm .macro trydobeatup endPtr:req, failPtr:req .byte B_SCR_OP_TRYDOBEATUP .4byte \endPtr .4byte \failPtr .endm .macro setsemiinvulnerablebit .byte B_SCR_OP_SETSEMIINVULNERABLEBIT .endm .macro clearsemiinvulnerablebit .byte B_SCR_OP_CLEARSEMIINVULNERABLEBIT .endm .macro setminimize .byte B_SCR_OP_SETMINIMIZE .endm .macro sethail .byte B_SCR_OP_SETHAIL .endm .macro trymemento ptr:req .byte B_SCR_OP_TRYMEMENTO .4byte \ptr .endm .macro setforcedtarget .byte B_SCR_OP_SETFORCEDTARGET .endm .macro setcharge .byte B_SCR_OP_SETCHARGE .endm .macro callenvironmentattack .byte B_SCR_OP_CALLENVIRONMENTATTACK .endm .macro cureifburnedparalyzedorpoisoned ptr:req .byte B_SCR_OP_CUREIFBURNEDPARALYZEDORPOISONED .4byte \ptr .endm .macro settorment ptr:req .byte B_SCR_OP_SETTORMENT .4byte \ptr .endm .macro jumpifnodamage ptr:req .byte B_SCR_OP_JUMPIFNODAMAGE .4byte \ptr .endm .macro settaunt ptr:req .byte B_SCR_OP_SETTAUNT .4byte \ptr .endm .macro trysethelpinghand ptr:req .byte B_SCR_OP_TRYSETHELPINGHAND .4byte \ptr .endm .macro tryswapitems ptr:req .byte B_SCR_OP_TRYSWAPITEMS .4byte \ptr .endm .macro trycopyability ptr:req .byte B_SCR_OP_TRYCOPYABILITY .4byte \ptr .endm .macro trywish turnNumber:req, ptr:req .byte B_SCR_OP_TRYWISH .byte \turnNumber .4byte \ptr .endm .macro trysetroots ptr:req .byte B_SCR_OP_TRYSETROOTS .4byte \ptr .endm .macro doubledamagedealtifdamaged .byte B_SCR_OP_DOUBLEDAMAGEDEALTIFDAMAGED .endm .macro setyawn ptr:req .byte B_SCR_OP_SETYAWN .4byte \ptr .endm .macro setdamagetohealthdifference ptr:req .byte B_SCR_OP_SETDAMAGETOHEALTHDIFFERENCE .4byte \ptr .endm .macro scaledamagebyhealthratio .byte B_SCR_OP_SCALEDAMAGEBYHEALTHRATIO .endm .macro tryswapabilities ptr:req .byte B_SCR_OP_TRYSWAPABILITIES .4byte \ptr .endm .macro tryimprison ptr:req .byte B_SCR_OP_TRYIMPRISON .4byte \ptr .endm .macro trysetgrudge ptr:req .byte B_SCR_OP_TRYSETGRUDGE .4byte \ptr .endm .macro weightdamagecalculation .byte B_SCR_OP_WEIGHTDAMAGECALCULATION .endm .macro assistattackselect ptr:req .byte B_SCR_OP_ASSISTATTACKSELECT .4byte \ptr .endm .macro trysetmagiccoat ptr:req .byte B_SCR_OP_TRYSETMAGICCOAT .4byte \ptr .endm .macro trysetsnatch ptr:req .byte B_SCR_OP_TRYSETSNATCH .4byte \ptr .endm .macro trygetintimidatetarget ptr:req .byte B_SCR_OP_TRYGETINTIMIDATETARGET .4byte \ptr .endm .macro switchoutabilities battler:req .byte B_SCR_OP_SWITCHOUTABILITIES .byte \battler .endm .macro jumpifhasnohp battler:req, ptr:req .byte B_SCR_OP_JUMPIFHASNOHP .byte \battler .4byte \ptr .endm .macro getsecretpowereffect .byte B_SCR_OP_GETSECRETPOWEREFFECT .endm .macro pickup .byte B_SCR_OP_PICKUP .endm .macro docastformchangeanimation .byte B_SCR_OP_DOCASTFORMCHANGEANIMATION .endm .macro trycastformdatachange .byte B_SCR_OP_TRYCASTFORMDATACHANGE .endm .macro settypebasedhalvers ptr:req .byte B_SCR_OP_SETTYPEBASEDHALVERS .4byte \ptr .endm .macro setweatherballtype .byte B_SCR_OP_SETWEATHERBALLTYPE .endm .macro tryrecycleitem ptr:req .byte B_SCR_OP_TRYRECYCLEITEM .4byte \ptr .endm .macro settypetoenvironment ptr:req .byte B_SCR_OP_SETTYPETOENVIRONMENT .4byte \ptr .endm .macro pursuitdoubles ptr:req .byte B_SCR_OP_PURSUITDOUBLES .4byte \ptr .endm .macro snatchsetbattlers .byte B_SCR_OP_SNATCHSETBATTLERS .endm .macro removelightscreenreflect .byte B_SCR_OP_REMOVELIGHTSCREENREFLECT .endm .macro handleballthrow .byte B_SCR_OP_HANDLEBALLTHROW .endm .macro givecaughtmon .byte B_SCR_OP_GIVECAUGHTMON .endm .macro trysetcaughtmondexflags ptr:req .byte B_SCR_OP_TRYSETCAUGHTMONDEXFLAGS .4byte \ptr .endm .macro displaydexinfo .byte B_SCR_OP_DISPLAYDEXINFO .endm .macro trygivecaughtmonnick ptr:req .byte B_SCR_OP_TRYGIVECAUGHTMONNICK .4byte \ptr .endm .macro subattackerhpbydmg .byte B_SCR_OP_SUBATTACKERHPBYDMG .endm .macro removeattackerstatus1 .byte B_SCR_OP_REMOVEATTACKERSTATUS1 .endm .macro finishaction .byte B_SCR_OP_FINISHACTION .endm .macro finishturn .byte B_SCR_OP_FINISHTURN .endm .macro trainerslideout position:req .byte B_SCR_OP_TRAINERSLIDEOUT .byte \position .endm @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES .endm .macro setmagiccoattarget battler:req various \battler, VARIOUS_SET_MAGIC_COAT_TARGET .endm .macro getifcantrunfrombattle battler:req various \battler, VARIOUS_IS_RUNNING_IMPOSSIBLE .endm .macro getmovetarget battler:req various \battler, VARIOUS_GET_MOVE_TARGET .endm .macro getbattlerfainted battler:req various \battler, VARIOUS_GET_BATTLER_FAINTED .endm .macro resetintimidatetracebits battler:req various \battler, VARIOUS_RESET_INTIMIDATE_TRACE_BITS .endm .macro updatechoicemoveonlvlup battler:req various \battler, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP .endm .macro resetplayerfainted various BS_ATTACKER, VARIOUS_RESET_PLAYER_FAINTED .endm .macro palaceflavortext battler:req various \battler, VARIOUS_PALACE_FLAVOR_TEXT .endm .macro arenajudgmentwindow various BS_ATTACKER, VARIOUS_ARENA_JUDGMENT_WINDOW .endm .macro arenaopponentmonlost various BS_ATTACKER, VARIOUS_ARENA_OPPONENT_MON_LOST .endm .macro arenaplayermonlost various BS_ATTACKER, VARIOUS_ARENA_PLAYER_MON_LOST .endm .macro arenabothmonlost various BS_ATTACKER, VARIOUS_ARENA_BOTH_MONS_LOST .endm .macro forfeityesnobox battler:req various \battler, VARIOUS_EMIT_YESNOBOX .endm .macro arenadrawreftextbox various BS_ATTACKER, VARIOUS_DRAW_ARENA_REF_TEXT_BOX .endm .macro arenaerasereftextbox various BS_ATTACKER, VARIOUS_ERASE_ARENA_REF_TEXT_BOX .endm .macro arenajudgmentstring id:req various \id, VARIOUS_ARENA_JUDGMENT_STRING .endm .macro arenawaitmessage id:req various \id, VARIOUS_ARENA_WAIT_STRING .endm .macro waitcry battler:req various \battler, VARIOUS_WAIT_CRY .endm .macro returnopponentmon1toball battler:req various \battler, VARIOUS_RETURN_OPPONENT_MON1 .endm .macro returnopponentmon2toball battler:req various \battler, VARIOUS_RETURN_OPPONENT_MON2 .endm .macro volumedown various BS_ATTACKER, VARIOUS_VOLUME_DOWN .endm .macro volumeup various BS_ATTACKER, VARIOUS_VOLUME_UP .endm .macro setalreadystatusedmoveattempt battler:req various \battler, VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT .endm .macro palacetryescapestatus battler:req various \battler, VARIOUS_PALACE_TRY_ESCAPE_STATUS .endm .macro setoutcomeonteleport battler:req various \battler, VARIOUS_SET_TELEPORT_OUTCOME .endm .macro playtrainerdefeatbgm battler:req various \battler, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC .endm @ helpful macros .macro setstatchanger stat:req, stages:req, down:req setbyte sSTATCHANGER, \stat | \stages << 4 | \down << 7 .endm .macro setmoveeffect effect:req setbyte cEFFECT_CHOOSER, \effect .endm .macro chosenstatus1animation battler:req, status:req chosenstatusanimation \battler, 0x0, \status .endm .macro chosenstatus2animation battler:req, status:req chosenstatusanimation \battler, 0x1, \status .endm .macro sethword dst:req, value:req setbyte \dst, (\value) & 0xFF setbyte \dst + 1, ((\value) >> 8) & 0xFF .endm .macro setword dst:req, value:req setbyte \dst, (\value) & 0xFF setbyte \dst + 1, ((\value) >> 8) & 0xFF setbyte \dst + 2, ((\value) >> 16) & 0xFF setbyte \dst + 3, ((\value) >> 24) & 0xFF .endm .macro copybyte dst:req, src:req copyarray \dst, \src, 0x1 .endm .macro copyhword dst:req, src:req copyarray \dst, \src, 0x2 .endm .macro copyword dst:req, src:req copyarray \dst, \src, 0x4 .endm .macro jumpifbytenotequal byte1:req, byte2:req, jumpptr:req jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr .endm .macro jumpifbyteequal byte1:req, byte2:req, jumpptr:req jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr .endm .macro jumpifmove move:req, jumpptr:req jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpptr .endm .macro jumpifnotmove move:req, jumpptr:req jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpptr .endm .macro jumpifstatus3 battler:req, status:req, jumpptr:req jumpifstatus3condition \battler, \status, FALSE, \jumpptr .endm .macro jumpifnostatus3 battler:req, status:req, jumpptr:req jumpifstatus3condition \battler, \status, TRUE, \jumpptr .endm .macro jumpifmovehadnoeffect jumpptr:req jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr .endm .macro jumpifbattletype flags:req, jumpptr:req jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr .endm .macro jumpifnotbattletype flags:req, jumpptr:req jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr .endm