[Scummvm-git-logs] scummvm master -> 3fef9686ab3b7e6608b7520ea4493382df2645c2

dreammaster noreply at scummvm.org
Wed Sep 4 04:49:18 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:
3fef9686ab M4: RIDDLE: Beginnings of room 501 daemon


Commit: 3fef9686ab3b7e6608b7520ea4493382df2645c2
    https://github.com/scummvm/scummvm/commit/3fef9686ab3b7e6608b7520ea4493382df2645c2
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-03T21:49:06-07:00

Commit Message:
M4: RIDDLE: Beginnings of room 501 daemon

Changed paths:
    engines/m4/riddle/rooms/section5/room501.cpp
    engines/m4/riddle/rooms/section5/room501.h


diff --git a/engines/m4/riddle/rooms/section5/room501.cpp b/engines/m4/riddle/rooms/section5/room501.cpp
index d84fe7eaaed..c1121eb0fab 100644
--- a/engines/m4/riddle/rooms/section5/room501.cpp
+++ b/engines/m4/riddle/rooms/section5/room501.cpp
@@ -85,6 +85,358 @@ void Room501::init() {
 }
 
 void Room501::daemon() {
+	int frame;
+
+	switch (_G(kernel).trigger) {
+	case 501:
+		_val9 = 1;
+		_xyzzy1 = 0;
+		_xyzzy2 = -1;
+		_xyzzy3 = 0;
+
+		_ripTalkLoop = series_load("RIP TALK LOOP");
+		player_update_info();
+		_shadow = series_show("SAFARI SHADOW 3", 0xf00, 128, -1, -1, 0,
+			_G(player_info).scale, _G(player_info).x, _G(player_info).y);
+		_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x700, 0,
+			triggerMachineByHashCallbackNegative, "Rip Delta Machine State");
+
+		switch (_val3) {
+		case 3:
+			ws_hide_walker();
+			sendWSMessage_10000(1, _ripley, _ripTalkLoop, 2, 11, 502,
+				_ripTalkLoop, 11, 11, 0);
+			_val9 = 3;
+			break;
+
+		case 4:
+			sendWSMessage_10000(1, _ripley, _ripTalkLoop, 11, 11, 502,
+				_ripTalkLoop, 11, 11, 0);
+			_val9 = 3;
+			break;
+
+		case 5:
+			sendWSMessage_10000(1, _ripley, _ripTalkLoop, 11, 11, 502,
+				_ripTalkLoop, 11, 11, 0);
+			_val3 = 3;
+			_val9 = 3;
+			break;
+
+		default:
+			break;
+		}
+		break;
+
+	case 502:
+		if (_val9 == 3 && _val3 == 3 && _val6 != -1) {
+			kernel_trigger_dispatchx(_val6);
+			_val6 = -1;
+		}
+		if (_val9 == 7 && _val3 == 7 && _xyzzy2 != -1) {
+			kernel_trigger_dispatchx(_xyzzy2);
+			_xyzzy2 = -1;
+		}
+		if (_val9 == 13 && _val3 == 13 && _xyzzy4 != -1) {
+			kernel_trigger_dispatchx(_xyzzy4);
+			_xyzzy4 = -1;
+		}
+		if (_val9 == 3 && _val3 == 4 && _val7 != -1) {
+			kernel_trigger_dispatchx(_val7);
+			_val7 = -1;
+		}
+
+		if (_xyzzy1) {
+			terminateMachineAndNull(_ripley);
+
+			if (!_xyzzy3)
+				ws_unhide_walker();
+
+			terminateMachineAndNull(_shadow);
+			_val5 = 0;
+
+			if (_val9 == 3)
+				series_unload(_ripTalkLoop);
+
+		} else {
+			kernel_timing_trigger(1, 503);
+		}
+		break;
+
+	case 503:
+		switch (_val9) {
+		case 3:
+			switch (_val3) {
+			case 2:
+				_val3 = 3;
+				_val6 = kernel_trigger_create(508);
+				kernel_timing_trigger(1, 502);
+				break;
+			case 3:
+				sendWSMessage_10000(1, _ripley, _ripTalkLoop, 11, 11, 502,
+					_ripTalkLoop, 11, 11, 0);
+				break;
+			case 4:
+				frame = imath_ranged_rand(52, 76);
+				sendWSMessage_10000(1, _ripley, _ripTalkLoop, frame, frame, 502,
+					_ripTalkLoop, frame, frame, 0);
+				break;
+			case 6:
+				_xyzzy5 = 1;
+				digi_play((_val4 == 1) ? "501x02" : "501x03", 1);
+				sendWSMessage_10000(1, _ripley, _ripSeries1, 1, 85, 502,
+					_ripSeries1, 85, 85, 0);
+				_val3 = 7;
+				_val9 = 7;
+				break;
+			case 9:
+				_xyzzy5 = 1;
+				sendWSMessage_10000(1, _ripley, _ripSeries2, 90, 1, 502,
+					_ripSeries2, 1, 1, 0);
+				_val3 = 10;
+				break;
+			case 10:
+				digi_play("COM084", 1, 255, -1, 997);
+				kernel_timing_trigger(1, 505);
+				sendWSMessage_10000(1, _ripley, _ripSeries2, 1, 1, 502,
+					_ripSeries2, 1, 1, 0);
+				_val3 = 3;
+				break;
+			case 11:
+				_xyzzy5 = 1;
+				sendWSMessage_10000(1, _ripley, _ripSeries2, 1, 90, 502,
+					_ripSeries2, 90, 90, 0);
+				_val3 = 12;
+				break;
+			case 12:
+				kernel_timing_trigger(1, 505);
+				sendWSMessage_10000(1, _ripley, _ripSeries2, 1, 1, 502,
+					_ripSeries2, 1, 1, 0);
+				_val3 = 3;
+				break;
+			case 13:
+				sendWSMessage_10000(1, _ripley, _ripTalkLoop, 11, 2, 502,
+					_ripTalkLoop, 2, 2, 0);
+				_val9 = 13;
+				break;
+			case 14:
+				_xyzzy5 = 1;
+				sendWSMessage_10000(1, _ripley, _ripMoneyExchange, 1, 85, 502,
+					_ripMoneyExchange, 85, 85, 0);
+				_val3 = 15;
+				break;
+			case 15:
+				kernel_timing_trigger(1, 505);
+				sendWSMessage_10000(1, _ripley, _ripMoneyExchange, 85, 85, 502,
+					_ripMoneyExchange, 85, 85, 0);
+				_val3 = 3;
+				_val6 = kernel_trigger_create(551);
+
+				if (!inv_player_has("PERUVIAN INTI"))
+					inv_give_to_player("PERUVIAN INTI");
+				break;
+			case 16:
+				_ripSignsPaper = series_load("RIP SIGNS PAPER");
+				_xyzzy5 = 1;
+				digi_play(conv_sound_to_play(), 1);
+				sendWSMessage_10000(1, _ripley, _ripSignsPaper, 1, 91, 502,
+					_ripSignsPaper, 91, 91, 0);
+				_val3 = 17;
+				break;
+			case 17:
+				sendWSMessage_10000(1, _ripley, _ripSignsPaper, 85, 92, -1,
+					_ripSignsPaper, 90, 92, 4);
+				digi_play("950_S35", 1, 255, 502);
+				_val3 = 18;
+				break;
+			case 18:
+				if (!_paper) {
+					_paper = series_place_sprite("one frame paper", 0, 0, 0, 100, 0x780);
+					_flag = 1;
+				}
+
+				kernel_timing_trigger(1, 505);
+				sendWSMessage_10000(1, _ripley, _ripSignsPaper, 92, 111, 502,
+					_ripSignsPaper, 111, 111, 0);
+				_val3 = 3;
+				break;
+			case 19:
+				_ripMoneyExchange = series_load("MONEY XCHANGE");
+				_xyzzy5 = 1;
+				sendWSMessage_10000(1, _ripley, _ripMoneyExchange, 61, 85, 502,
+					_ripMoneyExchange, 85, 85, 0);
+				_val3 = 20;
+				break;
+			case 20:
+				if (!inv_player_has("US DOLLARS"))
+					inv_give_to_player("US DOLLARS");
+
+				kernel_timing_trigger(1, 505);
+				sendWSMessage_10000(1, _ripley, _ripSignsPaper, 85, 85, 502,
+					_ripSignsPaper, 85, 85, 0);
+				_val3 = 3;
+				break;
+			default:
+				break;
+			}
+			break;
+
+		case 7:
+			switch (_val3) {
+			case 3:
+				kernel_timing_trigger(1, 504);
+				sendWSMessage_10000(1, _ripley, _ripSeries1, 86, 94, 502,
+					_ripTalkLoop, 11, 11, 0);
+				_val3 = 3;
+				_val9 = 3;
+				break;
+			case 7:
+				sendWSMessage_10000(1, _ripley, _ripSeries1, 85, 85, 502,
+					_ripSeries1, 85, 85, 0);
+				break;
+			case 8:
+				sendWSMessage_10000(1, _ripley, _ripSeries1, 85, 86, 502,
+					_ripSeries1, 86, 85, 0);
+				_val3 = 7;
+				break;
+			default:
+				break;
+			}
+			break;
+
+		case 13:
+			switch (_val3) {
+			case 3:
+				sendWSMessage_10000(1, _ripley, _ripTalkLoop, 2, 11, 502,
+					_ripTalkLoop, 11, 11, 0);
+				_val9 = 3;
+				break;
+			case 13:
+				sendWSMessage_10000(1, _ripley, _ripTalkLoop, 11, 2, 502,
+					_ripTalkLoop, 2, 2, 0);
+				break;
+			default:
+				break;
+			}
+			break;
+
+		default:
+			break;
+		}
+		break;
+
+	case 504:
+		_xyzzy8 = 1;
+		_val1 = 1;
+		_xyzzy6 = -1;
+		_xyzzy7 = -1;
+		_xyzzy5 = -1;
+		_agent = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x700, 0,
+			triggerMachineByHashCallbackNegative, "Agent at Desk");
+		sendWSMessage_10000(1, _agent, _agentTalkLoop, 1, 1, 506,
+			_agentTalkLoop, 1, 1, 0);
+		_xyzzy8 = 1;
+		break;
+
+	case 505:
+		_xyzzy8 = 5;
+		_val1 = 5;
+		_xyzzy6 = -1;
+		_xyzzy7 = -1;
+		_xyzzy5 = -1;
+		_agent = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x700, 0,
+			triggerMachineByHashCallbackNegative, "Agent at Desk");
+		sendWSMessage_10000(1, _agent, _agentStridesForward, 15, 15, 506,
+			_agentStridesForward, 15, 15, 0);
+		break;
+
+	case 506:
+		if (_val1 == 1 && _xyzzy8 == 1 && _xyzzy6 != -1) {
+			kernel_trigger_dispatchx(_xyzzy6);
+			_xyzzy6 = -1;
+		}
+		if (_val1 == 5 && _xyzzy8 == 5 && _xyzzy7 != -1) {
+			kernel_trigger_dispatchx(_xyzzy7);
+			_xyzzy7 = -1;
+		}
+		if (_xyzzy5 == 1) {
+			terminateMachineAndNull(_agent);
+		} else {
+			kernel_timing_trigger(1, 507);
+		}
+		break;
+
+	case 507:
+		switch (_xyzzy8) {
+		case 1:
+			switch (_val1) {
+			case 1:
+				sendWSMessage_10000(1, _agent, _agentTalkLoop, 1, 1, 506,
+					_agentTalkLoop, 1, 1, 0);
+				break;
+			case 2:
+				frame = imath_ranged_rand(1, 50);
+				sendWSMessage_10000(1, _agent, _agentTalkLoop, frame, frame, 506,
+					_agentTalkLoop, frame, frame, 0);
+				break;
+			case 3:
+				player_set_commands_allowed(false);
+				_ripMoneyExchange = series_load("MONEY XCHANGE");
+				ws_hide_walker();
+				sendWSMessage_10000(1, _agent, _ripMoneyExchange, 1, 86, 506,
+					_ripMoneyExchange, 1, 1, 0);
+				_val1 = 4;
+				break;
+			case 4:
+				ws_unhide_walker();
+				sendWSMessage_10000(1, _agent, _agentTalkLoop, 1, 1, 506,
+					_agentTalkLoop, 1, 1, 0);
+				series_unload(_ripMoneyExchange);
+				_val1 = 1;
+				player_set_commands_allowed(true);
+				break;
+			case 5:
+				sendWSMessage_10000(1, _agent, _agentStridesForward, 1, 15, 506,
+					_agentStridesForward, 15, 15, 0);
+				_xyzzy8 = 5;
+				break;
+			default:
+				break;
+			}
+			break;
+
+		case 5:
+			switch (_val1) {
+			case 1:
+				sendWSMessage_10000(1, _agent, _agentStridesForward, 15, 1, 506,
+					_agentTalkLoop, 1, 1, 0);
+				_xyzzy8 = 1;
+				break;
+
+			case 5:
+				sendWSMessage_10000(1, _agent, _agentStridesForward, 15, 15, 506,
+					_agentStridesForward, 15, 15, 0);
+				break;
+
+			case 6:
+				sendWSMessage_10000(1, _agent, _agentSeries1, 1, 46, 502,
+					_agentSeries1, 46, 46, 0);
+				digi_play("501R36", 1);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		default:
+			break;
+		}
+		break;
+
+	// TODO
+	default:
+		break;
+	}
 }
 
 void Room501::parser() {
diff --git a/engines/m4/riddle/rooms/section5/room501.h b/engines/m4/riddle/rooms/section5/room501.h
index c69d5e489b8..5aeb2d1e448 100644
--- a/engines/m4/riddle/rooms/section5/room501.h
+++ b/engines/m4/riddle/rooms/section5/room501.h
@@ -30,12 +30,22 @@ namespace Rooms {
 
 class Room501 : public Room {
 private:
+	machine *_ripley = nullptr;
+	machine *_shadow = nullptr;
+	machine *_agent = nullptr;
 	machine *_clock = nullptr;
 	machine *_paper = nullptr;
 	int _agentTalkLoop = 0;
 	int _agentStridesForward = 0;
+	int _agentSeries1 = 0;
 	const char *_digiName = nullptr;
+	int _convEntry = 0;
 	bool _flag = false;
+	int _ripTalkLoop = 0;
+	int _ripSeries1 = 0;
+	int _ripSeries2 = 0;
+	int _ripMoneyExchange = 0;
+	int _ripSignsPaper = 0;
 	int _val1 = 0;
 	int _val2 = 0;
 	int _val3 = 0;
@@ -44,7 +54,15 @@ private:
 	int _val6 = 0;
 	int _val7 = 0;
 	int _val8 = 0;
-	int _convEntry = 0;
+	int _val9 = 0;
+	int _xyzzy1 = 0;
+	int _xyzzy2 = 0;
+	int _xyzzy3 = 0;
+	int _xyzzy4 = 0;
+	int _xyzzy5 = 0;
+	int _xyzzy6 = 0;
+	int _xyzzy7 = 0;
+	int _xyzzy8 = 0;
 
 	void conv501a();
 




More information about the Scummvm-git-logs mailing list