through sub_8097A20

This commit is contained in:
PikalaxALT
2020-02-25 16:52:16 -05:00
parent 565114625f
commit 41644b283a
7 changed files with 68 additions and 124 deletions
+4 -3
View File
@@ -22,6 +22,7 @@
#include "event_object_lock.h"
#include "start_menu.h"
#include "constants/songs.h"
#include "constants/event_object_movement.h"
static void sub_807DF4C(u8 a0);
static void sub_807DFBC(u8 taskId);
@@ -348,7 +349,7 @@ static void sub_807DFBC(u8 taskId)
{
PlayerGetDestCoords(&task->data[12], &task->data[13]);
sub_807DCB0(TRUE);
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 16);
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
task->data[0] = 8;
}
break;
@@ -372,7 +373,7 @@ static void sub_807DFBC(u8 taskId)
if (sub_807E418())
{
sub_807DCB0(TRUE);
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 16);
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
task->data[0] = 2;
}
break;
@@ -752,7 +753,7 @@ static void sub_807E80C(u8 taskId)
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
{
ObjectEventClearAnimIfSpecialAnimActive(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)]);
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 17);
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_UP);
task->data[0] = 2;
}
break;
+43 -1
View File
@@ -1,19 +1,24 @@
#include "global.h"
#include "gflib.h"
#include "event_scripts.h"
#include "fieldmap.h"
#include "field_specials.h"
#include "fldeff.h"
#include "field_effect.h"
#include "field_player_avatar.h"
#include "metatile_behavior.h"
#include "overworld.h"
#include "party_menu.h"
#include "script.h"
#include "constants/event_objects.h"
EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;
EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE;
void FieldCallback_CutTree(void);
void FieldCallback_CutGrass(void);
void FieldCallback_CutTree(void);
void sub_8097A20(void);
void sub_8097C6C(void);
u8 MetatileAtCoordsIsGrassTile(s16 x, s16 y)
{
@@ -66,3 +71,40 @@ bool8 SetUpFieldMove_Cut(void)
return FALSE;
}
}
void FieldCallback_CutGrass(void)
{
FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS);
gFieldEffectArguments[0] = GetCursorSelectionMonId();
}
bool8 sub_80979A0(void)
{
u8 taskId = oei_task_add();
FLDEFF_SET_FUNC_TO_DATA(sub_8097A20);
IncrementGameStat(GAME_STAT_USED_CUT);
return FALSE;
}
void FieldCallback_CutTree(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
ScriptContext1_SetupScript(EventScript_FldEffCut);
}
bool8 sub_80979F0(void)
{
u8 taskId = oei_task_add();
FLDEFF_SET_FUNC_TO_DATA(sub_8097C6C);
IncrementGameStat(GAME_STAT_USED_CUT);
return FALSE;
}
void sub_8097A20(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS);
if (sScheduleOpenDottedHole == TRUE)
CutMoveOpenDottedHoleDoor();
else
FieldEffectStart(FLDEFF_CUT_GRASS);
}
+2 -1
View File
@@ -12,6 +12,7 @@
#include "event_object_movement.h"
#include "constants/songs.h"
#include "constants/event_objects.h"
#include "constants/event_object_movement.h"
#include "constants/maps.h"
static void task08_080C9820(u8 taskId);
@@ -60,7 +61,7 @@ static void task08_080C9820(u8 taskId)
else
{
sub_805CB70();
ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], 0x45);
ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], MOVEMENT_ACTION_UNKNOWN_STEP_45);
gTasks[taskId].func = sub_80C98B0;
}
}
+15 -15
View File
@@ -113,7 +113,7 @@ static EWRAM_DATA u16 *gUnknown_203AE90 = NULL;
static EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0};
static EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0};
static EWRAM_DATA u16 sQuestLogIdx = 0;
static EWRAM_DATA u8 gUnknown_203AF9A[64][2] = {{0}};
static EWRAM_DATA u8 sMovementScripts[64][2] = {{0}};
static EWRAM_DATA u16 gUnknown_203B01A = 0;
static EWRAM_DATA u16 gUnknown_203B01C = 0;
static EWRAM_DATA u16 sFlagOrVarPlayhead = 0;
@@ -1551,24 +1551,24 @@ void sub_811246C(struct Sprite *sprite)
struct ObjectEvent *objectEvent = &gObjectEvents[sprite->data[0]];
if (objectEvent->localId == OBJ_EVENT_ID_PLAYER)
{
if (gUnknown_203AF9A[0][0] != OBJ_EVENT_ID_PLAYER)
if (sMovementScripts[0][0] != 0xFF)
{
ObjectEventSetHeldMovement(objectEvent, gUnknown_203AF9A[0][0]);
gUnknown_203AF9A[0][0] = OBJ_EVENT_ID_PLAYER;
ObjectEventSetHeldMovement(objectEvent, sMovementScripts[0][0]);
sMovementScripts[0][0] = 0xFF;
}
if (gUnknown_203AF9A[0][1] != OBJ_EVENT_ID_PLAYER)
if (sMovementScripts[0][1] != OBJ_EVENT_ID_PLAYER)
{
sub_8150454();
gUnknown_203AF9A[0][1] = OBJ_EVENT_ID_PLAYER;
sMovementScripts[0][1] = OBJ_EVENT_ID_PLAYER;
}
sub_8063E28(objectEvent, sprite);
}
else
{
if (gUnknown_203AF9A[objectEvent->localId][0] != OBJ_EVENT_ID_PLAYER)
if (sMovementScripts[objectEvent->localId][0] != 0xFF)
{
ObjectEventSetHeldMovement(objectEvent, gUnknown_203AF9A[objectEvent->localId][0]);
gUnknown_203AF9A[objectEvent->localId][0] = OBJ_EVENT_ID_PLAYER;
ObjectEventSetHeldMovement(objectEvent, sMovementScripts[objectEvent->localId][0]);
sMovementScripts[objectEvent->localId][0] = 0xFF;
}
sub_8063E28(objectEvent, sprite);
}
@@ -1736,15 +1736,15 @@ static void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2)
sNumQuestLogs = a2 / 8;
for (i = 0; i < 0x40; i++)
{
gUnknown_203AF9A[i][0] |= 0xFF;
gUnknown_203AF9A[i][1] |= 0xFF;
sMovementScripts[i][0] |= 0xFF;
sMovementScripts[i][1] |= 0xFF;
}
sQuestLogIdx = 0;
gUnknown_203B01C = 0;
gUnknown_3005E90 = (struct UnkStruct_3005E90){};
gUnknown_203B01A = gUnknown_3005E94[sQuestLogIdx].unk_4;
gUnknown_203AF9A[0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
gUnknown_203AF9A[0][1] = 0xFF;
sMovementScripts[0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
sMovementScripts[0][1] = 0xFF;
gUnknown_3005E88 = 1;
break;
case 2:
@@ -1807,10 +1807,10 @@ void sub_8112B3C(void)
switch (gUnknown_3005E94[sQuestLogIdx].unk_6)
{
case 0:
gUnknown_203AF9A[gUnknown_3005E94[sQuestLogIdx].unk_0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
sMovementScripts[gUnknown_3005E94[sQuestLogIdx].unk_0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
break;
case 1:
gUnknown_203AF9A[gUnknown_3005E94[sQuestLogIdx].unk_0][1] = gUnknown_3005E94[sQuestLogIdx].unk_3;
sMovementScripts[gUnknown_3005E94[sQuestLogIdx].unk_0][1] = gUnknown_3005E94[sQuestLogIdx].unk_3;
break;
case 2:
*(u32 *)&gUnknown_3005E90 = ((gUnknown_3005E94[sQuestLogIdx].unk_3 << 24) | (gUnknown_3005E94[sQuestLogIdx].unk_2 << 16) | (gUnknown_3005E94[sQuestLogIdx].unk_1 << 8) | (gUnknown_3005E94[sQuestLogIdx].unk_0 << 0));