Skip to content

Commit c0b107f

Browse files
committed
Potentially fixed level reset not reloading objects in areas other than the one level reset into
1 parent 8b7da5c commit c0b107f

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/level_reset.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "binary.h"
44
#include "types.h"
55
#include "game/camera.h"
6+
#include "game/display.h"
67
#include "game/level_update.h"
78
#include "game/envfx_snow.h"
89
#include "object_constants.h"
@@ -12,6 +13,8 @@
1213
#include "timer.h"
1314

1415
static bool sTimerRunningDeferred = false;
16+
static u32 sReloadObjectsAreasMask = 0;
17+
static u32 sReloadObjectsFrame = 0;
1518
extern u8 sTransitionColorFadeCount[4];
1619
extern u16 sTransitionTextureFadeCount[2];
1720

@@ -58,6 +61,7 @@ static void resetCommon()
5861
{
5962
miniResetCommon();
6063
sTimerRunningDeferred = true;
64+
sReloadObjectsAreasMask = ~0;
6165
}
6266

6367
void LevelReset_onNormal()
@@ -91,6 +95,7 @@ void LevelReset_onNormal()
9195
gHudDisplay.timer = 0;
9296
sTimerRunning = true;
9397
sTimerRunningDeferred = true;
98+
sReloadObjectsAreasMask = ~0;
9499
}
95100

96101
LevelConv_PlainLevels warp = Config_warpIdAndReset();
@@ -107,6 +112,7 @@ void LevelReset_onNormal()
107112
gHudDisplay.timer = 0;
108113
sTimerRunning = true;
109114
sTimerRunningDeferred = true;
115+
sReloadObjectsAreasMask = ~0;
110116
Timer_reset();
111117
resetCamera();
112118
}
@@ -127,8 +133,15 @@ static inline bool isScroll(struct SpawnInfo* spawnInfo)
127133

128134
s32 LevelReset_onSpawnObjectsFromInfoHook(struct SpawnInfo* spawnInfo)
129135
{
130-
if (sTimerRunningDeferred && !isScroll(spawnInfo))
136+
u32 areaMask = 1 << gCurrAreaIndex;
137+
if (((sReloadObjectsAreasMask & areaMask) || sReloadObjectsFrame == gGlobalTimer) && !isScroll(spawnInfo))
131138
{
139+
sReloadObjectsFrame = gGlobalTimer;
140+
sReloadObjectsAreasMask &= ~areaMask;
141+
142+
#ifndef BINARY
143+
spawnInfo->respawnInfo = RESPAWN_INFO_NONE;
144+
#endif
132145
spawnInfo->behaviorArg &= ~(RESPAWN_INFO_DONT_RESPAWN << 8);
133146
return true;
134147
}

src/xversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
HACKTICE_VERSION(1, 6, 1)
1+
HACKTICE_VERSION(1, 6, 2)

0 commit comments

Comments
 (0)