summaryrefslogtreecommitdiff
path: root/src/koopatlas/pathmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/koopatlas/pathmanager.cpp')
-rw-r--r--src/koopatlas/pathmanager.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/koopatlas/pathmanager.cpp b/src/koopatlas/pathmanager.cpp
index 7f4b754..435c6f1 100644
--- a/src/koopatlas/pathmanager.cpp
+++ b/src/koopatlas/pathmanager.cpp
@@ -753,7 +753,7 @@ void dWMPathManager_c::moveThroughPath(int pressedDir) {
// Quick check: do we *actually* need to stop on this node?
// If it's a junction with more than two exits, but only two are open,
// take the opposite open one
- if (to->getExitCount() > 2 && to->getAvailableExitCount() == 2)
+ if (!dScKoopatlas_c::instance->warpZoneHacks && to->getExitCount() > 2 && to->getAvailableExitCount() == 2)
reallyStop = false;
else
reallyStop = true;
@@ -791,8 +791,26 @@ void dWMPathManager_c::moveThroughPath(int pressedDir) {
save->titleScreenWorld = world->titleScreenWorld;
save->titleScreenLevel = world->titleScreenLevel;
- if (visiblyChange && dWMHud_c::instance)
- dWMHud_c::instance->showFooter();
+ bool wzHack = false;
+ if (dScKoopatlas_c::instance->warpZoneHacks) {
+ save->hudHintH += 1000;
+
+ if (world->worldID > 0) {
+ dLevelInfo_c *linfo = &dLevelInfo_c::s_info;
+ dLevelInfo_c::entry_s *lastLevel = linfo->searchByDisplayNum(world->worldID-1, lastLevelIDs[world->worldID-1]);
+ if (lastLevel) {
+ wzHack = !(save->GetLevelCondition(lastLevel->worldSlot,lastLevel->levelSlot) & COND_NORMAL);
+ }
+ }
+ }
+
+ if (wzHack) {
+ save->hudHintH = 2000;
+ dWMHud_c::instance->hideFooter();
+ } else {
+ if (visiblyChange && dWMHud_c::instance)
+ dWMHud_c::instance->showFooter();
+ }
dKPMusic::play(world->trackID);