Document field teleport anim
This commit is contained in:
+38
-38
@@ -29,9 +29,9 @@ static void sub_807DF4C(u8 a0);
|
||||
static void sub_807DFBC(u8 taskId);
|
||||
static void task_map_chg_seq_0807E20C(u8 taskId);
|
||||
static void task_map_chg_seq_0807E2CC(u8 taskId);
|
||||
static void sub_807E31C(u8 taskId);
|
||||
static void Task_TeleportWarpIn(u8 taskId);
|
||||
static void sub_807E718(u8 taskId);
|
||||
static void sub_807E784(u8 taskId);
|
||||
static void Task_TeleportWarp(u8 taskId);
|
||||
static void sub_807E80C(u8 taskId);
|
||||
static void sub_807E980(u8 taskId);
|
||||
static void sub_807EB64(u16, s16*, s16*);
|
||||
@@ -131,7 +131,7 @@ static void sub_807DCB0(bool8 arg)
|
||||
|
||||
static void task0A_nop_for_a_while(u8 taskId)
|
||||
{
|
||||
if (sub_807E418() == TRUE)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ void sub_807DCE4(void)
|
||||
|
||||
static void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskId)
|
||||
{
|
||||
if (sub_807E418() == TRUE)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
@@ -184,7 +184,7 @@ static void task_mpl_807DD60(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (sub_807E418() == TRUE)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
ScriptContext2_Disable();
|
||||
DestroyTask(taskId);
|
||||
@@ -218,7 +218,7 @@ static void sub_807DDF0(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (sub_807E418() == TRUE)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
sub_8009FE8();
|
||||
ScriptContext2_Disable();
|
||||
@@ -284,7 +284,7 @@ static void sub_807DF4C(bool8 a0)
|
||||
FadeInFromBlack();
|
||||
}
|
||||
|
||||
void sub_807DF64(void)
|
||||
void FieldCB_UnionRoomWarp(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
sub_8111CF0();
|
||||
@@ -300,13 +300,13 @@ void sub_807DF7C(void)
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
static void sub_807DF94(void)
|
||||
static void FieldCB_TeleportWarpIn(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
sub_8111CF0();
|
||||
PlaySE(SE_TK_WARPOUT);
|
||||
CreateTask(sub_807E31C, 10);
|
||||
CreateTask(Task_TeleportWarpIn, 10);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
@@ -363,7 +363,7 @@ static void sub_807DFBC(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (sub_807E418() && walkrun_is_standing_still() && !FieldIsDoorAnimationRunning() && !FuncIsActiveTask(Task_BarnDoorWipe))
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() && walkrun_is_standing_still() && !FieldIsDoorAnimationRunning() && !FuncIsActiveTask(Task_BarnDoorWipe))
|
||||
{
|
||||
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
task->data[0] = 4;
|
||||
@@ -371,7 +371,7 @@ static void sub_807DFBC(u8 taskId)
|
||||
break;
|
||||
// Legacy RS
|
||||
case 1:
|
||||
if (sub_807E418())
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished())
|
||||
{
|
||||
sub_807DCB0(TRUE);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
|
||||
@@ -413,7 +413,7 @@ static void task_map_chg_seq_0807E20C(u8 taskId)
|
||||
task->data[0] = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (sub_807E418())
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished())
|
||||
{
|
||||
sub_807DCB0(TRUE);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], GetWalkNormalMovementAction(GetPlayerFacingDirection()));
|
||||
@@ -444,7 +444,7 @@ static void task_map_chg_seq_0807E2CC(u8 taskId)
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (sub_807E418())
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished())
|
||||
{
|
||||
UnfreezeObjectEvents();
|
||||
ScriptContext2_Disable();
|
||||
@@ -454,18 +454,18 @@ static void task_map_chg_seq_0807E2CC(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_807E31C(u8 taskId)
|
||||
static void Task_TeleportWarpIn(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
FreezeObjectEvents();
|
||||
ScriptContext2_Enable();
|
||||
sub_805DC04();
|
||||
StartTeleportInPlayerAnim();
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (sub_807E418() && sub_805DC24() != TRUE)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() && WaitTeleportInPlayerAnim() != TRUE)
|
||||
{
|
||||
UnfreezeObjectEvents();
|
||||
ScriptContext2_Disable();
|
||||
@@ -477,7 +477,7 @@ static void sub_807E31C(u8 taskId)
|
||||
|
||||
static void Task_WaitFadeAndCreateStartMenuTask(u8 taskId)
|
||||
{
|
||||
if (sub_807E418() == TRUE)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
CreateTask(Task_StartMenuHandleInput, 80);
|
||||
@@ -499,7 +499,7 @@ bool8 FieldCB2_ReturnToStartMenuInit(void)
|
||||
|
||||
static void task_mpl_807E3C8(u8 taskId)
|
||||
{
|
||||
if (sub_807E418() == TRUE)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
ScriptContext2_Disable();
|
||||
DestroyTask(taskId);
|
||||
@@ -515,12 +515,12 @@ void sub_807E3EC(void)
|
||||
CreateTask(task_mpl_807E3C8, 10);
|
||||
}
|
||||
|
||||
static bool32 sub_807E40C(void)
|
||||
static bool32 WaitWarpFadeOutScreen(void)
|
||||
{
|
||||
return gPaletteFade.active;
|
||||
}
|
||||
|
||||
bool32 sub_807E418(void)
|
||||
bool32 FieldFadeTransitionBackgroundEffectIsFinished(void)
|
||||
{
|
||||
if (IsWeatherNotFadingIn() == TRUE && ForestMapPreviewScreenIsRunning())
|
||||
return TRUE;
|
||||
@@ -535,7 +535,7 @@ void DoWarp(void)
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
PlaySE(SE_KAIDAN);
|
||||
gFieldCallback = sub_807DF64;
|
||||
gFieldCallback = FieldCB_UnionRoomWarp;
|
||||
CreateTask(sub_807E718, 10);
|
||||
}
|
||||
|
||||
@@ -545,7 +545,7 @@ void DoDiveWarp(void)
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
gFieldCallback = sub_807DF64;
|
||||
gFieldCallback = FieldCB_UnionRoomWarp;
|
||||
CreateTask(sub_807E718, 10);
|
||||
}
|
||||
|
||||
@@ -560,7 +560,7 @@ void sub_807E4A0(u16 metatileBehavior, u16 delay)
|
||||
void DoDoorWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gFieldCallback = sub_807DF64;
|
||||
gFieldCallback = FieldCB_UnionRoomWarp;
|
||||
CreateTask(sub_807E80C, 10);
|
||||
}
|
||||
|
||||
@@ -568,14 +568,14 @@ void sub_807E500(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
CreateTask(sub_807E718, 10);
|
||||
gFieldCallback = sub_807DF94;
|
||||
gFieldCallback = FieldCB_TeleportWarpIn;
|
||||
}
|
||||
|
||||
void DoUnionRoomWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gFieldCallback = sub_807DF64;
|
||||
CreateTask(sub_807E784, 10);
|
||||
gFieldCallback = FieldCB_UnionRoomWarp;
|
||||
CreateTask(Task_TeleportWarp, 10);
|
||||
}
|
||||
|
||||
void DoFallWarp(void)
|
||||
@@ -606,8 +606,8 @@ void DoTeleportWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
TryFadeOutOldMapMusic();
|
||||
CreateTask(sub_807E784, 10);
|
||||
gFieldCallback = sub_807DF94;
|
||||
CreateTask(Task_TeleportWarp, 10);
|
||||
gFieldCallback = FieldCB_TeleportWarpIn;
|
||||
}
|
||||
|
||||
void sub_807E5C4(void)
|
||||
@@ -628,7 +628,7 @@ static void sub_807E5EC(u8 taskId)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_807E40C() && BGMusicStopped())
|
||||
if (!WaitWarpFadeOutScreen() && BGMusicStopped())
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
@@ -661,7 +661,7 @@ static void sub_807E678(u8 taskId)
|
||||
data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_807E40C() && BGMusicStopped())
|
||||
if (!WaitWarpFadeOutScreen() && BGMusicStopped())
|
||||
{
|
||||
Link_TryStartSend5FFF();
|
||||
data[0]++;
|
||||
@@ -694,7 +694,7 @@ static void sub_807E718(u8 taskId)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_807E40C() && BGMusicStopped())
|
||||
if (!WaitWarpFadeOutScreen() && BGMusicStopped())
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
@@ -705,7 +705,7 @@ static void sub_807E718(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_807E784(u8 taskId)
|
||||
static void Task_TeleportWarp(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
switch (task->data[0])
|
||||
@@ -714,18 +714,18 @@ static void sub_807E784(u8 taskId)
|
||||
FreezeObjectEvents();
|
||||
ScriptContext2_Enable();
|
||||
PlaySE(SE_TK_WARPIN);
|
||||
sub_805DAB0();
|
||||
StartTeleportWarpOutPlayerAnim();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_805DAD0())
|
||||
if (!WaitTeleportWarpOutPlayerAnim())
|
||||
{
|
||||
WarpFadeOutScreen();
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!sub_807E40C() && BGMusicStopped())
|
||||
if (!WaitWarpFadeOutScreen() && BGMusicStopped())
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
@@ -829,11 +829,11 @@ static void sub_807E980(u8 taskId)
|
||||
break;
|
||||
case 3:
|
||||
sub_807EAC4(data[2], data[3], &data[4], &data[5], &data[6]);
|
||||
if (!sub_807E40C() && BGMusicStopped())
|
||||
if (!WaitWarpFadeOutScreen() && BGMusicStopped())
|
||||
data[0]++;
|
||||
break;
|
||||
default:
|
||||
gFieldCallback = sub_807DF64;
|
||||
gFieldCallback = FieldCB_UnionRoomWarp;
|
||||
WarpIntoMap();
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
DestroyTask(taskId);
|
||||
@@ -898,7 +898,7 @@ static void sub_807EC34(u8 taskId)
|
||||
switch (data[0])
|
||||
{
|
||||
default:
|
||||
if (sub_807E418() == TRUE)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
CameraObjectReset1();
|
||||
ScriptContext2_Disable();
|
||||
|
||||
+85
-61
@@ -29,7 +29,7 @@
|
||||
#include "constants/moves.h"
|
||||
|
||||
static EWRAM_DATA struct ObjectEvent * gUnknown_2036E30 = NULL;
|
||||
static EWRAM_DATA u8 gUnknown_2036E34 = DIR_NONE;
|
||||
static EWRAM_DATA u8 sTeleportSavedFacingDirection = DIR_NONE;
|
||||
EWRAM_DATA struct ObjectEvent gObjectEvents[OBJECT_EVENTS_COUNT] = {};
|
||||
EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {};
|
||||
|
||||
@@ -121,9 +121,9 @@ static bool8 Fishing13(struct Task * task);
|
||||
static bool8 Fishing14(struct Task * task);
|
||||
static bool8 Fishing15(struct Task * task);
|
||||
static bool8 Fishing16(struct Task * task);
|
||||
static void sub_805DB04(u8 taskId);
|
||||
static void sub_805DC38(u8 taskId);
|
||||
static u8 sub_805DDC8(struct ObjectEvent * object, s16 *timer);
|
||||
static void Task_TeleportWarpOutPlayerAnim(u8 taskId);
|
||||
static void Task_TeleportWarpInPlayerAnim(u8 taskId);
|
||||
static u8 TeleportAnim_RotatePlayer(struct ObjectEvent * object, s16 *timer);
|
||||
|
||||
void MovementType_Player(struct Sprite *sprite)
|
||||
{
|
||||
@@ -1982,37 +1982,54 @@ void AlignFishingAnimationFrames(struct Sprite * playerSprite)
|
||||
sub_80DC4A4(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 1, playerSprite->pos2.y);
|
||||
}
|
||||
|
||||
void sub_805DAB0(void)
|
||||
#define tState data[0]
|
||||
#define tRotationTimer data[1]
|
||||
#define tDeltaY data[2]
|
||||
#define tYdeflection data[3]
|
||||
#define tYpos data[4]
|
||||
#define tFinalFacingDirection data[5]
|
||||
#define tPriority data[6]
|
||||
#define tSubpriority data[7]
|
||||
|
||||
static const u8 sTeleportFacingDirectionSequence[] = {
|
||||
[DIR_SOUTH] = DIR_WEST,
|
||||
[DIR_WEST] = DIR_NORTH,
|
||||
[DIR_NORTH] = DIR_EAST,
|
||||
[DIR_EAST] = DIR_SOUTH,
|
||||
[DIR_NONE] = DIR_SOUTH,
|
||||
};
|
||||
|
||||
void StartTeleportWarpOutPlayerAnim(void)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_805DB04, 0);
|
||||
sub_805DB04(taskId);
|
||||
u8 taskId = CreateTask(Task_TeleportWarpOutPlayerAnim, 0);
|
||||
Task_TeleportWarpOutPlayerAnim(taskId);
|
||||
}
|
||||
|
||||
bool32 sub_805DAD0(void)
|
||||
bool32 WaitTeleportWarpOutPlayerAnim(void)
|
||||
{
|
||||
return FuncIsActiveTask(sub_805DB04);
|
||||
return FuncIsActiveTask(Task_TeleportWarpOutPlayerAnim);
|
||||
}
|
||||
|
||||
void sub_805DAE4(u8 direction)
|
||||
void SavePlayerFacingDirectionForTeleport(u8 direction)
|
||||
{
|
||||
gUnknown_2036E34 = direction;
|
||||
sTeleportSavedFacingDirection = direction;
|
||||
}
|
||||
|
||||
static u8 sub_805DAF0(void)
|
||||
static u8 GetTeleportSavedFacingDirection(void)
|
||||
{
|
||||
if (gUnknown_2036E34 == DIR_NONE)
|
||||
if (sTeleportSavedFacingDirection == DIR_NONE)
|
||||
return DIR_SOUTH;
|
||||
else
|
||||
return gUnknown_2036E34;
|
||||
return sTeleportSavedFacingDirection;
|
||||
}
|
||||
|
||||
static void sub_805DB04(u8 taskId)
|
||||
static void Task_TeleportWarpOutPlayerAnim(u8 taskId)
|
||||
{
|
||||
struct ObjectEvent *object = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
struct Sprite *sprite = &gSprites[object->spriteId];
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
switch (data[0])
|
||||
switch (tState)
|
||||
{
|
||||
case 0:
|
||||
if (!ObjectEventClearHeldMovementIfFinished(object))
|
||||
@@ -2020,25 +2037,25 @@ static void sub_805DB04(u8 taskId)
|
||||
return;
|
||||
}
|
||||
|
||||
sub_805DAE4(object->facingDirection);
|
||||
data[1] = 0;
|
||||
data[2] = 1;
|
||||
data[3] = (u16)(sprite->pos1.y + sprite->pos2.y) * 16;
|
||||
SavePlayerFacingDirectionForTeleport(object->facingDirection);
|
||||
tRotationTimer = 0;
|
||||
tDeltaY = 1;
|
||||
tYdeflection = (u16)(sprite->pos1.y + sprite->pos2.y) * 16;
|
||||
sprite->pos2.y = 0;
|
||||
CameraObjectReset2();
|
||||
object->fixedPriority = TRUE;
|
||||
sprite->oam.priority = 0;
|
||||
sprite->subpriority = 0;
|
||||
sprite->subspriteMode = SUBSPRITES_OFF;
|
||||
data[0]++;
|
||||
tState++;
|
||||
case 1:
|
||||
sub_805DDC8(object, &data[1]);
|
||||
data[3] -= data[2];
|
||||
data[2] += 3;
|
||||
sprite->pos1.y = data[3] >> 4;
|
||||
TeleportAnim_RotatePlayer(object, &tRotationTimer);
|
||||
tYdeflection -= tDeltaY;
|
||||
tDeltaY += 3;
|
||||
sprite->pos1.y = tYdeflection >> 4;
|
||||
if (sprite->pos1.y + (s16)gTotalCameraPixelOffsetY < -32)
|
||||
{
|
||||
data[0]++;
|
||||
tState++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
@@ -2047,73 +2064,71 @@ static void sub_805DB04(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_805DC04(void)
|
||||
void StartTeleportInPlayerAnim(void)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_805DC38, 0);
|
||||
sub_805DC38(taskId);
|
||||
u8 taskId = CreateTask(Task_TeleportWarpInPlayerAnim, 0);
|
||||
Task_TeleportWarpInPlayerAnim(taskId);
|
||||
}
|
||||
|
||||
bool32 sub_805DC24(void)
|
||||
bool32 WaitTeleportInPlayerAnim(void)
|
||||
{
|
||||
return FuncIsActiveTask(sub_805DC38);
|
||||
return FuncIsActiveTask(Task_TeleportWarpInPlayerAnim);
|
||||
}
|
||||
|
||||
static const u8 gUnknown_835B92C[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
|
||||
|
||||
static void sub_805DC38(u8 taskId)
|
||||
static void Task_TeleportWarpInPlayerAnim(u8 taskId)
|
||||
{
|
||||
struct ObjectEvent *object = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
struct Sprite *sprite = &gSprites[object->spriteId];
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
switch (data[0])
|
||||
switch (tState)
|
||||
{
|
||||
case 0:
|
||||
data[5] = sub_805DAF0();
|
||||
ObjectEventForceSetHeldMovement(object, GetFaceDirectionMovementAction(gUnknown_835B92C[data[5]]));
|
||||
data[1] = 0;
|
||||
data[2] = 116;
|
||||
data[4] = sprite->pos1.y;
|
||||
data[6] = sprite->oam.priority;
|
||||
data[7] = sprite->subpriority;
|
||||
data[3] = -((u16)sprite->pos2.y + 32) * 16;
|
||||
tFinalFacingDirection = GetTeleportSavedFacingDirection();
|
||||
ObjectEventForceSetHeldMovement(object, GetFaceDirectionMovementAction(sTeleportFacingDirectionSequence[tFinalFacingDirection]));
|
||||
tRotationTimer = 0;
|
||||
tDeltaY = 116;
|
||||
tYpos = sprite->pos1.y;
|
||||
tPriority = sprite->oam.priority;
|
||||
tSubpriority = sprite->subpriority;
|
||||
tYdeflection = -((u16)sprite->pos2.y + 32) * 16;
|
||||
sprite->pos2.y = 0;
|
||||
CameraObjectReset2();
|
||||
object->fixedPriority = TRUE;
|
||||
sprite->oam.priority = 1;
|
||||
sprite->subpriority = 0;
|
||||
sprite->subspriteMode = SUBSPRITES_OFF;
|
||||
data[0]++;
|
||||
tState++;
|
||||
case 1:
|
||||
sub_805DDC8(object, &data[1]);
|
||||
data[3] += data[2];
|
||||
data[2] -= 3;
|
||||
if (data[2] < 4)
|
||||
TeleportAnim_RotatePlayer(object, &tRotationTimer);
|
||||
tYdeflection += tDeltaY;
|
||||
tDeltaY -= 3;
|
||||
if (tDeltaY < 4)
|
||||
{
|
||||
data[2] = 4;
|
||||
tDeltaY = 4;
|
||||
}
|
||||
sprite->pos1.y = data[3] >> 4;
|
||||
if (sprite->pos1.y >= data[4])
|
||||
sprite->pos1.y = tYdeflection >> 4;
|
||||
if (sprite->pos1.y >= tYpos)
|
||||
{
|
||||
sprite->pos1.y = data[4];
|
||||
sprite->pos1.y = tYpos;
|
||||
data[8] = 0;
|
||||
data[0]++;
|
||||
tState++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sub_805DDC8(object, &data[1]);
|
||||
TeleportAnim_RotatePlayer(object, &tRotationTimer);
|
||||
data[8]++;
|
||||
if (data[8] > 8)
|
||||
{
|
||||
data[0]++;
|
||||
tState++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (data[5] == sub_805DDC8(object, &data[1]))
|
||||
if (tFinalFacingDirection == TeleportAnim_RotatePlayer(object, &tRotationTimer))
|
||||
{
|
||||
object->fixedPriority = 0;
|
||||
sprite->oam.priority = data[6];
|
||||
sprite->subpriority = data[7];
|
||||
sprite->oam.priority = tPriority;
|
||||
sprite->subpriority = tSubpriority;
|
||||
CameraObjectReset1();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -2121,7 +2136,7 @@ static void sub_805DC38(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static u8 sub_805DDC8(struct ObjectEvent *object, s16 *a1)
|
||||
static u8 TeleportAnim_RotatePlayer(struct ObjectEvent *object, s16 *a1)
|
||||
{
|
||||
if (*a1 < 8 && ++(*a1) < 8)
|
||||
{
|
||||
@@ -2133,7 +2148,16 @@ static u8 sub_805DDC8(struct ObjectEvent *object, s16 *a1)
|
||||
return object->facingDirection;
|
||||
}
|
||||
|
||||
ObjectEventForceSetHeldMovement(object, GetFaceDirectionMovementAction(gUnknown_835B92C[object->facingDirection]));
|
||||
ObjectEventForceSetHeldMovement(object, GetFaceDirectionMovementAction(sTeleportFacingDirectionSequence[object->facingDirection]));
|
||||
*a1 = 0;
|
||||
return gUnknown_835B92C[object->facingDirection];
|
||||
return sTeleportFacingDirectionSequence[object->facingDirection];
|
||||
}
|
||||
|
||||
#undef tSubpriority
|
||||
#undef tPriority
|
||||
#undef tFinalFacingDirection
|
||||
#undef tYpos
|
||||
#undef tYdeflection
|
||||
#undef tDeltaY
|
||||
#undef tRotationTimer
|
||||
#undef tState
|
||||
|
||||
@@ -434,14 +434,14 @@ static void sub_807F45C(u8 taskId)
|
||||
++gTasks[taskId].data[0];
|
||||
break;
|
||||
case 3:
|
||||
if (sub_807E418() == TRUE)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
ScriptContext1_SetupScript(EventScript_AfterWhiteOutHeal);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (sub_807E418() == TRUE)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
ScriptContext1_SetupScript(EventScript_AfterWhiteOutMomHeal);
|
||||
|
||||
+1
-1
@@ -509,7 +509,7 @@ static void BufferOptionMenuString(u8 selection)
|
||||
|
||||
static void CloseAndSaveOptionMenu(u8 taskId)
|
||||
{
|
||||
gFieldCallback = sub_807DF64;
|
||||
gFieldCallback = FieldCB_UnionRoomWarp;
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
FreeAllWindowBuffers();
|
||||
gSaveBlock2Ptr->optionsTextSpeed = sOptionMenuPtr->option[MENUITEM_TEXTSPEED];
|
||||
|
||||
+1
-1
@@ -600,7 +600,7 @@ bool8 sub_8111000(void)
|
||||
{
|
||||
LoadPalette(stdpal_get(4), 0xF0, 0x20);
|
||||
SetQuestLogState(QL_STATE_2);
|
||||
sub_807DF64();
|
||||
FieldCB_UnionRoomWarp();
|
||||
gUnknown_203AE94 = (struct UnkStruct_203AE94){};
|
||||
gUnknown_203AE94.unk_0_0 = 2;
|
||||
return 1;
|
||||
|
||||
+1
-1
@@ -802,7 +802,7 @@ bool8 ScrCmd_warpteleport2(struct ScriptContext * ctx)
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
sub_805DAE4(GetPlayerFacingDirection());
|
||||
SavePlayerFacingDirectionForTeleport(GetPlayerFacingDirection());
|
||||
sub_807E500();
|
||||
ResetInitialPlayerAvatarState();
|
||||
return TRUE;
|
||||
|
||||
+1
-1
@@ -322,7 +322,7 @@ static void Task_Seagallop_3(void)
|
||||
SetWarpDestination(warpInfo[0], warpInfo[1], -1, warpInfo[2], warpInfo[3]);
|
||||
PlayRainStoppingSoundEffect();
|
||||
PlaySE(SE_KAIDAN);
|
||||
gFieldCallback = sub_807DF64;
|
||||
gFieldCallback = FieldCB_UnionRoomWarp;
|
||||
WarpIntoMap();
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
ResetInitialPlayerAvatarState();
|
||||
|
||||
Reference in New Issue
Block a user