[Scummvm-git-logs] scummvm master -> c361905450d08ec48b3504ebf89ed27611fba7c2

dreammaster noreply at scummvm.org
Thu Sep 26 05:19:39 UTC 2024


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
40a96b0469 M4: RIDDLE: Finished room 607
c361905450 M4: RIDDLE: Room 608 init


Commit: 40a96b04694136e013d83e6b9c3b67c17de72cc7
    https://github.com/scummvm/scummvm/commit/40a96b04694136e013d83e6b9c3b67c17de72cc7
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-25T22:19:33-07:00

Commit Message:
M4: RIDDLE: Finished room 607

Changed paths:
    engines/m4/riddle/rooms/section6/room607.cpp
    engines/m4/riddle/rooms/section6/room607.h


diff --git a/engines/m4/riddle/rooms/section6/room607.cpp b/engines/m4/riddle/rooms/section6/room607.cpp
index 90486338e88..3baa31ef095 100644
--- a/engines/m4/riddle/rooms/section6/room607.cpp
+++ b/engines/m4/riddle/rooms/section6/room607.cpp
@@ -27,12 +27,368 @@ 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(316, 358, 1);
+		break;
+
+	case 638:
+		ws_demand_location(-30, 334, 3);
+		ws_walk(32, 334, nullptr, 1, 3);
+		player_set_commands_allowed(false);
+		break;
+
+	case 640:
+		ws_demand_location(670, 288, 9);
+		ws_walk(604, 288, nullptr, 1, 9);
+		player_set_commands_allowed(false);
+		break;
+
+	case 645:
+		ws_demand_location(124, 308, 5);
+		break;
+
+	default:
+		digi_preload("950_s28C");
+		ws_demand_location(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() {
+	bool lookFlag = player_said_any("look", "look at");
+	bool takeFlag = player_said("take");
+	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() {
+	bool lookFlag = player_said_any("look", "look at");
+	bool takeFlag = player_said("take");
+	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(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);
+			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(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(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;
+
+			break;
+		default:
+			break;
+		}
+	} else if (player_said("HORN/PULL CORD/WATER", "CLAY") && !_G(flags)[V193]) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			ws_walk(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") ) {
+		// 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
diff --git a/engines/m4/riddle/rooms/section6/room607.h b/engines/m4/riddle/rooms/section6/room607.h
index b5245a946e0..d323b34c0d0 100644
--- a/engines/m4/riddle/rooms/section6/room607.h
+++ b/engines/m4/riddle/rooms/section6/room607.h
@@ -29,12 +29,29 @@ 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


Commit: c361905450d08ec48b3504ebf89ed27611fba7c2
    https://github.com/scummvm/scummvm/commit/c361905450d08ec48b3504ebf89ed27611fba7c2
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-25T22:19:33-07:00

Commit Message:
M4: RIDDLE: Room 608 init

Changed paths:
    engines/m4/riddle/rooms/section6/room603.cpp
    engines/m4/riddle/rooms/section6/room608.cpp
    engines/m4/riddle/rooms/section6/room608.h


diff --git a/engines/m4/riddle/rooms/section6/room603.cpp b/engines/m4/riddle/rooms/section6/room603.cpp
index 043a0b776d8..5a14c79c20e 100644
--- a/engines/m4/riddle/rooms/section6/room603.cpp
+++ b/engines/m4/riddle/rooms/section6/room603.cpp
@@ -31,12 +31,12 @@ namespace Rooms {
 static const int16 NORMAL_DIRS1[] = { 200, -1 };
 static const char *NORMAL_NAMES1[] = { "shen guo walker 3" };
 static const int16 SHADOW_DIRS1[] = { 210, -1 };
-static const char *SECTION6_SHADOW_NAMES1[] = { "shen guo shadow 3" };
+static const char *SHADOW_NAMES1[] = { "shen guo shadow 3" };
 
 static const int16 NORMAL_DIRS2[] = { 220, -1 };
 static const char *NORMAL_NAMES2[] = { "kuang walker 2" };
 static const int16 SHADOW_DIRS2[] = { 230, -1 };
-static const char *SECTION6_SHADOW_NAMES2[] = { "kuangs shadow 2" };
+static const char *SHADOW_NAMES2[] = { "kuangs shadow 2" };
 
 
 static const char *SAID[][2] = {
@@ -89,14 +89,14 @@ void Room603::init() {
 		_shed = series_show("653 FIRST FRAME SHED", 0xf00, 16);
 
 		ws_walk_load_walker_series(NORMAL_DIRS1, NORMAL_NAMES1);
-		ws_walk_load_shadow_series(SHADOW_DIRS1, SECTION6_SHADOW_NAMES1);
+		ws_walk_load_shadow_series(SHADOW_DIRS1, SHADOW_NAMES1);
 
 		_shenWalker = triggerMachineByHash_3000(8, 12, NORMAL_DIRS1, SHADOW_DIRS1, 525, 238, 3,
 			triggerMachineByHashCallback3000, "shen suit gun walker");
 		sendWSMessage_10000(_shenWalker, 535, 235, 3, 10, 1);
 
 		ws_walk_load_walker_series(NORMAL_DIRS2, NORMAL_NAMES2);
-		ws_walk_load_shadow_series(SHADOW_DIRS2, SECTION6_SHADOW_NAMES2);
+		ws_walk_load_shadow_series(SHADOW_DIRS2, SHADOW_NAMES2);
 
 		_kuangWalker = triggerMachineByHash_3000(8, 13, NORMAL_DIRS2, SHADOW_DIRS2, 554, 245, 2,
 			triggerMachineByHashCallback3000, "kuang suit walker");
diff --git a/engines/m4/riddle/rooms/section6/room608.cpp b/engines/m4/riddle/rooms/section6/room608.cpp
index be82f7f085d..2b5f8477b83 100644
--- a/engines/m4/riddle/rooms/section6/room608.cpp
+++ b/engines/m4/riddle/rooms/section6/room608.cpp
@@ -20,19 +20,196 @@
  */
 
 #include "m4/riddle/rooms/section6/room608.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"
 
 namespace M4 {
 namespace Riddle {
 namespace Rooms {
 
+static const int16 NORMAL_DIRS1[] = { 220, 221, -1 };
+static const char *NORMAL_NAMES1[] = { "oldwk1", "oldwk3" };
+static const int16 SHADOW_DIRS1[] = { 220, 231, -1 };
+static const char *SHADOW_NAMES1[] = { "tt walker shadow 1", "oldwk3s" };
+
+
 void Room608::init() {
+	if (_G(flags)[V186] != 2) {
+		_rp09 = series_load("608rp09");
+
+		if (!inv_object_is_here("POLE") || _G(flags)[V186])
+			kernel_load_variant("608lock1");
+		else
+			kernel_load_variant("608lock2");
+
+		_old01 = series_load("608old01");
+		_old02 = series_load("608old02");
+		_old05 = series_load("608old05");
+		_old08 = series_load("608old08");
+		_old05a = series_load("608old05a");
+		_old05b = series_load("608old05b");
+		_old05c = series_load("608old05c");
+		_old05d = series_load("608old05d");
+		_old05f = series_load("608old05f");
+
+		ws_walk_load_walker_series(NORMAL_DIRS1, NORMAL_NAMES1);
+		ws_walk_load_shadow_series(SHADOW_DIRS1, SHADOW_NAMES1);
+		_ol = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x200, 0,
+			triggerMachineByHashCallbackNegative, "ol");
+		sendWSMessage_10000(1, _ol, _old01, 1, 1, 200, _old01, 1, 1, 0);
+		_val1 = 0;
+		_val2 = 0;
+		_val3 = 0;
+	}
+
+	if (inv_object_is_here("DRIFTWOOD STUMP")) {
+		_stump = series_show("608ST_DN", 0xf00, 16);
+		hotspot_set_active("DRIFTWOOD STUMP ", false);
+	} else {
+		hotspot_set_active("DRIFTWOOD STUMP", false);
+	}
+
+	if (inv_object_is_here("LIGHTER") && _G(flags)[V203] >= 7) {
+		_lighter = series_show("608LITER", 0xf00, 16);
+	} else {
+		hotspot_set_active("LIGHTER", false);
+	}
+
+	if (!inv_object_is_here("DRIFTWOOD STUMP")) {
+		hotspot_set_active("DRIFTWOOD STUMP ", false);
+		hotspot_set_active("DRIFTWOOD STUMP  ", false);
+	} else if (_G(flags)[V186]) {
+		hotspot_set_active("DRIFTWOOD STUMP ", false);
+	} else {
+		_stump = series_show("608ST_UP", 0x400, 16);
+		hotspot_set_active("DRIFTWOOD STUMP  ", false);
+	}
+
+	if (!inv_object_is_here("POLE")) {
+		hotspot_set_active("POLE", false);
+		hotspot_set_active("POLE ", false);
+	} else if (_G(flags)[V186]) {
+		hotspot_set_active("POLE", false);
+	} else {
+		_pole = series_show("608POLE", 0x400, 16);
+		hotspot_set_active("POLE ", false);
+	}
+
+	if (inv_object_is_here("DRIFTWOOD PUFFIN")) {
+		_puffin = series_show("608PUFIN", 0x400, 16);
+	} else {
+		hotspot_set_active("DRIFTWOOD PUFFIN", false);
+	}
+
+	switch (_G(flags)[V186]) {
+	case 0:
+		hotspot_set_active("hole in hillside", false);
+		_end1 = series_show("608START", 0xf00, 16);
+		hotspot_set_active("STATUE ", false);
+		digi_preload("608_s01");
+		digi_preload("608_s01a");
+		break;
+	case 1:
+		hotspot_set_active("hole in hillside", false);
+		_end1 = series_show("608END", 0xf00, 16);
+		hotspot_set_active("STATUE", false);
+		hotspot_set_active("stone", false);
+		digi_preload("950_s37");
+		break;
+	case 2:
+		hotspot_set_active("hole in hillside", true);
+		_end1 = series_show("608END", 0xf00, 16);
+		_end2 = series_show("608END2", 0xe00, 16);
+		hotspot_set_active("STATUE", false);
+		hotspot_set_active("stone", false);
+		hotspot_set_active("old woman", false);
+	default:
+		break;
+	}
+
+	if (_G(flags)[V203] == 2) {
+		_tt01 = series_load("608TT01");
+		_rp01 = series_load("608RP01");
+
+		player_set_commands_allowed(false);
+		_G(player).disable_hyperwalk = true;
+		ws_demand_location(-30, 345, 1);
+		ws_walk(43, 345, nullptr, 18, 3);
+	
+		ws_walk_load_walker_series(SECTION6_NORMAL_DIRS, SECTION6_NORMAL_NAMES);
+		ws_walk_load_shadow_series(SECTION6_SHADOW_DIRS, SECTION6_SHADOW_NAMES);
+
+		_tt = triggerMachineByHash_3000(8, 9, SECTION6_NORMAL_DIRS, SECTION6_SHADOW_DIRS,
+			-30, 324, 3, triggerMachineByHashCallback3000, "tt walker");
+		sendWSMessage_10000(_tt, 105, 324, 5, 20, 1);
+	} else if (_G(flags)[V203] == 6) {
+		_tt02 = series_load("606TT02");
+		_tt03 = series_load("608TT03");
+		_tt05 = series_load("608TT05");
+		_ripHandChin = series_load("RIP TREK HAND CHIN POS3");
+		_ripTalker = series_load("RIP TREK TALKER POS3");
+		_all5a = series_load("608all5a");
+		_loop0 = series_load("608loop0");
+		_loop1 = series_load("608loop1");
+
+		player_set_commands_allowed(false);
+		_G(player).disable_hyperwalk = true;
+		ws_demand_location(-30, 345, 1);
+		kernel_timing_trigger(1, 698);
+
+		ws_walk_load_walker_series(SECTION6_NORMAL_DIRS, SECTION6_NORMAL_NAMES);
+		ws_walk_load_shadow_series(SECTION6_SHADOW_DIRS, SECTION6_SHADOW_NAMES);
+
+		_tt = triggerMachineByHash_3000(8, 9, SECTION6_NORMAL_DIRS, SECTION6_SHADOW_DIRS,
+			-30, 324, 3, triggerMachineByHashCallback3000, "tt walker");
+		sendWSMessage_10000(_tt, 103, 318, 3, 700, 1);
+	}
+
+	switch (_G(game).previous_room) {
+	case KERNEL_RESTORING_GAME:
+		digi_preload("950_s28b");
+		break;
+
+	case 603:
+		digi_preload("950_s28b");
+		digi_stop(3);
+		digi_unload("950_s28a");
+		break;
+
+	case 605:
+		digi_preload("950_s28b");
+		digi_stop(3);
+		digi_unload("950_s28");
+
+		if (_G(flags)[V203] != 2) {
+			player_set_commands_allowed(false);
+			ws_demand_location(-30, 345, 3);
+			ws_walk(43, 345, nullptr, 1, 3);
+		}
+		break;
+
+	default:
+		digi_preload("950_s28b");
+		break;
+	}
+
+	series_play("608surf", 0xf00, 0, -1, 15, -1, 100, 0, 0, 0, -1);
+	digi_play_loop("950_s28b", 3, 90);
 }
 
 void Room608::daemon() {
 }
 
+void Room608::pre_parser() {
+
+}
+
+void Room608::parser() {
+
+}
+
 } // namespace Rooms
 } // namespace Riddle
 } // namespace M4
diff --git a/engines/m4/riddle/rooms/section6/room608.h b/engines/m4/riddle/rooms/section6/room608.h
index 3e6ff45cdb6..2733ce6725a 100644
--- a/engines/m4/riddle/rooms/section6/room608.h
+++ b/engines/m4/riddle/rooms/section6/room608.h
@@ -29,12 +29,47 @@ namespace Riddle {
 namespace Rooms {
 
 class Room608 : public Room {
+private:
+	int _rp01 = 0;
+	int _rp09 = 0;
+	int _ripHandChin = 0;
+	int _ripTalker = 0;
+	int _tt01 = 0;
+	int _tt02 = 0;
+	int _tt03 = 0;
+	int _tt05 = 0;
+	int _old01 = 0;
+	int _old02 = 0;
+	int _old05 = 0;
+	int _old08 = 0;
+	int _old05a = 0;
+	int _old05b = 0;
+	int _old05c = 0;
+	int _old05d = 0;
+	int _old05f = 0;
+	int _all5a = 0;
+	int _loop0 = 0;
+	int _loop1 = 0;
+	machine *_tt = nullptr;
+	machine *_ol = nullptr;
+	machine *_stump = nullptr;
+	machine *_lighter = nullptr;
+	machine *_pole = nullptr;
+	machine *_puffin = nullptr;
+	machine *_end1 = nullptr;
+	machine *_end2 = nullptr;
+	int _val1 = 0;
+	int _val2 = 0;
+	int _val3 = 0;
+
 public:
 	Room608() : Room() {}
 	~Room608() override {}
 
 	void init() override;
 	void daemon() override;
+	void pre_parser() override;
+	void parser() override;
 };
 
 } // namespace Rooms




More information about the Scummvm-git-logs mailing list