summaryrefslogtreecommitdiff
path: root/src/field_effect.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/field_effect.c')
-rw-r--r--src/field_effect.c551
1 files changed, 282 insertions, 269 deletions
diff --git a/src/field_effect.c b/src/field_effect.c
index f85bc520e..90c11b8c3 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -3,6 +3,7 @@
#include "script.h"
#include "trig.h"
#include "main.h"
+#include "field_effect_helpers.h"
#include "field_weather.h"
#include "decompress.h"
#include "sprite.h"
@@ -12,18 +13,19 @@
#include "overworld.h"
#include "task.h"
#include "sound.h"
-#include "constants/songs.h"
#include "decoration.h"
#include "field_player_avatar.h"
#include "event_object_movement.h"
#include "metatile_behavior.h"
#include "field_camera.h"
+#include "field_control_avatar.h"
#include "field_effect.h"
#include "field_fadetransition.h"
#include "fieldmap.h"
#include "util.h"
-#include "field_effect_helpers.h"
#include "pokemon_storage_system.h"
+#include "constants/field_effects.h"
+#include "constants/songs.h"
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
@@ -266,7 +268,7 @@ bool8 (*const gUnknown_0839F300[])(struct Task *) = {
sub_8086ED4
};
-bool8 (*const gUnknown_0839F31C[])(struct Task *, struct MapObject *) = {
+bool8 (*const gUnknown_0839F31C[])(struct Task *, struct EventObject *) = {
sub_8086FB0,
waterfall_1_do_anim_probably,
waterfall_2_wait_anim_finish_probably,
@@ -280,7 +282,7 @@ bool8 (*const gUnknown_0839F330[])(struct Task *) = {
dive_3_unknown
};
-bool8 (*const gUnknown_0839F33C[])(struct Task *, struct MapObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0839F33C[])(struct Task *, struct EventObject *, struct Sprite *) = {
sub_808722C,
sub_8087264,
sub_8087298,
@@ -289,14 +291,14 @@ bool8 (*const gUnknown_0839F33C[])(struct Task *, struct MapObject *, struct Spr
sub_80873F4
};
-bool8 (*const gUnknown_0839F354[])(struct Task *, struct MapObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0839F354[])(struct Task *, struct EventObject *, struct Sprite *) = {
sub_80874CC,
sub_80874FC,
sub_8087548,
sub_808759C
};
-bool8 (*const gUnknown_0839F364[])(struct Task *, struct MapObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0839F364[])(struct Task *, struct EventObject *, struct Sprite *) = {
sub_80876C8,
sub_80876F8,
sub_8087774,
@@ -304,9 +306,11 @@ bool8 (*const gUnknown_0839F364[])(struct Task *, struct MapObject *, struct Spr
sub_80877D4
};
-void (*const gUnknown_0839F378[])(struct Task *) = {
- sub_80878F4,
- sub_8087914
+static void EscapeRopeFieldEffect_Step0(struct Task *);
+static void EscapeRopeFieldEffect_Step1(struct Task *);
+void (*const gEscapeRopeFieldEffectFuncs[])(struct Task *) = {
+ EscapeRopeFieldEffect_Step0,
+ EscapeRopeFieldEffect_Step1
};
static u8 sActiveList[32];
@@ -601,7 +605,7 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
gPlttBufferFaded[i] = RGB(curRed, curGreen, curBlue);
}
#else
-__attribute__((naked))
+NAKED
void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
{
asm(".syntax unified\n"
@@ -676,7 +680,7 @@ void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
".syntax divided");
}
-__attribute__((naked))
+NAKED
void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
{
asm(".syntax unified\n"
@@ -916,7 +920,7 @@ void PokeballGlowEffect_1(struct Sprite *sprite)
sprite->data[3] = 0;
if (sprite->data[5])
{
- PlayFanfare(BGM_ME_ASA);
+ PlayFanfare(MUS_ME_ASA);
}
}
}
@@ -1080,7 +1084,7 @@ void mapldr_080842E8(void)
pal_fill_black();
CreateTask(task00_8084310, 0);
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
}
@@ -1105,7 +1109,7 @@ void task00_8084310(u8 taskId)
if (!FieldEffectActiveListContains(FLDEFF_USE_FLY))
{
Overworld_ResetStateAfterFly();
- warp_in();
+ WarpIntoMap();
SetMainCallback2(CB2_LoadMap);
gFieldCallback = mapldr_08084390;
DestroyTask(taskId);
@@ -1117,13 +1121,13 @@ void mapldr_08084390(void)
Overworld_PlaySpecialMapMusic();
pal_fill_black();
CreateTask(c3_080843F8, 0);
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
if (gPlayerAvatar.flags & 0x08)
{
- FieldObjectTurn(&gMapObjects[gPlayerAvatar.mapObjectId], DIR_WEST);
+ EventObjectTurn(&gEventObjects[gPlayerAvatar.eventObjectId], DIR_WEST);
}
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
}
@@ -1143,12 +1147,11 @@ void c3_080843F8(u8 taskId)
if (!FieldEffectActiveListContains(FLDEFF_FLY_IN))
{
ScriptContext2_Disable();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(taskId);
}
}
-extern void pal_fill_for_map_transition(void);
void sub_8086774(u8);
extern void CameraObjectReset2(void);
extern void CameraObjectReset1(void);
@@ -1158,7 +1161,7 @@ void sub_8086748(void)
Overworld_PlaySpecialMapMusic();
pal_fill_for_map_transition();
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
CreateTask(sub_8086774, 0);
gFieldCallback = NULL;
}
@@ -1172,16 +1175,16 @@ void sub_8086774(u8 taskId)
bool8 sub_80867AC(struct Task *task) // gUnknown_0839F2CC[0]
{
- struct MapObject *playerObject;
+ struct EventObject *playerObject;
struct Sprite *playerSprite;
- playerObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ playerObject = &gEventObjects[gPlayerAvatar.eventObjectId];
playerSprite = &gSprites[gPlayerAvatar.spriteId];
CameraObjectReset2();
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
gPlayerAvatar.preventStep = TRUE;
- FieldObjectSetSpecialAnim(playerObject, GetFaceDirectionAnimId(player_get_direction_lower_nybble()));
+ EventObjectSetHeldMovement(playerObject, GetFaceDirectionMovementAction(GetPlayerFacingDirection()));
task->data[4] = playerSprite->subspriteMode;
- playerObject->mapobj_bit_26 = 1;
+ playerObject->fixedPriority = 1;
playerSprite->oam.priority = 1;
playerSprite->subspriteMode = 2;
task->data[0]++;
@@ -1206,7 +1209,7 @@ bool8 sub_8086870(struct Task *task) // gUnknown_0839F2CC[2]
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
task->data[1] = 1;
task->data[2] = 0;
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 0;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 0;
PlaySE(SE_RU_HYUU);
task->data[0]++;
return FALSE;
@@ -1214,10 +1217,10 @@ bool8 sub_8086870(struct Task *task) // gUnknown_0839F2CC[2]
bool8 sub_80868E4(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *sprite;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
sprite = &gSprites[gPlayerAvatar.spriteId];
sprite->pos2.y += task->data[1];
if (task->data[1] < 8)
@@ -1231,15 +1234,15 @@ bool8 sub_80868E4(struct Task *task)
if (task->data[3] == 0 && sprite->pos2.y >= -16)
{
task->data[3]++;
- mapObject->mapobj_bit_26 = 0;
+ eventObject->fixedPriority = 0;
sprite->subspriteMode = task->data[4];
- mapObject->mapobj_bit_2 = 1;
+ eventObject->triggerGroundEffectsOnMove = 1;
}
if (sprite->pos2.y >= 0)
{
PlaySE(SE_W070);
- mapObject->mapobj_bit_3 = 1;
- mapObject->mapobj_bit_5 = 1;
+ eventObject->triggerGroundEffectsOnStop = 1;
+ eventObject->landingJump = 1;
sprite->pos2.y = 0;
task->data[0]++;
}
@@ -1276,7 +1279,7 @@ bool8 sub_80869F8(struct Task *task)
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
CameraObjectReset1();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
InstallCameraPanAheadCallback();
DestroyTask(FindTaskIdByFunc(sub_8086774));
return FALSE;
@@ -1284,14 +1287,13 @@ bool8 sub_80869F8(struct Task *task)
void sub_8086A68(u8);
extern void sub_80B4824(u8);
-extern void sub_8053FF8(void);
-extern void fade_8080918(void);
+extern void TryFadeOutOldMapMusic(void);
void sub_8086B98(struct Task *);
void sub_8086BE4(struct Task *);
void sub_8086C30(void);
void sub_8086C40(void);
-bool8 sub_8054034(void);
+bool8 BGMusicStopped(void);
void sub_8086C94(void);
void sub_80B483C(void);
void sub_8086CBC(u8);
@@ -1316,7 +1318,7 @@ void sub_8086A68(u8 taskId)
bool8 sub_8086AA0(struct Task *task)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
sub_80B4824(task->data[1]);
task->data[0]++;
@@ -1325,11 +1327,11 @@ bool8 sub_8086AA0(struct Task *task)
bool8 sub_8086AC0(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(player_get_direction_lower_nybble()));
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(GetPlayerFacingDirection()));
task->data[0]++;
task->data[2] = 0;
task->data[3] = 0;
@@ -1406,16 +1408,16 @@ void sub_8086BE4(struct Task *task)
void sub_8086C30(void)
{
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
}
void sub_8086C40(void)
{
- if (!gPaletteFade.active && sub_8054034() == TRUE)
+ if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
sub_80B483C();
- warp_in();
+ WarpIntoMap();
gFieldCallback = sub_8086C94;
SetMainCallback2(CB2_LoadMap);
DestroyTask(FindTaskIdByFunc(sub_8086A68));
@@ -1440,13 +1442,13 @@ void sub_8086CBC(u8 taskId)
bool8 sub_8086CF4(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
s16 x;
s16 y;
u8 behavior;
CameraObjectReset2();
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(DIR_EAST));
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(DIR_EAST));
PlayerGetDestCoords(&x, &y);
behavior = MapGridGetMetatileBehaviorAt(x, y);
task->data[0]++;
@@ -1538,13 +1540,13 @@ bool8 sub_8086EB0(struct Task *task)
bool8 sub_8086ED4(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
CameraObjectReset1();
ScriptContext2_Disable();
- FieldObjectSetSpecialAnim(mapObject, GetGoSpeed0AnimId(DIR_EAST));
+ EventObjectSetHeldMovement(eventObject, GetWalkNormalMovementAction(DIR_EAST));
DestroyTask(FindTaskIdByFunc(sub_8086CBC));
}
return FALSE;
@@ -1563,10 +1565,10 @@ bool8 FldEff_UseWaterfall(void)
void sub_8086F64(u8 taskId)
{
- while (gUnknown_0839F31C[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId]));
+ while (gUnknown_0839F31C[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId]));
}
-bool8 sub_8086FB0(struct Task *task, struct MapObject *mapObject)
+bool8 sub_8086FB0(struct Task *task, struct EventObject *eventObject)
{
ScriptContext2_Enable();
gPlayerAvatar.preventStep = TRUE;
@@ -1574,12 +1576,12 @@ bool8 sub_8086FB0(struct Task *task, struct MapObject *mapObject)
return FALSE;
}
-bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObject)
+bool8 waterfall_1_do_anim_probably(struct Task *task, struct EventObject *eventObject)
{
ScriptContext2_Enable();
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject))
+ if (!EventObjectIsMovementOverridden(eventObject))
{
- FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
+ EventObjectClearHeldMovementIfFinished(eventObject);
gFieldEffectArguments[0] = task->data[1];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
@@ -1587,7 +1589,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObjec
return FALSE;
}
-bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct MapObject *mapObject)
+bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct EventObject *eventObject)
{
if (FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
@@ -1597,20 +1599,20 @@ bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct MapObject
return TRUE;
}
-bool8 sub_8087030(struct Task *task, struct MapObject *mapObject)
+bool8 sub_8087030(struct Task *task, struct EventObject *eventObject)
{
- FieldObjectSetSpecialAnim(mapObject, GetSimpleGoAnimId(DIR_NORTH));
+ EventObjectSetHeldMovement(eventObject, GetWalkSlowMovementAction(DIR_NORTH));
task->data[0]++;
return FALSE;
}
-bool8 sub_8087058(struct Task *task, struct MapObject *mapObject)
+bool8 sub_8087058(struct Task *task, struct EventObject *eventObject)
{
- if (!FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (!EventObjectClearHeldMovementIfFinished(eventObject))
{
return FALSE;
}
- if (MetatileBehavior_IsWaterfall(mapObject->mapobj_unk_1E))
+ if (MetatileBehavior_IsWaterfall(eventObject->currentMetatileBehavior))
{
task->data[0] = 3;
return TRUE;
@@ -1622,8 +1624,7 @@ bool8 sub_8087058(struct Task *task, struct MapObject *mapObject)
return FALSE;
}
-void Task_Dive(u8);
-extern int dive_warp(struct MapPosition *, u16);
+static void Task_Dive(u8);
bool8 FldEff_UseDive(void)
{
@@ -1662,7 +1663,7 @@ bool8 dive_3_unknown(struct Task *task)
PlayerGetDestCoords(&mapPosition.x, &mapPosition.y);
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- dive_warp(&mapPosition, gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E);
+ dive_warp(&mapPosition, gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior);
DestroyTask(FindTaskIdByFunc(Task_Dive));
FieldEffectActiveListRemove(FLDEFF_USE_DIVE);
}
@@ -1679,22 +1680,22 @@ void sub_80871B8(u8 priority)
void sub_80871D0(u8 taskId)
{
- while (gUnknown_0839F33C[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId], &gSprites[gPlayerAvatar.spriteId]));
+ while (gUnknown_0839F33C[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_808722C(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_808722C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
SetCameraPanningCallback(NULL);
gPlayerAvatar.preventStep = TRUE;
- mapObject->mapobj_bit_26 = 1;
+ eventObject->fixedPriority = 1;
task->data[1] = 1;
task->data[0]++;
return TRUE;
}
-bool8 sub_8087264(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8087264(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
SetCameraPanning(0, task->data[1]);
task->data[1] = -task->data[1];
@@ -1707,12 +1708,12 @@ bool8 sub_8087264(struct Task *task, struct MapObject *mapObject, struct Sprite
return FALSE;
}
-bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8087298(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->pos2.y = 0;
task->data[3] = 1;
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP);
@@ -1721,7 +1722,7 @@ bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite
return TRUE;
}
-bool8 sub_80872E4(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80872E4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
s16 centerToCornerVecY;
SetCameraPanning(0, task->data[1]);
@@ -1753,7 +1754,7 @@ bool8 sub_80872E4(struct Task *task, struct MapObject *mapObject, struct Sprite
if (task->data[5] == 0 && sprite->pos2.y < -0x10)
{
task->data[5]++;
- mapObject->mapobj_bit_26 = 1;
+ eventObject->fixedPriority = 1;
sprite->oam.priority = 1;
sprite->subspriteMode = 2;
}
@@ -1764,19 +1765,19 @@ bool8 sub_80872E4(struct Task *task, struct MapObject *mapObject, struct Sprite
return FALSE;
}
-bool8 sub_80873D8(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80873D8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
task->data[0]++;
return FALSE;
}
-bool8 sub_80873F4(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80873F4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- if (!gPaletteFade.active && sub_8054034() == TRUE)
+ if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
- warp_in();
+ WarpIntoMap();
gFieldCallback = mapldr_080851BC;
SetMainCallback2(CB2_LoadMap);
DestroyTask(FindTaskIdByFunc(sub_80871D0));
@@ -1797,25 +1798,25 @@ void mapldr_080851BC(void)
void sub_8087470(u8 taskId)
{
- while (gUnknown_0839F354[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId], &gSprites[gPlayerAvatar.spriteId]));
+ while (gUnknown_0839F354[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_80874CC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80874CC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
CameraObjectReset2();
- FreezeMapObjects();
+ FreezeEventObjects();
gPlayerAvatar.preventStep = TRUE;
- mapObject->mapobj_bit_13 = 1;
+ eventObject->invisible = 1;
task->data[0]++;
return FALSE;
}
-bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80874FC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (IsWeatherNotFadingIn())
{
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
@@ -1824,27 +1825,27 @@ bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite
return FALSE;
}
-bool8 sub_8087548(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8087548(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
sprite = &gSprites[task->data[1]];
if (sprite->animCmdIndex > 1)
{
task->data[0]++;
- mapObject->mapobj_bit_13 = 0;
+ eventObject->invisible = 0;
CameraObjectReset1();
PlaySE(SE_W091);
- FieldObjectSetSpecialAnim(mapObject, sub_80608A4(DIR_EAST));
+ EventObjectSetHeldMovement(eventObject, GetJumpMovementAction(DIR_EAST));
}
return FALSE;
}
-bool8 sub_808759C(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_808759C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(FindTaskIdByFunc(sub_8087470));
}
return FALSE;
@@ -1880,27 +1881,27 @@ void sub_8087654(u8 priority)
void sub_808766C(u8 taskId)
{
- while(gUnknown_0839F364[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId], &gSprites[gPlayerAvatar.spriteId]));
+ while(gUnknown_0839F364[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_80876C8(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80876C8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
gPlayerAvatar.preventStep = TRUE;
- mapObject->mapobj_bit_26 = 1;
+ eventObject->fixedPriority = 1;
task->data[0]++;
return FALSE;
}
-bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80876F8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
if (task->data[1] > 3)
{
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
@@ -1908,42 +1909,42 @@ bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite
} else
{
task->data[1]++;
- FieldObjectSetSpecialAnim(mapObject, GetStepInPlaceDelay4AnimId(mapObject->mapobj_unk_18));
+ EventObjectSetHeldMovement(eventObject, GetWalkInPlaceFastestMovementAction(eventObject->facingDirection));
PlaySE(SE_FU_ZUZUZU);
}
}
return FALSE;
}
-bool8 sub_8087774(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_8087774(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (gSprites[task->data[1]].animCmdIndex == 2)
{
- mapObject->mapobj_bit_13 = 1;
+ eventObject->invisible = 1;
task->data[0]++;
}
return FALSE;
}
-bool8 sub_80877AC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80877AC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
{
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
task->data[0]++;
}
return FALSE;
}
-void sub_80878C4(u8);
+static void DoEscapeRopeFieldEffect(u8);
void mapldr_080859D4(void);
-bool8 sub_80877D4(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80877D4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- if (!gPaletteFade.active && sub_8054034() == TRUE)
+ if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
- warp_in();
+ WarpIntoMap();
gFieldCallback = sub_8086748;
SetMainCallback2(CB2_LoadMap);
DestroyTask(FindTaskIdByFunc(sub_808766C));
@@ -1969,52 +1970,60 @@ void sub_808788C(struct Sprite *sprite)
}
}
-void sub_80878A8(void)
+void StartEscapeRopeFieldEffect(void)
{
ScriptContext2_Enable();
- FreezeMapObjects();
- CreateTask(sub_80878C4, 0x50);
+ FreezeEventObjects();
+ CreateTask(DoEscapeRopeFieldEffect, 0x50);
}
-void sub_80878C4(u8 taskId)
+static void DoEscapeRopeFieldEffect(u8 taskId)
{
- gUnknown_0839F378[gTasks[taskId].data[0]](&gTasks[taskId]);
+ gEscapeRopeFieldEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_80878F4(struct Task *task)
+static void EscapeRopeFieldEffect_Step0(struct Task *task)
{
task->data[0]++;
task->data[14] = 64;
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
}
-void sub_8087914(struct Task *task)
+static void EscapeRopeFieldEffect_Step1(struct Task *task)
{
- struct MapObject *mapObject;
- u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct EventObject *eventObject;
+ u8 clockwiseDirections[5] = {
+ DIR_SOUTH,
+ DIR_WEST,
+ DIR_EAST,
+ DIR_NORTH,
+ DIR_SOUTH,
+ };
+
if (task->data[14] != 0 && (--task->data[14]) == 0)
{
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
}
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
- if (task->data[14] == 0 && !gPaletteFade.active && sub_8054034() == TRUE)
+ if (task->data[14] == 0 && !gPaletteFade.active && BGMusicStopped() == TRUE)
{
- FieldObjectSetDirection(mapObject, task->data[15]);
+ SetEventObjectDirection(eventObject, task->data[15]);
sub_8053678();
- warp_in();
+ WarpIntoMap();
gFieldCallback = mapldr_080859D4;
SetMainCallback2(CB2_LoadMap);
- DestroyTask(FindTaskIdByFunc(sub_80878C4));
- } else if (task->data[1] == 0 || (--task->data[1]) == 0)
+ DestroyTask(FindTaskIdByFunc(DoEscapeRopeFieldEffect));
+ }
+ else if (task->data[1] == 0 || (--task->data[1]) == 0)
{
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(unknown_0839F380[mapObject->mapobj_unk_18]));
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(clockwiseDirections[eventObject->facingDirection]));
if (task->data[2] < 12)
- {
task->data[2]++;
- }
+
task->data[1] = 8 >> (task->data[2] >> 2);
}
}
@@ -2032,9 +2041,9 @@ void mapldr_080859D4(void)
Overworld_PlaySpecialMapMusic();
pal_fill_for_map_transition();
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
CreateTask(sub_8087A74, 0);
}
@@ -2048,78 +2057,82 @@ void sub_8087AA4(struct Task *task)
if (IsWeatherNotFadingIn())
{
task->data[0]++;
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
}
}
void sub_8087AC8(struct Task *task)
{
u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (task->data[1] == 0 || (--task->data[1]) == 0)
{
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) && !FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectIsMovementOverridden(eventObject) && !EventObjectClearHeldMovementIfFinished(eventObject))
{
return;
}
- if (task->data[2] >= 32 && task->data[15] == player_get_direction_lower_nybble())
+ if (task->data[2] >= 32 && task->data[15] == GetPlayerFacingDirection())
{
- mapObject->mapobj_bit_13 = 0;
+ eventObject->invisible = 0;
ScriptContext2_Disable();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(FindTaskIdByFunc(sub_8087A74));
return;
}
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(unknown_0839F380[mapObject->mapobj_unk_18]));
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(unknown_0839F380[eventObject->facingDirection]));
if (task->data[2] < 32)
{
task->data[2]++;
}
task->data[1] = task->data[2] >> 2;
}
- mapObject->mapobj_bit_13 ^= 1;
+ eventObject->invisible ^= 1;
}
-void sub_8087BBC(u8);
-void mapldr_08085D88(void);
+static void ExecuteTeleportFieldEffectTask(u8);
+static void TeleportFieldEffectTask1(struct Task*);
+static void TeleportFieldEffectTask2(struct Task*);
+static void TeleportFieldEffectTask3(struct Task*);
+static void TeleportFieldEffectTask4(struct Task*);
+static void mapldr_08085D88(void);
-void sub_8087BA8(void)
+void CreateTeleportFieldEffectTask(void)
{
- CreateTask(sub_8087BBC, 0);
+ CreateTask(ExecuteTeleportFieldEffectTask, 0);
}
-void (*const gUnknown_0839F390[])(struct Task *) = {
- sub_8087BEC,
- sub_8087C14,
- sub_8087CA4,
- sub_8087D78
+static void (*const sTeleportFieldEffectTasks[])(struct Task *) = {
+ TeleportFieldEffectTask1,
+ TeleportFieldEffectTask2,
+ TeleportFieldEffectTask3,
+ TeleportFieldEffectTask4
};
-void sub_8087BBC(u8 taskId)
+static void ExecuteTeleportFieldEffectTask(u8 taskId)
{
- gUnknown_0839F390[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sTeleportFieldEffectTasks[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_8087BEC(struct Task *task)
+static void TeleportFieldEffectTask1(struct Task *task)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
task->data[0]++;
}
-void sub_8087C14(struct Task *task)
+static void TeleportFieldEffectTask2(struct Task *task)
{
- u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (task->data[1] == 0 || (--task->data[1]) == 0)
{
- FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, spinDirections[eventObject->facingDirection]);
task->data[1] = 8;
task->data[2]++;
}
- if (task->data[2] > 7 && task->data[15] == mapObject->mapobj_unk_18)
+ if (task->data[2] > 7 && task->data[15] == eventObject->facingDirection)
{
task->data[0]++;
task->data[1] = 4;
@@ -2129,15 +2142,15 @@ void sub_8087C14(struct Task *task)
}
}
-void sub_8087CA4(struct Task *task)
+static void TeleportFieldEffectTask3(struct Task *task)
{
- u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((--task->data[1]) <= 0)
{
task->data[1] = 4;
- FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, spinDirections[eventObject->facingDirection]);
}
sprite->pos1.y -= task->data[3];
task->data[4] += task->data[3];
@@ -2152,33 +2165,33 @@ void sub_8087CA4(struct Task *task)
if (task->data[4] >= 0xa8)
{
task->data[0]++;
- sub_8053FF8();
- fade_8080918();
+ TryFadeOutOldMapMusic();
+ WarpFadeScreen();
}
}
-void sub_8087D78(struct Task *task)
+static void TeleportFieldEffectTask4(struct Task *task)
{
- if (!gPaletteFade.active && sub_8054034() == TRUE)
+ if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
Overworld_SetWarpDestToLastHealLoc();
- warp_in();
+ WarpIntoMap();
SetMainCallback2(CB2_LoadMap);
gFieldCallback = mapldr_08085D88;
- DestroyTask(FindTaskIdByFunc(sub_8087BBC));
+ DestroyTask(FindTaskIdByFunc(ExecuteTeleportFieldEffectTask));
}
}
void sub_8087E1C(u8);
-void mapldr_08085D88(void)
+static void mapldr_08085D88(void)
{
Overworld_PlaySpecialMapMusic();
pal_fill_for_map_transition();
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
CameraObjectReset2();
CreateTask(sub_8087E1C, 0);
}
@@ -2203,12 +2216,12 @@ void sub_8087E4C(struct Task *task)
sprite = &gSprites[gPlayerAvatar.spriteId];
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 0;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 0;
task->data[0]++;
task->data[1] = 8;
task->data[2] = 1;
task->data[14] = sprite->subspriteMode;
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
PlaySE(SE_TK_WARPIN);
}
}
@@ -2216,14 +2229,14 @@ void sub_8087E4C(struct Task *task)
void sub_8087ED8(struct Task *task)
{
u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((sprite->pos2.y += task->data[1]) >= -8)
{
if (task->data[13] == 0)
{
task->data[13]++;
- mapObject->mapobj_bit_2 = 1;
+ eventObject->triggerGroundEffectsOnMove = 1;
sprite->subspriteMode = task->data[14];
}
} else
@@ -2241,7 +2254,7 @@ void sub_8087ED8(struct Task *task)
if ((--task->data[2]) == 0)
{
task->data[2] = 4;
- FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, unknown_0839F380[eventObject->facingDirection]);
}
if (sprite->pos2.y >= 0)
{
@@ -2255,16 +2268,16 @@ void sub_8087ED8(struct Task *task)
void sub_8087FDC(struct Task *task)
{
u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if ((--task->data[1]) == 0)
{
- FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, unknown_0839F380[eventObject->facingDirection]);
task->data[1] = 8;
- if ((++task->data[2]) > 4 && task->data[14] == mapObject->mapobj_unk_18)
+ if ((++task->data[2]) > 4 && task->data[14] == eventObject->facingDirection)
{
ScriptContext2_Disable();
CameraObjectReset1();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(FindTaskIdByFunc(sub_8087E1C));
}
}
@@ -2433,8 +2446,8 @@ void sub_8088380(struct Task *task)
IntrCallback callback;
LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback);
SetVBlankCallback(callback);
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
FreeResourcesAndDestroySprite(&gSprites[task->data[15]]);
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON);
DestroyTask(FindTaskIdByFunc(sub_8088120));
@@ -2556,8 +2569,8 @@ void sub_808862C(struct Task *task)
CpuFill32(0, (void *)VRAM + bg0cnt, 0x800);
LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback);
SetVBlankCallback(intrCallback);
- Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
- InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Text_LoadWindowTemplate(&gMenuTextWindowTemplate);
+ InitMenuWindow(&gMenuTextWindowTemplate);
FreeResourcesAndDestroySprite(&gSprites[task->data[15]]);
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON);
DestroyTask(FindTaskIdByFunc(sub_808847C));
@@ -2607,7 +2620,7 @@ bool8 sub_8088708(struct Task *task)
return FALSE;
}
#else
-__attribute__((naked))
+NAKED
bool8 sub_8088708(struct Task *task)
{
asm_unified("\tpush {r4-r7,lr}\n"
@@ -2816,31 +2829,31 @@ void sub_8088954(u8 taskId)
void sub_8088984(struct Task *task)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gPlayerAvatar.preventStep = TRUE;
SetPlayerAvatarStateMask(8);
PlayerGetDestCoords(&task->data[1], &task->data[2]);
- MoveCoords(gMapObjects[gPlayerAvatar.mapObjectId].placeholder18, &task->data[1], &task->data[2]);
+ MoveCoords(gEventObjects[gPlayerAvatar.eventObjectId].movementDirection, &task->data[1], &task->data[2]);
task->data[0]++;
}
void sub_80889E4(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
sub_8059BF4();
- FieldObjectSetSpecialAnim(mapObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
task->data[0]++;
}
}
void sub_8088A30(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectCheckHeldMovementStatus(eventObject))
{
gFieldEffectArguments[0] = task->data[15] | 0x80000000;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
@@ -2850,32 +2863,32 @@ void sub_8088A30(struct Task *task)
void sub_8088A78(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(3));
- FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
- FieldObjectSetSpecialAnim(mapObject, sub_80608D0(mapObject->placeholder18));
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ sub_805B980(eventObject, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
+ EventObjectClearHeldMovementIfFinished(eventObject);
+ EventObjectSetHeldMovement(eventObject, GetJumpSpecialMovementAction(eventObject->movementDirection));
gFieldEffectArguments[0] = task->data[1];
gFieldEffectArguments[1] = task->data[2];
- gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId;
- mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_SURF_BLOB);
+ gFieldEffectArguments[2] = gPlayerAvatar.eventObjectId;
+ eventObject->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB);
task->data[0]++;
}
}
void sub_8088AF4(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
gPlayerAvatar.preventStep = FALSE;
gPlayerAvatar.flags &= 0xdf;
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(mapObject->placeholder18));
- sub_8127ED0(mapObject->mapobj_unk_1A, 1);
- UnfreezeMapObjects();
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(eventObject->movementDirection));
+ sub_8127ED0(eventObject->fieldEffectSpriteId, 1);
+ UnfreezeEventObjects();
ScriptContext2_Disable();
FieldEffectActiveListRemove(FLDEFF_USE_SURF);
DestroyTask(FindTaskIdByFunc(sub_8088954));
@@ -2955,24 +2968,24 @@ void sub_8088C70(u8 taskId)
void sub_8088CA0(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[15] = gPlayerAvatar.flags;
gPlayerAvatar.preventStep = TRUE;
SetPlayerAvatarStateMask(1);
sub_8059BF4();
- FieldObjectSetSpecialAnim(mapObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
task->data[0]++;
}
}
void sub_8088CF8(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
gFieldEffectArguments[0] = task->data[1];
@@ -2982,14 +2995,14 @@ void sub_8088CF8(struct Task *task)
void sub_8088D3C(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (task->data[15] & 0x08)
{
- sub_8127ED0(mapObject->mapobj_unk_1A, 2);
- sub_8127EFC(mapObject->mapobj_unk_1A, 0);
+ sub_8127ED0(eventObject->fieldEffectSpriteId, 2);
+ sub_8127EFC(eventObject->fieldEffectSpriteId, 0);
}
task->data[1] = sub_8088F60();
task->data[0]++;
@@ -3002,16 +3015,16 @@ void sub_8088D94(struct Task *task)
{
task->data[0]++;
task->data[2] = 16;
- SetPlayerAvatarTransitionFlags(0x01);
- FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], 0x02);
+ SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
+ EventObjectSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], MOVEMENT_ACTION_FACE_LEFT);
}
}
void sub_8088DD8(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if ((task->data[2] == 0 || (--task->data[2]) == 0) && FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if ((task->data[2] == 0 || (--task->data[2]) == 0) && EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
PlaySE(SE_W019);
@@ -3021,17 +3034,17 @@ void sub_8088DD8(struct Task *task)
void sub_8088E2C(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if ((++task->data[2]) >= 8)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(0x03));
- StartSpriteAnim(&gSprites[mapObject->spriteId], 0x16);
- mapObject->mapobj_bit_12 = 1;
- FieldObjectSetSpecialAnim(mapObject, 0x48);
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ sub_805B980(eventObject, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
+ StartSpriteAnim(&gSprites[eventObject->spriteId], 0x16);
+ eventObject->inanimate = 1;
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT);
if (task->data[15] & 0x08)
{
- DestroySprite(&gSprites[mapObject->mapobj_unk_1A]);
+ DestroySprite(&gSprites[eventObject->fieldEffectSpriteId]);
}
task->data[0]++;
task->data[2] = 0;
@@ -3040,14 +3053,14 @@ void sub_8088E2C(struct Task *task)
void sub_8088EB4(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if ((++task->data[2]) >= 10)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- FieldObjectClearAnimIfSpecialAnimActive(mapObject);
- mapObject->mapobj_bit_12 = 0;
- mapObject->mapobj_bit_22 = 0;
- sub_8088FFC(task->data[1], mapObject->spriteId);
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ EventObjectClearHeldMovementIfActive(eventObject);
+ eventObject->inanimate = 0;
+ eventObject->hasShadow = 0;
+ sub_8088FFC(task->data[1], eventObject->spriteId);
CameraObjectReset2();
task->data[0]++;
}
@@ -3057,7 +3070,7 @@ void sub_8088F10(struct Task *task)
{
if (sub_8088FA4(task->data[1]))
{
- fade_8080918();
+ WarpFadeScreen();
task->data[0]++;
}
}
@@ -3252,9 +3265,9 @@ void sub_8089270(u8 taskId)
void sub_80892A0(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
task->data[2] = 17;
@@ -3263,27 +3276,27 @@ void sub_80892A0(struct Task *task)
SetPlayerAvatarStateMask(0x01);
if (task->data[15] & 0x08)
{
- sub_8127ED0(mapObject->mapobj_unk_1A, 0);
+ sub_8127ED0(eventObject->fieldEffectSpriteId, 0);
}
- sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(0x3));
+ sub_805B980(eventObject, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
CameraObjectReset2();
- FieldObjectTurn(mapObject, DIR_WEST);
- StartSpriteAnim(&gSprites[mapObject->spriteId], 0x16);
- mapObject->mapobj_bit_13 = 0;
+ EventObjectTurn(eventObject, DIR_WEST);
+ StartSpriteAnim(&gSprites[eventObject->spriteId], 0x16);
+ eventObject->invisible = 0;
task->data[1] = sub_8088F60();
sub_8088FC0(task->data[1]);
- sub_8088FFC(task->data[1], mapObject->spriteId);
+ sub_8088FFC(task->data[1], eventObject->spriteId);
}
}
void sub_8089354(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *sprite;
if (task->data[2] == 0 || (--task->data[2]) == 0)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sprite = &gSprites[mapObject->spriteId];
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ sprite = &gSprites[eventObject->spriteId];
sub_8088FFC(task->data[1], 0x40);
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
@@ -3326,26 +3339,26 @@ void sub_80893C0(struct Task *task)
void sub_8089414(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *sprite;
if (sub_8088FA4(task->data[1]))
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sprite = &gSprites[mapObject->spriteId];
- mapObject->mapobj_bit_12 = 0;
- sub_805C058(mapObject, mapObject->coords2.x, mapObject->coords2.y);
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ sprite = &gSprites[eventObject->spriteId];
+ eventObject->inanimate = 0;
+ sub_805C058(eventObject, eventObject->currentCoords.x, eventObject->currentCoords.y);
sprite->pos2.x = 0;
sprite->pos2.y = 0;
sprite->coordOffsetEnabled = 1;
sub_8059BF4();
- FieldObjectSetSpecialAnim(mapObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
task->data[0]++;
}
}
void sub_808948C(struct Task *task)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gPlayerAvatar.mapObjectId]))
+ if (EventObjectClearHeldMovementIfFinished(&gEventObjects[gPlayerAvatar.eventObjectId]))
{
task->data[0]++;
sub_8089230(task->data[1]);
@@ -3365,18 +3378,18 @@ void sub_80894C4(struct Task *task)
void fishE(struct Task *task)
{
u8 state;
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if ((--task->data[1]) == 0)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- state = 0;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ state = PLAYER_AVATAR_STATE_NORMAL;
if (task->data[15] & 0x08)
{
- state = 3;
- sub_8127ED0(mapObject->mapobj_unk_1A, 1);
+ state = PLAYER_AVATAR_STATE_SURFING;
+ sub_8127ED0(eventObject->fieldEffectSpriteId, 1);
}
- sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(state));
- FieldObjectTurn(mapObject, DIR_SOUTH);
+ sub_805B980(eventObject, GetPlayerAvatarGraphicsIdByStateId(state));
+ EventObjectTurn(eventObject, DIR_SOUTH);
gPlayerAvatar.flags = task->data[15];
gPlayerAvatar.preventStep = FALSE;
FieldEffectActiveListRemove(FLDEFF_FLY_IN);