diff options
-rw-r--r-- | engines/mohawk/myst.cpp | 2 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/credits.cpp | 2 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/dni.cpp | 24 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/myst.cpp | 24 | ||||
-rw-r--r-- | engines/mohawk/myst_state.cpp | 2 | ||||
-rw-r--r-- | engines/mohawk/myst_state.h | 14 |
6 files changed, 40 insertions, 28 deletions
diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp index c0e3405845..bda69183c3 100644 --- a/engines/mohawk/myst.cpp +++ b/engines/mohawk/myst.cpp @@ -568,7 +568,7 @@ void MohawkEngine_Myst::changeToStack(uint16 stack, uint16 card, uint16 linkSrcS _scriptParser = new MystStacks::Demo(this); break; case kDniStack: - _gameState->_globals.currentAge = kDini; + _gameState->_globals.currentAge = kDni; _scriptParser = new MystStacks::Dni(this); break; case kIntroStack: diff --git a/engines/mohawk/myst_stacks/credits.cpp b/engines/mohawk/myst_stacks/credits.cpp index 5daa73d106..80ccf7fe9a 100644 --- a/engines/mohawk/myst_stacks/credits.cpp +++ b/engines/mohawk/myst_stacks/credits.cpp @@ -83,7 +83,7 @@ uint16 Credits::getVar(uint16 var) { case 0: // Credits Image Control return _curImage; case 1: // Credits Music Control (Good / bad ending) - return _globals.ending != 4; + return _globals.ending != kBooksDestroyed; default: return MystScriptParser::getVar(var); } diff --git a/engines/mohawk/myst_stacks/dni.cpp b/engines/mohawk/myst_stacks/dni.cpp index 6d8dd484f6..96dba7f39c 100644 --- a/engines/mohawk/myst_stacks/dni.cpp +++ b/engines/mohawk/myst_stacks/dni.cpp @@ -80,16 +80,16 @@ void Dni::runPersistentScripts() { uint16 Dni::getVar(uint16 var) { switch(var) { case 0: // Atrus Gone (from across room) - return _globals.ending == 2; + return _globals.ending == kAtrusLeaves; case 1: // Myst Book Status - if (_globals.ending != 4) - return _globals.ending == 3; + if (_globals.ending != kBooksDestroyed) + return _globals.ending == kForgotPage; else return 2; // Linkable case 2: // Music Type if (_notSeenAtrus) { _notSeenAtrus = false; - return _globals.ending != 4 && _globals.heldPage != kWhitePage; + return _globals.ending != kBooksDestroyed && _globals.heldPage != kWhitePage; } else return 2; default: @@ -104,8 +104,8 @@ void Dni::o_handPage(uint16 var, const ArgumentsArray &args) { VideoEntryPtr atrus = _vm->findVideo(_video, kDniStack); // Good ending and Atrus asked to give page - if (_globals.ending == 1 && atrus && atrus->getTime() > (uint)Audio::Timestamp(0, 6801, 600).msecs()) { - _globals.ending = 2; + if (_globals.ending == kAtrusWantsPage && atrus && atrus->getTime() > (uint)Audio::Timestamp(0, 6801, 600).msecs()) { + _globals.ending = kAtrusLeaves; _globals.heldPage = kNoPage; _vm->setMainCursor(kDefaultMystCursor); @@ -132,7 +132,7 @@ void Dni::atrusLeft_run() { _loopEnd = 98000; // Good ending - _globals.ending = 4; + _globals.ending = kBooksDestroyed; _globals.bluePagesInBook = 63; _globals.redPagesInBook = 63; @@ -152,10 +152,10 @@ void Dni::loopVideo_run() { } void Dni::atrus_run() { - if (_globals.ending == 2) { + if (_globals.ending == kAtrusLeaves) { // Wait for atrus to come back _atrusLeft = true; - } else if (_globals.ending == 1) { + } else if (_globals.ending == kAtrusWantsPage) { // Atrus asking for page if (!_vm->_video->isVideoPlaying()) { _video = "atr1page"; @@ -165,7 +165,7 @@ void Dni::atrus_run() { atrus->setLooping(true); atrus->setBounds(Audio::Timestamp(0, 7388, 600), Audio::Timestamp(0, 14700, 600)); } - } else if (_globals.ending != 3 && _globals.ending != 4) { + } else if (_globals.ending != kForgotPage && _globals.ending != kBooksDestroyed) { if (_globals.heldPage == kWhitePage) { _video = "atr1page"; _videoPos = Common::Point(215, 76); @@ -178,7 +178,7 @@ void Dni::atrus_run() { _loopEnd = 14700; // Wait for page - _globals.ending = 1; + _globals.ending = kAtrusWantsPage; } else { _video = "atr1nopg"; @@ -192,7 +192,7 @@ void Dni::atrus_run() { _loopEnd = 46175; // Bad ending - _globals.ending = 3; + _globals.ending = kForgotPage; } } else if (!_vm->_video->isVideoPlaying()) { VideoEntryPtr atrus = _vm->playMovie("atrwrite", kDniStack); diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp index 4a45235143..4adee5fc20 100644 --- a/engines/mohawk/myst_stacks/myst.cpp +++ b/engines/mohawk/myst_stacks/myst.cpp @@ -406,7 +406,7 @@ uint16 Myst::getVar(uint16 var) { case 0: // Myst Library Bookcase Closed return _state.libraryBookcaseDoor; case 1: - if (_globals.ending != 4) + if (_globals.ending != kBooksDestroyed) return _state.libraryBookcaseDoor != 1; else if (_state.libraryBookcaseDoor == 1) return 2; @@ -487,12 +487,12 @@ uint16 Myst::getVar(uint16 var) { && _fireplaceLines[4] == 204 && _fireplaceLines[5] == 250; case 24: // Fireplace Blue Page Present - if (_globals.ending != 4) + if (_globals.ending != kBooksDestroyed) return !(_globals.bluePagesInBook & 32) && (_globals.heldPage != kBlueFirePlacePage); else return 0; case 25: // Fireplace Red Page Present - if (_globals.ending != 4) + if (_globals.ending != kBooksDestroyed) return !(_globals.redPagesInBook & 32) && (_globals.heldPage != kRedFirePlacePage); else return 0; @@ -706,12 +706,12 @@ uint16 Myst::getVar(uint16 var) { case 99: // Cabin Boiler Gas Valve Position return _state.cabinValvePosition % 6; case 102: // Red page - if (_globals.ending != 4) + if (_globals.ending != kBooksDestroyed) return !(_globals.redPagesInBook & 1) && (_globals.heldPage != kRedLibraryPage); else return 0; case 103: // Blue page - if (_globals.ending != 4) + if (_globals.ending != kBooksDestroyed) return !(_globals.bluePagesInBook & 1) && (_globals.heldPage != kBlueLibraryPage); else return 0; @@ -770,7 +770,7 @@ void Myst::toggleVar(uint16 var) { _state.rocketshipMarkerSwitch = (_state.rocketshipMarkerSwitch + 1) % 2; break; case 24: // Fireplace Blue Page - if (_globals.ending != 4 && !(_globals.bluePagesInBook & 32)) { + if (_globals.ending != kBooksDestroyed && !(_globals.bluePagesInBook & 32)) { if (_globals.heldPage == kBlueFirePlacePage) _globals.heldPage = kNoPage; else @@ -778,7 +778,7 @@ void Myst::toggleVar(uint16 var) { } break; case 25: // Fireplace Red page - if (_globals.ending != 4 && !(_globals.redPagesInBook & 32)) { + if (_globals.ending != kBooksDestroyed && !(_globals.redPagesInBook & 32)) { if (_globals.heldPage == kRedFirePlacePage) _globals.heldPage = kNoPage; else @@ -802,7 +802,7 @@ void Myst::toggleVar(uint16 var) { } break; case 41: // Vault white page - if (_globals.ending != 4) { + if (_globals.ending != kBooksDestroyed) { if (_dockVaultState == 1) { _dockVaultState = 2; _globals.heldPage = kNoPage; @@ -813,7 +813,7 @@ void Myst::toggleVar(uint16 var) { } break; case 102: // Red page - if (_globals.ending != 4 && !(_globals.redPagesInBook & 1)) { + if (_globals.ending != kBooksDestroyed && !(_globals.redPagesInBook & 1)) { if (_globals.heldPage == kRedLibraryPage) _globals.heldPage = kNoPage; else @@ -821,7 +821,7 @@ void Myst::toggleVar(uint16 var) { } break; case 103: // Blue page - if (_globals.ending != 4 && !(_globals.bluePagesInBook & 1)) { + if (_globals.ending != kBooksDestroyed && !(_globals.bluePagesInBook & 1)) { if (_globals.heldPage == kBlueLibraryPage) _globals.heldPage = kNoPage; else @@ -1095,7 +1095,7 @@ void Myst::o_dockVaultOpen(uint16 var, const ArgumentsArray &args) { (_state.observatoryMarkerSwitch == 1) && (_state.poolMarkerSwitch == 1) && (_state.rocketshipMarkerSwitch == 1)) { - if (_globals.heldPage != kWhitePage && _globals.ending != 4) + if (_globals.heldPage != kWhitePage && _globals.ending != kBooksDestroyed) _dockVaultState = 2; else _dockVaultState = 1; @@ -3718,7 +3718,7 @@ void Myst::greenBook_run() { VideoEntryPtr book = _vm->playMovie(videoName, kMystStack); book->moveTo(314, 76); - if (_globals.ending != 4) { + if (_globals.ending != kBooksDestroyed) { _tempVar = 2; } else { book->setBounds(Audio::Timestamp(0, loopStart, 600), Audio::Timestamp(0, loopEnd, 600)); diff --git a/engines/mohawk/myst_state.cpp b/engines/mohawk/myst_state.cpp index f1b0b9de39..ab98da1f00 100644 --- a/engines/mohawk/myst_state.cpp +++ b/engines/mohawk/myst_state.cpp @@ -79,7 +79,9 @@ MystGameState::MystGameState(MohawkEngine_Myst *vm, Common::SaveFileManager *sav _globals.u0 = 2; // Current Age / Stack - Start in Myst _globals.currentAge = kMystStart; + _globals.heldPage = kNoPage; _globals.u1 = 1; + _globals.ending = kDniNotVisited; // Library Bookcase Door - Default to Up _myst.libraryBookcaseDoor = 1; diff --git a/engines/mohawk/myst_state.h b/engines/mohawk/myst_state.h index 737db306ab..0eb7d56525 100644 --- a/engines/mohawk/myst_state.h +++ b/engines/mohawk/myst_state.h @@ -79,13 +79,23 @@ enum ActiveAge { kMechanical = 3, kChannelwood = 4, kIntro = 5, - kDini = 6, + kDni = 6, kMystStart = 7, kCredits = 8, kSirrusEnding = 9, kAchenarEnding = 10 }; +// Various states that Atrus can be in when in Dni +enum DniEnding { + kDniNotVisited = 0, // Player hasn't been to Dni/K'veer yet + kAtrusWantsPage = 1, // Player is in Dni with the white page + kAtrusLeaves = 2, // Atrus leaves Dni after receiving the white page + kForgotPage = 3, // Player has entered Dni without bringing the white page + kBooksDestroyed = 4 // Atrus returns to Dni after previously leaving + // and destroying the books of his sons +}; + class MystGameState { public: MystGameState(MohawkEngine_Myst*, Common::SaveFileManager*); @@ -120,7 +130,7 @@ public: uint16 zipMode; uint16 redPagesInBook; uint16 bluePagesInBook; - uint16 ending; + DniEnding ending; } _globals; /* 50 Myst Specific Variables : |