void TSpit::xtopenfissure() { if (_vm->_vars["pcage"] == 2) { // The best ending: Catherine is free, Gehn is trapped, Atrus comes to rescue you. // And now we fall back to Earth... all the way... _vm->getCard()->playMovie(8); runEndGame(8, 5000); } else if (_vm->_vars["agehn"] == 4) { // The ok ending: Catherine is still trapped, Gehn is trapped, Atrus comes to rescue you. // Nice going! Catherine and the islanders are all dead now! Just go back to your home... _vm->getCard()->playMovie(9); runEndGame(9, 5000); } else if (_vm->_vars["atrapbook"] == 1) { // The bad ending: Catherine is trapped, Gehn is free, Atrus gets shot by Gehn, // And then you get shot by Cho. Nice going! Catherine and the islanders are dead // and you have just set Gehn free from Riven, not to mention you're dead. _vm->getCard()->playMovie(10); runEndGame(10, 5000); } else { // The impossible ending: You don't have Catherine's journal and yet you were somehow // able to open the hatch on the telescope. The game provides an ending for those who // cheat, load a saved game with the combo, or just guess the telescope combo. Atrus // doesn't come and you just fall into the fissure. _vm->getCard()->playMovie(11); runEndGame(11, 5000); } }
void OSpit::xorollcredittime(const ArgumentArray &args) { // WORKAROUND: The special change stuff only handles one destination and it would // be messy to modify the way that currently works. If we use the trap book on Tay, // we should be using the Tay end game sequences. if (_vm->_vars["returnstackid"] == kStackRspit) { RivenScriptPtr script = _vm->_scriptMan->createScriptWithCommand( new RivenStackChangeCommand(_vm, kStackRspit, 0x3338, true, false)); _vm->_scriptMan->runScript(script, false); return; } // You used the trap book... why? What were you thinking? uint32 gehnState = _vm->_vars["agehn"]; if (gehnState == 0) // Gehn who? runEndGame(1, 9500, 1225); else if (gehnState == 4) // You freed him? Are you kidding me? runEndGame(2, 12000, 558); else // You already spoke with Gehn. What were you thinking? runEndGame(3, 8000, 857); }