aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/mohawk/riven_graphics.cpp3
-rw-r--r--engines/mohawk/riven_stack.cpp11
-rw-r--r--engines/mohawk/riven_stacks/ospit.cpp1
3 files changed, 13 insertions, 2 deletions
diff --git a/engines/mohawk/riven_graphics.cpp b/engines/mohawk/riven_graphics.cpp
index 084019df5e..71339d6ff3 100644
--- a/engines/mohawk/riven_graphics.cpp
+++ b/engines/mohawk/riven_graphics.cpp
@@ -656,6 +656,9 @@ void RivenGraphics::beginCredits() {
// Clear the old cache
clearCache();
+ _creditsImage = kRivenCreditsZeroImage;
+ _creditsPos = 0;
+
// Now cache all the credits images
for (uint16 i = kRivenCreditsZeroImage; i <= kRivenCreditsLastImage; i++) {
MohawkSurface *surface = _bitmapDecoder->decodeImage(_vm->getExtrasResource(ID_TBMP, i));
diff --git a/engines/mohawk/riven_stack.cpp b/engines/mohawk/riven_stack.cpp
index 17baf94595..c0a7587f1a 100644
--- a/engines/mohawk/riven_stack.cpp
+++ b/engines/mohawk/riven_stack.cpp
@@ -258,7 +258,16 @@ void RivenStack::runCredits(uint16 video, uint32 delay, uint32 videoFrameCountOv
_vm->doFrame();
}
- _vm->setGameEnded();
+ videoPtr->stop();
+ _vm->_cursor->showCursor();
+
+ // Clear the game state
+ _vm->startNewGame();
+
+ // Go to the main menu
+ RivenScriptPtr goToMainMenu = _vm->_scriptMan->createScriptWithCommand(
+ new RivenStackChangeCommand(_vm, kStackAspit, 1, true, true));
+ _vm->_scriptMan->runScript(goToMainMenu, true);
}
void RivenStack::installCardTimer() {
diff --git a/engines/mohawk/riven_stacks/ospit.cpp b/engines/mohawk/riven_stacks/ospit.cpp
index d01a0c0860..c0dc13da8f 100644
--- a/engines/mohawk/riven_stacks/ospit.cpp
+++ b/engines/mohawk/riven_stacks/ospit.cpp
@@ -142,7 +142,6 @@ void OSpit::xbookclick(const ArgumentArray &args) {
// use the trap book, he will shoot the player. Dead on arrival.
// Run the credits from here.
if (_vm->_vars["agehn"] == 3) {
- _vm->_scriptMan->stopAllScripts();
runCredits(args[0], 5000, 995);
return;
}