some gen 9 move anims + fickle beam rework (#5159)

* new move anims + fickle beam rework

* more fickle beam changes

* removed the true for consistency

* ficklebeamboosted gets cleared now

* mortal spin and thunderclap changes

* minor mortal spin pal change

* removed hex numbers and made hard press quicker
This commit is contained in:
Sadfish the Sad 2024-08-14 11:20:18 -04:00 committed by GitHub
parent 00f8a4db15
commit fde85e9357
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 786 additions and 18 deletions

View file

@ -1670,6 +1670,10 @@
callnative BS_DamageToQuarterTargetHP
.endm
.macro ficklebeamdamagecalculation
callnative BS_FickleBeamDamageCalculation
.endm
@ various command changed to more readable macros
.macro cancelmultiturnmoves battler:req
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES

View file

@ -16219,6 +16219,12 @@ Move_RAGING_BULL::
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_ANGER
loadspritegfx ANIM_TAG_BREATH
loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL
loadspritegfx ANIM_TAG_TORN_METAL
choosetwoturnanim RagingBullNormal, RagingBullShatteredWall
RagingBullNormal:
monbg ANIM_TARGET
setalpha 12, 8
createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2
loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 4, 2
createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, -28
@ -16250,6 +16256,49 @@ Move_RAGING_BULL::
waitforvisualfinish
restorebg
waitbgfadein
clearmonbg ANIM_TARGET
end
RagingBullShatteredWall:
monbg ANIM_TARGET
setalpha 12, 8
createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2
loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 4, 2
createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, -28
delay 20
createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28
waitforvisualfinish
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4
waitforvisualfinish
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
call SetImpactBackground
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
delay 3
waitforvisualfinish
createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, ANIM_TARGET, 0, 0, 90, 10
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3
delay 20
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
delay 20
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1
waitforvisualfinish
createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, -8, -12
createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 8, -12
createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 2, -8, 12
createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 3, 8, 12
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
delay 3
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7
waitforvisualfinish
restorebg
waitbgfadein
clearmonbg ANIM_TARGET
end
@ Credits to Z-nogyroP. Simple anim that combines Force Palm + Fake Out
@ -17013,44 +17062,597 @@ Move_AXE_KICK::
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4
end
Move_SPIN_OUT::
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_RAPID_SPIN
loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2
createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK
waitforvisualfinish
call SetHighSpeedBg
loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 3
waitforvisualfinish
monbg ANIM_ATTACKER
createsprite gRapidSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, -32, 40, -2
createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 0
loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 4
waitforvisualfinish
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2
createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 10, 1, 0
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
waitforvisualfinish
delay 8
createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 1
loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 4
waitforvisualfinish
call UnsetHighSpeedBg
clearmonbg ANIM_ATTACKER
end
Move_MORTAL_SPIN::
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_RAPID_SPIN
loadspritegfx ANIM_TAG_POISON_BUBBLE
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_RAPID_SPIN, 0, 6, 6, RGB(15, 0, 15)
monbg ANIM_ATTACKER
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 1, 0, 13, RGB(10, 2, 19)
delay 16
createsprite gRapidSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, -32, 40, -2
createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 0
loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 4
waitforvisualfinish
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2
createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 10, 1, 0
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 1, 13, 0, RGB(10, 2, 19)
call PoisonBubblesEffect
waitforvisualfinish
delay 8
createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 1
loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 4
waitforvisualfinish
clearmonbg ANIM_ATTACKER
blendoff
end
Move_FILLET_AWAY::
loadspritegfx ANIM_TAG_CUT
createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0
playsewithpan SE_M_CUT, SOUND_PAN_ATTACKER
delay 5
createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 20, -27, 0
playsewithpan SE_M_CUT, SOUND_PAN_ATTACKER
delay 5
createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 60, -37, 0
playsewithpan SE_M_CUT, SOUND_PAN_ATTACKER
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 9, 0x7FFF
waitforvisualfinish
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 2, 4, 4
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, 0x7FFF
waitforvisualfinish
blendoff
end
Move_FLOWER_TRICK::
loadspritegfx ANIM_TAG_SPOTLIGHT
loadspritegfx ANIM_TAG_LEAF @leaves
loadspritegfx ANIM_TAG_FLOWER @flowers
loadspritegfx ANIM_TAG_IMPACT
createvisualtask AnimTask_CreateSpotlight, 2
createvisualtask AnimTask_HardwarePaletteFade, 2, (BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN), 3, 0, 10, FALSE
waitforvisualfinish
createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8
delay 16
createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, SOUND_PAN_TARGET
createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, ANIM_TARGET
waitforvisualfinish
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createsprite gTropKickLeavesTemplate, ANIM_TARGET, 1, 0, 10, 192, 176, 40
createsprite gTropKickLeavesTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40
createsprite gTropKickFlowerTemplate, ANIM_TARGET, 1, 0, 10, 192, -160, 40
createsprite gTropKickFlowerTemplate, ANIM_TARGET, 1, 0, 10, -192, -112, 40
createsprite gTropKickFlowerTemplate, ANIM_TARGET, 1, 0, 10, 160, 48, 40
createsprite gTropKickLeavesTemplate, ANIM_TARGET, 1, 0, 10, -224, -32, 40
createsprite gTropKickLeavesTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2
waitforvisualfinish
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
waitforvisualfinish
createvisualtask AnimTask_HardwarePaletteFade, 2, (BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN), 3, 10, 0, TRUE
createvisualtask AnimTask_RemoveSpotlight, 2
end
Move_MAKE_IT_RAIN::
loadspritegfx ANIM_TAG_COIN
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_ATTACKER
setalpha 12, 8
playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER
createsprite gCoinThrowSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 1152
waitforvisualfinish
playsewithpan SE_M_PAY_DAY, SOUND_PAN_TARGET
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, ANIM_TARGET, 2
createsprite gFallingCoinSpriteTemplate, ANIM_ATTACKER, 2
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1
waitforvisualfinish
delay 20
createvisualtask AnimTask_IsTargetPlayerSide, 2
jumpretfalse MakingItRainOnOpponent
jumprettrue MakingItRainOnPlayer
MakingItRainContinue:
waitbgfadeout
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1
loopsewithpan SE_M_PAY_DAY, SOUND_PAN_TARGET, 8, 15
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, -5, 0, -5, 1
delay 2
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, 5, 0, 6, 1
delay 2
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, 19, 0, 10, 1
delay 2
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, -23, 0, -10, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 50, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 0, 5, 50, 1
call MakingItRain
call MakingItRain
call MakingItRain
restorebg
waitbgfadein
blendoff
waitforvisualfinish
clearmonbg ANIM_ATTACKER
end
MakingItRainOnOpponent:
fadetobg BG_IMPACT_OPPONENT
goto MakingItRainContinue
MakingItRainOnPlayer:
fadetobg BG_IMPACT_PLAYER
goto MakingItRainContinue
MakingItRain:
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, -20, 0, -10, 1
delay 2
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, 28, 0, 10, 1
delay 2
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, -10, 0, -5, 1
delay 2
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, 10, 0, 6, 1
delay 2
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, 24, 0, 10, 1
delay 2
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, -32, 0, -10, 1
delay 2
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, -20, 0, -10, 1
delay 2
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, 30, 0, 10, 1
delay 2
return
Move_SHED_TAIL::
loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 24, 3
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 2, 3
waitforvisualfinish
playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER
createvisualtask AnimTask_MonToSubstitute, 2
end
Move_HYPER_DRILL::
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_HORN_HIT
fadetobgfromset BG_GUILLOTINE_OPPONENT, BG_GUILLOTINE_PLAYER, BG_GUILLOTINE_CONTESTS
waitbgfadein
createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0
playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER
waitforvisualfinish
delay 2
createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1
createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 0, 0, 12
waitforvisualfinish
playse 20
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 40, 1
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 40, 1
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 3
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 2, 1, 3
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -4, 3, 1, 3
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -8, -5, 1, 3
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 4, -12, 1, 3
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 16, 0, 1, 3
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, 18, 1, 3
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -17, 12, 1, 2
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -21, -15, 1, 2
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, -27, 1, 2
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 0, 1, 2
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 4
createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
waitforvisualfinish
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0
restorebg
waitbgfadein
blendoff
end
Move_TWIN_BEAM::
loadspritegfx ANIM_TAG_BLUE_RING
loadspritegfx ANIM_TAG_GOLD_RING
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
call SetPsychicBackground
createvisualtask AnimTask_StartSinAnimTimer, 5, 100
createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 9, 0, 10
call PsywaveRings
call PsybeamRings
call PsywaveRings
call PsybeamRings
createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 4, 0, 12, RGB(31, 18, 31)
call PsywaveRings
call PsybeamRings
call PsywaveRings
call PsybeamRings
call PsywaveRings
call PsybeamRings
call PsywaveRings
call PsybeamRings
waitforvisualfinish
delay 1
call UnsetPsychicBg
end
Move_COMEUPPANCE::
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET
fadetobg BG_DARK
waitbgfadein
delay 0
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED
waitforvisualfinish
delay 10
createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, ANIM_ATTACKER
delay 5
setalpha 12, 8
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 30, 1
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0
playsewithpan SE_M_COMET_PUNCH, +63
delay 5
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, 1, 0
playsewithpan SE_M_COMET_PUNCH, +63
delay 5
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, 1, 0
playsewithpan SE_M_COMET_PUNCH, +63
delay 5
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, 1, 0
playsewithpan SE_M_COMET_PUNCH, +63
delay 5
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, 1, 0
playsewithpan SE_M_COMET_PUNCH, +63
delay 5
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, 1, 0
playsewithpan SE_M_COMET_PUNCH, +63
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
restorebg
waitbgfadein
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
end
Move_BLOOD_MOON::
loadspritegfx ANIM_TAG_BLOOD_MOON
loadspritegfx ANIM_TAG_BEAM
loadspritegfx ANIM_TAG_RED_EXPLOSION
createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 16, 16, RGB_BLACK
createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, ANIM_ATTACKER
delay 8
playsewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER
createsprite gMoonUpSpriteTemplate, ANIM_ATTACKER, 2
waitforvisualfinish
delay 15
playsewithpan SE_M_DETECT, 0
waitforvisualfinish
createvisualtask AnimTask_IsTargetPlayerSide, 2
jumpargeq 7 ANIM_TARGET BloodMoonOnPlayer
BloodMoonOnOpponent:
createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_HYPER_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 1, 10, 0, 5
call BloodMoonOnslaughtOpponent
call BloodMoonOnslaughtOpponent
call BloodMoonOnslaughtOpponent
call BloodMoonOnslaughtOpponent
call BloodMoonOnslaughtOpponent
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 140, -16, 165, 40, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, 6, 5, 1, 0
delay 0
waitforvisualfinish
goto BloodMoonFinish
BloodMoonOnPlayer:
createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_HYPER_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 1, 10, 0, 5
call BloodMoonOnslaughtPlayer
call BloodMoonOnslaughtPlayer
call BloodMoonOnslaughtPlayer
call BloodMoonOnslaughtPlayer
call BloodMoonOnslaughtPlayer
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 40, -16, 75, 80, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
delay 0
waitforvisualfinish
BloodMoonFinish:
createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 0, 0, RGB_BLACK
waitforvisualfinish
clearmonbg ANIM_ATTACKER
end
BloodMoonOnslaughtOpponent:
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 140, -16, 165, 40, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, 6, 5, 1, 0
delay 0
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 140, -16, 165, 40, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, -16, -15, 1, 0
delay 0
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 140, -16, 165, 40, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, 16, -5, 1, 0
delay 0
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 140, -16, 165, 40, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, -12, 18, 1, 0
delay 0
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 140, -16, 165, 40, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, 0, 5, 1, 0
delay 0
return
BloodMoonOnslaughtPlayer:
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 40, -16, 75, 80, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, 6, 5, 1, 0
delay 0
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 40, -16, 75, 80, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, -16, -15, 1, 0
delay 0
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 40, -16, 75, 80, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, 16, -5, 1, 0
delay 0
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 40, -16, 75, 80, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, -12, 18, 1, 0
delay 0
createsprite gBloodMoonOnslaughtSpriteTemplate, ANIM_TARGET, 2, 40, -16, 75, 80, 4
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gRedExplosionSpriteTemplate, ANIM_TARGET, 4, 0, 5, 1, 0
delay 0
return
Move_FICKLE_BEAM::
createvisualtask AnimTask_IsPowerOver99, 2
waitforvisualfinish
jumpreteq FALSE, FickleBeamRegular
jumpreteq TRUE, FickleBeamIntense
FickleBeamRegular:
loadspritegfx ANIM_TAG_GOLD_RING
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 3, 4, 0, 15
call PsybeamRings
call PsybeamRings
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 4, 25, 1
createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(15, 8, 30)
call PsybeamRings
call PsybeamRings
call PsybeamRings
call PsybeamRings
call PsybeamRings
call PsybeamRings
call PsybeamRings
call PsybeamRings
call PsybeamRings
waitforvisualfinish
end
FickleBeamIntense:
loadspritegfx ANIM_TAG_ORBS
fadetobgfromset BG_SPACIAL_REND_ON_OPPONENT BG_SPACIAL_REND_ON_PLAYER BG_SPACIAL_REND_ON_OPPONENT
waitbgfadein
delay 10
playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 4, 1
waitforvisualfinish
delay 30
createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_HYPER_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 1, 15, 0, 5
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 50, 1
createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB_RED, 16, 0, 0
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 50, 1
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
call HyperBeamOrbs
waitforvisualfinish
restorebg
waitbgfadein
end
Move_THUNDERCLAP::
loadspritegfx ANIM_TAG_LIGHTNING
monbg ANIM_ATK_PARTNER
setalpha 12, 8
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 1, 5
createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 3
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
delay 4
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -32
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -16
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, 0
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, 16
delay 10
createvisualtask AnimTask_ShakeTargetInPattern, 2, 30, 3, TRUE, 0
delay 2
createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 3, 16, 0, RGB_WHITE
createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 16, 16, RGB_BLACK
delay 4
createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 0, 0, RGB_BLACK
waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER
blendoff
waitforvisualfinish
end
Move_HARD_PRESS::
loadspritegfx ANIM_TAG_EXPLOSION
loadspritegfx ANIM_TAG_ACUPRESSURE
loadspritegfx ANIM_TAG_PURPLE_HAND_OUTLINE
setalpha 15, 0
call SetSteelBeamBackground
createvisualtask AnimTask_CompressTargetHorizontallyFast, 2
createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0, 0, 1, 1
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 24, -24, 1, 1
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, -16, 16, 1, 1
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, -24, -12, 1, 1
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 16, 16, 1, 1
waitforvisualfinish
blendoff
call UnsetHighSpeedBg
end
Move_DRAGON_CHEER::
loadspritegfx ANIM_TAG_NOISE_LINE
loadspritegfx ANIM_TAG_CONFETTI
loadspritegfx ANIM_TAG_PINK_CLOUD
createvisualtask AnimTask_DeepInhale, 2, ANIM_ATTACKER
delay 12
call RoarEffect
createvisualtask SoundTask_PlayCryHighPitch, 2, ANIM_ATTACKER, 3
waitforvisualfinish
monbg ANIM_ATTACKER
playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET
createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 122, 3, -14, 18, 24
createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 121, 3, 14, 6, 24
createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 120, 3, -12, 12, 24
createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 119, 3, 14, 18, 24
createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 118, 3, 0, 0, 24
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
call CreateFlatterConfetti
waitforvisualfinish
clearmonbg ANIM_ATTACKER
delay 10
end
Move_MALIGNANT_CHAIN::
loadspritegfx ANIM_TAG_PURPLE_CHAIN
loadspritegfx ANIM_TAG_POISON_BUBBLE
loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 6, 2
createsprite gChainBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 1
delay 7
createsprite gChainBindingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 1, 1
delay 3
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1
delay 20
setarg 7, -1
playsewithpan SE_M_BIND, SOUND_PAN_TARGET
waitforvisualfinish
call PoisonBubblesEffect
waitforvisualfinish
end
Move_TERA_BLAST::
Move_ORDER_UP::
Move_SPIN_OUT::
Move_POPULATION_BOMB::
Move_GLAIVE_RUSH::
Move_REVIVAL_BLESSING::
Move_SALT_CURE::
Move_TRIPLE_DIVE::
Move_MORTAL_SPIN::
Move_DOODLE::
Move_FILLET_AWAY::
Move_FLOWER_TRICK::
Move_MAKE_IT_RAIN::
Move_RUINATION::
Move_COLLISION_COURSE::
Move_ELECTRO_DRIFT::
Move_SHED_TAIL::
Move_HYPER_DRILL::
Move_TWIN_BEAM::
Move_ARMOR_CANNON::
Move_COMEUPPANCE::
Move_BLAZING_TORQUE::
Move_WICKED_TORQUE::
Move_NOXIOUS_TORQUE::
Move_COMBAT_TORQUE::
Move_MAGICAL_TORQUE::
Move_PSYBLADE::
Move_BLOOD_MOON::
Move_MATCHA_GOTCHA::
Move_TERA_STARSTORM::
Move_FICKLE_BEAM::
Move_THUNDERCLAP::
Move_MIGHTY_CLEAVE::
Move_TACHYON_CUTTER::
Move_HARD_PRESS::
Move_DRAGON_CHEER::
Move_SUPERCELL_SLAM::
Move_MALIGNANT_CHAIN::
end @to do
@@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@

View file

@ -30,6 +30,19 @@ BattleScript_DamageToQuarterTargetHP::
damagetoquartertargethp
goto BattleScript_HitFromAtkAnimation
BattleScript_EffectFickleBeam::
attackcanceler
attackstring
ppreduce
accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
ficklebeamdamagecalculation
goto BattleScript_HitFromCritCalc
BattleScript_FickleBeamDoubled::
pause B_WAIT_TIME_SHORTEST
printstring STRINGID_FICKLEBEAMDOUBLED
waitmessage B_WAIT_TIME_LONG
goto BattleScript_HitFromCritCalc
BattleScript_Terastallization::
@ TODO: no string prints in S/V, but right now this helps with clarity
printstring STRINGID_PKMNSTORINGENERGY

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 B

View file

@ -800,6 +800,7 @@ struct BattleStruct
u8 distortedTypeMatchups;
u8 categoryOverride; // for Z-Moves and Max Moves
u32 stellarBoostFlags[NUM_BATTLE_SIDES]; // stored as a bitfield of flags for all types for each side
u8 fickleBeamBoosted:1;
};
// The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider,

