Sync battle anim - normal

This commit is contained in:
GriffinR
2022-08-17 13:30:22 -04:00
parent efa422d6fa
commit a1fcfa2f26
4 changed files with 314 additions and 233 deletions
+43 -43
View File
@@ -1299,7 +1299,7 @@ Move_REVERSAL::
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB_WHITE, 8, 0, 0 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB_WHITE, 8, 0, 0
waitforvisualfinish waitforvisualfinish
delay 30 delay 30
createvisualtask AnimTask_CurseBlendEffect, 2, 31, 3, 2, 0, 10, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 31, 3, 2, 0, 10, RGB_WHITE
delay 10 delay 10
playsewithpan SE_M_REVERSAL, 192 playsewithpan SE_M_REVERSAL, 192
createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0
@@ -1873,7 +1873,7 @@ Move_SAFEGUARD::
createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2,
waitforvisualfinish waitforvisualfinish
playsewithpan SE_SHINY, 192 playsewithpan SE_SHINY, 192
createvisualtask AnimTask_CurseBlendEffect, 2, 10, 0, 2, 0, 10, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 10, 0, 2, 0, 10, RGB_WHITE
waitforvisualfinish waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER clearmonbg ANIM_ATK_PARTNER
blendoff blendoff
@@ -1965,7 +1965,7 @@ Move_PAY_DAY::
Move_OUTRAGE:: Move_OUTRAGE::
loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_SMALL_EMBER
loopsewithpan SE_M_DRAGON_RAGE, 192, 8, 3 loopsewithpan SE_M_DRAGON_RAGE, 192, 8, 3
createvisualtask AnimTask_CurseBlendEffect, 2, 7, 2, 5, 3, 8, 430 createvisualtask AnimTask_BlendColorCycle, 2, 7, 2, 5, 3, 8, 430
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 6, 5, 4 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 6, 5, 4
delay 0 delay 0
createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 1280, 0, 3 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 1280, 0, 3
@@ -2012,25 +2012,25 @@ Move_SPARK::
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_SPARK_2
delay 0 delay 0
createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 5, 5, 23551 createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, 23551
playsewithpan SE_M_THUNDERBOLT2, 192 playsewithpan SE_M_THUNDERBOLT2, 192
createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0
delay 0 delay 0
createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0
createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1
delay 0 delay 0
createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 0, 0, 23551 createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, 23551
delay 10 delay 10
createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 5, 5, 23551 createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, 23551
playsewithpan SE_M_THUNDERBOLT2, 192 playsewithpan SE_M_THUNDERBOLT2, 192
createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0
createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1
delay 0 delay 0
createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1
delay 0 delay 0
createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 0, 0, 23551 createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, 23551
delay 20 delay 20
createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 7, 7, 23551 createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 7, 7, 23551
playsewithpan SE_M_THUNDERBOLT2, 192 playsewithpan SE_M_THUNDERBOLT2, 192
createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0
createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0
@@ -2042,14 +2042,14 @@ Move_SPARK::
createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0
delay 4 delay 4
waitforvisualfinish waitforvisualfinish
createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 0, 0, 23551 createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, 23551
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
delay 4 delay 4
playsewithpan SE_M_HYPER_BEAM, 63 playsewithpan SE_M_HYPER_BEAM, 63
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2
createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1
waitforvisualfinish waitforvisualfinish
createvisualtask AnimTask_CurseBlendEffect, 2, 4, -31, 2, 0, 6, 23551 createvisualtask AnimTask_BlendColorCycle, 2, 4, -31, 2, 0, 6, 23551
call ElectricityEffect call ElectricityEffect
waitforvisualfinish waitforvisualfinish
end end
@@ -2080,7 +2080,7 @@ Move_ATTRACT::
createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 112, 256, 90 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 112, 256, 90
createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 200, 272, 90 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 200, 272, 90
delay 75 delay 75
createvisualtask AnimTask_CurseBlendEffect, 2, 4, 4, 4, 0, 10, 28479 createvisualtask AnimTask_BlendColorCycle, 2, 4, 4, 4, 0, 10, 28479
end end
Move_GROWTH:: Move_GROWTH::
@@ -2091,7 +2091,7 @@ Move_GROWTH::
end end
GrowthEffect:: GrowthEffect::
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE
playsewithpan SE_M_TAKE_DOWN, 192 playsewithpan SE_M_TAKE_DOWN, 192
createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, 0, 0 createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, 0, 0
return return
@@ -3193,7 +3193,7 @@ Move_SPITE::
playsewithpan SE_M_PSYBEAM, 192 playsewithpan SE_M_PSYBEAM, 192
waitbgfadein waitbgfadein
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 6, 0, 8, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 6, 0, 8, RGB_WHITE
createvisualtask AnimTask_SpiteTargetShadow, 2 createvisualtask AnimTask_SpiteTargetShadow, 2
loopsewithpan SE_M_PSYBEAM, 63, 20, 3 loopsewithpan SE_M_PSYBEAM, 63, 20, 3
waitforvisualfinish waitforvisualfinish
@@ -3280,7 +3280,7 @@ Move_ENDURE::
playsewithpan SE_M_DRAGON_RAGE, 192 playsewithpan SE_M_DRAGON_RAGE, 192
call EndureEffect call EndureEffect
delay 8 delay 8
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, 31 createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, 31
createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1
call EndureEffect call EndureEffect
delay 8 delay 8
@@ -4722,7 +4722,7 @@ Move_MIND_READER::
createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5, createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5,
delay 40 delay 40
playsewithpan SE_M_LEER, 63 playsewithpan SE_M_LEER, 63
createvisualtask AnimTask_CurseBlendEffect, 2, 1, 1, 2, 0, 10, 0 createvisualtask AnimTask_BlendColorCycle, 2, 1, 1, 2, 0, 10, 0
call MindReaderEyeSpikeEffect call MindReaderEyeSpikeEffect
waitforvisualfinish waitforvisualfinish
clearmonbg 4 clearmonbg 4
@@ -4805,7 +4805,7 @@ Move_CONFUSION::
call SetPsychicBackground call SetPsychicBackground
setalpha 8, 8 setalpha 8, 8
createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE
waitforvisualfinish waitforvisualfinish
playsewithpan SE_M_SUPERSONIC, 63 playsewithpan SE_M_SUPERSONIC, 63
createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 15, 1 createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 15, 1
@@ -4822,7 +4822,7 @@ Move_PSYCHIC::
call SetPsychicBackground call SetPsychicBackground
setalpha 8, 8 setalpha 8, 8
createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, 767 createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, 767
waitforvisualfinish waitforvisualfinish
loopsewithpan SE_M_SUPERSONIC, 63, 10, 3 loopsewithpan SE_M_SUPERSONIC, 63, 10, 3
createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 15, 1 createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 15, 1
@@ -4848,7 +4848,7 @@ FutureSight::
call SetPsychicBackground call SetPsychicBackground
setalpha 8, 8 setalpha 8, 8
playsewithpan SE_M_SUPERSONIC, 192 playsewithpan SE_M_SUPERSONIC, 192
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE
createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 0, 1 createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 0, 1
waitforvisualfinish waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER clearmonbg ANIM_ATK_PARTNER
@@ -5244,7 +5244,7 @@ Move_SMOG::
call SmogCloud call SmogCloud
delay 120 delay 120
loopsewithpan SE_M_TOXIC, 63, 18, 2 loopsewithpan SE_M_TOXIC, 63, 18, 2
createvisualtask AnimTask_CurseBlendEffect, 2, 4, 2, 2, 0, 12, 26650 createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, 26650
delay 10 delay 10
createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 15, 1 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 15, 1
waitforvisualfinish waitforvisualfinish
@@ -5552,7 +5552,7 @@ SolarBeamEnd::
SolarBeamSetUp:: SolarBeamSetUp::
monbg ANIM_ATK_PARTNER monbg ANIM_ATK_PARTNER
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 1, 4, 0, 11, 12287 createvisualtask AnimTask_BlendColorCycle, 2, 2, 1, 4, 0, 11, 12287
playsewithpan SE_M_MEGA_KICK, 192 playsewithpan SE_M_MEGA_KICK, 192
call SolarBeamAbsorbEffect call SolarBeamAbsorbEffect
waitforvisualfinish waitforvisualfinish
@@ -6032,7 +6032,7 @@ Move_LEECH_LIFE::
Move_SYNTHESIS:: Move_SYNTHESIS::
loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_BLUE_STAR
loadspritegfx ANIM_TAG_SPARKLE_2 loadspritegfx ANIM_TAG_SPARKLE_2
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 16, 19451 createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 16, 19451
playsewithpan SE_M_MEGA_KICK, 192 playsewithpan SE_M_MEGA_KICK, 192
call GrantingStarsEffect call GrantingStarsEffect
waitforvisualfinish waitforvisualfinish
@@ -6072,7 +6072,7 @@ Move_SLUDGE::
createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0
waitforvisualfinish waitforvisualfinish
createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1 createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1
createvisualtask AnimTask_CurseBlendEffect, 2, 4, 1, 2, 0, 12, 31774 createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, 31774
call PoisonBubblesEffect call PoisonBubblesEffect
waitforvisualfinish waitforvisualfinish
end end
@@ -6090,7 +6090,7 @@ Move_SLUDGE_BOMB::
call SludgeBombProjectile call SludgeBombProjectile
call SludgeBombProjectile call SludgeBombProjectile
createvisualtask AnimTask_ShakeMon2, 5, 1, 3, 0, 15, 1 createvisualtask AnimTask_ShakeMon2, 5, 1, 3, 0, 15, 1
createvisualtask AnimTask_CurseBlendEffect, 2, 4, 1, 2, 0, 12, 31774 createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, 31774
createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20
createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20
createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20
@@ -6135,7 +6135,7 @@ Move_ACID::
delay 15 delay 15
createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 10, 1 createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 10, 1
createvisualtask AnimTask_ShakeMon2, 5, 3, 2, 0, 10, 1 createvisualtask AnimTask_ShakeMon2, 5, 3, 2, 0, 10, 1
createvisualtask AnimTask_CurseBlendEffect, 2, 20, 2, 2, 0, 12, 31774 createvisualtask AnimTask_BlendColorCycle, 2, 20, 2, 2, 0, 12, 31774
createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 0, -22, 0, 15, 55 createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 0, -22, 0, 15, 55
playsewithpan SE_M_BUBBLE, 63 playsewithpan SE_M_BUBBLE, 63
delay 10 delay 10
@@ -7053,7 +7053,7 @@ Move_MIST::
call MistCloud call MistCloud
call MistCloud call MistCloud
delay 32 delay 32
createvisualtask AnimTask_CurseBlendEffect, 2, 10, 8, 2, 0, 14, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 10, 8, 2, 0, 14, RGB_WHITE
waitforvisualfinish waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER clearmonbg ANIM_ATK_PARTNER
blendoff blendoff
@@ -7224,7 +7224,7 @@ Move_POISON_GAS::
createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0
delay 40 delay 40
loopsewithpan SE_M_MIST, 63, 28, 6 loopsewithpan SE_M_MIST, 63, 28, 6
createvisualtask AnimTask_CurseBlendEffect, 2, 4, 6, 2, 0, 12, 26650 createvisualtask AnimTask_BlendColorCycle, 2, 4, 6, 2, 0, 12, 26650
waitforvisualfinish waitforvisualfinish
blendoff blendoff
clearmonbg ANIM_DEF_PARTNER clearmonbg ANIM_DEF_PARTNER
@@ -7259,7 +7259,7 @@ Move_PSYBEAM::
call PsybeamRings call PsybeamRings
call PsybeamRings call PsybeamRings
createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, 1 createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, 1
createvisualtask AnimTask_CurseBlendEffect, 2, 4, 2, 2, 0, 12, 32351 createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, 32351
call PsybeamRings call PsybeamRings
call PsybeamRings call PsybeamRings
call PsybeamRings call PsybeamRings
@@ -7285,7 +7285,7 @@ Move_HYPNOSIS::
call HypnosisRings call HypnosisRings
call HypnosisRings call HypnosisRings
call HypnosisRings call HypnosisRings
createvisualtask AnimTask_CurseBlendEffect, 2, 4, 2, 2, 0, 12, 32351 createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, 32351
waitforvisualfinish waitforvisualfinish
delay 1 delay 1
call UnsetPsychicBg call UnsetPsychicBg
@@ -7306,7 +7306,7 @@ Move_PSYWAVE::
createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, -64, 63, 2, 9, 0, 10 createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, -64, 63, 2, 9, 0, 10
call PsywaveRings call PsywaveRings
call PsywaveRings call PsywaveRings
createvisualtask AnimTask_CurseBlendEffect, 2, 4, 1, 4, 0, 12, 32351 createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 4, 0, 12, 32351
call PsywaveRings call PsywaveRings
call PsywaveRings call PsywaveRings
call PsywaveRings call PsywaveRings
@@ -7443,7 +7443,7 @@ Move_NIGHT_SHADE::
createvisualtask AnimTask_NightShadeClone, 5, 85 createvisualtask AnimTask_NightShadeClone, 5, 85
delay 70 delay 70
createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 12, 1 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 12, 1
createvisualtask AnimTask_CurseBlendEffect, 2, 4, 0, 2, 0, 13, 0 createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 2, 0, 13, 0
waitforvisualfinish waitforvisualfinish
clearmonbg ANIM_ATTACKER clearmonbg ANIM_ATTACKER
delay 1 delay 1
@@ -7505,7 +7505,7 @@ Move_FOCUS_ENERGY::
playsewithpan SE_M_DRAGON_RAGE, 192 playsewithpan SE_M_DRAGON_RAGE, 192
call EndureEffect call EndureEffect
delay 8 delay 8
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_WHITE
createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1
call EndureEffect call EndureEffect
delay 8 delay 8
@@ -7519,7 +7519,7 @@ Move_BIDE::
BattleAnimScript_Bide_Setup:: BattleAnimScript_Bide_Setup::
loopsewithpan SE_M_TAKE_DOWN, 192, 9, 2 loopsewithpan SE_M_TAKE_DOWN, 192, 9, 2
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, 31 createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, 31
createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1
waitforvisualfinish waitforvisualfinish
end end
@@ -7697,7 +7697,7 @@ Move_RECOVER::
monbg ANIM_ATK_PARTNER monbg ANIM_ATK_PARTNER
setalpha 12, 8 setalpha 12, 8
loopsewithpan SE_M_MEGA_KICK, 192, 13, 3 loopsewithpan SE_M_MEGA_KICK, 192, 13, 3
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 6, 0, 11, 12287 createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 6, 0, 11, 12287
call RecoverAbsorbEffect call RecoverAbsorbEffect
call RecoverAbsorbEffect call RecoverAbsorbEffect
call RecoverAbsorbEffect call RecoverAbsorbEffect
@@ -7738,7 +7738,7 @@ Move_MIMIC::
setarg 7, 65535 setarg 7, 65535
waitforvisualfinish waitforvisualfinish
playsewithpan SE_M_TAKE_DOWN, 192 playsewithpan SE_M_TAKE_DOWN, 192
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 11, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 11, RGB_WHITE
waitforvisualfinish waitforvisualfinish
clearmonbg_23 3 clearmonbg_23 3
blendoff blendoff
@@ -7807,7 +7807,7 @@ CurseStats::
CurseStats1:: CurseStats1::
playsewithpan SE_M_DRAGON_RAGE, 192 playsewithpan SE_M_DRAGON_RAGE, 192
createvisualtask AnimTask_SetUpCurseBackground, 5, createvisualtask AnimTask_SetUpCurseBackground, 5,
createvisualtask AnimTask_CurseBlendEffect, 5, 2, 4, 2, 0, 10, 31 createvisualtask AnimTask_BlendColorCycle, 5, 2, 4, 2, 0, 10, 31
return return
Move_SOFT_BOILED:: Move_SOFT_BOILED::
@@ -8055,7 +8055,7 @@ PresentHeal::
Move_BATON_PASS:: Move_BATON_PASS::
loadspritegfx ANIM_TAG_POKEBALL loadspritegfx ANIM_TAG_POKEBALL
playsewithpan SE_M_BATON_PASS, 192 playsewithpan SE_M_BATON_PASS, 192
createvisualtask AnimTask_CurseBlendEffect, 2, 31, 1, 2, 0, 11, 31455 createvisualtask AnimTask_BlendColorCycle, 2, 31, 1, 2, 0, 11, 31455
createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2, createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2,
end end
@@ -8303,7 +8303,7 @@ Move_WISH::
Move_STOCKPILE:: Move_STOCKPILE::
loadspritegfx ANIM_TAG_GRAY_ORB loadspritegfx ANIM_TAG_GRAY_ORB
playsewithpan SE_M_MEGA_KICK, 192 playsewithpan SE_M_MEGA_KICK, 192
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 8, 1, 0, 12, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 2, 8, 1, 0, 12, RGB_WHITE
createvisualtask AnimTask_StockpileDeformMon, 5, createvisualtask AnimTask_StockpileDeformMon, 5,
call StockpileAbsorb call StockpileAbsorb
call StockpileAbsorb call StockpileAbsorb
@@ -8469,7 +8469,7 @@ Move_SWEET_SCENT::
call SweetScentEffect call SweetScentEffect
createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0 createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0
setpan 63 setpan 63
createvisualtask AnimTask_CurseBlendEffect, 2, 20, 1, 5, 5, 13, 22207 createvisualtask AnimTask_BlendColorCycle, 2, 20, 1, 5, 5, 13, 22207
call SweetScentEffect call SweetScentEffect
waitforvisualfinish waitforvisualfinish
end end
@@ -8898,7 +8898,7 @@ Move_REVENGE::
playsewithpan SE_M_TAKE_DOWN, 192 playsewithpan SE_M_TAKE_DOWN, 192
createsprite gRevengeSmallScratchSpriteTemplate, ANIM_ATTACKER, 2, 10, -10 createsprite gRevengeSmallScratchSpriteTemplate, ANIM_ATTACKER, 2, 10, -10
waitforvisualfinish waitforvisualfinish
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 4, 2, 8, 31 createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 4, 2, 8, 31
waitforvisualfinish waitforvisualfinish
unloadspritegfx ANIM_TAG_PURPLE_SCRATCH unloadspritegfx ANIM_TAG_PURPLE_SCRATCH
loadspritegfx ANIM_TAG_PURPLE_SWIPE loadspritegfx ANIM_TAG_PURPLE_SWIPE
@@ -8928,7 +8928,7 @@ Move_POISON_FANG::
delay 10 delay 10
createvisualtask AnimTask_ShakeMon, 3, 1, 3, 0, 10, 1 createvisualtask AnimTask_ShakeMon, 3, 1, 3, 0, 10, 1
waitforvisualfinish waitforvisualfinish
createvisualtask AnimTask_CurseBlendEffect, 2, 4, 0, 4, 0, 12, 26650 createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 4, 0, 12, 26650
call PoisonBubblesEffect call PoisonBubblesEffect
waitforvisualfinish waitforvisualfinish
end end
@@ -9703,7 +9703,7 @@ Move_PSYCHO_BOOST::
createvisualtask AnimTask_FadeScreenToWhite, 5, createvisualtask AnimTask_FadeScreenToWhite, 5,
waitbgfadein waitbgfadein
delay 6 delay 6
createvisualtask AnimTask_CurseBlendEffect, 2, 1, 2, 8, 0, 10, 0 createvisualtask AnimTask_BlendColorCycle, 2, 1, 2, 8, 0, 10, 0
delay 0 delay 0
monbgprio_28 0 monbgprio_28 0
setalpha 8, 8 setalpha 8, 8
@@ -10438,7 +10438,7 @@ UnsetSolarBeamBg::
Status_Poison:: Status_Poison::
loopsewithpan SE_M_TOXIC, 63, 13, 6 loopsewithpan SE_M_TOXIC, 63, 13, 6
createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 18, 2 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 18, 2
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 12, 31774 createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 12, 31774
end end
Status_Confusion:: Status_Confusion::
@@ -10858,7 +10858,7 @@ General_FocusPunchSetUp::
playsewithpan SE_M_DRAGON_RAGE, 192 playsewithpan SE_M_DRAGON_RAGE, 192
call EndureEffect call EndureEffect
delay 8 delay 8
createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, 31 createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, 31
createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1
call EndureEffect call EndureEffect
delay 8 delay 8
+1 -1
View File
@@ -478,7 +478,7 @@ void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId);
extern const struct SpriteTemplate gFlashingHitSplatSpriteTemplate; extern const struct SpriteTemplate gFlashingHitSplatSpriteTemplate;
extern const struct SpriteTemplate gBasicHitSplatSpriteTemplate; extern const struct SpriteTemplate gBasicHitSplatSpriteTemplate;
extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate; extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate;
u32 UnpackSelectedBattleAnimPalettes(s16 selector); u32 UnpackSelectedBattlePalettes(s16 selector);
void AnimTask_CurseBlendEffect(u8 taskId); void AnimTask_CurseBlendEffect(u8 taskId);
void AnimTask_BlendColorCycleExclude(u8 taskId); void AnimTask_BlendColorCycleExclude(u8 taskId);
void AnimTask_BlendColorCycleByTag(u8 taskId); void AnimTask_BlendColorCycleByTag(u8 taskId);
+267 -186
View File
@@ -8,7 +8,7 @@
static void AnimConfusionDuck(struct Sprite *sprite); static void AnimConfusionDuck(struct Sprite *sprite);
static void AnimSimplePaletteBlend(struct Sprite *sprite); static void AnimSimplePaletteBlend(struct Sprite *sprite);
static void AnimComplexPaletteBlend(struct Sprite *sprite); static void AnimComplexPaletteBlend(struct Sprite *sprite);
static void sub_80B9B8C(struct Sprite *sprite); static void AnimCirclingSparkle(struct Sprite *sprite);
static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite); static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite);
static void AnimHitSplatBasic(struct Sprite *sprite); static void AnimHitSplatBasic(struct Sprite *sprite);
static void AnimHitSplatHandleInvert(struct Sprite *sprite); static void AnimHitSplatHandleInvert(struct Sprite *sprite);
@@ -17,22 +17,22 @@ static void AnimHitSplatOnMonEdge(struct Sprite *sprite);
static void AnimCrossImpact(struct Sprite *sprite); static void AnimCrossImpact(struct Sprite *sprite);
static void AnimFlashingHitSplat(struct Sprite *sprite); static void AnimFlashingHitSplat(struct Sprite *sprite);
static void AnimHitSplatPersistent(struct Sprite *sprite); static void AnimHitSplatPersistent(struct Sprite *sprite);
static void AnimConfusionDuckStep(struct Sprite *sprite); static void AnimConfusionDuck_Step(struct Sprite *sprite);
static void AnimSimplePaletteBlendStep(struct Sprite *sprite); static void AnimSimplePaletteBlend_Step(struct Sprite *sprite);
static void sub_80B9AD0(struct Sprite *sprite); static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite);
static void sub_80B9B5C(struct Sprite *sprite); static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite);
static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); static void BlendColorCycle(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
static void sub_80B9C7C(u8 taskId); static void AnimTask_BlendColorCycleLoop(u8 taskId);
static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); static void BlendColorCycleExclude(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
static void sub_80B9DF0(u8 taskId); static void AnimTask_BlendColorCycleExcludeLoop(u8 taskId);
static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); static void BlendColorCycleByTag(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
static void sub_80B9F04(u8 taskId); static void AnimTask_BlendColorCycleByTagLoop(u8 taskId);
static void sub_80B9FD8(u8 taskId); static void AnimTask_FlashAnimTagWithColor_Step1(u8 taskId);
static void sub_80BA090(u8 taskId); static void AnimTask_FlashAnimTagWithColor_Step2(u8 taskId);
static void sub_80BA3CC(void); static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void);
static void sub_80BA320(struct Sprite *sprite); static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite);
static void sub_80BA4D0(u8 taskId); static void AnimTask_ShakeBattleTerrain_Step(u8 taskId);
static void sub_80BA7BC(struct Sprite *sprite); static void AnimFlashingHitSplat_Step(struct Sprite *sprite);
static const union AnimCmd sAnim_ConfusionDuck_0[] = static const union AnimCmd sAnim_ConfusionDuck_0[] =
@@ -92,7 +92,7 @@ const struct SpriteTemplate gComplexPaletteBlendSpriteTemplate =
.callback = AnimComplexPaletteBlend, .callback = AnimComplexPaletteBlend,
}; };
static const union AnimCmd gUnknown_83E7B54[] = static const union AnimCmd sAnim_CirclingSparkle[] =
{ {
ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(0, 3),
ANIMCMD_FRAME(16, 3), ANIMCMD_FRAME(16, 3),
@@ -102,20 +102,21 @@ static const union AnimCmd gUnknown_83E7B54[] =
ANIMCMD_JUMP(0), ANIMCMD_JUMP(0),
}; };
static const union AnimCmd *const gUnknown_83E7B6C[] = static const union AnimCmd *const sAnims_CirclingSparkle[] =
{ {
gUnknown_83E7B54, sAnim_CirclingSparkle,
}; };
const struct SpriteTemplate gUnknown_83E7B70 = // Unused
static const struct SpriteTemplate sCirclingSparkleSpriteTemplate =
{ {
.tileTag = ANIM_TAG_SPARKLE_4, .tileTag = ANIM_TAG_SPARKLE_4,
.paletteTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_SPARKLE_4,
.oam = &gOamData_AffineOff_ObjNormal_32x32, .oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = gUnknown_83E7B6C, .anims = sAnims_CirclingSparkle,
.images = NULL, .images = NULL,
.affineAnims = gDummySpriteAffineAnimTable, .affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80B9B8C, .callback = AnimCirclingSparkle,
}; };
const struct SpriteTemplate gShakeMonOrTerrainSpriteTemplate = const struct SpriteTemplate gShakeMonOrTerrainSpriteTemplate =
@@ -275,11 +276,11 @@ static void AnimConfusionDuck(struct Sprite *sprite)
StartSpriteAnim(sprite, 1); StartSpriteAnim(sprite, 1);
} }
sprite->data[3] = gBattleAnimArgs[4]; sprite->data[3] = gBattleAnimArgs[4];
sprite->callback = AnimConfusionDuckStep; sprite->callback = AnimConfusionDuck_Step;
sprite->callback(sprite); sprite->callback(sprite);
} }
static void AnimConfusionDuckStep(struct Sprite *sprite) static void AnimConfusionDuck_Step(struct Sprite *sprite)
{ {
sprite->x2 = Cos(sprite->data[0], 30); sprite->x2 = Cos(sprite->data[0], 30);
sprite->y2 = Sin(sprite->data[0], 10); sprite->y2 = Sin(sprite->data[0], 10);
@@ -300,36 +301,36 @@ static void AnimConfusionDuckStep(struct Sprite *sprite)
// arg 4: blend color // arg 4: blend color
static void AnimSimplePaletteBlend(struct Sprite *sprite) static void AnimSimplePaletteBlend(struct Sprite *sprite)
{ {
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]);
BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]); BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]);
sprite->invisible = TRUE; sprite->invisible = TRUE;
sprite->callback = AnimSimplePaletteBlendStep; sprite->callback = AnimSimplePaletteBlend_Step;
} }
// Unpacks a bitfield and returns a bitmask of its selected palettes. // Unpacks a bitfield and returns a bitmask of its selected palettes.
// Bits 0-6 of the selector parameter result in the following palettes being selected: // Bits 0-6 of the selector parameter result in the following palettes being selected:
// 0: battle background palettes (BG palettes 1, 2, and 3) // 0: F_PAL_BG, battle background palettes (BG palettes 1, 2, and 3)
// 1: gBattleAnimAttacker OBJ palette // 1: F_PAL_ATTACKER, gBattleAnimAttacker OBJ palette
// 2: gBattleAnimTarget OBJ palette // 2: F_PAL_TARGET, gBattleAnimTarget OBJ palette
// 3: gBattleAnimAttacker partner OBJ palette // 3: F_PAL_ATK_PARTNER, gBattleAnimAttacker partner OBJ palette
// 4: gBattleAnimTarget partner OBJ palette // 4: F_PAL_DEF_PARTNER, gBattleAnimTarget partner OBJ palette
// 5: BG palette 4 // 5: F_PAL_ANIM_1, BG palette 8
// 6: BG palette 5 // 6: F_PAL_ANIM_2, BG palette 9
u32 UnpackSelectedBattleAnimPalettes(s16 selector) u32 UnpackSelectedBattlePalettes(s16 selector)
{ {
u8 battleBackground = selector & 1; u8 battleBackground = selector & 1;
u8 attacker = (selector >> 1) & 1; u8 attacker = (selector >> 1) & 1;
u8 target = (selector >> 2) & 1; u8 target = (selector >> 2) & 1;
u8 attackerPartner = (selector >> 3) & 1; u8 attackerPartner = (selector >> 3) & 1;
u8 targetPartner = (selector >> 4) & 1; u8 targetPartner = (selector >> 4) & 1;
u8 arg5 = (selector >> 5) & 1; u8 anim1 = (selector >> 5) & 1;
u8 arg6 = (selector >> 6) & 1; u8 anim2 = (selector >> 6) & 1;
return GetBattlePalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6); return GetBattlePalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, anim1, anim2);
} }
static void AnimSimplePaletteBlendStep(struct Sprite *sprite) static void AnimSimplePaletteBlend_Step(struct Sprite *sprite)
{ {
if (!gPaletteFade.active) if (!gPaletteFade.active)
DestroyAnimSprite(sprite); DestroyAnimSprite(sprite);
@@ -347,13 +348,13 @@ static void AnimComplexPaletteBlend(struct Sprite *sprite)
sprite->data[5] = gBattleAnimArgs[5]; sprite->data[5] = gBattleAnimArgs[5];
sprite->data[6] = gBattleAnimArgs[6]; sprite->data[6] = gBattleAnimArgs[6];
sprite->data[7] = gBattleAnimArgs[0]; sprite->data[7] = gBattleAnimArgs[0];
selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]);
BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]); BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]);
sprite->invisible = TRUE; sprite->invisible = TRUE;
sprite->callback = sub_80B9AD0; sprite->callback = AnimComplexPaletteBlend_Step1;
} }
static void sub_80B9AD0(struct Sprite *sprite) static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite)
{ {
u32 selectedPalettes; u32 selectedPalettes;
@@ -366,10 +367,10 @@ static void sub_80B9AD0(struct Sprite *sprite)
return; return;
if (sprite->data[2] == 0) if (sprite->data[2] == 0)
{ {
sprite->callback = sub_80B9B5C; sprite->callback = AnimComplexPaletteBlend_Step2;
return; return;
} }
selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]);
if (sprite->data[1] & 0x100) if (sprite->data[1] & 0x100)
BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]); BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]);
else else
@@ -379,19 +380,19 @@ static void sub_80B9AD0(struct Sprite *sprite)
--sprite->data[2]; --sprite->data[2];
} }
static void sub_80B9B5C(struct Sprite *sprite) static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite)
{ {
u32 selectedPalettes; u32 selectedPalettes;
if (!gPaletteFade.active) if (!gPaletteFade.active)
{ {
selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]);
BlendPalettes(selectedPalettes, 0, 0); BlendPalettes(selectedPalettes, 0, 0);
DestroyAnimSprite(sprite); DestroyAnimSprite(sprite);
} }
} }
static void sub_80B9B8C(struct Sprite *sprite) static void AnimCirclingSparkle(struct Sprite *sprite)
{ {
sprite->x += gBattleAnimArgs[0]; sprite->x += gBattleAnimArgs[0];
sprite->y += gBattleAnimArgs[1]; sprite->y += gBattleAnimArgs[1];
@@ -406,53 +407,71 @@ static void sub_80B9B8C(struct Sprite *sprite)
sprite->callback(sprite); sprite->callback(sprite);
} }
void AnimTask_CurseBlendEffect(u8 taskId) // Task data for AnimTask_BlendColorCycle, AnimTask_BlendColorCycleExclude, and AnimTask_BlendColorCycleByTag
#define tPalSelector data[0] // AnimTask_BlendColorCycle
#define tPalTag data[0] // AnimTask_BlendColorCycleByTag
#define tDelay data[1]
#define tNumBlends data[2]
#define tInitialBlendY data[3]
#define tTargetBlendY data[4]
#define tBlendColor data[5]
#define tRestoreBlend data[8]
#define tPalSelectorHi data[9]
#define tPalSelectorLo data[10]
// Blends mon/screen to designated color or back alternately tNumBlends times
// Many uses of this task only set a tNumBlends of 2, which has the effect of blending to a color and back once
void AnimTask_BlendColorCycle(u8 taskId)
{ {
gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].tPalSelector = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].tDelay = gBattleAnimArgs[1];
gTasks[taskId].data[2] = gBattleAnimArgs[2]; gTasks[taskId].tNumBlends = gBattleAnimArgs[2];
gTasks[taskId].data[3] = gBattleAnimArgs[3]; gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3];
gTasks[taskId].data[4] = gBattleAnimArgs[4]; gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4];
gTasks[taskId].data[5] = gBattleAnimArgs[5]; gTasks[taskId].tBlendColor = gBattleAnimArgs[5];
gTasks[taskId].data[8] = 0; gTasks[taskId].tRestoreBlend = FALSE;
sub_80B9C2C(taskId, 0, gTasks[taskId].data[4]); BlendColorCycle(taskId, 0, gTasks[taskId].tTargetBlendY);
gTasks[taskId].func = sub_80B9C7C; gTasks[taskId].func = AnimTask_BlendColorCycleLoop;
} }
static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) static void BlendColorCycle(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount)
{ {
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].data[0]); u32 selectedPalettes = UnpackSelectedBattlePalettes(gTasks[taskId].tPalSelector);
BeginNormalPaletteFade(
BeginNormalPaletteFade(selectedPalettes, selectedPalettes,
gTasks[taskId].data[1], gTasks[taskId].tDelay,
initialBlendAmount, startBlendAmount,
targetBlendAmount, targetBlendAmount,
gTasks[taskId].data[5]); gTasks[taskId].tBlendColor);
--gTasks[taskId].data[2];
gTasks[taskId].data[8] ^= 1; gTasks[taskId].tNumBlends--;
gTasks[taskId].tRestoreBlend ^= 1;
} }
static void sub_80B9C7C(u8 taskId) static void AnimTask_BlendColorCycleLoop(u8 taskId)
{ {
u8 initialBlendAmount, targetBlendAmount; u8 startBlendAmount, targetBlendAmount;
if (!gPaletteFade.active) if (!gPaletteFade.active)
{ {
if (gTasks[taskId].data[2] > 0) if (gTasks[taskId].tNumBlends > 0)
{ {
if (gTasks[taskId].data[8] == 0) if (!gTasks[taskId].tRestoreBlend)
{ {
initialBlendAmount = gTasks[taskId].data[3]; // Blend to designated color
targetBlendAmount = gTasks[taskId].data[4]; startBlendAmount = gTasks[taskId].tInitialBlendY;
targetBlendAmount = gTasks[taskId].tTargetBlendY;
} }
else else
{ {
initialBlendAmount = gTasks[taskId].data[4]; // Blend back to original color
targetBlendAmount = gTasks[taskId].data[3]; startBlendAmount = gTasks[taskId].tTargetBlendY;
targetBlendAmount = gTasks[taskId].tInitialBlendY;
} }
if (gTasks[taskId].data[2] == 1)
if (gTasks[taskId].tNumBlends == 1)
targetBlendAmount = 0; targetBlendAmount = 0;
sub_80B9C2C(taskId, initialBlendAmount, targetBlendAmount);
BlendColorCycle(taskId, startBlendAmount, targetBlendAmount);
} }
else else
{ {
@@ -461,64 +480,73 @@ static void sub_80B9C7C(u8 taskId)
} }
} }
// See AnimTask_BlendColorCycle. Same, but excludes Attacker and Target
void AnimTask_BlendColorCycleExclude(u8 taskId) void AnimTask_BlendColorCycleExclude(u8 taskId)
{ {
s32 battler; int battler;
u32 selectedPalettes = 0; u32 selectedPalettes = 0;
gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].tDelay = gBattleAnimArgs[1];
gTasks[taskId].data[2] = gBattleAnimArgs[2]; gTasks[taskId].tNumBlends = gBattleAnimArgs[2];
gTasks[taskId].data[3] = gBattleAnimArgs[3]; gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3];
gTasks[taskId].data[4] = gBattleAnimArgs[4]; gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4];
gTasks[taskId].data[5] = gBattleAnimArgs[5]; gTasks[taskId].tBlendColor = gBattleAnimArgs[5];
gTasks[taskId].data[8] = 0; gTasks[taskId].tRestoreBlend = 0;
for (battler = 0; battler < gBattlersCount; ++battler)
for (battler = 0; battler < gBattlersCount; battler++)
{
if (battler != gBattleAnimAttacker && battler != gBattleAnimTarget) if (battler != gBattleAnimAttacker && battler != gBattleAnimTarget)
selectedPalettes |= 1 << (battler + 16); selectedPalettes |= 1 << (battler + 16);
}
if (gBattleAnimArgs[0] == 1) if (gBattleAnimArgs[0] == 1)
selectedPalettes |= 0xE; selectedPalettes |= 0xE;
gTasks[taskId].data[9] = selectedPalettes >> 16;
gTasks[taskId].data[10] = selectedPalettes & 0xFF; gTasks[taskId].tPalSelectorHi = selectedPalettes >> 16;
sub_80B9DA0(taskId, 0, gTasks[taskId].data[4]); gTasks[taskId].tPalSelectorLo = selectedPalettes & 0xFF;
gTasks[taskId].func = sub_80B9DF0; BlendColorCycleExclude(taskId, 0, gTasks[taskId].tTargetBlendY);
gTasks[taskId].func = AnimTask_BlendColorCycleExcludeLoop;
} }
static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) static void BlendColorCycleExclude(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount)
{ {
u32 selectedPalettes = ((u16)gTasks[taskId].data[9] << 16) | (u16)gTasks[taskId].data[10]; u32 selectedPalettes = ((u16)gTasks[taskId].tPalSelectorHi << 16) | (u16)gTasks[taskId].tPalSelectorLo;
BeginNormalPaletteFade(
BeginNormalPaletteFade(selectedPalettes, selectedPalettes,
gTasks[taskId].data[1], gTasks[taskId].tDelay,
initialBlendAmount, startBlendAmount,
targetBlendAmount, targetBlendAmount,
gTasks[taskId].data[5]); gTasks[taskId].tBlendColor);
--gTasks[taskId].data[2];
gTasks[taskId].data[8] ^= 1; gTasks[taskId].tNumBlends--;
gTasks[taskId].tRestoreBlend ^= 1;
} }
static void sub_80B9DF0(u8 taskId) static void AnimTask_BlendColorCycleExcludeLoop(u8 taskId)
{ {
u8 initialBlendAmount, targetBlendAmount; u8 startBlendAmount, targetBlendAmount;
if (!gPaletteFade.active) if (!gPaletteFade.active)
{ {
if (gTasks[taskId].data[2] > 0) if (gTasks[taskId].tNumBlends > 0)
{ {
if (gTasks[taskId].data[8] == 0) if (!gTasks[taskId].tRestoreBlend)
{ {
initialBlendAmount = gTasks[taskId].data[3]; // Blend to designated color
targetBlendAmount = gTasks[taskId].data[4]; startBlendAmount = gTasks[taskId].tInitialBlendY;
targetBlendAmount = gTasks[taskId].tTargetBlendY;
} }
else else
{ {
initialBlendAmount = gTasks[taskId].data[4]; // Blend back to original color
targetBlendAmount = gTasks[taskId].data[3]; startBlendAmount = gTasks[taskId].tTargetBlendY;
targetBlendAmount = gTasks[taskId].tInitialBlendY;
} }
if (gTasks[taskId].data[2] == 1) if (gTasks[taskId].tNumBlends == 1)
targetBlendAmount = 0; targetBlendAmount = 0;
sub_80B9DA0(taskId, initialBlendAmount, targetBlendAmount);
BlendColorCycleExclude(taskId, startBlendAmount, targetBlendAmount);
} }
else else
{ {
@@ -527,56 +555,59 @@ static void sub_80B9DF0(u8 taskId)
} }
} }
// See AnimTask_BlendColorCycle. Same, but selects palette by ANIM_TAG_*
void AnimTask_BlendColorCycleByTag(u8 taskId) void AnimTask_BlendColorCycleByTag(u8 taskId)
{ {
u8 paletteIndex; gTasks[taskId].tPalTag = gBattleAnimArgs[0];
gTasks[taskId].tDelay = gBattleAnimArgs[1];
gTasks[taskId].tNumBlends = gBattleAnimArgs[2];
gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3];
gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4];
gTasks[taskId].tBlendColor = gBattleAnimArgs[5];
gTasks[taskId].tRestoreBlend = FALSE;
gTasks[taskId].data[0] = gBattleAnimArgs[0]; BlendColorCycleByTag(taskId, 0, gTasks[taskId].tTargetBlendY);
gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].func = AnimTask_BlendColorCycleByTagLoop;
gTasks[taskId].data[2] = gBattleAnimArgs[2];
gTasks[taskId].data[3] = gBattleAnimArgs[3];
gTasks[taskId].data[4] = gBattleAnimArgs[4];
gTasks[taskId].data[5] = gBattleAnimArgs[5];
gTasks[taskId].data[8] = 0;
sub_80B9EA8(taskId, 0, gTasks[taskId].data[4]);
gTasks[taskId].func = sub_80B9F04;
} }
static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) static void BlendColorCycleByTag(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount)
{ {
u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].data[0]); u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].tPalTag);
BeginNormalPaletteFade(
BeginNormalPaletteFade(1 << (paletteIndex + 16), 1 << (paletteIndex + 16),
gTasks[taskId].data[1], gTasks[taskId].tDelay,
initialBlendAmount, startBlendAmount,
targetBlendAmount, targetBlendAmount,
gTasks[taskId].data[5]); gTasks[taskId].tBlendColor);
--gTasks[taskId].data[2];
gTasks[taskId].data[8] ^= 1; gTasks[taskId].tNumBlends--;
gTasks[taskId].tRestoreBlend ^= 1;
} }
static void sub_80B9F04(u8 taskId) static void AnimTask_BlendColorCycleByTagLoop(u8 taskId)
{ {
u8 initialBlendAmount, targetBlendAmount; u8 startBlendAmount, targetBlendAmount;
if (!gPaletteFade.active) if (!gPaletteFade.active)
{ {
if (gTasks[taskId].data[2] > 0) if (gTasks[taskId].tNumBlends > 0)
{ {
if (gTasks[taskId].data[8] == 0) if (!gTasks[taskId].tRestoreBlend)
{ {
initialBlendAmount = gTasks[taskId].data[3]; // Blend to designated color
targetBlendAmount = gTasks[taskId].data[4]; startBlendAmount = gTasks[taskId].tInitialBlendY;
targetBlendAmount = gTasks[taskId].tTargetBlendY;
} }
else else
{ {
initialBlendAmount = gTasks[taskId].data[4]; // Blend back to original color
targetBlendAmount = gTasks[taskId].data[3]; startBlendAmount = gTasks[taskId].tTargetBlendY;
targetBlendAmount = gTasks[taskId].tInitialBlendY;
} }
if (gTasks[taskId].data[2] == 1) if (gTasks[taskId].tNumBlends == 1)
targetBlendAmount = 0; targetBlendAmount = 0;
sub_80B9EA8(taskId, initialBlendAmount, targetBlendAmount);
BlendColorCycleByTag(taskId, startBlendAmount, targetBlendAmount);
} }
else else
{ {
@@ -585,6 +616,18 @@ static void sub_80B9F04(u8 taskId)
} }
} }
#undef tPalSelector
#undef tPalTag
#undef tDelay
#undef tNumBlends
#undef tInitialBlendY
#undef tTargetBlendY
#undef tBlendColor
#undef tRestoreBlend
#undef tPalSelectorHi
#undef tPalSelectorLo
// Flashes the specified anim tag with given color. Used e.g. to flash the particles red in Hyper Beam
void AnimTask_FlashAnimTagWithColor(u8 taskId) void AnimTask_FlashAnimTagWithColor(u8 taskId)
{ {
u8 paletteIndex; u8 paletteIndex;
@@ -603,10 +646,10 @@ void AnimTask_FlashAnimTagWithColor(u8 taskId)
gBattleAnimArgs[4], gBattleAnimArgs[4],
gBattleAnimArgs[4], gBattleAnimArgs[4],
gBattleAnimArgs[3]); gBattleAnimArgs[3]);
gTasks[taskId].func = sub_80B9FD8; gTasks[taskId].func = AnimTask_FlashAnimTagWithColor_Step1;
} }
static void sub_80B9FD8(u8 taskId) static void AnimTask_FlashAnimTagWithColor_Step1(u8 taskId)
{ {
u32 selectedPalettes; u32 selectedPalettes;
@@ -619,7 +662,7 @@ static void sub_80B9FD8(u8 taskId)
return; return;
if (gTasks[taskId].data[2] == 0) if (gTasks[taskId].data[2] == 0)
{ {
gTasks[taskId].func = sub_80BA090; gTasks[taskId].func = AnimTask_FlashAnimTagWithColor_Step2;
return; return;
} }
selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16); selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16);
@@ -640,7 +683,7 @@ static void sub_80B9FD8(u8 taskId)
--gTasks[taskId].data[2]; --gTasks[taskId].data[2];
} }
static void sub_80BA090(u8 taskId) static void AnimTask_FlashAnimTagWithColor_Step2(u8 taskId)
{ {
u32 selectedPalettes; u32 selectedPalettes;
@@ -659,7 +702,7 @@ void AnimTask_InvertScreenColor(u8 taskId)
u8 targetBattler = gBattleAnimTarget; u8 targetBattler = gBattleAnimTarget;
if (gBattleAnimArgs[0] & 0x100) if (gBattleAnimArgs[0] & 0x100)
selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
if (gBattleAnimArgs[1] & 0x100) if (gBattleAnimArgs[1] & 0x100)
selectedPalettes |= (0x10000 << attackerBattler); selectedPalettes |= (0x10000 << attackerBattler);
if (gBattleAnimArgs[2] & 0x100) if (gBattleAnimArgs[2] & 0x100)
@@ -668,8 +711,16 @@ void AnimTask_InvertScreenColor(u8 taskId)
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
// not used // Unused
static void sub_80BA16C(u8 taskId) #define tTimer data[0]
#define tLength data[1]
#define tFlagsScenery data[2]
#define tFlagsAttacker data[3]
#define tFlagsTarget data[4]
#define tColorR data[5]
#define tColorG data[6]
#define tColorB data[7]
static void AnimTask_TintPalettes(u8 taskId)
{ {
u8 attackerBattler; u8 attackerBattler;
u8 targetBattler; u8 targetBattler;
@@ -708,6 +759,15 @@ static void sub_80BA16C(u8 taskId)
} }
} }
#undef tTimer
#undef tLength
#undef tFlagsScenery
#undef tFlagsAttacker
#undef tFlagsTarget
#undef tColorR
#undef tColorG
#undef tColorB
static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite) static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite)
{ {
u16 var0; u16 var0;
@@ -737,11 +797,11 @@ static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite)
sprite->data[5] = gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[3];
var0 = sprite->data[5] - 2; var0 = sprite->data[5] - 2;
if (var0 < 2) if (var0 < 2)
sub_80BA3CC(); AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled();
sprite->callback = sub_80BA320; sprite->callback = AnimShakeMonOrBattleTerrain_Step;
} }
static void sub_80BA320(struct Sprite *sprite) static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite)
{ {
u8 i; u8 i;
u16 var0; u16 var0;
@@ -766,58 +826,70 @@ static void sub_80BA320(struct Sprite *sprite)
var0 = sprite->data[5] - 2; var0 = sprite->data[5] - 2;
if (var0 < 2) if (var0 < 2)
for (i = 0; i < gBattlersCount; ++i) for (i = 0; i < gBattlersCount; ++i)
gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = 0; gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = FALSE;
DestroyAnimSprite(sprite); DestroyAnimSprite(sprite);
} }
} }
static void sub_80BA3CC(void) static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void)
{ {
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 0; gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = FALSE;
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 0; gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = FALSE;
if (gBattleAnimArgs[4] == 2) if (gBattleAnimArgs[4] == 2)
{ {
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1; gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = TRUE;
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1; gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = TRUE;
} }
else else
{ {
if (gBattleAnimArgs[4] == 0) if (gBattleAnimArgs[4] == 0)
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1; gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = TRUE;
else else
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1; gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = TRUE;
} }
} }
// Task data for AnimTask_ShakeBattleTerrain
#define tXOffset data[0]
#define tYOffset data[1]
#define tNumShakes data[2]
#define tTimer data[3]
#define tShakeDelay data[8]
// Can shake battle terrain back and forth on the X or down and back to original pos on Y (cant shake up from orig pos)
// arg0: x offset of shake
// arg1: y offset of shake
// arg2: number of shakes
// arg3: time between shakes
void AnimTask_ShakeBattleTerrain(u8 taskId) void AnimTask_ShakeBattleTerrain(u8 taskId)
{ {
gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].tXOffset = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].tYOffset = gBattleAnimArgs[1];
gTasks[taskId].data[2] = gBattleAnimArgs[2]; gTasks[taskId].tNumShakes = gBattleAnimArgs[2];
gTasks[taskId].data[3] = gBattleAnimArgs[3]; gTasks[taskId].tTimer = gBattleAnimArgs[3];
gTasks[taskId].data[8] = gBattleAnimArgs[3]; gTasks[taskId].tShakeDelay = gBattleAnimArgs[3];
gBattle_BG3_X = gBattleAnimArgs[0]; gBattle_BG3_X = gBattleAnimArgs[0];
gBattle_BG3_Y = gBattleAnimArgs[1]; gBattle_BG3_Y = gBattleAnimArgs[1];
gTasks[taskId].func = sub_80BA4D0; gTasks[taskId].func = AnimTask_ShakeBattleTerrain_Step;
gTasks[taskId].func(taskId); gTasks[taskId].func(taskId);
} }
static void sub_80BA4D0(u8 taskId) static void AnimTask_ShakeBattleTerrain_Step(u8 taskId)
{ {
if (gTasks[taskId].data[3] == 0) if (gTasks[taskId].tTimer == 0)
{ {
if (gBattle_BG3_X == gTasks[taskId].data[0]) if (gBattle_BG3_X == gTasks[taskId].tXOffset)
gBattle_BG3_X = -gTasks[taskId].data[0]; gBattle_BG3_X = -gTasks[taskId].tXOffset;
else else
gBattle_BG3_X = gTasks[taskId].data[0]; gBattle_BG3_X = gTasks[taskId].tXOffset;
if (gBattle_BG3_Y == -gTasks[taskId].data[1]) if (gBattle_BG3_Y == -gTasks[taskId].tYOffset)
gBattle_BG3_Y = 0; gBattle_BG3_Y = 0;
else else
gBattle_BG3_Y = -gTasks[taskId].data[1]; gBattle_BG3_Y = -gTasks[taskId].tYOffset;
gTasks[taskId].data[3] = gTasks[taskId].data[8]; gTasks[taskId].tTimer = gTasks[taskId].tShakeDelay;
if (--gTasks[taskId].data[2] == 0) if (--gTasks[taskId].tNumShakes == 0)
{ {
gBattle_BG3_X = 0; gBattle_BG3_X = 0;
gBattle_BG3_Y = 0; gBattle_BG3_Y = 0;
@@ -826,26 +898,33 @@ static void sub_80BA4D0(u8 taskId)
} }
else else
{ {
--gTasks[taskId].data[3]; gTasks[taskId].tTimer--;
} }
} }
#undef tXOffset
#undef tYOffset
#undef tNumShakes
#undef tTimer
#undef tShakeDelay
static void AnimHitSplatBasic(struct Sprite *sprite) static void AnimHitSplatBasic(struct Sprite *sprite)
{ {
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
if (gBattleAnimArgs[2] == 0) if (gBattleAnimArgs[2] == 0)
InitSpritePosToAnimAttacker(sprite, 1); InitSpritePosToAnimAttacker(sprite, TRUE);
else else
InitSpritePosToAnimTarget(sprite, TRUE); InitSpritePosToAnimTarget(sprite, TRUE);
sprite->callback = RunStoredCallbackWhenAffineAnimEnds; sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
} }
// Same as basic hit splat but takes a length of time to persist for (arg4)
static void AnimHitSplatPersistent(struct Sprite *sprite) static void AnimHitSplatPersistent(struct Sprite *sprite)
{ {
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
if (gBattleAnimArgs[2] == 0) if (gBattleAnimArgs[2] == 0)
InitSpritePosToAnimAttacker(sprite, 1); InitSpritePosToAnimAttacker(sprite, TRUE);
else else
InitSpritePosToAnimTarget(sprite, TRUE); InitSpritePosToAnimTarget(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[4]; sprite->data[0] = gBattleAnimArgs[4];
@@ -853,6 +932,8 @@ static void AnimHitSplatPersistent(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSpriteAfterTimer); StoreSpriteCallbackInData6(sprite, DestroyAnimSpriteAfterTimer);
} }
// For paired hit splats whose position is inverted when used by the opponent on the player.
// Used by Twineedle and Spike Cannon
static void AnimHitSplatHandleInvert(struct Sprite *sprite) static void AnimHitSplatHandleInvert(struct Sprite *sprite)
{ {
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER && !IsContest()) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER && !IsContest())
@@ -865,8 +946,8 @@ static void AnimHitSplatRandom(struct Sprite *sprite)
if (gBattleAnimArgs[1] == -1) if (gBattleAnimArgs[1] == -1)
gBattleAnimArgs[1] = Random() & 3; gBattleAnimArgs[1] = Random() & 3;
StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]); StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]);
if (gBattleAnimArgs[0] == 0) if (gBattleAnimArgs[0] == ANIM_ATTACKER)
InitSpritePosToAnimAttacker(sprite, 0); InitSpritePosToAnimAttacker(sprite, FALSE);
else else
InitSpritePosToAnimTarget(sprite, FALSE); InitSpritePosToAnimTarget(sprite, FALSE);
sprite->x2 += (Random() % 48) - 24; sprite->x2 += (Random() % 48) - 24;
@@ -889,8 +970,8 @@ static void AnimHitSplatOnMonEdge(struct Sprite *sprite)
static void AnimCrossImpact(struct Sprite *sprite) static void AnimCrossImpact(struct Sprite *sprite)
{ {
if (gBattleAnimArgs[2] == 0) if (gBattleAnimArgs[2] == ANIM_ATTACKER)
InitSpritePosToAnimAttacker(sprite, 1); InitSpritePosToAnimAttacker(sprite, TRUE);
else else
InitSpritePosToAnimTarget(sprite, TRUE); InitSpritePosToAnimTarget(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[3]; sprite->data[0] = gBattleAnimArgs[3];
@@ -901,14 +982,14 @@ static void AnimCrossImpact(struct Sprite *sprite)
static void AnimFlashingHitSplat(struct Sprite *sprite) static void AnimFlashingHitSplat(struct Sprite *sprite)
{ {
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
if (gBattleAnimArgs[2] == 0) if (gBattleAnimArgs[2] == ANIM_ATTACKER)
InitSpritePosToAnimAttacker(sprite, 1); InitSpritePosToAnimAttacker(sprite, TRUE);
else else
InitSpritePosToAnimTarget(sprite, TRUE); InitSpritePosToAnimTarget(sprite, TRUE);
sprite->callback = sub_80BA7BC; sprite->callback = AnimFlashingHitSplat_Step;
} }
static void sub_80BA7BC(struct Sprite *sprite) static void AnimFlashingHitSplat_Step(struct Sprite *sprite)
{ {
sprite->invisible ^= 1; sprite->invisible ^= 1;
if (sprite->data[0]++ > 12) if (sprite->data[0]++ > 12)
+3 -3
View File
@@ -52,7 +52,7 @@ const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, RE
// 10: Enemy battler right // 10: Enemy battler right
void AnimTask_BlendSelected(u8 taskId) void AnimTask_BlendSelected(u8 taskId)
{ {
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]);
selectedPalettes |= GetBattleMonSpritePalettesMask( selectedPalettes |= GetBattleMonSpritePalettesMask(
(gBattleAnimArgs[0] >> 7) & 1, (gBattleAnimArgs[0] >> 7) & 1,
@@ -79,7 +79,7 @@ void AnimTask_BlendExcept(u8 taskId)
u8 animBattlers[2]; u8 animBattlers[2];
animBattlers[1] = 0xFF; animBattlers[1] = 0xFF;
selectedPalettes = UnpackSelectedBattleAnimPalettes(1); selectedPalettes = UnpackSelectedBattlePalettes(1);
switch (gBattleAnimArgs[0]) switch (gBattleAnimArgs[0])
{ {
case 2: case 2:
@@ -122,7 +122,7 @@ void AnimTask_BlendExcept(u8 taskId)
void AnimTask_SetCamouflageBlend(u8 taskId) void AnimTask_SetCamouflageBlend(u8 taskId)
{ {
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]);
switch (gBattleTerrain) switch (gBattleTerrain)
{ {