Restored lighting & shadows code removed from follower branch.
This commit is contained in:
parent
e1c56d76ac
commit
11c7eee285
11 changed files with 53 additions and 34 deletions
|
@ -6,4 +6,5 @@ gFieldCallback
|
|||
gFieldCallback2
|
||||
gLocalLinkPlayerId
|
||||
gFieldLinkPlayerCount
|
||||
gTimeOfDay
|
||||
currentTimeBlend
|
||||
|
|
|
@ -100,6 +100,7 @@ void UpdateFollowingPokemon(void);
|
|||
void RemoveFollowingPokemon(void);
|
||||
struct ObjectEvent * GetFollowerObject(void);
|
||||
u8 GetDirectionToFace(s16, s16, s16, s16);
|
||||
void UpdateLightSprite(struct Sprite *);
|
||||
void TrySpawnObjectEvents(s16, s16);
|
||||
u8 CreateObjectGraphicsSprite(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority);
|
||||
u8 TrySpawnObjectEvent(u8, u8, u8);
|
||||
|
|
|
@ -183,7 +183,7 @@ struct ObjectEvent
|
|||
u32 inShallowFlowingWater:1;
|
||||
u32 inSandPile:1;
|
||||
u32 inHotSprings:1;
|
||||
u32 hasShadow:1;
|
||||
u32 noShadow:1;
|
||||
u32 spriteAnimPausedBackup:1;
|
||||
/*0x03*/ u32 spriteAffineAnimPausedBackup:1;
|
||||
u32 disableJumpLandingGroundEffect:1;
|
||||
|
|
|
@ -497,6 +497,7 @@ struct SaveBlock2
|
|||
|
||||
extern struct SaveBlock2 *gSaveBlock2Ptr;
|
||||
|
||||
extern u8 UpdateSpritePaletteWithTime(u8);
|
||||
extern bool8 IsAccurateGBA(void);
|
||||
|
||||
struct SecretBaseParty
|
||||
|
@ -871,7 +872,7 @@ struct MysteryGiftSave
|
|||
struct WonderCardMetadata cardMetadata;
|
||||
u16 questionnaireWords[NUM_QUESTIONNAIRE_WORDS];
|
||||
struct WonderNewsMetadata newsMetadata;
|
||||
u32 trainerIds[2][5]; // Saved ids for 10 trainers, 5 each for battles and trades
|
||||
u32 trainerIds[2][5]; // Saved ids for 10 trainers, 5 each for battles and trades
|
||||
}; // 0x36C 0x3598
|
||||
|
||||
// For external event data storage. The majority of these may have never been used.
|
||||
|
|
|
@ -62,6 +62,7 @@ extern void (*gFieldCallback)(void);
|
|||
extern bool8 (*gFieldCallback2)(void);
|
||||
extern u8 gLocalLinkPlayerId;
|
||||
extern u8 gFieldLinkPlayerCount;
|
||||
extern u8 gTimeOfDay;
|
||||
|
||||
extern struct TimeBlendSettings currentTimeBlend;
|
||||
|
||||
|
|
|
@ -69,6 +69,7 @@ void TransferPlttBuffer(void);
|
|||
u8 UpdatePaletteFade(void);
|
||||
void ResetPaletteFade(void);
|
||||
bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16);
|
||||
bool8 BeginTimeOfDayPaletteFade(u32, s8, u8, u8, struct BlendSettings *, struct BlendSettings *, u16, u16);
|
||||
void PaletteStruct_ResetById(u16);
|
||||
void ResetPaletteFadeControl(void);
|
||||
void InvertPlttBuffer(u32);
|
||||
|
|
|
@ -35,6 +35,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch;
|
|||
const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight;
|
||||
|
||||
const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
|
||||
[FLDEFFOBJ_SHADOW_S] = &gFieldEffectObjectTemplate_ShadowSmall,
|
||||
|
|
|
@ -28,6 +28,12 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = {
|
|||
obj_frame_tiles(gFieldEffectObjectPic_ShadowExtraLarge),
|
||||
};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_BallLight[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BallLight),
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight = {TAG_NONE, OBJ_EVENT_PAL_TAG_LIGHT, &gObjectEventBaseOam_32x32, sAnimTable_Inanimate, gFieldEffectObjectPicTable_BallLight, gDummySpriteAffineAnimTable, UpdateLightSprite};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = TAG_WEATHER_START,
|
||||
|
|
|
@ -281,6 +281,7 @@ const u32 gFieldEffectObjectPic_ShadowSmall[] = INCBIN_U32("graphics/field_effec
|
|||
const u32 gFieldEffectObjectPic_ShadowMedium[] = INCBIN_U32("graphics/field_effects/pics/shadow_medium.4bpp");
|
||||
const u32 gFieldEffectObjectPic_ShadowLarge[] = INCBIN_U32("graphics/field_effects/pics/shadow_large.4bpp");
|
||||
const u32 gFieldEffectObjectPic_ShadowExtraLarge[] = INCBIN_U32("graphics/field_effects/pics/shadow_extra_large.4bpp");
|
||||
const u32 gFieldEffectObjectPic_BallLight[] = INCBIN_U32("graphics/object_events/pics/misc/light.4bpp");
|
||||
static const u32 sFiller[0x48] = {};
|
||||
const u8 gFieldEffectPic_CutGrass[] = INCBIN_U8("graphics/field_effects/pics/cut_grass.4bpp");
|
||||
const u32 gFieldEffectPic_CutGrass_Copy[] = INCBIN_U32("graphics/field_effects/pics/cut_grass.4bpp");
|
||||
|
@ -778,4 +779,5 @@ const u32 gObjectEventPic_RayquazaCutscene[] = INCBIN_U32("graphics/object_event
|
|||
const u16 gObjectEventPal_HoOh[] = INCBIN_U16("graphics/object_events/palettes/ho_oh.gbapal");
|
||||
const u16 gObjectEventPal_Lugia[] = INCBIN_U16("graphics/object_events/palettes/lugia.gbapal");
|
||||
|
||||
const u16 gObjectEventPaletteLight[] = INCBIN_U16("graphics/object_events/palettes/light.gbapal");
|
||||
const u16 gObjectEventPaletteEmotes[] = INCBIN_U16("graphics/misc/emotes.gbapal");
|
||||
|
|
|
@ -448,6 +448,7 @@ const u8 gInitialMovementTypeFacingDirections[] = {
|
|||
#define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122
|
||||
#define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123
|
||||
#define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1124
|
||||
#define OBJ_EVENT_PAL_TAG_LIGHT 0x8001
|
||||
#define OBJ_EVENT_PAL_TAG_EMOTES 0x8002
|
||||
#define OBJ_EVENT_PAL_TAG_NONE 0x11FF
|
||||
|
||||
|
@ -497,6 +498,7 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = {
|
|||
{gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN},
|
||||
{gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY},
|
||||
{gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_DYNAMIC},
|
||||
{gObjectEventPaletteLight, OBJ_EVENT_PAL_TAG_LIGHT},
|
||||
{gObjectEventPaletteEmotes, OBJ_EVENT_PAL_TAG_EMOTES},
|
||||
{NULL, 0x0000},
|
||||
};
|
||||
|
@ -2054,6 +2056,7 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY)
|
|||
TrySpawnObjectEventTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
|
||||
}
|
||||
}
|
||||
TrySpawnLightSprites(cameraX, cameraY);
|
||||
}
|
||||
|
||||
void RemoveObjectEventsOutsideView(void)
|
||||
|
@ -2107,6 +2110,7 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y)
|
|||
SpawnObjectEventOnReturnToField(i, x, y);
|
||||
}
|
||||
CreateReflectionEffectSprites();
|
||||
TrySpawnLightSprites(x, y);
|
||||
}
|
||||
|
||||
static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y)
|
||||
|
@ -2170,7 +2174,7 @@ static void ResetObjectEventFldEffData(struct ObjectEvent *objectEvent)
|
|||
{
|
||||
objectEvent->singleMovementActive = FALSE;
|
||||
objectEvent->triggerGroundEffectsOnMove = TRUE;
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
objectEvent->hasReflection = FALSE;
|
||||
objectEvent->inShortGrass = FALSE;
|
||||
objectEvent->inShallowFlowingWater = FALSE;
|
||||
|
@ -6160,7 +6164,7 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -6177,7 +6181,7 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -6194,7 +6198,7 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -6211,7 +6215,7 @@ bool8 MovementAction_Jump2Right_Step1(struct ObjectEvent *objectEvent, struct Sp
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -6982,7 +6986,7 @@ bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Spri
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -6999,7 +7003,7 @@ bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7016,7 +7020,7 @@ bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Spri
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7033,7 +7037,7 @@ bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Spr
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7050,7 +7054,7 @@ bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, stru
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7067,7 +7071,7 @@ bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7084,7 +7088,7 @@ bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, stru
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7101,7 +7105,7 @@ bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, str
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7118,7 +7122,7 @@ bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, st
|
|||
{
|
||||
if (DoJumpInPlaceAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7135,7 +7139,7 @@ bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, st
|
|||
{
|
||||
if (DoJumpInPlaceAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7152,7 +7156,7 @@ bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent,
|
|||
{
|
||||
if (DoJumpInPlaceAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7169,7 +7173,7 @@ bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *objectEvent,
|
|||
{
|
||||
if (DoJumpInPlaceAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = 0;
|
||||
objectEvent->noShadow = 0;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7614,7 +7618,7 @@ bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEven
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7631,7 +7635,7 @@ bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent,
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7648,7 +7652,7 @@ bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEven
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7665,7 +7669,7 @@ bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEve
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7682,7 +7686,7 @@ bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, s
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7699,7 +7703,7 @@ bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, str
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7716,7 +7720,7 @@ bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, s
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7733,7 +7737,7 @@ bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent,
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7750,7 +7754,7 @@ bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent,
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7767,7 +7771,7 @@ bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, st
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7784,7 +7788,7 @@ bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent,
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -7801,7 +7805,7 @@ bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent,
|
|||
{
|
||||
if (DoJumpAnim(objectEvent, sprite))
|
||||
{
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = FALSE;
|
||||
sprite->sActionFuncId = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -9518,9 +9522,9 @@ u32 StartFieldEffectForObjectEvent(u8 fieldEffectId, struct ObjectEvent *objectE
|
|||
|
||||
static void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
|
||||
{
|
||||
if (!objectEvent->hasShadow)
|
||||
if (objectEvent->noShadow)
|
||||
{
|
||||
objectEvent->hasShadow = 1;
|
||||
objectEvent->noShadow = FALSE;
|
||||
StartFieldEffectForObjectEvent(FLDEFF_SHADOW, objectEvent);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3270,7 +3270,7 @@ static void FlyOutFieldEffect_FlyOffWithBird(struct Task *task)
|
|||
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
ObjectEventClearHeldMovementIfActive(objectEvent);
|
||||
objectEvent->inanimate = FALSE;
|
||||
objectEvent->hasShadow = FALSE;
|
||||
objectEvent->noShadow = TRUE; // TODO: Make shadow smaller instead of disappearing completely ?
|
||||
SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId);
|
||||
CameraObjectReset2();
|
||||
task->tState++;
|
||||
|
@ -3490,6 +3490,7 @@ static void FlyInFieldEffect_BirdSwoopDown(struct Task *task)
|
|||
ObjectEventTurn(objectEvent, DIR_WEST);
|
||||
StartSpriteAnim(&gSprites[objectEvent->spriteId], ANIM_GET_ON_OFF_POKEMON_WEST);
|
||||
objectEvent->invisible = FALSE;
|
||||
objectEvent->noShadow = TRUE;
|
||||
task->tBirdSpriteId = CreateFlyBirdSprite();
|
||||
StartFlyBirdSwoopDown(task->tBirdSpriteId);
|
||||
SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId);
|
||||
|
|
Loading…
Reference in a new issue