View file

@ -253,6 +253,7 @@ void AnimParticleBurst(struct Sprite *);
void AnimPowerAbsorptionOrb(struct Sprite *sprite);
void AnimNeedleArmSpike(struct Sprite *);
void AnimTask_CompressTargetHorizontally(u8 taskId);
void AnimTask_CompressTargetHorizontallyFast(u8 taskId);
void AnimSporeParticle(struct Sprite *sprite);
void AnimAbsorptionOrb(struct Sprite *sprite);
void AnimPetalDanceSmallFlower(struct Sprite *sprite);

View file

@ -843,5 +843,7 @@ extern const u8 BattleScript_EffectUpperHand[];
extern const u8 BattleScript_EffectTidyUp[];
extern const u8 BattleScript_EffectSpicyExtract[];
extern const u8 BattleScript_DamageToQuarterTargetHP[];
extern const u8 BattleScript_EffectFickleBeam[];
extern const u8 BattleScript_FickleBeamDoubled[];
#endif // GUARD_BATTLE_SCRIPTS_H

View file

@ -412,6 +412,10 @@
#define ANIM_TAG_TERA_CRYSTAL (ANIM_SPRITES_START + 398)
#define ANIM_TAG_TERA_SHATTER (ANIM_SPRITES_START + 399)
#define ANIM_TAG_DREEPY_SHINY (ANIM_SPRITES_START + 400)
#define ANIM_TAG_BLOOD_MOON (ANIM_SPRITES_START + 401)
#define ANIM_TAG_BEAM (ANIM_SPRITES_START + 402)
#define ANIM_TAG_RED_EXPLOSION (ANIM_SPRITES_START + 403)
#define ANIM_TAG_PURPLE_CHAIN (ANIM_SPRITES_START + 404)
// battlers
#define ANIM_ATTACKER 0

