summaryrefslogtreecommitdiff
path: root/src/event_object_movement.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/event_object_movement.c')
-rw-r--r--src/event_object_movement.c2170
1 files changed, 1089 insertions, 1081 deletions
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 1d06ddc84..67f203dcd 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -32,31 +32,39 @@
// this file was known as evobjmv.c in Game Freak's original source
+// Sprite data used throughout
+#define sObjEventId data[0]
+#define sTypeFuncId data[1] // Index into corresponding gMovementTypeFuncs_* table
+#define sActionFuncId data[2] // Index into corresponding gMovementActionFuncs_* table
+#define sDirection data[3]
+#define sSpeed data[4]
+
+
#define movement_type_def(setup, table) \
static u8 setup##_callback(struct ObjectEvent *, struct Sprite *);\
void setup(struct Sprite *sprite)\
{\
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, setup##_callback);\
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->sObjEventId], sprite, setup##_callback);\
}\
static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)\
{\
- return table[sprite->data[1]](objectEvent, sprite);\
+ return table[sprite->sTypeFuncId](objectEvent, sprite);\
}
#define movement_type_empty_callback(setup) \
static u8 setup##_callback(struct ObjectEvent *, struct Sprite *);\
void setup(struct Sprite *sprite)\
{\
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, setup##_callback);\
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->sObjEventId], sprite, setup##_callback);\
}\
static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)\
{\
return 0;\
}
-EWRAM_DATA u8 sCurrentReflectionType = 0;
-EWRAM_DATA u16 sCurrentSpecialObjectPaletteTag = 0;
-EWRAM_DATA struct LockedAnimObjectEvents *gLockedAnimObjectEvents = {0};
+static EWRAM_DATA u8 sCurrentReflectionType = 0;
+static EWRAM_DATA u16 sCurrentSpecialObjectPaletteTag = 0;
+static EWRAM_DATA struct LockedAnimObjectEvents *sLockedAnimObjectEvents = {0};
static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16);
static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *);
@@ -70,8 +78,8 @@ static void UpdateObjectEventSpriteAnimPause(struct ObjectEvent *, struct Sprite
static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *, s16, s16);
static bool8 IsMetatileDirectionallyImpassable(struct ObjectEvent *, s16, s16, u8);
static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *, s16, s16);
-static void sub_8096530(struct ObjectEvent *, struct Sprite *);
-static void UpdateObjEventSpriteVisibility(struct ObjectEvent *, struct Sprite *);
+static void UpdateObjectEventOffscreen(struct ObjectEvent *, struct Sprite *);
+static void UpdateObjectEventSpriteVisibility(struct ObjectEvent *, struct Sprite *);
static void ObjectEventUpdateMetatileBehaviors(struct ObjectEvent*);
static void GetGroundEffectFlags_Reflection(struct ObjectEvent*, u32*);
static void GetGroundEffectFlags_TallGrassOnSpawn(struct ObjectEvent*, u32*);
@@ -87,7 +95,7 @@ static void GetGroundEffectFlags_Puddle(struct ObjectEvent*, u32*);
static void GetGroundEffectFlags_Ripple(struct ObjectEvent*, u32*);
static void GetGroundEffectFlags_Seaweed(struct ObjectEvent*, u32*);
static void GetGroundEffectFlags_JumpLanding(struct ObjectEvent*, u32*);
-static u8 ObjectEventCheckForReflectiveSurface(struct ObjectEvent*);
+static u8 ObjectEventGetNearbyReflectionType(struct ObjectEvent*);
static u8 GetReflectionTypeByMetatileBehavior(u32);
static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z);
static void ObjectEventUpdateSubpriority(struct ObjectEvent*, struct Sprite*);
@@ -101,7 +109,7 @@ static void DoGroundEffects_OnFinishStep(struct ObjectEvent*, struct Sprite*);
static void UpdateObjectEventSpritePosition(struct Sprite*);
static void ApplyLevitateMovement(u8);
static bool8 MovementType_Disguise_Callback(struct ObjectEvent *, struct Sprite *);
-static bool8 MovementType_Hidden_Callback(struct ObjectEvent *, struct Sprite *);
+static bool8 MovementType_Buried_Callback(struct ObjectEvent *, struct Sprite *);
static void CreateReflectionEffectSprites(void);
static u8 GetObjectEventIdByLocalId(u8);
static u8 GetObjectEventIdByLocalIdAndMapInternal(u8, u8, u8);
@@ -115,31 +123,49 @@ static void GetObjectEventMovingCameraOffset(s16 *, s16 *);
static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8);
static void LoadObjectEventPalette(u16);
static void RemoveObjectEventIfOutsideView(struct ObjectEvent *);
-static void sub_808E1B8(u8, s16, s16);
+static void SpawnObjectEventOnReturnToField(u8, s16, s16);
static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8);
-static void sub_808E38C(struct ObjectEvent *);
-static u8 sub_808E8F4(const struct SpritePalette *);
+static void ResetObjectEventFldEffData(struct ObjectEvent *);
+static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *);
static u8 FindObjectEventPaletteIndexByTag(u16);
-static void sub_808EAB0(u16, u8);
+static void _PatchObjectPalette(u16, u8);
static bool8 ObjectEventDoesZCoordMatch(struct ObjectEvent *, u8);
-static void ObjectCB_CameraObject(struct Sprite *);
+static void SpriteCB_CameraObject(struct Sprite *);
static void CameraObject_0(struct Sprite *);
static void CameraObject_1(struct Sprite *);
static void CameraObject_2(struct Sprite *);
static struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8 localId, struct ObjectEventTemplate *templates, u8 count);
static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *);
static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8);
-static void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
-static void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *);
+static void SetSpriteDataForNormalStep(struct Sprite *, u8, u8);
static void InitSpriteForFigure8Anim(struct Sprite *sprite);
static bool8 AnimateSpriteInFigure8(struct Sprite *sprite);
static void UpdateObjectEventSprite(struct Sprite *);
+static void DoShadowFieldEffect(struct ObjectEvent *);
+static void SetJumpSpriteData(struct Sprite *, u8, u8, u8);
+static void SetWalkSlowSpriteData(struct Sprite *sprite, u8 direction);
+static bool8 UpdateWalkSlowAnim(struct Sprite *sprite);
+static u8 DoJumpSpriteMovement(struct Sprite *sprite);
+static u8 DoJumpSpecialSpriteMovement(struct Sprite *sprite);
+static void CreateLevitateMovementTask(struct ObjectEvent *);
+static void DestroyLevitateMovementTask(u8);
+static bool8 NpcTakeStep(struct Sprite *sprite);
+
+static const struct SpriteFrameImage sPicTable_PechaBerryTree[];
const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
-const struct SpriteTemplate gCameraSpriteTemplate = {0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, ObjectCB_CameraObject};
+static const struct SpriteTemplate sCameraSpriteTemplate = {
+ .tileTag = 0,
+ .paletteTag = 0xFFFF,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_CameraObject
+};
-void (*const gCameraObjectFuncs[])(struct Sprite *) = {
+static void (*const sCameraObjectFuncs[])(struct Sprite *) = {
CameraObject_0,
CameraObject_1,
CameraObject_2,
@@ -213,7 +239,7 @@ static void (*const sMovementTypeCallbacks[])(struct Sprite *) =
[MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = MovementType_CopyPlayerInGrass,
[MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = MovementType_CopyPlayerInGrass,
[MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = MovementType_CopyPlayerInGrass,
- [MOVEMENT_TYPE_HIDDEN] = MovementType_Hidden,
+ [MOVEMENT_TYPE_BURIED] = MovementType_Buried,
[MOVEMENT_TYPE_WALK_IN_PLACE_DOWN] = MovementType_WalkInPlace,
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = MovementType_WalkInPlace,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = MovementType_WalkInPlace,
@@ -297,7 +323,7 @@ const u8 gRangedMovementTypes[] = {
[MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = 1,
[MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = 1,
[MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = 1,
- [MOVEMENT_TYPE_HIDDEN] = 0,
+ [MOVEMENT_TYPE_BURIED] = 0,
[MOVEMENT_TYPE_WALK_IN_PLACE_DOWN] = 0,
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = 0,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = 0,
@@ -381,7 +407,7 @@ const u8 gInitialMovementTypeFacingDirections[] = {
[MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = DIR_SOUTH,
[MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = DIR_WEST,
[MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = DIR_EAST,
- [MOVEMENT_TYPE_HIDDEN] = DIR_SOUTH,
+ [MOVEMENT_TYPE_BURIED] = DIR_SOUTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_DOWN] = DIR_SOUTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = DIR_NORTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = DIR_WEST,
@@ -670,13 +696,13 @@ static const u16 *const sObjectPaletteTagSets[] = {
#include "data/object_events/berry_tree_graphics_tables.h"
#include "data/field_effects/field_effect_objects.h"
-const s16 gMovementDelaysMedium[] = {32, 64, 96, 128};
-const s16 gMovementDelaysLong[] = {32, 64, 128, 192};
-const s16 gMovementDelaysShort[] = {32, 48, 64, 80};
+static const s16 sMovementDelaysMedium[] = {32, 64, 96, 128};
+static const s16 sMovementDelaysLong[] = {32, 64, 128, 192}; // Unused
+static const s16 sMovementDelaysShort[] = {32, 48, 64, 80};
#include "data/object_events/movement_type_func_tables.h"
-const u8 gFaceDirectionAnimNums[] = {
+static const u8 sFaceDirectionAnimNums[] = {
[DIR_NONE] = 0,
[DIR_SOUTH] = 0,
[DIR_NORTH] = 1,
@@ -687,7 +713,7 @@ const u8 gFaceDirectionAnimNums[] = {
[DIR_NORTHWEST] = 1,
[DIR_NORTHEAST] = 1,
};
-const u8 gMoveDirectionAnimNums[] = {
+static const u8 sMoveDirectionAnimNums[] = {
[DIR_NONE] = 4,
[DIR_SOUTH] = 4,
[DIR_NORTH] = 5,
@@ -698,7 +724,7 @@ const u8 gMoveDirectionAnimNums[] = {
[DIR_NORTHWEST] = 5,
[DIR_NORTHEAST] = 5,
};
-const u8 gMoveDirectionFastAnimNums[] = {
+static const u8 sMoveDirectionFastAnimNums[] = {
[DIR_NONE] = 8,
[DIR_SOUTH] = 8,
[DIR_NORTH] = 9,
@@ -709,7 +735,7 @@ const u8 gMoveDirectionFastAnimNums[] = {
[DIR_NORTHWEST] = 9,
[DIR_NORTHEAST] = 9,
};
-const u8 gMoveDirectionFasterAnimNums[] = {
+static const u8 sMoveDirectionFasterAnimNums[] = {
[DIR_NONE] = 12,
[DIR_SOUTH] = 12,
[DIR_NORTH] = 13,
@@ -720,7 +746,7 @@ const u8 gMoveDirectionFasterAnimNums[] = {
[DIR_NORTHWEST] = 13,
[DIR_NORTHEAST] = 13,
};
-const u8 gMoveDirectionFastestAnimNums[] = {
+static const u8 sMoveDirectionFastestAnimNums[] = {
[DIR_NONE] = 16,
[DIR_SOUTH] = 16,
[DIR_NORTH] = 17,
@@ -731,7 +757,7 @@ const u8 gMoveDirectionFastestAnimNums[] = {
[DIR_NORTHWEST] = 17,
[DIR_NORTHEAST] = 17,
};
-const u8 gJumpSpecialDirectionAnimNums[] = { // used for jumping onto surf mon
+static const u8 sJumpSpecialDirectionAnimNums[] = { // used for jumping onto surf mon
[DIR_NONE] = 20,
[DIR_SOUTH] = 20,
[DIR_NORTH] = 21,
@@ -742,7 +768,7 @@ const u8 gJumpSpecialDirectionAnimNums[] = { // used for jumping onto surf mon
[DIR_NORTHWEST] = 21,
[DIR_NORTHEAST] = 21,
};
-const u8 gAcroWheelieDirectionAnimNums[] = {
+static const u8 sAcroWheelieDirectionAnimNums[] = {
[DIR_NONE] = 20,
[DIR_SOUTH] = 20,
[DIR_NORTH] = 21,
@@ -753,7 +779,7 @@ const u8 gAcroWheelieDirectionAnimNums[] = {
[DIR_NORTHWEST] = 21,
[DIR_NORTHEAST] = 21,
};
-const u8 gUnrefAnimNums_08375633[] = {
+static const u8 sAcroUnusedDirectionAnimNums[] = {
[DIR_NONE] = 24,
[DIR_SOUTH] = 24,
[DIR_NORTH] = 25,
@@ -764,7 +790,7 @@ const u8 gUnrefAnimNums_08375633[] = {
[DIR_NORTHWEST] = 25,
[DIR_NORTHEAST] = 25,
};
-const u8 gAcroEndWheelieDirectionAnimNums[] = {
+static const u8 sAcroEndWheelieDirectionAnimNums[] = {
[DIR_NONE] = 28,
[DIR_SOUTH] = 28,
[DIR_NORTH] = 29,
@@ -775,7 +801,7 @@ const u8 gAcroEndWheelieDirectionAnimNums[] = {
[DIR_NORTHWEST] = 29,
[DIR_NORTHEAST] = 29,
};
-const u8 gAcroUnusedActionDirectionAnimNums[] = {
+static const u8 sAcroUnusedActionDirectionAnimNums[] = {
[DIR_NONE] = 32,
[DIR_SOUTH] = 32,
[DIR_NORTH] = 33,
@@ -786,7 +812,7 @@ const u8 gAcroUnusedActionDirectionAnimNums[] = {
[DIR_NORTHWEST] = 33,
[DIR_NORTHEAST] = 33,
};
-const u8 gAcroWheeliePedalDirectionAnimNums[] = {
+static const u8 sAcroWheeliePedalDirectionAnimNums[] = {
[DIR_NONE] = 36,
[DIR_SOUTH] = 36,
[DIR_NORTH] = 37,
@@ -797,7 +823,7 @@ const u8 gAcroWheeliePedalDirectionAnimNums[] = {
[DIR_NORTHWEST] = 37,
[DIR_NORTHEAST] = 37,
};
-const u8 gFishingDirectionAnimNums[] = {
+static const u8 sFishingDirectionAnimNums[] = {
[DIR_NONE] = 0,
[DIR_SOUTH] = 0,
[DIR_NORTH] = 1,
@@ -808,7 +834,7 @@ const u8 gFishingDirectionAnimNums[] = {
[DIR_NORTHWEST] = 1,
[DIR_NORTHEAST] = 1,
};
-const u8 gFishingNoCatchDirectionAnimNums[] = {
+static const u8 sFishingNoCatchDirectionAnimNums[] = {
[DIR_NONE] = 4,
[DIR_SOUTH] = 4,
[DIR_NORTH] = 5,
@@ -819,7 +845,7 @@ const u8 gFishingNoCatchDirectionAnimNums[] = {
[DIR_NORTHWEST] = 5,
[DIR_NORTHEAST] = 5,
};
-const u8 gFishingBiteDirectionAnimNums[] = {
+static const u8 sFishingBiteDirectionAnimNums[] = {
[DIR_NONE] = 8,
[DIR_SOUTH] = 8,
[DIR_NORTH] = 9,
@@ -830,7 +856,7 @@ const u8 gFishingBiteDirectionAnimNums[] = {
[DIR_NORTHWEST] = 9,
[DIR_NORTHEAST] = 9,
};
-const u8 gRunningDirectionAnimNums[] = {
+static const u8 sRunningDirectionAnimNums[] = {
[DIR_NONE] = 20,
[DIR_SOUTH] = 20,
[DIR_NORTH] = 21,
@@ -1070,7 +1096,7 @@ const u8 gAcroEndWheelieMoveDirectionMovementActions[] = {
MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT,
};
-const u8 gOppositeDirections[] = {
+static const u8 sOppositeDirections[] = {
DIR_NORTH,
DIR_SOUTH,
DIR_EAST,
@@ -1374,7 +1400,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
+ _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot);
}
if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE)
@@ -1389,14 +1415,14 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
}
sprite = &gSprites[spriteId];
- sub_8092FF0(objectEvent->currentCoords.x + cameraX, objectEvent->currentCoords.y + cameraY, &sprite->pos1.x, &sprite->pos1.y);
+ GetMapCoordsFromSpritePos(objectEvent->currentCoords.x + cameraX, objectEvent->currentCoords.y + cameraY, &sprite->pos1.x, &sprite->pos1.y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
sprite->pos1.x += 8;
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
sprite->oam.paletteNum = paletteSlot;
sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = objectEventId;
+ sprite->sObjEventId = objectEventId;
objectEvent->spriteId = spriteId;
objectEvent->inanimate = graphicsInfo->inanimate;
if (!objectEvent->inanimate)
@@ -1523,7 +1549,7 @@ u8 AddPseudoObjectEvent(u16 graphicsId, void (*callback)(struct Sprite *), s16 x
// Used to create sprite object events instead of a full object event
// Used when resources are limiting, e.g. for the audience in contests or group members in Union Room
-u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
+u8 CreateObjectSprite(u8 graphicsId, u8 objectEventId, s16 x, s16 y, u8 z, u8 direction)
{
u8 spriteId;
struct Sprite *sprite;
@@ -1550,7 +1576,7 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
sprite->oam.paletteNum -= 16;
}
sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = a1;
+ sprite->sObjEventId = objectEventId;
sprite->data[1] = z;
if (graphicsInfo->paletteSlot == 10)
{
@@ -1558,7 +1584,7 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
}
else if (graphicsInfo->paletteSlot >= 16)
{
- sub_808EAB0(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0);
+ _PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0);
}
if (subspriteTables != NULL)
{
@@ -1585,17 +1611,11 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY)
s16 bottom = gSaveBlock1Ptr->pos.y + 16;
if (InBattlePyramid())
- {
objectCount = GetNumBattlePyramidObjectEvents();
- }
else if (InTrainerHill())
- {
objectCount = 2;
- }
else
- {
objectCount = gMapHeader.events->objectEventCount;
- }
for (i = 0; i < objectCount; i++)
{
@@ -1648,7 +1668,7 @@ static void RemoveObjectEventIfOutsideView(struct ObjectEvent *objectEvent)
RemoveObjectEvent(objectEvent);
}
-void sub_808E16C(s16 x, s16 y)
+void SpawnObjectEventsOnReturnToField(s16 x, s16 y)
{
u8 i;
@@ -1656,16 +1676,14 @@ void sub_808E16C(s16 x, s16 y)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
if (gObjectEvents[i].active)
- {
- sub_808E1B8(i, x, y);
- }
+ SpawnObjectEventOnReturnToField(i, x, y);
}
CreateReflectionEffectSprites();
}
-static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
+static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y)
{
- u8 spriteId;
+ u8 i;
u8 paletteSlot;
struct Sprite *sprite;
struct ObjectEvent *objectEvent;
@@ -1674,15 +1692,11 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
const struct SubspriteTable *subspriteTables;
const struct ObjectEventGraphicsInfo *graphicsInfo;
-#define i spriteId
for (i = 0; i < ARRAY_COUNT(gLinkPlayerObjectEvents); i++)
{
if (gLinkPlayerObjectEvents[i].active && objectEventId == gLinkPlayerObjectEvents[i].objEventId)
- {
return;
- }
}
-#undef i
objectEvent = &gObjectEvents[objectEventId];
subspriteTables = NULL;
@@ -1690,6 +1704,7 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
spriteFrameImage.size = graphicsInfo->size;
MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables);
spriteTemplate.images = &spriteFrameImage;
+
*(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
paletteSlot = graphicsInfo->paletteSlot;
if (paletteSlot == 0)
@@ -1703,14 +1718,15 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
+ _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot);
}
*(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
- spriteId = CreateSprite(&spriteTemplate, 0, 0, 0);
- if (spriteId != MAX_SPRITES)
+
+ i = CreateSprite(&spriteTemplate, 0, 0, 0);
+ if (i != MAX_SPRITES)
{
- sprite = &gSprites[spriteId];
- sub_8092FF0(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ sprite = &gSprites[i];
+ GetMapCoordsFromSpritePos(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
sprite->pos1.x += 8;
@@ -1718,27 +1734,25 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
sprite->images = graphicsInfo->images;
if (objectEvent->movementType == MOVEMENT_TYPE_PLAYER)
{
- SetPlayerAvatarObjectEventIdAndObjectId(objectEventId, spriteId);
+ SetPlayerAvatarObjectEventIdAndObjectId(objectEventId, i);
objectEvent->warpArrowSpriteId = CreateWarpArrowSprite();
}
if (subspriteTables != NULL)
- {
SetSubspriteTables(sprite, subspriteTables);
- }
+
sprite->oam.paletteNum = paletteSlot;
sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = objectEventId;
- objectEvent->spriteId = spriteId;
+ sprite->sObjEventId = objectEventId;
+ objectEvent->spriteId = i;
if (!objectEvent->inanimate && objectEvent->movementType != MOVEMENT_TYPE_PLAYER)
- {
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection));
- }
- sub_808E38C(objectEvent);
+
+ ResetObjectEventFldEffData(objectEvent);
SetObjectSubpriorityByZCoord(objectEvent->previousElevation, sprite, 1);
}
}
-static void sub_808E38C(struct ObjectEvent *objectEvent)
+static void ResetObjectEventFldEffData(struct ObjectEvent *objectEvent)
{
objectEvent->singleMovementActive = FALSE;
objectEvent->triggerGroundEffectsOnMove = TRUE;
@@ -1779,7 +1793,7 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId)
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
+ _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot);
}
sprite->oam.shape = graphicsInfo->oam->shape;
sprite->oam.size = graphicsInfo->oam->size;
@@ -1835,7 +1849,7 @@ void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction)
ObjectEventTurn(&gObjectEvents[playerAvatar->objectEventId], direction);
}
-static void get_berry_tree_graphics(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
u8 berryStage;
u8 berryId;
@@ -1843,7 +1857,7 @@ static void get_berry_tree_graphics(struct ObjectEvent *objectEvent, struct Spri
objectEvent->invisible = TRUE;
sprite->invisible = TRUE;
berryStage = GetStageByBerryTreeId(objectEvent->trainerRange_berryTreeId);
- if (berryStage != 0)
+ if (berryStage != BERRY_STAGE_NO_BERRY)
{
objectEvent->invisible = FALSE;
sprite->invisible = FALSE;
@@ -1889,13 +1903,13 @@ static void SetObjectEventDynamicGraphicsId(struct ObjectEvent *objectEvent)
}
}
-void npc_by_local_id_and_map_set_field_1_bit_x20(u8 localId, u8 mapNum, u8 mapGroup, u8 state)
+void SetObjectInvisibility(u8 localId, u8 mapNum, u8 mapGroup, bool8 invisible)
{
u8 objectEventId;
if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId))
{
- gObjectEvents[objectEventId].invisible = state;
+ gObjectEvents[objectEventId].invisible = invisible;
}
}
@@ -1906,7 +1920,7 @@ void ObjectEventGetLocalIdAndMap(struct ObjectEvent *objectEvent, void *localId,
*(u8*)(mapGroup) = objectEvent->mapGroup;
}
-void sub_808E75C(s16 x, s16 y)
+void AllowObjectAtPosTriggerGroundEffects(s16 x, s16 y)
{
u8 objectEventId;
struct ObjectEvent *objectEvent;
@@ -1919,7 +1933,7 @@ void sub_808E75C(s16 x, s16 y)
}
}
-void sub_808E78C(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority)
+void SetObjectPriority(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority)
{
u8 objectEventId;
struct ObjectEvent *objectEvent;
@@ -1934,7 +1948,7 @@ void sub_808E78C(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority)
}
}
-void sub_808E7E4(u8 localId, u8 mapNum, u8 mapGroup)
+void ResetObjectPriority(u8 localId, u8 mapNum, u8 mapGroup)
{
u8 objectEventId;
struct ObjectEvent *objectEvent;
@@ -1971,27 +1985,23 @@ static void LoadObjectEventPalette(u16 paletteTag)
u16 i = FindObjectEventPaletteIndexByTag(paletteTag);
if (i != OBJ_EVENT_PAL_TAG_NONE) // always true
- {
- sub_808E8F4(&sObjectEventSpritePalettes[i]);
- }
+ LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]);
}
-void Unused_LoadObjectEventPaletteSet(u16 *paletteTags)
+// Unused
+static void LoadObjectEventPaletteSet(u16 *paletteTags)
{
u8 i;
for (i = 0; paletteTags[i] != OBJ_EVENT_PAL_TAG_NONE; i++)
- {
LoadObjectEventPalette(paletteTags[i]);
- }
}
-static u8 sub_808E8F4(const struct SpritePalette *spritePalette)
+static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette)
{
if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF)
- {
return 0xFF;
- }
+
return LoadSpritePalette(spritePalette);
}
@@ -2057,12 +2067,13 @@ void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot)
}
}
-static void sub_808EAB0(u16 tag, u8 slot)
+static void _PatchObjectPalette(u16 tag, u8 slot)
{
PatchObjectPalette(tag, slot);
}
-void unref_sub_808EAC4(struct ObjectEvent *objectEvent, s16 x, s16 y)
+// Unused
+static void IncrementObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y)
{
objectEvent->previousCoords.x = objectEvent->currentCoords.x;
objectEvent->previousCoords.y = objectEvent->currentCoords.y;
@@ -2099,7 +2110,7 @@ void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y)
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
sprite->pos1.x += 8;
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
- sub_808E38C(objectEvent);
+ ResetObjectEventFldEffData(objectEvent);
if (objectEvent->trackedByCamera)
CameraObjectReset1();
}
@@ -2178,36 +2189,39 @@ void UpdateObjectEventsForCameraUpdate(s16 x, s16 y)
RemoveObjectEventsOutsideView();
}
+#define sLinkedSpriteId data[0]
+#define sState data[1]
+
u8 AddCameraObject(u8 linkedSpriteId)
{
- u8 spriteId = CreateSprite(&gCameraSpriteTemplate, 0, 0, 4);
+ u8 spriteId = CreateSprite(&sCameraSpriteTemplate, 0, 0, 4);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[0] = linkedSpriteId;
+ gSprites[spriteId].sLinkedSpriteId = linkedSpriteId;
return spriteId;
}
-static void ObjectCB_CameraObject(struct Sprite *sprite)
+static void SpriteCB_CameraObject(struct Sprite *sprite)
{
- void (*callbacks[ARRAY_COUNT(gCameraObjectFuncs)])(struct Sprite *);
+ void (*callbacks[ARRAY_COUNT(sCameraObjectFuncs)])(struct Sprite *);
- memcpy(callbacks, gCameraObjectFuncs, sizeof gCameraObjectFuncs);
- callbacks[sprite->data[1]](sprite);
+ memcpy(callbacks, sCameraObjectFuncs, sizeof sCameraObjectFuncs);
+ callbacks[sprite->sState](sprite);
}
static void CameraObject_0(struct Sprite *sprite)
{
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ sprite->pos1.x = gSprites[sprite->sLinkedSpriteId].pos1.x;
+ sprite->pos1.y = gSprites[sprite->sLinkedSpriteId].pos1.y;
sprite->invisible = TRUE;
- sprite->data[1] = 1;
+ sprite->sState = 1;
CameraObject_1(sprite);
}
static void CameraObject_1(struct Sprite *sprite)
{
- s16 x = gSprites[sprite->data[0]].pos1.x;
- s16 y = gSprites[sprite->data[0]].pos1.y;
+ s16 x = gSprites[sprite->sLinkedSpriteId].pos1.x;
+ s16 y = gSprites[sprite->sLinkedSpriteId].pos1.y;
sprite->data[2] = x - sprite->pos1.x;
sprite->data[3] = y - sprite->pos1.y;
@@ -2217,65 +2231,75 @@ static void CameraObject_1(struct Sprite *sprite)
static void CameraObject_2(struct Sprite *sprite)
{
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ sprite->pos1.x = gSprites[sprite->sLinkedSpriteId].pos1.x;
+ sprite->pos1.y = gSprites[sprite->sLinkedSpriteId].pos1.y;
sprite->data[2] = 0;
sprite->data[3] = 0;
}
-static struct Sprite *FindCameraObject(void)
+static struct Sprite *FindCameraSprite(void)
{
u8 i;
for (i = 0; i < MAX_SPRITES; i++)
{
- if (gSprites[i].inUse && gSprites[i].callback == ObjectCB_CameraObject)
- {
+ if (gSprites[i].inUse && gSprites[i].callback == SpriteCB_CameraObject)
return &gSprites[i];
- }
}
return NULL;
}
void CameraObjectReset1(void)
{
- struct Sprite *cameraObject;
+ struct Sprite *camera;
- cameraObject = FindCameraObject();
- if (cameraObject != NULL)
+ camera = FindCameraSprite();
+ if (camera != NULL)
{
- cameraObject->data[1] = 0;
- cameraObject->callback(cameraObject);
+ camera->sState = 0;
+ camera->callback(camera);
}
}
-void CameraObjectSetFollowedObjectId(u8 objectId)
+void CameraObjectSetFollowedSpriteId(u8 spriteId)
{
- struct Sprite *cameraObject;
+ struct Sprite *camera;
- cameraObject = FindCameraObject();
- if (cameraObject != NULL)
+ camera = FindCameraSprite();
+ if (camera != NULL)
{
- cameraObject->data[0] = objectId;
+ camera->sLinkedSpriteId = spriteId;
CameraObjectReset1();
}
}
-u8 CameraObjectGetFollowedObjectId(void)
+// Unused
+static u8 CameraObjectGetFollowedSpriteId(void)
{
- struct Sprite *cameraObject;
+ struct Sprite *camera;
- cameraObject = FindCameraObject();
- if (cameraObject == NULL)
+ camera = FindCameraSprite();
+ if (camera == NULL)
{
return MAX_SPRITES;
}
- return cameraObject->data[0];
+ return camera->sLinkedSpriteId;
}
void CameraObjectReset2(void)
{
- FindCameraObject()->data[1] = 2;
+ // UB: Possible null dereference
+#ifdef UBFIX
+ struct Sprite *camera;
+
+ camera = FindCameraSprite();
+ if (camera != NULL)
+ {
+ camera->sState = 2;
+ }
+#else
+ FindCameraSprite()->sState = 2;
+#endif // UBFIX
}
u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
@@ -2535,14 +2559,14 @@ movement_type_def(MovementType_WanderAround, gMovementTypeFuncs_WanderAround)
bool8 MovementType_WanderAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_WanderAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -2552,8 +2576,8 @@ bool8 MovementType_WanderAround_Step2(struct ObjectEvent *objectEvent, struct Sp
{
return FALSE;
}
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
+ sprite->sTypeFuncId = 3;
return TRUE;
}
@@ -2561,7 +2585,7 @@ bool8 MovementType_WanderAround_Step3(struct ObjectEvent *objectEvent, struct Sp
{
if (WaitForMovementDelay(sprite))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -2575,9 +2599,9 @@ bool8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sp
memcpy(directions, gStandardDirections, sizeof directions);
chosenDirection = directions[Random() & 3];
SetObjectEventDirection(objectEvent, chosenDirection);
- sprite->data[1] = 5;
+ sprite->sTypeFuncId = 5;
if (GetCollisionInDirection(objectEvent, chosenDirection))
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -2585,8 +2609,8 @@ bool8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sp
bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(objectEvent->movementDirection));
- objectEvent->singleMovementActive = 1;
- sprite->data[1] = 6;
+ objectEvent->singleMovementActive = TRUE;
+ sprite->sTypeFuncId = 6;
return TRUE;
}
@@ -2594,8 +2618,8 @@ bool8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sp
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 1;
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -2641,17 +2665,13 @@ u8 GetVectorDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
{
direction = DIR_EAST;
if (dx < 0)
- {
direction = DIR_WEST;
- }
}
else
{
direction = DIR_SOUTH;
if (dy < 0)
- {
direction = DIR_NORTH;
- }
}
return direction;
}
@@ -2662,9 +2682,7 @@ u8 GetLimitedVectorDirection_SouthNorth(s16 dx, s16 dy, s16 absdx, s16 absdy)
direction = DIR_SOUTH;
if (dy < 0)
- {
direction = DIR_NORTH;
- }
return direction;
}
@@ -2674,9 +2692,7 @@ u8 GetLimitedVectorDirection_WestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
direction = DIR_EAST;
if (dx < 0)
- {
direction = DIR_WEST;
- }
return direction;
}
@@ -2689,17 +2705,13 @@ u8 GetLimitedVectorDirection_WestNorth(s16 dx, s16 dy, s16 absdx, s16 absdy)
{
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
if (direction == DIR_EAST)
- {
direction = DIR_NORTH;
- }
}
else if (direction == DIR_EAST)
{
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
if (direction == DIR_SOUTH)
- {
direction = DIR_NORTH;
- }
}
return direction;
}
@@ -2713,17 +2725,13 @@ u8 GetLimitedVectorDirection_EastNorth(s16 dx, s16 dy, s16 absdx, s16 absdy)
{
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
if (direction == DIR_WEST)
- {
direction = DIR_NORTH;
- }
}
else if (direction == DIR_WEST)
{
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
if (direction == DIR_SOUTH)
- {
direction = DIR_NORTH;
- }
}
return direction;
}
@@ -2737,17 +2745,13 @@ u8 GetLimitedVectorDirection_WestSouth(s16 dx, s16 dy, s16 absdx, s16 absdy)
{
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
if (direction == DIR_EAST)
- {
direction = DIR_SOUTH;
- }
}
else if (direction == DIR_EAST)
{
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
if (direction == DIR_NORTH)
- {
direction = DIR_SOUTH;
- }
}
return direction;
}
@@ -2761,17 +2765,13 @@ u8 GetLimitedVectorDirection_EastSouth(s16 dx, s16 dy, s16 absdx, s16 absdy)
{
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
if (direction == DIR_WEST)
- {
direction = DIR_SOUTH;
- }
}
else if (direction == DIR_WEST)
{
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
if (direction == DIR_NORTH)
- {
direction = DIR_SOUTH;
- }
}
return direction;
}
@@ -2782,9 +2782,7 @@ u8 GetLimitedVectorDirection_SouthNorthWest(s16 dx, s16 dy, s16 absdx, s16 absdy
direction = GetVectorDirection(dx, dy, absdx, absdy);
if (direction == DIR_EAST)
- {
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
- }
return direction;
}
@@ -2794,9 +2792,7 @@ u8 GetLimitedVectorDirection_SouthNorthEast(s16 dx, s16 dy, s16 absdx, s16 absdy
direction = GetVectorDirection(dx, dy, absdx, absdy);
if (direction == DIR_WEST)
- {
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
- }
return direction;
}
@@ -2806,9 +2802,7 @@ u8 GetLimitedVectorDirection_NorthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
direction = GetVectorDirection(dx, dy, absdx, absdy);
if (direction == DIR_SOUTH)
- {
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
- }
return direction;
}
@@ -2818,9 +2812,7 @@ u8 GetLimitedVectorDirection_SouthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
direction = GetVectorDirection(dx, dy, absdx, absdy);
if (direction == DIR_NORTH)
- {
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
- }
return direction;
}
@@ -2830,22 +2822,19 @@ u8 TryGetTrainerEncounterDirection(struct ObjectEvent *objectEvent, u8 movementT
s16 absdx, absdy;
if (!ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
- {
- return 0;
- }
+ return DIR_NONE;
+
PlayerGetDestCoords(&dx, &dy);
dx -= objectEvent->currentCoords.x;
dy -= objectEvent->currentCoords.y;
absdx = dx;
absdy = dy;
+
if (absdx < 0)
- {
absdx = -absdx;
- }
if (absdy < 0)
- {
absdy = -absdy;
- }
+
return gGetVectorDirectionFuncs[movementType](dx, dy, absdx, absdy);
}
@@ -2854,14 +2843,14 @@ movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround)
bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_LookAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -2869,9 +2858,9 @@ bool8 MovementType_LookAround_Step2(struct ObjectEvent *objectEvent, struct Spri
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -2880,7 +2869,7 @@ bool8 MovementType_LookAround_Step3(struct ObjectEvent *objectEvent, struct Spri
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -2896,7 +2885,7 @@ bool8 MovementType_LookAround_Step4(struct ObjectEvent *objectEvent, struct Spri
direction = directions[Random() & 3];
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -2905,25 +2894,24 @@ movement_type_def(MovementType_WanderUpAndDown, gMovementTypeFuncs_WanderUpAndDo
bool8 MovementType_WanderUpAndDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_WanderUpAndDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
bool8 MovementType_WanderUpAndDown_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (!ObjectEventExecSingleMovementAction(objectEvent, sprite))
- {
return FALSE;
- }
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
- sprite->data[1] = 3;
+
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
+ sprite->sTypeFuncId = 3;
return TRUE;
}
@@ -2931,7 +2919,7 @@ bool8 MovementType_WanderUpAndDown_Step3(struct ObjectEvent *objectEvent, struct
{
if (WaitForMovementDelay(sprite))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -2944,9 +2932,9 @@ bool8 MovementType_WanderUpAndDown_Step4(struct ObjectEvent *objectEvent, struct
memcpy(directions, gUpAndDownDirections, sizeof directions);
direction = directions[Random() & 1];
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 5;
+ sprite->sTypeFuncId = 5;
if (GetCollisionInDirection(objectEvent, direction))
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -2954,8 +2942,8 @@ bool8 MovementType_WanderUpAndDown_Step4(struct ObjectEvent *objectEvent, struct
bool8 MovementType_WanderUpAndDown_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(objectEvent->movementDirection));
- objectEvent->singleMovementActive = 1;
- sprite->data[1] = 6;
+ objectEvent->singleMovementActive = TRUE;
+ sprite->sTypeFuncId = 6;
return TRUE;
}
@@ -2963,8 +2951,8 @@ bool8 MovementType_WanderUpAndDown_Step6(struct ObjectEvent *objectEvent, struct
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 1;
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -2974,25 +2962,24 @@ movement_type_def(MovementType_WanderLeftAndRight, gMovementTypeFuncs_WanderLeft
bool8 MovementType_WanderLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_WanderLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
bool8 MovementType_WanderLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (!ObjectEventExecSingleMovementAction(objectEvent, sprite))
- {
return FALSE;
- }
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
- sprite->data[1] = 3;
+
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
+ sprite->sTypeFuncId = 3;
return TRUE;
}
@@ -3000,7 +2987,7 @@ bool8 MovementType_WanderLeftAndRight_Step3(struct ObjectEvent *objectEvent, str
{
if (WaitForMovementDelay(sprite))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3013,9 +3000,9 @@ bool8 MovementType_WanderLeftAndRight_Step4(struct ObjectEvent *objectEvent, str
memcpy(directions, gLeftAndRightDirections, sizeof directions);
direction = directions[Random() & 1];
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 5;
+ sprite->sTypeFuncId = 5;
if (GetCollisionInDirection(objectEvent, direction))
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3023,8 +3010,8 @@ bool8 MovementType_WanderLeftAndRight_Step4(struct ObjectEvent *objectEvent, str
bool8 MovementType_WanderLeftAndRight_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(objectEvent->movementDirection));
- objectEvent->singleMovementActive = 1;
- sprite->data[1] = 6;
+ objectEvent->singleMovementActive = TRUE;
+ sprite->sTypeFuncId = 6;
return TRUE;
}
@@ -3032,8 +3019,8 @@ bool8 MovementType_WanderLeftAndRight_Step6(struct ObjectEvent *objectEvent, str
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 1;
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -3044,7 +3031,7 @@ bool8 MovementType_FaceDirection_Step0(struct ObjectEvent *objectEvent, struct S
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3052,7 +3039,7 @@ bool8 MovementType_FaceDirection_Step1(struct ObjectEvent *objectEvent, struct S
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
return FALSE;
@@ -3060,39 +3047,56 @@ bool8 MovementType_FaceDirection_Step1(struct ObjectEvent *objectEvent, struct S
bool8 MovementType_FaceDirection_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- objectEvent->singleMovementActive = 0;
+ objectEvent->singleMovementActive = FALSE;
return FALSE;
}
static bool8 ObjectEventCB2_BerryTree(struct ObjectEvent *objectEvent, struct Sprite *sprite);
extern bool8 (*const gMovementTypeFuncs_BerryTreeGrowth[])(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+
+enum {
+ BERRYTREEFUNC_NORMAL,
+ BERRYTREEFUNC_MOVE,
+ BERRYTREEFUNC_SPARKLE_START,
+ BERRYTREEFUNC_SPARKLE,
+ BERRYTREEFUNC_SPARKLE_END,
+};
+
+#define sTimer data[2]
+#define sBerryTreeFlags data[7]
+
+#define BERRY_FLAG_SET_GFX (1 << 0)
+#define BERRY_FLAG_SPARKLING (1 << 1)
+#define BERRY_FLAG_JUST_PICKED (1 << 2)
+
void MovementType_BerryTreeGrowth(struct Sprite *sprite)
{
struct ObjectEvent *objectEvent;
- objectEvent = &gObjectEvents[sprite->data[0]];
- if (!(sprite->data[7] & 1))
+ objectEvent = &gObjectEvents[sprite->sObjEventId];
+ if (!(sprite->sBerryTreeFlags & BERRY_FLAG_SET_GFX))
{
- get_berry_tree_graphics(objectEvent, sprite);
- sprite->data[7] |= 1;
+ SetBerryTreeGraphics(objectEvent, sprite);
+ sprite->sBerryTreeFlags |= BERRY_FLAG_SET_GFX;
}
UpdateObjectEventCurrentMovement(objectEvent, sprite, ObjectEventCB2_BerryTree);
}
static bool8 ObjectEventCB2_BerryTree(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- return gMovementTypeFuncs_BerryTreeGrowth[sprite->data[1]](objectEvent, sprite);
+ return gMovementTypeFuncs_BerryTreeGrowth[sprite->sTypeFuncId](objectEvent, sprite);
}
-bool8 MovementType_BerryTreeGrowth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+// BERRYTREEFUNC_NORMAL
+bool8 MovementType_BerryTreeGrowth_Normal(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
u8 berryStage;
ClearObjectEventMovement(objectEvent, sprite);
objectEvent->invisible = TRUE;
sprite->invisible = TRUE;
berryStage = GetStageByBerryTreeId(objectEvent->trainerRange_berryTreeId);
- if (berryStage == 0)
+ if (berryStage == BERRY_STAGE_NO_BERRY)
{
- if (!(sprite->data[7] & 4) && sprite->animNum == 4)
+ if (!(sprite->sBerryTreeFlags & BERRY_FLAG_JUST_PICKED) && sprite->animNum == BERRY_STAGE_FLOWERING)
{
gFieldEffectArguments[0] = objectEvent->currentCoords.x;
gFieldEffectArguments[1] = objectEvent->currentCoords.y;
@@ -3105,34 +3109,36 @@ bool8 MovementType_BerryTreeGrowth_Step0(struct ObjectEvent *objectEvent, struct
}
objectEvent->invisible = FALSE;
sprite->invisible = FALSE;
- berryStage --;
+ berryStage--;
if (sprite->animNum != berryStage)
{
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = BERRYTREEFUNC_SPARKLE_START;
return TRUE;
}
- get_berry_tree_graphics(objectEvent, sprite);
+ SetBerryTreeGraphics(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = BERRYTREEFUNC_MOVE;
return TRUE;
}
-bool8 MovementType_BerryTreeGrowth_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+// BERRYTREEFUNC_MOVE
+bool8 MovementType_BerryTreeGrowth_Move(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- sprite->data[1] = 0;
+ sprite->sTypeFuncId = BERRYTREEFUNC_NORMAL;
return TRUE;
}
return FALSE;
}
-bool8 MovementType_BerryTreeGrowth_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+// BERRYTREEFUNC_SPARKLE_START
+bool8 MovementType_BerryTreeGrowth_SparkleStart(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- objectEvent->singleMovementActive = 1;
- sprite->data[1] = 3;
- sprite->data[2] = 0;
- sprite->data[7] |= 2;
+ objectEvent->singleMovementActive = TRUE;
+ sprite->sTypeFuncId = BERRYTREEFUNC_SPARKLE;
+ sprite->sTimer = 0;
+ sprite->sBerryTreeFlags |= BERRY_FLAG_SPARKLING;
gFieldEffectArguments[0] = objectEvent->currentCoords.x;
gFieldEffectArguments[1] = objectEvent->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
@@ -3141,30 +3147,32 @@ bool8 MovementType_BerryTreeGrowth_Step2(struct ObjectEvent *objectEvent, struct
return TRUE;
}
-bool8 MovementType_BerryTreeGrowth_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+// BERRYTREEFUNC_SPARKLE
+bool8 MovementType_BerryTreeGrowth_Sparkle(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sprite->data[2]++;
- objectEvent->invisible = (sprite->data[2] & 0x02) >> 1;
+ sprite->sTimer++;
+ objectEvent->invisible = (sprite->sTimer & 2) >> 1;
sprite->animPaused = TRUE;
- if (sprite->data[2] > 64)
+ if (sprite->sTimer > 64)
{
- get_berry_tree_graphics(objectEvent, sprite);
- sprite->data[1] = 4;
- sprite->data[2] = 0;
+ SetBerryTreeGraphics(objectEvent, sprite);
+ sprite->sTypeFuncId = BERRYTREEFUNC_SPARKLE_END;
+ sprite->sTimer = 0;
return TRUE;
}
return FALSE;
}
-bool8 MovementType_BerryTreeGrowth_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+// BERRYTREEFUNC_SPARKLE_END
+bool8 MovementType_BerryTreeGrowth_SparkleEnd(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sprite->data[2]++;
- objectEvent->invisible = (sprite->data[2] & 0x02) >> 1;
+ sprite->sTimer++;
+ objectEvent->invisible = (sprite->sTimer & 2) >> 1;
sprite->animPaused = TRUE;
- if (sprite->data[2] > 64)
+ if (sprite->sTimer > 64)
{
- sprite->data[1] = 0;
- sprite->data[7] &= ~0x0002;
+ sprite->sTypeFuncId = BERRYTREEFUNC_NORMAL;
+ sprite->sBerryTreeFlags &= ~BERRY_FLAG_SPARKLING;
return TRUE;
}
return FALSE;
@@ -3175,14 +3183,14 @@ movement_type_def(MovementType_FaceDownAndUp, gMovementTypeFuncs_FaceDownAndUp)
bool8 MovementType_FaceDownAndUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownAndUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3190,9 +3198,9 @@ bool8 MovementType_FaceDownAndUp_Step2(struct ObjectEvent *objectEvent, struct S
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3201,7 +3209,7 @@ bool8 MovementType_FaceDownAndUp_Step3(struct ObjectEvent *objectEvent, struct S
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3218,7 +3226,7 @@ bool8 MovementType_FaceDownAndUp_Step4(struct ObjectEvent *objectEvent, struct S
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3227,14 +3235,14 @@ movement_type_def(MovementType_FaceLeftAndRight, gMovementTypeFuncs_FaceLeftAndR
bool8 MovementType_FaceLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3242,9 +3250,9 @@ bool8 MovementType_FaceLeftAndRight_Step2(struct ObjectEvent *objectEvent, struc
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3253,7 +3261,7 @@ bool8 MovementType_FaceLeftAndRight_Step3(struct ObjectEvent *objectEvent, struc
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3270,7 +3278,7 @@ bool8 MovementType_FaceLeftAndRight_Step4(struct ObjectEvent *objectEvent, struc
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3279,14 +3287,14 @@ movement_type_def(MovementType_FaceUpAndLeft, gMovementTypeFuncs_FaceUpAndLeft)
bool8 MovementType_FaceUpAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceUpAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3294,9 +3302,9 @@ bool8 MovementType_FaceUpAndLeft_Step2(struct ObjectEvent *objectEvent, struct S
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3305,7 +3313,7 @@ bool8 MovementType_FaceUpAndLeft_Step3(struct ObjectEvent *objectEvent, struct S
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3322,7 +3330,7 @@ bool8 MovementType_FaceUpAndLeft_Step4(struct ObjectEvent *objectEvent, struct S
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3331,14 +3339,14 @@ movement_type_def(MovementType_FaceUpAndRight, gMovementTypeFuncs_FaceUpAndRight
bool8 MovementType_FaceUpAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceUpAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3346,9 +3354,9 @@ bool8 MovementType_FaceUpAndRight_Step2(struct ObjectEvent *objectEvent, struct
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3357,7 +3365,7 @@ bool8 MovementType_FaceUpAndRight_Step3(struct ObjectEvent *objectEvent, struct
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3374,7 +3382,7 @@ bool8 MovementType_FaceUpAndRight_Step4(struct ObjectEvent *objectEvent, struct
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3383,14 +3391,14 @@ movement_type_def(MovementType_FaceDownAndLeft, gMovementTypeFuncs_FaceDownAndLe
bool8 MovementType_FaceDownAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3398,9 +3406,9 @@ bool8 MovementType_FaceDownAndLeft_Step2(struct ObjectEvent *objectEvent, struct
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3409,7 +3417,7 @@ bool8 MovementType_FaceDownAndLeft_Step3(struct ObjectEvent *objectEvent, struct
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3426,7 +3434,7 @@ bool8 MovementType_FaceDownAndLeft_Step4(struct ObjectEvent *objectEvent, struct
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3435,14 +3443,14 @@ movement_type_def(MovementType_FaceDownAndRight, gMovementTypeFuncs_FaceDownAndR
bool8 MovementType_FaceDownAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3450,9 +3458,9 @@ bool8 MovementType_FaceDownAndRight_Step2(struct ObjectEvent *objectEvent, struc
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3461,7 +3469,7 @@ bool8 MovementType_FaceDownAndRight_Step3(struct ObjectEvent *objectEvent, struc
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3478,7 +3486,7 @@ bool8 MovementType_FaceDownAndRight_Step4(struct ObjectEvent *objectEvent, struc
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3487,14 +3495,14 @@ movement_type_def(MovementType_FaceDownUpAndLeft, gMovementTypeFuncs_FaceDownUpA
bool8 MovementType_FaceDownUpAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownUpAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3502,9 +3510,9 @@ bool8 MovementType_FaceDownUpAndLeft_Step2(struct ObjectEvent *objectEvent, stru
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3513,7 +3521,7 @@ bool8 MovementType_FaceDownUpAndLeft_Step3(struct ObjectEvent *objectEvent, stru
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3530,7 +3538,7 @@ bool8 MovementType_FaceDownUpAndLeft_Step4(struct ObjectEvent *objectEvent, stru
direction = directions[Random() & 3];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3539,14 +3547,14 @@ movement_type_def(MovementType_FaceDownUpAndRight, gMovementTypeFuncs_FaceDownUp
bool8 MovementType_FaceDownUpAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownUpAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3554,9 +3562,9 @@ bool8 MovementType_FaceDownUpAndRight_Step2(struct ObjectEvent *objectEvent, str
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3565,7 +3573,7 @@ bool8 MovementType_FaceDownUpAndRight_Step3(struct ObjectEvent *objectEvent, str
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3582,7 +3590,7 @@ bool8 MovementType_FaceDownUpAndRight_Step4(struct ObjectEvent *objectEvent, str
direction = directions[Random() & 3];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3591,14 +3599,14 @@ movement_type_def(MovementType_FaceUpRightAndLeft, gMovementTypeFuncs_FaceUpLeft
bool8 MovementType_FaceUpLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceUpLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3606,9 +3614,9 @@ bool8 MovementType_FaceUpLeftAndRight_Step2(struct ObjectEvent *objectEvent, str
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3617,7 +3625,7 @@ bool8 MovementType_FaceUpLeftAndRight_Step3(struct ObjectEvent *objectEvent, str
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3634,7 +3642,7 @@ bool8 MovementType_FaceUpLeftAndRight_Step4(struct ObjectEvent *objectEvent, str
direction = directions[Random() & 3];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3643,14 +3651,14 @@ movement_type_def(MovementType_FaceDownRightAndLeft, gMovementTypeFuncs_FaceDown
bool8 MovementType_FaceDownLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3658,9 +3666,9 @@ bool8 MovementType_FaceDownLeftAndRight_Step2(struct ObjectEvent *objectEvent, s
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3669,7 +3677,7 @@ bool8 MovementType_FaceDownLeftAndRight_Step3(struct ObjectEvent *objectEvent, s
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3686,7 +3694,7 @@ bool8 MovementType_FaceDownLeftAndRight_Step4(struct ObjectEvent *objectEvent, s
direction = directions[Random() & 3];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3696,7 +3704,7 @@ bool8 MovementType_RotateCounterclockwise_Step0(struct ObjectEvent *objectEvent,
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3705,7 +3713,7 @@ bool8 MovementType_RotateCounterclockwise_Step1(struct ObjectEvent *objectEvent,
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
SetMovementDelay(sprite, 48);
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
}
return FALSE;
}
@@ -3714,7 +3722,7 @@ bool8 MovementType_RotateCounterclockwise_Step2(struct ObjectEvent *objectEvent,
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3730,7 +3738,7 @@ bool8 MovementType_RotateCounterclockwise_Step3(struct ObjectEvent *objectEvent,
direction = directions[objectEvent->facingDirection];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 0;
+ sprite->sTypeFuncId = 0;
return TRUE;
}
@@ -3740,7 +3748,7 @@ bool8 MovementType_RotateClockwise_Step0(struct ObjectEvent *objectEvent, struct
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3749,7 +3757,7 @@ bool8 MovementType_RotateClockwise_Step1(struct ObjectEvent *objectEvent, struct
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
SetMovementDelay(sprite, 48);
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
}
return FALSE;
}
@@ -3758,7 +3766,7 @@ bool8 MovementType_RotateClockwise_Step2(struct ObjectEvent *objectEvent, struct
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3774,7 +3782,7 @@ bool8 MovementType_RotateClockwise_Step3(struct ObjectEvent *objectEvent, struct
direction = directions[objectEvent->facingDirection];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 0;
+ sprite->sTypeFuncId = 0;
return TRUE;
}
@@ -3783,7 +3791,7 @@ movement_type_def(MovementType_WalkBackAndForth, gMovementTypeFuncs_WalkBackAndF
bool8 MovementType_WalkBackAndForth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3797,7 +3805,7 @@ bool8 MovementType_WalkBackAndForth_Step1(struct ObjectEvent *objectEvent, struc
direction = GetOppositeDirection(direction);
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3825,8 +3833,8 @@ bool8 MovementType_WalkBackAndForth_Step2(struct ObjectEvent *objectEvent, struc
movementActionId = GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection);
ObjectEventSetSingleMovement(objectEvent, sprite, movementActionId);
- objectEvent->singleMovementActive = 1;
- sprite->data[1] = 3;
+ objectEvent->singleMovementActive = TRUE;
+ sprite->sTypeFuncId = 3;
return TRUE;
}
@@ -3834,8 +3842,8 @@ bool8 MovementType_WalkBackAndForth_Step3(struct ObjectEvent *objectEvent, struc
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 1;
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -3843,7 +3851,7 @@ bool8 MovementType_WalkBackAndForth_Step3(struct ObjectEvent *objectEvent, struc
bool8 MovementType_WalkSequence_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3870,8 +3878,8 @@ bool8 MoveNextDirectionInSequence(struct ObjectEvent *objectEvent, struct Sprite
movementActionId = GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection);
ObjectEventSetSingleMovement(objectEvent, sprite, movementActionId);
- objectEvent->singleMovementActive = 1;
- sprite->data[1] = 2;
+ objectEvent->singleMovementActive = TRUE;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3879,8 +3887,8 @@ bool8 MovementType_WalkSequence_Step2(struct ObjectEvent *objectEvent, struct Sp
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 1;
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -4206,7 +4214,7 @@ bool8 MovementType_CopyPlayer_Step0(struct ObjectEvent *objectEvent, struct Spri
{
objectEvent->directionSequenceIndex = GetPlayerFacingDirection();
}
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -4223,8 +4231,8 @@ bool8 MovementType_CopyPlayer_Step2(struct ObjectEvent *objectEvent, struct Spri
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- objectEvent->singleMovementActive = 0;
- sprite->data[1] = 1;
+ objectEvent->singleMovementActive = FALSE;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -4237,8 +4245,8 @@ bool8 CopyablePlayerMovement_None(struct ObjectEvent *objectEvent, struct Sprite
bool8 CopyablePlayerMovement_FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, playerDirection)));
- objectEvent->singleMovementActive = 1;
- sprite->data[1] = 2;
+ objectEvent->singleMovementActive = TRUE;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4258,8 +4266,8 @@ bool8 CopyablePlayerMovement_GoSpeed0(struct ObjectEvent *objectEvent, struct Sp
direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction);
ObjectEventMoveDestCoords(objectEvent, direction, &x, &y);
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
- objectEvent->singleMovementActive = 1;
- sprite->data[1] = 2;
+ objectEvent->singleMovementActive = TRUE;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
}
@@ -4273,8 +4281,8 @@ bool8 CopyablePlayerMovement_GoSpeed0(struct ObjectEvent *objectEvent, struct Sp
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
- objectEvent->singleMovementActive = 1;
- sprite->data[1] = 2;
+ objectEvent->singleMovementActive = TRUE;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4293,7 +4301,7 @@ bool8 CopyablePlayerMovement_GoSpeed1(struct ObjectEvent *objectEvent, struct Sp
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4312,7 +4320,7 @@ bool8 CopyablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, struct Sp
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4331,7 +4339,7 @@ bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprit
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4343,7 +4351,7 @@ bool8 cph_IM_DIFFERENT(struct ObjectEvent *objectEvent, struct Sprite *sprite, u
direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction);
ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpInPlaceMovementAction(direction));
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4362,7 +4370,7 @@ bool8 CopyablePlayerMovement_GoSpeed4(struct ObjectEvent *objectEvent, struct Sp
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4383,7 +4391,7 @@ bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4391,10 +4399,9 @@ movement_type_def(MovementType_CopyPlayerInGrass, gMovementTypeFuncs_CopyPlayerI
bool8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER)
- {
+ if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == MOVEMENT_ACTION_NONE || gPlayerAvatar.tileTransitionState == T_TILE_CENTER)
return FALSE;
- }
+
return gCopyPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), MetatileBehavior_IsPokeGrass);
}
@@ -4402,7 +4409,7 @@ void MovementType_TreeDisguise(struct Sprite *sprite)
{
struct ObjectEvent *objectEvent;
- objectEvent = &gObjectEvents[sprite->data[0]];
+ objectEvent = &gObjectEvents[sprite->sObjEventId];
if (objectEvent->directionSequenceIndex == 0 || (objectEvent->directionSequenceIndex == 1 && !sprite->data[7]))
{
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
@@ -4410,7 +4417,7 @@ void MovementType_TreeDisguise(struct Sprite *sprite)
objectEvent->directionSequenceIndex = 1;
sprite->data[7]++;
}
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Disguise_Callback);
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->sObjEventId], sprite, MovementType_Disguise_Callback);
}
static bool8 MovementType_Disguise_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)
@@ -4423,7 +4430,7 @@ void MovementType_MountainDisguise(struct Sprite *sprite)
{
struct ObjectEvent *objectEvent;
- objectEvent = &gObjectEvents[sprite->data[0]];
+ objectEvent = &gObjectEvents[sprite->sObjEventId];
if (objectEvent->directionSequenceIndex == 0 || (objectEvent->directionSequenceIndex == 1 && !sprite->data[7]))
{
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
@@ -4431,27 +4438,27 @@ void MovementType_MountainDisguise(struct Sprite *sprite)
objectEvent->directionSequenceIndex = 1;
sprite->data[7]++;
}
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Disguise_Callback);
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->sObjEventId], sprite, MovementType_Disguise_Callback);
}
-void MovementType_Hidden(struct Sprite *sprite)
+void MovementType_Buried(struct Sprite *sprite)
{
if (!sprite->data[7])
{
- gObjectEvents[sprite->data[0]].fixedPriority = TRUE;
+ gObjectEvents[sprite->sObjEventId].fixedPriority = TRUE;
sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
sprite->oam.priority = 3;
sprite->data[7]++;
}
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Hidden_Callback);
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->sObjEventId], sprite, MovementType_Buried_Callback);
}
-static bool8 MovementType_Hidden_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 MovementType_Buried_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- return gMovementTypeFuncs_Hidden[sprite->data[1]](objectEvent, sprite);
+ return gMovementTypeFuncs_Buried[sprite->sTypeFuncId](objectEvent, sprite);
}
-bool8 MovementType_Hidden_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementType_Buried_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
return FALSE;
@@ -4461,7 +4468,7 @@ bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Spr
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- sprite->data[1] = 0;
+ sprite->sTypeFuncId = 0;
}
return FALSE;
}
@@ -4472,7 +4479,7 @@ bool8 MovementType_WalkInPlace_Step0(struct ObjectEvent *objectEvent, struct Spr
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -4482,7 +4489,7 @@ bool8 MovementType_WalkSlowlyInPlace_Step0(struct ObjectEvent *objectEvent, stru
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceSlowMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -4492,7 +4499,7 @@ bool8 MovementType_JogInPlace_Step0(struct ObjectEvent *objectEvent, struct Spri
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceFastMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -4502,7 +4509,7 @@ bool8 MovementType_RunInPlace_Step0(struct ObjectEvent *objectEvent, struct Spri
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceFastestMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -4513,14 +4520,14 @@ bool8 MovementType_Invisible_Step0(struct ObjectEvent *objectEvent, struct Sprit
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
objectEvent->invisible = TRUE;
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_Invisible_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
return FALSE;
@@ -4528,169 +4535,157 @@ bool8 MovementType_Invisible_Step1(struct ObjectEvent *objectEvent, struct Sprit
bool8 MovementType_Invisible_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- objectEvent->singleMovementActive = 0;
+ objectEvent->singleMovementActive = FALSE;
return FALSE;
}
static void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- objectEvent->singleMovementActive = 0;
+ objectEvent->singleMovementActive = FALSE;
objectEvent->heldMovementActive = FALSE;
objectEvent->heldMovementFinished = FALSE;
objectEvent->movementActionId = 0xFF;
- sprite->data[1] = 0;
+ sprite->sTypeFuncId = 0;
}
u8 GetFaceDirectionAnimNum(u8 direction)
{
- return gFaceDirectionAnimNums[direction];
+ return sFaceDirectionAnimNums[direction];
}
u8 GetMoveDirectionAnimNum(u8 direction)
{
- return gMoveDirectionAnimNums[direction];
+ return sMoveDirectionAnimNums[direction];
}
u8 GetMoveDirectionFastAnimNum(u8 direction)
{
- return gMoveDirectionFastAnimNums[direction];
+ return sMoveDirectionFastAnimNums[direction];
}
u8 GetMoveDirectionFasterAnimNum(u8 direction)
{
- return gMoveDirectionFasterAnimNums[direction];
+ return sMoveDirectionFasterAnimNums[direction];
}
u8 GetMoveDirectionFastestAnimNum(u8 direction)
{
- return gMoveDirectionFastestAnimNums[direction];
+ return sMoveDirectionFastestAnimNums[direction];
}
u8 GetJumpSpecialDirectionAnimNum(u8 direction)
{
- return gJumpSpecialDirectionAnimNums[direction];
+ return sJumpSpecialDirectionAnimNums[direction];
}
u8 GetAcroWheelieDirectionAnimNum(u8 direction)
{
- return gAcroWheelieDirectionAnimNums[direction];
+ return sAcroWheelieDirectionAnimNums[direction];
}
-u8 Unref_GetAnimNums_08375633(u8 direction)
+u8 GetAcroUnusedDirectionAnimNum(u8 direction)
{
- return gUnrefAnimNums_08375633[direction];
+ return sAcroUnusedDirectionAnimNums[direction];
}
u8 GetAcroEndWheelieDirectionAnimNum(u8 direction)
{
- return gAcroEndWheelieDirectionAnimNums[direction];
+ return sAcroEndWheelieDirectionAnimNums[direction];
}
u8 GetAcroUnusedActionDirectionAnimNum(u8 direction)
{
- return gAcroUnusedActionDirectionAnimNums[direction];
+ return sAcroUnusedActionDirectionAnimNums[direction];
}
u8 GetAcroWheeliePedalDirectionAnimNum(u8 direction)
{
- return gAcroWheeliePedalDirectionAnimNums[direction];
+ return sAcroWheeliePedalDirectionAnimNums[direction];
}
u8 GetFishingDirectionAnimNum(u8 direction)
{
- return gFishingDirectionAnimNums[direction];
+ return sFishingDirectionAnimNums[direction];
}
u8 GetFishingNoCatchDirectionAnimNum(u8 direction)
{
- return gFishingNoCatchDirectionAnimNums[direction];
+ return sFishingNoCatchDirectionAnimNums[direction];
}
u8 GetFishingBiteDirectionAnimNum(u8 direction)
{
- return gFishingBiteDirectionAnimNums[direction];
+ return sFishingBiteDirectionAnimNums[direction];
}
u8 GetRunningDirectionAnimNum(u8 direction)
{
- return gRunningDirectionAnimNums[direction];
+ return sRunningDirectionAnimNums[direction];
}
-static const struct UnkStruct_085094AC *sub_8092A4C(const union AnimCmd *const *anims)
+static const struct StepAnimTable *GetStepAnimTable(const union AnimCmd *const *anims)
{
- const struct UnkStruct_085094AC *retval;
+ const struct StepAnimTable *stepTable;
- for (retval = gUnknown_085094AC; retval->anims != NULL; retval++)
+ for (stepTable = sStepAnimTables; stepTable->anims != NULL; stepTable++)
{
- if (retval->anims == anims)
- {
- return retval;
- }
+ if (stepTable->anims == anims)
+ return stepTable;
}
return NULL;
}
-void npc_apply_anim_looping(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum)
+void SetStepAnimHandleAlternation(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum)
{
- const struct UnkStruct_085094AC *unk85094AC;
+ const struct StepAnimTable *stepTable;
if (!objectEvent->inanimate)
{
sprite->animNum = animNum;
- unk85094AC = sub_8092A4C(sprite->anims);
- if (unk85094AC != NULL)
+ stepTable = GetStepAnimTable(sprite->anims);
+ if (stepTable != NULL)
{
- if (sprite->animCmdIndex == unk85094AC->animPos[0])
- {
- sprite->animCmdIndex = unk85094AC->animPos[3];
- }
- else if (sprite->animCmdIndex == unk85094AC->animPos[1])
- {
- sprite->animCmdIndex = unk85094AC->animPos[2];
- }
+ if (sprite->animCmdIndex == stepTable->animPos[0])
+ sprite->animCmdIndex = stepTable->animPos[3];
+ else if (sprite->animCmdIndex == stepTable->animPos[1])
+ sprite->animCmdIndex = stepTable->animPos[2];
}
SeekSpriteAnim(sprite, sprite->animCmdIndex);
}
}
-void obj_npc_animation_step(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum)
+void SetStepAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum)
{
- const struct UnkStruct_085094AC *unk85094AC;
+ const struct StepAnimTable *stepTable;
if (!objectEvent->inanimate)
{
u8 animPos;
sprite->animNum = animNum;
- unk85094AC = sub_8092A4C(sprite->anims);
- if (unk85094AC != NULL)
+ stepTable = GetStepAnimTable(sprite->anims);
+ if (stepTable != NULL)
{
- animPos = unk85094AC->animPos[1];
- if (sprite->animCmdIndex <= unk85094AC->animPos[0])
- {
- animPos = unk85094AC->animPos[0];
- }
+ animPos = stepTable->animPos[1];
+ if (sprite->animCmdIndex <= stepTable->animPos[0])
+ animPos = stepTable->animPos[0];
+
SeekSpriteAnim(sprite, animPos);
}
}
}
-// file boundary?
-
-u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2)
+u8 GetDirectionToFace(s16 x, s16 y, s16 targetX, s16 targetY)
{
- if (x1 > x2)
- {
+ if (x > targetX)
return DIR_WEST;
- }
- if (x1 < x2)
- {
+
+ if (x < targetX)
return DIR_EAST;
- }
- if (y1 > y2)
- {
+
+ if (y > targetY)
return DIR_NORTH;
- }
+
return DIR_SOUTH;
}
@@ -4700,7 +4695,7 @@ void SetTrainerMovementType(struct ObjectEvent *objectEvent, u8 movementType)
objectEvent->directionSequenceIndex = 0;
objectEvent->playerCopyableMovement = 0;
gSprites[objectEvent->spriteId].callback = sMovementTypeCallbacks[movementType];
- gSprites[objectEvent->spriteId].data[1] = 0;
+ gSprites[objectEvent->spriteId].sTypeFuncId = 0;
}
u8 GetTrainerFacingDirectionMovementType(u8 direction)
@@ -4710,10 +4705,8 @@ u8 GetTrainerFacingDirectionMovementType(u8 direction)
static u8 GetCollisionInDirection(struct ObjectEvent *objectEvent, u8 direction)
{
- s16 x;
- s16 y;
- x = objectEvent->currentCoords.x;
- y = objectEvent->currentCoords.y;
+ s16 x = objectEvent->currentCoords.x;
+ s16 y = objectEvent->currentCoords.y;
MoveCoords(direction, &x, &y);
return GetCollisionAtCoords(objectEvent, x, y, direction);
}
@@ -4760,19 +4753,17 @@ static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *objectEv
{
left = objectEvent->initialCoords.x - objectEvent->rangeX;
right = objectEvent->initialCoords.x + objectEvent->rangeX;
+
if (left > x || right < x)
- {
return TRUE;
- }
}
if (objectEvent->rangeY != 0)
{
top = objectEvent->initialCoords.y - objectEvent->rangeY;
bottom = objectEvent->initialCoords.y + objectEvent->rangeY;
+
if (top > y || bottom < y)
- {
return TRUE;
- }
}
return FALSE;
}
@@ -4814,7 +4805,7 @@ bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup)
u8 objectEventId;
if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)
- && gSprites[gObjectEvents[objectEventId].spriteId].data[7] & 2)
+ && gSprites[gObjectEvents[objectEventId].spriteId].sBerryTreeFlags & BERRY_FLAG_SPARKLING)
{
return TRUE;
}
@@ -4822,23 +4813,27 @@ bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup)
return FALSE;
}
-void sub_8092EF0(u8 localId, u8 mapNum, u8 mapGroup)
+void SetBerryTreeJustPicked(u8 localId, u8 mapNum, u8 mapGroup)
{
u8 objectEventId;
if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId))
{
- gSprites[gObjectEvents[objectEventId].spriteId].data[7] |= 0x04;
+ gSprites[gObjectEvents[objectEventId].spriteId].sBerryTreeFlags |= BERRY_FLAG_JUST_PICKED;
}
}
+#undef sTimer
+#undef sBerryTreeFlags
+
void MoveCoords(u8 direction, s16 *x, s16 *y)
{
*x += sDirectionToVectors[direction].x;
*y += sDirectionToVectors[direction].y;
}
-void sub_8092F60(u8 direction, s16 *x, s16 *y)
+// Unused
+static void MoveCoordsInMapCoordIncrement(u8 direction, s16 *x, s16 *y)
{
*x += sDirectionToVectors[direction].x << 4;
*y += sDirectionToVectors[direction].y << 4;
@@ -4859,7 +4854,7 @@ static void MoveCoordsInDirection(u32 dir, s16 *x, s16 *y, s16 deltaX, s16 delta
*y -= dy2;
}
-void sub_8092FF0(s16 x, s16 y, s16 *destX, s16 *destY)
+void GetMapCoordsFromSpritePos(s16 x, s16 y, s16 *destX, s16 *destY)
{
*destX = (x - gSaveBlock1Ptr->pos.x) << 4;
*destY = (y - gSaveBlock1Ptr->pos.y) << 4;
@@ -4898,22 +4893,18 @@ static void GetObjectEventMovingCameraOffset(s16 *x, s16 *y)
{
*x = 0;
*y = 0;
+
if (gFieldCamera.x > 0)
- {
(*x)++;
- }
+
if (gFieldCamera.x < 0)
- {
- (*x) --;
- }
+ (*x)--;
+
if (gFieldCamera.y > 0)
- {
(*y)++;
- }
+
if (gFieldCamera.y < 0)
- {
- (*y) --;
- }
+ (*y)--;
}
void ObjectEventMoveDestCoords(struct ObjectEvent *objectEvent, u32 direction, s16 *x, s16 *y)
@@ -4949,7 +4940,7 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct
objectEvent->movementActionId = movementActionId;
objectEvent->heldMovementActive = TRUE;
objectEvent->heldMovementFinished = FALSE;
- gSprites[objectEvent->spriteId].data[2] = 0;
+ gSprites[objectEvent->spriteId].sActionFuncId = 0;
return FALSE;
}
@@ -4970,8 +4961,8 @@ void ObjectEventClearHeldMovement(struct ObjectEvent *objectEvent)
objectEvent->movementActionId = 0xFF;
objectEvent->heldMovementActive = FALSE;
objectEvent->heldMovementFinished = FALSE;
- gSprites[objectEvent->spriteId].data[1] = 0;
- gSprites[objectEvent->spriteId].data[2] = 0;
+ gSprites[objectEvent->spriteId].sTypeFuncId = 0;
+ gSprites[objectEvent->spriteId].sActionFuncId = 0;
}
u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent)
@@ -4996,7 +4987,7 @@ u8 ObjectEventGetHeldMovementActionId(struct ObjectEvent *objectEvent)
if (objectEvent->heldMovementActive)
return objectEvent->movementActionId;
- return 0xFF;
+ return MOVEMENT_ACTION_NONE;
}
void UpdateObjectEventCurrentMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite, bool8 (*callback)(struct ObjectEvent *, struct Sprite *))
@@ -5065,10 +5056,10 @@ dirn_to_anim(GetAcroEndWheelieMoveDirectionMovementAction, gAcroEndWheelieMoveDi
u8 GetOppositeDirection(u8 direction)
{
- u8 directions[sizeof gOppositeDirections];
+ u8 directions[sizeof sOppositeDirections];
- memcpy(directions, gOppositeDirections, sizeof gOppositeDirections);
- if (direction < 1 || direction > (sizeof gOppositeDirections))
+ memcpy(directions, sOppositeDirections, sizeof sOppositeDirections);
+ if (direction <= DIR_NONE || direction > (sizeof sOppositeDirections))
{
return direction;
}
@@ -5098,7 +5089,7 @@ static u32 state_to_direction(u8 a0, u32 a1, u32 a2)
static void ObjectEventExecHeldMovementAction(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (gMovementActionFuncs[objectEvent->movementActionId][sprite->data[2]](objectEvent, sprite))
+ if (gMovementActionFuncs[objectEvent->movementActionId][sprite->sActionFuncId](objectEvent, sprite))
{
objectEvent->heldMovementFinished = TRUE;
}
@@ -5106,10 +5097,10 @@ static void ObjectEventExecHeldMovementAction(struct ObjectEvent *objectEvent, s
static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (gMovementActionFuncs[objectEvent->movementActionId][sprite->data[2]](objectEvent, sprite))
+ if (gMovementActionFuncs[objectEvent->movementActionId][sprite->sActionFuncId](objectEvent, sprite))
{
objectEvent->movementActionId = 0xFF;
- sprite->data[2] = 0;
+ sprite->sActionFuncId = 0;
return TRUE;
}
return FALSE;
@@ -5118,16 +5109,16 @@ static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *objectEvent
static void ObjectEventSetSingleMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animId)
{
objectEvent->movementActionId = animId;
- sprite->data[2] = 0;
+ sprite->sActionFuncId = 0;
}
static void FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
SetObjectEventDirection(objectEvent, direction);
ShiftStillObjectEventCoords(objectEvent);
- obj_npc_animation_step(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
+ SetStepAnim(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
sprite->animPaused = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
}
bool8 MovementAction_FaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
@@ -5154,7 +5145,7 @@ bool8 MovementAction_FaceRight_Step0(struct ObjectEvent *objectEvent, struct Spr
return TRUE;
}
-void npc_apply_direction(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
+void InitNpcForMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
{
s16 x;
s16 y;
@@ -5164,34 +5155,34 @@ void npc_apply_direction(struct ObjectEvent *objectEvent, struct Sprite *sprite,
SetObjectEventDirection(objectEvent, direction);
MoveCoords(direction, &x, &y);
ShiftObjectEventCoords(objectEvent, x, y);
- oamt_npc_ministep_reset(sprite, direction, speed);
+ SetSpriteDataForNormalStep(sprite, direction, speed);
sprite->animPaused = FALSE;
- if (gLockedAnimObjectEvents != NULL && FindLockedObjectEventIndex(objectEvent) != OBJECT_EVENTS_COUNT)
- {
+
+ if (sLockedAnimObjectEvents != NULL && FindLockedObjectEventIndex(objectEvent) != OBJECT_EVENTS_COUNT)
sprite->animPaused = TRUE;
- }
+
objectEvent->triggerGroundEffectsOnMove = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
}
-void do_go_anim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
+static void InitMovementNormal(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
{
- u8 (*functions[ARRAY_COUNT(gUnknown_0850DEE8)])(u8);
+ u8 (*functions[ARRAY_COUNT(sDirectionAnimFuncsBySpeed)])(u8);
- memcpy(functions, gUnknown_0850DEE8, sizeof gUnknown_0850DEE8);
- npc_apply_direction(objectEvent, sprite, direction, speed);
- npc_apply_anim_looping(objectEvent, sprite, functions[speed](objectEvent->facingDirection));
+ memcpy(functions, sDirectionAnimFuncsBySpeed, sizeof sDirectionAnimFuncsBySpeed);
+ InitNpcForMovement(objectEvent, sprite, direction, speed);
+ SetStepAnimHandleAlternation(objectEvent, sprite, functions[speed](objectEvent->facingDirection));
}
-void StartRunningAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
+static void StartRunningAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
- npc_apply_direction(objectEvent, sprite, direction, 1);
- npc_apply_anim_looping(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection));
+ InitNpcForMovement(objectEvent, sprite, direction, 1);
+ SetStepAnimHandleAlternation(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection));
}
-bool8 npc_obj_ministep_stop_on_arrival(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 UpdateMovementNormal(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (obj_npc_ministep(sprite))
+ if (NpcTakeStep(sprite))
{
ShiftStillObjectEventCoords(objectEvent);
objectEvent->triggerGroundEffectsOnStop = TRUE;
@@ -5201,7 +5192,7 @@ bool8 npc_obj_ministep_stop_on_arrival(struct ObjectEvent *objectEvent, struct S
return FALSE;
}
-void sub_8093AF0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
+static void InitNpcForWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
s16 x;
s16 y;
@@ -5211,21 +5202,21 @@ void sub_8093AF0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 dire
SetObjectEventDirection(objectEvent, direction);
MoveCoords(direction, &x, &y);
ShiftObjectEventCoords(objectEvent, x, y);
- sub_80976DC(sprite, direction);
+ SetWalkSlowSpriteData(sprite, direction);
sprite->animPaused = FALSE;
objectEvent->triggerGroundEffectsOnMove = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
}
-void sub_8093B60(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
+static void InitWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
- sub_8093AF0(objectEvent, sprite, direction);
- npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
+ InitNpcForWalkSlow(objectEvent, sprite, direction);
+ SetStepAnimHandleAlternation(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
}
-bool8 an_walk_any_2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 UpdateWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80976EC(sprite))
+ if (UpdateWalkSlowAnim(sprite))
{
ShiftStillObjectEventCoords(objectEvent);
objectEvent->triggerGroundEffectsOnStop = TRUE;
@@ -5237,15 +5228,15 @@ bool8 an_walk_any_2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
bool8 MovementAction_WalkSlowDiagonalUpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_NORTHWEST);
+ InitWalkSlow(objectEvent, sprite, DIR_NORTHWEST);
return MovementAction_WalkSlowDiagonalUpLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowDiagonalUpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5253,15 +5244,15 @@ bool8 MovementAction_WalkSlowDiagonalUpLeft_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_WalkSlowDiagonalUpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_NORTHEAST);
+ InitWalkSlow(objectEvent, sprite, DIR_NORTHEAST);
return MovementAction_WalkSlowDiagonalUpRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowDiagonalUpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5269,15 +5260,15 @@ bool8 MovementAction_WalkSlowDiagonalUpRight_Step1(struct ObjectEvent *objectEve
bool8 MovementAction_WalkSlowDiagonalDownLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_SOUTHWEST);
+ InitWalkSlow(objectEvent, sprite, DIR_SOUTHWEST);
return MovementAction_WalkSlowDiagonalDownLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowDiagonalDownLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5285,15 +5276,15 @@ bool8 MovementAction_WalkSlowDiagonalDownLeft_Step1(struct ObjectEvent *objectEv
bool8 MovementAction_WalkSlowDiagonalDownRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_SOUTHEAST);
+ InitWalkSlow(objectEvent, sprite, DIR_SOUTHEAST);
return MovementAction_WalkSlowDiagonalDownRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowDiagonalDownRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5301,15 +5292,15 @@ bool8 MovementAction_WalkSlowDiagonalDownRight_Step1(struct ObjectEvent *objectE
bool8 MovementAction_WalkSlowDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_SOUTH);
+ InitWalkSlow(objectEvent, sprite, DIR_SOUTH);
return MovementAction_WalkSlowDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5317,15 +5308,15 @@ bool8 MovementAction_WalkSlowDown_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkSlowUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_NORTH);
+ InitWalkSlow(objectEvent, sprite, DIR_NORTH);
return MovementAction_WalkSlowUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5333,15 +5324,15 @@ bool8 MovementAction_WalkSlowUp_Step1(struct ObjectEvent *objectEvent, struct Sp
bool8 MovementAction_WalkSlowLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_WEST);
+ InitWalkSlow(objectEvent, sprite, DIR_WEST);
return MovementAction_WalkSlowLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5349,15 +5340,15 @@ bool8 MovementAction_WalkSlowLeft_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkSlowRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_EAST);
+ InitWalkSlow(objectEvent, sprite, DIR_EAST);
return MovementAction_WalkSlowRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5365,15 +5356,15 @@ bool8 MovementAction_WalkSlowRight_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkNormalDiagonalUpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTHWEST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTHWEST, 0);
return MovementAction_WalkNormalDiagonalUpLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalDiagonalUpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5381,15 +5372,15 @@ bool8 MovementAction_WalkNormalDiagonalUpLeft_Step1(struct ObjectEvent *objectEv
bool8 MovementAction_WalkNormalDiagonalUpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTHEAST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTHEAST, 0);
return MovementAction_WalkNormalDiagonalUpRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalDiagonalUpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5397,15 +5388,15 @@ bool8 MovementAction_WalkNormalDiagonalUpRight_Step1(struct ObjectEvent *objectE
bool8 MovementAction_WalkNormalDiagonalDownLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTHWEST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTHWEST, 0);
return MovementAction_WalkNormalDiagonalDownLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalDiagonalDownLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5413,15 +5404,15 @@ bool8 MovementAction_WalkNormalDiagonalDownLeft_Step1(struct ObjectEvent *object
bool8 MovementAction_WalkNormalDiagonalDownRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTHEAST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTHEAST, 0);
return MovementAction_WalkNormalDiagonalDownRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5429,15 +5420,15 @@ bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objec
bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTH, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 0);
return MovementAction_WalkNormalDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5445,15 +5436,15 @@ bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTH, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, 0);
return MovementAction_WalkNormalUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5461,15 +5452,15 @@ bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 0);
return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5477,65 +5468,74 @@ bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 0);
return MovementAction_WalkNormalRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8093FC4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a5)
+#define JUMP_HALFWAY 1
+#define JUMP_FINISHED ((u8)-1)
+
+enum {
+ JUMP_TYPE_HIGH,
+ JUMP_TYPE_LOW,
+ JUMP_TYPE_NORMAL,
+};
+
+static void InitJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 type)
{
- s16 displacements[ARRAY_COUNT(gUnknown_0850DFBC)];
+ s16 displacements[ARRAY_COUNT(sJumpInitDisplacements)];
s16 x;
s16 y;
- memcpy(displacements, gUnknown_0850DFBC, sizeof gUnknown_0850DFBC);
+ memcpy(displacements, sJumpInitDisplacements, sizeof sJumpInitDisplacements);
x = 0;
y = 0;
SetObjectEventDirection(objectEvent, direction);
MoveCoordsInDirection(direction, &x, &y, displacements[speed], displacements[speed]);
ShiftObjectEventCoords(objectEvent, objectEvent->currentCoords.x + x, objectEvent->currentCoords.y + y);
- sub_809783C(sprite, direction, speed, a5);
- sprite->data[2] = 1;
- sprite->animPaused = 0;
- objectEvent->triggerGroundEffectsOnMove = 1;
- objectEvent->disableCoveringGroundEffects = 1;
+ SetJumpSpriteData(sprite, direction, speed, type);
+ sprite->sActionFuncId = 1;
+ sprite->animPaused = FALSE;
+ objectEvent->triggerGroundEffectsOnMove = TRUE;
+ objectEvent->disableCoveringGroundEffects = TRUE;
}
-void maybe_shadow_1(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a4)
+static void InitJumpRegular(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 type)
{
- sub_8093FC4(objectEvent, sprite, direction, speed, a4);
- npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
+ InitJump(objectEvent, sprite, direction, speed, type);
+ SetStepAnimHandleAlternation(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
DoShadowFieldEffect(objectEvent);
}
-u8 sub_80940C4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 callback(struct Sprite *))
+static u8 UpdateJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 callback(struct Sprite *))
{
- s16 displacements[ARRAY_COUNT(gUnknown_0850DFC2)];
+ s16 displacements[ARRAY_COUNT(sJumpDisplacements)];
s16 x;
s16 y;
u8 result;
- memcpy(displacements, gUnknown_0850DFC2, sizeof gUnknown_0850DFC2);
+ memcpy(displacements, sJumpDisplacements, sizeof sJumpDisplacements);
result = callback(sprite);
- if (result == 1 && displacements[sprite->data[4]] != 0)
+ if (result == JUMP_HALFWAY && displacements[sprite->sSpeed] != 0)
{
x = 0;
y = 0;
- MoveCoordsInDirection(objectEvent->movementDirection, &x, &y, displacements[sprite->data[4]], displacements[sprite->data[4]]);
+ MoveCoordsInDirection(objectEvent->movementDirection, &x, &y, displacements[sprite->sSpeed], displacements[sprite->sSpeed]);
ShiftObjectEventCoords(objectEvent, objectEvent->currentCoords.x + x, objectEvent->currentCoords.y + y);
objectEvent->triggerGroundEffectsOnMove = TRUE;
objectEvent->disableCoveringGroundEffects = TRUE;
}
- else if (result == 0xFF)
+ else if (result == JUMP_FINISHED)
{
ShiftStillObjectEventCoords(objectEvent);
objectEvent->triggerGroundEffectsOnStop = TRUE;
@@ -5545,43 +5545,41 @@ u8 sub_80940C4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 callba
return result;
}
-u8 sub_8094188(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static u8 DoJumpAnimStep(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- return sub_80940C4(objectEvent, sprite, sub_809785C);
+ return UpdateJumpAnim(objectEvent, sprite, DoJumpSpriteMovement);
}
-u8 sub_809419C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static u8 DoJumpSpecialAnimStep(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- return sub_80940C4(objectEvent, sprite, sub_80978E4);
+ return UpdateJumpAnim(objectEvent, sprite, DoJumpSpecialSpriteMovement);
}
-bool8 sub_80941B0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 DoJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_8094188(objectEvent, sprite) == 0xFF)
- {
+ if (DoJumpAnimStep(objectEvent, sprite) == JUMP_FINISHED)
return TRUE;
- }
+
return FALSE;
}
-bool8 sub_80941C8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 DoJumpSpecialAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_809419C(objectEvent, sprite) == 0xFF)
- {
+ if (DoJumpSpecialAnimStep(objectEvent, sprite) == JUMP_FINISHED)
return TRUE;
- }
+
return FALSE;
}
-bool8 sub_80941E0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 DoJumpInPlaceAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- switch (sub_8094188(objectEvent, sprite))
+ switch (DoJumpAnimStep(objectEvent, sprite))
{
- case 255:
+ case JUMP_FINISHED:
return TRUE;
- case 1:
+ case JUMP_HALFWAY:
SetObjectEventDirection(objectEvent, GetOppositeDirection(objectEvent->movementDirection));
- obj_npc_animation_step(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
+ SetStepAnim(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
default:
return FALSE;
}
@@ -5589,16 +5587,16 @@ bool8 sub_80941E0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 2, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 2, JUMP_TYPE_HIGH);
return MovementAction_Jump2Down_Step1(objectEvent, sprite);
}
bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5606,16 +5604,16 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 2, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_NORTH, 2, JUMP_TYPE_HIGH);
return MovementAction_Jump2Up_Step1(objectEvent, sprite);
}
bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5623,16 +5621,16 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit
bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_WEST, 2, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_WEST, 2, JUMP_TYPE_HIGH);
return MovementAction_Jump2Left_Step1(objectEvent, sprite);
}
bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5640,33 +5638,32 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_EAST, 2, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_EAST, 2, JUMP_TYPE_HIGH);
return MovementAction_Jump2Right_Step1(objectEvent, sprite);
}
bool8 MovementAction_Jump2Right_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-
-void sub_8094390(struct Sprite *sprite, u16 duration)
+static void InitMovementDelay(struct Sprite *sprite, u16 duration)
{
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
sprite->data[3] = duration;
}
bool8 MovementAction_Delay_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (-- sprite->data[3] == 0)
+ if (--sprite->data[3] == 0)
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5674,45 +5671,45 @@ bool8 MovementAction_Delay_Step1(struct ObjectEvent *objectEvent, struct Sprite
bool8 MovementAction_Delay1_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094390(sprite, 1);
+ InitMovementDelay(sprite, 1);
return MovementAction_Delay_Step1(objectEvent, sprite);
}
bool8 MovementAction_Delay2_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094390(sprite, 2);
+ InitMovementDelay(sprite, 2);
return MovementAction_Delay_Step1(objectEvent, sprite);
}
bool8 MovementAction_Delay4_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094390(sprite, 4);
+ InitMovementDelay(sprite, 4);
return MovementAction_Delay_Step1(objectEvent, sprite);
}
bool8 MovementAction_Delay8_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094390(sprite, 8);
+ InitMovementDelay(sprite, 8);
return MovementAction_Delay_Step1(objectEvent, sprite);
}
bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094390(sprite, 16);
+ InitMovementDelay(sprite, 16);
return MovementAction_Delay_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTH, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 1);
return MovementAction_WalkFastDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5720,15 +5717,15 @@ bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTH, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, 1);
return MovementAction_WalkFastUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5736,15 +5733,15 @@ bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sp
bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 1);
return MovementAction_WalkFastLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5752,27 +5749,27 @@ bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 1);
return MovementAction_WalkFastRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8094554(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum, u16 duration)
+static void InitMoveInPlace(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum, u16 duration)
{
SetObjectEventDirection(objectEvent, direction);
- npc_apply_anim_looping(objectEvent, sprite, animNum);
+ SetStepAnimHandleAlternation(objectEvent, sprite, animNum);
sprite->animPaused = FALSE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
sprite->data[3] = duration;
}
@@ -5780,7 +5777,7 @@ bool8 MovementAction_WalkInPlace_Step1(struct ObjectEvent *objectEvent, struct S
{
if (-- sprite->data[3] == 0)
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
sprite->animPaused = TRUE;
return TRUE;
}
@@ -5798,111 +5795,111 @@ bool8 MovementAction_WalkInPlaceSlow_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 32);
+ InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 32);
return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceSlowUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32);
+ InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32);
return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceSlowLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 32);
+ InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 32);
return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceSlowRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 32);
+ InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 32);
return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 16);
+ InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 16);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 16);
+ InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 16);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 16);
+ InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 16);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 16);
+ InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 16);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastAnimNum(DIR_SOUTH), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastAnimNum(DIR_SOUTH), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFastAnimNum(DIR_NORTH), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFastAnimNum(DIR_NORTH), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_WEST, GetMoveDirectionFastAnimNum(DIR_WEST), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionFastAnimNum(DIR_WEST), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_EAST, GetMoveDirectionFastAnimNum(DIR_EAST), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionFastAnimNum(DIR_EAST), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastestDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFasterAnimNum(DIR_SOUTH), 4);
+ InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFasterAnimNum(DIR_SOUTH), 4);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastestUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFasterAnimNum(DIR_NORTH), 4);
+ InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFasterAnimNum(DIR_NORTH), 4);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastestLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_WEST, GetMoveDirectionFasterAnimNum(DIR_WEST), 4);
+ InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionFasterAnimNum(DIR_WEST), 4);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastestRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_EAST, GetMoveDirectionFasterAnimNum(DIR_EAST), 4);
+ InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionFasterAnimNum(DIR_EAST), 4);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_RideWaterCurrentDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTH, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 2);
return MovementAction_RideWaterCurrentDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5910,15 +5907,15 @@ bool8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_RideWaterCurrentUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTH, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, 2);
return MovementAction_RideWaterCurrentUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_RideWaterCurrentUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5926,15 +5923,15 @@ bool8 MovementAction_RideWaterCurrentUp_Step1(struct ObjectEvent *objectEvent, s
bool8 MovementAction_RideWaterCurrentLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 2);
return MovementAction_RideWaterCurrentLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5942,15 +5939,15 @@ bool8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_RideWaterCurrentRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 2);
return MovementAction_RideWaterCurrentRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5958,15 +5955,15 @@ bool8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *objectEvent
bool8 MovementAction_WalkFastestDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTH, 3);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 3);
return MovementAction_WalkFastestDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5974,15 +5971,15 @@ bool8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_WalkFastestUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTH, 3);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, 3);
return MovementAction_WalkFastestUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5990,15 +5987,15 @@ bool8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkFastestLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 3);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 3);
return MovementAction_WalkFastestLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6006,15 +6003,15 @@ bool8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_WalkFastestRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 3);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 3);
return MovementAction_WalkFastestRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6022,15 +6019,15 @@ bool8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *objectEvent, str
bool8 MovementAction_SlideDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTH, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 4);
return MovementAction_SlideDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_SlideDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6038,15 +6035,15 @@ bool8 MovementAction_SlideDown_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_SlideUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTH, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, 4);
return MovementAction_SlideUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_SlideUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6054,15 +6051,15 @@ bool8 MovementAction_SlideUp_Step1(struct ObjectEvent *objectEvent, struct Sprit
bool8 MovementAction_SlideLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 4);
return MovementAction_SlideLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_SlideLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6070,15 +6067,15 @@ bool8 MovementAction_SlideLeft_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_SlideRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 4);
return MovementAction_SlideRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_SlideRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6092,9 +6089,9 @@ bool8 MovementAction_PlayerRunDown_Step0(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_PlayerRunDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6108,9 +6105,9 @@ bool8 MovementAction_PlayerRunUp_Step0(struct ObjectEvent *objectEvent, struct S
bool8 MovementAction_PlayerRunUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6124,9 +6121,9 @@ bool8 MovementAction_PlayerRunLeft_Step0(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_PlayerRunLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6140,9 +6137,9 @@ bool8 MovementAction_PlayerRunRight_Step0(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_PlayerRunRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6152,7 +6149,7 @@ void StartSpriteAnimInDirection(struct ObjectEvent *objectEvent, struct Sprite *
{
SetAndStartSpriteAnim(sprite, animNum, 0);
SetObjectEventDirection(objectEvent, direction);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
}
bool8 MovementAction_StartAnimInDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
@@ -6165,29 +6162,29 @@ bool8 MovementAction_WaitSpriteAnim(struct ObjectEvent *objectEvent, struct Spri
{
if (SpriteAnimEnded(sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8094DE4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
+static void InitJumpSpecial(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
- sub_8093FC4(objectEvent, sprite, direction, 1, 0);
+ InitJump(objectEvent, sprite, direction, 1, JUMP_TYPE_HIGH);
StartSpriteAnim(sprite, GetJumpSpecialDirectionAnimNum(direction));
}
bool8 MovementAction_JumpSpecialDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094DE4(objectEvent, sprite, DIR_SOUTH);
+ InitJumpSpecial(objectEvent, sprite, DIR_SOUTH);
return MovementAction_JumpSpecialDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpSpecialDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941C8(objectEvent, sprite))
+ if (DoJumpSpecialAnim(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
objectEvent->landingJump = FALSE;
return TRUE;
}
@@ -6196,15 +6193,15 @@ bool8 MovementAction_JumpSpecialDown_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_JumpSpecialUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094DE4(objectEvent, sprite, DIR_NORTH);
+ InitJumpSpecial(objectEvent, sprite, DIR_NORTH);
return MovementAction_JumpSpecialUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpSpecialUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941C8(objectEvent, sprite))
+ if (DoJumpSpecialAnim(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
objectEvent->landingJump = FALSE;
return TRUE;
}
@@ -6213,15 +6210,15 @@ bool8 MovementAction_JumpSpecialUp_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_JumpSpecialLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094DE4(objectEvent, sprite, DIR_WEST);
+ InitJumpSpecial(objectEvent, sprite, DIR_WEST);
return MovementAction_JumpSpecialLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpSpecialLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941C8(objectEvent, sprite))
+ if (DoJumpSpecialAnim(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
objectEvent->landingJump = FALSE;
return TRUE;
}
@@ -6230,15 +6227,15 @@ bool8 MovementAction_JumpSpecialLeft_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_JumpSpecialRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094DE4(objectEvent, sprite, DIR_EAST);
+ InitJumpSpecial(objectEvent, sprite, DIR_EAST);
return MovementAction_JumpSpecialRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpSpecialRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941C8(objectEvent, sprite))
+ if (DoJumpSpecialAnim(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
objectEvent->landingJump = FALSE;
return TRUE;
}
@@ -6253,7 +6250,7 @@ bool8 MovementAction_FacePlayer_Step0(struct ObjectEvent *objectEvent, struct Sp
{
FaceDirection(objectEvent, sprite, GetDirectionToFace(objectEvent->currentCoords.x, objectEvent->currentCoords.y, gObjectEvents[playerObjectId].currentCoords.x, gObjectEvents[playerObjectId].currentCoords.y));
}
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6265,36 +6262,36 @@ bool8 MovementAction_FaceAwayPlayer_Step0(struct ObjectEvent *objectEvent, struc
{
FaceDirection(objectEvent, sprite, GetOppositeDirection(GetDirectionToFace(objectEvent->currentCoords.x, objectEvent->currentCoords.y, gObjectEvents[playerObjectId].currentCoords.x, gObjectEvents[playerObjectId].currentCoords.y)));
}
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_LockFacingDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->facingDirectionLocked = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_UnlockFacingDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->facingDirectionLocked = FALSE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_JumpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 1, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 1, JUMP_TYPE_NORMAL);
return MovementAction_JumpDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6302,16 +6299,16 @@ bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Spri
bool8 MovementAction_JumpUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 1, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_NORTH, 1, JUMP_TYPE_NORMAL);
return MovementAction_JumpUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6319,16 +6316,16 @@ bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite
bool8 MovementAction_JumpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_WEST, 1, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_WEST, 1, JUMP_TYPE_NORMAL);
return MovementAction_JumpLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6336,16 +6333,16 @@ bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Spri
bool8 MovementAction_JumpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_EAST, 1, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_EAST, 1, JUMP_TYPE_NORMAL);
return MovementAction_JumpRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6353,16 +6350,16 @@ bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_JumpInPlaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 0, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 0, JUMP_TYPE_HIGH);
return MovementAction_JumpInPlaceDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6370,16 +6367,16 @@ bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_JumpInPlaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 0, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_NORTH, 0, JUMP_TYPE_HIGH);
return MovementAction_JumpInPlaceUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6387,16 +6384,16 @@ bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_JumpInPlaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_WEST, 0, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_WEST, 0, JUMP_TYPE_HIGH);
return MovementAction_JumpInPlaceLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6404,16 +6401,16 @@ bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_JumpInPlaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_EAST, 0, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_EAST, 0, JUMP_TYPE_HIGH);
return MovementAction_JumpInPlaceRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6421,16 +6418,16 @@ bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, str
bool8 MovementAction_JumpInPlaceDownUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 0, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 0, JUMP_TYPE_NORMAL);
return MovementAction_JumpInPlaceDownUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941E0(objectEvent, sprite))
+ if (DoJumpInPlaceAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6438,16 +6435,16 @@ bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, st
bool8 MovementAction_JumpInPlaceUpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 0, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_NORTH, 0, JUMP_TYPE_NORMAL);
return MovementAction_JumpInPlaceUpDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941E0(objectEvent, sprite))
+ if (DoJumpInPlaceAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6455,16 +6452,16 @@ bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, st
bool8 MovementAction_JumpInPlaceLeftRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_WEST, 0, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_WEST, 0, JUMP_TYPE_NORMAL);
return MovementAction_JumpInPlaceLeftRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941E0(objectEvent, sprite))
+ if (DoJumpInPlaceAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6472,16 +6469,16 @@ bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_JumpInPlaceRightLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_EAST, 0, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_EAST, 0, JUMP_TYPE_NORMAL);
return MovementAction_JumpInPlaceRightLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941E0(objectEvent, sprite))
+ if (DoJumpInPlaceAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6502,42 +6499,42 @@ bool8 MovementAction_NurseJoyBowDown_Step0(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_EnableJumpLandingGroundEffect_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->disableJumpLandingGroundEffect = FALSE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_DisableJumpLandingGroundEffect_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->disableJumpLandingGroundEffect = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_DisableAnimation_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->inanimate = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_RestoreAnimation_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->inanimate = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->inanimate;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_SetInvisible_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->invisible = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_SetVisible_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->invisible = FALSE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6545,7 +6542,7 @@ bool8 MovementAction_EmoteExclamationMark_Step0(struct ObjectEvent *objectEvent,
{
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6553,7 +6550,7 @@ bool8 MovementAction_EmoteQuestionMark_Step0(struct ObjectEvent *objectEvent, st
{
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_QUESTION_MARK_ICON);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6561,32 +6558,32 @@ bool8 MovementAction_EmoteHeart_Step0(struct ObjectEvent *objectEvent, struct Sp
{
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_HEART_ICON);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_RevealTrainer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (objectEvent->movementType == MOVEMENT_TYPE_HIDDEN)
+ if (objectEvent->movementType == MOVEMENT_TYPE_BURIED)
{
- sub_80B4578(objectEvent);
+ SetBuriedTrainerMovement(objectEvent);
return FALSE;
}
if (objectEvent->movementType != MOVEMENT_TYPE_TREE_DISGUISE && objectEvent->movementType != MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
- sub_8155D78(objectEvent);
- sprite->data[2] = 1;
+ StartRevealDisguise(objectEvent);
+ sprite->sActionFuncId = 1;
return MovementAction_RevealTrainer_Step1(objectEvent, sprite);
}
bool8 MovementAction_RevealTrainer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_8155DA0(objectEvent))
+ if (UpdateRevealDisguise(objectEvent))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6595,7 +6592,7 @@ bool8 MovementAction_RevealTrainer_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_RockSmashBreak_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
SetAndStartSpriteAnim(sprite, 1, 0);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return FALSE;
}
@@ -6604,7 +6601,7 @@ bool8 MovementAction_RockSmashBreak_Step1(struct ObjectEvent *objectEvent, struc
if (SpriteAnimEnded(sprite))
{
SetMovementDelay(sprite, 32);
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
}
return FALSE;
}
@@ -6615,7 +6612,7 @@ bool8 MovementAction_RockSmashBreak_Step2(struct ObjectEvent *objectEvent, struc
if (WaitForMovementDelay(sprite))
{
objectEvent->invisible = TRUE;
- sprite->data[2] = 3;
+ sprite->sActionFuncId = 3;
}
return FALSE;
}
@@ -6623,7 +6620,7 @@ bool8 MovementAction_RockSmashBreak_Step2(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_CutTree_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
SetAndStartSpriteAnim(sprite, 1, 0);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return FALSE;
}
@@ -6632,7 +6629,7 @@ bool8 MovementAction_CutTree_Step1(struct ObjectEvent *objectEvent, struct Sprit
if (SpriteAnimEnded(sprite))
{
SetMovementDelay(sprite, 32);
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
}
return FALSE;
}
@@ -6643,7 +6640,7 @@ bool8 MovementAction_CutTree_Step2(struct ObjectEvent *objectEvent, struct Sprit
if (WaitForMovementDelay(sprite))
{
objectEvent->invisible = TRUE;
- sprite->data[2] = 3;
+ sprite->sActionFuncId = 3;
}
return FALSE;
}
@@ -6651,14 +6648,14 @@ bool8 MovementAction_CutTree_Step2(struct ObjectEvent *objectEvent, struct Sprit
bool8 MovementAction_SetFixedPriority_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->fixedPriority = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_ClearFixedPriority_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->fixedPriority = FALSE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6693,7 +6690,7 @@ bool8 MovementAction_ShowReflection_Step0(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkDownStartAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_SOUTH);
+ InitWalkSlow(objectEvent, sprite, DIR_SOUTH);
sprite->affineAnimPaused = FALSE;
StartSpriteAffineAnimIfDifferent(sprite, 0);
return MovementAction_WalkDownStartAffine_Step1(objectEvent, sprite);
@@ -6701,10 +6698,10 @@ bool8 MovementAction_WalkDownStartAffine_Step0(struct ObjectEvent *objectEvent,
bool8 MovementAction_WalkDownStartAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
sprite->affineAnimPaused = TRUE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6712,7 +6709,7 @@ bool8 MovementAction_WalkDownStartAffine_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_WalkDownAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_SOUTH);
+ InitWalkSlow(objectEvent, sprite, DIR_SOUTH);
sprite->affineAnimPaused = FALSE;
ChangeSpriteAffineAnimIfDifferent(sprite, 1);
return MovementAction_WalkDownAffine_Step1(objectEvent, sprite);
@@ -6720,10 +6717,10 @@ bool8 MovementAction_WalkDownAffine_Step0(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkDownAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
sprite->affineAnimPaused = TRUE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6731,7 +6728,7 @@ bool8 MovementAction_WalkDownAffine_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkLeftAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 1);
sprite->affineAnimPaused = FALSE;
ChangeSpriteAffineAnimIfDifferent(sprite, 2);
return MovementAction_WalkLeftAffine_Step1(objectEvent, sprite);
@@ -6739,10 +6736,10 @@ bool8 MovementAction_WalkLeftAffine_Step0(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkLeftAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
sprite->affineAnimPaused = TRUE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6750,7 +6747,7 @@ bool8 MovementAction_WalkLeftAffine_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkRightAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 1);
sprite->affineAnimPaused = FALSE;
ChangeSpriteAffineAnimIfDifferent(sprite, 3);
return MovementAction_WalkRightAffine_Step1(objectEvent, sprite);
@@ -6758,45 +6755,45 @@ bool8 MovementAction_WalkRightAffine_Step0(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_WalkRightAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
sprite->affineAnimPaused = TRUE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-static void sub_80958C0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
+static void AcroWheelieFaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
SetObjectEventDirection(objectEvent, direction);
ShiftStillObjectEventCoords(objectEvent);
- obj_npc_animation_step(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(direction));
+ SetStepAnim(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(direction));
sprite->animPaused = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
}
bool8 MovementAction_AcroWheelieFaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80958C0(objectEvent, sprite, DIR_SOUTH);
+ AcroWheelieFaceDirection(objectEvent, sprite, DIR_SOUTH);
return TRUE;
}
bool8 MovementAction_AcroWheelieFaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80958C0(objectEvent, sprite, DIR_NORTH);
+ AcroWheelieFaceDirection(objectEvent, sprite, DIR_NORTH);
return TRUE;
}
bool8 MovementAction_AcroWheelieFaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80958C0(objectEvent, sprite, DIR_WEST);
+ AcroWheelieFaceDirection(objectEvent, sprite, DIR_WEST);
return TRUE;
}
bool8 MovementAction_AcroWheelieFaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80958C0(objectEvent, sprite, DIR_EAST);
+ AcroWheelieFaceDirection(objectEvent, sprite, DIR_EAST);
return TRUE;
}
@@ -6893,7 +6890,7 @@ bool8 DoFigure8Anim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
bool8 MovementAction_Figure8_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
InitFigure8Anim(objectEvent, sprite);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return MovementAction_Figure8_Step1(objectEvent, sprite);
}
@@ -6901,31 +6898,31 @@ bool8 MovementAction_Figure8_Step1(struct ObjectEvent *objectEvent, struct Sprit
{
if (DoFigure8Anim(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8095B84(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a4)
+static void InitAcroWheelieJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 type)
{
- sub_8093FC4(objectEvent, sprite, direction, speed, a4);
+ InitJump(objectEvent, sprite, direction, speed, type);
StartSpriteAnimIfDifferent(sprite, GetAcroWheelieDirectionAnimNum(direction));
DoShadowFieldEffect(objectEvent);
}
bool8 MovementAction_AcroWheelieHopFaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_SOUTH, 0, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_SOUTH, 0, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopFaceDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6933,16 +6930,16 @@ bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroWheelieHopFaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_NORTH, 0, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_NORTH, 0, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopFaceUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6950,16 +6947,16 @@ bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieHopFaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_WEST, 0, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_WEST, 0, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopFaceLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6967,16 +6964,16 @@ bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroWheelieHopFaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_EAST, 0, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_EAST, 0, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopFaceRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6984,16 +6981,16 @@ bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEve
bool8 MovementAction_AcroWheelieHopDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_SOUTH, 1, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_SOUTH, 1, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7001,16 +6998,16 @@ bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, s
bool8 MovementAction_AcroWheelieHopUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_NORTH, 1, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_NORTH, 1, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7018,16 +7015,16 @@ bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, str
bool8 MovementAction_AcroWheelieHopLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_WEST, 1, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_WEST, 1, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7035,16 +7032,16 @@ bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, s
bool8 MovementAction_AcroWheelieHopRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_EAST, 1, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_EAST, 1, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7052,16 +7049,16 @@ bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieJumpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_SOUTH, 2, 0);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_SOUTH, 2, JUMP_TYPE_HIGH);
return MovementAction_AcroWheelieJumpDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7069,16 +7066,16 @@ bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieJumpUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_NORTH, 2, 0);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_NORTH, 2, JUMP_TYPE_HIGH);
return MovementAction_AcroWheelieJumpUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7086,16 +7083,16 @@ bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, st
bool8 MovementAction_AcroWheelieJumpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_WEST, 2, 0);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_WEST, 2, JUMP_TYPE_HIGH);
return MovementAction_AcroWheelieJumpLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7103,16 +7100,16 @@ bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieJumpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_EAST, 2, 0);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_EAST, 2, JUMP_TYPE_HIGH);
return MovementAction_AcroWheelieJumpRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7120,46 +7117,46 @@ bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieInPlaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_SOUTH, GetAcroWheeliePedalDirectionAnimNum(DIR_SOUTH), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetAcroWheeliePedalDirectionAnimNum(DIR_SOUTH), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieInPlaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_NORTH, GetAcroWheeliePedalDirectionAnimNum(DIR_NORTH), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetAcroWheeliePedalDirectionAnimNum(DIR_NORTH), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieInPlaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_WEST, GetAcroWheeliePedalDirectionAnimNum(DIR_WEST), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetAcroWheeliePedalDirectionAnimNum(DIR_WEST), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieInPlaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_EAST, GetAcroWheeliePedalDirectionAnimNum(DIR_EAST), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetAcroWheeliePedalDirectionAnimNum(DIR_EAST), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
-void sub_80960C8(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
+static void InitAcroPopWheelie(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
{
- npc_apply_direction(objectEvent, sprite, direction, speed);
+ InitNpcForMovement(objectEvent, sprite, direction, speed);
StartSpriteAnim(sprite, GetAcroWheelieDirectionAnimNum(objectEvent->facingDirection));
SeekSpriteAnim(sprite, 0);
}
bool8 MovementAction_AcroPopWheelieMoveDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80960C8(objectEvent, sprite, DIR_SOUTH, 1);
+ InitAcroPopWheelie(objectEvent, sprite, DIR_SOUTH, 1);
return MovementAction_AcroPopWheelieMoveDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroPopWheelieMoveDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7167,15 +7164,15 @@ bool8 MovementAction_AcroPopWheelieMoveDown_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroPopWheelieMoveUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80960C8(objectEvent, sprite, DIR_NORTH, 1);
+ InitAcroPopWheelie(objectEvent, sprite, DIR_NORTH, 1);
return MovementAction_AcroPopWheelieMoveUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroPopWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7183,15 +7180,15 @@ bool8 MovementAction_AcroPopWheelieMoveUp_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroPopWheelieMoveLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80960C8(objectEvent, sprite, DIR_WEST, 1);
+ InitAcroPopWheelie(objectEvent, sprite, DIR_WEST, 1);
return MovementAction_AcroPopWheelieMoveLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7199,37 +7196,37 @@ bool8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroPopWheelieMoveRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80960C8(objectEvent, sprite, DIR_EAST, 1);
+ InitAcroPopWheelie(objectEvent, sprite, DIR_EAST, 1);
return MovementAction_AcroPopWheelieMoveRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroPopWheelieMoveRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8096200(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
+static void InitAcroWheelieMove(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
{
- npc_apply_direction(objectEvent, sprite, direction, speed);
- npc_apply_anim_looping(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(objectEvent->facingDirection));
+ InitNpcForMovement(objectEvent, sprite, direction, speed);
+ SetStepAnimHandleAlternation(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(objectEvent->facingDirection));
}
bool8 MovementAction_AcroWheelieMoveDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096200(objectEvent, sprite, DIR_SOUTH, 1);
+ InitAcroWheelieMove(objectEvent, sprite, DIR_SOUTH, 1);
return MovementAction_AcroWheelieMoveDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieMoveDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7237,15 +7234,15 @@ bool8 MovementAction_AcroWheelieMoveDown_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieMoveUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096200(objectEvent, sprite, DIR_NORTH, 1);
+ InitAcroWheelieMove(objectEvent, sprite, DIR_NORTH, 1);
return MovementAction_AcroWheelieMoveUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7253,15 +7250,15 @@ bool8 MovementAction_AcroWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, st
bool8 MovementAction_AcroWheelieMoveLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096200(objectEvent, sprite, DIR_WEST, 1);
+ InitAcroWheelieMove(objectEvent, sprite, DIR_WEST, 1);
return MovementAction_AcroWheelieMoveLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7269,38 +7266,38 @@ bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieMoveRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096200(objectEvent, sprite, DIR_EAST, 1);
+ InitAcroWheelieMove(objectEvent, sprite, DIR_EAST, 1);
return MovementAction_AcroWheelieMoveRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieMoveRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8096330(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
+static void InitAcroEndWheelie(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
{
- npc_apply_direction(objectEvent, sprite, direction, speed);
+ InitNpcForMovement(objectEvent, sprite, direction, speed);
StartSpriteAnim(sprite, GetAcroEndWheelieDirectionAnimNum(objectEvent->facingDirection));
SeekSpriteAnim(sprite, 0);
}
bool8 MovementAction_AcroEndWheelieMoveDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096330(objectEvent, sprite, DIR_SOUTH, 1);
+ InitAcroEndWheelie(objectEvent, sprite, DIR_SOUTH, 1);
return MovementAction_AcroEndWheelieMoveDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroEndWheelieMoveDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7308,15 +7305,15 @@ bool8 MovementAction_AcroEndWheelieMoveDown_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroEndWheelieMoveUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096330(objectEvent, sprite, DIR_NORTH, 1);
+ InitAcroEndWheelie(objectEvent, sprite, DIR_NORTH, 1);
return MovementAction_AcroEndWheelieMoveUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroEndWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7324,15 +7321,15 @@ bool8 MovementAction_AcroEndWheelieMoveUp_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroEndWheelieMoveLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096330(objectEvent, sprite, DIR_WEST, 1);
+ InitAcroEndWheelie(objectEvent, sprite, DIR_WEST, 1);
return MovementAction_AcroEndWheelieMoveLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7340,15 +7337,15 @@ bool8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroEndWheelieMoveRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096330(objectEvent, sprite, DIR_EAST, 1);
+ InitAcroEndWheelie(objectEvent, sprite, DIR_EAST, 1);
return MovementAction_AcroEndWheelieMoveRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroEndWheelieMoveRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7357,24 +7354,24 @@ bool8 MovementAction_AcroEndWheelieMoveRight_Step1(struct ObjectEvent *objectEve
bool8 MovementAction_Levitate_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
CreateLevitateMovementTask(objectEvent);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_StopLevitate_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- DestroyExtraMovementTask(objectEvent->warpArrowSpriteId);
+ DestroyLevitateMovementTask(objectEvent->warpArrowSpriteId);
sprite->pos2.y = 0;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
-bool8 MovementAction_DestroyExtraTaskIfAtTop_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementAction_StopLevitateAtTop_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (sprite->pos2.y == 0)
{
- DestroyExtraMovementTask(objectEvent->warpArrowSpriteId);
- sprite->data[2] = 1;
+ DestroyLevitateMovementTask(objectEvent->warpArrowSpriteId);
+ sprite->sActionFuncId = 1;
return TRUE;
}
return FALSE;
@@ -7411,17 +7408,18 @@ static void TryEnableObjectEventAnim(struct ObjectEvent *objectEvent, struct Spr
static void UpdateObjectEventVisibility(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096530(objectEvent, sprite);
- UpdateObjEventSpriteVisibility(objectEvent, sprite);
+ UpdateObjectEventOffscreen(objectEvent, sprite);
+ UpdateObjectEventSpriteVisibility(objectEvent, sprite);
}
-static void sub_8096530(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static void UpdateObjectEventOffscreen(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
u16 x, y;
u16 x2, y2;
const struct ObjectEventGraphicsInfo *graphicsInfo;
objectEvent->offScreen = FALSE;
+
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
if (sprite->coordOffsetEnabled)
{
@@ -7437,23 +7435,19 @@ static void sub_8096530(struct ObjectEvent *objectEvent, struct Sprite *sprite)
x2 += x;
y2 = y;
y2 += graphicsInfo->height;
- if ((s16)x >= 0x100 || (s16)x2 < -0x10)
- {
+
+ if ((s16)x >= DISPLAY_WIDTH + 16 || (s16)x2 < -16)
objectEvent->offScreen = TRUE;
- }
- if ((s16)y >= 0xB0 || (s16)y2 < -0x10)
- {
+
+ if ((s16)y >= DISPLAY_HEIGHT + 16 || (s16)y2 < -16)
objectEvent->offScreen = TRUE;
- }
}
-static void UpdateObjEventSpriteVisibility(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static void UpdateObjectEventSpriteVisibility(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
sprite->invisible = FALSE;
if (objectEvent->invisible || objectEvent->offScreen)
- {
sprite->invisible = TRUE;
- }
}
static void GetAllGroundEffectFlags_OnSpawn(struct ObjectEvent *objEvent, u32 *flags)
@@ -7503,21 +7497,23 @@ static void ObjectEventUpdateMetatileBehaviors(struct ObjectEvent *objEvent)
static void GetGroundEffectFlags_Reflection(struct ObjectEvent *objEvent, u32 *flags)
{
- u32 reflectionFlags[2] = { GROUND_EFFECT_FLAG_REFLECTION, GROUND_EFFECT_FLAG_ICE_REFLECTION };
- u8 type = ObjectEventCheckForReflectiveSurface(objEvent);
+ u32 reflectionFlags[NUM_REFLECTION_TYPES - 1] = {
+ [REFL_TYPE_ICE - 1] = GROUND_EFFECT_FLAG_ICE_REFLECTION,
+ [REFL_TYPE_WATER - 1] = GROUND_EFFECT_FLAG_WATER_REFLECTION
+ };
+ u8 reflType = ObjectEventGetNearbyReflectionType(objEvent);
- if (type)
+ if (reflType)
{
- if (!objEvent->hasReflection)
+ if (objEvent->hasReflection == 0)
{
- objEvent->hasReflection = 0;
- objEvent->hasReflection = 1;
- *flags |= reflectionFlags[type - 1];
+ objEvent->hasReflection++;
+ *flags |= reflectionFlags[reflType - 1];
}
}
else
{
- objEvent->hasReflection = 0;
+ objEvent->hasReflection = FALSE;
}
}
@@ -7690,26 +7686,24 @@ static void GetGroundEffectFlags_JumpLanding(struct ObjectEvent *objEvent, u32 *
}
}
-static u8 ObjectEventCheckForReflectiveSurface(struct ObjectEvent *objEvent)
+#define RETURN_REFLECTION_TYPE_AT(x, y) \
+ b = MapGridGetMetatileBehaviorAt(x, y); \
+ result = GetReflectionTypeByMetatileBehavior(b); \
+ if (result != REFL_TYPE_NONE) \
+ return result;
+
+static u8 ObjectEventGetNearbyReflectionType(struct ObjectEvent *objEvent)
{
const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId);
// ceil div by tile width?
s16 width = (info->width + 8) >> 4;
s16 height = (info->height + 8) >> 4;
- s16 i;
- s16 j;
- u8 result;
- u8 b;
- s16 one;
-
-#define RETURN_REFLECTION_TYPE_AT(x, y) \
- b = MapGridGetMetatileBehaviorAt(x, y); \
- result = GetReflectionTypeByMetatileBehavior(b); \
- if (result != 0) \
- return result;
+ s16 i, j;
+ u8 result, b; // used by RETURN_REFLECTION_TYPE_AT
+ s16 one = 1;
- for (i = 0, one = 1; i < height; i++)
+ for (i = 0; i < height; i++)
{
RETURN_REFLECTION_TYPE_AT(objEvent->currentCoords.x, objEvent->currentCoords.y + one + i)
RETURN_REFLECTION_TYPE_AT(objEvent->previousCoords.x, objEvent->previousCoords.y + one + i)
@@ -7721,45 +7715,46 @@ static u8 ObjectEventCheckForReflectiveSurface(struct ObjectEvent *objEvent)
RETURN_REFLECTION_TYPE_AT(objEvent->previousCoords.x - j, objEvent->previousCoords.y + one + i)
}
}
- return 0;
+
+ return REFL_TYPE_NONE;
+}
#undef RETURN_REFLECTION_TYPE_AT
-}
static u8 GetReflectionTypeByMetatileBehavior(u32 behavior)
{
if (MetatileBehavior_IsIce(behavior))
- return 1;
+ return REFL_TYPE_ICE;
else if (MetatileBehavior_IsReflective(behavior))
- return 2;
+ return REFL_TYPE_WATER;
else
- return 0;
+ return REFL_TYPE_NONE;
}
-u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
+u8 GetLedgeJumpDirection(s16 x, s16 y, u8 direction)
{
- static bool8 (*const unknown_08376040[])(u8) = {
- MetatileBehavior_IsJumpSouth,
- MetatileBehavior_IsJumpNorth,
- MetatileBehavior_IsJumpWest,
- MetatileBehavior_IsJumpEast,
+ static bool8 (*const ledgeBehaviorFuncs[])(u8) = {
+ [DIR_SOUTH - 1] = MetatileBehavior_IsJumpSouth,
+ [DIR_NORTH - 1] = MetatileBehavior_IsJumpNorth,
+ [DIR_WEST - 1] = MetatileBehavior_IsJumpWest,
+ [DIR_EAST - 1] = MetatileBehavior_IsJumpEast,
};
- u8 b;
- u8 index = z;
+ u8 behavior;
+ u8 index = direction;
- if (index == 0)
- return 0;
- else if (index > 4)
- index -= 4;
+ if (index == DIR_NONE)
+ return DIR_NONE;
+ else if (index > DIR_EAST)
+ index -= DIR_EAST;
index--;
- b = MapGridGetMetatileBehaviorAt(x, y);
+ behavior = MapGridGetMetatileBehaviorAt(x, y);
- if (unknown_08376040[index](b) == 1)
+ if (ledgeBehaviorFuncs[index](behavior) == TRUE)
return index + 1;
- return 0;
+ return DIR_NONE;
}
static void SetObjectEventSpriteOamTableForLongGrass(struct ObjectEvent *objEvent, struct Sprite *sprite)
@@ -7788,7 +7783,7 @@ bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y)
mapZ = MapGridGetZCoordAt(x, y);
- if (mapZ == 0 || mapZ == 0xF)
+ if (mapZ == 0 || mapZ == 15)
return FALSE;
if (mapZ != z)
@@ -7797,21 +7792,15 @@ bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y)
return FALSE;
}
-static const u8 sUnknown_08376050[] = {
- 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
+static const u8 sElevationToSubpriority[] = {
+ 115, 115, 83, 115, 83, 115, 83, 115, 83, 115, 83, 115, 83, 0, 0, 115
};
-// Each byte corresponds to a sprite priority for an object event.
-// This is directly the inverse of gObjectEventPriorities_08376070.
-static const u8 sObjectEventPriorities_08376060[] = {
+static const u8 sElevationToPriority[] = {
2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
};
-// Each byte corresponds to a sprite priority for an object event.
-// This is the inverse of gObjectEventPriorities_08376060.
-// 1 = Above player sprite
-// 2 = Below player sprite
-static const u8 sObjectEventPriorities_08376070[] = {
+static const u8 sElevationToSubspriteTableNum[] = {
1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
};
@@ -7822,19 +7811,19 @@ void UpdateObjectEventZCoordAndPriority(struct ObjectEvent *objEvent, struct Spr
ObjectEventUpdateZCoord(objEvent);
- sprite->subspriteTableNum = sObjectEventPriorities_08376070[objEvent->previousElevation];
- sprite->oam.priority = sObjectEventPriorities_08376060[objEvent->previousElevation];
+ sprite->subspriteTableNum = sElevationToSubspriteTableNum[objEvent->previousElevation];
+ sprite->oam.priority = sElevationToPriority[objEvent->previousElevation];
}
static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z)
{
- sprite->subspriteTableNum = sObjectEventPriorities_08376070[z];
- sprite->oam.priority = sObjectEventPriorities_08376060[z];
+ sprite->subspriteTableNum = sElevationToSubspriteTableNum[z];
+ sprite->oam.priority = sElevationToPriority[z];
}
u8 ZCoordToPriority(u8 z)
{
- return sObjectEventPriorities_08376060[z];
+ return sElevationToPriority[z];
}
void ObjectEventUpdateZCoord(struct ObjectEvent *objEvent)
@@ -7851,14 +7840,14 @@ void ObjectEventUpdateZCoord(struct ObjectEvent *objEvent)
objEvent->previousElevation = z;
}
-void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
+void SetObjectSubpriorityByZCoord(u8 elevation, struct Sprite *sprite, u8 subpriority)
{
s32 tmp = sprite->centerToCornerVecY;
u32 tmpa = *(u16 *)&sprite->pos1.y;
u32 tmpb = *(u16 *)&gSpriteCoordOffsetY;
s32 tmp2 = (tmpa - tmp) + tmpb;
- u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
- sprite->subpriority = tmp3 + sUnknown_08376050[a] + b;
+ u16 tmp3 = (16 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
+ sprite->subpriority = tmp3 + sElevationToSubpriority[elevation] + subpriority;
}
static void ObjectEventUpdateSubpriority(struct ObjectEvent *objEvent, struct Sprite *sprite)
@@ -7885,11 +7874,11 @@ void GroundEffect_SpawnOnTallGrass(struct ObjectEvent *objEvent, struct Sprite *
gFieldEffectArguments[0] = objEvent->currentCoords.x;
gFieldEffectArguments[1] = objEvent->currentCoords.y;
gFieldEffectArguments[2] = objEvent->previousElevation;
- gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[3] = 2; // priority
gFieldEffectArguments[4] = objEvent->localId << 8 | objEvent->mapNum;
gFieldEffectArguments[5] = objEvent->mapGroup;
gFieldEffectArguments[6] = (u8)gSaveBlock1Ptr->location.mapNum << 8 | (u8)gSaveBlock1Ptr->location.mapGroup;
- gFieldEffectArguments[7] = 1;
+ gFieldEffectArguments[7] = TRUE; // skip to end of anim
FieldEffectStart(FLDEFF_TALL_GRASS);
}
@@ -7898,11 +7887,11 @@ void GroundEffect_StepOnTallGrass(struct ObjectEvent *objEvent, struct Sprite *s
gFieldEffectArguments[0] = objEvent->currentCoords.x;
gFieldEffectArguments[1] = objEvent->currentCoords.y;
gFieldEffectArguments[2] = objEvent->previousElevation;
- gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[3] = 2; // priority
gFieldEffectArguments[4] = objEvent->localId << 8 | objEvent->mapNum;
gFieldEffectArguments[5] = objEvent->mapGroup;
gFieldEffectArguments[6] = (u8)gSaveBlock1Ptr->location.mapNum << 8 | (u8)gSaveBlock1Ptr->location.mapGroup;
- gFieldEffectArguments[7] = 0;
+ gFieldEffectArguments[7] = FALSE; // don't skip to end of anim
FieldEffectStart(FLDEFF_TALL_GRASS);
}
@@ -7934,12 +7923,12 @@ void GroundEffect_StepOnLongGrass(struct ObjectEvent *objEvent, struct Sprite *s
void GroundEffect_WaterReflection(struct ObjectEvent *objEvent, struct Sprite *sprite)
{
- SetUpReflection(objEvent, sprite, 0);
+ SetUpReflection(objEvent, sprite, FALSE);
}
void GroundEffect_IceReflection(struct ObjectEvent *objEvent, struct Sprite *sprite)
{
- SetUpReflection(objEvent, sprite, 1);
+ SetUpReflection(objEvent, sprite, TRUE);
}
void GroundEffect_FlowingWater(struct ObjectEvent *objEvent, struct Sprite *sprite)
@@ -8106,8 +8095,8 @@ static void (*const sGroundEffectFuncs[])(struct ObjectEvent *objEvent, struct S
GroundEffect_StepOnTallGrass, // GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE
GroundEffect_SpawnOnLongGrass, // GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN
GroundEffect_StepOnLongGrass, // GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE
- GroundEffect_WaterReflection, // GROUND_EFFECT_FLAG_ICE_REFLECTION
- GroundEffect_IceReflection, // GROUND_EFFECT_FLAG_REFLECTION
+ GroundEffect_WaterReflection, // GROUND_EFFECT_FLAG_WATER_REFLECTION
+ GroundEffect_IceReflection, // GROUND_EFFECT_FLAG_ICE_REFLECTION
GroundEffect_FlowingWater, // GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER
GroundEffect_SandTracks, // GROUND_EFFECT_FLAG_SAND
GroundEffect_DeepSandTracks, // GROUND_EFFECT_FLAG_DEEP_SAND
@@ -8289,16 +8278,18 @@ static void Step8(struct Sprite *sprite, u8 dir)
sprite->pos1.y += 8 * (u16) sDirectionToVectors[dir].y;
}
-static void oamt_npc_ministep_reset(struct Sprite *sprite, u8 direction, u8 a3)
+#define sTimer data[5]
+
+static void SetSpriteDataForNormalStep(struct Sprite *sprite, u8 direction, u8 speed)
{
- sprite->data[3] = direction;
- sprite->data[4] = a3;
- sprite->data[5] = 0;
+ sprite->sDirection = direction;
+ sprite->sSpeed = speed;
+ sprite->sTimer = 0;
}
typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 direction);
-static const SpriteStepFunc gUnknown_0850E6C4[] = {
+static const SpriteStepFunc sStep1Funcs[] = {
Step1,
Step1,
Step1,
@@ -8317,7 +8308,7 @@ static const SpriteStepFunc gUnknown_0850E6C4[] = {
Step1,
};
-static const SpriteStepFunc gUnknown_0850E704[] = {
+static const SpriteStepFunc sStep2Funcs[] = {
Step2,
Step2,
Step2,
@@ -8328,7 +8319,7 @@ static const SpriteStepFunc gUnknown_0850E704[] = {
Step2,
};
-static const SpriteStepFunc gUnknown_0850E724[] = {
+static const SpriteStepFunc sStep3Funcs[] = {
Step2,
Step3,
Step3,
@@ -8337,68 +8328,76 @@ static const SpriteStepFunc gUnknown_0850E724[] = {
Step3,
};
-static const SpriteStepFunc gUnknown_0850E73C[] = {
+static const SpriteStepFunc sStep4Funcs[] = {
Step4,
Step4,
Step4,
Step4,
};
-static const SpriteStepFunc gUnknown_0850E74C[] = {
+static const SpriteStepFunc sStep8Funcs[] = {
Step8,
Step8,
};
-static const SpriteStepFunc *const gUnknown_0850E754[] = {
- gUnknown_0850E6C4,
- gUnknown_0850E704,
- gUnknown_0850E724,
- gUnknown_0850E73C,
- gUnknown_0850E74C,
+static const SpriteStepFunc *const sNpcStepFuncTables[] = {
+ sStep1Funcs,
+ sStep2Funcs,
+ sStep3Funcs,
+ sStep4Funcs,
+ sStep8Funcs,
};
-static const s16 gUnknown_0850E768[] = {
+static const s16 sStepTimes[] = {
16, 8, 6, 4, 2
};
-bool8 obj_npc_ministep(struct Sprite *sprite)
+static bool8 NpcTakeStep(struct Sprite *sprite)
{
- if (sprite->data[5] >= gUnknown_0850E768[sprite->data[4]])
+ if (sprite->sTimer >= sStepTimes[sprite->sSpeed])
return FALSE;
- gUnknown_0850E754[sprite->data[4]][sprite->data[5]](sprite, sprite->data[3]);
+ sNpcStepFuncTables[sprite->sSpeed][sprite->sTimer](sprite, sprite->sDirection);
- sprite->data[5]++;
+ sprite->sTimer++;
- if (sprite->data[5] < gUnknown_0850E768[sprite->data[4]])
+ if (sprite->sTimer < sStepTimes[sprite->sSpeed])
return FALSE;
return TRUE;
}
-void sub_80976DC(struct Sprite *sprite, u8 direction)
+#undef sTimer
+
+#define sTimer data[4]
+#define sNumSteps data[5]
+
+static void SetWalkSlowSpriteData(struct Sprite *sprite, u8 direction)
{
- sprite->data[3] = direction;
- sprite->data[4] = 0;
- sprite->data[5] = 0;
+ sprite->sDirection = direction;
+ sprite->sTimer = 0;
+ sprite->sNumSteps = 0;
}
-bool8 sub_80976EC(struct Sprite *sprite)
+static bool8 UpdateWalkSlowAnim(struct Sprite *sprite)
{
- if (!(sprite->data[4] & 1))
+ if (!(sprite->sTimer & 1))
{
- Step1(sprite, sprite->data[3]);
- sprite->data[5]++;
+ Step1(sprite, sprite->sDirection);
+ sprite->sNumSteps++;
}
- sprite->data[4]++;
+ sprite->sTimer++;
- if (sprite->data[5] > 15)
+ if (sprite->sNumSteps > 15)
return TRUE;
else
return FALSE;
}
+#undef sTimer
+#undef sNumSteps
+
static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = {
1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 1, 2, 2, 1, 2,
@@ -8476,87 +8475,97 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite)
return finished;
}
-static const s8 gUnknown_0850E802[] = {
- -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
+static const s8 sJumpY_High[] = {
+ -4, -6, -8, -10, -11, -12, -12, -12,
+ -11, -10, -9, -8, -6, -4, 0, 0
};
-static const s8 gUnknown_0850E812[] = {
- 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
+static const s8 sJumpY_Low[] = {
+ 0, -2, -3, -4, -5, -6, -6, -6,
+ -5, -5, -4, -3, -2, 0, 0, 0
};
-static const s8 gUnknown_0850E822[] = {
- -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
+static const s8 sJumpY_Normal[] = {
+ -2, -4, -6, -8, -9, -10, -10, -10,
+ -9, -8, -6, -5, -3, -2, 0, 0
};
-static const s8 *const gUnknown_0850E834[] = {
- gUnknown_0850E802,
- gUnknown_0850E812,
- gUnknown_0850E822
+static const s8 *const sJumpYTable[] = {
+ [JUMP_TYPE_HIGH] = sJumpY_High,
+ [JUMP_TYPE_LOW] = sJumpY_Low,
+ [JUMP_TYPE_NORMAL] = sJumpY_Normal
};
-s16 sub_8097820(s16 a1, u8 a2)
+static s16 GetJumpY(s16 i, u8 type)
{
- return gUnknown_0850E834[a2][a1];
+ return sJumpYTable[type][i];
}
-void sub_809783C(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
+#define sJumpType data[5]
+#define sTimer data[6]
+
+static void SetJumpSpriteData(struct Sprite *sprite, u8 direction, u8 speed, u8 type)
{
- sprite->data[3] = a2;
- sprite->data[4] = a3;
- sprite->data[5] = a4;
- sprite->data[6] = 0;
+ sprite->sDirection = direction;
+ sprite->sSpeed = speed;
+ sprite->sJumpType = type;
+ sprite->sTimer = 0;
}
-u8 sub_809785C(struct Sprite *sprite)
+static u8 DoJumpSpriteMovement(struct Sprite *sprite)
{
- s16 v5[] = {16, 16, 32};
- u8 v6[] = {0, 0, 1};
- u8 v2 = 0;
+ s16 speedToTime[] = {16, 16, 32};
+ u8 speedToShift[] = {0, 0, 1};
+ u8 result = 0;
- if (sprite->data[4])
- Step1(sprite, sprite->data[3]);
+ if (sprite->sSpeed)
+ Step1(sprite, sprite->sDirection);
- sprite->pos2.y = sub_8097820(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+ sprite->pos2.y = GetJumpY(sprite->sTimer >> speedToShift[sprite->sSpeed], sprite->sJumpType);
- sprite->data[6]++;
+ sprite->sTimer++;
- if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
- v2 = 1;
+ if (sprite->sTimer == speedToTime[sprite->sSpeed] >> 1)
+ result = JUMP_HALFWAY;
- if (sprite->data[6] >= v5[sprite->data[4]])
+ if (sprite->sTimer >= speedToTime[sprite->sSpeed])
{
sprite->pos2.y = 0;
- v2 = -1;
+ result = JUMP_FINISHED;
}
- return v2;
+ return result;
}
-u8 sub_80978E4(struct Sprite *sprite)
+static u8 DoJumpSpecialSpriteMovement(struct Sprite *sprite)
{
- s16 v5[] = {32, 32, 64};
- u8 v6[] = {1, 1, 2};
- u8 v2 = 0;
+ s16 speedToTime[] = {32, 32, 64};
+ u8 speedToShift[] = {1, 1, 2};
+ u8 result = 0;
- if (sprite->data[4] && !(sprite->data[6] & 1))
- Step1(sprite, sprite->data[3]);
+ if (sprite->sSpeed && !(sprite->sTimer & 1))
+ Step1(sprite, sprite->sDirection);
- sprite->pos2.y = sub_8097820(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+ sprite->pos2.y = GetJumpY(sprite->sTimer >> speedToShift[sprite->sSpeed], sprite->sJumpType);
- sprite->data[6]++;
+ sprite->sTimer++;
- if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
- v2 = 1;
+ if (sprite->sTimer == speedToTime[sprite->sSpeed] >> 1)
+ result = JUMP_HALFWAY;
- if (sprite->data[6] >= v5[sprite->data[4]])
+ if (sprite->sTimer >= speedToTime[sprite->sSpeed])
{
sprite->pos2.y = 0;
- v2 = -1;
+ result = JUMP_FINISHED;
}
- return v2;
+ return result;
}
+#undef sSpeed
+#undef sJumpType
+#undef sTimer
+
static void SetMovementDelay(struct Sprite *sprite, s16 timer)
{
sprite->data[3] = timer;
@@ -8564,9 +8573,7 @@ static void SetMovementDelay(struct Sprite *sprite, s16 timer)
static bool8 WaitForMovementDelay(struct Sprite *sprite)
{
- sprite->data[3]--;
-
- if (sprite->data[3] == 0)
+ if (--sprite->data[3] == 0)
return TRUE;
else
return FALSE;
@@ -8587,7 +8594,7 @@ bool8 SpriteAnimEnded(struct Sprite *sprite)
return FALSE;
}
-void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
+void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible)
{
u16 x, y;
s16 x2, y2;
@@ -8608,21 +8615,21 @@ void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
x2 = x - (sprite->centerToCornerVecX >> 1);
y2 = y - (sprite->centerToCornerVecY >> 1);
- if ((s16)x > 255 || x2 < -16)
+ if ((s16)x >= DISPLAY_WIDTH + 16 || x2 < -16)
sprite->invisible = TRUE;
- if ((s16)y > 175 || y2 < -16)
+ if ((s16)y >= DISPLAY_HEIGHT + 16 || y2 < -16)
sprite->invisible = TRUE;
}
-#define tInvisible data[2]
-#define tAnimNum data[3]
-#define tAnimState data[4]
+#define sInvisible data[2]
+#define sAnimNum data[3]
+#define sAnimState data[4]
static void UpdateObjectEventSprite(struct Sprite *sprite)
{
UpdateObjectEventSpritePosition(sprite);
SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
- UpdateObjectEventSpriteVisibility(sprite, sprite->tInvisible);
+ UpdateObjectEventSpriteInvisibility(sprite, sprite->sInvisible);
}
// Unused
@@ -8638,14 +8645,14 @@ static void DestroyObjectEventSprites(void)
}
}
-static int GetObjectEventSpriteId(u8 var) // this should return a u8, because all that call this shifts to u8, but it wont match because it doesnt shift u8 at the end.
+static int GetObjectEventSpriteId(u8 objectEventId) // this should return a u8, because all that call this shifts to u8, but it wont match because it doesnt shift u8 at the end.
{
int i;
for (i = 0; i < MAX_SPRITES; i++)
{
struct Sprite *sprite = &gSprites[i];
- if(sprite->inUse && sprite->callback == UpdateObjectEventSprite && (u8)sprite->data[0] == var)
+ if (sprite->inUse && sprite->callback == UpdateObjectEventSprite && (u8)sprite->sObjEventId == objectEventId)
return i;
}
return MAX_SPRITES;
@@ -8697,9 +8704,9 @@ void SetObjectEventSpriteInvisibility(u8 objectEventId, bool32 invisible)
return;
if (invisible)
- gSprites[spriteId].tInvisible = TRUE;
+ gSprites[spriteId].sInvisible = TRUE;
else
- gSprites[spriteId].tInvisible = FALSE;
+ gSprites[spriteId].sInvisible = FALSE;
}
bool32 IsObjectEventSpriteInvisible(u8 objectEventId)
@@ -8709,7 +8716,7 @@ bool32 IsObjectEventSpriteInvisible(u8 objectEventId)
if (spriteId == MAX_SPRITES)
return FALSE;
- return (gSprites[spriteId].tInvisible == TRUE);
+ return (gSprites[spriteId].sInvisible == TRUE);
}
void SetObjectEventSpriteAnim(u8 objectEventId, u8 animNum)
@@ -8718,50 +8725,50 @@ void SetObjectEventSpriteAnim(u8 objectEventId, u8 animNum)
if (spriteId != MAX_SPRITES)
{
- gSprites[spriteId].tAnimNum = animNum;
- gSprites[spriteId].tAnimState = 0;
+ gSprites[spriteId].sAnimNum = animNum;
+ gSprites[spriteId].sAnimState = 0;
}
}
static void MoveUnionRoomObjectUp(struct Sprite *sprite)
{
- switch(sprite->tAnimState)
+ switch(sprite->sAnimState)
{
case 0:
sprite->pos2.y = 0;
- sprite->tAnimState++;
+ sprite->sAnimState++;
case 1:
sprite->pos2.y -= 8;
- if (sprite->pos2.y == -160)
+ if (sprite->pos2.y == -DISPLAY_HEIGHT)
{
sprite->pos2.y = 0;
- sprite->tInvisible = TRUE;
- sprite->tAnimNum = 0;
- sprite->tAnimState = 0;
+ sprite->sInvisible = TRUE;
+ sprite->sAnimNum = 0;
+ sprite->sAnimState = 0;
}
}
}
static void MoveUnionRoomObjectDown(struct Sprite *sprite)
{
- switch(sprite->tAnimState)
+ switch(sprite->sAnimState)
{
case 0:
- sprite->pos2.y = -160;
- sprite->tAnimState++;
+ sprite->pos2.y = -DISPLAY_HEIGHT;
+ sprite->sAnimState++;
case 1:
sprite->pos2.y += 8;
if(sprite->pos2.y == 0)
{
- sprite->tAnimNum = 0;
- sprite->tAnimState = 0;
+ sprite->sAnimNum = 0;
+ sprite->sAnimState = 0;
}
}
}
static void UpdateObjectEventSpritePosition(struct Sprite *sprite)
{
- switch(sprite->tAnimNum)
+ switch(sprite->sAnimNum)
{
case UNION_ROOM_SPAWN_IN:
MoveUnionRoomObjectDown(sprite);
@@ -8772,19 +8779,19 @@ static void UpdateObjectEventSpritePosition(struct Sprite *sprite)
case 0:
break;
default:
- sprite->tAnimNum = 0;
+ sprite->sAnimNum = 0;
break;
}
}
-bool32 IsObjectEventSpriteAnimating(u8 var)
+bool32 IsObjectEventSpriteAnimating(u8 objectEventId)
{
- u8 spriteId = GetObjectEventSpriteId(var);
+ u8 spriteId = GetObjectEventSpriteId(objectEventId);
if (spriteId == MAX_SPRITES)
return FALSE;
- if (gSprites[spriteId].tAnimNum != 0)
+ if (gSprites[spriteId].sAnimNum != 0)
return TRUE;
return FALSE;
@@ -8796,11 +8803,11 @@ u32 StartFieldEffectForObjectEvent(u8 fieldEffectId, struct ObjectEvent *objectE
return FieldEffectStart(fieldEffectId);
}
-void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
+static void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
{
if (!objectEvent->hasShadow)
{
- objectEvent->hasShadow = 1;
+ objectEvent->hasShadow = TRUE;
StartFieldEffectForObjectEvent(FLDEFF_SHADOW, objectEvent);
}
}
@@ -8840,11 +8847,11 @@ u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *
u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
bool32 ableToStore = FALSE;
- if (gLockedAnimObjectEvents == NULL)
+ if (sLockedAnimObjectEvents == NULL)
{
- gLockedAnimObjectEvents = AllocZeroed(sizeof(struct LockedAnimObjectEvents));
- gLockedAnimObjectEvents->objectEventIds[0] = objectEvent->localId;
- gLockedAnimObjectEvents->count = 1;
+ sLockedAnimObjectEvents = AllocZeroed(sizeof(struct LockedAnimObjectEvents));
+ sLockedAnimObjectEvents->objectEventIds[0] = objectEvent->localId;
+ sLockedAnimObjectEvents->count = 1;
ableToStore = TRUE;
}
else
@@ -8854,10 +8861,10 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
bool32 found;
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
{
- if (firstFreeSlot == 16 && gLockedAnimObjectEvents->objectEventIds[i] == 0)
+ if (firstFreeSlot == 16 && sLockedAnimObjectEvents->objectEventIds[i] == 0)
firstFreeSlot = i;
- if (gLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
+ if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
{
found = TRUE;
break;
@@ -8866,8 +8873,8 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
if (!found && firstFreeSlot != 16)
{
- gLockedAnimObjectEvents->objectEventIds[firstFreeSlot] = objectEvent->localId;
- gLockedAnimObjectEvents->count++;
+ sLockedAnimObjectEvents->objectEventIds[firstFreeSlot] = objectEvent->localId;
+ sLockedAnimObjectEvents->count++;
ableToStore = TRUE;
}
}
@@ -8878,7 +8885,7 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
objectEvent->facingDirectionLocked = TRUE;
}
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -8887,19 +8894,19 @@ u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *objectEvent, struc
bool32 ableToStore;
u8 index;
- sprite->data[2] = 1;
- if (gLockedAnimObjectEvents != NULL)
+ sprite->sActionFuncId = 1;
+ if (sLockedAnimObjectEvents != NULL)
{
ableToStore = FALSE;
index = FindLockedObjectEventIndex(objectEvent);
if (index != 16)
{
- gLockedAnimObjectEvents->objectEventIds[index] = 0;
- gLockedAnimObjectEvents->count--;
+ sLockedAnimObjectEvents->objectEventIds[index] = 0;
+ sLockedAnimObjectEvents->count--;
ableToStore = TRUE;
}
- if (gLockedAnimObjectEvents->count == 0)
- FREE_AND_SET_NULL(gLockedAnimObjectEvents);
+ if (sLockedAnimObjectEvents->count == 0)
+ FREE_AND_SET_NULL(sLockedAnimObjectEvents);
if (ableToStore == TRUE)
{
objectEvent->inanimate = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->inanimate;
@@ -8917,13 +8924,13 @@ u8 FindLockedObjectEventIndex(struct ObjectEvent *objectEvent)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
- if (gLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
+ if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
return i;
}
return OBJECT_EVENTS_COUNT;
}
-void CreateLevitateMovementTask(struct ObjectEvent *objectEvent)
+static void CreateLevitateMovementTask(struct ObjectEvent *objectEvent)
{
u8 taskId = CreateTask(ApplyLevitateMovement, 0xFF);
struct Task *task = &gTasks[taskId];
@@ -8942,16 +8949,16 @@ static void ApplyLevitateMovement(u8 taskId)
LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&objectEvent); // load the map object pointer.
sprite = &gSprites[objectEvent->spriteId];
- if(!(task->data[2] & 0x3))
+ if(!(task->data[2] & 3))
sprite->pos2.y += task->data[3];
- if(!(task->data[2] & 0xF))
+ if(!(task->data[2] & 15))
task->data[3] = -task->data[3];
task->data[2]++;
}
-void DestroyExtraMovementTask(u8 taskId)
+static void DestroyLevitateMovementTask(u8 taskId)
{
struct ObjectEvent *objectEvent;
struct Task *task = &gTasks[taskId];
@@ -8960,13 +8967,14 @@ void DestroyExtraMovementTask(u8 taskId)
DestroyTask(taskId);
}
-void sub_8098074(u8 var1, u8 var2)
+// Used to freeze other objects except two trainers approaching for battle
+void FreezeObjectEventsExceptTwo(u8 objectEventId1, u8 objectEventId2)
{
u8 i;
for(i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
- if(i != var1 && i != var2 &&
+ if(i != objectEventId1 && i != objectEventId2 &&
gObjectEvents[i].active && i != gPlayerAvatar.objectEventId)
FreezeObjectEvent(&gObjectEvents[i]);
}
@@ -8975,7 +8983,7 @@ void sub_8098074(u8 var1, u8 var2)
u8 MovementAction_FlyUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
sprite->pos2.y = 0;
- sprite->data[2]++;
+ sprite->sActionFuncId++;
return FALSE;
}
@@ -8983,15 +8991,15 @@ u8 MovementAction_FlyUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sp
{
sprite->pos2.y -= 8;
- if(sprite->pos2.y == -160)
- sprite->data[2]++;
+ if(sprite->pos2.y == -DISPLAY_HEIGHT)
+ sprite->sActionFuncId++;
return FALSE;
}
u8 MovementAction_FlyDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sprite->pos2.y = -160;
- sprite->data[2]++;
+ sprite->pos2.y = -DISPLAY_HEIGHT;
+ sprite->sActionFuncId++;
return FALSE;
}
@@ -9000,7 +9008,7 @@ u8 MovementAction_FlyDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *
sprite->pos2.y += 8;
if(!sprite->pos2.y)
- sprite->data[2]++;
+ sprite->sActionFuncId++;
return FALSE;
}