merge with be
This commit is contained in:
commit
b130396c0e
@ -178,11 +178,11 @@
|
|||||||
.byte \case
|
.byte \case
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpiftype battler:req, type:req, ptr:req
|
.macro jumpiftype battler:req, type:req, ptr:req
|
||||||
jumpbasedontype \battler, \type, 1, \ptr
|
jumpbasedontype \battler, \type, 1, \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifnottype battler:req, type:req, ptr:req
|
.macro jumpifnottype battler:req, type:req, ptr:req
|
||||||
jumpbasedontype \battler, \type, 0, \ptr
|
jumpbasedontype \battler, \type, 0, \ptr
|
||||||
.endm
|
.endm
|
||||||
@ -409,33 +409,33 @@
|
|||||||
.byte \param0
|
.byte \param0
|
||||||
.byte \param1
|
.byte \param1
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ Help macros for 5 uses of moveend command
|
@ Help macros for 5 uses of moveend command
|
||||||
|
|
||||||
@ All cases
|
@ All cases
|
||||||
.macro moveendall
|
.macro moveendall
|
||||||
setbyte sMOVEEND_STATE, 0
|
setbyte sMOVEEND_STATE, 0
|
||||||
moveend 0, 0
|
moveend 0, 0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ Chosen case
|
@ Chosen case
|
||||||
.macro moveendcase case:req
|
.macro moveendcase case:req
|
||||||
setbyte sMOVEEND_STATE, \case
|
setbyte sMOVEEND_STATE, \case
|
||||||
moveend 1, 0
|
moveend 1, 0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ All cases from (inclusive)
|
@ All cases from (inclusive)
|
||||||
.macro moveendfrom from:req
|
.macro moveendfrom from:req
|
||||||
setbyte sMOVEEND_STATE, \from
|
setbyte sMOVEEND_STATE, \from
|
||||||
moveend 0, 0
|
moveend 0, 0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ All cases from 0 to (not inclusive)
|
@ All cases from 0 to (not inclusive)
|
||||||
.macro moveendto to:req
|
.macro moveendto to:req
|
||||||
setbyte sMOVEEND_STATE, 0
|
setbyte sMOVEEND_STATE, 0
|
||||||
moveend 2, \to
|
moveend 2, \to
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ Cases from (inclusive) to (not inclusive)
|
@ Cases from (inclusive) to (not inclusive)
|
||||||
.macro moveendfromto from:req, to:req
|
.macro moveendfromto from:req, to:req
|
||||||
setbyte sMOVEEND_STATE, \from
|
setbyte sMOVEEND_STATE, \from
|
||||||
@ -1262,407 +1262,407 @@
|
|||||||
.byte 0xf8
|
.byte 0xf8
|
||||||
.byte \param0
|
.byte \param0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro settelekinesis ptr:req
|
.macro settelekinesis ptr:req
|
||||||
.byte 0xf9
|
.byte 0xf9
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro swapstatstages stat:req
|
.macro swapstatstages stat:req
|
||||||
.byte 0xfa
|
.byte 0xfa
|
||||||
.byte \stat
|
.byte \stat
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro averagestats stat:req
|
.macro averagestats stat:req
|
||||||
.byte 0xfb
|
.byte 0xfb
|
||||||
.byte \stat
|
.byte \stat
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifoppositegenders ptr:req
|
.macro jumpifoppositegenders ptr:req
|
||||||
.byte 0xfc
|
.byte 0xfc
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro trygetbaddreamstarget ptr:req
|
.macro trygetbaddreamstarget ptr:req
|
||||||
.byte 0xfd
|
.byte 0xfd
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryworryseed ptr:req
|
.macro tryworryseed ptr:req
|
||||||
.byte 0xfe
|
.byte 0xfe
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro metalburstdamagecalculator ptr:req
|
.macro metalburstdamagecalculator ptr:req
|
||||||
.byte 0xff
|
.byte 0xff
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ various command changed to more readable macros
|
@ various command changed to more readable macros
|
||||||
.macro cancelmultiturnmoves battler:req
|
.macro cancelmultiturnmoves battler:req
|
||||||
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
|
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setmagiccoattarget battler:req
|
.macro setmagiccoattarget battler:req
|
||||||
various \battler, VARIOUS_SET_MAGIC_COAT_TARGET
|
various \battler, VARIOUS_SET_MAGIC_COAT_TARGET
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro getifcantrunfrombattle battler:req
|
.macro getifcantrunfrombattle battler:req
|
||||||
various \battler, VARIOUS_IS_RUNNING_IMPOSSIBLE
|
various \battler, VARIOUS_IS_RUNNING_IMPOSSIBLE
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro getmovetarget battler:req
|
.macro getmovetarget battler:req
|
||||||
various \battler, VARIOUS_GET_MOVE_TARGET
|
various \battler, VARIOUS_GET_MOVE_TARGET
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro getbattlerfainted battler:req
|
.macro getbattlerfainted battler:req
|
||||||
various \battler, VARIOUS_GET_BATTLER_FAINTED
|
various \battler, VARIOUS_GET_BATTLER_FAINTED
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro resetintimidatetracebits battler:req
|
.macro resetintimidatetracebits battler:req
|
||||||
various \battler, VARIOUS_RESET_INTIMIDATE_TRACE_BITS
|
various \battler, VARIOUS_RESET_INTIMIDATE_TRACE_BITS
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro updatechoicemoveonlvlup battler:req
|
.macro updatechoicemoveonlvlup battler:req
|
||||||
various \battler, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP
|
various \battler, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro various7 battler:req
|
.macro various7 battler:req
|
||||||
various \battler, 7
|
various \battler, 7
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro palaceflavortext battler:req
|
.macro palaceflavortext battler:req
|
||||||
various \battler, VARIOUS_PALACE_FLAVOR_TEXT
|
various \battler, VARIOUS_PALACE_FLAVOR_TEXT
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro arenajudgmentwindow
|
.macro arenajudgmentwindow
|
||||||
various BS_ATTACKER, VARIOUS_ARENA_JUDGMENT_WINDOW
|
various BS_ATTACKER, VARIOUS_ARENA_JUDGMENT_WINDOW
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro arenaopponentmonlost
|
.macro arenaopponentmonlost
|
||||||
various BS_ATTACKER, VARIOUS_ARENA_OPPONENT_MON_LOST
|
various BS_ATTACKER, VARIOUS_ARENA_OPPONENT_MON_LOST
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro arenaplayermonlost
|
.macro arenaplayermonlost
|
||||||
various BS_ATTACKER, VARIOUS_ARENA_PLAYER_MON_LOST
|
various BS_ATTACKER, VARIOUS_ARENA_PLAYER_MON_LOST
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro arenabothmonlost
|
.macro arenabothmonlost
|
||||||
various BS_ATTACKER, VARIOUS_ARENA_BOTH_MONS_LOST
|
various BS_ATTACKER, VARIOUS_ARENA_BOTH_MONS_LOST
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro forfeityesnobox battler:req
|
.macro forfeityesnobox battler:req
|
||||||
various \battler, VARIOUS_EMIT_YESNOBOX
|
various \battler, VARIOUS_EMIT_YESNOBOX
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro various14 battler:req
|
.macro various14 battler:req
|
||||||
various \battler, 14
|
various \battler, 14
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro various15 battler:req
|
.macro various15 battler:req
|
||||||
various \battler, 15
|
various \battler, 15
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro arenajudmengtstring id:req
|
.macro arenajudmengtstring id:req
|
||||||
various \id, VARIOUS_ARENA_JUDGMENT_STRING
|
various \id, VARIOUS_ARENA_JUDGMENT_STRING
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro arenawaitmessage id:req
|
.macro arenawaitmessage id:req
|
||||||
various \id, VARIOUS_ARENA_WAIT_STRING
|
various \id, VARIOUS_ARENA_WAIT_STRING
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro waitcry battler:req
|
.macro waitcry battler:req
|
||||||
various \battler, VARIOUS_WAIT_CRY
|
various \battler, VARIOUS_WAIT_CRY
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro returnopponentmon1toball battler:req
|
.macro returnopponentmon1toball battler:req
|
||||||
various \battler, VARIOUS_RETURN_OPPONENT_MON1
|
various \battler, VARIOUS_RETURN_OPPONENT_MON1
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro returnopponentmon2toball battler:req
|
.macro returnopponentmon2toball battler:req
|
||||||
various \battler, VARIOUS_RETURN_OPPONENT_MON2
|
various \battler, VARIOUS_RETURN_OPPONENT_MON2
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro volumedown
|
.macro volumedown
|
||||||
various BS_ATTACKER, VARIOUS_VOLUME_DOWN
|
various BS_ATTACKER, VARIOUS_VOLUME_DOWN
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro volumeup
|
.macro volumeup
|
||||||
various BS_ATTACKER, VARIOUS_VOLUME_UP
|
various BS_ATTACKER, VARIOUS_VOLUME_UP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setalreadystatusedmoveattempt battler:req
|
.macro setalreadystatusedmoveattempt battler:req
|
||||||
various \battler, 23
|
various \battler, 23
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro various24 battler:req
|
.macro various24 battler:req
|
||||||
various \battler, 24
|
various \battler, 24
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setoutcomeonteleport battler:req
|
.macro setoutcomeonteleport battler:req
|
||||||
various \battler, VARIOUS_SET_TELEPORT_OUTCOME
|
various \battler, VARIOUS_SET_TELEPORT_OUTCOME
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro playtrainerdefeatbgm battler:req
|
.macro playtrainerdefeatbgm battler:req
|
||||||
various \battler, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC
|
various \battler, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro stattextbuffer battler:req
|
.macro stattextbuffer battler:req
|
||||||
various \battler, VARIOUS_STAT_TEXT_BUFFER
|
various \battler, VARIOUS_STAT_TEXT_BUFFER
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro switchinabilities battler:req
|
.macro switchinabilities battler:req
|
||||||
various \battler, VARIOUS_SWITCHIN_ABILITIES
|
various \battler, VARIOUS_SWITCHIN_ABILITIES
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro savetarget
|
.macro savetarget
|
||||||
various BS_TARGET, VARIOUS_SAVE_TARGET
|
various BS_TARGET, VARIOUS_SAVE_TARGET
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro restoretarget
|
.macro restoretarget
|
||||||
various BS_TARGET, VARIOUS_RESTORE_TARGET
|
various BS_TARGET, VARIOUS_RESTORE_TARGET
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro instanthpdrop battler:req
|
.macro instanthpdrop battler:req
|
||||||
various \battler, VARIOUS_INSTANT_HP_DROP
|
various \battler, VARIOUS_INSTANT_HP_DROP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro clearstatus battler:req
|
.macro clearstatus battler:req
|
||||||
various \battler, VARIOUS_CLEAR_STATUS
|
various \battler, VARIOUS_CLEAR_STATUS
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro restorepp battler:req
|
.macro restorepp battler:req
|
||||||
various \battler, VARIOUS_RESTORE_PP
|
various \battler, VARIOUS_RESTORE_PP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryactivatemoxie battler:req
|
.macro tryactivatemoxie battler:req
|
||||||
various \battler, VARIOUS_TRY_ACTIVATE_MOXIE
|
various \battler, VARIOUS_TRY_ACTIVATE_MOXIE
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryactivatebeastboost battler:req
|
.macro tryactivatebeastboost battler:req
|
||||||
various \battler, VARIOUS_TRY_ACTIVATE_BEAST_BOOST
|
various \battler, VARIOUS_TRY_ACTIVATE_BEAST_BOOST
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryactivatereceiver battler:req
|
.macro tryactivatereceiver battler:req
|
||||||
various \battler, VARIOUS_TRY_ACTIVATE_RECEIVER
|
various \battler, VARIOUS_TRY_ACTIVATE_RECEIVER
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryactivatesoulheart
|
.macro tryactivatesoulheart
|
||||||
various BS_ATTACKER, VARIOUS_TRY_ACTIVATE_SOULHEART
|
various BS_ATTACKER, VARIOUS_TRY_ACTIVATE_SOULHEART
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryactivatefellstinger battler:req
|
.macro tryactivatefellstinger battler:req
|
||||||
various \battler, VARIOUS_TRY_ACTIVATE_FELL_STINGER
|
various \battler, VARIOUS_TRY_ACTIVATE_FELL_STINGER
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro playmoveanimation battler:req, move:req
|
.macro playmoveanimation battler:req, move:req
|
||||||
various \battler, VARIOUS_PLAY_MOVE_ANIMATION
|
various \battler, VARIOUS_PLAY_MOVE_ANIMATION
|
||||||
.2byte \move
|
.2byte \move
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setluckychant battler:req, ptr:req
|
.macro setluckychant battler:req, ptr:req
|
||||||
various \battler VARIOUS_SET_LUCKY_CHANT
|
various \battler VARIOUS_SET_LUCKY_CHANT
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro suckerpunchcheck ptr:req
|
.macro suckerpunchcheck ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_SUCKER_PUNCH_CHECK
|
various BS_ATTACKER, VARIOUS_SUCKER_PUNCH_CHECK
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setabilitysimple battler:req, ptr:req
|
.macro setabilitysimple battler:req, ptr:req
|
||||||
various \battler VARIOUS_SET_SIMPLE_BEAM
|
various \battler VARIOUS_SET_SIMPLE_BEAM
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryentrainment ptr:req
|
.macro tryentrainment ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_TRY_ENTRAINMENT
|
various BS_ATTACKER, VARIOUS_TRY_ENTRAINMENT
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setlastusedability battler:req
|
.macro setlastusedability battler:req
|
||||||
various \battler, VARIOUS_SET_LAST_USED_ABILITY
|
various \battler, VARIOUS_SET_LAST_USED_ABILITY
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryhealpulse battler:req, ptr:req
|
.macro tryhealpulse battler:req, ptr:req
|
||||||
various \battler, VARIOUS_TRY_HEAL_PULSE
|
various \battler, VARIOUS_TRY_HEAL_PULSE
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryquash ptr:req
|
.macro tryquash ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_TRY_QUASH
|
various BS_ATTACKER, VARIOUS_TRY_QUASH
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryafteryou ptr:req
|
.macro tryafteryou ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_AFTER_YOU
|
various BS_ATTACKER, VARIOUS_AFTER_YOU
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro trybestow ptr:req
|
.macro trybestow ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_BESTOW
|
various BS_ATTACKER, VARIOUS_BESTOW
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro invertstatstages battler:req
|
.macro invertstatstages battler:req
|
||||||
various \battler, VARIOUS_INVERT_STAT_STAGES
|
various \battler, VARIOUS_INVERT_STAT_STAGES
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setterrain ptr:req
|
.macro setterrain ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_SET_TERRAIN
|
various BS_ATTACKER, VARIOUS_SET_TERRAIN
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro trymefirst ptr:req
|
.macro trymefirst ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_TRY_ME_FIRST
|
various BS_ATTACKER, VARIOUS_TRY_ME_FIRST
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifbattleend ptr:req
|
.macro jumpifbattleend ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_JUMP_IF_BATTLE_END
|
various BS_ATTACKER, VARIOUS_JUMP_IF_BATTLE_END
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryelectrify ptr:req
|
.macro tryelectrify ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_TRY_ELECTRIFY
|
various BS_ATTACKER, VARIOUS_TRY_ELECTRIFY
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryreflecttype ptr:req
|
.macro tryreflecttype ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_TRY_REFLECT_TYPE
|
various BS_ATTACKER, VARIOUS_TRY_REFLECT_TYPE
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro trysoak ptr:req
|
.macro trysoak ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_TRY_SOAK
|
various BS_ATTACKER, VARIOUS_TRY_SOAK
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro handlemegaevo battler:req, case:req
|
.macro handlemegaevo battler:req, case:req
|
||||||
various \battler, VARIOUS_HANDLE_MEGA_EVO
|
various \battler, VARIOUS_HANDLE_MEGA_EVO
|
||||||
.byte \case
|
.byte \case
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro handleformchange battler:req, case:req
|
.macro handleformchange battler:req, case:req
|
||||||
various \battler, VARIOUS_HANDLE_FORM_CHANGE
|
various \battler, VARIOUS_HANDLE_FORM_CHANGE
|
||||||
.byte \case
|
.byte \case
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifcantuselastresort battler:req, ptr:req
|
.macro jumpifcantuselastresort battler:req, ptr:req
|
||||||
various \battler, VARIOUS_TRY_LAST_RESORT
|
various \battler, VARIOUS_TRY_LAST_RESORT
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro argumentstatuseffect
|
.macro argumentstatuseffect
|
||||||
various BS_ATTACKER, VARIOUS_ARGUMENT_STATUS_EFFECT
|
various BS_ATTACKER, VARIOUS_ARGUMENT_STATUS_EFFECT
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryhitswitchtarget ptr:req
|
.macro tryhitswitchtarget ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_TRY_HIT_SWITCH_TARGET
|
various BS_ATTACKER, VARIOUS_TRY_HIT_SWITCH_TARGET
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryautotomize battler:req, ptr:req
|
.macro tryautotomize battler:req, ptr:req
|
||||||
various \battler, VARIOUS_TRY_AUTOTOMIZE
|
various \battler, VARIOUS_TRY_AUTOTOMIZE
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifcantusesynchronoise ptr:req
|
.macro jumpifcantusesynchronoise ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_TRY_SYNCHRONOISE
|
various BS_ATTACKER, VARIOUS_TRY_SYNCHRONOISE
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro trycopycat ptr:req
|
.macro trycopycat ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_TRY_COPYCAT
|
various BS_ATTACKER, VARIOUS_TRY_COPYCAT
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro showabilitypopup battler:req
|
.macro showabilitypopup battler:req
|
||||||
various \battler, VARIOUS_ABILITY_POPUP
|
various \battler, VARIOUS_ABILITY_POPUP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro defogclear battler:req, clear:req, ptr:req
|
.macro defogclear battler:req, clear:req, ptr:req
|
||||||
various \battler, VARIOUS_DEFOG
|
various \battler, VARIOUS_DEFOG
|
||||||
.byte \clear
|
.byte \clear
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpiftargetally ptr:req
|
.macro jumpiftargetally ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_JUMP_IF_TARGET_ALLY
|
various BS_ATTACKER, VARIOUS_JUMP_IF_TARGET_ALLY
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro trypsychoshift ptr:req
|
.macro trypsychoshift ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_PSYCHO_SHIFT
|
various BS_ATTACKER, VARIOUS_PSYCHO_SHIFT
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro curestatus battler:req
|
.macro curestatus battler:req
|
||||||
various \battler, VARIOUS_CURE_STATUS
|
various \battler, VARIOUS_CURE_STATUS
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro powertrick battler:req
|
.macro powertrick battler:req
|
||||||
various \battler, VARIOUS_POWER_TRICK
|
various \battler, VARIOUS_POWER_TRICK
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro argumenttomoveeffect
|
.macro argumenttomoveeffect
|
||||||
various BS_ATTACKER, VARIOUS_ARGUMENT_TO_MOVE_EFFECT
|
various BS_ATTACKER, VARIOUS_ARGUMENT_TO_MOVE_EFFECT
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifnotgrounded battler:req, ptr:req
|
.macro jumpifnotgrounded battler:req, ptr:req
|
||||||
various \battler, VARIOUS_JUMP_IF_NOT_GROUNDED
|
various \battler, VARIOUS_JUMP_IF_NOT_GROUNDED
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro handletrainerslidemsg battler:req, field:req
|
.macro handletrainerslidemsg battler:req, field:req
|
||||||
various \battler, VARIOUS_HANDLE_TRAINER_SLIDE_MSG
|
various \battler, VARIOUS_HANDLE_TRAINER_SLIDE_MSG
|
||||||
.byte \field
|
.byte \field
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro trytrainerslidefirstdownmsg battler:req
|
.macro trytrainerslidefirstdownmsg battler:req
|
||||||
various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF
|
various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro trytrainerslidelastonmsg battler:req
|
.macro trytrainerslidelastonmsg battler:req
|
||||||
various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON
|
various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setauroraveil battler:req
|
.macro setauroraveil battler:req
|
||||||
various \battler, VARIOUS_SET_AURORA_VEIL
|
various \battler, VARIOUS_SET_AURORA_VEIL
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro trysetthirdtype battler:req, ptr:req
|
.macro trysetthirdtype battler:req, ptr:req
|
||||||
various \battler, VARIOUS_TRY_THIRD_TYPE
|
various \battler, VARIOUS_TRY_THIRD_TYPE
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryaccupressure battler:req, ptr:req
|
.macro tryaccupressure battler:req, ptr:req
|
||||||
various \battler, VARIOUS_ACUPRESSURE
|
various \battler, VARIOUS_ACUPRESSURE
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setpowder battler:req
|
.macro setpowder battler:req
|
||||||
various \battler, VARIOUS_SET_POWDER
|
various \battler, VARIOUS_SET_POWDER
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro spectralthiefprintstats
|
.macro spectralthiefprintstats
|
||||||
various BS_ATTACKER, VARIOUS_SPECTRAL_THIEF
|
various BS_ATTACKER, VARIOUS_SPECTRAL_THIEF
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro bringdownairbornebattler battler:req
|
.macro bringdownairbornebattler battler:req
|
||||||
various \battler, VARIOUS_GRAVITY_ON_AIRBORNE_MONS
|
various \battler, VARIOUS_GRAVITY_ON_AIRBORNE_MONS
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro checkgrassyterrainheal battler:req, ptr:req
|
.macro checkgrassyterrainheal battler:req, ptr:req
|
||||||
various \battler, VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS
|
various \battler, VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifnotberry battler:req, ptr:req
|
.macro jumpifnotberry battler:req, ptr:req
|
||||||
various \battler, VARIOUS_JUMP_IF_NOT_BERRY
|
various \battler, VARIOUS_JUMP_IF_NOT_BERRY
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifroarfails ptr:req
|
.macro jumpifroarfails ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_JUMP_IF_ROAR_FAILS
|
various BS_ATTACKER, VARIOUS_JUMP_IF_ROAR_FAILS
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
@ -1672,43 +1672,43 @@
|
|||||||
various BS_ATTACKER, VARIOUS_TRY_INSTRUCT
|
various BS_ATTACKER, VARIOUS_TRY_INSTRUCT
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro settracedability battler:req
|
.macro settracedability battler:req
|
||||||
various \battler, VARIOUS_TRACE_ABILITY
|
various \battler, VARIOUS_TRACE_ABILITY
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro updatenick battler:req
|
.macro updatenick battler:req
|
||||||
various \battler, VARIOUS_UPDATE_NICK
|
various \battler, VARIOUS_UPDATE_NICK
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryillusionoff battler:req
|
.macro tryillusionoff battler:req
|
||||||
various \battler, VARIOUS_TRY_ILLUSION_OFF
|
various \battler, VARIOUS_TRY_ILLUSION_OFF
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro spriteignore0hp val:req
|
.macro spriteignore0hp val:req
|
||||||
various BS_ATTACKER, VARIOUS_SET_SPRITEIGNORE0HP
|
various BS_ATTACKER, VARIOUS_SET_SPRITEIGNORE0HP
|
||||||
.byte \val
|
.byte \val
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro getstatvalue battler:req, statId:req
|
.macro getstatvalue battler:req, statId:req
|
||||||
various \battler, VARIOUS_GET_STAT_VALUE
|
various \battler, VARIOUS_GET_STAT_VALUE
|
||||||
.byte \statId
|
.byte \statId
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpiffullhp battler:req, ptr:req
|
.macro jumpiffullhp battler:req, ptr:req
|
||||||
various \battler, VARIOUS_JUMP_IF_FULL_HP
|
various \battler, VARIOUS_JUMP_IF_FULL_HP
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro losetype battler:req, type:req
|
.macro losetype battler:req, type:req
|
||||||
various \battler, VARIOUS_LOSE_TYPE
|
various \battler, VARIOUS_LOSE_TYPE
|
||||||
.byte \type
|
.byte \type
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tryfriskmsg battler:req
|
.macro tryfriskmsg battler:req
|
||||||
various \battler, VARIOUS_TRY_FRISK
|
various \battler, VARIOUS_TRY_FRISK
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifshieldsdown battler:req, ptr:req
|
.macro jumpifshieldsdown battler:req, ptr:req
|
||||||
various \battler, VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED
|
various \battler, VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
@ -1725,32 +1725,32 @@
|
|||||||
.byte \target
|
.byte \target
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro trysetfairylock ptr:req
|
.macro trysetfairylock ptr:req
|
||||||
various BS_ATTACKER, VARIOUS_TRY_FAIRY_LOCK
|
various BS_ATTACKER, VARIOUS_TRY_FAIRY_LOCK
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifnoally battler:req, ptr:req
|
.macro jumpifnoally battler:req, ptr:req
|
||||||
various \battler, VARIOUS_JUMP_IF_NO_ALLY
|
various \battler, VARIOUS_JUMP_IF_NO_ALLY
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifnoholdeffect battler:req, holdEffet:req, ptr:req
|
.macro jumpifnoholdeffect battler:req, holdEffet:req, ptr:req
|
||||||
various \battler, VARIOUS_JUMP_IF_NO_HOLD_EFFECT
|
various \battler, VARIOUS_JUMP_IF_NO_HOLD_EFFECT
|
||||||
.byte \holdEffet
|
.byte \holdEffet
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro infatuatewithbattler battler1:req, battler2:req
|
.macro infatuatewithbattler battler1:req, battler2:req
|
||||||
various \battler1, VARIOUS_INFATUATE_WITH_BATTLER
|
various \battler1, VARIOUS_INFATUATE_WITH_BATTLER
|
||||||
.byte \battler2
|
.byte \battler2
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setlastuseditem battler:req
|
.macro setlastuseditem battler:req
|
||||||
various \battler, VARIOUS_SET_LAST_USED_ITEM
|
various \battler, VARIOUS_SET_LAST_USED_ITEM
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifabsent battler:req, ptr:req
|
.macro jumpifabsent battler:req, ptr:req
|
||||||
various \battler, VARIOUS_JUMP_IF_ABSENT
|
various \battler, VARIOUS_JUMP_IF_ABSENT
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
@ -1764,61 +1764,65 @@
|
|||||||
various BS_ATTACKER, VARIOUS_TOTEM_BOOST
|
various BS_ATTACKER, VARIOUS_TOTEM_BOOST
|
||||||
.4byte \ptr
|
.4byte \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro tryactivategrimneigh, battler:req
|
||||||
|
various \battler, VARIOUS_TRY_ACTIVATE_GRIM_NEIGH
|
||||||
|
.endm
|
||||||
|
|
||||||
.macro setzeffect
|
.macro setzeffect
|
||||||
various BS_ATTACKER, VARIOUS_SET_Z_EFFECT
|
various BS_ATTACKER, VARIOUS_SET_Z_EFFECT
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ helpful macros
|
@ helpful macros
|
||||||
.macro setstatchanger stat:req, stages:req, down:req
|
.macro setstatchanger stat:req, stages:req, down:req
|
||||||
setbyte sSTATCHANGER \stat | \stages << 3 | \down << 7
|
setbyte sSTATCHANGER \stat | \stages << 3 | \down << 7
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setmoveeffect effect:req
|
.macro setmoveeffect effect:req
|
||||||
sethword sMOVE_EFFECT \effect
|
sethword sMOVE_EFFECT \effect
|
||||||
sethword sSAVED_MOVE_EFFECT \effect
|
sethword sSAVED_MOVE_EFFECT \effect
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro chosenstatus1animation battler:req, status:req
|
.macro chosenstatus1animation battler:req, status:req
|
||||||
chosenstatusanimation \battler, 0x0, \status
|
chosenstatusanimation \battler, 0x0, \status
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro chosenstatus2animation battler:req, status:req
|
.macro chosenstatus2animation battler:req, status:req
|
||||||
chosenstatusanimation \battler, 0x1, \status
|
chosenstatusanimation \battler, 0x1, \status
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro sethword dst:req, value:req
|
.macro sethword dst:req, value:req
|
||||||
setbyte \dst, (\value) & 0xFF
|
setbyte \dst, (\value) & 0xFF
|
||||||
setbyte \dst + 1, ((\value) >> 8) & 0xFF
|
setbyte \dst + 1, ((\value) >> 8) & 0xFF
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setword dst:req, value:req
|
.macro setword dst:req, value:req
|
||||||
setbyte \dst, (\value) & 0xFF
|
setbyte \dst, (\value) & 0xFF
|
||||||
setbyte \dst + 1, ((\value) >> 8) & 0xFF
|
setbyte \dst + 1, ((\value) >> 8) & 0xFF
|
||||||
setbyte \dst + 2, ((\value) >> 16) & 0xFF
|
setbyte \dst + 2, ((\value) >> 16) & 0xFF
|
||||||
setbyte \dst + 3, ((\value) >> 24) & 0xFF
|
setbyte \dst + 3, ((\value) >> 24) & 0xFF
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro copybyte dst:req, src:req
|
.macro copybyte dst:req, src:req
|
||||||
copyarray \dst, \src, 0x1
|
copyarray \dst, \src, 0x1
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro copyhword dst:req, src:req
|
.macro copyhword dst:req, src:req
|
||||||
copyarray \dst, \src, 0x2
|
copyarray \dst, \src, 0x2
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro copyword dst:req, src:req
|
.macro copyword dst:req, src:req
|
||||||
copyarray \dst, \src, 0x4
|
copyarray \dst, \src, 0x4
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifbytenotequal byte1:req, byte2:req, jumpptr:req
|
.macro jumpifbytenotequal byte1:req, byte2:req, jumpptr:req
|
||||||
jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr
|
jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifbyteequal byte1:req, byte2:req, jumpptr:req
|
.macro jumpifbyteequal byte1:req, byte2:req, jumpptr:req
|
||||||
jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr
|
jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifmove move:req, jumpptr:req
|
.macro jumpifmove move:req, jumpptr:req
|
||||||
jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpptr
|
jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpptr
|
||||||
.endm
|
.endm
|
||||||
@ -1834,39 +1838,39 @@
|
|||||||
.macro jumpifstatus3 battler, status:req, jumpptr:req
|
.macro jumpifstatus3 battler, status:req, jumpptr:req
|
||||||
jumpifstatus3condition \battler, \status, 0x0, \jumpptr
|
jumpifstatus3condition \battler, \status, 0x0, \jumpptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifnostatus3 battler:req, status:req, jumpptr:req
|
.macro jumpifnostatus3 battler:req, status:req, jumpptr:req
|
||||||
jumpifstatus3condition \battler, \status, 0x1, \jumpptr
|
jumpifstatus3condition \battler, \status, 0x1, \jumpptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifmovehadnoeffect jumpptr:req
|
.macro jumpifmovehadnoeffect jumpptr:req
|
||||||
jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr
|
jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifbattletype flags:req, jumpptr:req
|
.macro jumpifbattletype flags:req, jumpptr:req
|
||||||
jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
|
jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifnotbattletype flags:req, jumpptr:req
|
.macro jumpifnotbattletype flags:req, jumpptr:req
|
||||||
jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
|
jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro dmg_1_8_targethp
|
.macro dmg_1_8_targethp
|
||||||
manipulatedamage DMG_1_8_TARGET_HP
|
manipulatedamage DMG_1_8_TARGET_HP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro dmgtomaxattackerhp
|
.macro dmgtomaxattackerhp
|
||||||
manipulatedamage DMG_FULL_ATTACKER_HP
|
manipulatedamage DMG_FULL_ATTACKER_HP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro dmgtocurrattackerhp
|
.macro dmgtocurrattackerhp
|
||||||
manipulatedamage DMG_CURR_ATTACKER_HP
|
manipulatedamage DMG_CURR_ATTACKER_HP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro dmg_1_2_attackerhp
|
.macro dmg_1_2_attackerhp
|
||||||
manipulatedamage DMG_1_2_ATTACKER_HP
|
manipulatedamage DMG_1_2_ATTACKER_HP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifflowerveil jumpptr:req
|
.macro jumpifflowerveil jumpptr:req
|
||||||
jumpifnottype BS_TARGET, TYPE_GRASS, 1f
|
jumpifnottype BS_TARGET, TYPE_GRASS, 1f
|
||||||
jumpifability BS_TARGET_SIDE, ABILITY_FLOWER_VEIL, \jumpptr
|
jumpifability BS_TARGET_SIDE, ABILITY_FLOWER_VEIL, \jumpptr
|
||||||
@ -1887,7 +1891,7 @@
|
|||||||
jumpifability BS_TARGET, ABILITY_LEAF_GUARD, \jumpptr
|
jumpifability BS_TARGET, ABILITY_LEAF_GUARD, \jumpptr
|
||||||
1:
|
1:
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifsafeguard jumpptr:req
|
.macro jumpifsafeguard jumpptr:req
|
||||||
jumpifability BS_ATTACKER, ABILITY_INFILTRATOR, 1f
|
jumpifability BS_ATTACKER, ABILITY_INFILTRATOR, 1f
|
||||||
jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, \jumpptr
|
jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, \jumpptr
|
||||||
|
|||||||
@ -854,10 +854,6 @@ gBattleAnims_General::
|
|||||||
.4byte General_IngrainHeal @ B_ANIM_INGRAIN_HEAL
|
.4byte General_IngrainHeal @ B_ANIM_INGRAIN_HEAL
|
||||||
.4byte General_WishHeal @ B_ANIM_WISH_HEAL
|
.4byte General_WishHeal @ B_ANIM_WISH_HEAL
|
||||||
.4byte General_MegaEvolution @ B_ANIM_MEGA_EVOLUTION
|
.4byte General_MegaEvolution @ B_ANIM_MEGA_EVOLUTION
|
||||||
.4byte General_TerrainMisty @ B_ANIM_TERRAIN_MISTY
|
|
||||||
.4byte General_TerrainGrassy @ B_ANIM_TERRAIN_GRASSY
|
|
||||||
.4byte General_TerrainElectric @ B_ANIM_TERRAIN_ELECTRIC
|
|
||||||
.4byte General_TerrainPsychic @ B_ANIM_TERRAIN_PSYCHIC
|
|
||||||
.4byte General_IllusionOff @ B_ANIM_ILLUSION_OFF
|
.4byte General_IllusionOff @ B_ANIM_ILLUSION_OFF
|
||||||
.4byte General_FormChange @ B_ANIM_FORM_CHANGE
|
.4byte General_FormChange @ B_ANIM_FORM_CHANGE
|
||||||
.4byte General_SlideOffScreen @ B_ANIM_SLIDE_OFFSCREEN
|
.4byte General_SlideOffScreen @ B_ANIM_SLIDE_OFFSCREEN
|
||||||
@ -8516,8 +8512,6 @@ Move_GRASSY_TERRAIN::
|
|||||||
delay 4
|
delay 4
|
||||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 4, 0, RGB(31, 24, 31)
|
createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 4, 0, RGB(31, 24, 31)
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
restorebg
|
|
||||||
waitbgfadein
|
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_MISTY_TERRAIN::
|
Move_MISTY_TERRAIN::
|
||||||
@ -8556,8 +8550,6 @@ Move_MISTY_TERRAIN::
|
|||||||
delay 4
|
delay 4
|
||||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 7, 0, RGB(31, 24, 31)
|
createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 7, 0, RGB(31, 24, 31)
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
restorebg
|
|
||||||
waitbgfadein
|
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_ELECTRIFY::
|
Move_ELECTRIFY::
|
||||||
@ -9441,8 +9433,6 @@ Move_ELECTRIC_TERRAIN::
|
|||||||
delay 2
|
delay 2
|
||||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 4, 0, RGB(28, 28, 0)
|
createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 4, 0, RGB(28, 28, 0)
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
restorebg
|
|
||||||
waitbgfadein
|
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_DAZZLING_GLEAM::
|
Move_DAZZLING_GLEAM::
|
||||||
@ -11098,8 +11088,6 @@ Move_PSYCHIC_TERRAIN::
|
|||||||
delay 4
|
delay 4
|
||||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 4, 0, RGB(27, 0, 13)
|
createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_BG, 3, 4, 0, RGB(27, 0, 13)
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
restorebg
|
|
||||||
waitbgfadein
|
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_LUNGE::
|
Move_LUNGE::
|
||||||
@ -24422,18 +24410,6 @@ MegaEvolutionParticles:
|
|||||||
delay 3
|
delay 3
|
||||||
return
|
return
|
||||||
|
|
||||||
General_TerrainMisty:
|
|
||||||
end
|
|
||||||
|
|
||||||
General_TerrainGrassy:
|
|
||||||
end
|
|
||||||
|
|
||||||
General_TerrainElectric:
|
|
||||||
end
|
|
||||||
|
|
||||||
General_TerrainPsychic:
|
|
||||||
end
|
|
||||||
|
|
||||||
General_RestoreBg:
|
General_RestoreBg:
|
||||||
restorebg
|
restorebg
|
||||||
waitbgfadein
|
waitbgfadein
|
||||||
|
|||||||
@ -1522,6 +1522,7 @@ BattleScript_EffectPsychicTerrain:
|
|||||||
waitanimation
|
waitanimation
|
||||||
printfromtable gTerrainStringIds
|
printfromtable gTerrainStringIds
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
|
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG, NULL
|
||||||
goto BattleScript_MoveEnd
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
BattleScript_EffectTopsyTurvy:
|
BattleScript_EffectTopsyTurvy:
|
||||||
@ -4967,8 +4968,9 @@ BattleScript_FaintTarget::
|
|||||||
tryactivatefellstinger BS_ATTACKER
|
tryactivatefellstinger BS_ATTACKER
|
||||||
tryactivatesoulheart
|
tryactivatesoulheart
|
||||||
tryactivatereceiver BS_TARGET
|
tryactivatereceiver BS_TARGET
|
||||||
tryactivatemoxie BS_ATTACKER
|
tryactivatemoxie BS_ATTACKER @ and chilling neigh, as one ice rider
|
||||||
tryactivatebeastboost BS_ATTACKER
|
tryactivatebeastboost BS_ATTACKER
|
||||||
|
tryactivategrimneigh BS_ATTACKER @ and as one shadow rider
|
||||||
trytrainerslidefirstdownmsg BS_TARGET
|
trytrainerslidefirstdownmsg BS_TARGET
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -5405,6 +5407,12 @@ BattleScript_OverworldWeatherStarts::
|
|||||||
playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL
|
playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL
|
||||||
end3
|
end3
|
||||||
|
|
||||||
|
BattleScript_OverworldTerrain::
|
||||||
|
printfromtable gTerrainStringIds
|
||||||
|
waitmessage 0x40
|
||||||
|
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG, NULL
|
||||||
|
end3
|
||||||
|
|
||||||
BattleScript_SideStatusWoreOff::
|
BattleScript_SideStatusWoreOff::
|
||||||
printstring STRINGID_PKMNSXWOREOFF
|
printstring STRINGID_PKMNSXWOREOFF
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
@ -6629,6 +6637,7 @@ BattleScript_AbilityPopUp:
|
|||||||
showabilitypopup BS_ABILITY_BATTLER
|
showabilitypopup BS_ABILITY_BATTLER
|
||||||
recordability BS_ABILITY_BATTLER
|
recordability BS_ABILITY_BATTLER
|
||||||
pause 40
|
pause 40
|
||||||
|
sethword sABILITY_OVERWRITE, 0
|
||||||
return
|
return
|
||||||
|
|
||||||
BattleScript_SpeedBoostActivates::
|
BattleScript_SpeedBoostActivates::
|
||||||
@ -6889,32 +6898,32 @@ BattleScript_ElectricSurgeActivates::
|
|||||||
pause 0x20
|
pause 0x20
|
||||||
call BattleScript_AbilityPopUp
|
call BattleScript_AbilityPopUp
|
||||||
printstring STRINGID_TERRAINBECOMESELECTRIC
|
printstring STRINGID_TERRAINBECOMESELECTRIC
|
||||||
waitstate
|
waitmessage 0x40
|
||||||
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_ELECTRIC, NULL
|
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG, NULL
|
||||||
end3
|
end3
|
||||||
|
|
||||||
BattleScript_MistySurgeActivates::
|
BattleScript_MistySurgeActivates::
|
||||||
pause 0x20
|
pause 0x20
|
||||||
call BattleScript_AbilityPopUp
|
call BattleScript_AbilityPopUp
|
||||||
printstring STRINGID_TERRAINBECOMESMISTY
|
printstring STRINGID_TERRAINBECOMESMISTY
|
||||||
waitstate
|
waitmessage 0x40
|
||||||
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_MISTY, NULL
|
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG, NULL
|
||||||
end3
|
end3
|
||||||
|
|
||||||
BattleScript_GrassySurgeActivates::
|
BattleScript_GrassySurgeActivates::
|
||||||
pause 0x20
|
pause 0x20
|
||||||
call BattleScript_AbilityPopUp
|
call BattleScript_AbilityPopUp
|
||||||
printstring STRINGID_TERRAINBECOMESGRASSY
|
printstring STRINGID_TERRAINBECOMESGRASSY
|
||||||
waitstate
|
waitmessage 0x40
|
||||||
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_GRASSY, NULL
|
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG, NULL
|
||||||
end3
|
end3
|
||||||
|
|
||||||
BattleScript_PsychicSurgeActivates::
|
BattleScript_PsychicSurgeActivates::
|
||||||
pause 0x20
|
pause 0x20
|
||||||
call BattleScript_AbilityPopUp
|
call BattleScript_AbilityPopUp
|
||||||
printstring STRINGID_TERRAINBECOMESPSYCHIC
|
printstring STRINGID_TERRAINBECOMESPSYCHIC
|
||||||
waitstate
|
waitmessage 0x40
|
||||||
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_PSYCHIC, NULL
|
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG, NULL
|
||||||
end3
|
end3
|
||||||
|
|
||||||
BattleScript_BadDreamsActivates::
|
BattleScript_BadDreamsActivates::
|
||||||
@ -7102,7 +7111,9 @@ BattleScript_GrassyTerrainLoopIncrement::
|
|||||||
jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_GrassyTerrainLoop
|
jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_GrassyTerrainLoop
|
||||||
BattleScript_GrassyTerrainLoopEnd::
|
BattleScript_GrassyTerrainLoopEnd::
|
||||||
bicword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
|
bicword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
|
||||||
|
jumpifword CMP_COMMON_BITS, gFieldStatuses, STATUS_FIELD_TERRAIN_PERMANENT, BattleScript_GrassyTerrainHealEnd
|
||||||
jumpifbyte CMP_EQUAL, gFieldTimers + 5, 0x0, BattleScript_GrassyTerrainEnds
|
jumpifbyte CMP_EQUAL, gFieldTimers + 5, 0x0, BattleScript_GrassyTerrainEnds
|
||||||
|
BattleScript_GrassyTerrainHealEnd:
|
||||||
end2
|
end2
|
||||||
|
|
||||||
BattleScript_AbilityNoSpecificStatLoss::
|
BattleScript_AbilityNoSpecificStatLoss::
|
||||||
@ -7220,6 +7231,16 @@ BattleScript_WeakArmorSpeedAnim:
|
|||||||
BattleScript_WeakArmorActivatesEnd:
|
BattleScript_WeakArmorActivatesEnd:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
BattleScript_RaiseStatOnFaintingTarget::
|
||||||
|
copybyte gBattlerAbility, gBattlerAttacker
|
||||||
|
call BattleScript_AbilityPopUp
|
||||||
|
setgraphicalstatchangevalues
|
||||||
|
playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||||
|
waitanimation
|
||||||
|
printstring STRINGID_LASTABILITYRAISEDSTAT
|
||||||
|
waitmessage 0x40
|
||||||
|
return
|
||||||
|
|
||||||
BattleScript_AttackerAbilityStatRaise::
|
BattleScript_AttackerAbilityStatRaise::
|
||||||
copybyte gBattlerAbility, gBattlerAttacker
|
copybyte gBattlerAbility, gBattlerAttacker
|
||||||
call BattleScript_AbilityPopUp
|
call BattleScript_AbilityPopUp
|
||||||
@ -7249,6 +7270,18 @@ BattleScript_SwitchInAbilityMsg::
|
|||||||
printfromtable gSwitchInAbilityStringIds
|
printfromtable gSwitchInAbilityStringIds
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
end3
|
end3
|
||||||
|
|
||||||
|
BattleScript_ActivateAsOne::
|
||||||
|
call BattleScript_AbilityPopUp
|
||||||
|
printfromtable gSwitchInAbilityStringIds
|
||||||
|
waitmessage 0x40
|
||||||
|
@ show unnerve
|
||||||
|
sethword sABILITY_OVERWRITE, ABILITY_UNNERVE
|
||||||
|
setbyte cMULTISTRING_CHOOSER, MULTI_SWITCHIN_UNNERVE
|
||||||
|
call BattleScript_AbilityPopUp
|
||||||
|
printfromtable gSwitchInAbilityStringIds
|
||||||
|
waitmessage 0x40
|
||||||
|
end3
|
||||||
|
|
||||||
BattleScript_FriskMsgWithPopup::
|
BattleScript_FriskMsgWithPopup::
|
||||||
copybyte gBattlerAbility, gBattlerAttacker
|
copybyte gBattlerAbility, gBattlerAttacker
|
||||||
|
|||||||
@ -213,7 +213,7 @@ BattleScript_ActionWallyThrow:
|
|||||||
printstring STRINGID_YOUTHROWABALLNOWRIGHT
|
printstring STRINGID_YOUTHROWABALLNOWRIGHT
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
end2
|
end2
|
||||||
|
|
||||||
BattleScript_TrainerSlideMsgRet::
|
BattleScript_TrainerSlideMsgRet::
|
||||||
handletrainerslidemsg BS_SCRIPTING, 0
|
handletrainerslidemsg BS_SCRIPTING, 0
|
||||||
trainerslidein 1
|
trainerslidein 1
|
||||||
@ -223,7 +223,7 @@ BattleScript_TrainerSlideMsgRet::
|
|||||||
handletrainerslidemsg BS_SCRIPTING, 2
|
handletrainerslidemsg BS_SCRIPTING, 2
|
||||||
waitstate
|
waitstate
|
||||||
return
|
return
|
||||||
|
|
||||||
BattleScript_TrainerSlideMsgEnd2::
|
BattleScript_TrainerSlideMsgEnd2::
|
||||||
call BattleScript_TrainerSlideMsgRet
|
call BattleScript_TrainerSlideMsgRet
|
||||||
end2
|
end2
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
#include "constants/apprentice.h"
|
#include "constants/apprentice.h"
|
||||||
#include "constants/battle.h"
|
#include "constants/battle.h"
|
||||||
#include "constants/battle_arena.h"
|
#include "constants/battle_arena.h"
|
||||||
|
#include "constants/battle_config.h"
|
||||||
#include "constants/battle_dome.h"
|
#include "constants/battle_dome.h"
|
||||||
#include "constants/battle_factory.h"
|
#include "constants/battle_factory.h"
|
||||||
#include "constants/battle_frontier.h"
|
#include "constants/battle_frontier.h"
|
||||||
|
|||||||
@ -522,6 +522,7 @@ struct BattleStruct
|
|||||||
u8 wishPerishSongState;
|
u8 wishPerishSongState;
|
||||||
u8 wishPerishSongBattlerId;
|
u8 wishPerishSongBattlerId;
|
||||||
bool8 overworldWeatherDone;
|
bool8 overworldWeatherDone;
|
||||||
|
bool8 terrainDone;
|
||||||
u8 atkCancellerTracker;
|
u8 atkCancellerTracker;
|
||||||
struct BattleTvMovePoints tvMovePoints;
|
struct BattleTvMovePoints tvMovePoints;
|
||||||
struct BattleTv tv;
|
struct BattleTv tv;
|
||||||
@ -633,6 +634,7 @@ struct BattleScripting
|
|||||||
u16 multihitMoveEffect;
|
u16 multihitMoveEffect;
|
||||||
u8 illusionNickHack; // To properly display nick in STRINGID_ENEMYABOUTTOSWITCHPKMN.
|
u8 illusionNickHack; // To properly display nick in STRINGID_ENEMYABOUTTOSWITCHPKMN.
|
||||||
bool8 fixedPopup; // force ability popup to stick until manually called back
|
bool8 fixedPopup; // force ability popup to stick until manually called back
|
||||||
|
u16 abilityPopupOverwrite;
|
||||||
};
|
};
|
||||||
|
|
||||||
// rom_80A5C6C
|
// rom_80A5C6C
|
||||||
|
|||||||
@ -26,6 +26,7 @@ u32 IsFlowerVeilProtected(u32 battler);
|
|||||||
u32 IsLeafGuardProtected(u32 battler);
|
u32 IsLeafGuardProtected(u32 battler);
|
||||||
bool32 IsShieldsDownProtected(u32 battler);
|
bool32 IsShieldsDownProtected(u32 battler);
|
||||||
u32 IsAbilityStatusProtected(u32 battler);
|
u32 IsAbilityStatusProtected(u32 battler);
|
||||||
|
bool32 TryResetBattlerStatChanges(u8 battler);
|
||||||
|
|
||||||
extern void (* const gBattleScriptingCommandsTable[])(void);
|
extern void (* const gBattleScriptingCommandsTable[])(void);
|
||||||
extern const u8 gBattlePalaceNatureToMoveGroupLikelihood[NUM_NATURES][4];
|
extern const u8 gBattlePalaceNatureToMoveGroupLikelihood[NUM_NATURES][4];
|
||||||
|
|||||||
@ -48,6 +48,7 @@ extern const u8 BattleScript_SandStormHailEnds[];
|
|||||||
extern const u8 BattleScript_SunlightContinues[];
|
extern const u8 BattleScript_SunlightContinues[];
|
||||||
extern const u8 BattleScript_SunlightFaded[];
|
extern const u8 BattleScript_SunlightFaded[];
|
||||||
extern const u8 BattleScript_OverworldWeatherStarts[];
|
extern const u8 BattleScript_OverworldWeatherStarts[];
|
||||||
|
extern const u8 BattleScript_OverworldTerrain[];
|
||||||
extern const u8 BattleScript_SideStatusWoreOff[];
|
extern const u8 BattleScript_SideStatusWoreOff[];
|
||||||
extern const u8 BattleScript_SafeguardProtected[];
|
extern const u8 BattleScript_SafeguardProtected[];
|
||||||
extern const u8 BattleScript_SafeguardEnds[];
|
extern const u8 BattleScript_SafeguardEnds[];
|
||||||
@ -357,6 +358,9 @@ extern const u8 BattleScript_CottonDownActivates[];
|
|||||||
extern const u8 BattleScript_BallFetch[];
|
extern const u8 BattleScript_BallFetch[];
|
||||||
extern const u8 BattleScript_SandSpitActivates[];
|
extern const u8 BattleScript_SandSpitActivates[];
|
||||||
extern const u8 BattleScript_PerishBodyActivates[];
|
extern const u8 BattleScript_PerishBodyActivates[];
|
||||||
|
extern const u8 BattleScript_ActivateAsOne[];
|
||||||
|
extern const u8 BattleScript_RaiseStatOnFaintingTarget[];
|
||||||
|
|
||||||
// zmoves
|
// zmoves
|
||||||
extern const u8 BattleScript_ZMoveActivateDamaging[];
|
extern const u8 BattleScript_ZMoveActivateDamaging[];
|
||||||
extern const u8 BattleScript_ZMoveActivateStatus[];
|
extern const u8 BattleScript_ZMoveActivateStatus[];
|
||||||
@ -366,5 +370,4 @@ extern const u8 BattleScript_StatUpZMove[];
|
|||||||
extern const u8 BattleScript_HealReplacementZMove[];
|
extern const u8 BattleScript_HealReplacementZMove[];
|
||||||
extern const u8 BattleScript_EffectExtremeEvoboost[];
|
extern const u8 BattleScript_EffectExtremeEvoboost[];
|
||||||
|
|
||||||
|
|
||||||
#endif // GUARD_BATTLE_SCRIPTS_H
|
#endif // GUARD_BATTLE_SCRIPTS_H
|
||||||
|
|||||||
@ -23,6 +23,7 @@
|
|||||||
#define ABILITYEFFECT_TRACE1 0xC
|
#define ABILITYEFFECT_TRACE1 0xC
|
||||||
#define ABILITYEFFECT_TRACE2 0xD
|
#define ABILITYEFFECT_TRACE2 0xD
|
||||||
#define ABILITYEFFECT_MOVE_END_OTHER 0xE
|
#define ABILITYEFFECT_MOVE_END_OTHER 0xE
|
||||||
|
#define ABILITYEFFECT_SWITCH_IN_TERRAIN 0xFE
|
||||||
#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF
|
#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF
|
||||||
|
|
||||||
#define ITEMEFFECT_ON_SWITCH_IN 0x0
|
#define ITEMEFFECT_ON_SWITCH_IN 0x0
|
||||||
|
|||||||
@ -221,18 +221,19 @@
|
|||||||
#define SIDE_STATUS_MAT_BLOCK (1 << 21)
|
#define SIDE_STATUS_MAT_BLOCK (1 << 21)
|
||||||
|
|
||||||
// Field affecting statuses.
|
// Field affecting statuses.
|
||||||
#define STATUS_FIELD_MAGIC_ROOM 0x1
|
#define STATUS_FIELD_MAGIC_ROOM (1 << 0)
|
||||||
#define STATUS_FIELD_TRICK_ROOM 0x2
|
#define STATUS_FIELD_TRICK_ROOM (1 << 1)
|
||||||
#define STATUS_FIELD_WONDER_ROOM 0x4
|
#define STATUS_FIELD_WONDER_ROOM (1 << 2)
|
||||||
#define STATUS_FIELD_MUDSPORT 0x8
|
#define STATUS_FIELD_MUDSPORT (1 << 3)
|
||||||
#define STATUS_FIELD_WATERSPORT 0x10
|
#define STATUS_FIELD_WATERSPORT (1 << 4)
|
||||||
#define STATUS_FIELD_GRAVITY 0x20
|
#define STATUS_FIELD_GRAVITY (1 << 5)
|
||||||
#define STATUS_FIELD_GRASSY_TERRAIN 0x40
|
#define STATUS_FIELD_GRASSY_TERRAIN (1 << 6)
|
||||||
#define STATUS_FIELD_MISTY_TERRAIN 0x80
|
#define STATUS_FIELD_MISTY_TERRAIN (1 << 7)
|
||||||
#define STATUS_FIELD_ELECTRIC_TERRAIN 0x100
|
#define STATUS_FIELD_ELECTRIC_TERRAIN (1 << 8)
|
||||||
#define STATUS_FIELD_PSYCHIC_TERRAIN 0x200
|
#define STATUS_FIELD_PSYCHIC_TERRAIN (1 << 9)
|
||||||
#define STATUS_FIELD_ION_DELUGE 0x400
|
#define STATUS_FIELD_ION_DELUGE (1 << 10)
|
||||||
#define STATUS_FIELD_FAIRY_LOCK 0x800
|
#define STATUS_FIELD_FAIRY_LOCK (1 << 11)
|
||||||
|
#define STATUS_FIELD_TERRAIN_PERMANENT (1 << 12) // Overworld thunderstorm generates electric terrain
|
||||||
|
|
||||||
#define STATUS_TERRAIN_ANY (STATUS_FIELD_GRASSY_TERRAIN | STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_PSYCHIC_TERRAIN)
|
#define STATUS_TERRAIN_ANY (STATUS_FIELD_GRASSY_TERRAIN | STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_PSYCHIC_TERRAIN)
|
||||||
|
|
||||||
|
|||||||
@ -518,16 +518,12 @@
|
|||||||
#define B_ANIM_INGRAIN_HEAL 21
|
#define B_ANIM_INGRAIN_HEAL 21
|
||||||
#define B_ANIM_WISH_HEAL 22
|
#define B_ANIM_WISH_HEAL 22
|
||||||
#define B_ANIM_MEGA_EVOLUTION 23
|
#define B_ANIM_MEGA_EVOLUTION 23
|
||||||
#define B_ANIM_TERRAIN_MISTY 24
|
#define B_ANIM_ILLUSION_OFF 24
|
||||||
#define B_ANIM_TERRAIN_GRASSY 25
|
#define B_ANIM_FORM_CHANGE 25
|
||||||
#define B_ANIM_TERRAIN_ELECTRIC 26
|
#define B_ANIM_SLIDE_OFFSCREEN 26 // for Emergency Exit
|
||||||
#define B_ANIM_TERRAIN_PSYCHIC 27
|
#define B_ANIM_RESTORE_BG 27 // for Terrain Endings
|
||||||
#define B_ANIM_ILLUSION_OFF 28
|
#define B_ANIM_TOTEM_FLARE 28 // Totem boosts aura flare
|
||||||
#define B_ANIM_FORM_CHANGE 29
|
#define B_ANIM_ZMOVE_ACTIVATE 29 // Using Z Moves
|
||||||
#define B_ANIM_SLIDE_OFFSCREEN 30 // for Emergency Exit
|
|
||||||
#define B_ANIM_RESTORE_BG 31 // for Terrain Endings
|
|
||||||
#define B_ANIM_TOTEM_FLARE 32 // Totem boosts aura flare
|
|
||||||
#define B_ANIM_ZMOVE_ACTIVATE 33 // Using Z Moves
|
|
||||||
|
|
||||||
// special animations table (gBattleAnims_Special)
|
// special animations table (gBattleAnims_Special)
|
||||||
#define B_ANIM_LVL_UP 0
|
#define B_ANIM_LVL_UP 0
|
||||||
|
|||||||
@ -147,6 +147,7 @@
|
|||||||
#define B_PP_REDUCED_BY_SPITE GEN_6 // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5.
|
#define B_PP_REDUCED_BY_SPITE GEN_6 // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5.
|
||||||
#define B_CAN_SPITE_FAIL GEN_6 // In Gen4+, Spite can no longer fail if the foe's last move only has 1 remaining PP.
|
#define B_CAN_SPITE_FAIL GEN_6 // In Gen4+, Spite can no longer fail if the foe's last move only has 1 remaining PP.
|
||||||
#define B_CRASH_IF_TARGET_IMMUNE GEN_6 // In Gen4+, The user of Jump Kick or Hi Jump Kick will "keep going and crash" if it attacks a target that is immune to the move.
|
#define B_CRASH_IF_TARGET_IMMUNE GEN_6 // In Gen4+, The user of Jump Kick or Hi Jump Kick will "keep going and crash" if it attacks a target that is immune to the move.
|
||||||
|
#define B_TAILWIND_TIMER GEN_5 // In Gen5+, Tailwind lasts 4 turns instead of 3.
|
||||||
|
|
||||||
// Ability settings
|
// Ability settings
|
||||||
#define B_ABILITY_WEATHER GEN_6 // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move.
|
#define B_ABILITY_WEATHER GEN_6 // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move.
|
||||||
@ -169,6 +170,11 @@
|
|||||||
#define B_FLAG_INVERSE_BATTLE 0 // If this flag is set, the battle's type effectiveness are inversed. For example, fire is super effective against water.
|
#define B_FLAG_INVERSE_BATTLE 0 // If this flag is set, the battle's type effectiveness are inversed. For example, fire is super effective against water.
|
||||||
#define B_FLAG_FORCE_DOUBLE_WILD 0 // If this flag is set, all land and surfing wild battles will be double battles.
|
#define B_FLAG_FORCE_DOUBLE_WILD 0 // If this flag is set, all land and surfing wild battles will be double battles.
|
||||||
|
|
||||||
|
// Var Settings
|
||||||
|
// To use the following features in scripting, replace the 0s with the var ID you're assigning it to.
|
||||||
|
// Eg: Replace with VAR_UNUSED_0x40F7 so you can use VAR_TERRAIN for that feature.
|
||||||
|
#define VAR_TERRAIN 0 // If this var has a value, assigning a STATUS_FIELD_xx_TERRAIN to it before battle causes the battle to start with that terrain active
|
||||||
|
|
||||||
// Interface settings
|
// Interface settings
|
||||||
#define B_ABILITY_POP_UP TRUE // In Gen5+, the Pokémon abilities are displayed in a pop-up, when they activate in battle.
|
#define B_ABILITY_POP_UP TRUE // In Gen5+, the Pokémon abilities are displayed in a pop-up, when they activate in battle.
|
||||||
#define B_FAST_INTRO TRUE // If set to TRUE, battle intro texts print at the same time as animation of a Pokémon, as opposing to waiting for the animation to end.
|
#define B_FAST_INTRO TRUE // If set to TRUE, battle intro texts print at the same time as animation of a Pokémon, as opposing to waiting for the animation to end.
|
||||||
@ -185,6 +191,7 @@
|
|||||||
#define B_PARALYZE_ELECTRIC GEN_6 // In Gen6+, Electric-type Pokémon can't be paralyzed.
|
#define B_PARALYZE_ELECTRIC GEN_6 // In Gen6+, Electric-type Pokémon can't be paralyzed.
|
||||||
#define B_POWDER_GRASS GEN_6 // In Gen6+, Grass-type Pokémon are immune to powder and spore moves.
|
#define B_POWDER_GRASS GEN_6 // In Gen6+, Grass-type Pokémon are immune to powder and spore moves.
|
||||||
#define B_STEEL_RESISTANCES GEN_6 // In Gen6+, Steel-type Pokémon are no longer resistant to Dark and Ghost moves.
|
#define B_STEEL_RESISTANCES GEN_6 // In Gen6+, Steel-type Pokémon are no longer resistant to Dark and Ghost moves.
|
||||||
|
#define B_THUNDERSTORM_TERRAIN TRUE // If TRUE, overworld Thunderstorm generates Rain and Electric Terrain as in Gen 8.
|
||||||
|
|
||||||
// Animation Settings
|
// Animation Settings
|
||||||
#define B_NEW_SWORD_PARTICLE FALSE // If set to TRUE, it updates Swords Dance's particle.
|
#define B_NEW_SWORD_PARTICLE FALSE // If set to TRUE, it updates Swords Dance's particle.
|
||||||
|
|||||||
@ -36,6 +36,7 @@
|
|||||||
#define sMULTIHIT_EFFECT gBattleScripting + 0x30
|
#define sMULTIHIT_EFFECT gBattleScripting + 0x30
|
||||||
#define sILLUSION_NICK_HACK gBattleScripting + 0x32
|
#define sILLUSION_NICK_HACK gBattleScripting + 0x32
|
||||||
#define sFIXED_ABILITY_POPUP gBattleScripting + 0x33
|
#define sFIXED_ABILITY_POPUP gBattleScripting + 0x33
|
||||||
|
#define sABILITY_OVERWRITE gBattleScripting + 0x34
|
||||||
|
|
||||||
#define cMULTISTRING_CHOOSER gBattleCommunication + 5
|
#define cMULTISTRING_CHOOSER gBattleCommunication + 5
|
||||||
|
|
||||||
@ -168,7 +169,8 @@
|
|||||||
#define VARIOUS_JUMP_IF_ABSENT 101
|
#define VARIOUS_JUMP_IF_ABSENT 101
|
||||||
#define VARIOUS_DESTROY_ABILITY_POPUP 102
|
#define VARIOUS_DESTROY_ABILITY_POPUP 102
|
||||||
#define VARIOUS_TOTEM_BOOST 103
|
#define VARIOUS_TOTEM_BOOST 103
|
||||||
#define VARIOUS_SET_Z_EFFECT 104
|
#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 104
|
||||||
|
#define VARIOUS_SET_Z_EFFECT 105
|
||||||
|
|
||||||
// Cmd_manipulatedamage
|
// Cmd_manipulatedamage
|
||||||
#define DMG_CHANGE_SIGN 0
|
#define DMG_CHANGE_SIGN 0
|
||||||
|
|||||||
@ -470,7 +470,7 @@
|
|||||||
#define STRINGID_FRISKACTIVATES 466
|
#define STRINGID_FRISKACTIVATES 466
|
||||||
#define STRINGID_UNNERVEENTERS 467
|
#define STRINGID_UNNERVEENTERS 467
|
||||||
#define STRINGID_HARVESTBERRY 468
|
#define STRINGID_HARVESTBERRY 468
|
||||||
#define STRINGID_MOXIEATKRISE 469
|
#define STRINGID_LASTABILITYRAISEDSTAT 469
|
||||||
#define STRINGID_MAGICBOUNCEACTIVATES 470
|
#define STRINGID_MAGICBOUNCEACTIVATES 470
|
||||||
#define STRINGID_PROTEANTYPECHANGE 471
|
#define STRINGID_PROTEANTYPECHANGE 471
|
||||||
#define STRINGID_SYMBIOSISITEMPASS 472
|
#define STRINGID_SYMBIOSISITEMPASS 472
|
||||||
@ -564,17 +564,19 @@
|
|||||||
#define STRINGID_PKMNSWILLPERISHIN3TURNS 560
|
#define STRINGID_PKMNSWILLPERISHIN3TURNS 560
|
||||||
#define STRINGID_ABILITYRAISEDSTATDRASTICALLY 561
|
#define STRINGID_ABILITYRAISEDSTATDRASTICALLY 561
|
||||||
#define STRINGID_AURAFLAREDTOLIFE 562
|
#define STRINGID_AURAFLAREDTOLIFE 562
|
||||||
#define STRINGID_ZPOWERSURROUNDS 563
|
#define STRINGID_ASONEENTERS 563
|
||||||
#define STRINGID_ZMOVEUNLEASHED 564
|
#define STRINGID_CURIOUSMEDICINEENTERS 564
|
||||||
#define STRINGID_ZMOVERESETSSTATS 565
|
#define STRINGID_ZPOWERSURROUNDS 565
|
||||||
#define STRINGID_ZMOVEALLSTATSUP 566
|
#define STRINGID_ZMOVEUNLEASHED 566
|
||||||
#define STRINGID_ZMOVEZBOOSTCRIT 567
|
#define STRINGID_ZMOVERESETSSTATS 567
|
||||||
#define STRINGID_ZMOVERESTOREHP 568
|
#define STRINGID_ZMOVEALLSTATSUP 568
|
||||||
#define STRINGID_ZMOVESTATUP 569
|
#define STRINGID_ZMOVEZBOOSTCRIT 569
|
||||||
#define STRINGID_ZMOVEHPTRAP 570
|
#define STRINGID_ZMOVERESTOREHP 570
|
||||||
#define STRINGID_TERRAINREMOVED 571
|
#define STRINGID_ZMOVESTATUP 571
|
||||||
|
#define STRINGID_ZMOVEHPTRAP 572
|
||||||
|
#define STRINGID_TERRAINREMOVED 573
|
||||||
|
|
||||||
#define BATTLESTRINGS_COUNT 572
|
#define BATTLESTRINGS_COUNT 574
|
||||||
|
|
||||||
//// multichoice message IDs
|
//// multichoice message IDs
|
||||||
// switch in ability message
|
// switch in ability message
|
||||||
@ -591,6 +593,9 @@
|
|||||||
#define MULTI_SWITCHIN_AURABREAK 10
|
#define MULTI_SWITCHIN_AURABREAK 10
|
||||||
#define MULTI_SWITCHIN_COMATOSE 11
|
#define MULTI_SWITCHIN_COMATOSE 11
|
||||||
#define MULTI_SWITCHIN_SCREENCLEANER 12
|
#define MULTI_SWITCHIN_SCREENCLEANER 12
|
||||||
|
#define MULTI_SWITCHIN_ASONE 13
|
||||||
|
#define MULTI_SWITCHIN_CURIOUS_MEDICINE 14
|
||||||
|
|
||||||
// z effects
|
// z effects
|
||||||
#define MULTISTRING_Z_RESET_STATS 0
|
#define MULTISTRING_Z_RESET_STATS 0
|
||||||
#define MULTISTRING_Z_ALL_STATS_UP 1
|
#define MULTISTRING_Z_ALL_STATS_UP 1
|
||||||
|
|||||||
@ -966,10 +966,7 @@ static void TryToggleHealboxVisibility(u8 priority, u8 healthboxLeftSpriteId, u8
|
|||||||
case B_ANIM_WISH_HEAL:
|
case B_ANIM_WISH_HEAL:
|
||||||
//new
|
//new
|
||||||
case B_ANIM_MEGA_EVOLUTION:
|
case B_ANIM_MEGA_EVOLUTION:
|
||||||
case B_ANIM_TERRAIN_MISTY:
|
case B_ANIM_RESTORE_BG:
|
||||||
case B_ANIM_TERRAIN_GRASSY:
|
|
||||||
case B_ANIM_TERRAIN_ELECTRIC:
|
|
||||||
case B_ANIM_TERRAIN_PSYCHIC:
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return; //all other special anims dont hide
|
return; //all other special anims dont hide
|
||||||
@ -3024,6 +3021,9 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle)
|
|||||||
|
|
||||||
if (!B_ABILITY_POP_UP)
|
if (!B_ABILITY_POP_UP)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (gBattleScripting.abilityPopupOverwrite != 0)
|
||||||
|
ability = gBattleScripting.abilityPopupOverwrite;
|
||||||
|
|
||||||
if (!gBattleStruct->activeAbilityPopUps)
|
if (!gBattleStruct->activeAbilityPopUps)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -3490,6 +3490,12 @@ static void TryDoEventsBeforeFirstTurn(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!gBattleStruct->terrainDone && AbilityBattleEffects(0, 0, 0, ABILITYEFFECT_SWITCH_IN_TERRAIN, 0) != 0)
|
||||||
|
{
|
||||||
|
gBattleStruct->terrainDone = TRUE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Totem boosts
|
// Totem boosts
|
||||||
for (i = 0; i < gBattlersCount; i++)
|
for (i = 0; i < gBattlersCount; i++)
|
||||||
{
|
{
|
||||||
@ -4268,7 +4274,7 @@ u32 GetBattlerTotalSpeedStat(u8 battlerId)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// item effects
|
// item effects
|
||||||
if (GetBattlerHoldEffect(battlerId, FALSE) == HOLD_EFFECT_MACHO_BRACE || GetBattlerHoldEffect(battlerId, FALSE) == HOLD_EFFECT_POWER_ITEM)
|
if (holdEffect == HOLD_EFFECT_MACHO_BRACE || holdEffect == HOLD_EFFECT_POWER_ITEM)
|
||||||
speed /= 2;
|
speed /= 2;
|
||||||
else if (holdEffect == HOLD_EFFECT_IRON_BALL)
|
else if (holdEffect == HOLD_EFFECT_IRON_BALL)
|
||||||
speed /= 2;
|
speed /= 2;
|
||||||
|
|||||||
@ -601,7 +601,7 @@ static const u8 sText_SnowWarningHail[] = _("It started to hail!");
|
|||||||
static const u8 sText_FriskActivates[] = _("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX} and\nfound its {B_LAST_ITEM}!");
|
static const u8 sText_FriskActivates[] = _("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX} and\nfound its {B_LAST_ITEM}!");
|
||||||
static const u8 sText_UnnerveEnters[] = _("The opposing team is too nervous\nto eat Berries!");
|
static const u8 sText_UnnerveEnters[] = _("The opposing team is too nervous\nto eat Berries!");
|
||||||
static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nits {B_LAST_ITEM}!");
|
static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nits {B_LAST_ITEM}!");
|
||||||
static const u8 sText_MoxieAtkRise[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} raised its Attack!");
|
static const u8 sText_LastAbilityRaisedBuff1[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\nraised its {B_BUFF1}!");
|
||||||
static const u8 sText_MagicBounceActivates[] = _("The {B_DEF_NAME_WITH_PREFIX} bounced the\n{B_ATK_NAME_WITH_PREFIX} back!");
|
static const u8 sText_MagicBounceActivates[] = _("The {B_DEF_NAME_WITH_PREFIX} bounced the\n{B_ATK_NAME_WITH_PREFIX} back!");
|
||||||
static const u8 sText_ProteanTypeChange[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} transformed\nit into the {B_BUFF1} type!");
|
static const u8 sText_ProteanTypeChange[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} transformed\nit into the {B_BUFF1} type!");
|
||||||
static const u8 sText_SymbiosisItemPass[] = _("{B_ATK_NAME_WITH_PREFIX} passed its {B_LAST_ITEM}\nto {B_SCR_ACTIVE_NAME_WITH_PREFIX} through {B_ATK_ABILITY}!");
|
static const u8 sText_SymbiosisItemPass[] = _("{B_ATK_NAME_WITH_PREFIX} passed its {B_LAST_ITEM}\nto {B_SCR_ACTIVE_NAME_WITH_PREFIX} through {B_ATK_ABILITY}!");
|
||||||
@ -691,6 +691,8 @@ static const u8 sText_BattlerAbilityRaisedStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PR
|
|||||||
static const u8 sText_ASandstormKickedUp[] = _("A sandstorm kicked up!");
|
static const u8 sText_ASandstormKickedUp[] = _("A sandstorm kicked up!");
|
||||||
static const u8 sText_PkmnsWillPerishIn3Turns[] = _("Both Pokémon will perish\nin three turns!");
|
static const u8 sText_PkmnsWillPerishIn3Turns[] = _("Both Pokémon will perish\nin three turns!");
|
||||||
static const u8 sText_AbilityRaisedStatDrastically[] = _("{B_DEF_ABILITY} raised {B_DEF_NAME_WITH_PREFIX}'s\n{B_BUFF1} drastically!");
|
static const u8 sText_AbilityRaisedStatDrastically[] = _("{B_DEF_ABILITY} raised {B_DEF_NAME_WITH_PREFIX}'s\n{B_BUFF1} drastically!");
|
||||||
|
static const u8 sText_AsOneEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} has two Abilities!");
|
||||||
|
static const u8 sText_CuriousMedicineEnters[] = _("{B_EFF_NAME_WITH_PREFIX}'s\nstat changes were reset!");
|
||||||
static const u8 sText_ZPowerSurrounds[] = _("{B_ATK_NAME_WITH_PREFIX} surrounds\nitself with its Z-Power!");
|
static const u8 sText_ZPowerSurrounds[] = _("{B_ATK_NAME_WITH_PREFIX} surrounds\nitself with its Z-Power!");
|
||||||
static const u8 sText_ZPowerUnleashed[] = _("{B_ATK_NAME_WITH_PREFIX} unleashes\nits full-force Z-Move!");
|
static const u8 sText_ZPowerUnleashed[] = _("{B_ATK_NAME_WITH_PREFIX} unleashes\nits full-force Z-Move!");
|
||||||
static const u8 sText_ZMoveResetsStats[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} returned its\ndecreased stats to normal using\lits Z-Power!");
|
static const u8 sText_ZMoveResetsStats[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} returned its\ndecreased stats to normal using\lits Z-Power!");
|
||||||
@ -711,6 +713,8 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
|||||||
[STRINGID_ZMOVERESTOREHP - 12] = sText_ZMoveRestoreHp,
|
[STRINGID_ZMOVERESTOREHP - 12] = sText_ZMoveRestoreHp,
|
||||||
[STRINGID_ZMOVESTATUP - 12] = sText_ZMoveStatUp,
|
[STRINGID_ZMOVESTATUP - 12] = sText_ZMoveStatUp,
|
||||||
[STRINGID_ZMOVEHPTRAP - 12] = sText_ZMoveHpSwitchInTrap,
|
[STRINGID_ZMOVEHPTRAP - 12] = sText_ZMoveHpSwitchInTrap,
|
||||||
|
[STRINGID_CURIOUSMEDICINEENTERS - 12] = sText_CuriousMedicineEnters,
|
||||||
|
[STRINGID_ASONEENTERS - 12] = sText_AsOneEnters,
|
||||||
[STRINGID_ABILITYRAISEDSTATDRASTICALLY - 12] = sText_AbilityRaisedStatDrastically,
|
[STRINGID_ABILITYRAISEDSTATDRASTICALLY - 12] = sText_AbilityRaisedStatDrastically,
|
||||||
[STRINGID_PKMNSWILLPERISHIN3TURNS - 12] = sText_PkmnsWillPerishIn3Turns,
|
[STRINGID_PKMNSWILLPERISHIN3TURNS - 12] = sText_PkmnsWillPerishIn3Turns,
|
||||||
[STRINGID_ASANDSTORMKICKEDUP - 12] = sText_ASandstormKickedUp,
|
[STRINGID_ASANDSTORMKICKEDUP - 12] = sText_ASandstormKickedUp,
|
||||||
@ -1202,7 +1206,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
|||||||
[STRINGID_FRISKACTIVATES - 12] = sText_FriskActivates,
|
[STRINGID_FRISKACTIVATES - 12] = sText_FriskActivates,
|
||||||
[STRINGID_UNNERVEENTERS - 12] = sText_UnnerveEnters,
|
[STRINGID_UNNERVEENTERS - 12] = sText_UnnerveEnters,
|
||||||
[STRINGID_HARVESTBERRY - 12] = sText_HarvestBerry,
|
[STRINGID_HARVESTBERRY - 12] = sText_HarvestBerry,
|
||||||
[STRINGID_MOXIEATKRISE - 12] = sText_MoxieAtkRise,
|
[STRINGID_LASTABILITYRAISEDSTAT - 12] = sText_LastAbilityRaisedBuff1,
|
||||||
[STRINGID_MAGICBOUNCEACTIVATES - 12] = sText_MagicBounceActivates,
|
[STRINGID_MAGICBOUNCEACTIVATES - 12] = sText_MagicBounceActivates,
|
||||||
[STRINGID_PROTEANTYPECHANGE - 12] = sText_ProteanTypeChange,
|
[STRINGID_PROTEANTYPECHANGE - 12] = sText_ProteanTypeChange,
|
||||||
[STRINGID_SYMBIOSISITEMPASS - 12] = sText_SymbiosisItemPass,
|
[STRINGID_SYMBIOSISITEMPASS - 12] = sText_SymbiosisItemPass,
|
||||||
@ -1316,6 +1320,8 @@ const u16 gSwitchInAbilityStringIds[] =
|
|||||||
[MULTI_SWITCHIN_AURABREAK] = STRINGID_AURABREAKENTERS,
|
[MULTI_SWITCHIN_AURABREAK] = STRINGID_AURABREAKENTERS,
|
||||||
[MULTI_SWITCHIN_COMATOSE] = STRINGID_COMATOSEENTERS,
|
[MULTI_SWITCHIN_COMATOSE] = STRINGID_COMATOSEENTERS,
|
||||||
[MULTI_SWITCHIN_SCREENCLEANER] = STRINGID_SCREENCLEANERENTERS,
|
[MULTI_SWITCHIN_SCREENCLEANER] = STRINGID_SCREENCLEANERENTERS,
|
||||||
|
[MULTI_SWITCHIN_ASONE] = STRINGID_ASONEENTERS,
|
||||||
|
[MULTI_SWITCHIN_CURIOUS_MEDICINE] = STRINGID_CURIOUSMEDICINEENTERS,
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gMissStringIds[] =
|
const u16 gMissStringIds[] =
|
||||||
|
|||||||
@ -4410,6 +4410,15 @@ static void Cmd_playanimation(void)
|
|||||||
|
|
||||||
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
|
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
|
||||||
argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3);
|
argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3);
|
||||||
|
|
||||||
|
#if B_TERRAIN_BG_CHANGE == FALSE
|
||||||
|
if (gBattlescriptCurrInstr[2] == B_ANIM_RESTORE_BG)
|
||||||
|
{
|
||||||
|
// workaround for .if not working
|
||||||
|
gBattlescriptCurrInstr += 7;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE
|
if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE
|
||||||
|| gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE
|
|| gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE
|
||||||
@ -7570,17 +7579,40 @@ static void Cmd_various(void)
|
|||||||
BtlController_EmitSetMonData(0, REQUEST_PP_DATA_BATTLE, 0, 5, data);
|
BtlController_EmitSetMonData(0, REQUEST_PP_DATA_BATTLE, 0, 5, data);
|
||||||
MarkBattlerForControllerExec(gActiveBattler);
|
MarkBattlerForControllerExec(gActiveBattler);
|
||||||
break;
|
break;
|
||||||
case VARIOUS_TRY_ACTIVATE_MOXIE:
|
case VARIOUS_TRY_ACTIVATE_MOXIE: // and chilling neigh + as one ice rider
|
||||||
if (GetBattlerAbility(gActiveBattler) == ABILITY_MOXIE
|
if ((GetBattlerAbility(gActiveBattler) == ABILITY_MOXIE
|
||||||
&& HasAttackerFaintedTarget()
|
|| GetBattlerAbility(gActiveBattler) == ABILITY_CHILLING_NEIGH
|
||||||
&& !NoAliveMonsForEitherParty()
|
|| GetBattlerAbility(gActiveBattler) == ABILITY_AS_ONE_ICE_RIDER)
|
||||||
&& gBattleMons[gBattlerAttacker].statStages[STAT_ATK] != 12)
|
&& HasAttackerFaintedTarget()
|
||||||
|
&& !NoAliveMonsForEitherParty()
|
||||||
|
&& gBattleMons[gBattlerAttacker].statStages[STAT_ATK] != 12)
|
||||||
{
|
{
|
||||||
gBattleMons[gBattlerAttacker].statStages[STAT_ATK]++;
|
gBattleMons[gBattlerAttacker].statStages[STAT_ATK]++;
|
||||||
SET_STATCHANGER(STAT_ATK, 1, FALSE);
|
SET_STATCHANGER(STAT_ATK, 1, FALSE);
|
||||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK);
|
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK);
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + 3);
|
BattleScriptPush(gBattlescriptCurrInstr + 3);
|
||||||
gBattlescriptCurrInstr = BattleScript_AttackerAbilityStatRaise;
|
gLastUsedAbility = GetBattlerAbility(gActiveBattler);
|
||||||
|
if (GetBattlerAbility(gActiveBattler) == ABILITY_AS_ONE_ICE_RIDER)
|
||||||
|
gBattleScripting.abilityPopupOverwrite = gLastUsedAbility = ABILITY_CHILLING_NEIGH;
|
||||||
|
gBattlescriptCurrInstr = BattleScript_RaiseStatOnFaintingTarget;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case VARIOUS_TRY_ACTIVATE_GRIM_NEIGH: // and as one shadow rider
|
||||||
|
if ((GetBattlerAbility(gActiveBattler) == ABILITY_GRIM_NEIGH
|
||||||
|
|| GetBattlerAbility(gActiveBattler) == ABILITY_AS_ONE_SHADOW_RIDER)
|
||||||
|
&& HasAttackerFaintedTarget()
|
||||||
|
&& !NoAliveMonsForEitherParty()
|
||||||
|
&& gBattleMons[gBattlerAttacker].statStages[STAT_SPATK] != 12)
|
||||||
|
{
|
||||||
|
gBattleMons[gBattlerAttacker].statStages[STAT_SPATK]++;
|
||||||
|
SET_STATCHANGER(STAT_SPATK, 1, FALSE);
|
||||||
|
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK);
|
||||||
|
BattleScriptPush(gBattlescriptCurrInstr + 3);
|
||||||
|
gLastUsedAbility = GetBattlerAbility(gActiveBattler);
|
||||||
|
if (GetBattlerAbility(gActiveBattler) == ABILITY_AS_ONE_SHADOW_RIDER)
|
||||||
|
gBattleScripting.abilityPopupOverwrite = gLastUsedAbility = ABILITY_GRIM_NEIGH;
|
||||||
|
gBattlescriptCurrInstr = BattleScript_RaiseStatOnFaintingTarget;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -9138,17 +9170,30 @@ static void Cmd_statbuffchange(void)
|
|||||||
gBattlescriptCurrInstr = jumpPtr;
|
gBattlescriptCurrInstr = jumpPtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool32 TryResetBattlerStatChanges(u8 battler)
|
||||||
|
{
|
||||||
|
u32 j;
|
||||||
|
bool32 ret = FALSE;
|
||||||
|
|
||||||
|
gDisableStructs[battler].stockpileDef = 0;
|
||||||
|
gDisableStructs[battler].stockpileSpDef = 0;
|
||||||
|
for (j = 0; j < NUM_BATTLE_STATS; j++)
|
||||||
|
{
|
||||||
|
if (gBattleMons[battler].statStages[j] != DEFAULT_STAT_STAGE)
|
||||||
|
ret = TRUE; // returns TRUE if any stat was reset
|
||||||
|
|
||||||
|
gBattleMons[battler].statStages[j] = DEFAULT_STAT_STAGE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static void Cmd_normalisebuffs(void) // haze
|
static void Cmd_normalisebuffs(void) // haze
|
||||||
{
|
{
|
||||||
s32 i, j;
|
s32 i, j;
|
||||||
|
|
||||||
for (i = 0; i < gBattlersCount; i++)
|
for (i = 0; i < gBattlersCount; i++)
|
||||||
{
|
TryResetBattlerStatChanges(i);
|
||||||
gDisableStructs[i].stockpileDef = 0;
|
|
||||||
gDisableStructs[i].stockpileSpDef = 0;
|
|
||||||
for (j = 0; j < NUM_BATTLE_STATS; j++)
|
|
||||||
gBattleMons[i].statStages[j] = DEFAULT_STAT_STAGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
gBattlescriptCurrInstr++;
|
gBattlescriptCurrInstr++;
|
||||||
}
|
}
|
||||||
@ -10259,7 +10304,7 @@ static void Cmd_settailwind(void)
|
|||||||
{
|
{
|
||||||
gSideStatuses[side] |= SIDE_STATUS_TAILWIND;
|
gSideStatuses[side] |= SIDE_STATUS_TAILWIND;
|
||||||
gSideTimers[side].tailwindBattlerId = gBattlerAttacker;
|
gSideTimers[side].tailwindBattlerId = gBattlerAttacker;
|
||||||
gSideTimers[side].tailwindTimer = 3;
|
gSideTimers[side].tailwindTimer = (B_TAILWIND_TIMER >= GEN_5) ? 4 : 3;
|
||||||
gBattlescriptCurrInstr += 5;
|
gBattlescriptCurrInstr += 5;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -53,6 +53,9 @@ match the ROM; this is also why sSoundMovesTable's declaration is in the middle
|
|||||||
functions instead of at the top of the file with the other declarations.
|
functions instead of at the top of the file with the other declarations.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
static bool32 TryRemoveScreens(u8 battler);
|
||||||
|
static bool32 IsUnnerveAbilityOnOpposingSide(u8 battlerId);
|
||||||
|
|
||||||
extern const u8 *const gBattleScriptsForMoveEffects[];
|
extern const u8 *const gBattleScriptsForMoveEffects[];
|
||||||
extern const u8 *const gBattlescriptsForBallThrow[];
|
extern const u8 *const gBattlescriptsForBallThrow[];
|
||||||
extern const u8 *const gBattlescriptsForRunningByItem[];
|
extern const u8 *const gBattlescriptsForRunningByItem[];
|
||||||
@ -2006,16 +2009,18 @@ u8 DoFieldEndTurnEffects(void)
|
|||||||
gBattleStruct->turnCountersTracker++;
|
gBattleStruct->turnCountersTracker++;
|
||||||
break;
|
break;
|
||||||
case ENDTURN_ELECTRIC_TERRAIN:
|
case ENDTURN_ELECTRIC_TERRAIN:
|
||||||
if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN && --gFieldTimers.electricTerrainTimer == 0)
|
if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN
|
||||||
|
&& ((!gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT) && --gFieldTimers.electricTerrainTimer == 0))
|
||||||
{
|
{
|
||||||
gFieldStatuses &= ~(STATUS_FIELD_ELECTRIC_TERRAIN);
|
gFieldStatuses &= ~(STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_TERRAIN_PERMANENT);
|
||||||
BattleScriptExecute(BattleScript_ElectricTerrainEnds);
|
BattleScriptExecute(BattleScript_ElectricTerrainEnds);
|
||||||
effect++;
|
effect++;
|
||||||
}
|
}
|
||||||
gBattleStruct->turnCountersTracker++;
|
gBattleStruct->turnCountersTracker++;
|
||||||
break;
|
break;
|
||||||
case ENDTURN_MISTY_TERRAIN:
|
case ENDTURN_MISTY_TERRAIN:
|
||||||
if (gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN && --gFieldTimers.mistyTerrainTimer == 0)
|
if (gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN
|
||||||
|
&& ((!gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT) && --gFieldTimers.mistyTerrainTimer == 0))
|
||||||
{
|
{
|
||||||
gFieldStatuses &= ~(STATUS_FIELD_MISTY_TERRAIN);
|
gFieldStatuses &= ~(STATUS_FIELD_MISTY_TERRAIN);
|
||||||
BattleScriptExecute(BattleScript_MistyTerrainEnds);
|
BattleScriptExecute(BattleScript_MistyTerrainEnds);
|
||||||
@ -2026,15 +2031,18 @@ u8 DoFieldEndTurnEffects(void)
|
|||||||
case ENDTURN_GRASSY_TERRAIN:
|
case ENDTURN_GRASSY_TERRAIN:
|
||||||
if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN)
|
if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN)
|
||||||
{
|
{
|
||||||
if (gFieldTimers.grassyTerrainTimer == 0 || --gFieldTimers.grassyTerrainTimer == 0)
|
if (!(gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT)
|
||||||
|
&& (gFieldTimers.grassyTerrainTimer == 0 || --gFieldTimers.grassyTerrainTimer == 0))
|
||||||
gFieldStatuses &= ~(STATUS_FIELD_GRASSY_TERRAIN);
|
gFieldStatuses &= ~(STATUS_FIELD_GRASSY_TERRAIN);
|
||||||
|
|
||||||
BattleScriptExecute(BattleScript_GrassyTerrainHeals);
|
BattleScriptExecute(BattleScript_GrassyTerrainHeals);
|
||||||
effect++;
|
effect++;
|
||||||
}
|
}
|
||||||
gBattleStruct->turnCountersTracker++;
|
gBattleStruct->turnCountersTracker++;
|
||||||
break;
|
break;
|
||||||
case ENDTURN_PSYCHIC_TERRAIN:
|
case ENDTURN_PSYCHIC_TERRAIN:
|
||||||
if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN && --gFieldTimers.psychicTerrainTimer == 0)
|
if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN
|
||||||
|
&& ((!gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT) && --gFieldTimers.psychicTerrainTimer == 0))
|
||||||
{
|
{
|
||||||
gFieldStatuses &= ~(STATUS_FIELD_PSYCHIC_TERRAIN);
|
gFieldStatuses &= ~(STATUS_FIELD_PSYCHIC_TERRAIN);
|
||||||
BattleScriptExecute(BattleScript_PsychicTerrainEnds);
|
BattleScriptExecute(BattleScript_PsychicTerrainEnds);
|
||||||
@ -3670,6 +3678,41 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
|||||||
gBattleScripting.battler = battler;
|
gBattleScripting.battler = battler;
|
||||||
switch (gLastUsedAbility)
|
switch (gLastUsedAbility)
|
||||||
{
|
{
|
||||||
|
case ABILITYEFFECT_SWITCH_IN_TERRAIN:
|
||||||
|
if (VarGet(VAR_TERRAIN) & STATUS_TERRAIN_ANY)
|
||||||
|
{
|
||||||
|
u16 terrainFlags = VarGet(VAR_TERRAIN) & STATUS_TERRAIN_ANY; // only works for status flag (1 << 15)
|
||||||
|
gFieldStatuses = terrainFlags | STATUS_FIELD_TERRAIN_PERMANENT; // terrain is permanent
|
||||||
|
switch (VarGet(VAR_TERRAIN) & STATUS_TERRAIN_ANY)
|
||||||
|
{
|
||||||
|
case STATUS_FIELD_ELECTRIC_TERRAIN:
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
|
||||||
|
break;
|
||||||
|
case STATUS_FIELD_MISTY_TERRAIN:
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||||
|
break;
|
||||||
|
case STATUS_FIELD_GRASSY_TERRAIN:
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
|
||||||
|
break;
|
||||||
|
case STATUS_FIELD_PSYCHIC_TERRAIN:
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
BattleScriptPushCursorAndCallback(BattleScript_OverworldTerrain);
|
||||||
|
effect++;
|
||||||
|
}
|
||||||
|
#if B_THUNDERSTORM_TERRAIN == TRUE
|
||||||
|
else if (GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM && !(gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN))
|
||||||
|
{
|
||||||
|
// overworld weather started rain, so just do electric terrain anim
|
||||||
|
gFieldStatuses = (STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_TERRAIN_PERMANENT);
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
|
||||||
|
BattleScriptPushCursorAndCallback(BattleScript_OverworldTerrain);
|
||||||
|
effect++;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
case ABILITYEFFECT_SWITCH_IN_WEATHER:
|
case ABILITYEFFECT_SWITCH_IN_WEATHER:
|
||||||
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
|
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
|
||||||
{
|
{
|
||||||
@ -3767,6 +3810,28 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
|||||||
effect++;
|
effect++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case ABILITY_AS_ONE_ICE_RIDER:
|
||||||
|
case ABILITY_AS_ONE_SHADOW_RIDER:
|
||||||
|
if (!gSpecialStatuses[battler].switchInAbilityDone)
|
||||||
|
{
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = MULTI_SWITCHIN_ASONE;
|
||||||
|
gSpecialStatuses[battler].switchInAbilityDone = 1;
|
||||||
|
BattleScriptPushCursorAndCallback(BattleScript_ActivateAsOne);
|
||||||
|
effect++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ABILITY_CURIOUS_MEDICINE:
|
||||||
|
if (!gSpecialStatuses[battler].switchInAbilityDone && IsDoubleBattle()
|
||||||
|
&& IsBattlerAlive(BATTLE_PARTNER(battler)) && TryResetBattlerStatChanges(BATTLE_PARTNER(battler)))
|
||||||
|
{
|
||||||
|
u32 i;
|
||||||
|
gEffectBattler = BATTLE_PARTNER(battler);
|
||||||
|
gBattleCommunication[MULTISTRING_CHOOSER] = MULTI_SWITCHIN_CURIOUS_MEDICINE;
|
||||||
|
gSpecialStatuses[battler].switchInAbilityDone = 1;
|
||||||
|
BattleScriptPushCursorAndCallback(BattleScript_SwitchInAbilityMsg);
|
||||||
|
effect++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case ABILITY_ANTICIPATION:
|
case ABILITY_ANTICIPATION:
|
||||||
if (!gSpecialStatuses[battler].switchInAbilityDone)
|
if (!gSpecialStatuses[battler].switchInAbilityDone)
|
||||||
{
|
{
|
||||||
@ -3898,7 +3963,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ABILITY_SCREEN_CLEANER:
|
case ABILITY_SCREEN_CLEANER:
|
||||||
if (!gSpecialStatuses[battler].switchInAbilityDone)
|
if (!gSpecialStatuses[battler].switchInAbilityDone && TryRemoveScreens(battler))
|
||||||
{
|
{
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = MULTI_SWITCHIN_SCREENCLEANER;
|
gBattleCommunication[MULTISTRING_CHOOSER] = MULTI_SWITCHIN_SCREENCLEANER;
|
||||||
gSpecialStatuses[battler].switchInAbilityDone = 1;
|
gSpecialStatuses[battler].switchInAbilityDone = 1;
|
||||||
@ -5145,7 +5210,7 @@ static bool32 HasEnoughHpToEatBerry(u32 battlerId, u32 hpFraction, u32 itemId)
|
|||||||
if (gBattleMons[battlerId].hp == 0)
|
if (gBattleMons[battlerId].hp == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
// Unnerve prevents consumption of opponents' berries.
|
// Unnerve prevents consumption of opponents' berries.
|
||||||
if (isBerry && IsAbilityOnOpposingSide(battlerId, ABILITY_UNNERVE))
|
if (isBerry && IsUnnerveAbilityOnOpposingSide(battlerId))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / hpFraction)
|
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / hpFraction)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -5259,7 +5324,7 @@ static u8 ItemHealHp(u32 battlerId, u32 itemId, bool32 end2, bool32 percentHeal)
|
|||||||
|
|
||||||
static bool32 UnnerveOn(u32 battlerId, u32 itemId)
|
static bool32 UnnerveOn(u32 battlerId, u32 itemId)
|
||||||
{
|
{
|
||||||
if (ItemId_GetPocket(itemId) == POCKET_BERRIES && IsAbilityOnOpposingSide(battlerId, ABILITY_UNNERVE))
|
if (ItemId_GetPocket(itemId) == POCKET_BERRIES && IsUnnerveAbilityOnOpposingSide(battlerId))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -6851,6 +6916,18 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe
|
|||||||
if (gBattleMoves[move].flags & FLAG_SOUND)
|
if (gBattleMoves[move].flags & FLAG_SOUND)
|
||||||
MulModifier(&modifier, UQ_4_12(1.3));
|
MulModifier(&modifier, UQ_4_12(1.3));
|
||||||
break;
|
break;
|
||||||
|
case ABILITY_STEELY_SPIRIT:
|
||||||
|
if (moveType == TYPE_STEEL)
|
||||||
|
MulModifier(&modifier, UQ_4_12(1.5));
|
||||||
|
break;
|
||||||
|
case ABILITY_TRANSISTOR:
|
||||||
|
if (moveType == TYPE_ELECTRIC)
|
||||||
|
MulModifier(&modifier, UQ_4_12(1.5));
|
||||||
|
break;
|
||||||
|
case ABILITY_DRAGONS_MAW:
|
||||||
|
if (moveType == TYPE_DRAGON)
|
||||||
|
MulModifier(&modifier, UQ_4_12(1.5));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// field abilities
|
// field abilities
|
||||||
@ -6875,6 +6952,10 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe
|
|||||||
case ABILITY_POWER_SPOT:
|
case ABILITY_POWER_SPOT:
|
||||||
MulModifier(&modifier, UQ_4_12(1.3));
|
MulModifier(&modifier, UQ_4_12(1.3));
|
||||||
break;
|
break;
|
||||||
|
case ABILITY_STEELY_SPIRIT:
|
||||||
|
if (moveType == TYPE_STEEL)
|
||||||
|
MulModifier(&modifier, UQ_4_12(1.5));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8018,6 +8099,44 @@ u8 GetBattleMoveSplit(u32 moveId)
|
|||||||
return SPLIT_SPECIAL;
|
return SPLIT_SPECIAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool32 TryRemoveScreens(u8 battler)
|
||||||
|
{
|
||||||
|
bool32 removed = FALSE;
|
||||||
|
u8 battlerSide = GetBattlerSide(battler);
|
||||||
|
u8 enemySide = GetBattlerSide(BATTLE_OPPOSITE(battler));
|
||||||
|
|
||||||
|
// try to remove from battler's side
|
||||||
|
if (gSideStatuses[battlerSide] & (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL))
|
||||||
|
{
|
||||||
|
gSideStatuses[battlerSide] &= ~(SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL);
|
||||||
|
gSideTimers[battlerSide].reflectTimer = 0;
|
||||||
|
gSideTimers[battlerSide].lightscreenTimer = 0;
|
||||||
|
gSideTimers[battlerSide].auroraVeilTimer = 0;
|
||||||
|
removed = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// try to remove from battler opponent's side
|
||||||
|
if (gSideStatuses[enemySide] & (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL))
|
||||||
|
{
|
||||||
|
gSideStatuses[enemySide] &= ~(SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL);
|
||||||
|
gSideTimers[enemySide].reflectTimer = 0;
|
||||||
|
gSideTimers[enemySide].lightscreenTimer = 0;
|
||||||
|
gSideTimers[enemySide].auroraVeilTimer = 0;
|
||||||
|
removed = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return removed;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool32 IsUnnerveAbilityOnOpposingSide(u8 battlerId)
|
||||||
|
{
|
||||||
|
if (IsAbilityOnOpposingSide(battlerId, ABILITY_UNNERVE)
|
||||||
|
|| IsAbilityOnOpposingSide(battlerId, ABILITY_AS_ONE_ICE_RIDER)
|
||||||
|
|| IsAbilityOnOpposingSide(battlerId, ABILITY_AS_ONE_SHADOW_RIDER))
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
//photon geyser & light that burns the sky
|
//photon geyser & light that burns the sky
|
||||||
u8 GetSplitBasedOnStats(u8 battlerId)
|
u8 GetSplitBasedOnStats(u8 battlerId)
|
||||||
{
|
{
|
||||||
@ -8035,3 +8154,4 @@ u8 GetSplitBasedOnStats(u8 battlerId)
|
|||||||
else
|
else
|
||||||
return SPLIT_PHYSICAL;
|
return SPLIT_PHYSICAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -45,7 +45,7 @@ void FreeBattleResources(void)
|
|||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
|
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
|
||||||
FreeTrainerHillBattleStruct();
|
FreeTrainerHillBattleStruct();
|
||||||
|
|
||||||
gFieldStatuses = 0;
|
gFieldStatuses = 0;
|
||||||
if (gBattleResources != NULL)
|
if (gBattleResources != NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -402,6 +402,9 @@ static void Overworld_ResetStateAfterWhiteOut(void)
|
|||||||
FlagClear(FLAG_SYS_SAFARI_MODE);
|
FlagClear(FLAG_SYS_SAFARI_MODE);
|
||||||
FlagClear(FLAG_SYS_USE_STRENGTH);
|
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||||
FlagClear(FLAG_SYS_USE_FLASH);
|
FlagClear(FLAG_SYS_USE_FLASH);
|
||||||
|
#if VAR_TERRAIN != 0
|
||||||
|
VarSet(VAR_TERRAIN, 0);
|
||||||
|
#endif
|
||||||
// If you were defeated by Kyogre/Groudon and the step counter has
|
// If you were defeated by Kyogre/Groudon and the step counter has
|
||||||
// maxed out, end the abnormal weather.
|
// maxed out, end the abnormal weather.
|
||||||
if (VarGet(VAR_SHOULD_END_ABNORMAL_WEATHER) == 1)
|
if (VarGet(VAR_SHOULD_END_ABNORMAL_WEATHER) == 1)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user