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

Strangerke noreply at scummvm.org
Fri Oct 11 15:51:59 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:
b6cfa460fb M4: RIDDLE: Implement daemon in room 801


Commit: b6cfa460fb48c4ac40115d9ff4f0231e4e276d3e
    https://github.com/scummvm/scummvm/commit/b6cfa460fb48c4ac40115d9ff4f0231e4e276d3e
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-10-11T16:51:53+01:00

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

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


diff --git a/engines/m4/riddle/rooms/section8/room801.cpp b/engines/m4/riddle/rooms/section8/room801.cpp
index 18ff0efaa04..93d9cf44be1 100644
--- a/engines/m4/riddle/rooms/section8/room801.cpp
+++ b/engines/m4/riddle/rooms/section8/room801.cpp
@@ -58,14 +58,14 @@ void Room801::init() {
 
 	digi_preload("801_s02", -1);
 	digi_play_loop("801_s02", 3, 100, -1, -1);
-	_roomStates_field64 = series_load("farmer displacement", -1, nullptr);
-	_roomStates_field74 = series_load("farmer  talk loop", -1, nullptr);
-	_roomStates_field6C = series_load("farmer give take bow", -1, nullptr);
-	_roomStates_field78 = series_load("mei prattle loop", -1, nullptr);
+	_roomStates_field642 = series_load("farmer displacement", -1, nullptr);
+	_roomStates_field742 = series_load("farmer  talk loop", -1, nullptr);
+	_roomStates_field6C2 = series_load("farmer give take bow", -1, nullptr);
+	_roomStates_field782 = series_load("mei prattle loop", -1, nullptr);
 	_roomStates_loop1 = series_load("rip kneel to pottery", -1, nullptr);
 	_roomStates_loop2 = series_load("rip enters root cellar", -1, nullptr);
-	_roomStates_loop6 = series_load("rip trek head turn pos5", -1, nullptr);
-	_roomStates_loop7 = series_load("rptmr15", -1, nullptr);
+	_roomStates_loop62 = series_load("rip trek head turn pos5", -1, nullptr);
+	_roomStates_loop72 = series_load("rptmr15", -1, nullptr);
 	_roomStates_val1 = series_load("rip trek hand on chin pos2", -1, nullptr);
 	_roomStates_ear2 = series_load("rip trek hands beh back pos1", -1, nullptr);
 	_roomStates_val3 = series_load("rip trek nod pos4", -1, nullptr);
@@ -73,7 +73,7 @@ void Room801::init() {
 	series_load("SAFARI SHADOW 5", -1, nullptr);
 	_roomStates_loop4 = series_load("MCTSH1", -1, nullptr);
 	_roomStates_field96h = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 1024, 0, triggerMachineByHashCallbackNegative, "farmer displacement");
-	sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field64, 1, 14, 0, _roomStates_field64, 14, 14, 0);
+	sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field642, 1, 14, 0, _roomStates_field642, 14, 14, 0);
 	_roomStates_field9Ah = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 151, 317, 100, 1280, 0, triggerMachineByHashCallbackNegative, "farmer shadow");
 	sendWSMessage_10000(1, _roomStates_field9Ah, _roomStates_loop4, 1, 1, -1, _roomStates_loop4, 1, 1, 0);
 	if (inv_player_has("farmer's shovel"))
@@ -100,10 +100,10 @@ void Room801::init() {
 		_G(kernel).call_daemon_every_loop = true;
 		ws_demand_facing(_G(my_walker), 3);
 		ws_demand_location(_G(my_walker), 20, 270);
-		_roomStates_field68 = series_load("farmer  earthquake gesture", -1, nullptr);
+		_roomStates_field682 = series_load("farmer  earthquake gesture", -1, nullptr);
 		_roomStates_loop0 = series_load("rip looks to zero", -1, nullptr);
 		_roomStates_field7C = series_load("mei looks to zero", -1, nullptr);
-		_roomStates_field70 = series_load("farmer looks to zero", -1, nullptr);
+		_roomStates_field702 = series_load("farmer looks to zero", -1, nullptr);
 		_roomStates_field60 = series_load("shadow of de plane", -1, nullptr);
 		ws_walk_load_shadow_series(S8_SHADOW_DIRS1, S8_SHADOW_NAMES1);
 		ws_walk_load_walker_series(S8_SHADOW_DIRS2, S8_SHADOW_NAMES2);
@@ -139,7 +139,7 @@ void Room801::init() {
 
 		_roomStates_field9Eh = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 1280, 0, triggerMachineByHashCallbackNegative, "mc talk frames");
 		_roomStates_fieldA2h = series_show("SAFARI SHADOW 5", 1280, 16, -1, -1, 0, 50, 124, 304);
-		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 42, 42, 0, _roomStates_field78, 42, 42, 0);
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 42, 42, 0, _roomStates_field782, 42, 42, 0);
 	}
 }
 