View file

@ -712,8 +712,9 @@
#define STRINGID_FOGISDEEP 710
#define STRINGID_FOGLIFTED 711
#define STRINGID_PKMNMADESHELLGLEAM 712
#define STRINGID_FICKLEBEAMDOUBLED 713
#define BATTLESTRINGS_COUNT 713
#define BATTLESTRINGS_COUNT 714
// This is the string id that gBattleStringsTable starts with.
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,

View file

@ -2724,6 +2724,8 @@ extern const u32 gBattleAnimSpritePal_AuraSphere[];
extern const u32 gBattleAnimSpritePal_AvalancheRocks[];
extern const u32 gBattleAnimSpriteGfx_NewPokeball[];
extern const u32 gBattleAnimSpritePal_NewPokeball[];
extern const u32 gBattleAnimSpriteGfx_Beam[];
extern const u32 gBattleAnimSpritePal_Beam[];
extern const u32 gBattleAnimSpriteGfx_BerryEaten[];
extern const u32 gBattleAnimSpritePal_BerryEaten[];
extern const u32 gBattleAnimSpriteGfx_BerryNormal[];
@ -2732,6 +2734,8 @@ extern const u32 gBattleAnimSpriteGfx_BigRock[];
extern const u32 gBattleAnimSpritePal_BigRock[];
extern const u32 gBattleAnimSpriteGfx_BlacephalonHead[];
extern const u32 gBattleAnimSpritePal_BlacephalonHead[];
extern const u32 gBattleAnimSpriteGfx_BloodMoon[];
extern const u32 gBattleAnimSpritePal_BloodMoon[];
extern const u32 gBattleAnimSpritePal_BlueFlare[];
extern const u32 gBattleAnimSpriteGfx_Branch[];
extern const u32 gBattleAnimSpritePal_Branch[];
@ -2825,12 +2829,16 @@ extern const u32 gBattleAnimSpriteGfx_PoisonColumn[];
extern const u32 gBattleAnimSpritePal_PoisonColumn[];
extern const u32 gBattleAnimSpriteGfx_PowerTrick[];
extern const u32 gBattleAnimSpritePal_PowerTrick[];
extern const u32 gBattleAnimSpriteGfx_PurpleChain[];
extern const u32 gBattleAnimSpritePal_PurpleChain[];
extern const u32 gBattleAnimSpriteGfx_PurpleDrake[];
extern const u32 gBattleAnimSpritePal_PurpleDrake[];
extern const u32 gBattleAnimSpriteGfx_QuickGuard[];
extern const u32 gBattleAnimSpritePal_QuickGuard[];
extern const u32 gBattleAnimSpriteGfx_RazorShell[];
extern const u32 gBattleAnimSpritePal_RazorShell[];
extern const u32 gBattleAnimSpriteGfx_RedExplosion[];
extern const u32 gBattleAnimSpritePal_RedExplosion[];
extern const u32 gBattleAnimSpriteGfx_RocksSmall[];
extern const u32 gBattleAnimSpriteGfx_NewRocks[];
extern const u32 gBattleAnimSpritePal_NewRocks[];

