Initial commit

This commit is contained in:
2026-02-02 04:50:13 +01:00
commit 5b11698731
22592 changed files with 7677434 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,99 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM603_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM603_H
#include "m4/riddle/rooms/room.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room603 : public Room {
private:
int _val2 = 0;
int _val3 = 0;
int _val4 = 0;
int _val5 = 0;
int _val9 = 0;
int _val10 = 0;
bool _showingNoteCloseup = false;
int _ripleyMode = 0;
int _ripleyShould = 0;
int _ttMode = 0;
int _ttShould = 0;
int _trigger1 = 0;
machine *_shed = nullptr;
machine *_shenWalker = nullptr;
machine *_kuangWalker = nullptr;
machine *_note = nullptr;
machine *_pole = nullptr;
machine *_shirt = nullptr;
machine *_sleeve = nullptr;
machine *_door = nullptr;
machine *_tt = nullptr;
machine *_ttShadow = nullptr;
machine *_pu01 = nullptr;
machine *_ripley = nullptr;
machine *_shadow = nullptr;
machine *_ttNote = nullptr;
machine *_explosion = nullptr;
int _rp01 = 0;
int _rp02 = 0;
int _ttDigShirtOff = 0;
int _ttDigShirtOn = 0;
int _tt03 = 0;
int _ttD01 = 0;
int _rp04 = 0;
int _ripHandsBehindBack = 0;
int _ripTalk = 0;
int _ripHandsHips = 0;
int _ripHandChin = 0;
int _ripTwoHandTalk = 0;
int _ripAction = 0;
void conv603a();
void conv603b();
void unloadSeries();
bool takeSleeve();
bool takeNote();
bool takePole();
void enter();
void playRandomDigi(int max);
public:
Room603() : Room() {}
~Room603() override {}
void preload() override;
void init() override;
void daemon() override;
void pre_parser() override;
void parser() override;
void syncGame(Common::Serializer &s) override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,90 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM604_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM604_H
#include "m4/riddle/rooms/room.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room604 : public Room {
private:
int _val1 = 0;
int _val2 = 0;
int _val3 = 0;
int _val4 = 0;
bool _suppressChatter = false;
int _ripLowReach1 = 0;
int _ripLowReach2 = 0;
int _ripMedReach1 = 0;
int _ripMedReach2 = 0;
int _ripAction = 0;
machine *_ripley = nullptr;
machine *_sparkPlugTool = nullptr;
machine *_sparkPlugWire = nullptr;
machine *_flame = nullptr;
machine *_shedDoor = nullptr;
machine *_pullCord1 = nullptr;
machine *_pullCord2 = nullptr;
machine *_doorWireGone = nullptr;
machine *_cord = nullptr;
machine *_tiedWires = nullptr;
machine *_generatorCord = nullptr;
machine *_shadow = nullptr;
void daemon1();
bool useWhaleBoneHorn();
void takePullCord();
void takeSparkPlugTool();
void takeLighter();
void pullCordPlug();
/**
* This Ripley is no more! It has ceased to be! It's expired
* and gone to meet its maker! This is a late Ripley!
* It's a stiff! Bereft of life, it rests in peace!
* If you hadn't nailed it to the perch, it would be
* pushing up the daisies! It's rung down the curtain
* and joined the choir invisible. This is an ex-Ripley!
*/
void killRipley();
void takeWire();
public:
Room604() : Room() {}
~Room604() override {}
void preload() override;
void init() override;
void daemon() override;
void pre_parser() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,871 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room605.h"
#include "m4/riddle/rooms/section6/section6.h"
#include "m4/graphics/gr_series.h"
#include "m4/riddle/vars.h"
#include "m4/adv_r/adv_file.h"
#include "m4/riddle/riddle.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room605::init() {
if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
_trigger1 = -1;
_walkerHidden = false;
_val3 = 0;
_val4 = 2;
_val5 = 2;
}
if (inv_object_is_here("OBSIDIAN DISK")) {
_pupil = series_show("605eye", 0x600, 16);
} else {
hotspot_set_active("PUPIL", false);
hotspot_set_active("OBSIDIAN DISK", false);
}
if (_G(flags)[V203] == 2) {
kernel_load_variant("605lock1");
_ripHandsHips = series_load("RIP TREK HANDS HIPS POS2");
_ripHandOnChin = series_load("RIP TREK HAND ON CHIN POS2");
_ripTwoHandTalk = series_load("RIP TREK TWO HAND TALK POS2");
_ripTalk = series_load("RIP TREK TALK");
_605tt = series_load("605 TT");
} else {
hotspot_set_active("samantha", false);
}
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
if (_G(flags)[V203] == 2) {
_G(player).disable_hyperwalk = true;
ws_walk_load_walker_series(TT_NORMAL_DIRS, TT_NORMAL_NAMES);
ws_walk_load_shadow_series(TT_SHADOW_DIRS, TT_SHADOW_NAMES);
_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x700, false,
triggerMachineByHashCallback, "tt");
sendWSMessage_10000(1, _tt, _605tt, 1, 1, 200, _605tt, 1, 1, 0);
_ttShadow = series_show("tt walker shadow 5", 0x701, 16, -1, -1, 0, 68, 476, 290);
}
digi_preload("950_s28");
break;
case 603:
case 610:
digi_preload("950_s28");
digi_stop(3);
digi_unload("950_s28a");
if (_G(flags)[V203] == 2) {
player_set_commands_allowed(false);
_G(player).disable_hyperwalk = true;
ws_demand_location(_G(my_walker), 451, 368, 1);
ws_walk(_G(my_walker), 513, 316, nullptr, -1, 10);
ws_walk_load_walker_series(TT_NORMAL_DIRS, TT_NORMAL_NAMES);
ws_walk_load_shadow_series(TT_SHADOW_DIRS, TT_SHADOW_NAMES);
_tt = triggerMachineByHash_3000(8, 9, *TT_NORMAL_DIRS, *TT_SHADOW_DIRS,
450, 339, 1, triggerMachineByHashCallback3000, "tt walker");
sendWSMessage_10000(_tt, 476, 290, 5, 10, 1);
} else {
ws_demand_location(_G(my_walker), 451, 353, 10);
}
break;
case 608:
digi_preload("950_s28");
digi_stop(3);
digi_unload("950_s28b");
ws_demand_location(_G(my_walker), 534, 219, 7);
ws_walk(_G(my_walker), 520, 263, nullptr, -1, 7);
break;
case 623:
ws_demand_location(_G(my_walker), -30, 272, 3);
ws_walk(_G(my_walker), 34, 272, nullptr, 1, 3);
break;
default:
digi_preload("950_s28");
ws_demand_location(_G(my_walker), 451, 353, 10);
break;
}
digi_play_loop("950_s28", 3, 90);
}
void Room605::daemon() {
switch (_G(kernel).trigger) {
case 1:
player_set_commands_allowed(true);
break;
case 10:
sendWSMessage_60000(_tt);
_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x700, false,
triggerMachineByHashCallback, "tt");
sendWSMessage_10000(1, _tt, _605tt, 222, 234, 11, _605tt, 1, 1, 0);
_ttShadow = series_show("tt walker shadow 5", 0x701, 16, -1,
-1, 0, 68, 476, 290);
break;
case 11:
kernel_timing_trigger(1, 200);
_ttMode = 0;
_ttShould = 1;
digi_play("605t01", 1, 255, 12);
break;
case 12:
setGlobals1(_ripHandOnChin, 1, 16, 16, 16);
sendWSMessage_110000(-1);
digi_play("605r01", 1, 255, 15);
break;
case 15:
_ttShould = 3;
digi_play("605t02", 1, 255, 17);
break;
case 17:
_ttShould = 0;
kernel_timing_trigger(1, 200);
sendWSMessage_140000(18);
break;
case 18:
_G(player).disable_hyperwalk = false;
player_set_commands_allowed(true);
break;
case 200:
if (!_ttMode && !_ttShould && _trigger1 != -1) {
kernel_trigger_dispatchx(_trigger1);
_trigger1 = -1;
if (_walkerHidden) {
ws_unhide_walker();
_walkerHidden = false;
}
}
kernel_trigger_dispatchx(kernel_trigger_create(201));
break;
case 201:
switch (_ttMode) {
case 0:
switch (_ttShould) {
case 0:
sendWSMessage_10000(1, _tt, _605tt, 1, 1, 200, _605tt, 1, 1, 0);
_ttShould = 0;
break;
case 1:
sendWSMessage_10000(1, _tt, _605tt, 2, 12, 202, _605tt, 12, 12, 0);
sendWSMessage_190000(_tt, 7);
_ttShould = 0;
break;
case 3:
sendWSMessage_10000(1, _tt, _605tt, 13, 13, -1, _605tt, 13, 30, 4);
break;
case 5:
sendWSMessage_10000(1, _tt, _605tt, 31, 37, 200, _605tt, 38, 38, 0);
_ttMode = 4;
break;
case 6:
case 7:
sendWSMessage_10000(1, _tt, _605tt, 58, 66, 200, _605tt, 67, 67, 0);
break;
case 8:
sendWSMessage_10000(1, _tt, _605tt, 134, 221, 207, _605tt, 221, 221, 0);
_ttShould = 3;
break;
case 9:
sendWSMessage_10000(1, _tt, _605tt, 85, 93, 200, _605tt, 93, 93, 0);
_ttMode = 9;
break;
case 10:
sendWSMessage_10000(1, _tt, _605tt, 234, 222, 203, _605tt, 222, 222, 0);
break;
default:
break;
}
break;
case 4:
switch (_ttShould) {
case 4:
sendWSMessage_10000(1, _tt, _605tt, 38, 38, -1, _605tt, 38, 43, 4);
sendWSMessage_1a0000(_tt, 13);
break;
case 5:
sendWSMessage_10000(1, _tt, _605tt, 38, 38, 200, _605tt, 38, 38, 0);
break;
default:
sendWSMessage_10000(1, _tt, _605tt, 44, 49, 200, _605tt, 1, 1, 0);
_ttMode = 0;
break;
}
break;
case 6:
switch (_ttShould) {
case 6:
sendWSMessage_10000(1, _tt, _605tt, 67, 67, -1, _605tt, 67, 76, 4);
sendWSMessage_1a0000(_tt, 13);
break;
case 7:
sendWSMessage_10000(1, _tt, _605tt, 67, 67, 200, _605tt, 67, 67, 0);
break;
default:
sendWSMessage_10000(1, _tt, _605tt, 77, 86, 200, _605tt, 1, 1, 0);
_ttMode = 0;
break;
}
break;
case 9:
if (_ttShould == 9) {
sendWSMessage_10000(1, _tt, _605tt, 93, 93, 200, _605tt, 93, 93, 0);
} else {
sendWSMessage_10000(1, _tt, _605tt, 93, 85, 200, _605tt, 1, 1, 0);
_ttMode = 0;
}
break;
default:
break;
}
break;
case 202:
sendWSMessage_10000(1, _tt, _605tt, 12, 1, 200, _605tt, 1, 1, 0);
sendWSMessage_190000(_tt, 7);
break;
case 203:
terminateMachineAndNull(_tt);
terminateMachineAndNull(_ttShadow);
_tt = triggerMachineByHash_3000(8, 9, *TT_NORMAL_DIRS, *TT_SHADOW_DIRS,
476, 290, 5, triggerMachineByHashCallback3000, "tt walker");
sendWSMessage_10000(_tt, 485, 199, 2, 208, 0);
digi_play("19_07n04", 1, 255, 206);
kernel_timing_trigger(420, 205);
kernel_timing_trigger(20, 204);
break;
case 204:
_G(player).disable_hyperwalk = true;
sendWSMessage_10000(_G(my_walker), 490, 187, 2, 210, 0);
break;
case 205:
disable_player_commands_and_fade_init(-1);
break;
case 206:
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28", 3, 90);
_G(game).setRoom(608);
break;
case 207:
sendWSMessage_10000(1, _tt, _605tt, 222, 234, 200, _605tt, 1, 1, 0);
break;
case 208:
sendWSMessage_10000(_tt, 498, 189, 3, 209, 0);
break;
case 209:
sendWSMessage_10000(_tt, 670, 183, 3, -1, 1);
break;
case 210:
sendWSMessage_10000(_G(my_walker), 639, 171, 3, 211, 0);
break;
case 211:
ws_walk(_G(my_walker), 680, 183, nullptr, -1, 3);
break;
case 300:
if (!_ripleyMode && !_ripleyShould && _trigger1 != -1) {
kernel_trigger_dispatchx(_trigger1);
_trigger1 = -1;
if (_walkerHidden) {
ws_unhide_walker();
_walkerHidden = false;
}
}
kernel_trigger_dispatchx(kernel_trigger_create(301));
break;
case 301:
switch (_ripleyMode) {
case 0:
switch (_ripleyShould) {
case 0:
sendWSMessage_10000(1, _ripley, 1, 1, 1, 300, 1, 1, 1, 0);
break;
case 1:
sendWSMessage_10000(1, _ripley, _ripTwoHandTalk, 1, 6, 300,
_ripTwoHandTalk, 6, 6, 0);
_ripleyMode = 1;
break;
case 2:
sendWSMessage_10000(1, _ripley, _ripHandOnChin, 1, 16, 300,
_ripHandOnChin, 16, 16, 0);
_ripleyMode = 2;
break;
case 3:
sendWSMessage_10000(1, _ripley, _ripHandsHips, 1, 12, 300,
_ripHandsHips, 12, 12, 0);
_ripleyMode = 3;
break;
case 5:
terminateMachineAndNull(_ripley);
ws_unhide_walker();
terminateMachineAndNull(_shadow);
break;
case 6:
sendWSMessage_10000(1, _ripley, _ripTalk, 1, 1, -1, _ripTalk, 1, 7, 4);
sendWSMessage_1a0000(_ripley, 11);
break;
default:
break;
}
break;
case 1:
if (_ripleyShould == 1) {
sendWSMessage_10000(1, _ripley, _ripTwoHandTalk, 6, 6, 300,
_ripTwoHandTalk, 6, 6, 0);
} else {
sendWSMessage_10000(1, _ripley, _ripTwoHandTalk, 6, 1, 300, 1, 1, 1, 0);
_ripleyMode = 0;
}
break;
case 2:
if (_ripleyShould == 2) {
sendWSMessage_10000(1, _ripley, _ripHandOnChin, 16, 16, 300,
_ripHandOnChin, 16, 16, 0);
} else {
sendWSMessage_10000(1, _ripley, _ripHandOnChin, 16, 1, 300, 1, 1, 1, 0);
_ripleyMode = 0;
}
break;
case 3:
if (_ripleyShould == 3) {
sendWSMessage_10000(1, _ripley, _ripHandsHips, 12, 12, 300,
_ripHandsHips, 12, 12, 0);
} else {
sendWSMessage_10000(1, _ripley, _ripHandsHips, 12, 1, 300, 1, 1, 1, 0);
_ripleyMode = 0;
}
break;
default:
break;
}
break;
default:
break;
}
}
void Room605::pre_parser() {
if (player_said_any("down", "left", "right") && _G(flags)[V203] == 2) {
player_set_commands_allowed(false);
intr_cancel_sentence();
conv_load("conv605a", 10, 10, 747);
conv_set_text_colour(12, 16);
conv_set_shading(75);
conv_export_value_curr(_G(flags)[V195] ? 1 : 0, 0);
conv_export_value_curr(2, 1);
conv_play();
_ttShould = 3;
}
}
void Room605::parser() {
const bool lookFlag = player_said_any("look", "look at");
const bool talkFlag = player_said_any("talk", "talk to");
const bool takeFlag = player_said("take");
if (player_said("conv605a")) {
conv605a();
} else if (talkFlag && player_said("samantha")) {
player_set_commands_allowed(false);
player_update_info();
ws_hide_walker();
_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
_G(player_info).x, _G(player_info).y, _G(player_info).scale + 1,
0x100, true, triggerMachineByHashCallback, "rip");
_G(kernel).trigger_mode = KT_DAEMON;
sendWSMessage_10000(1, _ripley, 1, 1, 1, 300, 1, 1, 1, 0);
_G(kernel).trigger_mode = KT_PARSE;
_ripleyMode = 0;
_ripleyShould = 0;
_shadow = series_show("safari shadow 2", 0xd00, 16, -1, -1, 0,
-_G(player_info).scale, _G(player_info).x, _G(player_info).y);
conv_load("conv605a", 10, 10, 747);
conv_play();
} else if (_G(kernel).trigger == 747) {
// No implementation
} else if (takeFlag && player_said_any("pupil", "obsidian disk") &&
_G(flags)[V203] != 2 && takePupilDisk()) {
// No implementation
} else if (player_said("SLEEVE") && player_said_any("pupil", "OBSIDIAN DISK") &&
_G(flags)[V203] == 2 && sleeveDisk1()) {
// No implementation
} else if (player_said("SLEEVE") && player_said_any("pupil", "OBSIDIAN DISK") &&
_G(flags)[V203] != 2 && sleeveDisk2()) {
// No implementation
} else if (player_said("journal", "glyphs")) {
if (_G(flags)[V196]) {
digi_play("203r54", 1);
} else {
if (_G(kernel).trigger == 6)
_G(flags)[V196] = 1;
sketchInJournal(nullptr);
}
} else if (lookFlag && player_said("head")) {
digi_play("605r03", 1);
} else if (lookFlag && player_said("glyphs")) {
digi_play("605r35", 1);
} else if (lookFlag && player_said("SAMANTHA")) {
static const char *DIGI[4] = { "605r05", "605r06", "605r07", "605r08" };
digi_play(DIGI[imath_ranged_rand(0, 3)], 1);
} else if (lookFlag && player_said("topknot")) {
if (_G(flags)[V203] == 2) {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
_ttShould = 5;
digi_play("605r04", 1, 255, 1);
break;
case 1:
_ttShould = 4;
digi_play("605t03", 1, 255, 2);
break;
case 2:
_ttShould = 0;
kernel_timing_trigger(1, 200, KT_DAEMON, KT_PARSE);
player_set_commands_allowed(true);
break;
default:
break;
}
} else {
digi_play("605r26", 1);
}
} else if (lookFlag && player_said("LEFT")) {
if (_G(flags)[V000]) {
if (_G(flags)[V186])
digi_play("305r53", 1);
else
_G(flags)[V185] = 1;
} else {
digi_play("305r53", 1);
}
} else if (lookFlag && player_said("up")) {
if (_G(flags)[V000]) {
if (_G(flags)[V184])
digi_play("305r53", 1);
else
_G(flags)[V184] = 1;
} else {
digi_play("305r53", 1);
}
} else if (lookFlag && player_said_any("pupil", "OBSIDIAN DISK") &&
inv_object_is_here("OBSIDIAN DISK")) {
digi_play(_G(flags)[V203] == 2 ? "605r09" : "605r27", 1);
} else if (parserMisc()) {
// No implementation
} else {
return;
}
_G(player).command_ready = false;
}
void Room605::conv605a() {
const char *sound = conv_sound_to_play();
const int who = conv_whos_talking();
const int node = conv_current_node();
const int entry = conv_current_entry();
switch (_G(kernel).trigger) {
case 1:
if (who <= 0) {
if (node == 1 && entry == 0)
_ripleyShould = 0;
if (node == 2 && entry == 0) {
kernel_timing_trigger(60, 4);
return;
}
if (_ttShould == 3)
kernel_timing_trigger(1, 200, KT_DAEMON, KT_PARSE);
_ttShould = 0;
} else if (who == 1) {
if (!(node == 6 && entry == 2) &&
!(node == 1 && entry == 0) &&
!(node == 2 && entry == 3)) {
if (_ripleyShould == 6)
kernel_timing_trigger(1, 300, KT_DAEMON, KT_PARSE);
_ripleyShould = 0;
}
}
conv_resume();
break;
case 2:
ws_walk(_G(my_walker), 513, 316, nullptr, 3, 10);
return;
case 3:
player_update_info();
ws_hide_walker();
_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
_G(player_info).x, _G(player_info).y, _G(player_info).scale + 1,
0x100, true, triggerMachineByHashCallback, "rip");
_G(kernel).trigger_mode = KT_DAEMON;
sendWSMessage_10000(1, _ripley, 1, 1, 1, 300, 1, 1, 1, 0);
_G(kernel).trigger_mode = KT_PARSE;
_ripleyMode = 0;
_ripleyShould = 0;
_shadow = series_show("safari shadow 2", 0xd00, 16, -1, -1, 0,
-_G(player_info).scale, _G(player_info).x, _G(player_info).y);
break;
case 4:
conv_resume();
_ttShould = 0;
break;
case 5:
_ripleyShould = 0;
break;
default:
if (sound) {
if (who <= 0) {
if (node == 6 && entry == 3) {
_ttShould = 8;
} else if (node == 6 && entry == 4) {
_ttShould = 10;
_ripleyShould = 5;
return;
} else if (node == 3 && entry == 0) {
kernel_timing_trigger(120, 2);
} else if (node == 2 && entry == 0) {
_ttShould = 9;
} else {
_ttShould = 3;
}
} else if (who == 1) {
if (node == 6 && entry == 2) {
_ripleyShould = 3;
} else if (node == 6 && entry == 1) {
_ripleyShould = 1;
} else if ((node == 1 && entry == 0) ||
(node == 2 && entry == 3)) {
_ripleyShould = 2;
} else if (node == 2 && entry == 1) {
_ripleyShould = 1;
kernel_timing_trigger(60, 5);
} else {
_ripleyShould = 6;
}
}
digi_play(sound, 1, 255, 1);
} else {
conv_resume();
}
break;
}
}
bool Room605::takePupilDisk() {
switch (_G(kernel).trigger) {
case -1:
if (inv_object_is_here("OBSIDIAN DISK")) {
player_set_commands_allowed(false);
_ripHandOnIris = series_load("RIP BURNS HAND ON IRIS");
ws_hide_walker();
_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, false,
triggerMachineByHashCallback, "take pupil");
sendWSMessage_10000(1, _ripley, _ripHandOnIris, 1, 26, 2,
_ripHandOnIris, 26, 26, 1);
break;
}
return false;
case 2:
sendWSMessage_10000(1, _ripley, _ripHandOnIris, 27, 41, 6,
_ripHandOnIris, 41, 41, 1);
digi_play("605r15", 1, 255, 3);
break;
case 3:
digi_play(_G(flags)[V197] ? "605r33" : "605r32", 1);
break;
case 6:
terminateMachineAndNull(_ripley);
series_unload(_ripHandOnIris);
ws_unhide_walker();
player_set_commands_allowed(true);
break;
default:
return false;
}
return true;
}
bool Room605::sleeveDisk1() {
switch (_G(kernel).trigger) {
case -1:
if (inv_object_is_here("OBSIDIAN DISK")) {
player_set_commands_allowed(false);
ws_hide_walker();
_ripGetsIrisWithCloth = series_load("RIP GETS IRIS WITH CLOTH");
digi_preload("605_s01");
digi_preload("605_s02");
_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, false,
triggerMachineByHashCallback, "take pupil");
sendWSMessage_10000(1, _ripley, _ripGetsIrisWithCloth, 1, 41, 1,
_ripGetsIrisWithCloth, 41, 41, 1);
return true;
}
break;
case 1:
sendWSMessage_10000(1, _ripley, _ripGetsIrisWithCloth, 42, 43, 3,
_ripGetsIrisWithCloth, 43, 43, 1);
_ttShould = 7;
digi_play("605_S01", 2);
return true;
case 3:
terminateMachineAndNull(_pupil);
inv_give_to_player("OBSIDIAN DISK");
hotspot_set_active("PUPIL", false);
hotspot_set_active("OBSIDIAN DISK", false);
sendWSMessage_10000(1, _ripley, _ripGetsIrisWithCloth, 44, 75, 6,
_ripGetsIrisWithCloth, 75, 75, 1);
return true;
case 6:
terminateMachineAndNull(_ripley);
ws_unhide_walker();
digi_play("605r16", 1, 255, 8);
return true;
case 8:
_ttShould = 6;
digi_play("605t07", 1, 255, 9);
return true;
case 9:
_ttShould = 7;
kernel_timing_trigger(1, 200, KT_DAEMON, KT_PARSE);
_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, false,
triggerMachineByHashCallback, "take pupil");
sendWSMessage_10000(1, _ripley, _ripGetsIrisWithCloth, 1, 41, 10,
_ripGetsIrisWithCloth, 41, 41, 1);
return true;
case 10:
sendWSMessage_10000(1, _ripley, _ripGetsIrisWithCloth, 42, 43, 11,
_ripGetsIrisWithCloth, 43, 43, 1);
digi_play("605_S02", 2);
return true;
default:
break;
}
return false;
}
bool Room605::sleeveDisk2() {
switch (_G(kernel).trigger) {
case -1:
if (inv_object_is_here("OBSIDIAN DISK")) {
player_set_commands_allowed(false);
ws_hide_walker();
_ripGetsIrisWithCloth = series_load("RIP GETS IRIS WITH CLOTH");
digi_preload("605_s01");
_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, false,
triggerMachineByHashCallback, "take pupil");
sendWSMessage_10000(1, _ripley, _ripGetsIrisWithCloth, 1, 41, 1,
_ripGetsIrisWithCloth, 41, 41, 1);
return true;
}
break;
case 1:
sendWSMessage_10000(1, _ripley, _ripGetsIrisWithCloth, 42, 43, 2,
_ripGetsIrisWithCloth, 43, 43, 1);
digi_play("605_S01", 2);
return true;
case 2:
hotspot_set_active("PUPIL", false);
hotspot_set_active("OBSIDIAN DISK", false);
inv_give_to_player("OBSIDIAN DISK");
kernel_examine_inventory_object("PING OBSIDIAN DISK", 5, 1, 260, 190, 3);
terminateMachineAndNull(_pupil);
return true;
case 3:
sendWSMessage_10000(1, _ripley, _ripGetsIrisWithCloth, 44, 75, 6,
_ripGetsIrisWithCloth, 75, 75, 1);
return true;
case 6:
digi_unload("605_s01");
terminateMachineAndNull(_ripley);
series_unload(_ripGetsIrisWithCloth);
ws_unhide_walker();
player_set_commands_allowed(true);
return true;
default:
break;
}
return false;
}
bool Room605::parserMisc() {
switch (_G(kernel).trigger) {
case 555:
digi_stop(1);
midi_play("tensions", 255, true, -1, 949);
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28", 3, 90);
_G(game).setRoom(610);
break;
case 556:
digi_stop(1);
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28", 3, 90);
_G(game).setRoom(603);
break;
case 557:
digi_stop(1);
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28", 3, 90);
_G(game).setRoom(608);
break;
case 558:
digi_stop(1);
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28", 3, 90);
_G(game).setRoom(623);
break;
default:
if (player_said_any("down", "left", "right")) {
if (_G(flags)[V203] != 2) {
if (player_said("down")) {
player_set_commands_allowed(false);
disable_player_commands_and_fade_init(
_G(flags)[V203] == 8 ? 555 : 556);
}
if (player_said("right")) {
player_set_commands_allowed(false);
disable_player_commands_and_fade_init(557);
}
if (player_said("left")) {
player_set_commands_allowed(false);
disable_player_commands_and_fade_init(558);
}
}
} else {
return false;
}
break;
}
return true;
}
void Room605::syncGame(Common::Serializer &s) {
s.syncAsSint32LE(_ripleyMode);
s.syncAsSint32LE(_ripleyShould);
s.syncAsSint32LE(_ttMode);
s.syncAsSint32LE(_ttShould);
s.syncAsSint32LE(_val3);
s.syncAsSint32LE(_val4);
s.syncAsSint32LE(_val5);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,76 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM605_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM605_H
#include "m4/riddle/rooms/room.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room605 : public Room {
private:
int _trigger1 = 0;
bool _walkerHidden = false;
int _ripleyMode = 0;
int _ripleyShould = 0;
int _val3 = 0;
int _val4 = 0;
int _val5 = 0;
int _ttShould = 0;
int _ttMode = 0;
int _ripHandsHips = 0;
int _ripHandOnChin = 0;
int _ripTwoHandTalk = 0;
int _ripTalk = 0;
int _ripGetsIrisWithCloth = 0;
int _ripHandOnIris = 0;
int _605tt = 0;
machine *_pupil = nullptr;
machine *_ripley = nullptr;
machine *_tt = nullptr;
machine *_ttShadow = nullptr;
machine *_shadow = nullptr;
void conv605a();
bool takePupilDisk();
bool sleeveDisk1();
bool sleeveDisk2();
bool parserMisc();
public:
Room605() : Room() {}
~Room605() override {}
void init() override;
void daemon() override;
void pre_parser() override;
void parser() override;
void syncGame(Common::Serializer &s) override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,394 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room607.h"
#include "m4/graphics/gr_series.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room607::preload() {
_G(player).walker_type = 1;
_G(player).shadow_type = 1;
}
void Room607::init() {
_ripKicksRock = series_load("RIPLEY KICKS ROCK");
_ripMakesMud = series_load("RIPLEY MAKES MUD");
_ripLowReach = series_load("RIP LOW REACH POS1");
digi_preload("950_s37a");
digi_preload("607_s02");
digi_preload("607_s01");
if (inv_object_is_here("RONGORONGO TABLET"))
_tablet = series_show("607tab", 0x800, 16);
if (_G(flags)[V193]) {
_mud = series_show("CLAY MUD", 0x700, 16);
_rock = series_show("ROCK BOTTOM", 0x700, 16);
hotspot_set_active("GREY ROCK", false);
if (!_G(flags)[V194] || !inv_object_is_here("RONGORONGO TABLET"))
hotspot_set_active("RONGORONGO TABLET", true);
} else {
_rock = series_show("ROCK TOP", 0x700, 16);
if (_G(flags)[V198] > 0)
_mud = series_show("CLAY MUD", 0x700, 16);
hotspot_set_active("GREY ROCK ", false);
hotspot_set_active("RONGORONGO TABLET", false);
hotspot_set_active("FISSURE", false);
}
switch (_G(kernel).trigger) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28C");
break;
case 633:
ws_demand_location(_G(my_walker), 316, 358, 1);
break;
case 638:
ws_demand_location(_G(my_walker), -30, 334, 3);
ws_walk(_G(my_walker), 32, 334, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 640:
ws_demand_location(_G(my_walker), 670, 288, 9);
ws_walk(_G(my_walker), 604, 288, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 645:
ws_demand_location(_G(my_walker), 124, 308, 5);
break;
default:
digi_preload("950_s28C");
ws_demand_location(_G(my_walker), 316, 358, 1);
break;
}
digi_play_loop("950_s28C", 3, 90);
}
void Room607::daemon() {
switch (_G(kernel).trigger) {
case 1:
player_set_commands_allowed(true);
break;
default:
break;
}
}
void Room607::pre_parser() {
const bool lookFlag = player_said_any("look", "look at");
const bool takeFlag = player_said("take");
const bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
if (useFlag && player_said("GREY ROCK") && !_G(flags)[V193])
_G(player).resetWalk();
if (player_said("HORN/PULL CORD/WATER", "CLAY") && !_G(flags)[V193])
_G(player).resetWalk();
if ((lookFlag || useFlag || takeFlag) && player_said(" "))
_G(player).resetWalk();
}
void Room607::parser() {
const bool lookFlag = player_said_any("look", "look at");
const bool takeFlag = player_said("take");
const bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
if (lookFlag && player_said("FISSURE") && inv_object_is_here("RONGORONGO TABLET")) {
hotspot_set_active("RONGORONGO TABLET", true);
_G(flags)[V194] = 1;
digi_play("607r05", 1);
} else if (lookFlag && player_said("FISSURE") && !inv_object_is_here("RONGORONGO TABLET")) {
hotspot_set_active("RONGORONGO TABLET", true);
_G(flags)[V194] = 1;
digi_play("607r05a", 1);
} else if (lookFlag && player_said("CLAY")) {
switch (_G(flags)[V198]) {
case 0:
digi_play("607r04", 1);
break;
case 1:
digi_play("607r11", 1);
break;
case 2:
digi_play("607r12", 1);
break;
case 3:
digi_play("607r13", 1);
break;
default:
digi_play("607r14", 1);
break;
}
} else if (lookFlag && player_said(" ")) {
digi_play("607r01", 1);
} else if (lookFlag && player_said("RED BOULDER")) {
digi_play("607r02", 1);
} else if (lookFlag && player_said_any("GREY ROCK", "GREY ROCK ")) {
digi_play("607r03", 1);
} else if (lookFlag && player_said("RONGORONGO TABLET") &&
inv_object_is_here("RONGORONGO TABLET")) {\
_val1 = 1;
digi_play("607r09", 1);
} else if (takeFlag && player_said("CLAY")) {
digi_play(_G(flags)[V198] ? "607r15" : "607r08", 1);
} else if (takeFlag && player_said("RED BOULDER")) {
digi_play("607r06", 1);
} else if (takeFlag && player_said_any("GREY ROCK", "GREY ROCK ")) {
digi_play("607r07", 1);
} else if (takeFlag && player_said("RONGORONGO TABLET") &&
inv_object_is_here("RONGORONGO TABLET")) {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
terminateMachineAndNull(_rock);
_rock = series_show("ROCK BOTTOM", 0x400, 16);
ws_walk(_G(my_walker), 360, 315, nullptr, 1, 1);
break;
case 1:
ws_hide_walker();
player_update_info();
series_play("RIP LOW REACH POS1", 0x700, 0, 3, 5, 0,
_G(player_info).scale, _G(player_info).x, _G(player_info).y, 0, 15);
break;
case 3:
_ripReach = series_show("RIP LOW REACH POS1", 0x700, 16, -1, -1, 15,
_G(player_info).scale, _G(player_info).x, _G(player_info).y);
hotspot_set_active("RONGORONGO TABLET", false);
terminateMachineAndNull(_tablet);
kernel_examine_inventory_object("ping rongorongo tablet", 5, 1, 212, 150, 5,
_val1 ? "607r09" : nullptr);
_G(flags)[V203] = 8;
break;
case 5:
terminateMachineAndNull(_ripReach);
series_play("RIP LOW REACH POS1", 0x700, 2, 7, 5, 0,
_G(player_info).scale, _G(player_info).x, _G(player_info).y, 0, 15);
break;
case 7:
ws_unhide_walker();
ws_walk(_G(my_walker), 383, 319, nullptr, 9, 0);
break;
case 9:
terminateMachineAndNull(_rock);
_rock = series_show("ROCK BOTTOM", 0x700, 16);
inv_give_to_player("RONGORONGO TABLET");
player_set_commands_allowed(true);
break;
default:
break;
}
} else if (useFlag && player_said("GREY ROCK") && !_G(flags)[V193]) {
switch (_G(kernel).trigger) {
case -1:
ws_walk(_G(my_walker), 431, 311, nullptr, 2, 9);
break;
case 2:
player_set_commands_allowed(false);
ws_hide_walker();
terminateMachineAndNull(_rock);
if (_G(flags)[V198] > 3) {
series_play("RIPLEY KICKS ROCK", 0x200, 0, 6, 5, 0, 100, 0, 0, 0, 20);
} else {
if (!_G(flags)[V198])
_mud = series_show("607 NOMUD", 0x100, 16);
series_play("RIPLEY KICKS ROCK", 0x200, 0, 3, 5, 0, 100, 0, 0, 0, 20);
}
break;
case 3:
series_play("RIPLEY KICKS ROCK", 0x200, 0, 4, 5, 0, 100, 0, 0, 21, 24);
digi_play("950_s37", 1);
break;
case 4:
series_play("RIPLEY KICKS ROCK", 0x200, 2, 5, 5, 0, 100, 0, 0, 0, 24);
break;
case 5:
digi_unload("950_s37");
_rock = series_show("ROCK TOP", 0x700, 16);
if (!_G(flags)[V198])
terminateMachineAndNull(_mud);
ws_unhide_walker();
player_set_commands_allowed(true);
break;
case 6:
series_play("RIPLEY KICKS ROCK", 0x200, 0, 8, 5, 0, 100, 0, 0, 21, 26);
digi_play("950_s37a", 1);
break;
case 7:
_rock = series_show("ROCK BOTTOM", 0x700, 16);
digi_stop(1);
digi_stop(2);
digi_unload("950_s37a");
digi_unload("607_s02");
hotspot_set_active("GREY ROCK", false);
hotspot_set_active("GREY ROCK ", true);
hotspot_set_active("FISSURE", true);
_G(flags)[V193] = 1;
ws_unhide_walker();
player_set_commands_allowed(true);
break;
case 8:
series_play("RIPLEY KICKS ROCK", 0x200, 0, 7, 5, 0, 100, 0, 0, 27, 42);
digi_play("607_s02", 2);
break;
default:
break;
}
} else if (player_said("HORN/PULL CORD/WATER", "CLAY") && !_G(flags)[V193]) {
switch (_G(kernel).trigger) {
case -1:
ws_walk(_G(my_walker), 311, 349, nullptr, 1, 1);
break;
case 1:
player_set_commands_allowed(false);
ws_hide_walker();
player_update_info();
_ripReach = series_show("SAFARI SHADOW 1", 0x700, 16, -1, -1, 0,
_G(player_info).scale + 1, _G(player_info).x, _G(player_info).y);
series_play("RIPLEY MAKES MUD", 0x100, 0, 2, 5, 0, 100, 0, 0, 0, 12);
break;
case 2:
series_play("RIPLEY MAKES MUD", 0x100, 0, 7, 5, 0, 100, 0, 0, 13, 42);
digi_play("607_s01", 2);
break;
case 7:
_G(flags)[V198] = 4;
_mud = series_show("CLAY MUD", 0x700, 16);
switch (_G(flags)[V198]) {
case 1:
digi_play("607r11", 1);
break;
case 2:
digi_play("607r12", 1);
break;
case 3:
digi_play("607r13", 1);
break;
default:
inv_move_object("HORN/PULL CORD/WATER", 997);
inv_give_to_player("HORN/PULL CORD");
digi_play("607r14", 1);
break;
}
digi_stop(2);
digi_unload("607_s01");
terminateMachineAndNull(_ripReach);
ws_unhide_walker();
player_set_commands_allowed(true);
break;
default:
break;
}
} else if (useFlag && player_said("RED BOULDER")) {
digi_play("607r10", 1);
} else if (player_said("left") && left()) {
// No implementation
} else if (player_said("right") && right()) {
// No implementation
} else if (player_said("down") && down()) {
// No implementation
} else {
return;
}
_G(player).command_ready = false;
}
bool Room607::left() {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
disable_player_commands_and_fade_init(1);
return true;
case 1:
digi_stop(1);
digi_stop(2);
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28C", 3, 90);
_G(game).setRoom(638);
return true;
default:
break;
}
return false;
}
bool Room607::right() {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
disable_player_commands_and_fade_init(1);
return true;
case 1:
digi_stop(1);
digi_stop(2);
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28C", 3, 90);
_G(game).setRoom(640);
return true;
default:
break;
}
return false;
}
bool Room607::down() {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
disable_player_commands_and_fade_init(1);
return true;
case 1:
digi_stop(1);
digi_stop(2);
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28C", 3, 90);
_G(game).setRoom(633);
return true;
default:
break;
}
return false;
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,61 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM607_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM607_H
#include "m4/riddle/rooms/room.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room607 : public Room {
private:
int _ripKicksRock = 0;
int _ripMakesMud = 0;
int _ripLowReach = 0;
machine *_tablet = nullptr;
machine *_mud = nullptr;
machine *_rock = nullptr;
machine *_ripReach = nullptr;
int _val1 = 0;
bool left();
bool right();
bool down();
public:
Room607() : Room() {}
~Room607() override {}
void preload() override;
void init() override;
void daemon() override;
void pre_parser() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,103 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM608_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM608_H
#include "m4/riddle/rooms/room.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room608 : public Room {
private:
int _rp01 = 0;
int _rp09 = 0;
int _ripHandChin = 0;
int _ripLowReach = 0;
int _ripLowReach2 = 0;
int _ripTalker = 0;
int _ripLHandTalk = 0;
int _ripHandTalk3 = 0;
int _tt01 = 0;
int _tt02 = 0;
int _tt03 = 0;
int _tt05 = 0;
int _old1 = 0;
int _old2 = 0;
int _old5 = 0;
int _old8 = 0;
int _old5a = 0;
int _old5b = 0;
int _old5c = 0;
int _old5d = 0;
int _old5f = 0;
int _all5a = 0;
int _loop0 = 0;
int _loop1 = 0;
int _horn = 0;
machine *_ripley = nullptr;
machine *_shadow = nullptr;
machine *_shadow5 = nullptr;
machine *_tt = nullptr;
machine *_ttShadow = nullptr;
machine *_ttTalker = nullptr;
machine *_ol = nullptr;
machine *_ol2 = nullptr;
machine *_stump = nullptr;
machine *_lighter = nullptr;
machine *_pole = nullptr;
machine *_puffin = nullptr;
machine *_end1 = nullptr;
machine *_end2 = nullptr;
int _ripleyShould = 0;
int _ripleyMode = 0;
int _oldMode = 0;
int _oldShould = 0;
int _ctr1 = 0;
void conv608a();
bool takeStump1();
bool takePuffin();
bool stumpHole();
bool takeStump2();
bool takeLighter();
bool hornCordWater();
bool lookPuffin();
void usePole();
public:
Room608() : Room() {}
~Room608() override {}
void init() override;
void daemon() override;
void pre_parser() override;
void parser() override;
void syncGame(Common::Serializer &s) override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,759 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room610.h"
#include "m4/graphics/gr_series.h"
#include "m4/riddle/vars.h"
#include "m4/adv_r/other.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room610::init() {
if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
_sgMode = 1;
_sgShould = 1;
_val3 = 0;
_kShould = 1;
_val5 = 1;
_val6 = 0;
}
_val7 = 0;
_val8 = 0;
_G(kernel).call_daemon_every_loop = true;
digi_preload("610s01");
digi_preload("610_s02");
digi_preload("610_s02a");
digi_preload("610_s03");
digi_preload("610_s03a");
digi_preload("610_s03b");
digi_preload("610k07");
digi_preload("610k08");
digi_preload("610k09");
digi_preload("610k10");
digi_preload("610k11");
digi_preload("610k12");
digi_preload("610k13");
_ripPeerAroundHut = series_load("RIP PEERS AROUND THE HUT");
_rp04 = series_load("610RP04");
_k00 = series_load("610K00");
_k01 = series_load("610K01");
_sgSlapsTt1 = series_load("SG SLAPS TT");
_sgSlapsTt2 = series_load("SG SLAPS TT AGAIN");
_sgPullsGun = series_load("SG PULLS A GUN");
if (_G(flags)[V012]) {
hotspot_set_active("window", false);
series_show("610 shed window open", 0xf00, 16);
} else {
hotspot_set_active("window ", false);
}
_k = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xa00, false,
triggerMachineByHashCallback610, "k");
_sgTt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xb00, false,
triggerMachineByHashCallback610, "sg and tt");
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
midi_play("tensions", 255, true, -1, 949);
if (_flag1)
ws_demand_location(_G(my_walker), 615, 364, 10);
setup();
kernel_timing_trigger(300, 135);
digi_preload("950_s28a");
break;
case 604:
digi_preload("950_s28a");
setup();
kernel_timing_trigger(300, 135);
ws_demand_location(_G(my_walker), 472, 262, 3);
break;
default:
digi_preload("950_s28a");
digi_stop(3);
digi_unload("950_s28");
if (player_been_here(610)) {
setup();
player_set_commands_allowed(false);
ws_demand_location(_G(my_walker), 665, 364, 9);
ws_walk(_G(my_walker), 615, 364, nullptr, 1, 10);
} else {
sendWSMessage_10000(1, _k, _k00, 1, 50, -1, _k00, 50, 60, 4);
sendWSMessage_10000(1, _sgTt, _sgSlapsTt1, 1, 1, -1,
_sgSlapsTt1, 1, 1, 4);
player_set_commands_allowed(false);
ws_demand_location(_G(my_walker), 665, 364, 9);
ws_walk(_G(my_walker), 240, 272, nullptr, 10, 10);
kernel_timing_trigger(1, 100);
}
break;
}
_flag2 = true;
_flag1 = false;
digi_play_loop("950_s28a", 3, 110);
}
void Room610::daemon() {
daemonPreprocess();
switch (_G(kernel).trigger) {
case 1:
player_set_commands_allowed(true);
break;
case 10:
_pu01 = series_stream("610pu01", 5, 0, 103);
series_stream_break_on_frame(_pu01, 6, 102);
ws_demand_location(_G(my_walker), 272, 273, 7);
ws_hide_walker();
_ripAction = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, false,
triggerMachineByHashCallback610, "spleen");
sendWSMessage_10000(1, _ripAction, _ripPeerAroundHut, 1, 65, -1,
_ripPeerAroundHut, 65, 65, 1);
break;
case 102:
digi_play("610k01", 1);
break;
case 103:
digi_play("610k02", 1, 255, 104);
break;
case 104:
digi_play("610k03", 1, 255, 107);
break;
case 107:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt1, 1, 36, 108,
_sgSlapsTt1, 36, 36, 1);
break;
case 108:
digi_play("610k04", 1, 255, 112);
sendWSMessage_10000(1, _ripAction, _ripPeerAroundHut, 65, 53, 109,
_ripPeerAroundHut, 53, 53, 1);
sendWSMessage_190000(_ripAction, 10);
break;
case 109:
kernel_timing_trigger(200, 110);
break;
case 110:
sendWSMessage_10000(1, _ripAction, _ripPeerAroundHut, 53, 65, -1,
_ripPeerAroundHut, 65, 65, 1);
break;
case 112:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt1, 37, 68, 115,
_sgSlapsTt1, 68, 68, 1);
digi_play("610t01", 1);
break;
case 115:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt1, 69, 81, 117,
_sgSlapsTt1, 81, 81, 1);
digi_play("610s01", 1, 255, 116);
break;
case 116:
_val7 = 1;
break;
case 117:
if (_val7)
kernel_timing_trigger(1, 120);
else
kernel_timing_trigger(30, 117);
break;
case 120:
sendWSMessage_10000(1, _k, _k00, 59, 60, -1, _k00, 60, 60, 1);
sendWSMessage_10000(1, _ripAction, _ripPeerAroundHut, 65, 53, 122,
_ripPeerAroundHut, 53, 53, 1);
sendWSMessage_190000(_ripAction, 10);
digi_play("610k05", 1, 255, 124);
break;
case 121:
kernel_timing_trigger(50, 122);
break;
case 122:
sendWSMessage_10000(1, _ripAction, _ripPeerAroundHut, 53, 65, 123,
_ripPeerAroundHut, 65, 65, 1);
break;
case 123:
terminateMachineAndNull(_ripAction);
ws_unhide_walker();
break;
case 124:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt1, 82, 90, 125,
_sgSlapsTt1, 90, 90, 1);
break;
case 125:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt1, 91, 110, 128,
_sgSlapsTt1, 110, 110, 1);
digi_play(imath_ranged_rand(1, 2) == 1 ? "610_s02" : "610_s02a", 2);
break;
case 126:
switch (imath_ranged_rand(1, 3)) {
case 1:
digi_play("610_s03", 2);
break;
case 2:
digi_play("610_s03a", 2);
break;
case 3:
digi_play("610_s03b", 2);
break;
default:
break;
}
break;
case 128:
sendWSMessage_10000(1, _k, _k00, 50, 60, -1, _k00, 50, 60, 4);
sendWSMessage_190000(_k, 11);
sendWSMessage_1a0000(_k, 11);
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 1, 1, -1,
_sgSlapsTt2, 1, 1, 1);
digi_play("610k06", 1, 255, 130);
break;
case 130:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 1, 1, 200,
_sgSlapsTt2, 1, 1, 1);
_sgMode = 1;
_sgShould = 0;
_val3 = 0;
sendWSMessage_10000(1, _k, _k00, 50, 50, 400, _k00, 50, 60, 4);
sendWSMessage_190000(_k, 11);
sendWSMessage_1a0000(_k, 11);
_kShould = 0;
_val5 = 1;
_val6 = 0;
_flag2 = true;
player_set_commands_allowed(true);
kernel_timing_trigger(300, 135);
break;
case 200:
kernel_trigger_dispatchx(kernel_trigger_create(201));
break;
case 201:
switch (_sgMode) {
case 1:
switch (_sgShould) {
case 0:
if (imath_ranged_rand(1, 40) == 1) {
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 1, 46, 200,
_sgSlapsTt2, 46, 46, 0);
_sgMode = 2;
} else {
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 1, 1, 200,
_sgSlapsTt2, 1, 1, 0);
}
break;
case 1:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 1, 1, 200,
_sgSlapsTt2, 1, 1, 0);
break;
case 3:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 1, 46, 200,
_sgSlapsTt2, 46, 46, 0);
_sgMode = 2;
break;
case 4:
sendWSMessage_10000(1, _sgTt, _sgPullsGun, 1, 36, -1,
_sgPullsGun, 36, 36, 0);
break;
default:
break;
}
break;
case 2:
switch (_sgShould) {
case 0:
if (imath_ranged_rand(1, 40) == 1) {
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 46, 1, 200,
_sgSlapsTt2, 1, 1, 0);
_sgMode = 1;
} else {
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 46, 46, 200,
_sgSlapsTt2, 46, 46, 0);
}
break;
case 2:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 46, 46, 200,
_sgSlapsTt2, 46, 46, 0);
break;
case 3:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 47, 48, 202,
_sgSlapsTt2, 48, 48, 0);
_sgMode = 1;
_sgShould = 0;
break;
default:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 47, 48, 202,
_sgSlapsTt2, 48, 48, 0);
_sgMode = 1;
break;
}
break;
default:
break;
}
break;
case 202:
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 49, 62, 200,
_sgSlapsTt2, 1, 1, 0);
digi_play(imath_ranged_rand(1, 2) == 1 ? "610_s02" : "610_s02a", 2);
kernel_timing_trigger(20, 126);
break;
case 400:
kernel_trigger_dispatchx(kernel_trigger_create(401));
break;
case 401:
if (_kShould)
break;
switch (_val5) {
case 0:
sendWSMessage_10000(1, _k, _k00, 54, 54, 400, _k00, 54, 54, 0);
break;
case 1:
if (imath_ranged_rand(5, 10) < ++_val6) {
_val6 = 0;
if (imath_ranged_rand(1, 2) == 1) {
kernel_timing_trigger(50, 400);
} else {
sendWSMessage_10000(1, _k, _k00, 1, 53, 400, _k00, 54, 60, 4);
sendWSMessage_1a0000(_k, 11);
}
} else {
kernel_timing_trigger(50, 400);
}
break;
case 2:
digi_stop(2);
sendWSMessage_10000(1, _k, _k01, 1, 29, 665, _k01, 29, 29, 0);
break;
default:
break;
}
break;
case 665:
if (!player_said("talk to", "KUANG") &&
!player_said("talk to", "SHEN GUO") &&
!player_said("talk to", "SAMANTHA")) {
if (player_said("gear", "WHALE BONE HORN")) {
disable_player_commands_and_fade_init(700);
interface_hide();
} else {
digi_play("610K14", 1, 255, 667);
}
}
break;
case 666:
ws_hide_walker();
_ripAction = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, false,
triggerMachineByHashCallback610, "spleen");
sendWSMessage_10000(1, _ripAction, _rp04, 1, 21, -1, _rp04, 21, 11, 4);
sendWSMessage_1a0000(_ripAction, 50);
break;
case 667:
digi_play("610R10", 1, 255, 668);
break;
case 668:
disable_player_commands_and_fade_init(669);
interface_hide();
break;
case 669:
kernel_timing_trigger(30, 670);
break;
case 670:
digi_play("950_s14", 1, 255, 671);
break;
case 671:
_flag1 = true;
other_save_game_for_resurrection();
_G(game).setRoom(413);
break;
case 700:
digi_play("610R11", 1, 255, 669);
break;
default:
break;
}
daemonPostprocess();
}
void Room610::pre_parser() {
const bool lookFlag = player_said_any("look", "look at");
if (lookFlag && player_said_any("HUT", "PIT", "SAMANTHA", "KUANG", "SHEN GUO"))
_G(player).resetWalk();
}
void Room610::parser() {
const bool lookFlag = player_said_any("look", "look at");
const bool talkFlag = player_said_any("talk", "talk to");
const bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
if (talkFlag && player_said_any("KUANG", "SHEN GUO")) {
talkKuangShenGuo();
} else if (talkFlag && player_said("SAMANTHA")) {
talkSamantha();
} else if (useFlag && player_said("WHALE BONE HORN") && useHorn()) {
// No implementation
} else if (lookFlag && player_said("SAMANTHA")) {
digi_play("610r01", 1);
} else if (lookFlag && player_said("KUANG")) {
digi_play("610r02", 1);
} else if (lookFlag && player_said("SHEN GUO")) {
digi_play("610r03", 1);
} else if (lookFlag && player_said("HUT")) {
digi_play("610r04", 1);
} else if (lookFlag && player_said("PIT")) {
digi_play("610r05", 1);
} else if (lookFlag && player_said("SHED")) {
digi_play("610r06", 1);
} else if (lookFlag && player_said("WINDOW")) {
digi_play("610r07", 1);
} else if (lookFlag && player_said("WINDOW ")) {
digi_play("604r47", 1);
} else if (lookFlag && player_said("POWER LINE")) {
digi_play("610r08", 1);
} else if ((useFlag && player_said_any("WINDOW", "WINDOW ")) ||
player_said("enter")) {
useWindow();
} else if (_G(kernel).trigger == 555) {
midi_stop();
static const char *DIGI[] = {
"610_s02", "610_s02a", "610_s03", "610_s03a",
"610_s03b", "610k07", "610k08", "610k09",
"610k10", "610k11", "610k12", "610k13", nullptr
};
for (const char **name = DIGI; *name; ++name)
digi_unload(*name);
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28a", 3, 110);
_G(game).setRoom(605);
} else if (player_said("exit")) {
player_set_commands_allowed(false);
disable_player_commands_and_fade_init(-1);
midi_fade_volume(0, 120);
kernel_timing_trigger(120, 555);
} else {
return;
}
_G(player).command_ready = false;
}
void Room610::triggerMachineByHashCallback610(frac16 myMessage, machine *sender) {
const int trigger = myMessage >> 16;
if (trigger >= 0)
kernel_trigger_dispatchx(myMessage);
}
void Room610::setup() {
sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 1, 1, 200,
_sgSlapsTt2, 1, 1, 1);
sendWSMessage_10000(1, _k, _k00, 50, 50, 400, _k00, 50, 60, 4);
sendWSMessage_190000(_k, 11);
sendWSMessage_1a0000(_k, 11);
_sgMode = 1;
_sgShould = 0;
_val3 = 0;
_kShould = 0;
_val5 = 1;
_val6 = 0;
}
void Room610::talkKuangShenGuo() {
switch (_G(kernel).trigger) {
case -1:
_flag1 = true;
digi_stop(2);
player_set_commands_allowed(false);
_val5 = 2;
_sgShould = 4;
digi_play("610r12", 1, 255, 1);
break;
case 1:
ws_hide_walker();
_ripAction = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, false,
triggerMachineByHashCallback610, "spleen");
sendWSMessage_10000(1, _ripAction, _rp04, 1, 21, 2, _rp04, 21, 11, 4);
sendWSMessage_1a0000(_ripAction, 50);
break;
case 2:
digi_play("610r13", 1, 255, 3);
break;
case 3:
disable_player_commands_and_fade_init(4);
interface_hide();
break;
case 4:
kernel_timing_trigger(30, 5);
break;
case 5:
digi_play("950_s14", 1, 255, 6);
break;
case 6:
other_save_game_for_resurrection();
_G(game).setRoom(413);
break;
default:
break;
}
}
void Room610::talkSamantha() {
switch (_G(kernel).trigger) {
case -1:
_flag1 = true;
digi_stop(2);
player_set_commands_allowed(false);
_val5 = 2;
_sgShould = 4;
digi_play("610r14", 1, 255, 1);
break;
case 1:
ws_hide_walker();
_ripAction = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, false,
triggerMachineByHashCallback610, "spleen");
sendWSMessage_10000(1, _ripAction, _rp04, 1, 21, 2, _rp04, 21, 11, 4);
sendWSMessage_1a0000(_ripAction, 50);
break;
case 2:
digi_play("610r15", 1, 255, 3);
break;
case 3:
disable_player_commands_and_fade_init(4);
interface_hide();
break;
case 4:
kernel_timing_trigger(30, 5);
break;
case 5:
digi_play("950_s14", 1, 255, 6);
break;
case 6:
other_save_game_for_resurrection();
_G(game).setRoom(413);
break;
default:
break;
}
}
bool Room610::useHorn() {
_flag1 = true;
if (_G(kernel).trigger == 5) {
_val5 = 2;
_sgShould = 4;
}
// Original never exits parser even when this code is called
return false;
}
void Room610::useWindow() {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
if (_G(flags)[V012]) {
kernel_timing_trigger(1, 1);
} else {
ws_hide_walker();
_ripAction = series_play("610rp02", 0, 0, 3, 5, 0, 100, 0, 0, 0, 32);
}
break;
case 1:
disable_player_commands_and_fade_init(2);
break;
case 2:
_G(game).setRoom(604);
break;
case 3:
_ripAction = series_play("610rp02", 0, 0, 4, 5, 0, 100, 0, 0, 33, 64);
digi_play("610_s01", 2);
hotspot_set_active("window", false);
hotspot_set_active("window ", true);
_G(flags)[V012] = 1;
break;
case 4:
series_show("610 shed window open", 0xf00, 16);
ws_unhide_walker();
player_set_commands_allowed(true);
break;
default:
break;
}
}
void Room610::daemonPreprocess() {
switch (_G(kernel).trigger) {
case 135:
if (!_flag1) {
if (++_val8 >= 8)
_val8 = 1;
switch (_val8) {
case 1:
digi_play("610k07", 2, 150);
kernel_timing_trigger(400, 135);
break;
case 2:
digi_play("610k08", 2, 150);
kernel_timing_trigger(400, 135);
break;
case 3:
digi_play("610k09", 2, 150);
kernel_timing_trigger(400, 135);
break;
case 4:
digi_play("610k10", 2, 150);
kernel_timing_trigger(400, 135);
break;
case 5:
digi_play("610k11", 2, 150);
kernel_timing_trigger(400, 135);
break;
case 6:
digi_play("610k12", 2, 150, 137);
kernel_timing_trigger(400, 135);
break;
case 7:
digi_play("610k13", 2, 150);
kernel_timing_trigger(500, 135);
break;
default:
break;
}
}
break;
case 137:
_sgShould = 3;
break;
default:
break;
}
}
void Room610::daemonPostprocess() {
if (!_flag1 && _flag2) {
player_update_info();
if (_G(player_info).x <= 222)
player_set_commands_allowed(false);
if (!player_said("talk to", "KUANG") &&
!player_said("talk to", "SHEN GUO") &&
!player_said("talk to", "SAMANTHA") &&
_G(player_info).x <= 222) {
intr_cancel_sentence();
ws_walk(_G(my_walker), 202, 244, nullptr, 666, 11, true);
_flag1 = true;
_val5 = 2;
_sgShould = 4;
}
}
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,78 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM610_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM610_H
#include "m4/riddle/rooms/room.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room610 : public Room {
private:
int _ripPeerAroundHut = 0;
int _rp04 = 0;
int _k00 = 0;
int _k01 = 0;
int _sgSlapsTt1 = 0;
int _sgSlapsTt2 = 0;
int _sgPullsGun = 0;
machine *_ripAction = nullptr;
machine *_k = nullptr;
machine *_sgTt = nullptr;
machine *_pu01 = nullptr;
int _sgMode = 0;
int _sgShould = 0;
int _val3 = 0;
int _kShould = 0;
int _val5 = 0;
int _val6 = 0;
int _val7 = 0;
int _val8 = 0;
bool _flag1 = false;
bool _flag2 = false;
static void triggerMachineByHashCallback610(frac16 myMessage, machine *sender);
void setup();
void talkKuangShenGuo();
void talkSamantha();
bool useHorn();
void useWindow();
void daemonPreprocess();
void daemonPostprocess();
public:
Room610() : Room() {}
~Room610() override {}
void init() override;
void daemon() override;
void pre_parser() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,524 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room615.h"
#include "m4/graphics/gr_series.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room615::preload() {
Room::preload();
_G(flags)[V000] = 1;
}
void Room615::init() {
player_set_commands_allowed(false);
_val1 = 0;
_val2 = 0;
_val3 = 90;
static const char *DIGI[] = {
"615r01", "615t01", "615r02", "615r02a",
"615t02", "615t03", "615r03", "615t04",
"615r04", "615t05", "615r05", "615t06",
"615r06", "615r08", "615r12", "615r13",
"615t10", "615t10a", "615r15", nullptr
};
for (static const char **name = DIGI; *name; ++name)
digi_preload(*name);
_ripTalking = series_load("615 RIP TALKING");
_ripTalk = series_load("RIP TREK TALK");
_loop0 = series_load("615LOOP0");
_loop1 = series_load("615LOOP1");
_loop2 = series_load("615LOOP2");
_loop3 = series_load("615LOOP3");
_loop4 = series_load("615LOOP4");
_loop5 = series_load("615LOOP5");
_loop6 = series_load("615LOOP6");
_loop7 = series_load("615LOOP7");
_ear2 = series_load("615ear2");
_untie = series_stream("615 UNTIE", 7, 0xf00, 46);
series_stream_break_on_frame(_untie, 25, 10);
kernel_timing_trigger(1, 9);
digi_preload("950_s28a");
sendWSMessage_60000(_G(my_walker));
_G(player).walker_in_this_scene = false;
series_unload(0);
series_unload(1);
series_unload(2);
series_unload(3);
series_unload(4);
series_unload(10);
series_unload(11);
series_unload(12);
series_unload(13);
series_unload(14);
digi_play_loop("950_s28a", 3, 50);
kernel_timing_trigger(1, 1);
}
void Room615::daemon() {
switch (_G(kernel).trigger) {
case 9:
digi_play("615r01", 1, 255, 10);
break;
case 10:
if (_flag1) {
_flag1 = false;
series_stream_break_on_frame(_untie, 79, 11);
digi_play("615t01", 1, 255, 11);
} else {
_flag1 = true;
}
break;
case 11:
if (_flag1) {
_flag1 = false;
series_set_frame_rate(_untie, 30000);
digi_play("615r02", 1, 255, 15);
} else {
_flag1 = true;
}
break;
case 15:
_pu = series_stream("615PU01", 6, 0, 21);
series_stream_break_on_frame(_pu, 6, 17);
break;
case 17:
digi_play("615r02a", 1, 255, 21);
break;
case 21:
if (_flag1) {
_flag1 = false;
_pu = series_stream("615PU02", 6, 0x100, 24);
series_stream_break_on_frame(_pu, 5, 22);
series_set_frame_rate(_pu, 4);
} else {
_flag1 = true;
}
break;
case 22:
digi_play("615t02", 1, 255, 24);
break;
case 24:
if (_flag1) {
_flag1 = false;
series_set_frame_rate(_untie, 7);
ws_OverrideCrunchTime(_untie);
series_stream_break_on_frame(_untie, 144, 26);
digi_play("615t03", 1, 255, 25);
} else {
_flag1 = true;
}
break;
case 25:
_flag1 = false;
_ripTalker = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 393, 361, 97, 256, true,
triggerMachineByHashCallback, "rip talker");
sendWSMessage_10000(1, _ripTalker, _ripTalk, 1, 1, 40, _ripTalk, 1, 7, 4);
sendWSMessage_1a0000(_ripTalker, 11);
digi_play("615r03", 1, 255, 40);
break;
case 26:
if (!_val1)
series_set_frame_rate(_untie, 3000);
break;
case 40:
if (_flag1) {
_flag1 = false;
digi_unload("615r01");
digi_unload("615t01");
digi_unload("615r02");
digi_unload("615r02a");
digi_unload("615t02");
digi_unload("615t03");
digi_unload("615r03");
_val1 = 1;
terminateMachineAndNull(_ripTalker);
series_set_frame_rate(_untie, 7);
ws_OverrideCrunchTime(_untie);
} else {
_flag1 = true;
}
break;
case 46:
if (_ripTalker) {
kernel_timing_trigger(10, 46);
} else {
_ctr1 = 0;
series_load("RIP SAFARI WALKER POSITION 1");
series_load("RIP SAFARI WALKER POSITION 2", 1);
series_load("RIP SAFARI WALKER POSITION 3", 2);
series_load("SAFARI SHADOW 1", 10);
series_load("SAFARI SHADOW 1", 11);
series_load("SAFARI SHADOW 1", 12);
_pu = triggerMachineByHash_3000(8, 0, *RIPLEY_SERIES_DIRS, *RIPLEY_SHADOWS_DIRS,
392, 361, 10, triggerMachineByHashCallback3000, "rip");
sendWSMessage_10000(_pu, 426, 347, 9, 50, 1);
_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false,
triggerMachineByHashCallback, "untie tt");
sendWSMessage_10000(1, _tt, _loop7, 1, 1, 50, _loop7, 1, 5, 1);
sendWSMessage_1a0000(_tt, 15);
digi_play("615t04", 1, 255, 50);
}
break;
case 50:
if (_ctr1 >= 2) {
_ctr1 = 0;
player_update_info(_pu, &_G(player_info));
ws_hide_walker(_pu);
series_play("SAFARI SHADOW 3", 0xf00, 128, -1, 600, -1,
_G(player_info).scale, _G(player_info).x, _G(player_info).y, 0, 0);
terminateMachineAndNull(_tt);
_untie = series_stream("615ALL1", 6, 0x100, 57);
series_stream_break_on_frame(_untie, 47, 55);
digi_play("615r04", 1);
} else {
++_ctr1;
}
break;
case 55:
digi_play("615t05", 1, 255, 60);
break;
case 57:
_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false,
triggerMachineByHashCallback, "x");
sendWSMessage_10000(1, _tt, _loop0, 1, 1, 60, _loop0, 1, 5, 1);
sendWSMessage_1a0000(_tt, 13);
break;
case 60:
if (_ctr1 >= 1) {
_ctr1 = 0;
terminateMachineAndNull(_tt);
_untie = series_stream("615ALL1a", 6, 0x100, 65);
digi_play("615r05", 1, 255, 62);
} else {
++_ctr1;
}
break;
case 62:
digi_play("615t06", 1, 255, 75);
break;
case 65:
_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false,
triggerMachineByHashCallback, "spleen");
sendWSMessage_10000(1, _tt, _loop1, 1, 1, 75, _loop1, 1, 7, 1);
sendWSMessage_1a0000(_tt, 13);
break;
case 75:
if (_ctr1 >= 1) {
_ctr1 = 0;
terminateMachineAndNull(_tt);
_untie = series_stream("615ALL2", 6, 0x100, 80);
digi_play("615r06", 1, 255, 80);
} else {
++_ctr1;
}
break;
case 80:
if (_ctr1 >= 1) {
_ctr1 = 0;
_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false,
triggerMachineByHashCallback, "spleen");
sendWSMessage_10000(1, _tt, _loop2, 1, 1, 85, _loop2, 1, 9, 1);
sendWSMessage_1a0000(_tt, 13);
digi_play("615t07", 1, 255, 85);
} else {
++_ctr1;
}
break;
case 85:
if (_ctr1 >= 1) {
_ctr1 = 0;
sendWSMessage_10000(1, _tt, _loop3, 1, 17, 87, _loop3, 18, 18, 1);
} else {
++_ctr1;
}
break;
case 87:
sendWSMessage_10000(1, _tt, _loop3, 19, 19, 90, _loop3, 19, 23, 1);
sendWSMessage_1a0000(_tt, 13);
digi_play("615r07", 1, 255, 90);
break;
case 90:
if (_ctr1 >= 1) {
_ctr1 = 0;
sendWSMessage_10000(1, _tt, _loop4, 1, 13, 93, _loop4, 14, 14, 1);
} else {
++_ctr1;
}
break;
case 93:
sendWSMessage_10000(1, _tt, _loop4, 15, 15, 96, _loop4, 15, 20, 1);
sendWSMessage_1a0000(_tt, 13);
digi_play("615t08", 1, 255, 96);
break;
case 96:
if (_ctr1 >= 1) {
_ctr1 = 0;
sendWSMessage_10000(1, _tt, _loop4, 21, 50, 98, _loop4, 50, 50, 1);
sendWSMessage_190000(_tt, 7);
digi_play("615t08a", 1, 255, 98);
} else {
++_ctr1;
}
break;
case 98:
if (_ctr1 >= 1) {
_ctr1 = 0;
terminateMachineAndNull(_tt);
_untie = series_stream("615all3", 6, 0x100, 102);
digi_play("615r08", 1, 255, 102);
} else {
++_ctr1;
}
break;
case 102:
if (_ctr1 >= 1) {
_ctr1 = 0;
_untie = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false,
triggerMachineByHashCallback, "spleen");
sendWSMessage_10000(1, _untie, _loop5, 1, 1, 105, _loop5, 1, 5, 1);
sendWSMessage_1a0000(_untie, 15);
_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false,
triggerMachineByHashCallback, "spleen");
sendWSMessage_10000(1, _tt, _loop6, 1, 1, 105, _loop6, 1, 1, 1);
digi_play("615r09", 1, 255, 105);
} else {
++_ctr1;
}
break;
case 105:
if (_ctr1 >= 2) {
_ctr1 = 0;
sendWSMessage_10000(1, _untie, _loop5, 1, 1, 108, _loop5, 1, 1, 1);
sendWSMessage_10000(1, _tt, _loop6, 1, 1, 108, _loop6, 1, 5, 1);
sendWSMessage_1a0000(_tt, 13);
digi_play("615t09", 1, 255, 108);
} else {
++_ctr1;
}
break;
case 108:
if (_ctr1 >= 2) {
_ctr1 = 0;
sendWSMessage_10000(1, _untie, _loop5, 1, 1, 112, _loop5, 1, 5, 1);
sendWSMessage_1a0000(_untie, 13);
sendWSMessage_10000(1, _tt, _loop6, 1, 1, 112, _loop6, 1, 1, 1);
digi_play("615r10", 1, 255, 112);
} else {
++_ctr1;
}
break;
case 112:
if (_ctr1 >= 2) {
_ctr1 = 0;
inv_move_object("RONGORONGO TABLET", 615);
terminateMachineAndNull(_untie);
terminateMachineAndNull(_tt);
_G(flags)[V089] = 1;
_untie = series_stream("615ALL4", 6, 0x100, 115);
digi_play(_G(flags)[V288] ? "615r11" : "615r12", 1, 255, 115);
_G(flags)[V288] = 1;
} else {
++_ctr1;
}
break;
case 115:
if (_ctr1 >= 1) {
_ctr1 = 0;
_untie = series_stream("615ALL5", 6, 0x100, 120);
series_stream_break_on_frame(_untie, 30, 116);
digi_play("615r13", 1, 255, 118);
} else {
++_ctr1;
}
break;
case 116:
series_stream_break_on_frame(_untie, 58, 150);
series_set_frame_rate(_untie, 30000);
break;
case 118:
series_set_frame_rate(_untie, 6);
ws_OverrideCrunchTime(_untie);
digi_play("615t10", 1, 255, 119);
break;
case 119:
_val2 = 1;
if (_val2) {
series_set_frame_rate(_untie, 6);
ws_OverrideCrunchTime(_untie);
} else {
kernel_timing_trigger(10, 151);
}
break;
case 120:
midi_play("love", 255, false, -1, 949);
_untie = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false,
triggerMachineByHashCallback, "spleen");
sendWSMessage_10000(1, _untie, _loop5, 1, 1, 125, _loop5, 1, 1, 1);
sendWSMessage_190000(_untie, 15);
sendWSMessage_1a0000(_untie, 15);
_tt = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false,
triggerMachineByHashCallback, "spleen");
sendWSMessage_10000(1, _tt, _loop7, 1, 1, 125, _loop7, 1, 5, 1);
sendWSMessage_1a0000(_tt, 13);
digi_play("615t10a", 1, 255, 125);
break;
case 125:
if (_ctr1 >= 2) {
_ctr1 = 0;
sendWSMessage_10000(1, _untie, _loop5, 1, 1, 127, _loop5, 1, 5, 1);
sendWSMessage_1a0000(_untie, 13);
sendWSMessage_10000(1, _tt, _loop7, 1, 1, 127, _loop7, 1, 1, 1);
digi_play("615r14", 1, 255, 127);
} else {
++_ctr1;
}
break;
case 127:
if (_ctr1 >= 2) {
_ctr1 = 0;
sendWSMessage_10000(1, _untie, _loop5, 1, 1, 130, _loop5, 1, 1, 1);
sendWSMessage_10000(1, _tt, _loop7, 1, 1, 130, _loop7, 1, 5, 1);
sendWSMessage_1a0000(_tt, 13);
digi_play("615t11", 1, 255, 130);
} else {
++_ctr1;
}
break;
case 130:
if (_ctr1 >= 2) {
_ctr1 = 0;
sendWSMessage_10000(1, _tt, _loop7, 1, 1, 133, _loop7, 1, 1, 1);
_untie = series_stream("615PU03", 6, 256, -1);
series_stream_break_on_frame(_untie, 5, 133);
} else {
++_ctr1;
}
break;
case 133:
if (_ctr1 >= 1) {
_ctr1 = 0;
series_stream_break_on_frame(_untie, 94, 135);
digi_play("615r15", 1);
} else {
++_ctr1;
}
break;
case 135:
series_set_frame_rate(_untie, 400);
kernel_timing_trigger(60, 140);
break;
case 140:
disable_player_commands_and_fade_init(141);
break;
case 141:
inv_move_object("SPARK PLUG TOOL", NOWHERE);
_G(flags)[V203] = 9;
_G(flags)[V191] = 0;
_G(flags)[kTravelDest] = 4;
_G(game).setRoom(495);
break;
case 150:
if (!_val2) {
series_set_frame_rate(_untie, 30000);
kernel_timing_trigger(10, 151);
}
break;
case 151:
if (_val2) {
series_set_frame_rate(_untie, 6);
ws_OverrideCrunchTime(_untie);
} else {
kernel_timing_trigger(10, 151);
}
break;
default:
break;
}
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,68 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM615_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM615_H
#include "m4/riddle/rooms/room.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room615 : public Room {
private:
int _ripTalking = 0;
int _ripTalk = 0;
int _loop0 = 0;
int _loop1 = 0;
int _loop2 = 0;
int _loop3 = 0;
int _loop4 = 0;
int _loop5 = 0;
int _loop6 = 0;
int _loop7 = 0;
int _ear2 = 0;
machine *_untie = nullptr;
machine *_pu = nullptr;
machine *_tt = nullptr;
machine *_ripTalker = nullptr;
int _val1 = 0;
int _val2 = 0;
int _val3 = 90;
bool _flag1 = false;
int _ctr1 = 0;
public:
Room615() : Room() {}
~Room615() override {}
void preload() override;
void init() override;
void daemon() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,62 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room620.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room620::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 621:
ws_demand_location(_G(my_walker), 670, 322, 9);
ws_walk(_G(my_walker), 605, 322, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 626:
ws_demand_location(_G(my_walker), 418, 285, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 418, 285, 5);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room620::parser() {
Maze::parser();
checkExitRight(621);
checkExitUp(626);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM620_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM620_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room620 : public Maze {
public:
Room620() : Maze() {}
~Room620() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,69 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room621.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room621::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 620:
ws_demand_location(_G(my_walker), -30, 310, 3);
ws_walk(_G(my_walker), 30, 310, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 622:
ws_demand_location(_G(my_walker), 670, 290, 9);
ws_walk(_G(my_walker), 605, 290, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 627:
ws_demand_location(_G(my_walker), 384, 293, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 384, 293, 5);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room621::parser() {
Maze::parser();
checkExitLeft(620);
checkExitRight(622);
checkExitUp(627);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM621_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM621_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room621 : public Maze {
public:
Room621() : Maze() {}
~Room621() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,69 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room622.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room622::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 621:
ws_demand_location(_G(my_walker), -30, 362, 3);
ws_walk(_G(my_walker), 30, 362, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 623:
ws_demand_location(_G(my_walker), 670, 290, 9);
ws_walk(_G(my_walker), 605, 290, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 628:
ws_demand_location(_G(my_walker), 313, 290, 5);
break;
default:
digi_preload("650_s28c");
ws_demand_location(_G(my_walker), 313, 290, 5);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room622::parser() {
Maze::parser();
checkExitLeft(621);
checkExitRight(623);
checkExitUp(628);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM622_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM622_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room622 : public Maze {
public:
Room622() : Maze() {}
~Room622() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,77 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room623.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room623::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 605:
digi_preload("950_s28c");
digi_stop(3);
digi_unload("950_s28");
ws_demand_location(_G(my_walker), 303, 352, 1);
break;
case 622:
ws_demand_location(_G(my_walker), -30, 362, 3);
ws_walk(_G(my_walker), 30, 310, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 624:
ws_demand_location(_G(my_walker), 670, 290, 9);
ws_walk(_G(my_walker), 605, 290, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 629:
ws_demand_location(_G(my_walker), 381, 283, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 313, 283, 5);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room623::parser() {
Maze::parser();
checkExitLeft(622);
checkExitRight(624);
checkExitUp(629);
checkExitDown(605);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM623_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM623_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room623 : public Maze {
public:
Room623() : Maze() {}
~Room623() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,69 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room624.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room624::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 623:
ws_demand_location(_G(my_walker), -30, 310, 3);
ws_walk(_G(my_walker), 30, 310, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 625:
ws_demand_location(_G(my_walker), 670, 290, 9);
ws_walk(_G(my_walker), 605, 290, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 630:
ws_demand_location(_G(my_walker), 367, 296, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 367, 296, 5);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room624::parser() {
Maze::parser();
checkExitLeft(623);
checkExitRight(625);
checkExitUp(630);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM624_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM624_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room624 : public Maze {
public:
Room624() : Maze() {}
~Room624() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,73 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room625.h"
#include "m4/riddle/vars.h"
#include "m4/riddle/riddle.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room625::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 624:
ws_demand_location(_G(my_walker), -30, 310, 3);
ws_walk(_G(my_walker), 30, 310, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
default:
digi_preload("950_28c");
ws_demand_location(_G(my_walker), -30, 310, 3);
ws_walk(_G(my_walker), 30, 310, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room625::parser() {
Maze::parser();
if (player_said("journal", "STARFISH")) {
if (_G(flags)[V208]) {
digi_play("203r54", 1);
} else {
if (_G(kernel).trigger == 6)
_G(flags)[V208] = 1;
sketchInJournal(nullptr);
}
_G(player).command_ready = false;
} else {
checkExitLeft(624);
}
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM625_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM625_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room625 : public Maze {
public:
Room625() : Maze() {}
~Room625() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,81 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room626.h"
#include "m4/riddle/vars.h"
#include "m4/riddle/riddle.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room626::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 620:
ws_demand_location(_G(my_walker), 340, 500, 1);
break;
case 627:
ws_demand_location(_G(my_walker), 670, 290, 9);
ws_walk(_G(my_walker), 605, 290, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 631:
ws_demand_location(_G(my_walker), 341, 290, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 340, 500, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room626::parser() {
Maze::parser();
if (player_said("journal", "SEAHORSE")) {
if (_G(flags)[V209]) {
digi_play("203r54", 1);
} else {
if (_G(kernel).trigger == 6)
_G(flags)[V209] = 1;
sketchInJournal(nullptr);
}
_G(player).command_ready = false;
} else {
checkExitRight(627);
checkExitUp(631);
checkExitDown(620);
}
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM626_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM626_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room626 : public Maze {
public:
Room626() : Maze() {}
~Room626() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room627.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room627::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 621:
ws_demand_location(_G(my_walker), 429, 337, 1);
break;
case 626:
ws_demand_location(_G(my_walker), -30, 328, 3);
ws_walk(_G(my_walker), 30, 328, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 628:
ws_demand_location(_G(my_walker), 670, 290, 9);
ws_walk(_G(my_walker), 605, 290, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 632:
ws_demand_location(_G(my_walker), 426, 283, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 429, 337, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room627::parser() {
Maze::parser();
checkExitLeft(626);
checkExitRight(628);
checkExitUp(632);
checkExitDown(621);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM627_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM627_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room627 : public Maze {
public:
Room627() : Maze() {}
~Room627() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room628.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room628::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 622:
ws_demand_location(_G(my_walker), 341, 344, 1);
break;
case 627:
ws_demand_location(_G(my_walker), -30, 292, 3);
ws_walk(_G(my_walker), 30, 292, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 629:
ws_demand_location(_G(my_walker), 670, 330, 9);
ws_walk(_G(my_walker), 605, 330, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 633:
ws_demand_location(_G(my_walker), 199, 277, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 341, 344, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room628::parser() {
Maze::parser();
checkExitLeft(627);
checkExitRight(629);
checkExitUp(633);
checkExitDown(622);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM628_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM628_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room628 : public Maze {
public:
Room628() : Maze() {}
~Room628() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room629.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room629::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 623:
ws_demand_location(_G(my_walker), 299, 339, 1);
break;
case 628:
ws_demand_location(_G(my_walker), -30, 310, 3);
ws_walk(_G(my_walker), 30, 310, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 630:
ws_demand_location(_G(my_walker), 670, 290, 9);
ws_walk(_G(my_walker), 605, 290, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 634:
ws_demand_location(_G(my_walker), 404, 273, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 299, 339, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room629::parser() {
Maze::parser();
checkExitLeft(628);
checkExitRight(630);
checkExitUp(634);
checkExitDown(623);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM629_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM629_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room629 : public Maze {
public:
Room629() : Maze() {}
~Room629() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,68 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room630.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room630::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 624:
ws_demand_location(_G(my_walker), 382, 326, 1);
break;
case 629:
ws_demand_location(_G(my_walker), -30, 333, 3);
ws_walk(_G(my_walker), 30, 333, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 635:
ws_demand_location(_G(my_walker), 410, 276, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 382, 326, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room630::parser() {
Maze::parser();
checkExitLeft(629);
checkExitUp(635);
checkExitDown(624);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM630_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM630_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room630 : public Maze {
public:
Room630() : Maze() {}
~Room630() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,68 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room631.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room631::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 626:
ws_demand_location(_G(my_walker), 255, 341, 1);
break;
case 632:
ws_demand_location(_G(my_walker), 670, 290, 9);
ws_walk(_G(my_walker), 605, 290, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 637:
ws_demand_location(_G(my_walker), 403, 271, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 255, 341, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room631::parser() {
Maze::parser();
checkExitRight(632);
checkExitUp(637);
checkExitDown(626);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM631_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM631_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room631 : public Maze {
public:
Room631() : Maze() {}
~Room631() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room632.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room632::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 627:
ws_demand_location(_G(my_walker), 248, 343, 1);
break;
case 631:
ws_demand_location(_G(my_walker), -30, 310, 3);
ws_walk(_G(my_walker), 30, 310, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 633:
ws_demand_location(_G(my_walker), 670, 290, 9);
ws_walk(_G(my_walker), 605, 290, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 638:
ws_demand_location(_G(my_walker), 230, 291, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 248, 343, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room632::parser() {
Maze::parser();
checkExitLeft(631);
checkExitRight(633);
checkExitUp(638);
checkExitDown(627);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM632_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM632_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room632 : public Maze {
public:
Room632() : Maze() {}
~Room632() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room633.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room633::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 607:
ws_demand_location(_G(my_walker), 259, 277, 5);
break;
case 628:
ws_demand_location(_G(my_walker), 200, 345, 1);
break;
case 632:
ws_demand_location(_G(my_walker), -30, 310, 3);
ws_walk(_G(my_walker), 30, 310, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 634:
ws_demand_location(_G(my_walker), 670, 290, 9);
ws_walk(_G(my_walker), 605, 290, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 200, 345, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room633::parser() {
Maze::parser();
checkExitLeft(632);
checkExitRight(634);
checkExitUp(607);
checkExitDown(628);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM633_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM633_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room633 : public Maze {
public:
Room633() : Maze() {}
~Room633() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room634.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room634::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 629:
ws_demand_location(_G(my_walker), 372, 342, 1);
break;
case 633:
ws_demand_location(_G(my_walker), -30, 310, 3);
ws_walk(_G(my_walker), 30, 310, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 635:
ws_demand_location(_G(my_walker), 670, 310, 9);
ws_walk(_G(my_walker), 605, 310, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 640:
ws_demand_location(_G(my_walker), 365, 267, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 372, 342, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room634::parser() {
Maze::parser();
checkExitLeft(633);
checkExitRight(635);
checkExitUp(640);
checkExitDown(629);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM634_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM634_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room634 : public Maze {
public:
Room634() : Maze() {}
~Room634() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room635.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room635::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 630:
ws_demand_location(_G(my_walker), 308, 340, 1);
break;
case 634:
ws_demand_location(_G(my_walker), -30, 321, 3);
ws_walk(_G(my_walker), 30, 321, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 636:
ws_demand_location(_G(my_walker), 670, 316, 9);
ws_walk(_G(my_walker), 605, 316, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 641:
ws_demand_location(_G(my_walker), 90, 250, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 308, 340, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room635::parser() {
Maze::parser();
checkExitLeft(634);
checkExitRight(636);
checkExitUp(641);
checkExitDown(630);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM635_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM635_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room635 : public Maze {
public:
Room635() : Maze() {}
~Room635() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,63 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room636.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room636::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 635:
ws_demand_location(_G(my_walker), -30, 346, 3);
ws_walk(_G(my_walker), 30, 346, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 642:
ws_demand_location(_G(my_walker), 268, 234, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 268, 234, 5);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room636::parser() {
Maze::parser();
checkExitLeft(635);
checkExitUp(642);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM636_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM636_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room636 : public Maze {
public:
Room636() : Maze() {}
~Room636() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,68 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room637.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room637::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 631:
ws_demand_location(_G(my_walker), 298, 352, 1);
break;
case 638:
ws_demand_location(_G(my_walker), 670, 336, 9);
ws_walk(_G(my_walker), 621, 336, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 643:
ws_demand_location(_G(my_walker), 300, 290, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 298, 352, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room637::parser() {
Maze::parser();
checkExitRight(638);
checkExitUp(643);
checkExitDown(631);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM637_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM637_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room637 : public Maze {
public:
Room637() : Maze() {}
~Room637() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room638.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room638::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 607:
ws_demand_location(_G(my_walker), 670, 300, 9);
ws_walk(_G(my_walker), 615, 300, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 632:
ws_demand_location(_G(my_walker), 360, 3550, 11);
break;
case 637:
ws_demand_location(_G(my_walker), -30, 319, 3);
ws_walk(_G(my_walker), 20, 319, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 644:
ws_demand_location(_G(my_walker), 360, 300, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 360, 3550, 11);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room638::parser() {
Maze::parser();
checkExitLeft(637);
checkExitRight(607);
checkExitUp(644);
checkExitDown(632);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM638_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM638_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room638 : public Maze {
public:
Room638() : Maze() {}
~Room638() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room640.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room640::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 607:
ws_demand_location(_G(my_walker), -30, 295, 3);
ws_walk(_G(my_walker), 32, 295, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 634:
ws_demand_location(_G(my_walker), 303, 347, 1);
break;
case 641:
ws_demand_location(_G(my_walker), 670, 335, 9);
ws_walk(_G(my_walker), 591, 335, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 646:
ws_demand_location(_G(my_walker), 290, 277, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 303, 347, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room640::parser() {
Maze::parser();
checkExitLeft(607);
checkExitRight(641);
checkExitUp(646);
checkExitDown(634);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM640_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM640_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room640 : public Maze {
public:
Room640() : Maze() {}
~Room640() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room641.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room641::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 635:
ws_demand_location(_G(my_walker), 305, 342, 1);
break;
case 640:
ws_demand_location(_G(my_walker), -30, 326, 3);
ws_walk(_G(my_walker), 24, 326, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 642:
ws_demand_location(_G(my_walker), 670, 319, 9);
ws_walk(_G(my_walker), 614, 319, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 647:
ws_demand_location(_G(my_walker), 315, 282, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 305, 342, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room641::parser() {
Maze::parser();
checkExitLeft(640);
checkExitRight(642);
checkExitUp(647);
checkExitDown(635);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM641_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM641_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room641 : public Maze {
public:
Room641() : Maze() {}
~Room641() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,68 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room642.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room642::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 636:
ws_demand_location(_G(my_walker), 307, 347, 11);
break;
case 641:
ws_demand_location(_G(my_walker), -30, 328, 3);
ws_walk(_G(my_walker), 32, 328, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 648:
ws_demand_location(_G(my_walker), 280, 270, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 307, 347, 11);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room642::parser() {
Maze::parser();
checkExitLeft(641);
checkExitUp(648);
checkExitDown(636);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM642_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM642_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room642 : public Maze {
public:
Room642() : Maze() {}
~Room642() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,68 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room643.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room643::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 637:
ws_demand_location(_G(my_walker), 337, 347, 11);
break;
case 644:
ws_demand_location(_G(my_walker), 670, 301, 9);
ws_walk(_G(my_walker), 615, 301, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 649:
ws_demand_location(_G(my_walker), 298, 296, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 337, 347, 11);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room643::parser() {
Maze::parser();
checkExitRight(644);
checkExitUp(649);
checkExitDown(637);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM643_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM643_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room643 : public Maze {
public:
Room643() : Maze() {}
~Room643() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,83 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room644.h"
#include "m4/riddle/vars.h"
#include "m4/riddle/riddle.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room644::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 638:
ws_demand_location(_G(my_walker), 343, 351, 1);
break;
case 643:
ws_demand_location(_G(my_walker), -30, 313, 3);
ws_walk(_G(my_walker), 25, 313, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 645:
ws_demand_location(_G(my_walker), 670, 346, 9);
ws_walk(_G(my_walker), 613, 346, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 343, 351, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room644::parser() {
Maze::parser();
if (player_said("journal", "SCALLOP")) {
if (_G(flags)[V207]) {
digi_play("203r54", 1);
} else {
if (_G(kernel).trigger == 6)
_G(flags)[V207] = 1;
sketchInJournal(nullptr);
}
_G(player).command_ready = false;
} else {
checkExitLeft(643);
checkExitRight(645);
checkExitDown(638);
}
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM644_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM644_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room644 : public Maze {
public:
Room644() : Maze() {}
~Room644() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,70 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room645.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room645::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 607:
ws_demand_location(_G(my_walker), 313, 348, 1);
break;
case 644:
ws_demand_location(_G(my_walker), -30, 323, 3);
ws_walk(_G(my_walker), 25, 323, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 646:
ws_demand_location(_G(my_walker), 670, 298, 3);
ws_walk(_G(my_walker), 608, 298, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 313, 348, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room645::parser() {
Maze::parser();
checkExitLeft(644);
checkExitRight(646);
checkExitDown(607);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM645_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM645_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room645 : public Maze {
public:
Room645() : Maze() {}
~Room645() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,75 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room646.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room646::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 640:
ws_demand_location(_G(my_walker), 320, 353, 11);
break;
case 645:
ws_demand_location(_G(my_walker), -30, 330, 9);
ws_walk(_G(my_walker), 30, 330, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 647:
ws_demand_location(_G(my_walker), 670, 292, 9);
ws_walk(_G(my_walker), 610, 292, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 650:
ws_demand_location(_G(my_walker), 262, 274, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 320, 353, 11);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room646::parser() {
Maze::parser();
checkExitLeft(645);
checkExitRight(647);
checkExitUp(650);
checkExitDown(640);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM646_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM646_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room646 : public Maze {
public:
Room646() : Maze() {}
~Room646() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,100 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room647.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room647::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 641:
ws_demand_location(_G(my_walker), 320, 353, 1);
break;
case 646:
ws_demand_location(_G(my_walker), -30, 330, 3);
ws_walk(_G(my_walker), 30, 330, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
case 648:
ws_demand_location(_G(my_walker), 670, 307, 9);
ws_walk(_G(my_walker), 610, 307, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
case 651:
ws_demand_location(_G(my_walker), 0, 292, 5);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 320, 353, 1);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room647::parser() {
Maze::parser();
checkExitLeft(646);
checkExitRight(648);
checkExitUp(651);
if (player_said("up2")) {
_G(flags)[V206] = 1;
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
disable_player_commands_and_fade_init(1);
_G(player).command_ready = false;
break;
case 1:
digi_stop(1);
digi_stop(2);
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28", 3);
_G(game).setRoom(651);
_G(player).command_ready = false;
break;
default:
checkExitDown(641);
break;
}
} else {
checkExitDown(641);
}
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM647_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM647_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room647 : public Maze {
public:
Room647() : Maze() {}
~Room647() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,62 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room648.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room648::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 642:
ws_demand_location(_G(my_walker), 320, 346, 11);
break;
case 647:
ws_demand_location(_G(my_walker), -30, 306, 3);
ws_walk(_G(my_walker), 30, 306, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 320, 346, 11);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room648::parser() {
Maze::parser();
checkExitLeft(647);
checkExitDown(642);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM648_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM648_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room648 : public Maze {
public:
Room648() : Maze() {}
~Room648() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,55 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room649.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room649::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 643:
ws_demand_location(_G(my_walker), 334, 347, 11);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 334, 347, 11);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room649::parser() {
Maze::parser();
checkExitDown(643);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM649_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM649_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room649 : public Maze {
public:
Room649() : Maze() {}
~Room649() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,62 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room650.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room650::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 646:
ws_demand_location(_G(my_walker), 320, 350, 11);
break;
case 651:
ws_demand_location(_G(my_walker), 670, 304, 9);
ws_walk(_G(my_walker), 615, 304, nullptr, 1, 9);
player_set_commands_allowed(false);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 320, 350, 11);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room650::parser() {
Maze::parser();
checkExitRight(651);
checkExitDown(646);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM650_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM650_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room650 : public Maze {
public:
Room650() : Maze() {}
~Room650() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,79 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/room651.h"
#include "m4/riddle/vars.h"
#include "m4/riddle/riddle.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room651::init() {
switch (_G(game).previous_room) {
case KERNEL_RESTORING_GAME:
digi_preload("950_s28c");
break;
case 647:
if (_G(flags)[V206])
ws_demand_location(_G(my_walker), 548, 372, 11);
else
ws_demand_location(_G(my_walker), 277, 353, 11);
break;
case 650:
ws_demand_location(_G(my_walker), -30, 310, 3);
ws_walk(_G(my_walker), 20, 310, nullptr, 1, 3);
player_set_commands_allowed(false);
break;
default:
digi_preload("950_s28c");
ws_demand_location(_G(my_walker), 277, 353, 11);
break;
}
digi_play_loop("950_s28c", 3);
}
void Room651::parser() {
Maze::parser();
if (player_said("journal", "SHARK'S TOOTH")) {
if (_G(flags)[V201]) {
digi_play("203r54", 1);
} else {
if (_G(kernel).trigger == 6)
_G(flags)[V201] = 1;
sketchInJournal(nullptr);
}
_G(player).command_ready = false;
} else {
checkExitLeft(650);
checkExitDown(647);
}
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,44 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_ROOM651_H
#define M4_RIDDLE_ROOMS_SECTION6_ROOM651_H
#include "m4/riddle/rooms/section6/section6_maze.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Room651 : public Maze {
public:
Room651() : Maze() {}
~Room651() override {}
void init() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,89 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#include "m4/riddle/rooms/section6/section6.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
const int16 TT_NORMAL_DIRS[] = { 200, 201, 202, 203, 204, -1 };
const char *TT_NORMAL_NAMES[] = {
"tt walker 1", "tt walker 2", "tt walker 3",
"tt walker 4", "tt walker 5"
};
const int16 TT_SHADOW_DIRS[] = { 210, 211, 212, 213, 214, -1 };
const char *TT_SHADOW_NAMES[] = {
"tt walker shadow 1", "tt walker shadow 2",
"tt walker shadow 3", "tt walker shadow 4",
"tt walker shadow 5"
};
Section6::Section6() : Rooms::Section() {
add(603, &_room603);
add(604, &_room604);
add(605, &_room605);
add(607, &_room607);
add(608, &_room608);
add(610, &_room610);
add(615, &_room615);
add(620, &_room620);
add(621, &_room621);
add(622, &_room622);
add(623, &_room623);
add(624, &_room624);
add(625, &_room625);
add(626, &_room626);
add(627, &_room627);
add(628, &_room628);
add(629, &_room629);
add(630, &_room630);
add(631, &_room631);
add(632, &_room632);
add(633, &_room633);
add(634, &_room634);
add(635, &_room635);
add(636, &_room636);
add(637, &_room637);
add(638, &_room638);
add(640, &_room640);
add(641, &_room641);
add(642, &_room642);
add(643, &_room643);
add(644, &_room644);
add(645, &_room645);
add(646, &_room646);
add(647, &_room647);
add(648, &_room648);
add(649, &_room649);
add(650, &_room650);
add(651, &_room651);
}
void Section6::daemon() {
_G(kernel).continue_handling_trigger = true;
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,126 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_H
#define M4_RIDDLE_ROOMS_SECTION6_H
#include "m4/riddle/rooms/section.h"
#include "m4/riddle/rooms/section6/room603.h"
#include "m4/riddle/rooms/section6/room604.h"
#include "m4/riddle/rooms/section6/room605.h"
#include "m4/riddle/rooms/section6/room607.h"
#include "m4/riddle/rooms/section6/room608.h"
#include "m4/riddle/rooms/section6/room610.h"
#include "m4/riddle/rooms/section6/room615.h"
#include "m4/riddle/rooms/section6/room620.h"
#include "m4/riddle/rooms/section6/room621.h"
#include "m4/riddle/rooms/section6/room622.h"
#include "m4/riddle/rooms/section6/room623.h"
#include "m4/riddle/rooms/section6/room624.h"
#include "m4/riddle/rooms/section6/room625.h"
#include "m4/riddle/rooms/section6/room626.h"
#include "m4/riddle/rooms/section6/room627.h"
#include "m4/riddle/rooms/section6/room628.h"
#include "m4/riddle/rooms/section6/room629.h"
#include "m4/riddle/rooms/section6/room630.h"
#include "m4/riddle/rooms/section6/room631.h"
#include "m4/riddle/rooms/section6/room632.h"
#include "m4/riddle/rooms/section6/room633.h"
#include "m4/riddle/rooms/section6/room634.h"
#include "m4/riddle/rooms/section6/room635.h"
#include "m4/riddle/rooms/section6/room636.h"
#include "m4/riddle/rooms/section6/room637.h"
#include "m4/riddle/rooms/section6/room638.h"
#include "m4/riddle/rooms/section6/room640.h"
#include "m4/riddle/rooms/section6/room641.h"
#include "m4/riddle/rooms/section6/room642.h"
#include "m4/riddle/rooms/section6/room643.h"
#include "m4/riddle/rooms/section6/room644.h"
#include "m4/riddle/rooms/section6/room645.h"
#include "m4/riddle/rooms/section6/room646.h"
#include "m4/riddle/rooms/section6/room647.h"
#include "m4/riddle/rooms/section6/room648.h"
#include "m4/riddle/rooms/section6/room649.h"
#include "m4/riddle/rooms/section6/room650.h"
#include "m4/riddle/rooms/section6/room651.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
extern const int16 TT_NORMAL_DIRS[];
extern const char *TT_NORMAL_NAMES[];
extern const int16 TT_SHADOW_DIRS[];
extern const char *TT_SHADOW_NAMES[];
class Section6 : public Section {
private:
Room603 _room603;
Room604 _room604;
Room605 _room605;
Room607 _room607;
Room608 _room608;
Room610 _room610;
Room615 _room615;
Room620 _room620;
Room621 _room621;
Room622 _room622;
Room623 _room623;
Room624 _room624;
Room625 _room625;
Room626 _room626;
Room627 _room627;
Room628 _room628;
Room629 _room629;
Room630 _room630;
Room631 _room631;
Room632 _room632;
Room633 _room633;
Room634 _room634;
Room635 _room635;
Room636 _room636;
Room637 _room637;
Room638 _room638;
Room640 _room640;
Room641 _room641;
Room642 _room642;
Room643 _room643;
Room644 _room644;
Room645 _room645;
Room646 _room646;
Room647 _room647;
Room648 _room648;
Room649 _room649;
Room650 _room650;
Room651 _room651;
public:
Section6();
virtual ~Section6() {}
void daemon() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif

View File

@@ -0,0 +1,99 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
*
*/
#include "m4/riddle/rooms/section6/section6_maze.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Maze::preload() {
_G(player).walker_type = 1;
_G(player).shadow_type = 1;
}
void Maze::daemon() {
if (_G(kernel).trigger == 1) {
player_set_commands_allowed(true);
}
}
void Maze::parser() {
const bool lookFlag = player_said_any("look", "look at");
const bool takeFlag = player_said("take");
if ((player_said("gear") || lookFlag) && player_said("STATUE")) {
digi_play("623R02", 1, 255, -1, 623);
} else if (lookFlag && player_said("RED BOULDER")) {
digi_play("623R01", 1, 255, -1, 623);
} else if (lookFlag && player_said_any("GREY ROCK", "STONE")) {
digi_play("623R03", 1);
} else if (lookFlag && player_said("CLAY")) {
digi_play("623R04", 1);
} else if (lookFlag && player_said(" ")) {
digi_play("623R05", 1);
} else if (lookFlag && player_said("STARFISH")) {
digi_play("625R01", 1);
} else if (lookFlag && player_said("SEAHORSE")) {
digi_play("626R01", 1);
} else if (lookFlag && player_said("SCALLOP")) {
digi_play("644R01", 1);
} else if (lookFlag && player_said("SHARK'S TOOTH")) {
digi_play("651R01", 1);
} else if (takeFlag && player_said("clay")) {
digi_play("607r08", 1);
} else if (player_said("HORN/PULL CORD/WATER", "CLAY")) {
digi_play("com136", 1, 255, -1, 997);
} else {
return;
}
_G(player).command_ready = false;
}
void Maze::checkExit(const char *action, int newRoom) {
if (player_said(action)) {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
disable_player_commands_and_fade_init(1);
_G(player).command_ready = false;
break;
case 1:
digi_stop(1);
digi_stop(2);
adv_kill_digi_between_rooms(false);
digi_play_loop("950_s28C", 3, 90);
_G(game).setRoom(newRoom);
_G(player).command_ready = false;
break;
default:
break;
}
}
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4

View File

@@ -0,0 +1,62 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef M4_RIDDLE_ROOMS_SECTION6_MAZE_H
#define M4_RIDDLE_ROOMS_SECTION6_MAZE_H
#include "m4/riddle/rooms/room.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
class Maze : public Room {
private:
void checkExit(const char *action, int newRoom);
protected:
void checkExitLeft(int newRoom) {
checkExit("exit left", newRoom);
}
void checkExitRight(int newRoom) {
checkExit("exit right", newRoom);
}
void checkExitUp(int newRoom) {
checkExit("exit up", newRoom);
}
void checkExitDown(int newRoom) {
checkExit("exit down", newRoom);
}
public:
Maze() : Room() {}
~Maze() override {}
void preload() override;
void daemon() override;
void parser() override;
};
} // namespace Rooms
} // namespace Riddle
} // namespace M4
#endif