finish z move anims

This commit is contained in:
Evan 2020-11-29 09:22:31 -05:00
parent f114534ae3
commit 752aca7698
18 changed files with 8240 additions and 126 deletions

View File

@ -288,43 +288,57 @@
createvisualtask AnimTask_IsDoubleBattle, 0
jumprettrue \ptr
.endm
@ keep CFRU macros cause I'm lazy. todo: update to createsprite and createvisualtask, respectively
.macro launchtemplate launchtemplatePtr launchtemplatePriority launchtemplateArgsNo launchtemplatearg0 launchtemplatearg1 launchtemplatearg2 launchtemplatearg3 launchtemplatearg4 launchtemplatearg5 launchtemplatearg6 launchtemplatearg7 launchtemplatearg8
.byte 0x2
.word \launchtemplatePtr
.byte \launchtemplatePriority
.byte \launchtemplateArgsNo
.hword \launchtemplatearg0
.hword \launchtemplatearg1
.hword \launchtemplatearg2
.hword \launchtemplatearg3
.hword \launchtemplatearg4
.hword \launchtemplatearg5
.hword \launchtemplatearg6
.hword \launchtemplatearg7
.hword \launchtemplatearg8
.endm
.byte 0x2
.word \launchtemplatePtr
.byte \launchtemplatePriority
.byte \launchtemplateArgsNo
.hword \launchtemplatearg0
.hword \launchtemplatearg1
.hword \launchtemplatearg2
.hword \launchtemplatearg3
.hword \launchtemplatearg4
.hword \launchtemplatearg5
.hword \launchtemplatearg6
.hword \launchtemplatearg7
.hword \launchtemplatearg8
.endm
.macro launchtask launchtaskPtr launchtaskPriority launchtaskArgsNo launchtaskarg0 launchtaskarg1 launchtaskarg2 launchtaskarg3 launchtaskarg4 launchtaskarg5 launchtaskarg6 launchtaskarg7 launchtaskarg8
.byte 0x3
.word \launchtaskPtr
.byte \launchtaskPriority
.byte \launchtaskArgsNo
.hword \launchtaskarg0
.hword \launchtaskarg1
.hword \launchtaskarg2
.hword \launchtaskarg3
.hword \launchtaskarg4
.hword \launchtaskarg5
.hword \launchtaskarg6
.hword \launchtaskarg7
.hword \launchtaskarg8
.endm
.byte 0x3
.word \launchtaskPtr
.byte \launchtaskPriority
.byte \launchtaskArgsNo
.hword \launchtaskarg0
.hword \launchtaskarg1
.hword \launchtaskarg2
.hword \launchtaskarg3
.hword \launchtaskarg4
.hword \launchtaskarg5
.hword \launchtaskarg6
.hword \launchtaskarg7
.hword \launchtaskarg8
.endm
.macro setblends setblends_value
.byte 0xC
.hword \setblends_value
.endm
.byte 0xC
.hword \setblends_value
.endm
.macro launchsoundtask launchsoundtaskPtr launchsoundtaskArgsNo launchsoundtaskarg0 launchsoundtaskarg1 launchsoundtaskarg2 launchsoundtaskarg3 launchsoundtaskarg4 launchsoundtaskarg5 launchsoundtaskarg6 launchsoundtaskarg7 launchsoundtaskarg8
.byte 0x1F
.word \launchsoundtaskPtr
.byte \launchsoundtaskArgsNo
.hword \launchsoundtaskarg0
.hword \launchsoundtaskarg1
.hword \launchsoundtaskarg2
.hword \launchsoundtaskarg3
.hword \launchsoundtaskarg4
.hword \launchsoundtaskarg5
.hword \launchsoundtaskarg6
.hword \launchsoundtaskarg7
.hword \launchsoundtaskarg8
.endm

File diff suppressed because it is too large Load Diff

View File

@ -50,7 +50,10 @@ InsideOfTruck_EventScript_SetIntroFlagsFemale:: @ 823BF46
end
InsideOfTruck_EventScript_MovingBox:: @ 823BF6C
msgbox InsideOfTruck_Text_BoxPrintedWithMonLogo, MSGBOX_SIGN
givemon SPECIES_SNEASEL, 70, ITEM_DARKINIUM_Z
setwildbattle SPECIES_WALREIN, 53, 0
dowildbattle
@msgbox InsideOfTruck_Text_BoxPrintedWithMonLogo, MSGBOX_SIGN
end
InsideOfTruck_Text_BoxPrintedWithMonLogo: @ 823BF75