View file

@ -3101,6 +3101,17 @@ const struct SpriteTemplate gPsyshockSmokeSpriteTemplate =
.callback = AnimSpriteOnMonPos,
};
const struct SpriteTemplate gChainBindingSpriteTemplate =
{
.tileTag = ANIM_TAG_PURPLE_CHAIN,
.paletteTag = ANIM_TAG_PURPLE_CHAIN,
.oam = &gOamData_AffineNormal_ObjNormal_64x32,
.anims = sAnims_ConstrictBinding,
.images = NULL,
.affineAnims = sAffineAnims_ConstrictBinding,
.callback = AnimConstrictBinding,
};
// functions
static void AnimGrassKnot(struct Sprite *sprite)
{
@ -7229,6 +7240,14 @@ static const union AffineAnimCmd sCompressTargetHorizontallyAffineAnimCmds[] =
AFFINEANIMCMD_END,
};
static const union AffineAnimCmd sCompressTargetHorizontallyAffineAnimCmdsFast[] =
{
AFFINEANIMCMD_FRAME(32, 0, 0, 16), //Compress
AFFINEANIMCMD_FRAME(0, 0, 0, 32),
AFFINEANIMCMD_FRAME(-32, 0, 0, 16),
AFFINEANIMCMD_END,
};
static void AnimTask_CompressTargetStep(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@ -7245,6 +7264,14 @@ void AnimTask_CompressTargetHorizontally(u8 taskId)
task->func = AnimTask_CompressTargetStep;
}
void AnimTask_CompressTargetHorizontallyFast(u8 taskId)
{
struct Task* task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
PrepareAffineAnimInTaskData(task, spriteId, sCompressTargetHorizontallyAffineAnimCmdsFast);
task->func = AnimTask_CompressTargetStep;
}
void AnimTask_CreateSmallSteelBeamOrbs(u8 taskId)
{
if (--gTasks[taskId].data[0] == -1)

View file

@ -99,6 +99,7 @@ static void SpriteCB_GlacialLance_Step1(struct Sprite* sprite);
static void SpriteCB_GlacialLance_Step2(struct Sprite* sprite);
static void SpriteCB_GlacialLance(struct Sprite* sprite);
static void SpriteCB_TripleArrowKick(struct Sprite* sprite);
static void AnimMakingItRain(struct Sprite *sprite);
// const data
// general
@ -7234,6 +7235,51 @@ const struct SpriteTemplate gBitterBladeImpactTemplate =
.callback = AnimClawSlash
};
// Make It Rain
const struct SpriteTemplate gMakingItRainTemplate =
{
.tileTag = ANIM_TAG_COIN,
.paletteTag = ANIM_TAG_COIN,
.oam = &gOamData_AffineNormal_ObjNormal_16x16,
.anims = gCoinAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimMakingItRain,
};
const struct SpriteTemplate gRedExplosionSpriteTemplate =
{
.tileTag = ANIM_TAG_RED_EXPLOSION,
.paletteTag = ANIM_TAG_RED_EXPLOSION,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = gExplosionAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimSpriteOnMonPos,
};
const struct SpriteTemplate gBloodMoonOnslaughtSpriteTemplate =
{
.tileTag = ANIM_TAG_BEAM,
.paletteTag = ANIM_TAG_BEAM,
.oam = &gOamData_AffineNormal_ObjBlend_64x64,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = sArrowRaidOnslaughtAffineAnimTable,
.callback = AnimAssistPawprint
};
const struct SpriteTemplate gMoonUpSpriteTemplate =
{
.tileTag = ANIM_TAG_BLOOD_MOON,
.paletteTag = ANIM_TAG_BLOOD_MOON,
.oam = &gOamData_AffineOff_ObjNormal_64x64,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimWeatherBallUp,
};
// functions
//general
void AnimTask_IsTargetPartner(u8 taskId)
@ -9219,3 +9265,23 @@ void AnimTask_StickySyrup(u8 taskId)
gBattleAnimArgs[0] = gAnimDisableStructPtr->syrupBombIsShiny;
DestroyAnimVisualTask(taskId);
}
static void AnimMakingItRain(struct Sprite *sprite)
{
if (gBattleAnimArgs[3] != 0)
SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &sprite->x, &sprite->y); //coin shower on target
sprite->x += gBattleAnimArgs[0];
sprite->y += 14;
StartSpriteAnim(sprite, gBattleAnimArgs[1]);
AnimateSprite(sprite);
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->data[2] = 4;
sprite->data[3] = 16;
sprite->data[4] = -70;
sprite->data[5] = gBattleAnimArgs[2];
StoreSpriteCallbackInData6(sprite, AnimFallingRock_Step);
sprite->callback = TranslateSpriteInEllipse;
sprite->callback(sprite);
}

