Merge branch 'battle_engine' of https://github.com/rh-hideout/pokeemerald-expansion into be/speeduphit
@ -1883,6 +1883,14 @@
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro photongeysercheck
|
||||
various BS_ATTACKER, VARIOUS_PHOTON_GEYSER_CHECK
|
||||
.endm
|
||||
|
||||
.macro shellsidearmcheck
|
||||
various BS_ATTACKER, VARIOUS_SHELL_SIDE_ARM_CHECK
|
||||
.endm
|
||||
|
||||
@ helpful macros
|
||||
.macro setstatchanger stat:req, stages:req, down:req
|
||||
setbyte sSTATCHANGER \stat | \stages << 3 | \down << 7
|
||||
|
@ -1893,7 +1893,7 @@ Move_AURA_SPHERE:
|
||||
monbg ANIM_ATK_PARTNER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
setalpha 12, 8
|
||||
call SetHighSpeedBg
|
||||
call SetAuraSphereBG
|
||||
playsewithpan SE_M_SKY_UPPERCUT, 0
|
||||
delay 60
|
||||
createsprite gAuraSphereBlast, ANIM_TARGET, 3, 0
|
||||
@ -1908,6 +1908,10 @@ Move_AURA_SPHERE:
|
||||
delay 1
|
||||
end
|
||||
|
||||
SetAuraSphereBG:
|
||||
fadetobg BG_AURA_SPHERE
|
||||
goto SetHighSpeedBgFade
|
||||
|
||||
Move_ROCK_POLISH:
|
||||
loadspritegfx ANIM_TAG_WHITE_STREAK
|
||||
loadspritegfx ANIM_TAG_SPARKLE_3
|
||||
@ -2378,7 +2382,7 @@ Move_FOCUS_BLAST:
|
||||
monbg ANIM_ATK_PARTNER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
setalpha 12, 8
|
||||
call SetHighSpeedBg
|
||||
call SetFocusBlastBG
|
||||
createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, 0
|
||||
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
|
||||
waitforvisualfinish
|
||||
@ -2391,6 +2395,10 @@ Move_FOCUS_BLAST:
|
||||
delay 1
|
||||
end
|
||||
|
||||
SetFocusBlastBG:
|
||||
fadetobg BG_FOCUS_BLAST
|
||||
goto SetHighSpeedBgFade
|
||||
|
||||
Move_ENERGY_BALL:
|
||||
loadspritegfx ANIM_TAG_ENERGY_BALL
|
||||
monbg ANIM_TARGET
|
||||
@ -3437,6 +3445,7 @@ Move_GUNK_SHOT:
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
call SetGunkShotBG
|
||||
createvisualtask AnimTask_ShakeMon 5, 5, ANIM_ATTACKER, 0, 2, 40, 1
|
||||
delay 6
|
||||
panse_1B SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
|
||||
@ -3464,6 +3473,7 @@ Move_GUNK_SHOT:
|
||||
call GunkShotImpact
|
||||
call PoisonBubblesEffect
|
||||
waitforvisualfinish
|
||||
call UnsetHighSpeedBg
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
blendoff
|
||||
end
|
||||
@ -3479,6 +3489,10 @@ GunkShotImpact:
|
||||
createsprite gGunkShotImpactSpriteTemplate, 4, 4, 0, 15, 1, 1
|
||||
createsprite gGunkShotImpactSpriteTemplate, 4, 4, 0, -15, 1, 1
|
||||
return
|
||||
SetGunkShotBG:
|
||||
fadetobg BG_GUNK_SHOT
|
||||
goto SetHighSpeedBgFade
|
||||
|
||||
|
||||
Move_IRON_HEAD:
|
||||
loadspritegfx ANIM_TAG_GUST
|
||||
@ -14012,7 +14026,50 @@ Move_METEOR_BEAM::
|
||||
end @to do:
|
||||
|
||||
Move_SHELL_SIDE_ARM::
|
||||
end @to do:
|
||||
launchtask AnimTask_ShellSideArm 0x5 0x0
|
||||
jumpargeq 0x0, TRUE, Move_SHELL_SIDE_ARM_PHYSICAL
|
||||
jumpargeq 0x0, FALSE, Move_SHELL_SIDE_ARM_SPECIAL
|
||||
Move_SHELL_SIDE_ARM_PHYSICAL: @ Modified Body Slam, placeholder
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 6, 6, RGB_MAGENTA
|
||||
monbg ANIM_DEF_PARTNER
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
|
||||
createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER
|
||||
waitforvisualfinish
|
||||
delay 11
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 26, 0, 0, 5
|
||||
delay 6
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0
|
||||
loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET, 10, 2
|
||||
delay 1
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
|
||||
waitforvisualfinish
|
||||
delay 10
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6
|
||||
delay 5
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
blendoff
|
||||
end
|
||||
Move_SHELL_SIDE_ARM_SPECIAL: @ Modified Snipe Shot, placeholder
|
||||
loadspritegfx ANIM_TAG_IMPACT_2
|
||||
loadspritegfx ANIM_TAG_LEER
|
||||
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT_2, 0, 6, 6, RGB_MAGENTA
|
||||
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_LEER, 0, 6, 6, RGB_MAGENTA
|
||||
launchtemplate gLeerSpriteTemplate 0x82, 2 0x18 -12
|
||||
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
|
||||
waitforvisualfinish
|
||||
delay 0x20
|
||||
playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET
|
||||
launchtemplate gSnipeShotBallTemplate 0x82, 3, 0 0 24,
|
||||
waitforvisualfinish
|
||||
launchtask AnimTask_ShakeMon2 2 5 1 4 0 8, 1
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
||||
Move_MISTY_EXPLOSION::
|
||||
end @to do:
|
||||
@ -24023,6 +24080,7 @@ General_TurnTrap:
|
||||
jumpargeq 0, TRAP_ANIM_WHIRLPOOL, Status_Whirlpool
|
||||
jumpargeq 0, TRAP_ANIM_CLAMP, Status_Clamp
|
||||
jumpargeq 0, TRAP_ANIM_SAND_TOMB, Status_SandTomb
|
||||
jumpargeq 0, TRAP_ANIM_MAGMA_STORM, Status_MagmaStorm
|
||||
jumpargeq 0, TRAP_ANIM_INFESTATION, Status_Infestation
|
||||
goto Status_BindWrap
|
||||
Status_BindWrap:
|
||||
@ -24049,6 +24107,32 @@ Status_FireSpin:
|
||||
stopsound
|
||||
end
|
||||
|
||||
Status_MagmaStorm:
|
||||
loadspritegfx ANIM_TAG_SMALL_EMBER
|
||||
fadetobg BG_MAGMA_STORM
|
||||
waitbgfadeout
|
||||
createvisualtask AnimTask_MoveSeismicTossBg, 3
|
||||
playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET
|
||||
loopsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET, 5, 8
|
||||
createvisualtask AnimTask_SeismicTossBgAccelerateDownAtEnd, 3
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 47, 1
|
||||
createvisualtask AnimTask_BlendColorCycle, 2, 6, 4, 2, 2, 0, 12, RGB(22, 9, 7)
|
||||
call FireSpinEffect
|
||||
call FireSpinEffect
|
||||
createvisualtask AnimTask_BlendColorCycle, 2, 6, 4, 2, 2, 0, 12, RGB(22, 9, 7)
|
||||
call FireSpinEffect
|
||||
call FireSpinEffect
|
||||
createvisualtask AnimTask_BlendColorCycle, 2, 6, 4, 2, 2, 0, 12, RGB(22, 9, 7)
|
||||
call FireSpinEffect
|
||||
restorebg
|
||||
waitbgfadeout
|
||||
setarg 7, 0xFFF
|
||||
waitbgfadein
|
||||
stopsound
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
blendoff
|
||||
end
|
||||
|
||||
Status_Whirlpool:
|
||||
loadspritegfx ANIM_TAG_WATER_ORB
|
||||
monbg ANIM_DEF_PARTNER
|
||||
|
@ -367,7 +367,7 @@ gBattleScriptsForMoveEffects::
|
||||
.4byte BattleScript_EffectGeomancy @ EFFECT_GEOMANCY
|
||||
.4byte BattleScript_EffectFairyLock @ EFFECT_FAIRY_LOCK
|
||||
.4byte BattleScript_EffectAllySwitch @ EFFECT_ALLY_SWITCH
|
||||
.4byte BattleScript_EffectSleepHit @ EFFECT_SLEEP_HIT
|
||||
.4byte BattleScript_EffectRelicSong @ EFFECT_RELIC_SONG
|
||||
.4byte BattleScript_EffectAttackerDefenseDownHit @ EFFECT_ATTACKER_DEFENSE_DOWN_HIT
|
||||
.4byte BattleScript_EffectHit @ EFFECT_BODY_PRESS
|
||||
.4byte BattleScript_EffectEerieSpell @ EFFECT_EERIE_SPELL
|
||||
@ -392,10 +392,49 @@ gBattleScriptsForMoveEffects::
|
||||
.4byte BattleScript_EffectSparklySwirl @ EFFECT_SPARKLY_SWIRL
|
||||
.4byte BattleScript_EffectPlasmaFists @ EFFECT_PLASMA_FISTS
|
||||
.4byte BattleScript_EffectHyperspaceFury @ EFFECT_HYPERSPACE_FURY
|
||||
.4byte BattleScript_EffectAuraWheel @ EFFECT_AURA_WHEEL
|
||||
.4byte BattleScript_EffectPhotonGeyser @ EFFECT_PHOTON_GEYSER
|
||||
.4byte BattleScript_EffectShellSideArm @ EFFECT_SHELL_SIDE_ARM
|
||||
|
||||
BattleScript_EffectShellSideArm:
|
||||
shellsidearmcheck
|
||||
setmoveeffect MOVE_EFFECT_POISON
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_EffectPhotonGeyser:
|
||||
attackcanceler
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
attackstring
|
||||
ppreduce
|
||||
critcalc
|
||||
damagecalc
|
||||
adjustdamage
|
||||
photongeysercheck
|
||||
attackanimation
|
||||
waitanimation
|
||||
effectivenesssound
|
||||
hitanimation BS_TARGET
|
||||
waitstate
|
||||
healthbarupdate BS_TARGET
|
||||
datahpupdate BS_TARGET
|
||||
critmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
seteffectwithchance
|
||||
tryfaintmon BS_TARGET, FALSE, NULL
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectAuraWheel: @ Aura Wheel can only be used by Morpeko
|
||||
jumpifspecies BS_ATTACKER, SPECIES_MORPEKO, BattleScript_EffectSpeedUpHit
|
||||
jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_HANGRY, BattleScript_EffectSpeedUpHit
|
||||
printstring STRINGID_BUTPOKEMONCANTUSETHEMOVE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectHyperspaceFury:
|
||||
jumpifspecies BS_ATTACKER, SPECIES_TREECKO, BattleScript_EffectHyperspaceFuryUnbound
|
||||
jumpifspecies BS_ATTACKER, SPECIES_MUDKIP, BattleScript_ButHoopaCantUseIt
|
||||
jumpifspecies BS_ATTACKER, SPECIES_HOOPA_UNBOUND, BattleScript_EffectHyperspaceFuryUnbound
|
||||
jumpifspecies BS_ATTACKER, SPECIES_HOOPA, BattleScript_ButHoopaCantUseIt
|
||||
printstring STRINGID_BUTPOKEMONCANTUSETHEMOVE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_MoveEnd
|
||||
@ -734,9 +773,30 @@ BattleScript_EffectAttackerDefenseDownHit:
|
||||
setmoveeffect MOVE_EFFECT_DEF_MINUS_1 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_EffectSleepHit:
|
||||
setmoveeffect MOVE_EFFECT_SLEEP
|
||||
goto BattleScript_EffectHit
|
||||
BattleScript_EffectRelicSong:
|
||||
setmoveeffect MOVE_EFFECT_RELIC_SONG | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
|
||||
attackcanceler
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
attackstring
|
||||
ppreduce
|
||||
critcalc
|
||||
damagecalc
|
||||
adjustdamage
|
||||
attackanimation
|
||||
waitanimation
|
||||
effectivenesssound
|
||||
hitanimation BS_TARGET
|
||||
waitstate
|
||||
healthbarupdate BS_TARGET
|
||||
datahpupdate BS_TARGET
|
||||
critmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
seteffectwithchance
|
||||
argumentstatuseffect
|
||||
tryfaintmon BS_TARGET, FALSE, NULL
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectAllySwitch:
|
||||
attackcanceler
|
||||
@ -6989,6 +7049,7 @@ BattleScript_AttackerFormChange::
|
||||
call BattleScript_AbilityPopUp
|
||||
printstring STRINGID_EMPTYSTRING3
|
||||
waitmessage 1
|
||||
BattleScript_AttackerFormChangeNoPopup::
|
||||
handleformchange BS_ATTACKER, 0
|
||||
handleformchange BS_ATTACKER, 1
|
||||
playanimation BS_ATTACKER, B_ANIM_FORM_CHANGE, NULL
|
||||
@ -7000,6 +7061,21 @@ BattleScript_AttackerFormChangeEnd3::
|
||||
call BattleScript_AttackerFormChange
|
||||
end3
|
||||
|
||||
BattleScript_AttackerFormChangeEnd3NoPopup::
|
||||
call BattleScript_AttackerFormChangeNoPopup
|
||||
|
||||
BattleScript_AttackerFormChangeMoveEffect::
|
||||
waitmessage 1
|
||||
handleformchange BS_ATTACKER, 0
|
||||
handleformchange BS_ATTACKER, 1
|
||||
playanimation BS_ATTACKER, B_ANIM_FORM_CHANGE, NULL
|
||||
waitanimation
|
||||
copybyte sBATTLER, gBattlerAttacker
|
||||
printstring STRINGID_PKMNTRANSFORMED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
handleformchange BS_ATTACKER, 2
|
||||
end3
|
||||
|
||||
BattleScript_BallFetch::
|
||||
call BattleScript_AbilityPopUp
|
||||
printstring STRINGID_FETCHEDPOKEBALL
|
||||
|
@ -1,19 +0,0 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 0
|
||||
131 131 131
|
||||
123 123 123
|
||||
115 115 115
|
||||
106 106 106
|
||||
98 98 98
|
||||
82 82 82
|
||||
65 65 65
|
||||
49 49 49
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
Before Width: | Height: | Size: 6.9 KiB |
@ -2,14 +2,14 @@ JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 0
|
||||
131 131 131
|
||||
123 123 123
|
||||
115 115 115
|
||||
106 106 106
|
||||
98 98 98
|
||||
82 82 82
|
||||
65 65 65
|
||||
49 49 49
|
||||
48 48 48
|
||||
72 72 72
|
||||
88 88 88
|
||||
120 120 120
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
|
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 984 B |
@ -2,12 +2,12 @@ JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 0
|
||||
164 156 24
|
||||
156 148 24
|
||||
197 189 32
|
||||
172 164 32
|
||||
115 106 16
|
||||
0 0 0
|
||||
248 248 144
|
||||
224 224 120
|
||||
200 200 96
|
||||
176 176 72
|
||||
152 152 48
|
||||
120 120 16
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
|
@ -2,12 +2,12 @@ JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 0
|
||||
106 123 139
|
||||
90 106 139
|
||||
123 139 164
|
||||
123 139 197
|
||||
65 74 115
|
||||
0 0 0
|
||||
152 184 248
|
||||
128 160 240
|
||||
104 136 216
|
||||
80 112 192
|
||||
56 88 168
|
||||
24 56 136
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 1.7 KiB |
@ -2,10 +2,10 @@ JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 0
|
||||
131 205 230
|
||||
123 180 213
|
||||
115 156 205
|
||||
115 139 164
|
||||
128 200 232
|
||||
120 176 216
|
||||
112 152 200
|
||||
112 136 160
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 814 B |
@ -2,12 +2,12 @@ JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 0 0
|
||||
214 55 93
|
||||
199 40 78
|
||||
222 91 123
|
||||
223 96 127
|
||||
158 31 62
|
||||
0 0 0
|
||||
248 144 248
|
||||
224 120 224
|
||||
200 96 200
|
||||
176 72 176
|
||||
152 48 152
|
||||
120 16 120
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
|
Before Width: | Height: | Size: 2.0 KiB |
@ -929,5 +929,6 @@ extern u8 gBattleControllerData[MAX_BATTLERS_COUNT];
|
||||
extern bool8 gHasFetchedBall;
|
||||
extern u8 gLastUsedBall;
|
||||
extern u16 gLastThrownBall;
|
||||
extern bool8 gSwapDamageCategory; // Photon Geyser, Shell Side Arm, Light That Burns the Sky
|
||||
|
||||
#endif // GUARD_BATTLE_H
|
||||
|
@ -54,6 +54,7 @@ bool32 IsRecycleEncouragedItem(u16 item);
|
||||
bool32 CanKnockOffItem(u8 battler, u16 item);
|
||||
bool32 IsAbilityOfRating(u16 ability, s8 rating);
|
||||
s8 GetAbilityRating(u16 ability);
|
||||
bool32 AI_IsAbilityOnSide(u32 battlerId, u32 ability);
|
||||
|
||||
// stat stage checks
|
||||
bool32 AnyStatIsRaised(u8 battlerId);
|
||||
@ -120,7 +121,6 @@ bool32 IsSemiInvulnerable(u8 battlerDef, u16 move);
|
||||
|
||||
// status checks
|
||||
bool32 AI_CanBeBurned(u8 battler, u16 ability);
|
||||
bool32 AI_CanBePoisoned(u8 battler, u16 ability);
|
||||
bool32 AI_CanBeConfused(u8 battler, u16 ability);
|
||||
bool32 AI_CanSleep(u8 battler, u16 ability);
|
||||
bool32 IsBattlerIncapacitated(u8 battler, u16 ability);
|
||||
|
@ -310,6 +310,5 @@ extern const u8 gText_BattleTourney[];
|
||||
|
||||
extern const u16 gMissStringIds[];
|
||||
extern const u16 gStatUpStringIds[];
|
||||
extern const u16 gTrappingMoves[];
|
||||
|
||||
#endif // GUARD_BATTLE_MESSAGE_H
|
||||
|
@ -409,5 +409,7 @@ extern const u8 BattleScript_GooeyActivates[];
|
||||
extern const u8 BattleScript_PastelVeilActivates[];
|
||||
extern const u8 BattleScript_MimicryActivatesEnd3[];
|
||||
extern const u8 BattleScript_ApplyMimicry[];
|
||||
extern const u8 BattleScript_AttackerFormChangeEnd3NoPopup[];
|
||||
extern const u8 BattleScript_AttackerFormChangeMoveEffect[];
|
||||
|
||||
#endif // GUARD_BATTLE_SCRIPTS_H
|
||||
|
@ -357,7 +357,8 @@
|
||||
#define MOVE_EFFECT_INCINERATE 0x44
|
||||
#define MOVE_EFFECT_BUG_BITE 0x45
|
||||
#define MOVE_EFFECT_RECOIL_HP_25 0x46
|
||||
#define NUM_MOVE_EFFECTS 0x47
|
||||
#define MOVE_EFFECT_RELIC_SONG 0x47
|
||||
#define NUM_MOVE_EFFECTS 0x48
|
||||
|
||||
#define MOVE_EFFECT_AFFECTS_USER 0x4000
|
||||
#define MOVE_EFFECT_CERTAIN 0x8000
|
||||
|
@ -565,7 +565,8 @@
|
||||
#define TRAP_ANIM_WHIRLPOOL 2
|
||||
#define TRAP_ANIM_CLAMP 3
|
||||
#define TRAP_ANIM_SAND_TOMB 4
|
||||
#define TRAP_ANIM_INFESTATION 5
|
||||
#define TRAP_ANIM_MAGMA_STORM 5
|
||||
#define TRAP_ANIM_INFESTATION 6
|
||||
|
||||
// Weather defines for battle animation scripts.
|
||||
#define ANIM_WEATHER_NONE 0
|
||||
|
@ -47,6 +47,10 @@
|
||||
#define SPECIES_GRENINJA_ASH 10017
|
||||
#define SPECIES_HOOPA 0
|
||||
#define SPECIES_HOOPA_UNBOUND 10018
|
||||
#define SPECIES_MELOETTA 0
|
||||
#define SPECIES_MELOETTA_PIROUETTE 10019
|
||||
#define SPECIES_MORPEKO 0
|
||||
#define SPECIES_MORPEKO_HANGRY 10020
|
||||
#endif
|
||||
|
||||
// Items with peculiar battle effects.
|
||||
@ -166,6 +170,7 @@
|
||||
#define B_X_ITEMS_BUFF GEN_7 // In Gen7+, the X Items raise a stat by 2 stages instead of 1.
|
||||
#define B_MENTAL_HERB GEN_5 // In Gen5+, the Mental Herb cures Infatuation, Taunt, Encore, Torment, Heal Block, and Disable
|
||||
#define B_TRAINERS_KNOCK_OFF_ITEMS TRUE // If TRUE, trainers can steal/swap your items (non-berries are restored after battle). In vanilla games trainers cannot steal items.
|
||||
#define B_SOUL_DEW_BOOST GEN_7 // In Gens3-6, Soul Dew boosts Lati@s' Sp. Atk and Sp. Def. In Gen7+ it boosts the power of their Psychic and Dragon type moves instead.
|
||||
|
||||
// Flag settings
|
||||
// To use the following features in scripting, replace the 0s with the flag ID you're assigning it to.
|
||||
|
@ -350,7 +350,7 @@
|
||||
#define EFFECT_GEOMANCY 344
|
||||
#define EFFECT_FAIRY_LOCK 345
|
||||
#define EFFECT_ALLY_SWITCH 346
|
||||
#define EFFECT_SLEEP_HIT 347
|
||||
#define EFFECT_RELIC_SONG 347
|
||||
#define EFFECT_ATTACKER_DEFENSE_DOWN_HIT 348
|
||||
#define EFFECT_BODY_PRESS 349
|
||||
#define EFFECT_EERIE_SPELL 350
|
||||
@ -375,7 +375,10 @@
|
||||
#define EFFECT_SPARKLY_SWIRL 369
|
||||
#define EFFECT_PLASMA_FISTS 370
|
||||
#define EFFECT_HYPERSPACE_FURY 371
|
||||
#define EFFECT_AURA_WHEEL 372
|
||||
#define EFFECT_PHOTON_GEYSER 373
|
||||
#define EFFECT_SHELL_SIDE_ARM 374
|
||||
|
||||
#define NUM_BATTLE_MOVE_EFFECTS 372
|
||||
#define NUM_BATTLE_MOVE_EFFECTS 375
|
||||
|
||||
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
||||
|
@ -199,6 +199,8 @@
|
||||
#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 126
|
||||
#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 127
|
||||
#define VARIOUS_TRY_TO_APPLY_MIMICRY 128
|
||||
#define VARIOUS_PHOTON_GEYSER_CHECK 129
|
||||
#define VARIOUS_SHELL_SIDE_ARM_CHECK 130
|
||||
|
||||
// Cmd_manipulatedamage
|
||||
#define DMG_CHANGE_SIGN 0
|
||||
|
@ -410,7 +410,7 @@
|
||||
#define STRINGID_PKMNTWISTEDDIMENSIONS 406
|
||||
#define STRINGID_POINTEDSTONESFLOAT 407
|
||||
#define STRINGID_CLOAKEDINMYSTICALMOONLIGHT 408
|
||||
#define STRINGID_TRAPPERBYSWIRLINGMAGMA 409
|
||||
#define STRINGID_TRAPPEDBYSWIRLINGMAGMA 409
|
||||
#define STRINGID_VANISHEDINSTANTLY 410
|
||||
#define STRINGID_PROTECTEDTEAM 411
|
||||
#define STRINGID_SHAREDITSGUARD 412
|
||||
|
@ -4941,7 +4941,6 @@ extern const u32 gBattleAnimBgImage_SpacialRend[];
|
||||
extern const u32 gBattleAnimBgPalette_SpacialRend[];
|
||||
extern const u32 gBattleAnimBgTilemap_SpacialRendOpponent[];
|
||||
extern const u32 gBattleAnimBgTilemap_SpacialRendPlayer[];
|
||||
extern const u32 gBattleAnimBgImage_DarkVoid[];
|
||||
extern const u32 gBattleAnimBgPalette_DarkVoid[];
|
||||
extern const u32 gBattleAnimBgTilemap_DarkVoid[];
|
||||
extern const u32 gBattleAnimBgPalette_Dark[];
|
||||
|
@ -578,6 +578,21 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
||||
{
|
||||
switch (AI_DATA->defAbility)
|
||||
{
|
||||
case ABILITY_MAGIC_GUARD:
|
||||
switch (moveEffect)
|
||||
{
|
||||
case EFFECT_POISON:
|
||||
case EFFECT_WILL_O_WISP:
|
||||
case EFFECT_TOXIC:
|
||||
case EFFECT_LEECH_SEED:
|
||||
score -= 5;
|
||||
break;
|
||||
case EFFECT_CURSE:
|
||||
if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GHOST)) // Don't use Curse if you're a ghost type vs a Magic Guard user, they'll take no damage.
|
||||
score -= 5;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ABILITY_VOLT_ABSORB:
|
||||
case ABILITY_MOTOR_DRIVE:
|
||||
case ABILITY_LIGHTNING_ROD:
|
||||
@ -2949,7 +2964,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
||||
}
|
||||
}
|
||||
|
||||
// ability checks
|
||||
// attacker ability checks
|
||||
switch (AI_DATA->atkAbility)
|
||||
{
|
||||
case ABILITY_MOXIE:
|
||||
@ -2960,21 +2975,6 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
||||
score += 8; // prioritize killing target for stat boost
|
||||
}
|
||||
break;
|
||||
case ABILITY_MAGIC_GUARD:
|
||||
switch (moveEffect)
|
||||
{
|
||||
case EFFECT_POISON:
|
||||
case EFFECT_WILL_O_WISP:
|
||||
case EFFECT_TOXIC:
|
||||
case EFFECT_LEECH_SEED:
|
||||
score -= 5;
|
||||
break;
|
||||
case EFFECT_CURSE:
|
||||
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST))
|
||||
score -= 5;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
} // ability checks
|
||||
|
||||
// move effect checks
|
||||
@ -3999,7 +3999,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
||||
score += 2;
|
||||
break;
|
||||
case HOLD_EFFECT_TOXIC_ORB:
|
||||
if (!ShouldPoisonSelf(battlerAtk, AI_DATA->atkAbility) && AI_CanBePoisoned(battlerDef, AI_DATA->defAbility))
|
||||
if (!ShouldPoisonSelf(battlerAtk, AI_DATA->atkAbility))
|
||||
score += 2;
|
||||
break;
|
||||
case HOLD_EFFECT_FLAME_ORB:
|
||||
@ -4305,7 +4305,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
|
||||
if (!IsBattlerGrounded(battlerDef))
|
||||
score += 3;
|
||||
break;
|
||||
case EFFECT_SLEEP_HIT: // Relic Song
|
||||
case EFFECT_RELIC_SONG:
|
||||
#if (defined SPECIES_MELOETTA && defined SPECIES_MELOETTA_PIROUETTE)
|
||||
if (AI_DATA->atkSpecies == SPECIES_MELOETTA && gBattleMons[battlerDef].defense < gBattleMons[battlerDef].spDefense)
|
||||
score += 3; // Change to pirouette if can do more damage
|
||||
|
@ -1082,6 +1082,16 @@ bool32 CanTargetFaintAiWithMod(u8 battlerDef, u8 battlerAtk, s32 hpMod, s32 dmgM
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 AI_IsAbilityOnSide(u32 battlerId, u32 ability)
|
||||
{
|
||||
if (IsBattlerAlive(battlerId) && AI_GetAbility(battlerId) == ability)
|
||||
return TRUE;
|
||||
else if (IsBattlerAlive(BATTLE_PARTNER(battlerId)) && AI_GetAbility(BATTLE_PARTNER(battlerId)) == ability)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// does NOT include ability suppression checks
|
||||
s32 AI_GetAbility(u32 battlerId)
|
||||
{
|
||||
@ -2629,20 +2639,32 @@ bool32 AI_CanPutToSleep(u8 battlerAtk, u8 battlerDef, u16 defAbility, u16 move,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 AI_CanBePoisoned(u8 battler, u16 ability)
|
||||
static bool32 AI_CanPoisonType(u8 battlerAttacker, u8 battlerTarget)
|
||||
{
|
||||
if (ability == ABILITY_IMMUNITY
|
||||
|| IsAbilityOnSide(battler, ABILITY_PASTEL_VEIL)
|
||||
|| gBattleMons[battler].status1 & STATUS1_ANY
|
||||
|| IsAbilityStatusProtected(battler)
|
||||
|| gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD)
|
||||
return ((AI_GetAbility(battlerAttacker) == ABILITY_CORROSION && gBattleMoves[gCurrentMove].split == SPLIT_STATUS)
|
||||
|| !(IS_BATTLER_OF_TYPE(battlerTarget, TYPE_POISON) || IS_BATTLER_OF_TYPE(battlerTarget, TYPE_STEEL)));
|
||||
}
|
||||
|
||||
static bool32 AI_CanBePoisoned(u8 battlerAtk, u8 battlerDef)
|
||||
{
|
||||
u16 ability = AI_GetAbility(battlerDef);
|
||||
|
||||
if (!(AI_CanPoisonType(battlerAtk, battlerDef))
|
||||
|| gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_SAFEGUARD
|
||||
|| gBattleMons[battlerDef].status1 & STATUS1_ANY
|
||||
|| ability == ABILITY_IMMUNITY
|
||||
|| ability == ABILITY_COMATOSE
|
||||
|| AI_IsAbilityOnSide(battlerDef, ABILITY_PASTEL_VEIL)
|
||||
|| gBattleMons[battlerDef].status1 & STATUS1_ANY
|
||||
|| IsAbilityStatusProtected(battlerDef)
|
||||
|| AI_IsTerrainAffected(battlerDef, STATUS_FIELD_MISTY_TERRAIN))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 ShouldPoisonSelf(u8 battler, u16 ability)
|
||||
{
|
||||
if (AI_CanBePoisoned(battler, ability) && (
|
||||
if (AI_CanBePoisoned(battler, battler) && (
|
||||
ability == ABILITY_MARVEL_SCALE
|
||||
|| ability == ABILITY_POISON_HEAL
|
||||
|| ability == ABILITY_QUICK_FEET
|
||||
@ -2657,7 +2679,7 @@ bool32 ShouldPoisonSelf(u8 battler, u16 ability)
|
||||
|
||||
bool32 AI_CanPoison(u8 battlerAtk, u8 battlerDef, u16 defAbility, u16 move, u16 partnerMove)
|
||||
{
|
||||
if (!AI_CanBePoisoned(battlerDef, defAbility)
|
||||
if (!AI_CanBePoisoned(battlerAtk, battlerDef)
|
||||
|| AI_GetMoveEffectiveness(move, battlerAtk, battlerDef) == AI_EFFECTIVENESS_x0
|
||||
|| DoesSubstituteBlockMove(battlerAtk, battlerDef, move)
|
||||
|| PartnerMoveEffectIsStatusSameTarget(BATTLE_PARTNER(battlerAtk), battlerDef, partnerMove))
|
||||
@ -2760,7 +2782,7 @@ bool32 AI_CanBeInfatuated(u8 battlerAtk, u8 battlerDef, u16 defAbility, u8 atkGe
|
||||
|| atkGender == defGender
|
||||
|| atkGender == MON_GENDERLESS
|
||||
|| defGender == MON_GENDERLESS
|
||||
|| IsAbilityOnSide(battlerDef, ABILITY_AROMA_VEIL))
|
||||
|| AI_IsAbilityOnSide(battlerDef, ABILITY_AROMA_VEIL))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -2059,7 +2059,7 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
|
||||
[BG_ROCK_WRECKER] = {gBattleAnimBgImage_Hurricane, gBattleAnimBgPalette_RockWrecker, gBattleAnimBgTilemap_Hurricane},
|
||||
[BG_SPACIAL_REND_ON_OPPONENT] = {gBattleAnimBgImage_SpacialRend, gBattleAnimBgPalette_SpacialRend, gBattleAnimBgTilemap_SpacialRendOpponent},
|
||||
[BG_SPACIAL_REND_ON_PLAYER] = {gBattleAnimBgImage_SpacialRend, gBattleAnimBgPalette_SpacialRend, gBattleAnimBgTilemap_SpacialRendPlayer},
|
||||
[BG_DARK_VOID] = {gBattleAnimBgImage_DarkVoid, gBattleAnimBgPalette_DarkVoid, gBattleAnimBgTilemap_DarkVoid},
|
||||
[BG_DARK_VOID] = {gBattleAnimBgImage_Waterfall, gBattleAnimBgPalette_DarkVoid, gBattleAnimBgTilemap_DarkVoid},
|
||||
[BG_WATER] = {gBattleAnimBgImage_HydroPump, gBattleAnimBgPalette_HydroPump, gBattleAnimBgTilemap_HydroPump},
|
||||
[BG_NIGHTMARE] = {gBattleAnimBgImage_Nightmare, gBattleAnimBgPalette_Nightmare, gBattleAnimBgTilemap_Nightmare},
|
||||
[BG_LEAF_STORM] = {gBattleAnimBgImage_LeafStorm, gBattleAnimBgPalette_LeafStorm, gBattleAnimBgTilemap_LeafStorm},
|
||||
|
@ -5064,3 +5064,12 @@ void AnimTask_PrimalReversion(u8 taskId)
|
||||
gBattleAnimArgs[0] = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void AnimTask_ShellSideArm(u8 taskId)
|
||||
{
|
||||
if (gSwapDamageCategory)
|
||||
gBattleAnimArgs[0] = TRUE;
|
||||
else
|
||||
gBattleAnimArgs[0] = FALSE;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
@ -2496,6 +2496,8 @@ void AnimTask_GetTrappedMoveAnimId(u8 taskId)
|
||||
gBattleAnimArgs[0] = TRAP_ANIM_CLAMP;
|
||||
else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_SAND_TOMB)
|
||||
gBattleAnimArgs[0] = TRAP_ANIM_SAND_TOMB;
|
||||
else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_MAGMA_STORM)
|
||||
gBattleAnimArgs[0] = TRAP_ANIM_MAGMA_STORM;
|
||||
else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_INFESTATION)
|
||||
gBattleAnimArgs[0] = TRAP_ANIM_INFESTATION;
|
||||
else
|
||||
|
@ -232,6 +232,7 @@ EWRAM_DATA struct TotemBoost gTotemBoosts[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA bool8 gHasFetchedBall = FALSE;
|
||||
EWRAM_DATA u8 gLastUsedBall = 0;
|
||||
EWRAM_DATA u16 gLastThrownBall = 0;
|
||||
EWRAM_DATA bool8 gSwapDamageCategory = FALSE; // Photon Geyser, Shell Side Arm, Light That Burns the Sky
|
||||
|
||||
// IWRAM common vars
|
||||
void (*gPreBattleCallback1)(void);
|
||||
@ -2941,6 +2942,8 @@ static void BattleStartClearSetData(void)
|
||||
gBattleStruct->usedHeldItems[i][1] = 0;
|
||||
gBattleStruct->itemStolen[i].originalItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
|
||||
}
|
||||
|
||||
gSwapDamageCategory = FALSE; // Photon Geyser, Shell Side Arm, Light That Burns the Sky
|
||||
}
|
||||
|
||||
void SwitchInClearSetData(void)
|
||||
@ -5229,6 +5232,10 @@ void SetTypeBeforeUsingMove(u16 move, u8 battlerAtk)
|
||||
{
|
||||
gBattleStruct->dynamicMoveType = 0x80 | TYPE_ELECTRIC;
|
||||
}
|
||||
else if (move == MOVE_AURA_WHEEL && gBattleMons[battlerAtk].species == SPECIES_MORPEKO_HANGRY)
|
||||
{
|
||||
gBattleStruct->dynamicMoveType = 0x80 | TYPE_DARK;
|
||||
}
|
||||
|
||||
// Check if a gem should activate.
|
||||
GET_MOVE_TYPE(move, moveType);
|
||||
|
@ -1200,7 +1200,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
||||
[STRINGID_PKMNTWISTEDDIMENSIONS - 12] = sText_PkmnTwistedDimensions,
|
||||
[STRINGID_POINTEDSTONESFLOAT - 12] = sText_PointedStonesFloat,
|
||||
[STRINGID_CLOAKEDINMYSTICALMOONLIGHT - 12] = sText_CloakedInMysticalMoonlight,
|
||||
[STRINGID_TRAPPERBYSWIRLINGMAGMA - 12] = sText_TrappedBySwirlingMagma,
|
||||
[STRINGID_TRAPPEDBYSWIRLINGMAGMA - 12] = sText_TrappedBySwirlingMagma,
|
||||
[STRINGID_VANISHEDINSTANTLY - 12] = sText_VanishedInstantly,
|
||||
[STRINGID_PROTECTEDTEAM - 12] = sText_ProtectedTeam,
|
||||
[STRINGID_SHAREDITSGUARD - 12] = sText_SharedItsGuard,
|
||||
@ -1535,16 +1535,17 @@ const u16 gFirstTurnOfTwoStringIds[] =
|
||||
[B_MSG_TURN1_FREEZE_SHOCK] = STRINGID_CLOAKEDINAFREEZINGLIGHT,
|
||||
};
|
||||
|
||||
// Index copied from move's index in gTrappingMoves
|
||||
// Index copied from move's index in sTrappingMoves
|
||||
const u16 gWrappedStringIds[] =
|
||||
{
|
||||
STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND
|
||||
STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP
|
||||
STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_FIRE_SPIN
|
||||
STRINGID_PKMNCLAMPED, // MOVE_CLAMP
|
||||
STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_WHIRLPOOL
|
||||
STRINGID_PKMNTRAPPEDBYSANDTOMB,// MOVE_SAND_TOMB
|
||||
STRINGID_INFESTATION, // MOVE_INFESTATION
|
||||
STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND
|
||||
STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP
|
||||
STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_FIRE_SPIN
|
||||
STRINGID_PKMNCLAMPED, // MOVE_CLAMP
|
||||
STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_WHIRLPOOL
|
||||
STRINGID_PKMNTRAPPEDBYSANDTOMB, // MOVE_SAND_TOMB
|
||||
STRINGID_TRAPPEDBYSWIRLINGMAGMA, // MOVE_MAGMA_STORM
|
||||
STRINGID_INFESTATION, // MOVE_INFESTATION
|
||||
};
|
||||
|
||||
const u16 gMistUsedStringIds[] =
|
||||
@ -1755,11 +1756,6 @@ const u16 gCaughtMonStringIds[] =
|
||||
[B_MSG_LANETTES_BOX_FULL] = STRINGID_PKMNBOXLANETTESPCFULL,
|
||||
};
|
||||
|
||||
const u16 gTrappingMoves[] =
|
||||
{
|
||||
MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, MOVE_INFESTATION, 0xFFFF
|
||||
};
|
||||
|
||||
const u16 gRoomsStringIds[] =
|
||||
{
|
||||
STRINGID_PKMNTWISTEDDIMENSIONS, STRINGID_TRICKROOMENDS,
|
||||
|
@ -279,6 +279,11 @@ static const s32 sExperienceScalingFactors[] =
|
||||
159767,
|
||||
};
|
||||
|
||||
static const u16 sTrappingMoves[] =
|
||||
{
|
||||
MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, MOVE_MAGMA_STORM, MOVE_INFESTATION, 0xFFFF
|
||||
};
|
||||
|
||||
#define STAT_CHANGE_WORKED 0
|
||||
#define STAT_CHANGE_DIDNT_WORK 1
|
||||
|
||||
@ -1499,7 +1504,7 @@ static void Cmd_attackcanceler(void)
|
||||
&& ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)))
|
||||
&& gBattleMoves[gCurrentMove].effect != EFFECT_SUCKER_PUNCH)
|
||||
{
|
||||
if (gBattleMoves[gCurrentMove].flags & FLAG_MAKES_CONTACT)
|
||||
if (IsMoveMakingContact(gCurrentMove, gBattlerAttacker))
|
||||
gProtectStructs[gBattlerAttacker].touchedProtectLike = TRUE;
|
||||
CancelMultiTurnMoves(gBattlerAttacker);
|
||||
gMoveResultFlags |= MOVE_RESULT_MISSED;
|
||||
@ -2978,9 +2983,9 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
||||
|
||||
for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; gBattleCommunication[MULTISTRING_CHOOSER]++)
|
||||
{
|
||||
if (gBattleCommunication[MULTISTRING_CHOOSER] > 5)
|
||||
if (gBattleCommunication[MULTISTRING_CHOOSER] > ARRAY_COUNT(sTrappingMoves) - 1)
|
||||
break;
|
||||
if (gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove)
|
||||
if (sTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -3409,6 +3414,21 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
||||
gBattlescriptCurrInstr = BattleScript_MoveEffectBugBite;
|
||||
}
|
||||
break;
|
||||
case MOVE_EFFECT_RELIC_SONG:
|
||||
if (GetBattlerAbility(gBattlerAttacker) != ABILITY_SHEER_FORCE)
|
||||
{
|
||||
if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA)
|
||||
{
|
||||
gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA_PIROUETTE;
|
||||
BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeMoveEffect);
|
||||
}
|
||||
else if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA_PIROUETTE)
|
||||
{
|
||||
gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA;
|
||||
BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeMoveEffect);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8297,6 +8317,9 @@ static void Cmd_various(void)
|
||||
case VARIOUS_ARGUMENT_STATUS_EFFECT:
|
||||
switch (gBattleMoves[gCurrentMove].argument)
|
||||
{
|
||||
case STATUS1_SLEEP:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_SLEEP;
|
||||
break;
|
||||
case STATUS1_BURN:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_BURN;
|
||||
break;
|
||||
@ -9009,6 +9032,61 @@ static void Cmd_various(void)
|
||||
else
|
||||
gBattlescriptCurrInstr += 9;
|
||||
return;
|
||||
case VARIOUS_PHOTON_GEYSER_CHECK:
|
||||
{
|
||||
u32 attackerAtkStat = gBattleMons[gBattlerAttacker].attack;
|
||||
u8 attackerAtkStage = gBattleMons[gBattlerAttacker].statStages[STAT_ATK];
|
||||
u32 attackerSpAtkStat = gBattleMons[gBattlerAttacker].spAttack;
|
||||
|
||||
gSwapDamageCategory = FALSE;
|
||||
|
||||
attackerAtkStat *= gStatStageRatios[attackerAtkStage][0];
|
||||
attackerAtkStat /= gStatStageRatios[attackerAtkStage][1];
|
||||
|
||||
attackerAtkStage = gBattleMons[gBattlerAttacker].statStages[STAT_SPATK];
|
||||
attackerSpAtkStat *= gStatStageRatios[attackerAtkStage][0];
|
||||
attackerSpAtkStat /= gStatStageRatios[attackerAtkStage][1];
|
||||
|
||||
if (attackerAtkStat > attackerSpAtkStat)
|
||||
gSwapDamageCategory = TRUE;
|
||||
break;
|
||||
}
|
||||
case VARIOUS_SHELL_SIDE_ARM_CHECK: // 0% chance GameFreak actually checks this way according to DaWobblefet, but this is the only functional explanation at the moment
|
||||
{
|
||||
u32 attackerAtkStat = gBattleMons[gBattlerAttacker].attack;
|
||||
u32 targetDefStat = gBattleMons[gBattlerTarget].defense;
|
||||
u32 attackerSpAtkStat = gBattleMons[gBattlerAttacker].spAttack;
|
||||
u32 targetSpDefStat = gBattleMons[gBattlerTarget].spDefense;
|
||||
u8 statStage;
|
||||
u32 physical;
|
||||
u32 special;
|
||||
|
||||
gSwapDamageCategory = FALSE;
|
||||
|
||||
statStage = gBattleMons[gBattlerAttacker].statStages[STAT_ATK];
|
||||
attackerAtkStat *= gStatStageRatios[statStage][0];
|
||||
attackerAtkStat /= gStatStageRatios[statStage][1];
|
||||
|
||||
statStage = gBattleMons[gBattlerTarget].statStages[STAT_DEF];
|
||||
targetDefStat *= gStatStageRatios[statStage][0];
|
||||
targetDefStat /= gStatStageRatios[statStage][1];
|
||||
|
||||
physical = ((((2 * gBattleMons[gBattlerAttacker].level / 5 + 2) * gBattleMoves[gCurrentMove].power * attackerAtkStat) / targetDefStat) / 50);
|
||||
|
||||
statStage = gBattleMons[gBattlerAttacker].statStages[STAT_SPATK];
|
||||
attackerSpAtkStat *= gStatStageRatios[statStage][0];
|
||||
attackerSpAtkStat /= gStatStageRatios[statStage][1];
|
||||
|
||||
statStage = gBattleMons[gBattlerTarget].statStages[STAT_SPDEF];
|
||||
targetSpDefStat *= gStatStageRatios[statStage][0];
|
||||
targetSpDefStat /= gStatStageRatios[statStage][1];
|
||||
|
||||
special = ((((2 * gBattleMons[gBattlerAttacker].level / 5 + 2) * gBattleMoves[gCurrentMove].power * attackerSpAtkStat) / targetSpDefStat) / 50);
|
||||
|
||||
if (((physical > special) || (physical == special && (Random() % 2) == 0)))
|
||||
gSwapDamageCategory = TRUE;
|
||||
break;
|
||||
}
|
||||
case VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED:
|
||||
if (IsLeafGuardProtected(gActiveBattler))
|
||||
{
|
||||
@ -13343,4 +13421,3 @@ static bool32 CriticalCapture(u32 odds)
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -4635,6 +4635,22 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
case ABILITY_HUNGER_SWITCH:
|
||||
if (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED))
|
||||
{
|
||||
if (gBattleMons[battler].species == SPECIES_MORPEKO)
|
||||
{
|
||||
gBattleMons[battler].species = SPECIES_MORPEKO_HANGRY;
|
||||
BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3NoPopup);
|
||||
}
|
||||
else if (gBattleMons[battler].species == SPECIES_MORPEKO_HANGRY)
|
||||
{
|
||||
gBattleMons[battler].species = SPECIES_MORPEKO;
|
||||
BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3NoPopup);
|
||||
}
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -4900,7 +4916,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
||||
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
|
||||
&& IsBattlerAlive(gBattlerAttacker)
|
||||
&& TARGET_TURN_DAMAGED
|
||||
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
|
||||
&& (IsMoveMakingContact(move, gBattlerAttacker)))
|
||||
{
|
||||
switch (gBattleMons[gBattlerAttacker].ability)
|
||||
{
|
||||
@ -5119,7 +5135,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
||||
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
|
||||
&& gBattleMons[gBattlerAttacker].hp != 0
|
||||
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
|
||||
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
|
||||
&& (IsMoveMakingContact(move, gBattlerAttacker))
|
||||
&& TARGET_TURN_DAMAGED
|
||||
&& CanBeBurned(gBattlerAttacker)
|
||||
&& (Random() % 3) == 0)
|
||||
@ -5135,7 +5151,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
||||
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
|
||||
&& gBattleMons[gBattlerAttacker].hp != 0
|
||||
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
|
||||
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
|
||||
&& (IsMoveMakingContact(move, gBattlerAttacker))
|
||||
&& TARGET_TURN_DAMAGED
|
||||
&& gBattleMons[gBattlerTarget].hp != 0
|
||||
&& (Random() % 3) == 0
|
||||
@ -5211,7 +5227,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
||||
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
|
||||
&& TARGET_TURN_DAMAGED
|
||||
&& IsBattlerAlive(battler)
|
||||
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
|
||||
&& (IsMoveMakingContact(move, gBattlerAttacker))
|
||||
&& !(gStatuses3[gBattlerAttacker] & STATUS3_PERISH_SONG))
|
||||
{
|
||||
if (!(gStatuses3[battler] & STATUS3_PERISH_SONG))
|
||||
@ -7395,13 +7411,24 @@ u32 GetBattlerHoldEffectParam(u8 battlerId)
|
||||
bool32 IsMoveMakingContact(u16 move, u8 battlerAtk)
|
||||
{
|
||||
if (!(gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
|
||||
return FALSE;
|
||||
{
|
||||
if (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gSwapDamageCategory)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
else if (GetBattlerAbility(battlerAtk) == ABILITY_LONG_REACH)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else if (GetBattlerHoldEffect(battlerAtk, TRUE) == HOLD_EFFECT_PROTECTIVE_PADS)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 IsBattlerGrounded(u8 battlerId)
|
||||
@ -7909,7 +7936,7 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe
|
||||
MulModifier(&modifier, UQ_4_12(1.3));
|
||||
break;
|
||||
case ABILITY_TOUGH_CLAWS:
|
||||
if (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
|
||||
if (IsMoveMakingContact(move, battlerAtk))
|
||||
MulModifier(&modifier, UQ_4_12(1.3));
|
||||
break;
|
||||
case ABILITY_STRONG_JAW:
|
||||
@ -8059,7 +8086,11 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe
|
||||
MulModifier(&modifier, holdEffectModifier);
|
||||
break;
|
||||
case HOLD_EFFECT_SOUL_DEW:
|
||||
#if B_SOUL_DEW_BOOST >= GEN_7
|
||||
if ((gBattleMons[battlerAtk].species == SPECIES_LATIAS || gBattleMons[battlerAtk].species == SPECIES_LATIOS) && (moveType == TYPE_PSYCHIC || moveType == TYPE_DRAGON))
|
||||
#else
|
||||
if ((gBattleMons[battlerAtk].species == SPECIES_LATIAS || gBattleMons[battlerAtk].species == SPECIES_LATIOS) && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER))
|
||||
#endif
|
||||
MulModifier(&modifier, holdEffectModifier);
|
||||
break;
|
||||
case HOLD_EFFECT_GEMS:
|
||||
@ -8472,6 +8503,14 @@ static u32 CalcDefenseStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType,
|
||||
if (!usesDefStat)
|
||||
MulModifier(&modifier, UQ_4_12(1.5));
|
||||
break;
|
||||
#if B_SOUL_DEW_BOOST <= GEN_6
|
||||
case HOLD_EFFECT_SOUL_DEW:
|
||||
if ((gBattleMons[battlerDef].species == SPECIES_LATIAS || gBattleMons[battlerDef].species == SPECIES_LATIOS)
|
||||
&& !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
|
||||
&& !usesDefStat)
|
||||
MulModifier(&modifier, UQ_4_12(1.5));
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
// sandstorm sp.def boost for rock types
|
||||
@ -9034,6 +9073,7 @@ void UndoFormChange(u32 monId, u32 side, bool32 isSwitchingOut)
|
||||
// Changed Form ID Default Form ID Should change on switch
|
||||
{SPECIES_MIMIKYU_BUSTED, SPECIES_MIMIKYU, FALSE},
|
||||
{SPECIES_GRENINJA_ASH, SPECIES_GRENINJA_BATTLE_BOND, FALSE},
|
||||
{SPECIES_MELOETTA_PIROUETTE, SPECIES_MELOETTA, FALSE},
|
||||
{SPECIES_AEGISLASH_BLADE, SPECIES_AEGISLASH, TRUE},
|
||||
{SPECIES_DARMANITAN_ZEN_MODE, SPECIES_DARMANITAN, TRUE},
|
||||
{SPECIES_MINIOR, SPECIES_MINIOR_CORE_RED, TRUE},
|
||||
@ -9046,6 +9086,7 @@ void UndoFormChange(u32 monId, u32 side, bool32 isSwitchingOut)
|
||||
{SPECIES_WISHIWASHI_SCHOOL, SPECIES_WISHIWASHI, TRUE},
|
||||
{SPECIES_CRAMORANT_GORGING, SPECIES_CRAMORANT, TRUE},
|
||||
{SPECIES_CRAMORANT_GULPING, SPECIES_CRAMORANT, TRUE},
|
||||
{SPECIES_MORPEKO_HANGRY, SPECIES_MORPEKO, TRUE},
|
||||
};
|
||||
|
||||
currSpecies = GetMonData(&party[monId], MON_DATA_SPECIES, NULL);
|
||||
@ -9191,7 +9232,9 @@ bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 battlerId)
|
||||
|
||||
u8 GetBattleMoveSplit(u32 moveId)
|
||||
{
|
||||
if (IS_MOVE_STATUS(moveId) || B_PHYSICAL_SPECIAL_SPLIT >= GEN_4)
|
||||
if (gSwapDamageCategory) // Photon Geyser, Shell Side Arm, Light That Burns the Sky
|
||||
return SPLIT_PHYSICAL;
|
||||
else if (IS_MOVE_STATUS(moveId) || B_PHYSICAL_SPECIAL_SPLIT >= GEN_4)
|
||||
return gBattleMoves[moveId].split;
|
||||
else if (gBattleMoves[moveId].type < TYPE_MYSTERY)
|
||||
return SPLIT_PHYSICAL;
|
||||
|
@ -8614,7 +8614,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
|
||||
[MOVE_RELIC_SONG] =
|
||||
{
|
||||
.effect = EFFECT_SLEEP_HIT,
|
||||
.effect = EFFECT_RELIC_SONG,
|
||||
.power = 75,
|
||||
.type = TYPE_NORMAL,
|
||||
.accuracy = 100,
|
||||
@ -8624,6 +8624,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.argument = STATUS1_SLEEP,
|
||||
},
|
||||
|
||||
[MOVE_SECRET_SWORD] =
|
||||
@ -10454,7 +10455,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
|
||||
[MOVE_PHOTON_GEYSER] =
|
||||
{
|
||||
.effect = EFFECT_PLACEHOLDER, // Needs a custom move effect
|
||||
.effect = EFFECT_PHOTON_GEYSER,
|
||||
.power = 100,
|
||||
.type = TYPE_PSYCHIC,
|
||||
.accuracy = 100,
|
||||
@ -10462,7 +10463,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_FOES_AND_ALLY,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_TARGET_ABILITY_IGNORED,
|
||||
.split = SPLIT_SPECIAL,
|
||||
},
|
||||
|
||||
@ -11038,7 +11039,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
|
||||
[MOVE_AURA_WHEEL] =
|
||||
{
|
||||
.effect = EFFECT_SPEED_UP_HIT,
|
||||
.effect = EFFECT_AURA_WHEEL,
|
||||
.power = 110,
|
||||
.type = TYPE_ELECTRIC,
|
||||
.accuracy = 100,
|
||||
@ -11290,12 +11291,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
|
||||
[MOVE_SHELL_SIDE_ARM] =
|
||||
{
|
||||
.effect = EFFECT_PLACEHOLDER, //TODO
|
||||
.effect = EFFECT_SHELL_SIDE_ARM,
|
||||
.power = 90,
|
||||
.type = TYPE_POISON,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 20,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST,
|
||||
|
@ -2839,7 +2839,7 @@ static const u8 sMETEOR_BEAMDescription[] = _(
|
||||
"Sp. Attack before attacking.");
|
||||
|
||||
static const u8 sSHELL_SIDE_ARMDescription[] = _(
|
||||
"Uses higher of physical and\n"
|
||||
"Deals better of physical and\n"
|
||||
"special damage. May poison.");
|
||||
|
||||
static const u8 sMISTY_EXPLOSIONDescription[] = _(
|
||||
|
@ -1397,10 +1397,6 @@ const u32 gBattleAnimBgPalette_MagmaStorm[] = INCBIN_U32("graphics/battle_anims/
|
||||
//new battle bgs
|
||||
const u32 gBattleAnimBgPalette_GigaImpact[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact.gbapal.lz");
|
||||
|
||||
//const u32 gBattleAnimBgImage_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/trick_room.4bpp.lz");
|
||||
//const u32 gBattleAnimBgPalette_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/trick_room.gbapal.lz");
|
||||
//const u32 gBattleAnimBgTilemap_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/trick_room_map.bin.lz");
|
||||
|
||||
const u32 gBattleAnimBgImage_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hurricane.4bpp.lz");
|
||||
const u32 gBattleAnimBgPalette_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hurricane.gbapal.lz");
|
||||
const u32 gBattleAnimBgTilemap_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hurricane.bin.lz");
|
||||
@ -1412,11 +1408,6 @@ const u32 gBattleAnimBgPalette_SpacialRend[] = INCBIN_U32("graphics/battle_anims
|
||||
const u32 gBattleAnimBgTilemap_SpacialRendOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/spacial_rend_opponent.bin.lz");
|
||||
const u32 gBattleAnimBgTilemap_SpacialRendPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/spacial_rend_player.bin.lz");
|
||||
|
||||
const u32 gBattleAnimBgImage_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark_void.4bpp.lz");
|
||||
const u32 gBattleAnimBgPalette_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark_void.gbapal.lz");
|
||||
const u32 gBattleAnimBgTilemap_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark_void.bin.lz");
|
||||
|
||||
|
||||
const u32 gBattleAnimBgPalette_SludgeWave[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/sludge_wave.gbapal.lz");
|
||||
|
||||
const u32 gBattleAnimBgImage_Aeroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/aeroblast_tiles.4bpp.lz");
|
||||
@ -1441,10 +1432,6 @@ const u32 gBattleAnimBgImage_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle
|
||||
const u32 gBattleAnimBgPalette_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/clangorous_soulblaze.gbapal.lz");
|
||||
const u32 gBattleAnimBgTilemap_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/clangorous_soulblaze.bin.lz");
|
||||
|
||||
//const u32 gBattleAnimBgImage_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/dark_void.4bpp.lz");
|
||||
//const u32 gBattleAnimBgPalette_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/dark_void.gbapal.lz");
|
||||
//const u32 gBattleAnimBgTilemap_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/dark_void.bin.lz");
|
||||
|
||||
const u32 gBattleAnimBgPalette_DynamaxCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/dynamax_cannon.gbapal.lz");
|
||||
|
||||
const u32 gBattleAnimBgImage_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/electric_terrain.4bpp.lz");
|
||||
@ -1497,8 +1484,6 @@ const u32 gBattleAnimBgImage_LeafStorm[] = INCBIN_U32("graphics/battle_anims/bac
|
||||
const u32 gBattleAnimBgPalette_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/leaf_storm.gbapal.lz");
|
||||
const u32 gBattleAnimBgTilemap_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/leaf_storm.bin.lz");
|
||||
|
||||
const u32 gBattleAnimBgPalette_MagicRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/magic_room.gbapal.lz");
|
||||
|
||||
const u32 gBattleAnimBgImage_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/malicious_moonsault.4bpp.lz");
|
||||
const u32 gBattleAnimBgPalette_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/malicious_moonsault.gbapal.lz");
|
||||
const u32 gBattleAnimBgTilemap_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/malicious_moonsault.bin.lz");
|
||||
@ -1553,6 +1538,10 @@ const u32 gBattleAnimBgImage_TrickRoom[] = INCBIN_U32("graphics/battle_anims/bac
|
||||
const u32 gBattleAnimBgPalette_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/trick_room.gbapal.lz");
|
||||
const u32 gBattleAnimBgTilemap_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/trick_room.bin.lz");
|
||||
|
||||
const u32 gBattleAnimBgPalette_MagicRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/magic_room.gbapal.lz");
|
||||
|
||||
const u32 gBattleAnimBgPalette_WonderRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/wonder_room.gbapal.lz");
|
||||
|
||||
const u32 gBattleAnimBgImage_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/twinkle_tackle.4bpp.lz");
|
||||
const u32 gBattleAnimBgPalette_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/twinkle_tackle.gbapal.lz");
|
||||
const u32 gBattleAnimBgTilemap_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/twinkle_tackle.bin.lz");
|
||||
@ -1565,7 +1554,8 @@ const u32 gBattleAnimBgImage_Waterfall[] = INCBIN_U32("graphics/battle_anims/bac
|
||||
const u32 gBattleAnimBgPalette_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/waterfall.gbapal.lz");
|
||||
const u32 gBattleAnimBgTilemap_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/waterfall.bin.lz");
|
||||
|
||||
const u32 gBattleAnimBgPalette_WonderRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/wonder_room.gbapal.lz");
|
||||
const u32 gBattleAnimBgPalette_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/dark_void.gbapal.lz");
|
||||
const u32 gBattleAnimBgTilemap_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/dark_void.bin.lz");
|
||||
|
||||
const u32 gBattleAnimBgImage_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/zmove_activate.4bpp.lz");
|
||||
const u32 gBattleAnimBgPalette_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/zmove_activate.gbapal.lz");
|
||||
|