summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/creditsMgr.cpp6
-rw-r--r--src/koopatlas/pathmanager.cpp7
-rw-r--r--src/levelinfo.cpp5
3 files changed, 13 insertions, 5 deletions
diff --git a/src/creditsMgr.cpp b/src/creditsMgr.cpp
index 4f30bc4..e4dafda 100644
--- a/src/creditsMgr.cpp
+++ b/src/creditsMgr.cpp
@@ -564,7 +564,11 @@ void dCreditsMgr_c::theEnd() {
GetTheEnd()->willShow = true;
}
void dCreditsMgr_c::exitStage() {
- ExitStage(WORLD_MAP, 0x20000000, BEAT_LEVEL, CIRCLE_WIPE);
+ SaveBlock *save = GetSaveFile()->GetBlock(-1);
+ bool wasPreviouslyBeat = (save->bitfield & 2) != 0;
+ save->bitfield |= 2;
+
+ ExitStage(WORLD_MAP, wasPreviouslyBeat ? 0 : 0x20000000, BEAT_LEVEL, CIRCLE_WIPE);
}
Vec2 dCreditsMgr_c::_vf70() {
diff --git a/src/koopatlas/pathmanager.cpp b/src/koopatlas/pathmanager.cpp
index 162084d..ad39c69 100644
--- a/src/koopatlas/pathmanager.cpp
+++ b/src/koopatlas/pathmanager.cpp
@@ -695,6 +695,8 @@ bool dWMPathManager_c::doingThings() {
}
void dWMPathManager_c::execute() {
+ dScKoopatlas_c *wm = dScKoopatlas_c::instance;
+
if (isEnteringLevel) {
if (levelStartWait > 0) {
levelStartWait--;
@@ -724,7 +726,8 @@ void dWMPathManager_c::execute() {
waitAfterInitialPlayerAnim = 38;
nw4r::snd::SoundHandle something;
- PlaySoundWithFunctionB4(SoundRelatedClass, &something, SE_VOC_MA_CS_JUMP, 1);
+ if (!wm->isEndingScene)
+ PlaySoundWithFunctionB4(SoundRelatedClass, &something, SE_VOC_MA_CS_JUMP, 1);
}
}
}
@@ -735,7 +738,7 @@ void dWMPathManager_c::execute() {
waitAfterInitialPlayerAnim--;
if (waitAfterInitialPlayerAnim == 0)
daWMPlayer_c::instance->startAnimation(wait_select, 1.0f, 0.0f, 0.0f);
- if (mustPlayAfterWinAnim && (waitAfterInitialPlayerAnim == 9)) {
+ if (mustPlayAfterWinAnim && (waitAfterInitialPlayerAnim == 9) && !wm->isEndingScene) {
nw4r::snd::SoundHandle something;
PlaySoundWithFunctionB4(SoundRelatedClass, &something, SE_PLY_LAND_ROCK, 1);
}
diff --git a/src/levelinfo.cpp b/src/levelinfo.cpp
index d0ddd9a..1b71e70 100644
--- a/src/levelinfo.cpp
+++ b/src/levelinfo.cpp
@@ -115,9 +115,10 @@ void UpdateFSStars() {
bool beatGame = (save->GetLevelCondition(7, 23) & COND_NORMAL) != 0;
- save->bitfield &= ~0x3E;
+// save->bitfield &= ~0x3E;
+ save->bitfield &= ~0x3C;
save->bitfield |=
- (beatGame ? 2 : 0) |
+// (beatGame ? 2 : 0) |
(exitsNormal ? 4 : 0) |
(coinsNormal ? 8 : 0) |
(exitsW9 ? 0x10 : 0) |