View file

@ -849,9 +849,11 @@ static const u8 sText_ShedItsTail[] = _("{B_ATK_NAME_WITH_PREFIX} shed its tail\
static const u8 sText_PkmnTerastallizedInto[] = _("{B_ATK_NAME_WITH_PREFIX} terastallized\ninto the {B_BUFF1} type!");
static const u8 sText_SupersweetAromaWafts[] = _("A supersweet aroma is wafting from\nthe syrup covering {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_TidyingUpComplete[] = _("Tidying up complete!");
static const u8 sText_FickleBeamDoubled[] = _("{B_ATK_NAME_WITH_PREFIX} is going all\nout for this attack!");
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
{
[STRINGID_FICKLEBEAMDOUBLED - BATTLESTRINGS_TABLE_START] = sText_FickleBeamDoubled,
[STRINGID_PKMNTERASTALLIZEDINTO - BATTLESTRINGS_TABLE_START] = sText_PkmnTerastallizedInto,
[STRINGID_TIDYINGUPCOMPLETE - BATTLESTRINGS_TABLE_START] = sText_TidyingUpComplete,
[STRINGID_SUPERSWEETAROMAWAFTS - BATTLESTRINGS_TABLE_START] = sText_SupersweetAromaWafts,

View file

@ -6402,6 +6402,7 @@ static void Cmd_moveend(void)
gBattleStruct->enduredDamage = 0;
gBattleStruct->additionalEffectsCounter = 0;
gBattleStruct->poisonPuppeteerConfusion = FALSE;
gBattleStruct->fickleBeamBoosted = FALSE;
if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_Z_MOVE)
SetActiveGimmick(gBattlerAttacker, GIMMICK_NONE);
gBattleStruct->distortedTypeMatchups = 0;
@ -17132,3 +17133,19 @@ void BS_DamageToQuarterTargetHP(void)
gBattlescriptCurrInstr = cmd->nextInstr;
}
void BS_FickleBeamDamageCalculation(void)
{
NATIVE_ARGS();
gBattleStruct->fickleBeamBoosted = FALSE;
if (RandomPercentage(RNG_FICKLE_BEAM, 30))
{
gBattleStruct->fickleBeamBoosted = TRUE;
gBattlescriptCurrInstr = BattleScript_FickleBeamDoubled;
}
else
{
gBattlescriptCurrInstr = cmd->nextInstr;
}
}

View file

@ -9073,7 +9073,7 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3
basePower = (basePower > 350) ? 350 : basePower;
break;
case EFFECT_FICKLE_BEAM:
if (RandomPercentage(RNG_FICKLE_BEAM, 30))
if (gBattleStruct->fickleBeamBoosted)
basePower *= 2;
break;
case EFFECT_TERA_BLAST:

View file

@ -1461,6 +1461,10 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] =
{gBattleAnimSpriteGfx_TeraCrystal, 0x800, ANIM_TAG_TERA_CRYSTAL},
{gBattleAnimSpriteGfx_TeraShatter, 0x0180, ANIM_TAG_TERA_SHATTER},
{gBattleAnimSpriteGfx_DreepyMissile, 0x200, ANIM_TAG_DREEPY_SHINY},
{gBattleAnimSpriteGfx_BloodMoon, 0x0800, ANIM_TAG_BLOOD_MOON},
{gBattleAnimSpriteGfx_RedExplosion, 0x0800, ANIM_TAG_RED_EXPLOSION},
{gBattleAnimSpriteGfx_Beam, 0x0800, ANIM_TAG_BEAM},
{gBattleAnimSpriteGfx_PurpleChain, 0x1000, ANIM_TAG_PURPLE_CHAIN},
};
const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
@ -1923,6 +1927,10 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
{gBattleAnimSpritePal_TeraCrystal, ANIM_TAG_TERA_CRYSTAL},
{gBattleAnimSpritePal_TeraShatter, ANIM_TAG_TERA_SHATTER},
{gBattleAnimSpritePal_DreepyMissileShiny, ANIM_TAG_DREEPY_SHINY},
{gBattleAnimSpritePal_BloodMoon, ANIM_TAG_BLOOD_MOON},
{gBattleAnimSpritePal_RedExplosion, ANIM_TAG_RED_EXPLOSION},
{gBattleAnimSpritePal_Beam, ANIM_TAG_BEAM},
{gBattleAnimSpritePal_PurpleChain, ANIM_TAG_PURPLE_CHAIN},
};
const struct BattleAnimBackground gBattleAnimBackgroundTable[] =

