Merge branch 'master' of https://github.com/rh-hideout/pokeemerald-expansion into mastertoupcoming12apr
This commit is contained in:
commit
d86aedfd32
@ -200,7 +200,7 @@ gBattleAnimMove_NaturalGift::
|
||||
createvisualtask AnimTask_DragonDanceWaver, 5
|
||||
playsewithpan SE_M_TELEPORT, -64
|
||||
delay 8
|
||||
createvisualtask AnimTask_BlendPalInAndOutByTag, 5, 10249, 19456, 14, 0, 3
|
||||
createvisualtask AnimTask_BlendPalInAndOutByTag, 5, ANIM_TAG_HOLLOW_ORB, 19456, 14, 0, 3
|
||||
createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 0
|
||||
createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 43
|
||||
createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 85
|
||||
@ -824,7 +824,7 @@ gBattleAnimMove_Punishment::
|
||||
monbg ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
playsewithpan 155, SOUND_PAN_TARGET
|
||||
createsprite gPunishmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0
|
||||
createsprite gPunishmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0
|
||||
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_TARGET
|
||||
@ -844,7 +844,7 @@ gBattleAnimMove_Punishment::
|
||||
gBattleAnimMove_LastResort::
|
||||
fadetobg BG_COSMIC
|
||||
waitbgfadeout
|
||||
createvisualtask AnimTask_StartSlidingBg, 2, 4, 0, 128, 0, -1
|
||||
createvisualtask AnimTask_StartSlidingBg, 2, 0, 128, 0, -1
|
||||
waitbgfadein
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
|
||||
@ -855,19 +855,19 @@ gBattleAnimMove_LastResort::
|
||||
waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8
|
||||
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4
|
||||
waitforvisualfinish
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, 16, RGB_WHITE
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 0, 20, 0, 0, 4
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 16, 16, RGB_WHITE
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
|
||||
delay 3
|
||||
waitforvisualfinish
|
||||
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 132, -10, 0, 1, 0
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 1, -32, 0, 0, 3
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0
|
||||
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0
|
||||
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1
|
||||
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, 1, 2, 16, 0, RGB_WHITE
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_WHITE
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1
|
||||
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1
|
||||
@ -897,9 +897,9 @@ gBattleAnimMove_SuckerPunch::
|
||||
loadspritegfx ANIM_TAG_POISON_JAB
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
|
||||
createsprite gSuckerPunchSpriteTemplate, ANIM_TARGET, 130, -18, 5, 40, 8, 160, 0
|
||||
createsprite gSuckerPunchSpriteTemplate, ANIM_TARGET, 2, -18, 5, 40, 8, 160, 0
|
||||
delay 4
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 130, -8, 8, 1, 2
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 2
|
||||
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2
|
||||
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
waitforvisualfinish
|
||||
@ -1003,11 +1003,11 @@ gBattleAnimGeneral_AquaRingHeal::
|
||||
createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0
|
||||
setalpha 8, 8
|
||||
playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER
|
||||
createsprite gGuardRingSpriteTemplate, 2, 0
|
||||
createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 0
|
||||
delay 4
|
||||
createsprite gGuardRingSpriteTemplate, 2, 0
|
||||
createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 0
|
||||
delay 4
|
||||
createsprite gGuardRingSpriteTemplate, 2, 0
|
||||
createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 0
|
||||
waitforvisualfinish
|
||||
playsewithpan SE_SHINY, SOUND_PAN_ATTACKER
|
||||
createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 0, 2, 0, 10, RGB_WHITE
|
||||
@ -1090,33 +1090,33 @@ gBattleAnimMove_FlareBlitz::
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1
|
||||
createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, 192, 176, 40
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, 176, 40
|
||||
playsewithpan SE_M_COMET_PUNCH, +63
|
||||
delay 5
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, 1, 0
|
||||
createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, -192, 240, 40
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40
|
||||
playsewithpan SE_M_COMET_PUNCH, +63
|
||||
delay 5
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, 1, 0
|
||||
createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, 192, -160, 40
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, -160, 40
|
||||
playsewithpan SE_M_COMET_PUNCH, +63
|
||||
delay 5
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, 1, 0
|
||||
createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, -192, -112, 40
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -192, -112, 40
|
||||
playsewithpan SE_M_COMET_PUNCH, +63
|
||||
delay 5
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, 1, 0
|
||||
createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, 160, 48, 40
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 160, 48, 40
|
||||
playsewithpan SE_M_COMET_PUNCH, +63
|
||||
delay 5
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, 1, 0
|
||||
createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, -224, -32, 40
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 129, 0, 10, 112, -128, 40
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -224, -32, 40
|
||||
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40
|
||||
playsewithpan SE_M_COMET_PUNCH, +63
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_BLACK
|
||||
playsewithpan SE_M_COMET_PUNCH, +63
|
||||
@ -1138,10 +1138,10 @@ gBattleAnimMove_ForcePalm::
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
|
||||
createsprite gKarateChopSpriteTemplate, ANIM_TARGET, 2, -16, 0, 0, 0, 10, 1, 3, 0
|
||||
createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, 1, 3, 0
|
||||
waitforvisualfinish
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
createsprite gForcePalmSpriteTemplate, ANIM_TARGET 3, 0, 0, 1, 2
|
||||
createsprite gForcePalmSpriteTemplate, ANIM_ATTACKER 3, 0, 0, 1, 2
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
@ -1379,17 +1379,17 @@ gBattleAnimMove_AquaTail::
|
||||
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
|
||||
delay 4
|
||||
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET
|
||||
createsprite gAquaTailKnockOffSpriteTemplate, ANIM_ATTACKER, 130, -16, -16
|
||||
createsprite gAquaTailKnockOffSpriteTemplate, ANIM_ATTACKER, 2, -16, -16
|
||||
delay 8
|
||||
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_TARGET, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0
|
||||
createsprite gAquaTailHitSpriteTemplate, ANIM_TARGET, 131, 0, 0, 1, 2
|
||||
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0
|
||||
createsprite gAquaTailHitSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 2
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -12, 10, 0, 3
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -12, 10, 0, 3
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
|
||||
delay 3
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1
|
||||
delay 5
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 6
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 6
|
||||
delay 10
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
@ -1532,7 +1532,7 @@ gBattleAnimMove_DragonPulse::
|
||||
clearmonbg ANIM_TARGET
|
||||
end
|
||||
DragonPulseParticle:
|
||||
createsprite gDragonPulseSpriteTemplate, ANIM_ATTACKER, 130, 16, 0, 0, 0, 13, 0
|
||||
createsprite gDragonPulseSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 13, 0
|
||||
delay 4
|
||||
return
|
||||
|
||||
@ -1544,21 +1544,21 @@ gBattleAnimMove_DragonRush::
|
||||
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
|
||||
delay 4
|
||||
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET
|
||||
createsprite gDragonRushSpriteTemplate, ANIM_ATTACKER, 131, -16, -16
|
||||
createsprite gDragonRushSpriteTemplate, ANIM_ATTACKER, 3, -16, -16
|
||||
delay 8
|
||||
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_TARGET, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
|
||||
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
|
||||
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 1
|
||||
waitforvisualfinish
|
||||
playsewithpan 131, SOUND_PAN_TARGET
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, 20, 24, 14, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 5, 0, -20, 24, 14, 1
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 5, 20, -24, 14, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, -5, 0, 20, 24, 14, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, -5, 30, 18, 8, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, -18, 8, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, -30, 18, 8, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, -30, -18, 8, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 24, 14, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 5, 0, -20, 24, 14, 1
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 5, 20, -24, 14, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, -5, 0, 20, 24, 14, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 30, 18, 8, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, -18, 8, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -30, 18, 8, 2
|
||||
createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -30, -18, 8, 2
|
||||
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 7, 1
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
@ -1704,29 +1704,28 @@ gBattleAnimMove_BraveBird::
|
||||
gBattleAnimMove_EarthPower::
|
||||
loadspritegfx ANIM_TAG_SMALL_EMBER
|
||||
loadspritegfx ANIM_TAG_FIRE_PLUME
|
||||
createvisualtask AnimTask_HorizontalShake, 3, ANIM_DEF_PARTNER, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 3, ANIM_TARGET, 10, 50
|
||||
playsewithpan SE_M_EARTHQUAKE, SOUND_PAN_TARGET
|
||||
delay 40
|
||||
loopsewithpan 145, SOUND_PAN_TARGET 11, 3
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 3, 25, 1
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 194, 1, 5, 0
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 66, 1, 5, 0
|
||||
delay 1
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 194, 1, -10, -15
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 66, 1, -10, -15
|
||||
delay 1
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 130, 1, 0, 25
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 25
|
||||
delay 1
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 194, 1, 15, 5
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 66, 1, 15, 5
|
||||
delay 1
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 194, 1, -25, 0
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 66, 1, -25, 0
|
||||
delay 1
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 130, 1, 30, 30
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 2, 1, 30, 30
|
||||
delay 1
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 130, 1, -27, 25
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 2, 1, -27, 25
|
||||
delay 1
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 194, 1, 0, 8
|
||||
createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 66, 1, 0, 8
|
||||
waitforvisualfinish
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 194, 0, 0, 4
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 66, 0, 0, 4
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
||||
@ -1790,7 +1789,7 @@ GigaImpactContinuity:
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 0
|
||||
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
|
||||
delay 1
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 1, -16, 0, 0, 4
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 0, 0, 4
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
|
||||
waitforvisualfinish
|
||||
@ -1879,17 +1878,17 @@ gBattleAnimMove_Avalanche::
|
||||
loadspritegfx ANIM_TAG_ROCKS
|
||||
loadspritegfx ANIM_TAG_ICE_CHUNK
|
||||
monbg ANIM_DEF_PARTNER
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_TARGET, 2, 7, 1, 11, 1
|
||||
createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, -5, 1, -5, 1
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1
|
||||
createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 2, -5, 1, -5, 1
|
||||
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
|
||||
delay 2
|
||||
createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, 5, 0, 6, 1
|
||||
createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 2, 5, 0, 6, 1
|
||||
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
|
||||
delay 2
|
||||
createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 130, 19, 1, 10, 1
|
||||
createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 2, 19, 1, 10, 1
|
||||
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
|
||||
delay 2
|
||||
createsprite gAvalancheSpriteTemplate ANIM_TARGET, 130, -17, 2, -20, 1
|
||||
createsprite gAvalancheSpriteTemplate ANIM_TARGET, 2, -17, 2, -20, 1
|
||||
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
|
||||
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 50, 1
|
||||
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 0, 5, 50, 1
|
||||
@ -2212,7 +2211,7 @@ gBattleAnimMove_ZenHeadbutt::
|
||||
setalpha 12, 8
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0
|
||||
waitforvisualfinish
|
||||
createsprite gZenHeadbuttSpriteTemplate, ANIM_ATTACKER, 66, 0
|
||||
createsprite gZenHeadbuttSpriteTemplate, ANIM_ATTACKER, 2, 0
|
||||
delay 18
|
||||
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
|
||||
waitforvisualfinish
|
||||
@ -2228,7 +2227,7 @@ gBattleAnimMove_ZenHeadbutt::
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 4, 1
|
||||
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1
|
||||
createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 1, 2
|
||||
createsprite gAquaTailHitSpriteTemplate, ANIM_TARGET, 131, 0, 0, 1, 1
|
||||
createsprite gAquaTailHitSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
|
||||
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
waitforvisualfinish
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 0
|
||||
@ -2246,22 +2245,22 @@ gBattleAnimMove_MirrorShot::
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 10, RGB_WHITEALPHA
|
||||
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 12, 12, RGB(21, 21, 21)
|
||||
waitforvisualfinish
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 2
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2
|
||||
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
delay 3
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 2
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2
|
||||
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
delay 3
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 2
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2
|
||||
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
delay 3
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 2
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2
|
||||
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
delay 3
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 2
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2
|
||||
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
delay 3
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 2
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2
|
||||
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 10, 0, RGB_WHITEALPHA
|
||||
@ -2318,27 +2317,27 @@ gBattleAnimMove_RockClimb::
|
||||
monbg ANIM_DEF_PARTNER
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_Rollout, 2, 0
|
||||
createvisualtask AnimTask_Rollout, 2, 1
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 30, 1, RGB(0, 16, 1)
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, -15, 8, 1, 1
|
||||
createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 30, 1, 0
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -15, 8, 1, 1
|
||||
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
delay 1
|
||||
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, -5, -12, 1, 1
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, -12, 1, 1
|
||||
delay 1
|
||||
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 0, -32, 1, 1
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -32, 1, 1
|
||||
delay 1
|
||||
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 5, -52, 1, 1
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, -52, 1, 1
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 1, -25, 16, 1, 4
|
||||
delay 4
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1
|
||||
delay 30
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6
|
||||
delay 4
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, 1, 0, 6
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
blendoff
|
||||
end
|
||||
@ -2435,32 +2434,32 @@ gBattleAnimMove_DracoMeteor::
|
||||
blendoff
|
||||
end
|
||||
DracoMeteor1:
|
||||
createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 131, -48, -64, 40, 32, 25
|
||||
createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 3, -48, -64, 40, 32, 25
|
||||
delay 2
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -48, -64, 40, 32, 25
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 3, -48, -64, 40, 32, 25
|
||||
delay 2
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -48, -64, 40, 32, 25
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 3, -48, -64, 40, 32, 25
|
||||
return
|
||||
DracoMeteor2:
|
||||
createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 131, -112, -64, -8, 32, 25
|
||||
createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 3, -112, -64, -8, 32, 25
|
||||
delay 2
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -112, -64, -8, 32, 25
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 3, -112, -64, -8, 32, 25
|
||||
delay 2
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -112, -64, -8, 32, 25
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 3, -112, -64, -8, 32, 25
|
||||
return
|
||||
DracoMeteor3:
|
||||
createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, 24, 32, 25
|
||||
createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 3, -80, -64, 24, 32, 25
|
||||
delay 2
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, 24, 32, 25
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 3, -80, -64, 24, 32, 25
|
||||
delay 2
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, 24, 32, 25
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 3, -80, -64, 24, 32, 25
|
||||
return
|
||||
DracoMeteor4:
|
||||
createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, -8, 32, 25
|
||||
createsprite gDracoMeteorRocksSpriteTemplate, ANIM_ATTACKER, 3, -80, -64, -8, 32, 25
|
||||
delay 2
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, -8, 32, 25
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 3, -80, -64, -8, 32, 25
|
||||
delay 2
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 131, -80, -64, -8, 32, 25
|
||||
createsprite gDracoMeteorTailSpriteTemplate, ANIM_ATTACKER, 3, -80, -64, -8, 32, 25
|
||||
return
|
||||
|
||||
gBattleAnimMove_Discharge::
|
||||
@ -2576,14 +2575,14 @@ gBattleAnimMove_LavaPlume::
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 32, 1
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 1, 0, 32, 1
|
||||
waitforvisualfinish
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 0
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 32
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 64
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 96
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 128
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 160
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 192
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 130, 224
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 2, 32
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 2, 64
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 2, 96
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 2, 128
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 2, 160
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 2, 192
|
||||
createsprite gLavaPlumeSpriteTemplate, ANIM_ATTACKER, 2, 224
|
||||
playsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER
|
||||
waitforvisualfinish
|
||||
end
|
||||
@ -2729,7 +2728,7 @@ RockWrecker_1:
|
||||
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
|
||||
delay 3
|
||||
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
|
||||
createsprite gRockBlastRockSpriteTemplate, ANIM_ATTACKER, 130, 16, 0, 0, 0, 25, 257
|
||||
createsprite gRockBlastRockSpriteTemplate, ANIM_ATTACKER, 130, 16, 0, 0, 0, 25, (1 << 8) | 1
|
||||
waitforvisualfinish
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 0, 0, 1, 1
|
||||
playsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET
|
||||
@ -2747,15 +2746,15 @@ RockWrecker_2:
|
||||
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
|
||||
delay 3
|
||||
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
|
||||
createsprite gRockBlastRockSpriteTemplate, ANIM_ATTACKER, 130, 16, 0, 0, 0, 25, 257
|
||||
createsprite gRockBlastRockSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 0, 0, 25, 257
|
||||
waitforvisualfinish
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 0, 0, 1, 1
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
|
||||
playsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET
|
||||
createsprite gRockFragmentSpriteTemplate ANIM_TARGET, 130, 0, 0, 20, 24, 14, 2
|
||||
createsprite gRockFragmentSpriteTemplate ANIM_TARGET, 2, 0, 0, 20, 24, 14, 2
|
||||
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1
|
||||
createsprite gRockFragmentSpriteTemplate ANIM_ATTACKER, 130, 5, 0, -20, 24, 14, 1
|
||||
createsprite gRockFragmentSpriteTemplate ANIM_ATTACKER, 130, 0, 5, 20, -18, 14, 2
|
||||
createsprite gRockFragmentSpriteTemplate ANIM_ATTACKER, 130, -5, 0, -20, -18, 14, 2
|
||||
createsprite gRockFragmentSpriteTemplate ANIM_ATTACKER, 2, 5, 0, -20, 24, 14, 1
|
||||
createsprite gRockFragmentSpriteTemplate ANIM_ATTACKER, 2, 0, 5, 20, -18, 14, 2
|
||||
createsprite gRockFragmentSpriteTemplate ANIM_ATTACKER, 2, -5, 0, -20, -18, 14, 2
|
||||
waitforvisualfinish
|
||||
call UnsetPsychicBg
|
||||
end
|
||||
@ -2788,7 +2787,7 @@ gBattleAnimMove_GunkShot::
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1
|
||||
delay 6
|
||||
panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
|
||||
createvisualtask AnimTask_StartSinAnimTimer, 5, 1, 100
|
||||
createvisualtask AnimTask_StartSinAnimTimer, 5, 100
|
||||
call GunkShotParticles
|
||||
call GunkShotParticles
|
||||
call GunkShotParticles
|
||||
@ -2860,7 +2859,7 @@ gBattleAnimMove_MagnetBomb::
|
||||
loadspritegfx ANIM_TAG_SPARK_2
|
||||
delay 0
|
||||
playsewithpan 119, 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
|
||||
createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0
|
||||
createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1
|
||||
@ -2901,22 +2900,22 @@ gBattleAnimMove_MagnetBomb::
|
||||
loadspritegfx ANIM_TAG_GRAY_SMOKE
|
||||
loadspritegfx ANIM_TAG_BLACK_BALL
|
||||
playsewithpan 177, 63
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, 8, 8, 1, 0
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, 8, 8, 1, 0
|
||||
delay 2
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, -8, -8, 1, 0
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, -8, -8, 1, 0
|
||||
delay 2
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, 8, -8, 1, 0
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, 8, -8, 1, 0
|
||||
delay 2
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, -8, 8, 1, 0
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 0
|
||||
waitforvisualfinish
|
||||
playsewithpan 177, 63
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, 8, 8, 1, 0
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, 8, 8, 1, 0
|
||||
delay 2
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, -8, -8, 1, 0
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, -8, -8, 1, 0
|
||||
delay 2
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, 8, -8, 1, 0
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, 8, -8, 1, 0
|
||||
delay 2
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 130, -8, 8, 1, 0
|
||||
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 0
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
||||
@ -2924,55 +2923,54 @@ gBattleAnimMove_StoneEdge::
|
||||
loadspritegfx ANIM_TAG_STONE_EDGE
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
playsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 528, 30, 13, 50, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 32, 480, 20, 16, -46, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, 1
|
||||
delay 2
|
||||
loopsewithpan 131, SOUND_PAN_TARGET 24, 3
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 576, 20, 8, 42, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 31, 400, 25, 11, -42, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 512, 25, 16, 46, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 464, 30, 15, 49, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, 49, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 528, 30, 13, 50, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 32, 480, 20, 16, -46, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 576, 20, 8, 42, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 31, 400, 25, 11, -42, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 512, 25, 16, 46, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 464, 30, 15, 49, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, 49, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 528, 30, 13, 50, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 32, 480, 20, 16, -46, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 576, 20, 8, 42, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 31, 400, 25, 11, -42, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 28, 512, 25, 16, 46, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, 1
|
||||
delay 2
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 130, 0, 33, 464, 30, 15, 49, 1
|
||||
createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, 49, 1
|
||||
delay 2
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, -32, -16, 1, 3
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, 1, 3
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_DEF_PARTNER, 3, 0, 12, 1
|
||||
delay 4
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 3
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
delay 4
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 3
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
delay 4
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 32, 20, 1, 3
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, 1, 3
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
@ -3016,9 +3014,9 @@ gBattleAnimMove_GrassKnot::
|
||||
loadspritegfx ANIM_TAG_RAZOR_LEAF
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
|
||||
createsprite gGrassKnotSpriteTemplate, ANIM_TARGET, 130, -18, 19, 40, 8, 160, 0
|
||||
createsprite gGrassKnotSpriteTemplate, ANIM_TARGET, 2, -18, 19, 40, 8, 160, 0
|
||||
delay 4
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 130, -8, 8, 1, 2
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 2
|
||||
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2
|
||||
playsewithpan SE_M_VITAL_THROW2 SOUND_PAN_TARGET
|
||||
waitforvisualfinish
|
||||
@ -3287,6 +3285,7 @@ gBattleAnimMove_AquaJet::
|
||||
loadspritegfx ANIM_TAG_SPARKLE_6
|
||||
loadspritegfx ANIM_TAG_ROUND_SHADOW
|
||||
loadspritegfx ANIM_TAG_SPLASH
|
||||
loadspritegfx ANIM_TAG_SWEAT_BEAD
|
||||
playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER
|
||||
createsprite gDiveBallSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
|
||||
waitforvisualfinish
|
||||
@ -3302,7 +3301,7 @@ gBattleAnimMove_AquaJet::
|
||||
monbg ANIM_DEF_PARTNER
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
|
||||
createsprite gDiveWaterSplashSpriteTemplate, ANIM_TARGET, 131, 1
|
||||
createsprite gDiveWaterSplashSpriteTemplate, ANIM_TARGET, 3, 1
|
||||
call DiveAttackWaterDroplets
|
||||
call DiveAttackWaterDroplets
|
||||
call DiveAttackWaterDroplets
|
||||
@ -3323,39 +3322,39 @@ gBattleAnimMove_AttackOrder::
|
||||
monbg ANIM_DEF_PARTNER
|
||||
splitbgprio ANIM_TARGET
|
||||
playsewithpan SE_M_SWEET_SCENT, SOUND_PAN_TARGET
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 120, 70, 5, 70, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 120, 55, 6, 60, 25
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 120, 55, 6, 60, 25
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 120, 60, 7, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 120, 55, 10, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 120, 60, 7, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 120, 55, 10, 60, 30
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 100, 50, 4, 50, 26
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 100, 50, 4, 50, 26
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 105, 25, 8, 60, 20
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 105, 25, 8, 60, 20
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 120, 40, 10, 48, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 120, 40, 10, 48, 30
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 120, 30, 6, 45, 25
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 120, 35, 10, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 120, 30, 6, 45, 25
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 120, 35, 10, 60, 30
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 105, 20, 8, 40, 0
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 105, 20, 8, 40, 0
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 20, 255, 15, 32, 0
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 5, 110, 10, 8, 32, 20
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20
|
||||
waitforvisualfinish
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, -32, -16, 1, 3
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, 1, 3
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1
|
||||
delay 4
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 3
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
delay 4
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 131, 1, 3
|
||||
createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
delay 4
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 32, 20, 1, 3
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, 1, 3
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
@ -3369,30 +3368,30 @@ gBattleAnimMove_DefendOrder::
|
||||
monbg ANIM_DEF_PARTNER
|
||||
splitbgprio ANIM_TARGET
|
||||
playsewithpan SE_M_SWEET_SCENT, SOUND_PAN_TARGET
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 120, 70, 5, 70, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 55, 6, 60, 25
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 115, 55, 6, 60, 25
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 60, 7, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 55, 10, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 115, 60, 7, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 115, 55, 10, 60, 30
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 100, 50, 4, 50, 26
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 100, 50, 4, 50, 26
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 105, 25, 8, 60, 20
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 105, 25, 8, 60, 20
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 40, 10, 48, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 115, 40, 10, 48, 30
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 120, 30, 6, 45, 25
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 35, 10, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 120, 30, 6, 45, 25
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 115, 35, 10, 60, 30
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 105, 20, 8, 40, 0
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 105, 20, 8, 40, 0
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 20, 255, 15, 32, 0
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 110, 10, 8, 32, 20
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20
|
||||
waitforvisualfinish
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_ATK_PARTNER
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
blendoff
|
||||
delay 1
|
||||
call BideSetUp
|
||||
@ -3406,30 +3405,30 @@ gBattleAnimMove_HealOrder::
|
||||
monbg ANIM_DEF_PARTNER
|
||||
splitbgprio ANIM_TARGET
|
||||
playsewithpan SE_M_SWEET_SCENT, SOUND_PAN_TARGET
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 120, 70, 5, 70, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 120, 70, 5, 70, 30
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 55, 6, 60, 25
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 115, 55, 6, 60, 25
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 60, 7, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 55, 10, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 115, 60, 7, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 115, 55, 10, 60, 30
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 100, 50, 4, 50, 26
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 100, 50, 4, 50, 26
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 105, 25, 8, 60, 20
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 105, 25, 8, 60, 20
|
||||
delay 1
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 40, 10, 48, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 115, 40, 10, 48, 30
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 120, 30, 6, 45, 25
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 115, 35, 10, 60, 30
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 120, 30, 6, 45, 25
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 115, 35, 10, 60, 30
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 105, 20, 8, 40, 0
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 105, 20, 8, 40, 0
|
||||
delay 3
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 20, 255, 15, 32, 0
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 130, 110, 10, 8, 32, 20
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 20, 255, 15, 32, 0
|
||||
createsprite gAttackOrderParticleSpriteTemplate, ANIM_ATTACKER, 2, 110, 10, 8, 32, 20
|
||||
waitforvisualfinish
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_ATK_PARTNER
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
blendoff
|
||||
delay 1
|
||||
call HealingEffect
|
||||
@ -3469,6 +3468,10 @@ gBattleAnimMove_DoubleHit::
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
delay 8
|
||||
waitforvisualfinish
|
||||
@ why does the anim hit twice?
|
||||
@ that just means the anim plays 4 times
|
||||
@ which doesn't make sense
|
||||
@ I don't know, but I'm not gonna argue with it
|
||||
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
|
||||
delay 6
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2
|
||||
@ -3560,7 +3563,7 @@ gBattleAnimMove_LunarDance::
|
||||
loadspritegfx ANIM_TAG_GREEN_SPARKLE
|
||||
loadspritegfx ANIM_TAG_HOLLOW_ORB
|
||||
setalpha 0, 16
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, RGB_BLACK
|
||||
waitforvisualfinish
|
||||
createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56
|
||||
createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1
|
||||
@ -3576,8 +3579,8 @@ gBattleAnimMove_LunarDance::
|
||||
delay 30
|
||||
createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, 10, 0
|
||||
delay 20
|
||||
createvisualtask AnimTask_MoonlightEndFade, 2, 0
|
||||
createvisualtask AnimTask_DragonDanceWaver, 5, 0
|
||||
createvisualtask AnimTask_MoonlightEndFade, 2
|
||||
createvisualtask AnimTask_DragonDanceWaver, 5
|
||||
playsewithpan 203, SOUND_PAN_ATTACKER
|
||||
delay 8
|
||||
createvisualtask AnimTask_BlendPalInAndOutByTag, 5, ANIM_TAG_HOLLOW_ORB, RGB(0, 0, 19), 14, 0, 3
|
||||
@ -3592,7 +3595,6 @@ gBattleAnimMove_LunarDance::
|
||||
delay 30
|
||||
playsewithpan 203, SOUND_PAN_ATTACKER
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_ATTACKER
|
||||
delay 1
|
||||
end
|
||||
|
||||
@ -3640,7 +3642,7 @@ gBattleAnimMove_MagmaStorm::
|
||||
call FireSpinEffect
|
||||
restorebg
|
||||
waitbgfadeout
|
||||
setarg 7, 0xFFF
|
||||
setarg 7, 0xFFFF
|
||||
waitbgfadein
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
blendoff
|
||||
@ -3769,7 +3771,7 @@ gBattleAnimMove_OminousWind::
|
||||
delay 0
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 1, 0, 0, 0, 0
|
||||
delay 0
|
||||
createvisualtask AnimTask_GetAttackerSide, 2, 0
|
||||
createvisualtask AnimTask_GetAttackerSide, 2
|
||||
jumpargeq 7, 1, OminousWindFadeToBg
|
||||
fadetobg BG_GHOST
|
||||
waitbgfadeout
|
||||
@ -21118,7 +21120,7 @@ gBattleAnimMove_Rollout::
|
||||
monbg ANIM_DEF_PARTNER
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_Rollout, 2
|
||||
createvisualtask AnimTask_Rollout, 2, 0
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 30, 1, 0
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 2
|
||||
@ -28311,7 +28313,7 @@ Status_MagmaStorm:
|
||||
call FireSpinEffect
|
||||
restorebg
|
||||
waitbgfadeout
|
||||
setarg 7, 0xFFF
|
||||
setarg 7, 0xFFFF
|
||||
waitbgfadein
|
||||
stopsound
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
|
||||
@ -1278,3 +1278,26 @@ Gen 4-style shadows are defined by the `SHADOW` macro which takes the following
|
||||
- `SHADOW_SIZE_XL_BATTLE_ONLY`
|
||||
|
||||
To make the Pokémon have no shadow, use the `NO_SHADOW` macro instead of `SHADOW`.
|
||||
|
||||
## 6. Limiting species allowed as followers
|
||||
You may use the following configs in `include/config/overworld.h`
|
||||
```c
|
||||
#define OW_FOLLOWERS_ALLOWED_SPECIES (0)
|
||||
#define OW_FOLLOWERS_ALLOWED_MET_LVL (0)
|
||||
#define OW_FOLLOWERS_ALLOWED_MET_LOC (0)
|
||||
```
|
||||
Examples:
|
||||
```c
|
||||
// Yellow Pikachu:
|
||||
#define OW_FOLLOWERS_ALLOWED_SPECIES (SPECIES_PIKACHU)
|
||||
#define OW_FOLLOWERS_ALLOWED_MET_LVL (0)
|
||||
#define OW_FOLLOWERS_ALLOWED_MET_LOC (MAPSEC_PALLET_TOWN)
|
||||
// Hoenn Starter:
|
||||
#define OW_FOLLOWERS_ALLOWED_SPECIES (0)
|
||||
#define OW_FOLLOWERS_ALLOWED_MET_LVL (5)
|
||||
#define OW_FOLLOWERS_ALLOWED_MET_LOC (MAPSEC_ROUTE_101)
|
||||
// Species set in VAR_XXXX:
|
||||
#define OW_FOLLOWERS_ALLOWED_SPECIES (VAR_XXXX)
|
||||
#define OW_FOLLOWERS_ALLOWED_MET_LVL (0)
|
||||
#define OW_FOLLOWERS_ALLOWED_MET_LOC (0)
|
||||
```
|
||||
|
||||
@ -17,8 +17,8 @@ struct GimmickInfo
|
||||
const struct SpritePalette *triggerPal; // trigger gfx data
|
||||
const struct SpriteSheet *triggerSheet;
|
||||
const struct SpriteTemplate *triggerTemplate;
|
||||
const struct SpritePalette *indicatorPal; // indicator gfx data
|
||||
const struct SpriteSheet *indicatorSheet;
|
||||
const u32 indicatorPalTag;
|
||||
const u8 *indicatorData;
|
||||
bool32 (*CanActivate)(u32 battler);
|
||||
void (*ActivateGimmick)(u32 battler);
|
||||
};
|
||||
|
||||
@ -209,8 +209,11 @@ struct ObjectEvent
|
||||
/*0x14*/ struct Coords16 previousCoords;
|
||||
/*0x18*/ u16 facingDirection:4; // current direction?
|
||||
u16 movementDirection:4;
|
||||
u16 rangeX:4;
|
||||
u16 rangeY:4;
|
||||
struct __attribute__((packed))
|
||||
{
|
||||
u16 rangeX:4;
|
||||
u16 rangeY:4;
|
||||
} range;
|
||||
/*0x1A*/ u8 fieldEffectSpriteId;
|
||||
/*0x1B*/ u8 warpArrowSpriteId;
|
||||
/*0x1C*/ u8 movementActionId;
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
.equiv NUM_TRACKS_SE3, 1
|
||||
|
||||
.bss
|
||||
.align 2
|
||||
|
||||
gMPlayTrack_BGM::
|
||||
.space TRACK_SIZE * NUM_TRACKS_BGM
|
||||
|
||||
@ -9,6 +9,7 @@ static void AnimDragonDanceOrb_Step(struct Sprite *);
|
||||
static void AnimOverheatFlame_Step(struct Sprite *);
|
||||
static void AnimTask_DragonDanceWaver_Step(u8);
|
||||
static void UpdateDragonDanceScanlineEffect(struct Task *);
|
||||
static void AnimDragonRush(struct Sprite *sprite);
|
||||
static void AnimDragonRushStep(struct Sprite *sprite);
|
||||
static void AnimSpinningDracoMeteor(struct Sprite *sprite);
|
||||
static void AnimSpinningDracoMeteorFinish(struct Sprite *sprite);
|
||||
@ -304,7 +305,7 @@ const struct SpriteTemplate gDragonRushSpriteTemplate =
|
||||
.anims = gDragonRushAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDragonRushAffineAnimTable,
|
||||
.callback = AnimDragonRushStep,
|
||||
.callback = AnimDragonRush,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gDracoMetorSpriteTemplate =
|
||||
@ -329,6 +330,36 @@ const struct SpriteTemplate gDragonPulseSpriteTemplate =
|
||||
.callback = TranslateAnimSpriteToTargetMonLocation,
|
||||
};
|
||||
|
||||
// Animates a strike that swipes downard at the target mon.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
static void AnimDragonRush(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = -11;
|
||||
sprite->data[1] = 192;
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[0] = 11;
|
||||
sprite->data[1] = 192;
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
sprite->callback = AnimDragonRushStep;
|
||||
}
|
||||
|
||||
// args[0] - initial x delta
|
||||
// args[1] - initial y delta
|
||||
// args[2] - x delta to end x
|
||||
// args[3] - y delta to end y
|
||||
// args[4] - num frames
|
||||
// args[5] - sprite anim number
|
||||
static void AnimDragonRushStep(struct Sprite *sprite)
|
||||
{
|
||||
// These two cases are identical.
|
||||
@ -422,6 +453,9 @@ static void StartDragonFireTranslation(struct Sprite *sprite)
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
}
|
||||
|
||||
// args[0] - attacker or target
|
||||
// args[1] - initial x offset
|
||||
// args[2] - initial y offset
|
||||
void AnimDragonRageFirePlume(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
|
||||
@ -3116,6 +3116,12 @@ const struct SpriteTemplate gChainBindingSpriteTemplate =
|
||||
};
|
||||
|
||||
// functions
|
||||
// args[0] - initial x offset
|
||||
// args[1] - initial y offset
|
||||
// args[2] - some param to linear translation
|
||||
// args[3] - some param to linear translation
|
||||
// args[4] - offset that gets added to param for Sin
|
||||
// args[5] - another param for Sin
|
||||
static void AnimGrassKnot(struct Sprite *sprite)
|
||||
{
|
||||
if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget && GetBattlerPosition(gBattleAnimTarget) < B_POSITION_PLAYER_RIGHT)
|
||||
@ -5972,12 +5978,12 @@ static void AnimBowMon_Step1_Callback(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
PrepareBattlerSpriteForRotScale(sprite->data[3], ST_OAM_OBJ_NORMAL);
|
||||
sprite->data[4] = (sprite->data[6] = GetBattlerSide(gBattleAnimAttacker)) ? 0x300 : 0xFFFFFD00;
|
||||
sprite->data[4] = (sprite->data[6] = GetBattlerSide(gBattleAnimAttacker)) ? 768 : -768;
|
||||
sprite->data[5] = 0;
|
||||
}
|
||||
|
||||
sprite->data[5] += sprite->data[4];
|
||||
SetSpriteRotScale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
|
||||
SetSpriteRotScale(sprite->data[3], 256, 256, sprite->data[5]);
|
||||
SetBattlerSpriteYOffsetFromRotation(sprite->data[3]);
|
||||
if (++sprite->data[0] > 3)
|
||||
{
|
||||
@ -6463,6 +6469,8 @@ static void UNUSED AnimTask_ShowBattlersHealthbox(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
// args[0] - sprite x
|
||||
// args[1] - sprite y
|
||||
static void AnimMoon(struct Sprite *sprite)
|
||||
{
|
||||
if (IsContest())
|
||||
|
||||
@ -3133,6 +3133,8 @@ static void AnimHealBellMusicNote(struct Sprite *sprite)
|
||||
SetMusicNotePalette(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]);
|
||||
}
|
||||
|
||||
// args[0] - initial x offset
|
||||
// args[1] - initial y offset
|
||||
void AnimMagentaHeart(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] == 1)
|
||||
|
||||
@ -657,13 +657,13 @@ static void AnimUnusedCirclingShock(struct Sprite *sprite)
|
||||
sprite->callback = TranslateSpriteInCircle;
|
||||
}
|
||||
|
||||
// arg 0:
|
||||
// arg 1:
|
||||
// arg 2:
|
||||
// arg 0: index to sine table
|
||||
// arg 1: something multiplied with
|
||||
// arg 2: index to sine table
|
||||
// arg 3: duration
|
||||
// arg 4: target
|
||||
// arg 5:
|
||||
// arg 6:
|
||||
// arg 5: 0 or non-0 determines which set of battler sprite coords to use
|
||||
// arg 6: increase battler sprite priority by 1
|
||||
void AnimSparkElectricity(struct Sprite *sprite)
|
||||
{
|
||||
u8 battler;
|
||||
|
||||
@ -572,6 +572,11 @@ static void AnimFireSpiralInward(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
// For the impact spread of fire sprites for moves like Blaze Kick or Fire Punch
|
||||
// args[0] - delta to mon x offset
|
||||
// args[1] - delta to mon y offset
|
||||
// args[2] - x increment
|
||||
// args[3] - y increment
|
||||
// args[4] - duration
|
||||
void AnimFireSpread(struct Sprite *sprite)
|
||||
{
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
|
||||
|
||||
@ -1027,6 +1027,10 @@ void AnimBounceBallLand(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// args[0] - initial x offset
|
||||
// args[1] - initial y offset
|
||||
// args[2] - initial delay before anim
|
||||
// args[3] - quadratic delta to sprite y
|
||||
static void AnimDiveBall(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
@ -1066,6 +1070,7 @@ static void AnimDiveBall_Step2(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// args[0] - attacker or target
|
||||
static void AnimDiveWaterSplash(struct Sprite *sprite)
|
||||
{
|
||||
u32 matrixNum;
|
||||
|
||||
@ -1173,6 +1173,11 @@ void SetupShakeBattlerBasedOnMovePowerOrDmg(u8 taskId, u8 animBattlerId)
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
}
|
||||
|
||||
// args[0] - 0 if scale on move power, 1 if scale on move damage
|
||||
// args[1] - delay before starting anim
|
||||
// args[2] - duration of anim (after anim starts from above counter)
|
||||
// args[3] - 1 if do horizontal shake
|
||||
// args[4] - 1 if do vertical shake
|
||||
void AnimTask_ShakeTargetPartnerBasedOnMovePowerOrDmg(u8 taskId)
|
||||
{
|
||||
SetupShakeBattlerBasedOnMovePowerOrDmg(taskId, ANIM_DEF_PARTNER);
|
||||
|
||||
@ -1429,6 +1429,9 @@ static u8 UNUSED GetSpritePalIdxByPosition(u8 position)
|
||||
return GetBattlerAtPosition(position);
|
||||
}
|
||||
|
||||
// gBattleAnimArgs 0-3 used
|
||||
// 0, 1 used for position
|
||||
// 2, 3 as some control variables
|
||||
void AnimSpriteOnMonPos(struct Sprite *sprite)
|
||||
{
|
||||
bool8 var;
|
||||
@ -1698,6 +1701,11 @@ static void AnimTask_BlendMonInAndOut_Step(u8 taskId)
|
||||
}
|
||||
|
||||
// See AnimTask_BlendMonInAndOut. Same, but ANIM_TAG_* instead of mon
|
||||
// args[0] - tag
|
||||
// arg 1: blend color
|
||||
// arg 2: target blend coefficient
|
||||
// arg 3: initial delay
|
||||
// arg 4: number of times to blend in and out
|
||||
void AnimTask_BlendPalInAndOutByTag(u8 task)
|
||||
{
|
||||
u8 palette = IndexOfSpritePaletteTag(gBattleAnimArgs[0]);
|
||||
|
||||
@ -1045,6 +1045,10 @@ static void AnimTask_ShakeBattleTerrain_Step(u8 taskId)
|
||||
#undef tTimer
|
||||
#undef tShakeDelay
|
||||
|
||||
// args[0] - initial pos x
|
||||
// args[1] - initial pos y
|
||||
// args[2] - which battler
|
||||
// args[3] - affine anim number
|
||||
void AnimHitSplatBasic(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
|
||||
|
||||
@ -415,11 +415,15 @@ const struct SpriteTemplate gSyrupBombYellowShellBSpriteTemplate =
|
||||
.callback = AnimAnimSyrupBomb,
|
||||
};
|
||||
|
||||
// args[0] - initial x
|
||||
// args[1] - initial y
|
||||
// args[2] - attacker or target
|
||||
// args[3] - affine anim number
|
||||
static void AnimGunkShotImpact(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
|
||||
@ -427,6 +431,10 @@ static void AnimGunkShotImpact(struct Sprite *sprite)
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// args[0] - initial attacker x
|
||||
// args[1] - initial attacker y
|
||||
// args[2] - ???
|
||||
// args[3] - some param
|
||||
static void AnimGunkShotParticles(struct Sprite *sprite)
|
||||
{
|
||||
u16 retArg;
|
||||
|
||||
@ -476,6 +476,13 @@ void AnimRockFragment(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
// Swirls particle in vortex. Used for moves like Fire Spin or Sand Tomb
|
||||
// args[0] - initial x offset
|
||||
// args[1] - initial y offset
|
||||
// args[2] - y increment
|
||||
// args[3] - duration
|
||||
// args[4] - increments some sin parameter
|
||||
// args[5] - fixed sin parameter
|
||||
// args[6] - attacker or target
|
||||
void AnimParticleInVortex(struct Sprite *sprite)
|
||||
{
|
||||
if (IsDoubleBattle()
|
||||
|
||||
@ -722,6 +722,10 @@ void AnimTask_BlendNonAttackerPalettes(u8 taskId)
|
||||
StartBlendAnimSpriteColor(taskId, selectedPalettes);
|
||||
}
|
||||
|
||||
// gBattleAnimArgs[0] - initial x
|
||||
// gBattleAnimArgs[1] - initial y
|
||||
// gBattleAnimArgs[2] - negative?
|
||||
// gBattleAnimArgs[3] - sentinel value to compare to
|
||||
void AnimTask_StartSlidingBg(u8 taskId)
|
||||
{
|
||||
u8 newTaskId;
|
||||
|
||||
@ -606,6 +606,10 @@ const struct SpriteTemplate gSparkBeamSpriteTemplate =
|
||||
.callback = AnimToTargetInSinWave,
|
||||
};
|
||||
|
||||
// args[0] - initial sprite x
|
||||
// args[1] - initial sprite y
|
||||
// args[2] - attacker or target
|
||||
// args[3] - affine anim number
|
||||
static void AnimAquaTail(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
|
||||
@ -618,6 +622,8 @@ static void AnimAquaTail(struct Sprite *sprite)
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// args[0] - initial x delta
|
||||
// args[1] - initial y delta
|
||||
static void AnimKnockOffAquaTail(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
@ -885,6 +891,7 @@ static void AnimToTargetInSinWave_Step(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// args[0] - duration
|
||||
void AnimTask_StartSinAnimTimer(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
||||
@ -975,6 +982,10 @@ static void AnimWaterGunDroplet(struct Sprite *sprite)
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// args[0] - initial sprite x
|
||||
// args[1] - initial sprite y
|
||||
// args[2] - counter
|
||||
// args[3] - attacker or target
|
||||
void AnimSmallBubblePair(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[3] != ANIM_ATTACKER)
|
||||
|
||||
@ -265,20 +265,9 @@ static void SpriteCb_GimmickTrigger(struct Sprite *sprite)
|
||||
|
||||
void LoadIndicatorSpritesGfx(void)
|
||||
{
|
||||
u32 gimmick;
|
||||
for (gimmick = 0; gimmick < GIMMICKS_COUNT; ++gimmick)
|
||||
{
|
||||
if (gimmick == GIMMICK_TERA) // special case
|
||||
LoadSpriteSheets(sTeraIndicatorSpriteSheets);
|
||||
else if (gGimmicksInfo[gimmick].indicatorSheet != NULL)
|
||||
LoadSpriteSheet(gGimmicksInfo[gimmick].indicatorSheet);
|
||||
|
||||
if (gGimmicksInfo[gimmick].indicatorPal != NULL)
|
||||
LoadSpritePalette(gGimmicksInfo[gimmick].indicatorPal);
|
||||
}
|
||||
// Primal reversion graphics aren't loaded as part of gimmick data
|
||||
LoadSpriteSheet(&sSpriteSheet_AlphaIndicator);
|
||||
LoadSpriteSheet(&sSpriteSheet_OmegaIndicator);
|
||||
LoadSpritePalette(&sSpritePalette_MiscIndicator);
|
||||
LoadSpritePalette(&sSpritePalette_MegaIndicator);
|
||||
LoadSpritePalette(&sSpritePalette_TeraIndicator);
|
||||
}
|
||||
|
||||
static void SpriteCb_GimmickIndicator(struct Sprite *sprite)
|
||||
@ -295,28 +284,28 @@ static inline u32 GetIndicatorSpriteId(u32 healthboxId)
|
||||
return gBattleStruct->gimmick.indicatorSpriteId[gSprites[healthboxId].hMain_Battler];
|
||||
}
|
||||
|
||||
u32 GetIndicatorTileTag(u32 battler)
|
||||
const u32 *GetIndicatorSpriteSrc(u32 battler)
|
||||
{
|
||||
u32 gimmick = GetActiveGimmick(battler);
|
||||
|
||||
if (IsBattlerPrimalReverted(battler))
|
||||
{
|
||||
if (gBattleMons[battler].species == SPECIES_GROUDON_PRIMAL)
|
||||
return TAG_OMEGA_INDICATOR_TILE;
|
||||
return (u32 *)&sOmegaIndicatorGfx;
|
||||
else
|
||||
return TAG_ALPHA_INDICATOR_TILE;
|
||||
return (u32 *)&sAlphaIndicatorGfx;
|
||||
}
|
||||
else if (gimmick == GIMMICK_TERA) // special case
|
||||
{
|
||||
return sTeraIndicatorSpriteSheets[GetBattlerTeraType(battler)].tag;
|
||||
return (u32 *)sTeraIndicatorDataPtrs[GetBattlerTeraType(battler)];
|
||||
}
|
||||
else if (gGimmicksInfo[gimmick].indicatorSheet != NULL)
|
||||
else if (gGimmicksInfo[gimmick].indicatorData != NULL)
|
||||
{
|
||||
return gGimmicksInfo[gimmick].indicatorSheet->tag;
|
||||
return (u32 *)gGimmicksInfo[gimmick].indicatorData;
|
||||
}
|
||||
else
|
||||
{
|
||||
return TAG_NONE;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -325,27 +314,34 @@ u32 GetIndicatorPalTag(u32 battler)
|
||||
u32 gimmick = GetActiveGimmick(battler);
|
||||
if (IsBattlerPrimalReverted(battler))
|
||||
return TAG_MISC_INDICATOR_PAL;
|
||||
else if (gGimmicksInfo[gimmick].indicatorPal != NULL)
|
||||
return gGimmicksInfo[gimmick].indicatorPal->tag;
|
||||
else if (gGimmicksInfo[gimmick].indicatorPalTag != 0)
|
||||
return gGimmicksInfo[gimmick].indicatorPalTag;
|
||||
else
|
||||
return TAG_NONE;
|
||||
}
|
||||
|
||||
#define INDICATOR_SIZE (8 * 16 / 2)
|
||||
|
||||
void UpdateIndicatorVisibilityAndType(u32 healthboxId, bool32 invisible)
|
||||
{
|
||||
u32 battler = gSprites[healthboxId].hMain_Battler;
|
||||
u32 tileTag = GetIndicatorTileTag(battler);
|
||||
u32 palTag = GetIndicatorPalTag(battler);
|
||||
struct Sprite *sprite = &gSprites[GetIndicatorSpriteId(healthboxId)];
|
||||
|
||||
if (GetIndicatorSpriteId(healthboxId) == 0) // safari zone means the player doesn't have an indicator sprite id
|
||||
return;
|
||||
|
||||
if (tileTag != TAG_NONE && palTag != TAG_NONE)
|
||||
if (palTag != TAG_NONE)
|
||||
{
|
||||
sprite->oam.tileNum = GetSpriteTileStartByTag(tileTag);
|
||||
sprite->oam.paletteNum = IndexOfSpritePaletteTag(palTag);
|
||||
sprite->invisible = invisible;
|
||||
|
||||
u32 *dst = (u32 *)(OBJ_VRAM0 + TILE_SIZE_4BPP * GetSpriteTileStartByTag(BATTLER_INDICATOR_TAG + battler));
|
||||
|
||||
const u32 *src = GetIndicatorSpriteSrc(battler);
|
||||
|
||||
for (u32 i = 0; i < INDICATOR_SIZE / 4; i++)
|
||||
dst[i] = src[i];
|
||||
}
|
||||
else // in case of error
|
||||
{
|
||||
@ -353,6 +349,8 @@ void UpdateIndicatorVisibilityAndType(u32 healthboxId, bool32 invisible)
|
||||
}
|
||||
}
|
||||
|
||||
#undef INDICATOR_SIZE
|
||||
|
||||
void UpdateIndicatorOamPriority(u32 healthboxId, u32 oamPriority)
|
||||
{
|
||||
gSprites[GetIndicatorSpriteId(healthboxId)].oam.priority = oamPriority;
|
||||
@ -389,7 +387,8 @@ void CreateIndicatorSprite(u32 battler)
|
||||
x = sIndicatorPositions[position][0];
|
||||
y += sIndicatorPositions[position][1];
|
||||
|
||||
spriteId = CreateSpriteAtEnd(&sSpriteTemplate_GimmickIndicator, 0, y, 0);
|
||||
LoadSpriteSheet(&sBattler_GimmickSpritesheets[battler]);
|
||||
spriteId = CreateSprite(&(sSpriteTemplate_BattlerIndicators[battler]), 0, y, 0);
|
||||
gBattleStruct->gimmick.indicatorSpriteId[battler] = spriteId;
|
||||
gSprites[spriteId].tBattler = battler;
|
||||
gSprites[spriteId].tPosX = x;
|
||||
|
||||
@ -922,7 +922,7 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
|
||||
u8 battler = gSprites[healthboxSpriteId].hMain_Battler;
|
||||
|
||||
// Don't print Lv char if mon has a gimmick with an indicator active.
|
||||
if (GetIndicatorTileTag(battler) != TAG_NONE)
|
||||
if (GetIndicatorPalTag(battler) != TAG_NONE)
|
||||
{
|
||||
objVram = ConvertIntToDecimalStringN(text, lvl, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||
xPos = 5 * (3 - (objVram - (text + 2))) - 1;
|
||||
|
||||
@ -4800,16 +4800,21 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
}
|
||||
break;
|
||||
case ABILITY_IMPOSTER:
|
||||
if (IsBattlerAlive(BATTLE_OPPOSITE(battler))
|
||||
&& !(gBattleMons[BATTLE_OPPOSITE(battler)].status2 & (STATUS2_TRANSFORMED | STATUS2_SUBSTITUTE))
|
||||
&& !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)
|
||||
&& !(gBattleStruct->illusion[BATTLE_OPPOSITE(battler)].on)
|
||||
&& !(gStatuses3[BATTLE_OPPOSITE(battler)] & STATUS3_SEMI_INVULNERABLE_NO_COMMANDER))
|
||||
{
|
||||
gBattlerAttacker = battler;
|
||||
gBattlerTarget = BATTLE_OPPOSITE(battler);
|
||||
BattleScriptPushCursorAndCallback(BattleScript_ImposterActivates);
|
||||
effect++;
|
||||
u32 diagonalBattler = BATTLE_OPPOSITE(battler);
|
||||
if (IsDoubleBattle())
|
||||
diagonalBattler = BATTLE_PARTNER(diagonalBattler);
|
||||
if (IsBattlerAlive(diagonalBattler)
|
||||
&& !(gBattleMons[diagonalBattler].status2 & (STATUS2_TRANSFORMED | STATUS2_SUBSTITUTE))
|
||||
&& !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)
|
||||
&& !(gBattleStruct->illusion[diagonalBattler].on)
|
||||
&& !(gStatuses3[diagonalBattler] & STATUS3_SEMI_INVULNERABLE_NO_COMMANDER))
|
||||
{
|
||||
gBattlerAttacker = battler;
|
||||
gBattlerTarget = diagonalBattler;
|
||||
BattleScriptPushCursorAndCallback(BattleScript_ImposterActivates);
|
||||
effect++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ABILITY_MOLD_BREAKER:
|
||||
|
||||
@ -10,8 +10,8 @@ const struct GimmickInfo gGimmicksInfo[GIMMICKS_COUNT] =
|
||||
.triggerSheet = &sSpriteSheet_MegaTrigger,
|
||||
.triggerPal = &sSpritePalette_MegaTrigger,
|
||||
.triggerTemplate = &sSpriteTemplate_GimmickTrigger,
|
||||
.indicatorSheet = &sSpriteSheet_MegaIndicator,
|
||||
.indicatorPal = &sSpritePalette_MegaIndicator,
|
||||
.indicatorData = sMegaIndicatorGfx,
|
||||
.indicatorPalTag = TAG_MEGA_INDICATOR_PAL,
|
||||
.CanActivate = CanMegaEvolve,
|
||||
.ActivateGimmick = ActivateMegaEvolution,
|
||||
},
|
||||
@ -36,8 +36,8 @@ const struct GimmickInfo gGimmicksInfo[GIMMICKS_COUNT] =
|
||||
.triggerSheet = &sSpriteSheet_DynamaxTrigger,
|
||||
.triggerPal = &sSpritePalette_DynamaxTrigger,
|
||||
.triggerTemplate = &sSpriteTemplate_GimmickTrigger,
|
||||
.indicatorSheet = &sSpriteSheet_DynamaxIndicator,
|
||||
.indicatorPal = &sSpritePalette_MiscIndicator,
|
||||
.indicatorData = sDynamaxIndicatorGfx,
|
||||
.indicatorPalTag = TAG_MISC_INDICATOR_PAL,
|
||||
.CanActivate = CanDynamax,
|
||||
.ActivateGimmick = ActivateDynamax,
|
||||
},
|
||||
@ -46,8 +46,8 @@ const struct GimmickInfo gGimmicksInfo[GIMMICKS_COUNT] =
|
||||
.triggerSheet = &sSpriteSheet_TeraTrigger,
|
||||
.triggerPal = &sSpritePalette_TeraTrigger,
|
||||
.triggerTemplate = &sSpriteTemplate_GimmickTrigger,
|
||||
.indicatorSheet = NULL, // handled separately
|
||||
.indicatorPal = &sSpritePalette_TeraIndicator,
|
||||
.indicatorData = NULL, // handled separately
|
||||
.indicatorPalTag = TAG_TERA_INDICATOR_PAL,
|
||||
.CanActivate = CanTerastallize,
|
||||
.ActivateGimmick = ActivateTera,
|
||||
}
|
||||
|
||||
@ -99,34 +99,29 @@ static const u16 sMiscIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mis
|
||||
static const u16 sMegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mega_indicator.gbapal");
|
||||
static const u16 sTeraIndicatorPal[] = INCBIN_U16("graphics/battle_interface/tera_indicator.gbapal");
|
||||
|
||||
static const struct SpriteSheet sSpriteSheet_MegaIndicator = {sMegaIndicatorGfx, sizeof(sMegaIndicatorGfx), TAG_MEGA_INDICATOR_TILE};
|
||||
static const struct SpriteSheet sSpriteSheet_AlphaIndicator = {sAlphaIndicatorGfx, sizeof(sAlphaIndicatorGfx), TAG_ALPHA_INDICATOR_TILE};
|
||||
static const struct SpriteSheet sSpriteSheet_OmegaIndicator = {sOmegaIndicatorGfx, sizeof(sOmegaIndicatorGfx), TAG_OMEGA_INDICATOR_TILE};
|
||||
static const struct SpriteSheet sSpriteSheet_DynamaxIndicator = {sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE};
|
||||
static const struct SpriteSheet sTeraIndicatorSpriteSheets[NUMBER_OF_MON_TYPES + 1] =
|
||||
static const u8 *sTeraIndicatorDataPtrs[] =
|
||||
{
|
||||
{sNormalIndicatorGfx, sizeof(sNormalIndicatorGfx), TAG_NORMAL_INDICATOR_TILE}, // TYPE_NONE
|
||||
{sNormalIndicatorGfx, sizeof(sNormalIndicatorGfx), TAG_NORMAL_INDICATOR_TILE},
|
||||
{sFightingIndicatorGfx, sizeof(sFightingIndicatorGfx), TAG_FIGHTING_INDICATOR_TILE},
|
||||
{sFlyingIndicatorGfx, sizeof(sFlyingIndicatorGfx), TAG_FLYING_INDICATOR_TILE},
|
||||
{sPoisonIndicatorGfx, sizeof(sPoisonIndicatorGfx), TAG_POISON_INDICATOR_TILE},
|
||||
{sGroundIndicatorGfx, sizeof(sGroundIndicatorGfx), TAG_GROUND_INDICATOR_TILE},
|
||||
{sRockIndicatorGfx, sizeof(sRockIndicatorGfx), TAG_ROCK_INDICATOR_TILE},
|
||||
{sBugIndicatorGfx, sizeof(sBugIndicatorGfx), TAG_BUG_INDICATOR_TILE},
|
||||
{sGhostIndicatorGfx, sizeof(sGhostIndicatorGfx), TAG_GHOST_INDICATOR_TILE},
|
||||
{sSteelIndicatorGfx, sizeof(sSteelIndicatorGfx), TAG_STEEL_INDICATOR_TILE},
|
||||
{sNormalIndicatorGfx, sizeof(sNormalIndicatorGfx), TAG_NORMAL_INDICATOR_TILE}, // TYPE_MYSTERY
|
||||
{sFireIndicatorGfx, sizeof(sFireIndicatorGfx), TAG_FIRE_INDICATOR_TILE},
|
||||
{sWaterIndicatorGfx, sizeof(sWaterIndicatorGfx), TAG_WATER_INDICATOR_TILE},
|
||||
{sGrassIndicatorGfx, sizeof(sGrassIndicatorGfx), TAG_GRASS_INDICATOR_TILE},
|
||||
{sElectricIndicatorGfx, sizeof(sElectricIndicatorGfx), TAG_ELECTRIC_INDICATOR_TILE},
|
||||
{sPsychicIndicatorGfx, sizeof(sPsychicIndicatorGfx), TAG_PSYCHIC_INDICATOR_TILE},
|
||||
{sIceIndicatorGfx, sizeof(sIceIndicatorGfx), TAG_ICE_INDICATOR_TILE},
|
||||
{sDragonIndicatorGfx, sizeof(sDragonIndicatorGfx), TAG_DRAGON_INDICATOR_TILE},
|
||||
{sDarkIndicatorGfx, sizeof(sDarkIndicatorGfx), TAG_DARK_INDICATOR_TILE},
|
||||
{sFairyIndicatorGfx, sizeof(sFairyIndicatorGfx), TAG_FAIRY_INDICATOR_TILE},
|
||||
{sStellarIndicatorGfx, sizeof(sStellarIndicatorGfx), TAG_STELLAR_INDICATOR_TILE},
|
||||
{0}
|
||||
sNormalIndicatorGfx,
|
||||
sNormalIndicatorGfx,
|
||||
sFightingIndicatorGfx,
|
||||
sFlyingIndicatorGfx,
|
||||
sPoisonIndicatorGfx,
|
||||
sGroundIndicatorGfx,
|
||||
sRockIndicatorGfx,
|
||||
sBugIndicatorGfx,
|
||||
sGhostIndicatorGfx,
|
||||
sSteelIndicatorGfx,
|
||||
sNormalIndicatorGfx,
|
||||
sFireIndicatorGfx,
|
||||
sWaterIndicatorGfx,
|
||||
sGrassIndicatorGfx,
|
||||
sElectricIndicatorGfx,
|
||||
sPsychicIndicatorGfx,
|
||||
sIceIndicatorGfx,
|
||||
sDragonIndicatorGfx,
|
||||
sDarkIndicatorGfx,
|
||||
sFairyIndicatorGfx,
|
||||
sStellarIndicatorGfx,
|
||||
};
|
||||
|
||||
static const struct SpritePalette sSpritePalette_MiscIndicator = {sMiscIndicatorPal, TAG_MISC_INDICATOR_PAL};
|
||||
@ -141,13 +136,56 @@ static const struct OamData sOamData_GimmickIndicator =
|
||||
};
|
||||
|
||||
static void SpriteCb_GimmickIndicator(struct Sprite *sprite);
|
||||
static const struct SpriteTemplate sSpriteTemplate_GimmickIndicator =
|
||||
|
||||
#define BATTLER_INDICATOR_TAG 0xDEDE
|
||||
static const struct SpriteSheet sBattler_GimmickSpritesheets[] =
|
||||
{
|
||||
.tileTag = TAG_NORMAL_INDICATOR_TILE, // updated dynamically
|
||||
.paletteTag = TAG_TERA_INDICATOR_PAL, // updated dynamically
|
||||
.oam = &sOamData_GimmickIndicator,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCb_GimmickIndicator,
|
||||
{sNormalIndicatorGfx, sizeof(sNormalIndicatorGfx), BATTLER_INDICATOR_TAG},
|
||||
{sNormalIndicatorGfx, sizeof(sNormalIndicatorGfx), BATTLER_INDICATOR_TAG+1},
|
||||
{sNormalIndicatorGfx, sizeof(sNormalIndicatorGfx), BATTLER_INDICATOR_TAG+2},
|
||||
{sNormalIndicatorGfx, sizeof(sNormalIndicatorGfx), BATTLER_INDICATOR_TAG+3},
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sSpriteTemplate_BattlerIndicators[] =
|
||||
{
|
||||
[0] =
|
||||
{
|
||||
.tileTag = BATTLER_INDICATOR_TAG, // updated dynamically
|
||||
.paletteTag = TAG_TERA_INDICATOR_PAL, // updated dynamically
|
||||
.oam = &sOamData_GimmickIndicator,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCb_GimmickIndicator,
|
||||
},
|
||||
[1] =
|
||||
{
|
||||
.tileTag = BATTLER_INDICATOR_TAG + 1, // updated dynamically
|
||||
.paletteTag = TAG_TERA_INDICATOR_PAL, // updated dynamically
|
||||
.oam = &sOamData_GimmickIndicator,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCb_GimmickIndicator,
|
||||
},
|
||||
[2] =
|
||||
{
|
||||
.tileTag = BATTLER_INDICATOR_TAG + 2, // updated dynamically
|
||||
.paletteTag = TAG_TERA_INDICATOR_PAL, // updated dynamically
|
||||
.oam = &sOamData_GimmickIndicator,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCb_GimmickIndicator,
|
||||
},
|
||||
[3] =
|
||||
{
|
||||
.tileTag = BATTLER_INDICATOR_TAG + 3, // updated dynamically
|
||||
.paletteTag = TAG_TERA_INDICATOR_PAL, // updated dynamically
|
||||
.oam = &sOamData_GimmickIndicator,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCb_GimmickIndicator,
|
||||
},
|
||||
};
|
||||
|
||||
@ -13509,6 +13509,8 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Adamant Crystal"),
|
||||
.price = 0,
|
||||
.holdEffect = HOLD_EFFECT_ADAMANT_ORB,
|
||||
.holdEffectParam = 20,
|
||||
.description = COMPOUND_STRING(
|
||||
"A large, glowing gem\n"
|
||||
"that lets Dialga\n"
|
||||
@ -13525,6 +13527,8 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Griseous Core"),
|
||||
.price = 0,
|
||||
.holdEffect = HOLD_EFFECT_GRISEOUS_ORB,
|
||||
.holdEffectParam = 20,
|
||||
.description = COMPOUND_STRING(
|
||||
"A large, glowing gem\n"
|
||||
"that lets Giratina\n"
|
||||
@ -13541,6 +13545,8 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Lustrous Globe"),
|
||||
.price = 0,
|
||||
.holdEffect = HOLD_EFFECT_LUSTROUS_ORB,
|
||||
.holdEffectParam = 20,
|
||||
.description = COMPOUND_STRING(
|
||||
"A large, glowing gem\n"
|
||||
"that lets Palkia\n"
|
||||
|
||||
@ -1435,8 +1435,8 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem
|
||||
objectEvent->previousCoords.y = y;
|
||||
objectEvent->currentElevation = template->elevation;
|
||||
objectEvent->previousElevation = template->elevation;
|
||||
objectEvent->rangeX = template->movementRangeX;
|
||||
objectEvent->rangeY = template->movementRangeY;
|
||||
objectEvent->range.rangeX = template->movementRangeX;
|
||||
objectEvent->range.rangeY = template->movementRangeY;
|
||||
objectEvent->trainerType = template->trainerType;
|
||||
objectEvent->mapNum = mapNum;
|
||||
objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId;
|
||||
@ -1444,10 +1444,10 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem
|
||||
SetObjectEventDirection(objectEvent, objectEvent->previousMovementDirection);
|
||||
if (sMovementTypeHasRange[objectEvent->movementType])
|
||||
{
|
||||
if (objectEvent->rangeX == 0)
|
||||
objectEvent->rangeX++;
|
||||
if (objectEvent->rangeY == 0)
|
||||
objectEvent->rangeY++;
|
||||
if (objectEvent->range.rangeX == 0)
|
||||
objectEvent->range.rangeX++;
|
||||
if (objectEvent->range.rangeY == 0)
|
||||
objectEvent->range.rangeY++;
|
||||
}
|
||||
return objectEventId;
|
||||
}
|
||||
@ -6207,18 +6207,18 @@ static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *objectEv
|
||||
s16 top;
|
||||
s16 bottom;
|
||||
|
||||
if (objectEvent->rangeX != 0)
|
||||
if (objectEvent->range.rangeX != 0)
|
||||
{
|
||||
left = objectEvent->initialCoords.x - objectEvent->rangeX;
|
||||
right = objectEvent->initialCoords.x + objectEvent->rangeX;
|
||||
left = objectEvent->initialCoords.x - objectEvent->range.rangeX;
|
||||
right = objectEvent->initialCoords.x + objectEvent->range.rangeX;
|
||||
|
||||
if (left > x || right < x)
|
||||
return TRUE;
|
||||
}
|
||||
if (objectEvent->rangeY != 0)
|
||||
if (objectEvent->range.rangeY != 0)
|
||||
{
|
||||
top = objectEvent->initialCoords.y - objectEvent->rangeY;
|
||||
bottom = objectEvent->initialCoords.y + objectEvent->rangeY;
|
||||
top = objectEvent->initialCoords.y - objectEvent->range.rangeY;
|
||||
bottom = objectEvent->initialCoords.y + objectEvent->range.rangeY;
|
||||
|
||||
if (top > y || bottom < y)
|
||||
return TRUE;
|
||||
|
||||
@ -272,7 +272,7 @@ static bool8 (*const sArrowWarpMetatileBehaviorChecks[])(u8) =
|
||||
[DIR_EAST - 1] = MetatileBehavior_IsEastArrowWarp,
|
||||
};
|
||||
|
||||
static const u8 sRivalAvatarGfxIds[][2] =
|
||||
static const u8 sRivalAvatarGfxIds[][GENDER_COUNT] =
|
||||
{
|
||||
[PLAYER_AVATAR_STATE_NORMAL] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL, OBJ_EVENT_GFX_RIVAL_MAY_NORMAL},
|
||||
[PLAYER_AVATAR_STATE_MACH_BIKE] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE},
|
||||
@ -285,7 +285,7 @@ static const u8 sRivalAvatarGfxIds[][2] =
|
||||
[PLAYER_AVATAR_STATE_VSSEEKER] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_RIVAL_MAY_FIELD_MOVE},
|
||||
};
|
||||
|
||||
static const u8 sPlayerAvatarGfxIds[][2] =
|
||||
static const u8 sPlayerAvatarGfxIds[][GENDER_COUNT] =
|
||||
{
|
||||
[PLAYER_AVATAR_STATE_NORMAL] = {OBJ_EVENT_GFX_BRENDAN_NORMAL, OBJ_EVENT_GFX_MAY_NORMAL},
|
||||
[PLAYER_AVATAR_STATE_MACH_BIKE] = {OBJ_EVENT_GFX_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_MAY_MACH_BIKE},
|
||||
|
||||
@ -124,7 +124,7 @@ void AgbMain()
|
||||
#if (LOG_HANDLER == LOG_HANDLER_MGBA_PRINT)
|
||||
(void) MgbaOpen();
|
||||
#elif (LOG_HANDLER == LOG_HANDLER_AGB_PRINT)
|
||||
AGBPrintfInit();
|
||||
AGBPrintInit();
|
||||
#endif
|
||||
#endif
|
||||
gAgbMainLoop_sp = __builtin_frame_address(0);
|
||||
|
||||
@ -3014,7 +3014,7 @@ static void ZeroObjectEvent(struct ObjectEvent *objEvent)
|
||||
// conflict with the usual Event Object struct, thus the definitions.
|
||||
#define linkGender(obj) obj->singleMovementActive
|
||||
// not even one can reference *byte* aligned bitfield members...
|
||||
#define linkDirection(obj) ((u8 *)obj)[offsetof(typeof(*obj), fieldEffectSpriteId) - 1] // -> rangeX
|
||||
#define linkDirection(obj) ((u8 *)obj)[offsetof(typeof(*obj), range)] // -> rangeX
|
||||
|
||||
static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 gender)
|
||||
{
|
||||
@ -3348,7 +3348,7 @@ static u8 ReformatItemDescription(u16 item, u8 *dest)
|
||||
u8 count = 0;
|
||||
u8 numLines = 1;
|
||||
u8 maxChars = 32;
|
||||
u8 *desc = (u8 *)gItemsInfo[item].description;
|
||||
u8 *desc = (u8 *)ItemId_GetDescription(item);
|
||||
|
||||
while (*desc != EOS)
|
||||
{
|
||||
|
||||
@ -590,15 +590,15 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 ap
|
||||
return 0;
|
||||
}
|
||||
|
||||
rangeX = trainerObj->rangeX;
|
||||
rangeY = trainerObj->rangeY;
|
||||
trainerObj->rangeX = 0;
|
||||
trainerObj->rangeY = 0;
|
||||
rangeX = trainerObj->range.rangeX;
|
||||
rangeY = trainerObj->range.rangeY;
|
||||
trainerObj->range.rangeX = 0;
|
||||
trainerObj->range.rangeY = 0;
|
||||
|
||||
collision = GetCollisionAtCoords(trainerObj, x, y, direction);
|
||||
|
||||
trainerObj->rangeX = rangeX;
|
||||
trainerObj->rangeY = rangeY;
|
||||
trainerObj->range.rangeX = rangeX;
|
||||
trainerObj->range.rangeY = rangeY;
|
||||
if (collision == COLLISION_OBJECT_EVENT)
|
||||
return approachDistance;
|
||||
|
||||
|
||||
@ -245,11 +245,11 @@ DOUBLE_BATTLE_TEST("Commander doesn't prevent Imposter from working on a Command
|
||||
OPPONENT(SPECIES_DITTO) { Ability(ABILITY_IMPOSTER); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN { SWITCH(opponentRight, 2); }
|
||||
TURN { SWITCH(opponentLeft, 2); }
|
||||
} SCENE {
|
||||
ABILITY_POPUP(playerRight, ABILITY_COMMANDER);
|
||||
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
|
||||
ABILITY_POPUP(opponentRight, ABILITY_IMPOSTER);
|
||||
ABILITY_POPUP(opponentLeft, ABILITY_IMPOSTER);
|
||||
MESSAGE("The opposing Ditto transformed into Tatsugiri using Imposter!");
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user