Merge pull request #163 from SBird1337/feature/animpack2
Some animations
@ -134,7 +134,7 @@ gBattleAnims_Moves::
|
|||||||
.4byte Move_FOCUS_ENERGY
|
.4byte Move_FOCUS_ENERGY
|
||||||
.4byte Move_BIDE
|
.4byte Move_BIDE
|
||||||
.4byte Move_METRONOME
|
.4byte Move_METRONOME
|
||||||
.4byte Move_MIRROR_MOVE @ doesn´t have an actual animation
|
.4byte Move_MIRROR_MOVE @ doesn't have an actual animation
|
||||||
.4byte Move_SELF_DESTRUCT
|
.4byte Move_SELF_DESTRUCT
|
||||||
.4byte Move_EGG_BOMB
|
.4byte Move_EGG_BOMB
|
||||||
.4byte Move_LICK
|
.4byte Move_LICK
|
||||||
@ -894,9 +894,43 @@ Move_NATURAL_GIFT:
|
|||||||
end
|
end
|
||||||
|
|
||||||
Move_FEINT:
|
Move_FEINT:
|
||||||
|
loadspritegfx ANIM_TAG_FEINT
|
||||||
|
createsprite gFeintSwipeSpriteTemplate, ANIM_ATTACKER, 10, -32, 0, 15
|
||||||
|
playsewithpan SE_W013B, SOUND_PAN_ATTACKER
|
||||||
|
delay 15
|
||||||
|
playsewithpan SE_W013B, SOUND_PAN_ATTACKER
|
||||||
|
delay 15
|
||||||
|
waitforvisualfinish
|
||||||
|
delay 5
|
||||||
|
createsprite gFeintZoomSpriteTemplate, ANIM_ATTACKER, 10, 0, 0
|
||||||
|
playsewithpan SE_W025B, SOUND_PAN_TARGET
|
||||||
|
waitforvisualfinish
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_PLUCK:
|
Move_PLUCK:
|
||||||
|
loadspritegfx ANIM_TAG_SEED_BROWN
|
||||||
|
loadspritegfx ANIM_TAG_IMPACT
|
||||||
|
playsewithpan SE_W077, SOUND_PAN_ATTACKER
|
||||||
|
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 40, -10, -5, 1, 2
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 3, 0, 20, 2, 1
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 7, 1, 20, 1, 1
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, -3, 5, 25, 2, -1
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 4, -4, 30, 3, -1
|
||||||
|
delay 30
|
||||||
|
playsewithpan SE_W077, SOUND_PAN_ATTACKER
|
||||||
|
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 40, 5, 10, 1, 2
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 3, -4, 20, 1, 1
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 7, -6, 20, 0, 1
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, -3, -9, 25, 1, -1
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 4, -4, 30, 2, -1
|
||||||
|
delay 30
|
||||||
|
playsewithpan SE_W077, SOUND_PAN_ATTACKER
|
||||||
|
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 1, 2
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, -3, -4, 20, 1, 1
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 7, -6, 25, 0, 1
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, -4, -10, 25, 1, 1
|
||||||
|
createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 4, -4, 25, 1, 2
|
||||||
|
waitforvisualfinish
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_TAILWIND:
|
Move_TAILWIND:
|
||||||
@ -934,6 +968,11 @@ Move_TAILWIND:
|
|||||||
end
|
end
|
||||||
|
|
||||||
Move_ACUPRESSURE:
|
Move_ACUPRESSURE:
|
||||||
|
loadspritegfx ANIM_TAG_ACCUPRESSURE
|
||||||
|
loadspritegfx ANIM_TAG_SPARK_2
|
||||||
|
createsprite gAccupressureSpriteTemplate, ANIM_ATTACKER, 40, 0, -40, 40
|
||||||
|
waitforvisualfinish
|
||||||
|
call ElectricityEffect
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_METAL_BURST:
|
Move_METAL_BURST:
|
||||||
@ -1129,6 +1168,47 @@ Move_PSYCHO_SHIFT:
|
|||||||
end
|
end
|
||||||
|
|
||||||
Move_TRUMP_CARD:
|
Move_TRUMP_CARD:
|
||||||
|
loadspritegfx ANIM_TAG_TRUMP_CARD
|
||||||
|
loadspritegfx ANIM_TAG_CUT
|
||||||
|
loadspritegfx ANIM_TAG_TRUMP_CARD_PARTICLES
|
||||||
|
monbg ANIM_TARGET
|
||||||
|
setalpha 12, 8
|
||||||
|
playsewithpan SE_W013B, SOUND_PAN_TARGET
|
||||||
|
createsprite gTrumpCardSpriteTemplate, ANIM_ATTACKER, 40, 40, 0, 0, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gTrumpCardSpriteTemplate, ANIM_ATTACKER, 40, 40, 0, 1, 32
|
||||||
|
delay 2
|
||||||
|
playsewithpan SE_W013B, SOUND_PAN_TARGET
|
||||||
|
createsprite gTrumpCardSpriteTemplate, ANIM_ATTACKER, 40, 40, 0, 0, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gTrumpCardSpriteTemplate, ANIM_ATTACKER, 40, 40, 0, 2, 32
|
||||||
|
delay 2
|
||||||
|
playsewithpan SE_W013B, SOUND_PAN_TARGET
|
||||||
|
createsprite gTrumpCardSpriteTemplate, ANIM_ATTACKER, 40, 40, 0, 2, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gTrumpCardSpriteTemplate, ANIM_ATTACKER, 40, 40, 0, 2, 32
|
||||||
|
delay 2
|
||||||
|
playsewithpan SE_W013B, SOUND_PAN_TARGET
|
||||||
|
playsewithpan SE_W015, SOUND_PAN_TARGET
|
||||||
|
createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0
|
||||||
|
createsprite gTrumpCardSpriteTemplate, ANIM_ATTACKER, 40, 40, 0, 1, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gTrumpCardSpriteTemplate, ANIM_ATTACKER, 40, 40, 0, 1, 32
|
||||||
|
delay 3
|
||||||
|
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1
|
||||||
|
createsprite gTrumpCardParticleSpriteTempalte, ANIM_ATTACKER, 40, 0, 0, 1, 12, -5, -4, 0
|
||||||
|
createsprite gTrumpCardParticleSpriteTempalte, ANIM_ATTACKER, 40, 0, 0, 0, 13, 5, 4, 1
|
||||||
|
createsprite gTrumpCardParticleSpriteTempalte, ANIM_ATTACKER, 40, 0, 0, 1, 8, -3, 0, 2
|
||||||
|
createsprite gTrumpCardParticleSpriteTempalte, ANIM_ATTACKER, 40, 0, 0, 2, 12, -5, 4, 3
|
||||||
|
delay 2
|
||||||
|
createsprite gTrumpCardParticleSpriteTempalte, ANIM_ATTACKER, 40, 0, 0, 1, 10, 1, -4, 4
|
||||||
|
createsprite gTrumpCardParticleSpriteTempalte, ANIM_ATTACKER, 40, 0, 0, 0, 13, 5, 6, 1
|
||||||
|
createsprite gTrumpCardParticleSpriteTempalte, ANIM_ATTACKER, 40, 0, 0, 1, 12, -2, 1, 3
|
||||||
|
createsprite gTrumpCardParticleSpriteTempalte, ANIM_ATTACKER, 40, 0, 0, 2, 13, -2, 1, 2
|
||||||
|
waitforvisualfinish
|
||||||
|
clearmonbg ANIM_TARGET
|
||||||
|
blendoff
|
||||||
|
waitforvisualfinish
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_HEAL_BLOCK:
|
Move_HEAL_BLOCK:
|
||||||
@ -1156,6 +1236,24 @@ Move_HEAL_BLOCK:
|
|||||||
end
|
end
|
||||||
|
|
||||||
Move_WRING_OUT:
|
Move_WRING_OUT:
|
||||||
|
loadspritegfx ANIM_TAG_WRING_OUT
|
||||||
|
monbg ANIM_TARGET
|
||||||
|
setalpha 12, 8
|
||||||
|
createsprite gWringOutHandSpriteTemplate, ANIM_TARGET, 40, 0, 0, 48, 3, 32, FALSE
|
||||||
|
delay 3
|
||||||
|
createsprite gWringOutHandSpriteTemplate, ANIM_TARGET, 40, 0, 0, 48, 3, 32, TRUE
|
||||||
|
delay 3
|
||||||
|
createsprite gWringOutHandSpriteTemplate, ANIM_TARGET, 40, 0, 0, 48, 3, 32, TRUE
|
||||||
|
delay 3
|
||||||
|
createsprite gWringOutHandSpriteTemplate, ANIM_TARGET, 40, 0, 0, 48, 3, 32, TRUE
|
||||||
|
delay 3
|
||||||
|
createsprite gWringOutHandSpriteTemplate, ANIM_TARGET, 40, 0, 0, 48, 3, 32, TRUE
|
||||||
|
delay 3
|
||||||
|
createsprite gWringOutHandSpriteTemplate, ANIM_TARGET, 40, 0, 0, 48, 3, 32, TRUE
|
||||||
|
waitforvisualfinish
|
||||||
|
clearmonbg ANIM_TARGET
|
||||||
|
blendoff
|
||||||
|
waitforvisualfinish
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_POWER_TRICK:
|
Move_POWER_TRICK:
|
||||||
@ -1238,9 +1336,87 @@ Move_COPYCAT:
|
|||||||
end
|
end
|
||||||
|
|
||||||
Move_POWER_SWAP:
|
Move_POWER_SWAP:
|
||||||
|
loadspritegfx ANIM_TAG_COLORED_ORBS
|
||||||
|
playsewithpan SE_W104, 0
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
playsewithpan SE_W104, 0
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1, 42, 32
|
||||||
|
|
||||||
|
waitforvisualfinish
|
||||||
|
playsewithpan SE_W104, 0
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
playsewithpan SE_W104, 0
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
waitforvisualfinish
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_GUARD_SWAP:
|
Move_GUARD_SWAP:
|
||||||
|
loadspritegfx ANIM_TAG_COLORED_ORBS
|
||||||
|
playsewithpan SE_W104, 0
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 2, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
playsewithpan SE_W104, 0
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 2, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 1, 42, 32
|
||||||
|
|
||||||
|
waitforvisualfinish
|
||||||
|
playsewithpan SE_W104, 0
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 2, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 0, 42, -32
|
||||||
|
delay 2
|
||||||
|
playsewithpan SE_W104, 0
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 2, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 3, 1, 42, 32
|
||||||
|
delay 2
|
||||||
|
waitforvisualfinish
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_PUNISHMENT:
|
Move_PUNISHMENT:
|
||||||
@ -1250,6 +1426,17 @@ Move_LAST_RESORT:
|
|||||||
end
|
end
|
||||||
|
|
||||||
Move_WORRY_SEED:
|
Move_WORRY_SEED:
|
||||||
|
loadspritegfx ANIM_TAG_WORRY_SEED
|
||||||
|
loadspritegfx ANIM_TAG_SMALL_CLOUD
|
||||||
|
playsewithpan SE_W077, SOUND_PAN_ATTACKER
|
||||||
|
createsprite gWorrySeedSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 32, -32
|
||||||
|
waitforvisualfinish
|
||||||
|
playsewithpan SE_W028, SOUND_PAN_TARGET
|
||||||
|
createsprite gSmallCloudTemplate, ANIM_ATTACKER, 3, -2, -1, 0, -1, -1
|
||||||
|
createsprite gSmallCloudTemplate, ANIM_ATTACKER, 3, 3, 1, 1, 2, -1
|
||||||
|
createsprite gSmallCloudTemplate, ANIM_ATTACKER, 3, -2, 1, 2, 1, -2
|
||||||
|
createsprite gSmallCloudTemplate, ANIM_ATTACKER, 3, 3, -2, 1, -1, -2
|
||||||
|
waitforvisualfinish
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_SUCKER_PUNCH:
|
Move_SUCKER_PUNCH:
|
||||||
|
@ -608,6 +608,8 @@ BattleScript_EffectAcupressureTry:
|
|||||||
attackstring
|
attackstring
|
||||||
ppreduce
|
ppreduce
|
||||||
tryaccupressure BS_TARGET, BattleScript_ButItFailed
|
tryaccupressure BS_TARGET, BattleScript_ButItFailed
|
||||||
|
attackanimation
|
||||||
|
waitanimation
|
||||||
setgraphicalstatchangevalues
|
setgraphicalstatchangevalues
|
||||||
playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||||
statbuffchange MOVE_EFFECT_CERTAIN, BattleScript_MoveEnd
|
statbuffchange MOVE_EFFECT_CERTAIN, BattleScript_MoveEnd
|
||||||
|
BIN
graphics/battle_anims/sprites/accupressure.png
Normal file
After Width: | Height: | Size: 358 B |
BIN
graphics/battle_anims/sprites/colored_orbs.png
Normal file
After Width: | Height: | Size: 432 B |
BIN
graphics/battle_anims/sprites/feint_punch.png
Normal file
After Width: | Height: | Size: 236 B |
BIN
graphics/battle_anims/sprites/seed_new.png
Normal file
After Width: | Height: | Size: 238 B |
BIN
graphics/battle_anims/sprites/small_cloud.png
Normal file
After Width: | Height: | Size: 183 B |
BIN
graphics/battle_anims/sprites/trump_card_particles.png
Normal file
After Width: | Height: | Size: 140 B |
BIN
graphics/battle_anims/sprites/trump_cards.png
Normal file
After Width: | Height: | Size: 143 B |
BIN
graphics/battle_anims/sprites/worry_seed.png
Normal file
After Width: | Height: | Size: 317 B |
BIN
graphics/battle_anims/sprites/wring_out.png
Normal file
After Width: | Height: | Size: 271 B |
@ -300,9 +300,18 @@
|
|||||||
#define ANIM_TAG_PURPLE_JAB (ANIM_SPRITES_START + 290)
|
#define ANIM_TAG_PURPLE_JAB (ANIM_SPRITES_START + 290)
|
||||||
#define ANIM_TAG_TOXIC_SPIKES (ANIM_SPRITES_START + 291)
|
#define ANIM_TAG_TOXIC_SPIKES (ANIM_SPRITES_START + 291)
|
||||||
#define ANIM_TAG_ENERGY_BALL (ANIM_SPRITES_START + 292)
|
#define ANIM_TAG_ENERGY_BALL (ANIM_SPRITES_START + 292)
|
||||||
#define ANIM_TAG_MEGA_STONE (ANIM_SPRITES_START + 293)
|
#define ANIM_TAG_SEED_BROWN (ANIM_SPRITES_START + 293)
|
||||||
#define ANIM_TAG_MEGA_SYMBOL (ANIM_SPRITES_START + 294)
|
#define ANIM_TAG_FEINT (ANIM_SPRITES_START + 294)
|
||||||
#define ANIM_TAG_MEGA_PARTICLES (ANIM_SPRITES_START + 295)
|
#define ANIM_TAG_MEGA_STONE (ANIM_SPRITES_START + 295)
|
||||||
|
#define ANIM_TAG_MEGA_SYMBOL (ANIM_SPRITES_START + 296)
|
||||||
|
#define ANIM_TAG_MEGA_PARTICLES (ANIM_SPRITES_START + 297)
|
||||||
|
#define ANIM_TAG_TRUMP_CARD (ANIM_SPRITES_START + 298)
|
||||||
|
#define ANIM_TAG_TRUMP_CARD_PARTICLES (ANIM_SPRITES_START + 299)
|
||||||
|
#define ANIM_TAG_ACCUPRESSURE (ANIM_SPRITES_START + 300)
|
||||||
|
#define ANIM_TAG_WRING_OUT (ANIM_SPRITES_START + 301)
|
||||||
|
#define ANIM_TAG_COLORED_ORBS (ANIM_SPRITES_START + 302)
|
||||||
|
#define ANIM_TAG_WORRY_SEED (ANIM_SPRITES_START + 303)
|
||||||
|
#define ANIM_TAG_SMALL_CLOUD (ANIM_SPRITES_START + 304)
|
||||||
|
|
||||||
// battlers
|
// battlers
|
||||||
#define ANIM_ATTACKER 0
|
#define ANIM_ATTACKER 0
|
||||||
|
@ -4137,6 +4137,8 @@ extern const u32 gBattleAnimSpriteGfx_AirWave[];
|
|||||||
extern const u32 gBattleAnimSpriteGfx_Orb[];
|
extern const u32 gBattleAnimSpriteGfx_Orb[];
|
||||||
extern const u32 gBattleAnimSpriteGfx_Sword[];
|
extern const u32 gBattleAnimSpriteGfx_Sword[];
|
||||||
extern const u32 gBattleAnimSpriteGfx_Seed[];
|
extern const u32 gBattleAnimSpriteGfx_Seed[];
|
||||||
|
extern const u32 gBattleAnimSpriteGfx_SeedBrown[];
|
||||||
|
extern const u32 gBattleAnimSpriteGfx_Feint[];
|
||||||
extern const u32 gBattleAnimSpriteGfx_Explosion6[];
|
extern const u32 gBattleAnimSpriteGfx_Explosion6[];
|
||||||
extern const u32 gBattleAnimSpriteGfx_PinkOrb[];
|
extern const u32 gBattleAnimSpriteGfx_PinkOrb[];
|
||||||
extern const u32 gBattleAnimSpriteGfx_Gust[];
|
extern const u32 gBattleAnimSpriteGfx_Gust[];
|
||||||
@ -4409,6 +4411,13 @@ extern const u32 gBattleAnimBgTilemap_ScaryFaceOpponent[];
|
|||||||
extern const u32 gBattleAnimBgTilemap_ScaryFaceContest[];
|
extern const u32 gBattleAnimBgTilemap_ScaryFaceContest[];
|
||||||
extern const u32 gBattleAnimSpriteGfx_Bird[];
|
extern const u32 gBattleAnimSpriteGfx_Bird[];
|
||||||
extern const u32 gBattleAnimSpriteGfx_CrossImpact[];
|
extern const u32 gBattleAnimSpriteGfx_CrossImpact[];
|
||||||
|
extern const u32 gBattleAnimSpriteGfx_TrumpCard[];
|
||||||
|
extern const u32 gBattleAnimSpriteGfx_TrumpCardParticles[];
|
||||||
|
extern const u32 gBattleAnimSpriteGfx_Accupressure[];
|
||||||
|
extern const u32 gBattleAnimSpriteGfx_WringOut[];
|
||||||
|
extern const u32 gBattleAnimSpriteGfx_ColoredOrbs[];
|
||||||
|
extern const u32 gBattleAnimSpriteGfx_WorrySeed[];
|
||||||
|
extern const u32 gBattleAnimSpriteGfx_SmallCloud[];
|
||||||
|
|
||||||
extern const u32 gBattleAnimSpritePal_Bone[];
|
extern const u32 gBattleAnimSpritePal_Bone[];
|
||||||
extern const u32 gBattleAnimSpritePal_Spark[];
|
extern const u32 gBattleAnimSpritePal_Spark[];
|
||||||
@ -4417,6 +4426,8 @@ extern const u32 gBattleAnimSpritePal_AirWave[];
|
|||||||
extern const u32 gBattleAnimSpritePal_Orb[];
|
extern const u32 gBattleAnimSpritePal_Orb[];
|
||||||
extern const u32 gBattleAnimSpritePal_Sword[];
|
extern const u32 gBattleAnimSpritePal_Sword[];
|
||||||
extern const u32 gBattleAnimSpritePal_Seed[];
|
extern const u32 gBattleAnimSpritePal_Seed[];
|
||||||
|
extern const u32 gBattleAnimSpritePal_SeedBrown[];
|
||||||
|
extern const u32 gBattleAnimSpritePal_Feint[];
|
||||||
extern const u32 gBattleAnimSpritePal_Explosion6[];
|
extern const u32 gBattleAnimSpritePal_Explosion6[];
|
||||||
extern const u32 gBattleAnimSpritePal_PinkOrb[];
|
extern const u32 gBattleAnimSpritePal_PinkOrb[];
|
||||||
extern const u32 gBattleAnimSpritePal_Gust[];
|
extern const u32 gBattleAnimSpritePal_Gust[];
|
||||||
@ -4692,6 +4703,13 @@ extern const u32 gBattleAnimSpritePal_CrossImpact[];
|
|||||||
extern const u32 gBattleAnimSpritePal_Slash2[];
|
extern const u32 gBattleAnimSpritePal_Slash2[];
|
||||||
extern const u32 gBattleAnimSpritePal_WhipHit[];
|
extern const u32 gBattleAnimSpritePal_WhipHit[];
|
||||||
extern const u32 gBattleAnimSpritePal_BlueRing2[];
|
extern const u32 gBattleAnimSpritePal_BlueRing2[];
|
||||||
|
extern const u32 gBattleAnimSpritePal_TrumpCard[];
|
||||||
|
extern const u32 gBattleAnimSpritePal_TrumpCardParticles[];
|
||||||
|
extern const u32 gBattleAnimSpritePal_Accupressure[];
|
||||||
|
extern const u32 gBattleAnimSpritePal_WringOut[];
|
||||||
|
extern const u32 gBattleAnimSpritePal_ColoredOrbs[];
|
||||||
|
extern const u32 gBattleAnimSpritePal_WorrySeed[];
|
||||||
|
extern const u32 gBattleAnimSpritePal_SmallCloud[];
|
||||||
|
|
||||||
extern const u32 gBattleAnimBgImage_Dark[];
|
extern const u32 gBattleAnimBgImage_Dark[];
|
||||||
extern const u32 gBattleAnimBgImage_Ghost[];
|
extern const u32 gBattleAnimBgImage_Ghost[];
|
||||||
@ -4745,6 +4763,7 @@ extern const u32 gBattleAnimBgTilemap_InAir[];
|
|||||||
extern const u32 gBattleAnimBgTilemap_Aurora[];
|
extern const u32 gBattleAnimBgTilemap_Aurora[];
|
||||||
extern const u32 gBattleAnimBgTilemap_Fissure[];
|
extern const u32 gBattleAnimBgTilemap_Fissure[];
|
||||||
|
|
||||||
|
|
||||||
extern const u32 gMetalShineGfx[];
|
extern const u32 gMetalShineGfx[];
|
||||||
extern const u32 gMetalShinePalette[];
|
extern const u32 gMetalShinePalette[];
|
||||||
extern const u32 gMetalShineTilemap[];
|
extern const u32 gMetalShineTilemap[];
|
||||||
|
@ -1418,9 +1418,18 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] =
|
|||||||
{gBattleAnimSpriteGfx_PurpleJab, 0x0100, ANIM_TAG_PURPLE_JAB},
|
{gBattleAnimSpriteGfx_PurpleJab, 0x0100, ANIM_TAG_PURPLE_JAB},
|
||||||
{gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_TOXIC_SPIKES},
|
{gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_TOXIC_SPIKES},
|
||||||
{gBattleAnimSpriteGfx_EnergyBall, 0x0200, ANIM_TAG_ENERGY_BALL},
|
{gBattleAnimSpriteGfx_EnergyBall, 0x0200, ANIM_TAG_ENERGY_BALL},
|
||||||
|
{gBattleAnimSpriteGfx_SeedBrown, 0x0080, ANIM_TAG_SEED_BROWN},
|
||||||
|
{gBattleAnimSpriteGfx_Feint, 0x0800, ANIM_TAG_FEINT},
|
||||||
{gBattleAnimSpriteGfx_MegaStone, 0x800, ANIM_TAG_MEGA_STONE},
|
{gBattleAnimSpriteGfx_MegaStone, 0x800, ANIM_TAG_MEGA_STONE},
|
||||||
{gBattleAnimSpriteGfx_MegaSymbol, 0x0200, ANIM_TAG_MEGA_SYMBOL},
|
{gBattleAnimSpriteGfx_MegaSymbol, 0x0200, ANIM_TAG_MEGA_SYMBOL},
|
||||||
{gBattleAnimSpriteGfx_MegaParticles, 0x0180, ANIM_TAG_MEGA_PARTICLES},
|
{gBattleAnimSpriteGfx_MegaParticles, 0x0180, ANIM_TAG_MEGA_PARTICLES},
|
||||||
|
{gBattleAnimSpriteGfx_TrumpCard, 0x0180, ANIM_TAG_TRUMP_CARD},
|
||||||
|
{gBattleAnimSpriteGfx_TrumpCardParticles, 0x0060, ANIM_TAG_TRUMP_CARD_PARTICLES},
|
||||||
|
{gBattleAnimSpriteGfx_Accupressure, 0x0200, ANIM_TAG_ACCUPRESSURE},
|
||||||
|
{gBattleAnimSpriteGfx_WringOut, 0x0200, ANIM_TAG_WRING_OUT},
|
||||||
|
{gBattleAnimSpriteGfx_ColoredOrbs, 0x0300, ANIM_TAG_COLORED_ORBS},
|
||||||
|
{gBattleAnimSpriteGfx_WorrySeed, 0x0080, ANIM_TAG_WORRY_SEED},
|
||||||
|
{gBattleAnimSpriteGfx_SmallCloud, 0x0080, ANIM_TAG_SMALL_CLOUD},
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
|
const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
|
||||||
@ -1718,9 +1727,18 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
|
|||||||
{gBattleAnimSpritePal_PurpleJab, ANIM_TAG_PURPLE_JAB},
|
{gBattleAnimSpritePal_PurpleJab, ANIM_TAG_PURPLE_JAB},
|
||||||
{gBattleAnimSpritePal_ToxicSpikes, ANIM_TAG_TOXIC_SPIKES},
|
{gBattleAnimSpritePal_ToxicSpikes, ANIM_TAG_TOXIC_SPIKES},
|
||||||
{gBattleAnimSpritePal_EnergyBall, ANIM_TAG_ENERGY_BALL},
|
{gBattleAnimSpritePal_EnergyBall, ANIM_TAG_ENERGY_BALL},
|
||||||
|
{gBattleAnimSpritePal_SeedBrown, ANIM_TAG_SEED_BROWN},
|
||||||
|
{gBattleAnimSpritePal_Feint, ANIM_TAG_FEINT},
|
||||||
{gBattleAnimSpritePal_MegaStone, ANIM_TAG_MEGA_STONE},
|
{gBattleAnimSpritePal_MegaStone, ANIM_TAG_MEGA_STONE},
|
||||||
{gBattleAnimSpritePal_MegaSymbol, ANIM_TAG_MEGA_SYMBOL},
|
{gBattleAnimSpritePal_MegaSymbol, ANIM_TAG_MEGA_SYMBOL},
|
||||||
{gBattleAnimSpritePal_MegaParticles, ANIM_TAG_MEGA_PARTICLES},
|
{gBattleAnimSpritePal_MegaParticles, ANIM_TAG_MEGA_PARTICLES},
|
||||||
|
{gBattleAnimSpritePal_TrumpCard, ANIM_TAG_TRUMP_CARD},
|
||||||
|
{gBattleAnimSpritePal_TrumpCardParticles, ANIM_TAG_TRUMP_CARD_PARTICLES},
|
||||||
|
{gBattleAnimSpritePal_Accupressure, ANIM_TAG_ACCUPRESSURE},
|
||||||
|
{gBattleAnimSpritePal_WringOut, ANIM_TAG_WRING_OUT},
|
||||||
|
{gBattleAnimSpritePal_ColoredOrbs, ANIM_TAG_COLORED_ORBS},
|
||||||
|
{gBattleAnimSpritePal_WorrySeed, ANIM_TAG_WORRY_SEED},
|
||||||
|
{gBattleAnimSpritePal_SmallCloud, ANIM_TAG_SMALL_CLOUD},
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
|
const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
|
||||||
|
@ -29,6 +29,7 @@ void AnimPetalDanceBigFlower(struct Sprite *);
|
|||||||
void AnimPetalDanceSmallFlower(struct Sprite *);
|
void AnimPetalDanceSmallFlower(struct Sprite *);
|
||||||
void AnimRazorLeafParticle(struct Sprite *);
|
void AnimRazorLeafParticle(struct Sprite *);
|
||||||
void AnimLeechSeed(struct Sprite *);
|
void AnimLeechSeed(struct Sprite *);
|
||||||
|
static void AnimPluck(struct Sprite *);
|
||||||
void AnimTranslateLinearSingleSineWave(struct Sprite *);
|
void AnimTranslateLinearSingleSineWave(struct Sprite *);
|
||||||
void AnimMoveTwisterParticle(struct Sprite *);
|
void AnimMoveTwisterParticle(struct Sprite *);
|
||||||
void AnimConstrictBinding(struct Sprite *);
|
void AnimConstrictBinding(struct Sprite *);
|
||||||
@ -153,6 +154,14 @@ static void sub_8103300(struct Sprite *);
|
|||||||
static void sub_8103320(struct Sprite *);
|
static void sub_8103320(struct Sprite *);
|
||||||
static void sub_81033F0(struct Sprite *);
|
static void sub_81033F0(struct Sprite *);
|
||||||
static void sub_810342C(struct Sprite *);
|
static void sub_810342C(struct Sprite *);
|
||||||
|
static void AnimMoveFeintSwipe(struct Sprite *);
|
||||||
|
static void AnimMoveFeintZoom(struct Sprite *);
|
||||||
|
static void AnimMoveTrumpCard(struct Sprite *);
|
||||||
|
static void AnimMoveTrumpCardParticle(struct Sprite* sprite);
|
||||||
|
static void AnimMoveAccupressure(struct Sprite* sprite);
|
||||||
|
static void AnimMoveWringOut(struct Sprite* sprite);
|
||||||
|
static void AnimMoveWorrySeed(struct Sprite* sprite);
|
||||||
|
static void AnimMoveSmallCloud(struct Sprite* sprite);
|
||||||
|
|
||||||
const union AnimCmd gUnknown_085920F0[] =
|
const union AnimCmd gUnknown_085920F0[] =
|
||||||
{
|
{
|
||||||
@ -172,6 +181,251 @@ const union AnimCmd *const gUnknown_08592114[] =
|
|||||||
gUnknown_085920F0,
|
gUnknown_085920F0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sFeintAffineSwipe[] = { AFFINEANIMCMD_END };
|
||||||
|
static const union AffineAnimCmd sFeintAffineZoom[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
|
||||||
|
AFFINEANIMCMD_FRAME(-30, -30, 0, 10),
|
||||||
|
AFFINEANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sTrumpCardAffine0[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0xC0, 0xC0, 30, 0),
|
||||||
|
AFFINEANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sTrumpCardAffine1[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0xA0, 0xA0, 40, 0),
|
||||||
|
AFFINEANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sTrumpCardAffine2[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0xD0, 0xD0, -20, 0),
|
||||||
|
AFFINEANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sTrumpCardAffine3[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0xE0, 0xE0, 40, 0),
|
||||||
|
AFFINEANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sTrumpCardAffine4[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0xF0, 0xF0, 60, 0),
|
||||||
|
AFFINEANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd * const sTrumpCardAffineAnims[] =
|
||||||
|
{
|
||||||
|
sTrumpCardAffine0,
|
||||||
|
sTrumpCardAffine1,
|
||||||
|
sTrumpCardAffine2,
|
||||||
|
sTrumpCardAffine3,
|
||||||
|
sTrumpCardAffine4
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd * const sFeintAffineAnims[] =
|
||||||
|
{
|
||||||
|
sFeintAffineZoom,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sTrumpCardFrame0[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(0, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sTrumpCardFrame1[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(4, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sTrumpCardFrame2[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(8, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sTrumpCardParticleFrame0[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(0, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sTrumpCardParticleFrame1[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(1, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sTrumpCardParticleFrame2[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(2, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd * const sTrumpCardAnims[] =
|
||||||
|
{
|
||||||
|
sTrumpCardFrame0,
|
||||||
|
sTrumpCardFrame1,
|
||||||
|
sTrumpCardFrame2
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd * const sTrumpCardParticleAnims[] =
|
||||||
|
{
|
||||||
|
sTrumpCardParticleFrame0,
|
||||||
|
sTrumpCardParticleFrame1,
|
||||||
|
sTrumpCardParticleFrame2,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sAccupressureTurn[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0, 0, 1, 20),
|
||||||
|
AFFINEANIMCMD_FRAME(0, 0, -1, 40),
|
||||||
|
AFFINEANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sAccupressureStill[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
|
||||||
|
AFFINEANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd * const sAccupressureAffineAnims[] =
|
||||||
|
{
|
||||||
|
sAccupressureStill,
|
||||||
|
sAccupressureTurn
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sSmallCloundsInit[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0x100,0x100, 0, 0),
|
||||||
|
AFFINEANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sSmallCloudsVariant0[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0x100,0x100, 0, 0),
|
||||||
|
AFFINEANIMCMD_FRAME(-10, -10, 0, 15),
|
||||||
|
AFFINEANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sSmallCloudsVariant1[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0x180,0x180, 0, 0),
|
||||||
|
AFFINEANIMCMD_FRAME(-18, -18, 0, 21),
|
||||||
|
AFFINEANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const union AffineAnimCmd sSmallCloudsVariant2[] =
|
||||||
|
{
|
||||||
|
AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0),
|
||||||
|
AFFINEANIMCMD_FRAME(-6, -6, 0, 15),
|
||||||
|
AFFINEANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AffineAnimCmd * const sSmallCloudSpriteAffineAnimTable[] =
|
||||||
|
{
|
||||||
|
sSmallCloundsInit,
|
||||||
|
sSmallCloudsVariant0,
|
||||||
|
sSmallCloudsVariant1,
|
||||||
|
sSmallCloudsVariant2,
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gWorrySeedSpriteTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_WORRY_SEED,
|
||||||
|
.paletteTag = ANIM_TAG_WORRY_SEED,
|
||||||
|
.oam = &gUnknown_0852490C,
|
||||||
|
.anims = gDummySpriteAnimTable,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
|
.callback = AnimMoveWorrySeed
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gSmallCloudTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_SMALL_CLOUD,
|
||||||
|
.paletteTag = ANIM_TAG_SMALL_CLOUD,
|
||||||
|
.oam = &gUnknown_0852496C,
|
||||||
|
.anims = gDummySpriteAnimTable,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = sSmallCloudSpriteAffineAnimTable,
|
||||||
|
.callback = AnimMoveSmallCloud
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gAccupressureSpriteTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_ACCUPRESSURE,
|
||||||
|
.paletteTag = ANIM_TAG_ACCUPRESSURE,
|
||||||
|
.oam = &gUnknown_085249D4,
|
||||||
|
.anims = gDummySpriteAnimTable,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = sAccupressureAffineAnims,
|
||||||
|
.callback = AnimMoveAccupressure,
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gWringOutHandSpriteTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_WRING_OUT,
|
||||||
|
.paletteTag = ANIM_TAG_WRING_OUT,
|
||||||
|
.oam = &gUnknown_085249D4,
|
||||||
|
.anims = gDummySpriteAnimTable,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
|
.callback = AnimMoveWringOut,
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gTrumpCardParticleSpriteTempalte =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_TRUMP_CARD_PARTICLES,
|
||||||
|
.paletteTag = ANIM_TAG_TRUMP_CARD_PARTICLES,
|
||||||
|
.oam = &gUnknown_085249C4,
|
||||||
|
.anims = sTrumpCardParticleAnims,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = sTrumpCardAffineAnims,
|
||||||
|
.callback = AnimMoveTrumpCardParticle
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gTrumpCardSpriteTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_TRUMP_CARD,
|
||||||
|
.paletteTag = ANIM_TAG_TRUMP_CARD,
|
||||||
|
.oam = &gUnknown_085249CC,
|
||||||
|
.anims = sTrumpCardAnims,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
|
.callback = AnimMoveTrumpCard
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gFeintSwipeSpriteTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_FEINT,
|
||||||
|
.paletteTag = ANIM_TAG_FEINT,
|
||||||
|
.oam = &gUnknown_0852497C,
|
||||||
|
.anims = gDummySpriteAnimTable,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
|
.callback = AnimMoveFeintSwipe,
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gFeintZoomSpriteTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_FEINT,
|
||||||
|
.paletteTag = ANIM_TAG_FEINT,
|
||||||
|
.oam = &gUnknown_0852497C,
|
||||||
|
.anims = gDummySpriteAnimTable,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = sFeintAffineAnims,
|
||||||
|
.callback = AnimMoveFeintZoom,
|
||||||
|
};
|
||||||
|
|
||||||
const struct SpriteTemplate gSleepPowderParticleSpriteTemplate =
|
const struct SpriteTemplate gSleepPowderParticleSpriteTemplate =
|
||||||
{
|
{
|
||||||
.tileTag = ANIM_TAG_SLEEP_POWDER,
|
.tileTag = ANIM_TAG_SLEEP_POWDER,
|
||||||
@ -404,6 +658,17 @@ const struct SpriteTemplate gLeechSeedSpriteTemplate =
|
|||||||
.callback = AnimLeechSeed,
|
.callback = AnimLeechSeed,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gPluckParticleSpriteTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_SEED_BROWN,
|
||||||
|
.paletteTag = ANIM_TAG_SEED_BROWN,
|
||||||
|
.oam = &gUnknown_0852490C,
|
||||||
|
.anims = gDummySpriteAnimTable,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
|
.callback = AnimPluck,
|
||||||
|
};
|
||||||
|
|
||||||
const union AnimCmd gUnknown_085922D4[] =
|
const union AnimCmd gUnknown_085922D4[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(0, 1),
|
ANIMCMD_FRAME(0, 1),
|
||||||
@ -2636,6 +2901,302 @@ static void AnimHyperBeamOrbStep(struct Sprite* sprite)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void AnimMoveWorrySeedWait(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
if (TranslateAnimHorizontalArc(sprite))
|
||||||
|
DestroyAnimSprite(sprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
// arg 0: initial x pixel offset
|
||||||
|
// arg 1: initial y pixel offset
|
||||||
|
// arg 2: wave period
|
||||||
|
// arg 3: wave amplitude
|
||||||
|
static void AnimMoveWorrySeed(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||||
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||||
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||||
|
|
||||||
|
sprite->data[0] = gBattleAnimArgs[2];
|
||||||
|
sprite->data[5] = gBattleAnimArgs[3];
|
||||||
|
InitAnimArcTranslation(sprite);
|
||||||
|
sprite->callback = AnimMoveWorrySeedWait;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveSmallCloudAnimate(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
sprite->pos2.x += sprite->data[0];
|
||||||
|
sprite->pos2.y += sprite->data[1];
|
||||||
|
|
||||||
|
if(sprite->affineAnimEnded)
|
||||||
|
{
|
||||||
|
DestroyAnimSprite(sprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#define ONE_IF_ZERO(x) ((x) > 0 ? (x) : 1)
|
||||||
|
|
||||||
|
// arg 0: initial x pixel offset
|
||||||
|
// arg 1: initial y pixel offset
|
||||||
|
// arg 2: cloud type animation [0..2]
|
||||||
|
// arg 3: horizontal velocity
|
||||||
|
// arg 4: vertical velocity
|
||||||
|
// arg 5: duration
|
||||||
|
static void AnimMoveSmallCloud(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||||
|
sprite->data[0] = gBattleAnimArgs[3];
|
||||||
|
sprite->data[1] = gBattleAnimArgs[4];
|
||||||
|
sprite->callback = AnimMoveSmallCloudAnimate;
|
||||||
|
StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimPluckParticle(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
if(sprite->data[0] > 0)
|
||||||
|
{
|
||||||
|
s16 yVelocity = sprite->data[5];
|
||||||
|
s16 xVelocity = sprite->data[2];
|
||||||
|
sprite->pos1.y -= yVelocity;
|
||||||
|
sprite->pos1.x += xVelocity;
|
||||||
|
if((sprite->data[0] % 7) == 0)
|
||||||
|
{
|
||||||
|
sprite->data[5] = yVelocity-1;
|
||||||
|
}
|
||||||
|
sprite->data[0]--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprite->callback = DestroyAnimSprite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// brown seed particle (jumps up, falls down.)
|
||||||
|
// used by Pluck.
|
||||||
|
// arg 0: initial x offset from target
|
||||||
|
// arg 1: initial y offset from target
|
||||||
|
// arg 2: lifetime of the particle
|
||||||
|
// arg 3: upward velocity initial (decreases over time)
|
||||||
|
// arg 4: horizontal velocity (stays the same)
|
||||||
|
static void AnimPluck(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||||
|
|
||||||
|
sprite->data[0] = gBattleAnimArgs[2]; //lifetime of the particle
|
||||||
|
sprite->data[5] = gBattleAnimArgs[3]; //upward velocity
|
||||||
|
sprite->data[2] = gBattleAnimArgs[4]; //horizontal velocity
|
||||||
|
sprite->pos1.x += gBattleAnimArgs[0];
|
||||||
|
sprite->pos1.y += gBattleAnimArgs[1];
|
||||||
|
sprite->callback = AnimPluckParticle;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveFeintSwipeStep(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
switch(sprite->data[5])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
if(AnimTranslateLinear(sprite))
|
||||||
|
{
|
||||||
|
//Not the most elegant solution here, but it works without messing up the sprites coordinates
|
||||||
|
sprite->pos2.x = 0;
|
||||||
|
sprite->pos1.x += 64;
|
||||||
|
sprite->data[5]++;
|
||||||
|
sprite->data[0] = sprite->data[6];
|
||||||
|
sprite->data[1] = sprite->pos1.x;
|
||||||
|
sprite->data[2] = sprite->pos1.x - 64;
|
||||||
|
sprite->data[3] = sprite->pos1.y;
|
||||||
|
sprite->data[4] = sprite->pos1.y;
|
||||||
|
InitAnimLinearTranslation(sprite);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if(AnimTranslateLinear(sprite))
|
||||||
|
{
|
||||||
|
sprite->callback = DestroyAnimSprite;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveFeintSwipe(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||||
|
{
|
||||||
|
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||||
|
}
|
||||||
|
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||||
|
sprite->data[0] = gBattleAnimArgs[2];
|
||||||
|
sprite->data[6] = gBattleAnimArgs[2];
|
||||||
|
sprite->data[1] = sprite->pos1.x;
|
||||||
|
sprite->data[2] = sprite->pos1.x + 64;
|
||||||
|
sprite->data[3] = sprite->pos1.y;
|
||||||
|
sprite->data[4] = sprite->pos1.y;
|
||||||
|
sprite->data[5] = 0;
|
||||||
|
InitAnimLinearTranslation(sprite);
|
||||||
|
sprite->callback = AnimMoveFeintSwipeStep;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveFeintZoom(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||||
|
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||||
|
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveTrumpCardArc(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
if(AnimTranslateLinear(sprite))
|
||||||
|
{
|
||||||
|
DestroyAnimSprite(sprite);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprite->pos2.y = Sin(sprite->data[5], -20);
|
||||||
|
sprite->data[5] -= sprite->data[6];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveTrumpCard(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||||
|
{
|
||||||
|
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||||
|
}
|
||||||
|
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||||
|
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||||
|
sprite->data[0] = gBattleAnimArgs[3];
|
||||||
|
sprite->data[1] = sprite->pos1.x;
|
||||||
|
sprite->data[2] = sprite->pos1.x - 80;
|
||||||
|
sprite->data[3] = sprite->pos1.y;
|
||||||
|
sprite->data[4] = sprite->pos1.y;
|
||||||
|
sprite->data[5] = 128;
|
||||||
|
sprite->data[6] = 128 / sprite->data[0];
|
||||||
|
InitAnimLinearTranslation(sprite);
|
||||||
|
sprite->callback = AnimMoveTrumpCardArc;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveTrumpCardParticleAlive(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
if(sprite->data[0] > 0)
|
||||||
|
{
|
||||||
|
s16 yVelocity = sprite->data[2];
|
||||||
|
s16 xVelocity = sprite->data[1];
|
||||||
|
sprite->pos1.y -= yVelocity;
|
||||||
|
sprite->pos1.x += xVelocity;
|
||||||
|
if((sprite->data[0] % 2) == 0)
|
||||||
|
{
|
||||||
|
if(xVelocity > 0)
|
||||||
|
xVelocity--;
|
||||||
|
else if(xVelocity < 0)
|
||||||
|
xVelocity++;
|
||||||
|
|
||||||
|
if(yVelocity > 0)
|
||||||
|
yVelocity--;
|
||||||
|
else if(yVelocity < 0)
|
||||||
|
yVelocity++;
|
||||||
|
sprite->data[1] = xVelocity;
|
||||||
|
sprite->data[2] = yVelocity;
|
||||||
|
}
|
||||||
|
sprite->data[0]--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprite->callback = DestroyAnimSprite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveTrumpCardParticle(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||||
|
{
|
||||||
|
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||||
|
}
|
||||||
|
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||||
|
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||||
|
StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]);
|
||||||
|
sprite->data[0] = gBattleAnimArgs[3]; //lifespan
|
||||||
|
sprite->data[1] = gBattleAnimArgs[4]; //horizontal velocity, decaying
|
||||||
|
sprite->data[2] = gBattleAnimArgs[5]; //vertical velocity, decaying
|
||||||
|
sprite->callback = AnimMoveTrumpCardParticleAlive;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveAccupressureTransition(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
switch(sprite->data[5])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
if(AnimTranslateLinear(sprite))
|
||||||
|
{
|
||||||
|
StartSpriteAffineAnim(sprite, 1);
|
||||||
|
sprite->data[5]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if(sprite->affineAnimEnded)
|
||||||
|
{
|
||||||
|
DestroyAnimSprite(sprite);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveAccupressure(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||||
|
sprite->data[0] = gBattleAnimArgs[2];
|
||||||
|
sprite->data[1] = sprite->pos1.x;
|
||||||
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||||
|
sprite->data[3] = sprite->pos1.y;
|
||||||
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||||
|
sprite->data[5] = 0;
|
||||||
|
InitAnimLinearTranslation(sprite);
|
||||||
|
sprite->callback = AnimMoveAccupressureTransition;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveWringOutCircle(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
sprite->pos2.x = Cos(sprite->data[3], sprite->data[2]);
|
||||||
|
sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
|
||||||
|
if(sprite->data[1] > 0)
|
||||||
|
{
|
||||||
|
if(sprite->data[3] + sprite->data[0] >= 256)
|
||||||
|
{
|
||||||
|
sprite->data[3] = (sprite->data[0] + sprite->data[3]) % 256;
|
||||||
|
sprite->data[1]--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprite->data[3] += sprite->data[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(sprite->data[3] < 64)
|
||||||
|
{
|
||||||
|
//We need to go for an extra 90°
|
||||||
|
sprite->data[3] += sprite->data[0];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DestroyAnimSprite(sprite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnimMoveWringOut(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||||
|
if(gBattleAnimArgs[5] == TRUE)
|
||||||
|
{
|
||||||
|
sprite->oam.objMode = ST_OAM_OBJ_BLEND;
|
||||||
|
}
|
||||||
|
sprite->data[0] = 256 / gBattleAnimArgs[2]; //step size
|
||||||
|
sprite->data[1] = gBattleAnimArgs[3]; //Number of circle spins
|
||||||
|
sprite->data[2] = gBattleAnimArgs[4]; //radius
|
||||||
|
sprite->data[3] = 64; //current angle 90°
|
||||||
|
sprite->callback = AnimMoveWringOutCircle;
|
||||||
|
}
|
||||||
|
|
||||||
// seed (sprouts a sapling from a seed.)
|
// seed (sprouts a sapling from a seed.)
|
||||||
// Used by Leech Seed.
|
// Used by Leech Seed.
|
||||||
// arg 0: initial x pixel offset
|
// arg 0: initial x pixel offset
|
||||||
|
@ -48,6 +48,7 @@ const u32 gBattleAnimSpriteGfx_AirWave[] = INCBIN_U32("graphics/battle_anims/spr
|
|||||||
const u32 gBattleAnimSpriteGfx_Orb[] = INCBIN_U32("graphics/battle_anims/sprites/orb.4bpp.lz");
|
const u32 gBattleAnimSpriteGfx_Orb[] = INCBIN_U32("graphics/battle_anims/sprites/orb.4bpp.lz");
|
||||||
const u32 gBattleAnimSpriteGfx_Sword[] = INCBIN_U32("graphics/battle_anims/sprites/sword.4bpp.lz");
|
const u32 gBattleAnimSpriteGfx_Sword[] = INCBIN_U32("graphics/battle_anims/sprites/sword.4bpp.lz");
|
||||||
const u32 gBattleAnimSpriteGfx_Seed[] = INCBIN_U32("graphics/battle_anims/sprites/seed.4bpp.lz");
|
const u32 gBattleAnimSpriteGfx_Seed[] = INCBIN_U32("graphics/battle_anims/sprites/seed.4bpp.lz");
|
||||||
|
const u32 gBattleAnimSpriteGfx_SeedBrown[] = INCBIN_U32("graphics/battle_anims/sprites/seed_new.4bpp.lz");
|
||||||
|
|
||||||
const u32 gBattleAnimSpritePal_RainDrops[] = INCBIN_U32("graphics/battle_anims/sprites/rain_drops.gbapal.lz");
|
const u32 gBattleAnimSpritePal_RainDrops[] = INCBIN_U32("graphics/battle_anims/sprites/rain_drops.gbapal.lz");
|
||||||
const u32 gBattleAnimSpritePal_Bone[] = INCBIN_U32("graphics/battle_anims/sprites/bone.gbapal.lz");
|
const u32 gBattleAnimSpritePal_Bone[] = INCBIN_U32("graphics/battle_anims/sprites/bone.gbapal.lz");
|
||||||
@ -55,6 +56,7 @@ const u32 gBattleAnimSpritePal_AirWave[] = INCBIN_U32("graphics/battle_anims/spr
|
|||||||
const u32 gBattleAnimSpritePal_Orb[] = INCBIN_U32("graphics/battle_anims/sprites/orb.gbapal.lz");
|
const u32 gBattleAnimSpritePal_Orb[] = INCBIN_U32("graphics/battle_anims/sprites/orb.gbapal.lz");
|
||||||
const u32 gBattleAnimSpritePal_Sword[] = INCBIN_U32("graphics/battle_anims/sprites/sword.gbapal.lz");
|
const u32 gBattleAnimSpritePal_Sword[] = INCBIN_U32("graphics/battle_anims/sprites/sword.gbapal.lz");
|
||||||
const u32 gBattleAnimSpritePal_Seed[] = INCBIN_U32("graphics/battle_anims/sprites/seed.gbapal.lz");
|
const u32 gBattleAnimSpritePal_Seed[] = INCBIN_U32("graphics/battle_anims/sprites/seed.gbapal.lz");
|
||||||
|
const u32 gBattleAnimSpritePal_SeedBrown[] = INCBIN_U32("graphics/battle_anims/sprites/seed_new.gbapal.lz");
|
||||||
|
|
||||||
const u32 gBattleAnimSpriteGfx_Needle[] = INCBIN_U32("graphics/battle_anims/sprites/needle.4bpp.lz");
|
const u32 gBattleAnimSpriteGfx_Needle[] = INCBIN_U32("graphics/battle_anims/sprites/needle.4bpp.lz");
|
||||||
const u32 gBattleAnimSpritePal_Needle[] = INCBIN_U32("graphics/battle_anims/sprites/needle.gbapal.lz");
|
const u32 gBattleAnimSpritePal_Needle[] = INCBIN_U32("graphics/battle_anims/sprites/needle.gbapal.lz");
|
||||||
@ -114,6 +116,21 @@ const u32 gBattleAnimSpritePal_Hit2[] = INCBIN_U32("graphics/battle_anims/sprite
|
|||||||
const u32 gBattleAnimSpritePal_WavingHand[] = INCBIN_U32("graphics/battle_anims/sprites/waving_hand.gbapal.lz");
|
const u32 gBattleAnimSpritePal_WavingHand[] = INCBIN_U32("graphics/battle_anims/sprites/waving_hand.gbapal.lz");
|
||||||
const u32 gBattleAnimSpriteGfx_WavingHand[] = INCBIN_U32("graphics/battle_anims/sprites/waving_hand.4bpp.lz");
|
const u32 gBattleAnimSpriteGfx_WavingHand[] = INCBIN_U32("graphics/battle_anims/sprites/waving_hand.4bpp.lz");
|
||||||
|
|
||||||
|
const u32 gBattleAnimSpriteGfx_Feint[] = INCBIN_U32("graphics/battle_anims/sprites/feint_punch.4bpp.lz");
|
||||||
|
const u32 gBattleAnimSpritePal_Feint[] = INCBIN_U32("graphics/battle_anims/sprites/feint_punch.gbapal.lz");
|
||||||
|
|
||||||
|
const u32 gBattleAnimSpriteGfx_TrumpCard[] = INCBIN_U32("graphics/battle_anims/sprites/trump_cards.4bpp.lz");
|
||||||
|
const u32 gBattleAnimSpritePal_TrumpCard[] = INCBIN_U32("graphics/battle_anims/sprites/trump_cards.gbapal.lz");
|
||||||
|
|
||||||
|
const u32 gBattleAnimSpriteGfx_TrumpCardParticles[] = INCBIN_U32("graphics/battle_anims/sprites/trump_card_particles.4bpp.lz");
|
||||||
|
const u32 gBattleAnimSpritePal_TrumpCardParticles[] = INCBIN_U32("graphics/battle_anims/sprites/trump_card_particles.gbapal.lz");
|
||||||
|
|
||||||
|
const u32 gBattleAnimSpriteGfx_Accupressure[] = INCBIN_U32("graphics/battle_anims/sprites/accupressure.4bpp.lz");
|
||||||
|
const u32 gBattleAnimSpritePal_Accupressure[] = INCBIN_U32("graphics/battle_anims/sprites/accupressure.gbapal.lz");
|
||||||
|
|
||||||
|
const u32 gBattleAnimSpriteGfx_WringOut[] = INCBIN_U32("graphics/battle_anims/sprites/wring_out.4bpp.lz");
|
||||||
|
const u32 gBattleAnimSpritePal_WringOut[] = INCBIN_U32("graphics/battle_anims/sprites/wring_out.gbapal.lz");
|
||||||
|
|
||||||
const u32 gBattleAnimSpriteGfx_ClosingEye[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye.4bpp.lz");
|
const u32 gBattleAnimSpriteGfx_ClosingEye[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye.4bpp.lz");
|
||||||
const u32 gBattleAnimSpritePal_ClosingEye[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye.gbapal.lz");
|
const u32 gBattleAnimSpritePal_ClosingEye[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye.gbapal.lz");
|
||||||
|
|
||||||
@ -149,6 +166,15 @@ const u32 gBattleAnimSpriteGfx_Lightning2[] = INCBIN_U32("graphics/battle_anims/
|
|||||||
|
|
||||||
const u32 gBattleAnimSpriteGfx_Lightning[] = INCBIN_U32("graphics/battle_anims/sprites/lightning.4bpp.lz");
|
const u32 gBattleAnimSpriteGfx_Lightning[] = INCBIN_U32("graphics/battle_anims/sprites/lightning.4bpp.lz");
|
||||||
|
|
||||||
|
const u32 gBattleAnimSpriteGfx_ColoredOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/colored_orbs.4bpp.lz");
|
||||||
|
const u32 gBattleAnimSpritePal_ColoredOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/colored_orbs.gbapal.lz");
|
||||||
|
|
||||||
|
const u32 gBattleAnimSpriteGfx_WorrySeed[] = INCBIN_U32("graphics/battle_anims/sprites/worry_seed.4bpp.lz");
|
||||||
|
const u32 gBattleAnimSpritePal_WorrySeed[] = INCBIN_U32("graphics/battle_anims/sprites/worry_seed.gbapal.lz");
|
||||||
|
|
||||||
|
const u32 gBattleAnimSpriteGfx_SmallCloud[] = INCBIN_U32("graphics/battle_anims/sprites/small_cloud.4bpp.lz");
|
||||||
|
const u32 gBattleAnimSpritePal_SmallCloud[] = INCBIN_U32("graphics/battle_anims/sprites/small_cloud.gbapal.lz");
|
||||||
|
|
||||||
const u32 gUnknownGfx_C06D98[] = INCBIN_U32("graphics/unknown/unknown_C06D98.4bpp.lz");
|
const u32 gUnknownGfx_C06D98[] = INCBIN_U32("graphics/unknown/unknown_C06D98.4bpp.lz");
|
||||||
const u32 gUnknownPal_C06D98[] = INCBIN_U32("graphics/unknown/unknown_C06D98.gbapal.lz");
|
const u32 gUnknownPal_C06D98[] = INCBIN_U32("graphics/unknown/unknown_C06D98.gbapal.lz");
|
||||||
const u32 gUnknownPal_C06D98_2[] = INCBIN_U32("graphics/unknown/unknown_C06D98_2.gbapal.lz");
|
const u32 gUnknownPal_C06D98_2[] = INCBIN_U32("graphics/unknown/unknown_C06D98_2.gbapal.lz");
|
||||||
|
91
src/normal.c
@ -35,6 +35,7 @@ static void sub_81161F4(void);
|
|||||||
static void sub_81162F8(u8);
|
static void sub_81162F8(u8);
|
||||||
static void sub_81163D0(struct Sprite *);
|
static void sub_81163D0(struct Sprite *);
|
||||||
static void sub_81165E4(struct Sprite *);
|
static void sub_81165E4(struct Sprite *);
|
||||||
|
static void AnimMovePowerSwapGuardSwap(struct Sprite *);
|
||||||
|
|
||||||
const union AnimCmd gUnknown_0859722C[] =
|
const union AnimCmd gUnknown_0859722C[] =
|
||||||
{
|
{
|
||||||
@ -93,6 +94,63 @@ const struct SpriteTemplate gComplexPaletteBlendSpriteTemplate =
|
|||||||
.callback = sub_81158A4,
|
.callback = sub_81158A4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sPowerSwapGuardSwapFrame0[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(0, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sPowerSwapGuardSwapFrame1[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(4, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sPowerSwapGuardSwapFrame2[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(8, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sPowerSwapGuardSwapFrame3[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(12, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sPowerSwapGuardSwapFrame4[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(16, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sPowerSwapGuardSwapFrame5[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(20, 0),
|
||||||
|
ANIMCMD_END
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd * const sPowerSwapGuardSwapAnimTable[] =
|
||||||
|
{
|
||||||
|
sPowerSwapGuardSwapFrame0,
|
||||||
|
sPowerSwapGuardSwapFrame1,
|
||||||
|
sPowerSwapGuardSwapFrame2,
|
||||||
|
sPowerSwapGuardSwapFrame3,
|
||||||
|
sPowerSwapGuardSwapFrame4,
|
||||||
|
sPowerSwapGuardSwapFrame5
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gPowerSwapGuardSwapSpriteTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_COLORED_ORBS,
|
||||||
|
.paletteTag = ANIM_TAG_COLORED_ORBS,
|
||||||
|
.oam = &gUnknown_0852490C,
|
||||||
|
.anims = sPowerSwapGuardSwapAnimTable,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
|
.callback = AnimMovePowerSwapGuardSwap
|
||||||
|
};
|
||||||
|
|
||||||
const union AnimCmd gUnknown_085972A4[] =
|
const union AnimCmd gUnknown_085972A4[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(0, 3),
|
ANIMCMD_FRAME(0, 3),
|
||||||
@ -253,6 +311,39 @@ const struct SpriteTemplate gUnknown_08597400 =
|
|||||||
.callback = sub_81163D0,
|
.callback = sub_81163D0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void AnimMovePowerSwapGuardSwapWait(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
if (TranslateAnimHorizontalArc(sprite))
|
||||||
|
DestroyAnimSprite(sprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
// arg 0: initial x pixel offset
|
||||||
|
// arg 1: initial y pixel offset
|
||||||
|
// arg 2: orb type (0..5) - color and size
|
||||||
|
// arg 3: from user to target / target to user
|
||||||
|
// arg 4: wave period
|
||||||
|
// arg 5: wave amplitude
|
||||||
|
static void AnimMovePowerSwapGuardSwap(struct Sprite* sprite)
|
||||||
|
{
|
||||||
|
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||||
|
if(gBattleAnimArgs[3] == 0)
|
||||||
|
{
|
||||||
|
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||||
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||||
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||||
|
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||||
|
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
|
||||||
|
}
|
||||||
|
sprite->data[0] = gBattleAnimArgs[4];
|
||||||
|
sprite->data[5] = gBattleAnimArgs[5];
|
||||||
|
InitAnimArcTranslation(sprite);
|
||||||
|
sprite->callback = AnimMovePowerSwapGuardSwapWait;
|
||||||
|
}
|
||||||
|
|
||||||
// Moves a spinning duck around the mon's head.
|
// Moves a spinning duck around the mon's head.
|
||||||
// arg 0: initial x pixel offset
|
// arg 0: initial x pixel offset
|
||||||
// arg 1: initial y pixel offset
|
// arg 1: initial y pixel offset
|
||||||
|