View File

@ -213,6 +213,7 @@ void AnimTask_HorizontalShake(u8 taskId);
void AnimMudSportDirt(struct Sprite *sprite);
void AnimDirtScatter(struct Sprite *sprite);
void AnimMudSportDirtRising(struct Sprite *sprite);
void AnimDirtPlumeParticle(struct Sprite *);
extern const union AffineAnimCmd *const gAffineAnims_SpinningBone[];
// battle_anim_throw.c
@ -274,6 +275,7 @@ extern const union AnimCmd *const gScratchAnimTable[];
extern const union AnimCmd *const gIngrainRootAnimTable[];
extern const union AffineAnimCmd *const gSwiftStarAffineAnimTable[];
extern const union AnimCmd *const gMetronomeThroughtBubbleAnimTable[];
extern const union AffineAnimCmd *const gStockpileAbsorptionOrbAffineAnimTable[];
// battle_anim_effects_2.c
void AnimUproarRing(struct Sprite *sprite);
@ -282,6 +284,7 @@ void AnimOrbitFast(struct Sprite *sprite);
void AnimOrbitScatter(struct Sprite *sprite);
void AnimAngerMark(struct Sprite *sprite);
void AnimHyperVoiceRing(struct Sprite *sprite);
void AnimMagentaHeart(struct Sprite *);
extern const union AffineAnimCmd *const gThinRingShrinkingAffineAnimTable[];
extern const union AffineAnimCmd *const gThinRingExpandingAffineAnimTable[];
extern const union AnimCmd *const gExplosionAnimTable[];
@ -297,8 +300,13 @@ void AnimBlackSmoke(struct Sprite *sprite);
void AnimSweetScentPetal(struct Sprite *sprite);
void AnimTealAlert(struct Sprite *sprite);
void AnimBlockX(struct Sprite *sprite);
void AnimFlatterSpotlight_Step(struct Sprite *);
void AnimAssistPawprint(struct Sprite *);
void AnimReversalOrb(struct Sprite *);
void AnimFlatterSpotlight_Step(struct Sprite *sprite);
extern const union AnimCmd *const gOpeningEyeAnimTable[];
extern const union AnimCmd *const gEclipsingOrbAnimTable[];
extern const union AffineAnimCmd *const gSpotlightAffineAnimTable[];
// battle_anim_water.c
void AnimWaterPulseRing(struct Sprite *sprite);
@ -316,16 +324,21 @@ void AnimFlyBallUp(struct Sprite *sprite);
void AnimFlyBallAttack(struct Sprite *sprite);
void AnimFlyBallAttack_Step(struct Sprite *sprite);
void AnimFlyBallUp_Step(struct Sprite *sprite);
void AnimBounceBallLand(struct Sprite *);
void AnimEllipticalGust(struct Sprite *);
extern const union AnimCmd *const gAffineAnims_AirWaveCrescent[];
extern const union AffineAnimCmd *const gAffineAnims_FlyBallUp[];
extern const union AffineAnimCmd *const gAffineAnims_FlyBallAttack[];
extern const union AffineAnimCmd *const gAffineAnims_BounceBallLand[];
// battle_anim_poison.c
void AnimSludgeBombHitParticle(struct Sprite *);
void AnimAcidPoisonBubble_Step(struct Sprite *sprite);
void AnimBubbleEffect(struct Sprite *);
extern const union AffineAnimCmd *const gAffineAnims_PoisonProjectile[];
extern const union AnimCmd *const gAnims_PoisonProjectile[];
extern const union AnimCmd *const gAnims_AcidPoisonDroplet[];
extern const union AffineAnimCmd *const gAffineAnims_Bubble[];
// battle_anim_ghost.c
void AnimGhostStatusSprite(struct Sprite *sprite);
@ -421,6 +434,7 @@ void AnimSparkElectricity(struct Sprite *sprite);
void AnimElectricPuff(struct Sprite *sprite);
void AnimSparkElectricityFlashing(struct Sprite *sprite);
void AnimGrowingShockWaveOrb(struct Sprite *sprite);
void AnimElectricity(struct Sprite *);
extern const union AffineAnimCmd *const gAffineAnims_GrowingElectricOrb[];
extern const union AffineAnimCmd *const gAffineAnims_FlashingSpark[];
extern const union AnimCmd *const gAnims_ThunderboltOrb[];
@ -436,6 +450,7 @@ void AnimBasicFistOrFoot(struct Sprite *sprite);
void AnimSpinningKickOrPunchFinish(struct Sprite *sprite);
void AnimRevengeScratch(struct Sprite *sprite);
void AnimDizzyPunchDuck(struct Sprite *sprite);
void AnimSuperpowerFireball(struct Sprite *);
extern const union AnimCmd *const gAnims_HandOrFoot[];
extern const union AffineAnimCmd *const gAffineAnims_MegaPunchKick[];
extern const union AffineAnimCmd *const gAffineAnims_SpinningHandOrFoot[];
@ -444,6 +459,7 @@ extern const union AnimCmd *const gAnims_RevengeBigScratch[];
// battle_anim_rock.c
extern const union AffineAnimCmd *const gAffineAnims_Whirlpool[];
extern const union AffineAnimCmd *const gAffineAnims_BasicRock[];
extern const union AnimCmd *const gAnims_FlyingRock[];
void AnimParticleInVortex(struct Sprite *sprite);
void AnimFallingRock(struct Sprite *sprite);
void AnimRaiseSprite(struct Sprite *sprite);
@ -478,8 +494,12 @@ extern const union AnimCmd *const gAnims_BlizzardIceCrystal[];
void AnimFireSpread(struct Sprite *sprite);
void AnimFireSpiralOutward(struct Sprite *sprite);
void AnimWillOWispOrb(struct Sprite *);
void AnimEruptionFallingRock(struct Sprite *);
void AnimFireCross(struct Sprite *);
void AnimFirePlume(struct Sprite *);
extern const union AnimCmd *const gAnims_FireBlastCross[];
extern const union AnimCmd *const gAnims_WillOWispOrb[];
extern const union AnimCmd *const gAnims_FirePlume[];
// battle_anim_dragon.c
extern const union AnimCmd *const gAnims_DragonBreathFire[];