@@ -311,7 +311,7 @@ void Room801::parser() {
 			break;
 		case 2:
 			digi_play("801r20", 1, 255, 3, -1);
-			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 31, 40, 3, _roomStates_field78, 40, 40, 0);
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 31, 40, 3, _roomStates_field782, 40, 40, 0);
 			break;
 		case 3:
 			if (_var1 == 0)
@@ -319,7 +319,7 @@ void Room801::parser() {
 			else {
 				_var1 = 0;
 				sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop2, 42, 26, 4, _roomStates_loop2, 26, 26, 0);
-				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 37, 40, 4, _roomStates_field78, 37, 40, 1);
+				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 37, 40, 4, _roomStates_field782, 37, 40, 1);
 				digi_play("801m10", 1, 255, 4, -1);
 			}
 			break;
@@ -328,7 +328,7 @@ void Room801::parser() {
 				++_var1;
 			else {
 				_var1 = 0;
-				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 40, 40, 5, _roomStates_field78, 40, 40, 0);
+				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 40, 40, 5, _roomStates_field782, 40, 40, 0);
 				sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop1, 26, 42, 5, _roomStates_loop1, 42, 42, 0);
 			}
 			break;
@@ -345,7 +345,7 @@ void Room801::parser() {
 			break;
 		case 7:
 			sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop1, 26, 1, 8, _roomStates_loop1, 1, 1, 0);
-			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 37, 40, 9, _roomStates_field78, 37, 40, 1);
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 37, 40, 9, _roomStates_field782, 37, 40, 1);
 			digi_play("801m11", 1, 255, 9, -1);
 			break;
 		case 8:
@@ -358,7 +358,7 @@ void Room801::parser() {
 				++_var1;
 			else {
 				_var1 = 0;
-				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 40, 31, 10, _roomStates_field78, 31, 31, 0);
+				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 40, 31, 10, _roomStates_field782, 31, 31, 0);
 			}
 			break;
 		case 10:
@@ -395,7 +395,7 @@ void Room801::parser() {
 		switch (_G(kernel).trigger) {
 		case -1:
 			player_set_commands_allowed(false);
-			setGlobals1(_roomStates_loop6, 1, 1, 1, 1, 0, 1, 7, 5, 7, 1, 7, 1, 1, 1, 0, 7, 7, 7, 7, 0);
+			setGlobals1(_roomStates_loop62, 1, 1, 1, 1, 0, 1, 7, 5, 7, 1, 7, 1, 1, 1, 0, 7, 7, 7, 7, 0);
 			sendWSMessage_110000(_G(my_walker), 1);
 			break;
 		case 1:
@@ -407,39 +407,39 @@ void Room801::parser() {
 			break;
 		case 3:
 			sendWSMessage_130000(_G(my_walker), 0);
-			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 42, 55, 0, _roomStates_field78, 53, 55, 1);
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 42, 55, 0, _roomStates_field782, 53, 55, 1);
 			digi_play("801m12", 1, 255, 4, -1);
 			break;
 		case 4:
-			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 55, 55, 0, _roomStates_field78, 55, 55, 0);
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 55, 55, 0, _roomStates_field782, 55, 55, 0);
 			digi_play("801f06", 1, 255, 5, -1);
-			sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field74, 1, 1, 0, _roomStates_field74, 1, 3, 4);
+			sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field742, 1, 1, 0, _roomStates_field742, 1, 3, 4);
 			break;
 		case 5:
-			sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field74, 1, 1, 0, _roomStates_field74, 1, 1, 0);
+			sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field742, 1, 1, 0, _roomStates_field742, 1, 1, 0);
 			sendWSMessage_150000(_G(my_walker), 0);
-			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 31, 40, 6, _roomStates_field78, 40, 40, 0);
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 31, 40, 6, _roomStates_field782, 40, 40, 0);
 			break;
 		case 6:
-			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 40, 41, 0, _roomStates_field78, 39, 41, 4);
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 40, 41, 0, _roomStates_field782, 39, 41, 4);
 			digi_play("801m13", 1, 255, 7, -1);
 			break;
 		case 7:
-			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 41, 31, 0, _roomStates_field78, 31, 31, 0);
-			setGlobals1(_roomStates_loop7, 1, 16, 16, 16, 0, 16, 1, 1, 1, 0, 1, 1, 1, 1, 1, 16, 16, 16, 16, 0);
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 41, 31, 0, _roomStates_field782, 31, 31, 0);
+			setGlobals1(_roomStates_loop72, 1, 16, 16, 16, 0, 16, 1, 1, 1, 0, 1, 1, 1, 1, 1, 16, 16, 16, 16, 0);
 			sendWSMessage_110000(_G(my_walker), 9);
 			kernel_timing_trigger(50, 8, nullptr);
 			inv_move_object("CHINESE YUAN", 801);
 			digi_play("801r28", 1, 255, 9, -1);
 			break;
 		case 8:
-			sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field6C, 71, 110, 10, _roomStates_field74, 110, 110, 0);
+			sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field6C2, 71, 110, 10, _roomStates_field742, 110, 110, 0);
 			break;
 		case 9:
 			sendWSMessage_120000(_G(my_walker), 0);
 			break;
 		case 10:
-			sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field74, 1, 1, 0, _roomStates_field74, 1, 1, 0);
+			sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field742, 1, 1, 0, _roomStates_field742, 1, 1, 0);
 			sendWSMessage_150000(_G(my_walker), 12);
 			break;
 		case 12:
@@ -448,7 +448,7 @@ void Room801::parser() {
 			break;
 		case 13:
 			hotspot_set_active(_G(currentSceneDef).hotspots, "farmer's shovel", false);
-			setGlobals1(_roomStates_loop7, 1, 16, 16, 16, 0, 16, 1, 1, 1, 0, 1, 1, 1, 1, 1, 16, 16, 16, 16, 0);
+			setGlobals1(_roomStates_loop72, 1, 16, 16, 16, 0, 16, 1, 1, 1, 0, 1, 1, 1, 1, 1, 16, 16, 16, 16, 0);
 			sendWSMessage_110000(_G(my_walker), 16);
 			break;
 		case 16:
@@ -472,7 +472,7 @@ void Room801::parser() {
 	else if (gearFl && player_said("root cellar  ")) {
 		switch (_G(kernel).trigger) {
 		case -1:
-			if (_roomStates_tt == 0) {
+			if (_roomStates_tt2 == 0) {
 				player_set_commands_allowed(false);
 				ws_hide_walker();
 				terminateMachine(_roomStates_fieldA6h);
@@ -482,7 +482,7 @@ void Room801::parser() {
 			}
 			break;
 		case 1:
-			_roomStates_tt = 1;
+			_roomStates_tt2 = 1;
 			terminateMachine(_roomStates_field8Ah);
 			series_unload(_roomStates_field18);
 			_roomStates_fieldAAh = series_place_sprite("CELLAR DOOR OPEN", 0, 0, -53, 100, 1024);
@@ -511,7 +511,7 @@ void Room801::parser() {
 	// Not the same as the previous one : there's one space instead of two at the end
 		switch (_G(kernel).trigger) {
 		case -1:
-			if (_roomStates_tt != 0) {
+			if (_roomStates_tt2 != 0) {
 				player_set_commands_allowed(false);
 				ws_hide_walker(_G(my_walker));
 				terminateMachine(_roomStates_fieldAAh);
@@ -521,7 +521,7 @@ void Room801::parser() {
 			}
 			break;
 		case 1:
-			_roomStates_tt = 0;
+			_roomStates_tt2 = 0;
 			terminateMachine(_roomStates_field8Ah);
 			ws_unhide_walker(_G(my_walker));
 			digi_stop(1);
@@ -550,7 +550,7 @@ void Room801::parser() {
 			ws_hide_walker(_G(my_walker));
 			player_set_commands_allowed(false);
 			_roomStates_field8Ah = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 167, 303, 49, 1280, 1, triggerMachineByHashCallbackNegative, "rip talking to farmer");
-			sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop6, 1, 1, -1, _roomStates_loop6, 1, 1, 0);
+			sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop62, 1, 1, -1, _roomStates_loop62, 1, 1, 0);
 			_roomStates_field8Eh = series_show("SAFARI SHADOW 5", 1280, 144, -1, -1, 0, 48, 167, 303);
 			_roomStates_pu2 = 1;
 			_roomStates_ripTalker = 1;
@@ -581,7 +581,7 @@ void Room801::parser() {
 		switch (_G(kernel).trigger) {
 		case -1:
 			player_set_commands_allowed(false);
-			setGlobals1(_roomStates_loop6, 1, 4, 5, 7, 1, 4, 4, 4, 4, 1, 4, 1, 1, 1, 0, 4, 1, 1, 1, 0);
+			setGlobals1(_roomStates_loop62, 1, 4, 5, 7, 1, 4, 4, 4, 4, 1, 4, 1, 1, 1, 0, 4, 1, 1, 1, 0);
 			sendWSMessage_110000(_G(my_walker), 1);
 			break;
 		case 1:
@@ -606,10 +606,10 @@ void Room801::parser() {
 			sendWSMessage_120000(_G(my_walker), 4);
 			break;
 		case 4:
-			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 31, 40, 5, _roomStates_field78, 40, 40, 0);
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 31, 40, 5, _roomStates_field782, 40, 40, 0);
 			break;
 		case 5:
-			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 40, 41, 0, _roomStates_field78, 40, 41, 4);
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 40, 41, 0, _roomStates_field782, 40, 41, 4);
 			switch (imath_ranged_rand(1, 3)) {
 			case 1:
 				digi_play("com039", 1, 255, 6, 997);
@@ -625,7 +625,7 @@ void Room801::parser() {
 			}
 			break;
 		case 6:
-			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field78, 41, 31, 7, _roomStates_field78, 31, 31, 0);
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 41, 31, 7, _roomStates_field782, 31, 31, 0);
 			sendWSMessage_130000(_G(my_walker), 0);
 			break;
 		case 7:
@@ -698,6 +698,438 @@ void Room801::parser() {
 }
 
 void Room801::daemon() {
+	switch (_G(kernel).trigger) {
+	case 1:
+		sendWSMessage_10000(_roomStates_field9Eh, 124, 304, 4, 11, 1);
+		ws_walk(_G(my_walker), 172, 302, nullptr, 10, 7, true);
+		break;
+	case 2:
+		terminateMachine(_roomStates_field92h);
+		series_unload(_roomStates_field60);
+		_roomStates_field4 = 1;
+		kernel_timing_trigger(70, 31, nullptr);
+		break;
+	case 4:
+		// nothing
+		break;
+	case 5:
+		sendWSMessage_150000(_G(my_walker), -1);
+		_G(player).disable_hyperwalk = false;
+		_G(kernel).call_daemon_every_loop = false;
+		player_set_commands_allowed(true);
+		break;
+	case 6:
+	case 7:
+		player_set_commands_allowed(false);
+		ws_hide_walker(_G(my_walker));
+		_roomStates_field9Eh = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 1280, 0, triggerMachineByHashCallbackNegative, "mc talk frames");
+		_roomStates_fieldA2h = series_show("SAFARI SHADOW 5", 1280, 16, -1, -1, 0, 50, 124, 304);
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 42, 42, 0, _roomStates_field782, 42, 42, 0);
+
+		if (_G(flags)[V260]) {
+			kernel_timing_trigger(30, 81, nullptr);
+		} else {
+			_roomStates_field8Ah = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, 0, triggerMachineByHashCallbackNegative, "rip returns from cellar");
+			sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop3, 1, 22, 8, _roomStates_loop3, 22, 22, 0);
+		}
+		break;
+	case 8:
+		terminateMachine(_roomStates_field8Ah);
+		ws_unhide_walker(_G(my_walker));
+		series_unload(_roomStates_loop3);
+		player_set_commands_allowed(true);
+		break;
+	case 9:
+		mouse_lock_sprite(5);
+		conv_resume(conv_get_handle());
+		break;
+	case 10:
+		terminateMachine(_roomStates_field96h);
+		_roomStates_field92h = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 2048, 0, triggerMachineByHashCallbackNegative, "shadow of de plane");
+		_roomStates_field96h = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 1024, 0, triggerMachineByHashCallbackNegative, "farmer looks to zero");
+		_roomStates_field8Ah = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1536, 0, triggerMachineByHashCallbackNegative, "rip looks to zero");
+		sendWSMessage_10000(1, _roomStates_field92h, _roomStates_field60, 1, 47, 2, _roomStates_field60, 47, 47, 0);
+		_roomStates_field4 = 0;
+		sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field702, 1, 48, 12, _roomStates_field702, 48, 48, 0);
+		_roomStates_field6 = 0;
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field7E, 1, 18, 0, _roomStates_field7E, 18, 18, 0);
+		ws_hide_walker(_G(my_walker));
+		sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_field2A, 1, 13, 51, _roomStates_field2A, 13, 13, 0);
+		_roomStates_field8Eh = series_show("SAFARI SHADOW 5", 1280, 144, -1, -1, 0, 48, 172, 302);
+		break;
+	case 11:
+		digi_play("801_s01", 2, 255, -1, -1);
+		sendWSMessage_60000(_roomStates_field9Eh);
+		_roomStates_field9Eh = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 1280, 0, triggerMachineByHashCallbackNegative, "mei chen looks to zero");
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 1, 7, 0, _roomStates_field782, 7, 7, 0);
+		_roomStates_fieldA2h = series_show("SAFARI SHADOW 5", 1280, 16, -1, -1, 0, 50, 124, 304);
+		break;
+	case 12:
+		_roomStates_field6 = 1;
+		break;
+	case 13:
+		sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field742, 4, 1, 0, _roomStates_field742, 1, 1, 0);
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 42, 42, 0, _roomStates_field782, 42, 55, 4);
+		digi_play("801m02", 1, 255, 35, -1);
+		break;
+	case 14:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field682, 1, 20, 15, _roomStates_field682, 20, 20, 0);
+		digi_play("801f02a", 1, 255, 16, -1);
+		break;
+	case 15:
+		sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field682, 20, 1, 12, _roomStates_field742, 1, 1, 0);
+		break;
+	case 16:
+		if (_roomStates_field6) {
+			_roomStates_field6 = 0;
+			_roomStates_loop62 = series_load("RIP TREK HEAD TURN POS5", -1, nullptr);
+			setGlobals1(_roomStates_loop62, 1, 7, 5, 7, 1, 7, 1, 1, 1, 0, 1, 1, 1, 1, 0, 7, 7, 7, 7, 0);
+			sendWSMessage_110000(_G(my_walker), 4);
+			digi_play("801r02", 1, 255, 53, -1);
+		} else {
+			kernel_timing_trigger(15, 16, nullptr);
+		}
+		break;
+	case 17:
+		sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field682, 20, 1, 18, _roomStates_field682, 1, 1, 0);
+		break;
+	case 18:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 31, 37, 0, _roomStates_field782, 37, 41, 4);
+		digi_play("801m04", 1, 255, 41, -1);
+		break;
+	case 19:
+		sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field642, 1, 1, 0, _roomStates_field642, 1, 1, 0);
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 31, 37, 0, _roomStates_field782, 37, 41, 4);
+		digi_play("801m06", 1, 255, 43, -1);
+		break;
+	case 31:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field7E, 18, 1, 32, _roomStates_field7E, 1, 1, 0);
+		sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_field2A, 13, 1, 52, _roomStates_field2A, 1, 1, 0);
+		break;
+	case 32:
+		_roomStates_tt2 = 1;
+		break;
+	case 33:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 17, 8, 49, _roomStates_field782, 8, 8, 0);
+		break;
+	case 34:
+		if (_roomStates_tt2) {
+			_roomStates_tt2 = 0;
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 42, 42, 0, _roomStates_field782, 42, 42, 0);
+			sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field742, 1, 4, 0, _roomStates_field742, 5, 7, 4);
+			digi_play("801f01", 1, 255, 13, -1);
+		} else {
+			kernel_timing_trigger(15, 34, nullptr);
+		}
+		break;
+	case 35:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 42, 42, 0, _roomStates_field782, 42, 42, 0);
+		sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field742, 1, 4, 0, _roomStates_field742, 5, 7, 4);
+		digi_play("801f02", 1, 255, 14, -1);
+		break;
+	case 36:
+		if (_roomStates_tt2) {
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 42, 42, -1, _roomStates_field782, 42, 42, 0);
+		} else {
+			kernel_timing_trigger(15, 36, nullptr);
+		}
+		break;
+	case 37:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 83, 64, 38, _roomStates_field782, 64, 64, 0);
+		kernel_timing_trigger(0, 39, nullptr);
+		break;
+	case 38:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 64, 56, 32, _roomStates_field782, 56, 56, 0);
+		break;
+	case 39:
+		sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field682, 1, 20, 17, _roomStates_field682, 20, 20, 0);
+		break;
+	case 41:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 37, 37, 0, _roomStates_field782, 37, 37, 0);
+		sendWSMessage_110000(_G(my_walker), 4);
+		digi_play("801r03", 1, 255, 54, -1);
+		break;
+	case 42:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 41, 31, 0, _roomStates_field782, 31, 31, 0);
+		digi_play("801r04", 1, 255, 55, -1);
+		break;
+	case 43:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 41, 31, 0, _roomStates_field782, 42, 42, 0);
+		_roomStates_field4C2 = series_load("RIP TREK HANDS HIP POS5", -1, nullptr);
+		sendWSMessage_110000(_G(my_walker), -1);
+		digi_play("801r05", 1, 255, 56, -1);
+		break;
+	case 48:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 56, 83, 37, _roomStates_field782, 83, 83, 0);
+		break;
+	case 49:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 18, 30, 50, _roomStates_field782, 30, 30, 0);
+		break;
+	case 50:
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 30, 18, 32, _roomStates_field782, 42, 55, 4);
+		break;
+	case 51:
+		digi_play("801r01", 1, 255, -1, -1);
+		break;
+	case 52:
+		if (_roomStates_field6 && _roomStates_field4 && _roomStates_tt2) {
+			terminateMachine(_roomStates_field9Eh);
+			terminateMachine(_roomStates_field96h);
+			terminateMachine(_roomStates_field8Ah);
+			terminateMachine(_roomStates_field8Eh);
+			ws_unhide_walker(_G(my_walker));
+			series_unload(_roomStates_field702);
+			series_unload(_roomStates_field7E);
+			series_unload(_roomStates_field2A);
+			_roomStates_field96h = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 1024, 0, triggerMachineByHashCallbackNegative, "farmer talk frames");
+			sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field742, 1, 1, 0, _roomStates_field742, 1, 1, 0);
+			_roomStates_field9Eh = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 1280, 0, triggerMachineByHashCallbackNegative, "mc talk frames");
+			sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 8, 17, 33, _roomStates_field782, 17, 17, 0);
+			_roomStates_field502 = series_load("RIP TREK HAT TIP POS5", -1, nullptr);
+			kernel_timing_trigger(210, 62, nullptr);
+			digi_play("801m01", 1, 255, 34, -1);
+			_roomStates_field4 = 0;
+			_roomStates_field6 = 0;
+			_roomStates_tt2 = 0;
+		} else {
+			kernel_timing_trigger(15, 52, nullptr);
+		}
+		break;
+	case 53:
+		sendWSMessage_120000(_G(my_walker), -1);
+		kernel_timing_trigger(330, 48, nullptr);
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 31, 37, 0, _roomStates_field782, 37, 41, 4);
+		digi_play("801m03", 1, 255, 36, -1);
+		break;
+	case 54:
+		sendWSMessage_120000(_G(my_walker), -1);
+		sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 37, 37, 0, _roomStates_field782, 37, 41, 4);
+		digi_play("801m05", 1, 255, 42, -1);
+		break;
+	case 55:
+		sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field742, 1, 4, 0, _roomStates_field742, 5, 7, 4);
+		digi_play("801f03", 1, 255, 19, -1);
+		break;
+	case 56:
+		sendWSMessage_120000(_G(my_walker), 5);
+		break;
+	case 60:
+		sendWSMessage_140000(_G(my_walker), 63);
+		break;
+	case 61:
+		sendWSMessage_150000(_G(my_walker), -1);
+		break;
+	case 62:
+		setGlobals1(_roomStates_field502, 1, 12, 12, 12, 0, 12, 1, 1, 1, 0, 1, 12, 12, 12, 0, 12, 12, 12, 12, 0);
+		sendWSMessage_110000(_G(my_walker), 60);
+		break;
+	case 63:
+		series_unload(_roomStates_field502);
+		break;
+	case 81:
+		digi_play("801R30", 1, 255, 82, 801);
+		break;
+	case 82:
+		disable_player_commands_and_fade_init(83);
+		break;
+	case 83:
+		_G(game).new_room = 852;
+		break;
+	case 200:
+		switch (_roomStates_untie2) {
+		case 1:
+			switch (_roomStates_pu) {
+			case 1:
+				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 42, 42, -1, _roomStates_field782, 42, 42, 0);
+				kernel_timing_trigger(60, 200, nullptr);
+				break;
+			case 2:
+				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 31, 37, 200, _roomStates_field782, 37, 41, 4);
+				_roomStates_untie2 = 2;
+				break;
+			case 3:
+				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 42, 42, 200, _roomStates_field782, 42, 55, 4);
+				_roomStates_untie2 = 3;
+				break;
+			case 4:
+				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 56, 84, 200, _roomStates_field782, 84, 84, 0);
+				_roomStates_untie2 = 4;
+				break;
+			case 8:
+				_roomStates_untie2 = 8;
+				break;
+			default:
+				break;
+			}
+			break;
+		case 2:
+			switch (_roomStates_pu) {
+			case 1:
+			case 3:
+			case 4:
+			case 8:
+				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 37, 31, 200, _roomStates_field782, 42, 42, 0);
+				_roomStates_untie2 = 1;
+				break;
+			case 2:
+				kernel_timing_trigger(30, 200, nullptr);
+				break;
+			default:
+				break;
+			}
+			break;
+		case 3:
+			switch (_roomStates_pu) {
+			case 1:
+			case 2:
+			case 4:
+			case 8:
+				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 42, 42, 200, _roomStates_field782, 42, 42, 0);
+				_roomStates_untie2 = 1;
+				break;
+			case 3:
+				kernel_timing_trigger(30, 200, nullptr);
+				break;
+			default:
+				break;
+			}
+			break;
+		case 4:
+			switch (_roomStates_pu) {
+			case 4:
+				_roomStates_pu = 1;
+				// Fallthrough on purpose
+			case 1:
+			case 2:
+			case 3:
+			case 8:
+				sendWSMessage_10000(1, _roomStates_field9Eh, _roomStates_field782, 84, 56, 200, _roomStates_field782, 42, 42, 0);
+				_roomStates_untie2 = 1;
+				break;
+			default:
+				break;
+			}
+			break;
+		default:
+			break;
+		}
+	case 300:
+		switch (_roomStates_pu2) {
+		case 1:
+			switch (_roomStates_ripTalker) {
+			case 1:
+				sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop62, 1, 1, -1, _roomStates_loop62, 1, 1, 0);
+				kernel_timing_trigger(60, 300, nullptr);
+				break;
+			case 2:
+				sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop62, 1, 4, 300, _roomStates_loop62, 5, 7, 4);
+				_roomStates_pu2 = 2;
+				break;
+			case 3:
+				sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop72, 1, 16, 300, _roomStates_loop72, 16, 16, 0);
+				_roomStates_pu2 = 3;
+				break;
+			case 4:
+				terminateMachine(_roomStates_field8Ah);
+				terminateMachine(_roomStates_field8Eh);
+				ws_unhide_walker(_G(my_walker));
+				_roomStates_pu2 = 4;
+				break;
+			default:
+				break;
+			}
+
+			break;
+		case 2:
+			switch (_roomStates_ripTalker) {
+			case 1:
+			case 3:
+			case 4:
+				sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop62, 4, 1, 300, _roomStates_loop62, 1, 1, 0);
+				_roomStates_pu2 = 1;
+				break;
+
+			case 2:
+				kernel_timing_trigger(30, 300, nullptr);
+				break;
+			default:
+				break;
+			}
+			break;
+		case 3:
+			switch (_roomStates_ripTalker) {
+			case 3:
+				_roomStates_ripTalker = 1;
+				// Fallthrough on purpose
+			case 1:
+			case 2:
+			case 4:
+				sendWSMessage_10000(1, _roomStates_field8Ah, _roomStates_loop72, 16, 1, 300, _roomStates_loop72, 1, 1, 0);
+				mouse_lock_sprite(false);
+				kernel_examine_inventory_object("PING MATCH", _G(master_palette), 5, 1, 110, 220, 9, "801R44", -1);
+				_roomStates_pu2 = 1;
+			default:
+				break;
+			}
+			break;
+		default:
+			break;
+		}
+		break;
+	case 310:
+		player_set_commands_allowed(true);
+		_roomStates_ripTalker = 3;
+		break;
+	case 400:
+		if (_roomStates_field18 == 5)
+			_roomStates_ripTalker2 = 5;
+
+		switch (_roomStates_ripTalker2) {
+		case 1:
+			switch (_roomStates_field18) {
+			case 1:
+				sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field642, 14, 14, -1, _roomStates_field642, 14, 14, 0);
+				kernel_timing_trigger(60, 400, nullptr);
+				break;
+			case 2:
+				sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field742, 1, 4, 400, _roomStates_field742, 5, 7, 4);
+				_roomStates_ripTalker2 = 2;
+				break;
+			case 3:
+				sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field6C2, 69, 110, 400, _roomStates_field642, 14, 14, 0);
+				_roomStates_field18 = 1;
+				break;
+			case 4:
+				sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field6C2, 2, 68, 400, _roomStates_field642, 14, 14, 0);
+				_roomStates_field18 = 1;
+				break;
+			case 5:
+				_roomStates_ripTalker2 = 5;
+				break;
+			default:
+				break;
+			}
+			break;
+		case 2:
+			switch (_roomStates_field18) {
+			case 4:
+			case 5:
+				sendWSMessage_10000(1, _roomStates_field96h, _roomStates_field742, 4, 1, 400, _roomStates_field642, 14, 14, 0);
+				_roomStates_ripTalker2 = 1;
+				break;
+			default:
+				break;
+			}
+			break;
+		default:
+			break;
+		}
+
+		break;
+
+	default:
+		break;
+	}
 }
 
 void Room801::room801_conv801a() {
diff --git a/engines/m4/riddle/rooms/section8/room801.h b/engines/m4/riddle/rooms/section8/room801.h
index c7ccf2a0acb..7a53fd4f1c9 100644
--- a/engines/m4/riddle/rooms/section8/room801.h
+++ b/engines/m4/riddle/rooms/section8/room801.h
@@ -43,24 +43,30 @@ private:
 	void room801_conv801a();
 
 	int32 _roomStates_ear2 = 0;
+	int32 _roomStates_field4 = 0;
+	int32 _roomStates_field6 = 0;
 	int32 _roomStates_field18 = 0;
 	int32 _roomStates_field24 = 0;
+	int32 _roomStates_field2A = 0;
+	int32 _roomStates_field4C2 = 0;
+	int32 _roomStates_field502 = 0;
 	int32 _roomStates_field60 = 0;
-	int32 _roomStates_field64 = 0;
-	int32 _roomStates_field68 = 0;
-	int32 _roomStates_field70 = 0;
-	int32 _roomStates_field74 = 0;
-	int32 _roomStates_field6C = 0;
-	int32 _roomStates_field78 = 0;
+	int32 _roomStates_field642 = 0;
+	int32 _roomStates_field682 = 0;
+	int32 _roomStates_field702 = 0;
+	int32 _roomStates_field742 = 0;
+	int32 _roomStates_field6C2 = 0;
+	int32 _roomStates_field782 = 0;
 	int32 _roomStates_field7C = 0;
+	int32 _roomStates_field7E = 0;
 	int32 _roomStates_field80 = 0;
 	int32 _roomStates_loop0 = 0;
 	int32 _roomStates_loop1 = 0;
 	int32 _roomStates_loop2 = 0;
 	int32 _roomStates_loop3 = 0;
 	int32 _roomStates_loop4 = 0;
-	int32 _roomStates_loop6 = 0;
-	int32 _roomStates_loop7 = 0;
+	int32 _roomStates_loop62 = 0;
+	int32 _roomStates_loop72 = 0;
 	int32 _roomStates_pu = 0;
 	int32 _roomStates_pu2 = 0;
 	int32 _roomStates_ripTalk = 0;
@@ -68,6 +74,7 @@ private:
 	int32 _roomStates_ripTalker2 = 0;
 	int32 _roomStates_ripTalking = 0;
 	int32 _roomStates_tt = 0;
+	int32 _roomStates_tt2 = 0;
 	int32 _roomStates_untie2 = 0;
 	int32 _roomStates_val1 = 0;
 	int32 _roomStates_val2 = 0;
@@ -77,6 +84,7 @@ private:
 	machine *_roomStates_field86h = nullptr;
 	machine *_roomStates_field8Ah = nullptr;
 	machine *_roomStates_field8Eh = nullptr;
+	machine *_roomStates_field92h = nullptr;
 	machine *_roomStates_field96h = nullptr;
 	machine *_roomStates_field9Ah = nullptr;
 	machine *_roomStates_field9Eh = nullptr;




More information about the Scummvm-git-logs mailing list