[Scummvm-git-logs] scummvm master -> 04473672e076d37a216722431043e8d36159332e

Strangerke noreply at scummvm.org
Sat Feb 8 06:14:19 UTC 2025


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:
71993450d5 M4: RIDDLE: Implement daemon in room 810
04473672e0 M4: RIDDLE: Partial implementatin of Room810::parser (up to opcode 52


Commit: 71993450d5ea6b7408e82f75bace3d6148e42b18
    https://github.com/scummvm/scummvm/commit/71993450d5ea6b7408e82f75bace3d6148e42b18
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-02-08T07:14:07+01:00

Commit Message:
M4: RIDDLE: Implement daemon in room 810

Changed paths:
    engines/m4/riddle/rooms/section8/room810.cpp
    engines/m4/riddle/rooms/section8/room810.h


diff --git a/engines/m4/riddle/rooms/section8/room810.cpp b/engines/m4/riddle/rooms/section8/room810.cpp
index 80bab4ac1cf..be5c7922aab 100644
--- a/engines/m4/riddle/rooms/section8/room810.cpp
+++ b/engines/m4/riddle/rooms/section8/room810.cpp
@@ -41,7 +41,7 @@ void Room810::init() {
 	_ripleyTakesJadeSealFromTombSeries = series_load("RIPLEY TAKES JADE SEAL FROM TOMB", -1, nullptr);
 	_ripPos3LookAroundSeries = series_load("RIP POS 3 LOOK AROUND", -1, nullptr);
 	_ripTrekHandTalkPos3Series = series_load("RIP TREK HAND TALK POS3", -1, nullptr);
-	_810FireFlickerSeries = series_load("810 fire flicker", -1, nullptr);	
+	_810FireFlickerSeries = series_load("810 fire flicker", -1, nullptr);
 	_810LitUrnSeries = series_load("810 lit urn", -1, nullptr);
 	_810MercSeries = series_load("810merc", -1, nullptr);
 	_810BlockSlidesOutSeries = series_load("810 block slides out", -1, nullptr);
@@ -58,8 +58,8 @@ void Room810::init() {
 	_field0 = 0;
 	player_set_commands_allowed(false);
 	ws_demand_facing(_G(my_walker), 3);
-	ws_demand_location(_G(my_walker), 55, 318);	
-	ws_walk(_G(my_walker), 160, 318, nullptr, 1, 3, true);	
+	ws_demand_location(_G(my_walker), 55, 318);
+	ws_walk(_G(my_walker), 160, 318, nullptr, 1, 3, true);
 }
 
 void Room810::pre_parser() {
@@ -78,9 +78,41 @@ void Room810::pre_parser() {
 }
 
 void Room810::parser() {
+	// TODO Not implemented yet
 }
 
 void Room810::daemon() {
+	switch (_G(kernel).trigger) {
+	case 1:
+		_ripLooksAroundAndNodsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 160, 318, 46, 768, false, triggerMachineByHashCallback, "rip looks around and nods");
+		sendWSMessage_10000(1, _ripLooksAroundAndNodsMach, 1, _ripPos3LookAroundSeries, 16, 51, _ripPos3LookAroundSeries, 17, 20, 4);
+		_safariShadow3Mach = series_show("SAFARI SHADOW 3", 1280, 16, -1, -1, 0, 46, 160, 318);
+
+		break;
+
+	case 51:
+		sendWSMessage_190000(_ripLooksAroundAndNodsMach, 20);
+		digi_play("810r01", 1, 255, 52, 810);
+
+		break;
+
+	case 52:
+		sendWSMessage_190000(_ripLooksAroundAndNodsMach, 12);
+		sendWSMessage_10000(1, _ripLooksAroundAndNodsMach, 16, _ripPos3LookAroundSeries, 1, 53, _ripPos3LookAroundSeries, 1, 1, 0);
+
+		break;
+
+	case 53:
+		terminateMachine(_ripLooksAroundAndNodsMach);
+		terminateMachine(_safariShadow3Mach);
+		ws_unhide_walker(_G(my_walker));
+		player_set_commands_allowed(true);
+
+		break;
+
+	default:
+		break;
+	}
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section8/room810.h b/engines/m4/riddle/rooms/section8/room810.h
index 1a298a80ec8..ab490648a32 100644
--- a/engines/m4/riddle/rooms/section8/room810.h
+++ b/engines/m4/riddle/rooms/section8/room810.h
@@ -51,6 +51,8 @@ private:
 	int32 _ripTrekHandTalkPos3Series = 0;
 
 	machine *_810SealMach = nullptr;
+	machine *_ripLooksAroundAndNodsMach = nullptr;
+	machine *_safariShadow3Mach = nullptr;
 };
 
 } // namespace Rooms


Commit: 04473672e076d37a216722431043e8d36159332e
    https://github.com/scummvm/scummvm/commit/04473672e076d37a216722431043e8d36159332e
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-02-08T07:14:07+01:00

Commit Message:
M4: RIDDLE: Partial implementatin of Room810::parser (up to opcode 52

Changed paths:
    engines/m4/riddle/rooms/section8/room810.cpp
    engines/m4/riddle/rooms/section8/room810.h


diff --git a/engines/m4/riddle/rooms/section8/room810.cpp b/engines/m4/riddle/rooms/section8/room810.cpp
index be5c7922aab..72d0aa7c4f1 100644
--- a/engines/m4/riddle/rooms/section8/room810.cpp
+++ b/engines/m4/riddle/rooms/section8/room810.cpp
@@ -27,6 +27,13 @@ namespace M4 {
 namespace Riddle {
 namespace Rooms {
 
+static const char *LOOK[][2] = {
+	{"sarcophagus", "810r03"},
+	{"grate", "810r05"},
+	{"large urn", "810r18"},
+	{nullptr, nullptr}
+};
+
 void Room810::preload() {
 	LoadWSAssets("OTHER SCRIPT", _G(master_palette));
 
@@ -78,7 +85,138 @@ void Room810::pre_parser() {
 }
 
 void Room810::parser() {
-	// TODO Not implemented yet
+	const bool ecx = player_said_any("look", "look at");
+	const bool takeFl = player_said_any("talk", "talk to", "take");
+	const bool gearFl = player_said("gear");
+	const bool goFl = player_said("go");
+
+	if (ecx && _G(walker).ripley_said(LOOK)) {
+		// Nothing: ripley_said triggers DIGI_PLAY if a match is found
+	} else if (ecx && player_said("IMPERIAL SEAL")) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			if (_field0 == 0) {
+				player_set_commands_allowed(false);
+				digi_play("810r04", 1, 255, 1, 810);
+			} else {
+				digi_play("810r04", 1, 255, -1, 810);
+			}
+
+			break;
+		case 1:
+			digi_play("810r04a", 1, 255, 2, 810);
+			_field0 = 1;
+
+			break;
+
+		case 2:
+			player_set_commands_allowed(true);
+			break;
+
+		default:
+			break;
+		}
+	} else if (ecx && player_said("mausoleum")) {
+		// Nothing -> already covered by ripley_said(LOOK)
+	} else if (ecx && player_said("urn")) {
+		digi_play("Com061_1", 1, 255, -1, 997);
+	} else if (goFl && player_said("outside")) {
+		digi_play("810r06", 1, 255, -1, 810);
+	} else if (gearFl && player_said("large urn")) {
+		digi_play("com072", 1, 255, -1, -1);
+	} else if (gearFl && player_said("urn")) {
+		digi_play("com073", 1, 255, -1, -1);
+	} else if ((takeFl || gearFl) && player_said("IMPERIAL SEAL")) {
+		// TODO not implemented yet
+	} else if (player_said("journal") && !takeFl && !ecx && !gearFl) {
+		digi_play("com042", 1, 255, -1, 950);
+	} else if (player_said("walk", "mausoleum")) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			player_set_commands_allowed(false);
+			interface_hide();
+			digi_play("810r07", 1, 255, 18, 810);
+			kernel_timing_trigger(180, 10, nullptr);
+
+			break;
+
+		case 10:
+			_ripLooksAroundAndNodsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 415, 312, 46, 512, false, triggerMachineByHashCallback, "rip takes seal");
+			ws_hide_walker(_G(my_walker));
+			sendWSMessage_10000(1, _ripLooksAroundAndNodsMach, 1, _ripTrekHandTalkPos3Series, 6, -1, _ripTrekHandTalkPos3Series, 7, 10, 4);
+			_safariShadow3Mach = series_show("SAFARI SHADOW 3", 1280, 16, -1, -1, 0, 46, 415, 312);
+
+			break;
+
+		case 18:
+			sendWSMessage_10000(1, _ripLooksAroundAndNodsMach, 6, _ripTrekHandTalkPos3Series, 1, -1, _ripTrekHandTalkPos3Series, 1, 1, 0);
+			kernel_timing_trigger(15, 20, nullptr);
+
+			break;
+
+		case 20:
+			digi_play("810r07A", 1, 255, 40, 810);
+			kernel_timing_trigger(50, 22, nullptr);
+
+			break;
+
+		case 22:
+			sendWSMessage_10000(1, _ripLooksAroundAndNodsMach, 1, _ripTrekHandTalkPos3Series, 6, -1, _ripTrekHandTalkPos3Series, 7, 10, 4);
+			kernel_timing_trigger(540, 25, nullptr);
+
+			break;
+
+		case 24:
+			sendWSMessage_10000(1, _ripLooksAroundAndNodsMach, 6, _ripTrekHandTalkPos3Series, 1, -1, _ripTrekHandTalkPos3Series, 1, 1, 0);
+			break;
+
+		case 40:
+			terminateMachine(_ripLooksAroundAndNodsMach);
+			terminateMachine(_safariShadow3Mach);
+			terminateMachine(_810SealMach);
+			_ripLooksAroundAndNodsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 512, false, triggerMachineByHashCallback, "rip takes seal");
+			sendWSMessage_10000(1, _ripLooksAroundAndNodsMach, 1, _ripleyTakesJadeSealFromTombSeries, 38, 48, _ripleyTakesJadeSealFromTombSeries, 38, 38, 0);
+
+			break;
+
+		case 48:
+			_blockSlidesOutMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "block slides out");
+			sendWSMessage_10000(1, _blockSlidesOutMach, 1, _810BlockSlidesOutSeries, 14, -1, _810BlockSlidesOutSeries, 14, 14, 0);
+			sendWSMessage_190000(_blockSlidesOutMach, 12);
+			digi_play("810_s01", 3, 255, 60, 810);
+			kernel_timing_trigger(40, 50, nullptr);
+
+			break;
+
+		case 50:
+			sendWSMessage_10000(1, _ripLooksAroundAndNodsMach, 39, _ripleyTakesJadeSealFromTombSeries, 45, 51, _ripleyTakesJadeSealFromTombSeries, 45, 45, 0);
+			break;
+
+		case 51:
+			kernel_timing_trigger(45, 52, nullptr);
+			break;
+
+		case 52:
+			digi_play("810r08", 1, 255, 53, 810);
+			break;
+
+		case 53:
+		case 54:
+		case 55:
+		case 56:
+		case 58:
+		case 60:
+		case 70:
+		case 110:
+		case 130:
+		case 150:
+		default:
+			break;
+		}
+	} else
+		return;
+
+	_G(player).command_ready = false;
 }
 
 void Room810::daemon() {
diff --git a/engines/m4/riddle/rooms/section8/room810.h b/engines/m4/riddle/rooms/section8/room810.h
index ab490648a32..dd2304db4db 100644
--- a/engines/m4/riddle/rooms/section8/room810.h
+++ b/engines/m4/riddle/rooms/section8/room810.h
@@ -51,6 +51,7 @@ private:
 	int32 _ripTrekHandTalkPos3Series = 0;
 
 	machine *_810SealMach = nullptr;
+	machine *_blockSlidesOutMach = nullptr;
 	machine *_ripLooksAroundAndNodsMach = nullptr;
 	machine *_safariShadow3Mach = nullptr;
 };




More information about the Scummvm-git-logs mailing list