View File

@ -614,6 +614,12 @@
#define ANIM_RIGHT_FIST 0
#define ANIM_LEFT_FIST 2
// fist/chop frames
#define ANIM_FIST_1 0
#define ANIM_FOOT_1 1
#define ANIM_FOOT_2 2
#define ANIM_CHOP 3
// surf wave palettes
#define ANIM_SURF_PAL_SURF 0
#define ANIM_SURF_PAL_MUDDY_WATER 1

View File

@ -58,7 +58,6 @@ static void AnimSoftBoiledEgg_Step4(struct Sprite *);
static void AnimSoftBoiledEgg_Step4_Callback(struct Sprite *);
static void AnimSpeedDust(struct Sprite *);
static void AnimHealBellMusicNote(struct Sprite *);
static void AnimMagentaHeart(struct Sprite *);
static void AnimRedHeartProjectile(struct Sprite *);
static void AnimRedHeartProjectile_Step(struct Sprite *);
static void AnimRedHeartRising(struct Sprite *);
@ -3091,7 +3090,7 @@ static void AnimHealBellMusicNote(struct Sprite *sprite)
SetMusicNotePalette(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]);
}
static void AnimMagentaHeart(struct Sprite *sprite)
void AnimMagentaHeart(struct Sprite *sprite)
{
if (++sprite->data[0] == 1)
InitSpritePosToAnimAttacker(sprite, FALSE);

View File

@ -65,8 +65,6 @@ static void AnimPainSplitProjectile(struct Sprite *);
static void AnimFlatterConfetti(struct Sprite *);
static void AnimFlatterConfetti_Step(struct Sprite *);
static void AnimFlatterSpotlight(struct Sprite *);
static void AnimFlatterSpotlight_Step(struct Sprite *);
static void AnimReversalOrb(struct Sprite *);
static void AnimReversalOrb_Step(struct Sprite *);
static void AnimYawnCloud(struct Sprite *);
static void AnimYawnCloud_Step(struct Sprite *);
@ -75,7 +73,6 @@ static void AnimFacadeSweatDrop(struct Sprite *);
static void AnimRoarNoiseLine(struct Sprite *);
static void AnimRoarNoiseLine_Step(struct Sprite *);
static void AnimGlareEyeDot(struct Sprite *);
static void AnimAssistPawprint(struct Sprite *);
static void AnimSmellingSaltsHand(struct Sprite *);
static void AnimSmellingSaltsHand_Step(struct Sprite *);
static void AnimSmellingSaltExclamation(struct Sprite *);
@ -3144,7 +3141,7 @@ static void AnimFlatterSpotlight(struct Sprite *sprite)
sprite->callback = AnimFlatterSpotlight_Step;
}
static void AnimFlatterSpotlight_Step(struct Sprite *sprite)
void AnimFlatterSpotlight_Step(struct Sprite *sprite)
{
switch (sprite->data[1])
{
@ -3178,7 +3175,7 @@ static void AnimFlatterSpotlight_Step(struct Sprite *sprite)
// Spins an orb around the attacking mon, while its path radius grows and shrinks.
// arg 0: duration
// arg 1: initial wave offset
static void AnimReversalOrb(struct Sprite *sprite)
void AnimReversalOrb(struct Sprite *sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@ -4106,7 +4103,7 @@ static void AnimGlareEyeDot(struct Sprite *sprite)
// arg 2: destination x position
// arg 3: destination y position
// arg 4: duration
static void AnimAssistPawprint(struct Sprite *sprite)
void AnimAssistPawprint(struct Sprite *sprite)
{
sprite->pos1.x = gBattleAnimArgs[0];
sprite->pos1.y = gBattleAnimArgs[1];

View File

@ -15,7 +15,6 @@ static void AnimZapCannonSpark_Step(struct Sprite *);
static void AnimThunderboltOrb(struct Sprite *);
static void AnimThunderboltOrb_Step(struct Sprite *);
static void AnimSparkElectricityFlashing_Step(struct Sprite *);
static void AnimElectricity(struct Sprite *);
static void AnimTask_ElectricBolt_Step(u8 taskId);
static void AnimElectricBoltSegment(struct Sprite *);
static void AnimThunderWave_Step(struct Sprite *);
@ -758,7 +757,7 @@ static void AnimSparkElectricityFlashing_Step(struct Sprite *sprite)
}
// Electricity arcs around the target. Used for Paralysis and various electric move hits
static void AnimElectricity(struct Sprite *sprite)
void AnimElectricity(struct Sprite *sprite)
{
if (!InitSpritePosToAnimBattler(gBattleAnimArgs[4], sprite, FALSE))
return;

View File

@ -24,7 +24,6 @@ static void AnimSuperpowerOrb_Step(struct Sprite *);
static void AnimSuperpowerRock(struct Sprite *);
static void AnimSuperpowerRock_Step1(struct Sprite *);
static void AnimSuperpowerRock_Step2(struct Sprite *);
static void AnimSuperpowerFireball(struct Sprite *);
static void AnimArmThrustHit(struct Sprite *);
static void AnimArmThrustHit_Step(struct Sprite *sprite);
static void AnimFocusPunchFist(struct Sprite *);
@ -974,7 +973,7 @@ static void AnimSuperpowerRock_Step2(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
static void AnimSuperpowerFireball(struct Sprite *sprite)
void AnimSuperpowerFireball(struct Sprite *sprite)
{
u8 battler;

View File

@ -8,7 +8,6 @@
#include "trig.h"
static void AnimFireSpiralInward(struct Sprite *);
static void AnimFirePlume(struct Sprite *);
static void AnimLargeFlame(struct Sprite *);
static void sub_8109028(struct Sprite *);
static void sub_8109064(struct Sprite *);
@ -21,7 +20,6 @@ static void AnimFireRing_Step1(struct Sprite *);
static void AnimFireRing_Step2(struct Sprite *);
static void AnimFireRing_Step3(struct Sprite *);
static void UpdateFireRingCircleOffset(struct Sprite *);
static void AnimFireCross(struct Sprite *);
static void AnimFireSpiralOutward_Step1(struct Sprite *);
static void AnimFireSpiralOutward_Step2(struct Sprite *);
static void AnimTask_EruptionLaunchRocks_Step(u8 taskId);
@ -30,7 +28,6 @@ static void AnimEruptionLaunchRock(struct Sprite *);
static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId);
static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y);
static void UpdateEruptionLaunchRockPos(struct Sprite *);
static void AnimEruptionFallingRock(struct Sprite *);
static void AnimEruptionFallingRock_Step(struct Sprite *);
static void AnimWillOWispOrb_Step(struct Sprite *);
static void AnimWillOWispFire(struct Sprite *);
@ -110,7 +107,7 @@ static const union AnimCmd sAnim_FirePlume[] =
ANIMCMD_JUMP(0),
};
static const union AnimCmd *const sAnims_FirePlume[] =
const union AnimCmd *const gAnims_FirePlume[] =
{
sAnim_FirePlume,
};
@ -154,7 +151,7 @@ const struct SpriteTemplate gFirePlumeSpriteTemplate =
.tileTag = ANIM_TAG_FIRE_PLUME,
.paletteTag = ANIM_TAG_FIRE_PLUME,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = sAnims_FirePlume,
.anims = gAnims_FirePlume,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimFirePlume,
@ -166,7 +163,7 @@ const struct SpriteTemplate gUnknown_08595440 =
.tileTag = ANIM_TAG_SMALL_EMBER,
.paletteTag = ANIM_TAG_SMALL_EMBER,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = sAnims_FirePlume,
.anims = gAnims_FirePlume,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimFirePlume,
@ -501,7 +498,7 @@ const struct SpriteTemplate gLavaPlumeSpriteTemplate =
.tileTag = ANIM_TAG_FIRE_PLUME,
.paletteTag = ANIM_TAG_FIRE_PLUME,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = sAnims_FirePlume,
.anims = gAnims_FirePlume,
.images = NULL,
.affineAnims = gLavaPlumeAffineAnims,
.callback = AnimLavaPlumeOrbitScatter,
@ -575,7 +572,7 @@ void AnimFireSpread(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
static void AnimFirePlume(struct Sprite *sprite)
void AnimFirePlume(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
@ -807,7 +804,7 @@ static void UpdateFireRingCircleOffset(struct Sprite *sprite)
// arg 3: x delta
// arg 4: y delta
// AnimFireCross(struct Sprite *sprite)
static void AnimFireCross(struct Sprite *sprite)
void AnimFireCross(struct Sprite *sprite)
{
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@ -1084,7 +1081,7 @@ static void UpdateEruptionLaunchRockPos(struct Sprite *sprite)
sprite->invisible = TRUE;
}
static void AnimEruptionFallingRock(struct Sprite *sprite)
void AnimEruptionFallingRock(struct Sprite *sprite)
{
sprite->pos1.x = gBattleAnimArgs[0];
sprite->pos1.y = gBattleAnimArgs[1];

View File

@ -8,7 +8,6 @@
extern const struct SpriteTemplate gFlashingHitSplatSpriteTemplate;
static void AnimEllipticalGust(struct Sprite *);
static void AnimEllipticalGust_Step(struct Sprite *);
static void AnimGustToTarget(struct Sprite *);
static void AnimGustToTarget_Step(struct Sprite *);
@ -18,7 +17,6 @@ static void sub_810EB40(struct Sprite *);
static void sub_810EA4C(struct Sprite *);
static void AnimWhirlwindLine(struct Sprite *);
static void AnimBounceBallShrink(struct Sprite *);
static void AnimBounceBallLand(struct Sprite *);
static void AnimDiveBall(struct Sprite *);
static void AnimDiveBall_Step1(struct Sprite *);
static void AnimDiveBall_Step2(struct Sprite *);
@ -243,7 +241,7 @@ static const union AffineAnimCmd sAffineAnim_BounceBallLand[] =
AFFINEANIMCMD_END,
};
static const union AffineAnimCmd *const sAffineAnims_BounceBallLand[] =
const union AffineAnimCmd *const gAffineAnims_BounceBallLand[] =
{
sAffineAnim_BounceBallLand,
};
@ -255,7 +253,7 @@ const struct SpriteTemplate gBounceBallLandSpriteTemplate =
.oam = &gOamData_AffineDouble_ObjNormal_64x64,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = sAffineAnims_BounceBallLand,
.affineAnims = gAffineAnims_BounceBallLand,
.callback = AnimBounceBallLand,
};
@ -343,7 +341,7 @@ const struct SpriteTemplate gSkyAttackBirdSpriteTemplate =
};
static void AnimEllipticalGust(struct Sprite *sprite)
void AnimEllipticalGust(struct Sprite *sprite)
{
InitSpritePosToAnimTarget(sprite, FALSE);
sprite->pos1.y += 20;
@ -977,7 +975,7 @@ static void AnimBounceBallShrink(struct Sprite *sprite)
}
}
static void AnimBounceBallLand(struct Sprite *sprite)
void AnimBounceBallLand(struct Sprite *sprite)
{
switch (sprite->data[0])
{

View File

@ -1400,3 +1400,68 @@ static void sub_8112FB8(struct Sprite *sprite)
sprite->callback = DestroySpriteAndMatrix;
}
}
//pulverizing pancake - destiny bond shadow from attacker to target
void AnimTask_PulverizingPancakeWhiteShadow(u8 taskId)
{
struct Task *task;
s16 battler;
u8 spriteId;
s16 baseX, baseY;
s16 x, y;
task = &gTasks[taskId];
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
task->data[5] = 0;
task->data[6] = 0;
task->data[7] = 0;
task->data[8] = 0;
task->data[9] = 16;
task->data[10] = gBattleAnimArgs[0];
baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM);
if (!IsContest())
{
spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55);
if (spriteId != MAX_SPRITES)
{
x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
y = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_BOTTOM);
gSprites[spriteId].data[0] = baseX << 4;
gSprites[spriteId].data[1] = baseY << 4;
gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1];
gSprites[spriteId].data[3] = ((y - baseY) << 4) / gBattleAnimArgs[1];
gSprites[spriteId].data[4] = gBattleAnimArgs[1];
gSprites[spriteId].data[5] = x;
gSprites[spriteId].data[6] = y;
gSprites[spriteId].callback = AnimDestinyBondWhiteShadow_Step;
task->data[task->data[12] + 13] = spriteId;
task->data[12]++;
}
}
else
{
spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55);
if (spriteId != MAX_SPRITES)
{
x = 48;
y = 40;
gSprites[spriteId].data[0] = baseX << 4;
gSprites[spriteId].data[1] = baseY << 4;
gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1];
gSprites[spriteId].data[3] = ((y - baseY) << 4) / gBattleAnimArgs[1];
gSprites[spriteId].data[4] = gBattleAnimArgs[1];
gSprites[spriteId].data[5] = x;
gSprites[spriteId].data[6] = y;
gSprites[spriteId].callback = AnimDestinyBondWhiteShadow_Step;
task->data[13] = spriteId;
task->data[12] = 1;
}
}
task->func = AnimTask_DestinyBondWhiteShadow_Step;
}

