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

dreammaster noreply at scummvm.org
Sat Aug 17 04:39:50 UTC 2024


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

Summary:
a96a66b8cf M4: RIDDLE: Room 404 finished


Commit: a96a66b8cfd6ea336219335193f8a06de1a7d054
    https://github.com/scummvm/scummvm/commit/a96a66b8cfd6ea336219335193f8a06de1a7d054
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-16T21:39:23-07:00

Commit Message:
M4: RIDDLE: Room 404 finished

Nice, one of the smaller rooms

Changed paths:
    engines/m4/riddle/rooms/section4/room404.cpp


diff --git a/engines/m4/riddle/rooms/section4/room404.cpp b/engines/m4/riddle/rooms/section4/room404.cpp
index 1ecb11b633e..8183c7fd4fd 100644
--- a/engines/m4/riddle/rooms/section4/room404.cpp
+++ b/engines/m4/riddle/rooms/section4/room404.cpp
@@ -114,7 +114,7 @@ void Room404::init() {
 #ifdef KITTY_SCREAMING
 		const char *KITTY = "SCREAMING";
 #else
-		const char *KITTY = nullptr;
+		const char *KITTY = "";
 #endif
 		_machine1 = triggerMachineByHash_3000(8, 10, NORMAL_DIRS, SHADOW_DIRS,
 			380, 421, 1, triggerMachineByHashCallback3000, "BUTLER_walker");
@@ -129,7 +129,273 @@ void Room404::init() {
 }
 
 void Room404::daemon() {
-	// TODO
+	int frame;
+
+	switch (_G(kernel).trigger) {
+	case 20:
+		ws_walk(370, 347, nullptr, -1, 1);
+		break;
+
+	case 21:
+		sendWSMessage_60000(_machine1);
+		_butlerTalks = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0x900, 0,
+			triggerMachineByHashCallbackNegative, "BUTLER talks rip");
+		sendWSMessage_10000(1, _butlerTalks, _butlerTurns7, 1, 10, 23,
+			_butlerTalkLoop, 1, 1, 0);
+		break;
+
+	case 23:
+		if (!_G(flags)[V337]) {
+			digi_play("404r03", 1, 255, 24);
+			_G(flags)[V337] = 1;
+			_val7 = 2000;
+			_val8 = 2102;
+			kernel_timing_trigger(1, 110);
+		} else {
+			digi_play("404r02", 1, 255, 30);
+		}
+		break;
+
+	case 24:
+		_val8 = 2102;
+		digi_play("404u01", 1, 255, 25);
+		break;
+
+	case 25:
+		_val8 = 2102;
+		digi_play("404r04", 1, 255, 26);
+		break;
+
+	case 26:
+		_val8 = 2101;
+		digi_play("404u02", 1, 255, 27);
+		break;
+
+	case 27:
+		_val8 = 2102;
+		digi_play("404r05", 1, 255, 28);
+		break;
+
+	case 28:
+		_val8 = 2101;
+		digi_play("404u03", 1, 255, 29);
+		break;
+
+	case 29:
+		_val8 = 2103;
+		digi_play("404r06", 1, 255, 30);
+		break;
+
+	case 30:
+		digi_play("404u04", 1);
+		sendWSMessage_10000(1, _butlerTalks, _butlerTurns9, 1, 43, 32,
+			_butlerTurns9, 43, 43, 0);
+		break;
+
+	case 32:
+		terminateMachineAndNull(_butlerTalks);
+		_machine1 = triggerMachineByHash_3000(8, 10, NORMAL_DIRS, SHADOW_DIRS,
+			390, 332, 9, triggerMachineByHashCallback3000, "BUTLER_walker");
+		kernel_timing_trigger(270, 33);
+		break;
+
+	case 33:
+		ws_walk(58, 347, nullptr, -1, 9);
+		kernel_timing_trigger(90, 34);
+		break;
+
+	case 34:
+		disable_player_commands_and_fade_init(35);
+		break;
+
+	case 35:
+		midi_stop();
+		digi_stop(3);
+		_G(game).setRoom(405);
+		break;
+
+	case 40:
+		ws_walk(370, 347, nullptr, -1, 1);
+		break;
+
+	case 42:
+		sendWSMessage_60000(_machine1);
+		_butlerTalks = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0x900, 0,
+			triggerMachineByHashCallbackNegative, "BUTLER talks rip");
+		sendWSMessage_10000(1, _butlerTalks, _butlerTurns7, 1, 10, 43,
+			_butlerTalkLoop, 1, 1, 0);
+		break;
+
+	case 43:
+		if (!_G(flags)[GLB_TEMP_12] || _G(flags)[V334]) {
+			player_set_commands_allowed(true);
+		} else {
+			_G(flags)[V334] = 1;
+			kernel_timing_trigger(1, 44);
+		}
+		break;
+
+	case 44:
+		digi_play("404r20", 1, 255, 45);
+		_val7 = 2000;
+		_val8 = 2102;
+		kernel_timing_trigger(1, 110);
+		break;
+
+	case 45:
+		_val8 = 2101;
+		digi_play("404u10", 1, 255, 46);
+		break;
+
+	case 46:
+		_val8 = 2102;
+		digi_play("404r21", 1, 255, 47);
+		break;
+
+	case 47:
+		_val8 = 2101;
+		digi_play("404u11", 1, 255, 48);
+		break;
+
+	case 48:
+		_val8 = 2102;
+		digi_play("404r22", 1, 255, 49);
+		ws_walk(368, 349, nullptr, -1, 8);
+		break;
+
+	case 49:
+	case 50:
+	case 60:
+		player_set_commands_allowed(true);
+		break;
+
+	case 70:
+		if (++_G(flags)[V128] == 1)
+			digi_play("404u12", 1, 255, 72);
+		else
+			digi_play("404u13", 1, 255, 72);
+
+		_val8 = 2101;
+		break;
+
+	case 72:
+		_val8 = 2102;
+		ws_walk(174, 268, nullptr, 73, 9);
+
+		if (_G(flags)[V128] == 1)
+			digi_play("404r23", 1);
+		break;
+
+	case 73:
+		disable_player_commands_and_fade_init(74);
+		break;
+
+	case 74:
+		midi_stop();
+		digi_stop(3);
+		_G(game).setRoom(406);
+		break;
+
+	case 100:
+		kernel_timing_trigger(1, 102);
+		break;
+
+	case 101:
+		_val5 = 1000;
+		_val6 = 1105;
+		break;
+
+	case 102:
+		if (_val2 != -1) {
+			kernel_timing_trigger(1, _val2);
+			_val2 = -1;
+		} else {
+			kernel_timing_trigger(1, 103);
+		}
+		break;
+
+	case 103:
+		if (_val5 == 1000) {
+			switch (_val6) {
+			case 1100:
+				player_set_commands_allowed(false);
+				_val7 = 2000;
+				_val8 = 2100;
+				kernel_timing_trigger(1, 110);
+				_val6 = 1103;
+				kernel_timing_trigger(1, 102);
+
+				conv_load("conv404a", 10, 10, 101);
+				conv_export_pointer_curr(&_G(flags)[V135], 0);
+				conv_export_value_curr(player_been_here(407) ? 1 : 0, 1);
+				conv_play();
+				break;
+
+			case 1102:
+			case 1103:
+				kernel_timing_trigger(10, 102);
+				break;
+
+			case 1105:
+				_val8 = 2103;
+				player_set_commands_allowed(true);
+				break;
+
+			default:
+				break;
+			}
+		}
+		break;
+
+	case 110:
+		if (_val7 == 2000) {
+			switch (_val8) {
+			case 2100:
+			case 2101:
+			case 2102:
+			case 2103:
+				if (_val4 != -1) {
+					kernel_timing_trigger(1, _val4);
+					_val4 = -1;
+				} else {
+					kernel_timing_trigger(1, 111);
+				}
+				break;
+			default:
+				break;
+			}
+		}
+		break;
+
+	case 111:
+		if (_val7 == 2000) {
+			switch (_val8) {
+			case 2100:
+			case 2102:
+				sendWSMessage_10000(1, _butlerTalks, _butlerTalkLoop, 1, 1, 110,
+					_butlerTalkLoop, 1, 1, 0);
+				break;
+
+			case 2101:
+				frame = imath_ranged_rand(12, 21);
+				sendWSMessage_10000(1, _butlerTalks, _butlerTalkLoop, frame, frame, 110,
+					_butlerTalkLoop, frame, frame, 0);
+				break;
+
+			case 2103:
+				sendWSMessage_10000(1, _butlerTalks, _butlerTalkLoop, 1, 1, -1,
+					_butlerTalkLoop, 1, 1, 0);
+				break;
+
+			default:
+				break;
+			}
+		}
+		break;
+
+	default:
+		break;
+	}
 }
 
 void Room404::pre_parser() {




More information about the Scummvm-git-logs mailing list