summaryrefslogtreecommitdiff
path: root/src/quest_log_player.c
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-01-14 21:27:45 -0500
committerGriffinR <griffin.g.richards@gmail.com>2020-01-15 16:00:45 -0500
commit04d176334ad590d3462e3c1eb75c1313705ae183 (patch)
tree865ca807901bf57e63523b19f2d535c7ef391f89 /src/quest_log_player.c
parent2f81b4a204d051aeb88580dc63381011ec49fcbb (diff)
Document some Quest Log
Diffstat (limited to 'src/quest_log_player.c')
-rw-r--r--src/quest_log_player.c196
1 files changed, 196 insertions, 0 deletions
diff --git a/src/quest_log_player.c b/src/quest_log_player.c
new file mode 100644
index 000000000..7665a8a92
--- /dev/null
+++ b/src/quest_log_player.c
@@ -0,0 +1,196 @@
+#include "global.h"
+#include "bike.h"
+#include "script.h"
+#include "task.h"
+#include "field_player_avatar.h"
+#include "event_object_movement.h"
+#include "field_effect.h"
+#include "field_effect_helpers.h"
+#include "quest_log.h"
+
+static void sub_81504A8(void);
+static void sub_81504E8(void);
+static void sub_8150530(void);
+static void sub_81505C4(u8 taskId);
+static void sub_8150708(void);
+static void sub_815077C(void);
+static void sub_8150794(u8 taskId);
+static void sub_81507CC(void);
+static void sub_81507D8(void);
+static void sub_81507E4(void);
+static void sub_81507F0(void);
+static void sub_81507BC(struct ObjectEvent *a0, u8 a1);
+
+static void (*const gUnknown_8471EDC[])(void) = {
+ sub_81504A8,
+ sub_81504E8,
+ sub_8150530,
+ sub_8150708,
+ sub_81507CC,
+ sub_81507D8,
+ sub_81507E4,
+ sub_81507F0,
+ sub_815077C
+};
+
+void sub_8150454(u8 a0)
+{
+ if (a0 < ARRAY_COUNT(gUnknown_8471EDC))
+ gUnknown_8471EDC[a0]();
+}
+
+bool8 sub_8150474(u8 a0)
+{
+ if (gUnknown_3005E88 == 2)
+ {
+ sub_8112720(a0);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8150498(u8 a0)
+{
+ return sub_8150454(a0);
+}
+
+static void sub_81504A8(void)
+{
+ struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
+ sub_81507BC(objectEvent, sub_805C808(0));
+ ObjectEventTurn(objectEvent, objectEvent->placeholder18);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT);
+}
+
+static void sub_81504E8(void)
+{
+ struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
+ sub_81507BC(objectEvent, sub_805C808(1));
+ ObjectEventTurn(objectEvent, objectEvent->placeholder18);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_MACH_BIKE);
+ sub_80BD620(0, 0);
+}
+
+static void sub_8150530(void)
+{
+ struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
+ struct Sprite *sprite = &gSprites[objectEvent->spriteId];
+
+ if (gUnknown_3005E88 == 1 || gUnknown_3005E88 == 3)
+ {
+ u8 taskId;
+ ScriptContext2_Enable();
+ gPlayerAvatar.unk6 = 1;
+ taskId = CreateTask(sub_81505C4, 0xFF);
+ gTasks[taskId].data[0] = 0;
+ }
+ else
+ {
+ sub_81507BC(objectEvent, sub_805C808(4));
+ StartSpriteAnim(sprite, sub_80634F0(objectEvent->facingDirection));
+ }
+}
+
+static void sub_81505C4(u8 taskId)
+{
+ struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
+ struct Sprite *sprite = &gSprites[objectEvent->spriteId];
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ ObjectEventClearAnimIfSpecialAnimActive(objectEvent);
+ objectEvent->mapobj_bit_11 = TRUE;
+ sub_81507BC(objectEvent, sub_805C808(4));
+ StartSpriteAnim(sprite, sub_80634F0(objectEvent->facingDirection));
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[1] = 0;
+ break;
+ case 1:
+ sub_805D9C4(sprite);
+ if (gTasks[taskId].data[1] < 60)
+ gTasks[taskId].data[1]++;
+ else
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ StartSpriteAnim(sprite, sub_8063500(GetPlayerFacingDirection()));
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ sub_805D9C4(sprite);
+ if (sprite->animEnded)
+ {
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING))
+ sub_81507BC(objectEvent, sub_805C808(0));
+ else
+ sub_81507BC(objectEvent, sub_805C808(2));
+ ObjectEventTurn(objectEvent, objectEvent->placeholder18);
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_8150708(void)
+{
+ struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
+ u8 fieldEffectId;
+
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING))
+ {
+ sub_81507BC(objectEvent, sub_805C808(2));
+ ObjectEventTurn(objectEvent, objectEvent->placeholder18);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING);
+ gFieldEffectArguments[0] = objectEvent->coords2.x;
+ gFieldEffectArguments[1] = objectEvent->coords2.y;
+ gFieldEffectArguments[2] = gPlayerAvatar.objectEventId;
+ fieldEffectId = FieldEffectStart(FLDEFF_SURF_BLOB);
+ objectEvent->mapobj_unk_1A = fieldEffectId;
+ sub_80DC44C(fieldEffectId, 1);
+ }
+}
+
+static void sub_815077C(void)
+{
+ FieldEffectStart(FLDEFF_UNK_41);
+ CreateTask(sub_8150794, 0x00);
+}
+
+static void sub_8150794(u8 taskId)
+{
+ if (!FieldEffectActiveListContains(0x41))
+ {
+ UnfreezeObjectEvents();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_81507BC(struct ObjectEvent * a0, u8 a1)
+{
+ ObjectEventSetGraphicsId(a0, a1);
+}
+
+static void sub_81507CC(void)
+{
+ sub_805D154(1);
+}
+
+static void sub_81507D8(void)
+{
+ sub_805D154(2);
+}
+
+static void sub_81507E4(void)
+{
+ sub_805D154(3);
+}
+
+static void sub_81507F0(void)
+{
+ sub_805D154(4);
+}