View File

@ -8,7 +8,6 @@
static void AnimBonemerangProjectile(struct Sprite *);
static void AnimBoneHitProjectile(struct Sprite *);
static void AnimDirtPlumeParticle(struct Sprite *);
static void AnimDirtPlumeParticle_Step(struct Sprite *);
static void AnimDigDirtMound(struct Sprite *);
static void AnimBonemerangProjectile_Step(struct Sprite *);

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,6 @@ static void AnimSludgeProjectile_Step(struct Sprite *);
static void AnimAcidPoisonBubble(struct Sprite *);
static void AnimSludgeBombHitParticle_Step(struct Sprite *);
static void AnimAcidPoisonDroplet(struct Sprite *);
static void AnimBubbleEffect(struct Sprite *);
static void AnimBubbleEffect_Step(struct Sprite *);
static void AnimSuckerPunchStep(struct Sprite *sprite);
static void AnimSuckerPunch(struct Sprite *sprite);
@ -161,7 +160,7 @@ static const union AffineAnimCmd sAffineAnim_Bubble[] =
AFFINEANIMCMD_END,
};
static const union AffineAnimCmd *const sAffineAnims_Bubble[] =
const union AffineAnimCmd *const gAffineAnims_Bubble[] =
{
sAffineAnim_Bubble,
};
@ -173,7 +172,7 @@ const struct SpriteTemplate gPoisonBubbleSpriteTemplate =
.oam = &gOamData_AffineNormal_ObjNormal_16x16,
.anims = gAnims_PoisonProjectile,
.images = NULL,
.affineAnims = sAffineAnims_Bubble,
.affineAnims = gAffineAnims_Bubble,
.callback = AnimBubbleEffect,
};
@ -184,7 +183,7 @@ const struct SpriteTemplate gWaterBubbleSpriteTemplate =
.oam = &gOamData_AffineNormal_ObjBlend_16x16,
.anims = gAnims_WaterBubble,
.images = NULL,
.affineAnims = sAffineAnims_Bubble,
.affineAnims = gAffineAnims_Bubble,
.callback = AnimBubbleEffect,
};
@ -505,7 +504,7 @@ static void AnimAcidPoisonDroplet(struct Sprite *sprite)
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
// arg 2: 0 = single-target, 1 = multi-target
static void AnimBubbleEffect(struct Sprite *sprite)
void AnimBubbleEffect(struct Sprite *sprite)
{
if (!gBattleAnimArgs[2])
{

View File

@ -43,7 +43,7 @@ static const union AnimCmd sAnim_FlyingRock_2[] =
ANIMCMD_END,
};
static const union AnimCmd *const sAnims_FlyingRock[] =
const union AnimCmd *const gAnims_FlyingRock[] =
{
sAnim_FlyingRock_0,
sAnim_FlyingRock_1,
@ -55,7 +55,7 @@ const struct SpriteTemplate gFallingRockSpriteTemplate =
.tileTag = ANIM_TAG_ROCKS,
.paletteTag = ANIM_TAG_ROCKS,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = sAnims_FlyingRock,
.anims = gAnims_FlyingRock,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimFallingRock,
@ -66,7 +66,7 @@ const struct SpriteTemplate gRockFragmentSpriteTemplate =
.tileTag = ANIM_TAG_ROCKS,
.paletteTag = ANIM_TAG_ROCKS,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = sAnims_FlyingRock,
.anims = gAnims_FlyingRock,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimRockFragment,
@ -708,6 +708,54 @@ void AnimTask_Rollout(u8 taskId)
task->func = AnimTask_Rollout_Step;
}
void AnimTask_TectonicRageRollout(u8 taskId)
{
u16 var0, var1, var2, var3;
int var5;
s16 pan1, pan2;
struct Task *task;
u8 rolloutCounter = 1;
task = &gTasks[taskId];
var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 24;
var2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
var3 = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 24;
if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget)
var3 = var1;
task->data[8] = 48 - (rolloutCounter * 8); //rollout speed
task->data[0] = 0;
task->data[11] = 0;
task->data[9] = 0;
task->data[12] = 1;
var5 = task->data[8];
if (var5 < 0)
var5 += 7;
task->data[10] = (var5 >> 3) - 1;
task->data[2] = var0 * 8;
task->data[3] = var1 * 8;
task->data[4] = ((var2 - var0) * 8) / task->data[8];
task->data[5] = ((var3 - var1) * 8) / task->data[8];
task->data[6] = 0;
task->data[7] = 0;
pan1 = BattleAnimAdjustPanning(-64);
pan2 = BattleAnimAdjustPanning(63);
task->data[13] = pan1;
task->data[14] = (pan2 - pan1) / task->data[8];
task->data[1] = rolloutCounter;
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
task->func = AnimTask_Rollout_Step;
}
static void AnimTask_Rollout_Step(u8 taskId)
{
struct Task *task;

View File

@ -380,6 +380,25 @@ static void sub_80A9E78(struct Sprite *sprite)
}
}
void AnimTask_FrozenIceCubeAttacker(u8 taskId)
{
s16 x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - 32;
s16 y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - 36;
u8 spriteId;
if (IsContest())
x -= 6;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
spriteId = CreateSprite(&gFrozenIceCubeSpriteTemplate, x, y, 4);
if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == 0xFFFF)
gSprites[spriteId].invisible = TRUE;
SetSubspriteTables(&gSprites[spriteId], sFrozenIceCubeSubspriteTable);
gTasks[taskId].data[15] = spriteId;
gTasks[taskId].func = AnimTask_FrozenIceCube_Step1;
}
void AnimTask_FrozenIceCube(u8 taskId)
{
s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - 32;

View File

@ -4884,4 +4884,19 @@ const struct Item gItems[] =
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
.secondaryId = 0,
},
//TEST
[ITEM_DARKINIUM_Z] =
{
.name = _("Darkinium Z"),
.itemId = ITEM_DARKINIUM_Z,
.price = 0,
.description = sDummyDesc,
.importance = 1,
.pocket = POCKET_KEY_ITEMS,
.holdEffectParam = TYPE_DARK,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
.holdEffect = HOLD_EFFECT_Z_CRYSTAL,
},
};