View file

@ -2169,7 +2169,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
[EFFECT_FICKLE_BEAM] =
{
.battleScript = BattleScript_EffectHit,
.battleScript = BattleScript_EffectFickleBeam,
.battleTvScore = 0, // TODO: Assign points
},

View file

@ -81,6 +81,9 @@ const u32 gBattleAnimSpritePal_AvalancheRocks[] = INCBIN_U32("graphics/battle_an
const u32 gBattleAnimSpriteGfx_NewPokeball[] = INCBIN_U32("graphics/battle_anims/sprites/baton_pass_ball.4bpp.lz");
const u32 gBattleAnimSpritePal_NewPokeball[] = INCBIN_U32("graphics/battle_anims/sprites/baton_pass_ball.gbapal.lz");
const u32 gBattleAnimSpriteGfx_Beam[] = INCBIN_U32("graphics/battle_anims/sprites/beam.4bpp.lz");
const u32 gBattleAnimSpritePal_Beam[] = INCBIN_U32("graphics/battle_anims/sprites/beam.gbapal.lz");
const u32 gBattleAnimSpriteGfx_BerryEaten[] = INCBIN_U32("graphics/battle_anims/sprites/berry_eaten.4bpp.lz");
const u32 gBattleAnimSpritePal_BerryEaten[] = INCBIN_U32("graphics/battle_anims/sprites/berry_eaten.gbapal.lz");
@ -93,6 +96,9 @@ const u32 gBattleAnimSpritePal_BigRock[] = INCBIN_U32("graphics/battle_anims/spr
const u32 gBattleAnimSpriteGfx_BlacephalonHead[] = INCBIN_U32("graphics/battle_anims/sprites/blacephalon_head.4bpp.lz");
const u32 gBattleAnimSpritePal_BlacephalonHead[] = INCBIN_U32("graphics/battle_anims/sprites/blacephalon_head.gbapal.lz");
const u32 gBattleAnimSpriteGfx_BloodMoon[] = INCBIN_U32("graphics/battle_anims/sprites/blood_moon.4bpp.lz");
const u32 gBattleAnimSpritePal_BloodMoon[] = INCBIN_U32("graphics/battle_anims/sprites/blood_moon.gbapal.lz");
const u32 gBattleAnimSpritePal_BlueFlare[] = INCBIN_U32("graphics/battle_anims/sprites/blue_flare.gbapal.lz");
const u32 gBattleAnimSpriteGfx_Branch[] = INCBIN_U32("graphics/battle_anims/sprites/branch.4bpp.lz");
@ -233,12 +239,18 @@ const u32 gBattleAnimSpritePal_PoisonColumn[] = INCBIN_U32("graphics/battle_anim
const u32 gBattleAnimSpriteGfx_PowerTrick[] = INCBIN_U32("graphics/battle_anims/sprites/power_trick.4bpp.lz");
const u32 gBattleAnimSpritePal_PowerTrick[] = INCBIN_U32("graphics/battle_anims/sprites/power_trick.gbapal.lz");
const u32 gBattleAnimSpriteGfx_PurpleChain[] = INCBIN_U32("graphics/battle_anims/sprites/purple_chain.4bpp.lz");
const u32 gBattleAnimSpritePal_PurpleChain[] = INCBIN_U32("graphics/battle_anims/sprites/purple_chain.gbapal.lz");
const u32 gBattleAnimSpriteGfx_PurpleDrake[] = INCBIN_U32("graphics/battle_anims/sprites/purple_drake.4bpp.lz");
const u32 gBattleAnimSpritePal_PurpleDrake[] = INCBIN_U32("graphics/battle_anims/sprites/purple_drake.gbapal.lz");
const u32 gBattleAnimSpriteGfx_RazorShell[] = INCBIN_U32("graphics/battle_anims/sprites/razor_shell.4bpp.lz");
const u32 gBattleAnimSpritePal_RazorShell[] = INCBIN_U32("graphics/battle_anims/sprites/razor_shell.gbapal.lz");
const u32 gBattleAnimSpriteGfx_RedExplosion[] = INCBIN_U32("graphics/battle_anims/sprites/red_explosion.4bpp.lz");
const u32 gBattleAnimSpritePal_RedExplosion[] = INCBIN_U32("graphics/battle_anims/sprites/red_explosion.gbapal.lz");
const u32 gBattleAnimSpriteGfx_RocksSmall[] = INCBIN_U32("graphics/battle_anims/sprites/rock_small.4bpp.lz");
const u32 gBattleAnimSpriteGfx_NewRocks[] = INCBIN_U32("graphics/battle_anims/sprites/rocks_new.4bpp.lz");