merge with be

This commit is contained in:
Evan 2021-03-01 17:05:10 -07:00
commit b130396c0e
21 changed files with 448 additions and 236 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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];

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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)
{ {

View File

@ -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;

View File

@ -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[] =

View File

@ -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

View File

@ -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;
} }

View File

@ -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)
{ {

View File

@ -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)