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

dreammaster noreply at scummvm.org
Fri Aug 2 03:53:37 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:
e3c18c87ae M4: RIDDLE: Finished room 303 daemon


Commit: e3c18c87aee96680bb98a87d1d32049fe750de03
    https://github.com/scummvm/scummvm/commit/e3c18c87aee96680bb98a87d1d32049fe750de03
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-01T20:53:25-07:00

Commit Message:
M4: RIDDLE: Finished room 303 daemon

Changed paths:
    engines/m4/riddle/rooms/section3/room303.cpp


diff --git a/engines/m4/riddle/rooms/section3/room303.cpp b/engines/m4/riddle/rooms/section3/room303.cpp
index 648ac3bc123..1f4949d569e 100644
--- a/engines/m4/riddle/rooms/section3/room303.cpp
+++ b/engines/m4/riddle/rooms/section3/room303.cpp
@@ -43,6 +43,33 @@ static const char *SAID[][2] = {
 	{ nullptr, nullptr }
 };
 
+static const int16 NORMAL_DIRS[] = { 200, 201, 202, -1 };
+static const char *NORMAL_NAMES[] = {
+	"Feng Li walk pos3",
+	"Feng Li walk pos4",
+	"Feng Li walk pos5"
+};
+static const int16 SHADOW_DIRS[] = { 210, 211, 212, -1 };
+static const char *SHADOW_NAMES[] = {
+	"candleman shadow3",
+	"candleman shadow4",
+	"candleman shadow5"
+};
+
+static const int16 NORMAL_DIRS2[] = { 220, 221, 222, -1 };
+static const char *NORMAL_NAMES2[] = {
+	"mei chen ny walker pos3",
+	"mei chen ny walker pos4",
+	"mei chen ny walker pos5"
+};
+static const int16 SHADOW_DIRS2[] = { 230, 231, 232, -1 };
+static const char *SHADOW_NAMES2[] = {
+	"candleman shadow3",
+	"candleman shadow4",
+	"candleman shadow5"
+};
+
+
 void Room303::preload() {
 	LoadWSAssets("OTHER SCRIPT");
 
@@ -67,32 +94,6 @@ void Room303::preload() {
 }
 
 void Room303::init() {
-	static const int16 NORMAL_DIRS[] = { 200, 201, 202, -1 };
-	static const char *NORMAL_NAMES[] = {
-		"Feng Li walk pos3",
-		"Feng Li walk pos4",
-		"Feng Li walk pos5"
-	};
-	static const int16 SHADOW_DIRS[] = { 210, 211, 212, -1 };
-	static const char *SHADOW_NAMES[] = {
-		"candleman shadow3",
-		"candleman shadow4",
-		"candleman shadow5"
-	};
-
-	static const int16 NORMAL_DIRS2[] = { 220, 221, 222, -1 };
-	static const char *NORMAL_NAMES2[] = {
-		"mei chen ny walker pos3",
-		"mei chen ny walker pos4",
-		"mei chen ny walker pos5"
-	};
-	static const int16 SHADOW_DIRS2[] = { 230, 231, 232, -1 };
-	static const char *SHADOW_NAMES2[] = {
-		"candleman shadow3",
-		"candleman shadow4",
-		"candleman shadow5"
-	};
-
 	_val1 = _lonelyFlag = 0;
 
 	if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
@@ -329,6 +330,8 @@ void Room303::init() {
 }
 
 void Room303::daemon() {
+	int frame;
+
 	switch (_G(kernel).trigger) {
 	case 3:
 		sendWSMessage_120000(4);
@@ -717,7 +720,6 @@ void Room303::daemon() {
 		break;
 
 	case 201:
-		// TODO: Complete trigger 201
 		switch (_val10) {
 		case 0:
 			switch (_val11) {
@@ -734,7 +736,171 @@ void Room303::daemon() {
 					_G(kernel).trigger_mode = KT_DAEMON;
 				}
 
+				++_val8;
+				if (imath_ranged_rand(7, 12) < _val8) {
+					_val8 = 0;
+
+					switch (imath_ranged_rand(1, 3)) {
+					case 1:
+						sendWSMessage_10000(1, _hands4, _hands2, 1, 14, 200,
+							_hands2, 14, 14, 0);
+						_val10 = _val11 = 1;
+						break;
+
+					case 2:
+						sendWSMessage_10000(1, _hands4, _hands1, 2, 9, 200,
+							_hands1, 9, 9, 0);
+						_val10 = _val11 = 1;
+						break;
+
+					case 3:
+						kernel_timing_trigger(60, 201);
+						break;
+
+					default:
+						break;
+					}
+				} else {
+					kernel_timing_trigger(60, 201);
+				}
+				break;
+
+			case 3:
+				sendWSMessage_10000(1, _hands4, _hands3, 1, 12, 200,
+					_hands3, 12, 12, 0);
+				_val10 = 3;
+				break;
+
+			case 4:
+			case 5:
+				sendWSMessage_10000(1, _hands4, _hands3, 17, 17, 200,
+					_hands3, 17, 17, 0);
+				_val10 = 4;
+				break;
+
+			case 6:
+				sendWSMessage_10000(1, _hands4, _meiLips, 1, 13, 200,
+					_meiLips, 13, 13, 0);
+				_val10 = 6;
+				break;
+
+			case 7:
+				sendWSMessage_10000(1, _hands4, _hands2, 1, 14, 200,
+					_hands2, 14, 14, 0);
+				_val10 = _val11 = 1;
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 1:
+			if (_val11 == 1) {
+				++_val8;
+				if (imath_ranged_rand(7, 12) < _val8) {
+					_val8 = 0;
+
+					switch (imath_ranged_rand(1, 2)) {
+					case 1:
+						sendWSMessage_10000(1, _hands4, _hands2, 14, 1, 200,
+							_hands1, 1, 1, 0);
+						_val10 = _val11 = 0;
+						break;
+
+					case 2:
+						kernel_timing_trigger(60, 201);
+						break;
+
+					default:
+						break;
+					}
+				} else {
+					kernel_timing_trigger(60, 201);
+				}
+			} else {
+				sendWSMessage_10000(1, _hands4, _hands2, 14, 1, 200,
+					_hands1, 1, 1, 0);
+				_val10 = 0;
+			}
+			break;
+
+		case 2:
+			if (_val11 == 2) {
+				++_val8;
+				if (imath_ranged_rand(7, 12) < _val8) {
+					_val8 = 0;
+
+					switch (imath_ranged_rand(1, 2)) {
+					case 1:
+						sendWSMessage_10000(1, _hands4, _hands1, 9, 2, 200,
+							_hands1, 1, 1, 0);
+						break;
+
+					case 2:
+						kernel_timing_trigger(60, 201);
+						break;
+
+					default:
+						break;
+					}
+				} else {
+					kernel_timing_trigger(60, 201);
+				}
+				break;
+			} else {
+				sendWSMessage_10000(1, _hands4, _hands1, 9, 2, 200,
+					_hands1, 1, 1, 0);
+				_val10 = 0;
+			}
+			break;
+
+		case 3:
+			if (_val11 == 3) {
+				sendWSMessage_10000(1, _hands4, _hands3, 13, 13, 200,
+					_hands3, 13, 16, 0);
+			} else {
+				sendWSMessage_10000(1, _hands4, _hands3, 12, 1, 200,
+					_hands1, 1, 1, 0);
+				_val10 = 0;
+			}
+			break;
+
+		case 4:
+			switch (_val11) {
+			case 4:
+				sendWSMessage_10000(1, _hands4, _hands3, 17, 17, 200,
+					_hands3, 17, 17, 0);
+				break;
+
+			case 5:
+				frame = imath_ranged_rand(17, 20);
+				sendWSMessage_10000(1, _hands4, _hands3, frame, frame, 200,
+					_hands3, frame, frame, 0);
+				break;
+
+			default:
+				sendWSMessage_10000(1, _hands4, _hands1, 1, 1, 200,
+					_hands1, 1, 1, 0);
+				_val10 = 0;
+				break;
+			}
+			break;
+
+		case 6:
+			if (_val11 == 6) {
+				frame = imath_ranged_rand(14, 16);
+				sendWSMessage_10000(1, _hands4, _meiLips, frame, frame, 200,
+					_meiLips, frame, frame, 0);
+			} else {
+				sendWSMessage_10000(1, _hands4, _meiLips, 17, 24, 200,
+					_hands1, 1, 1, 0);
+				_val10 = 0;
 			}
+			break;
+
+		default:
+			break;
 		}
 		break;
 
@@ -867,6 +1033,114 @@ void Room303::daemon() {
 		kernel_trigger_dispatchx(kernel_trigger_create(401));
 		break;
 
+	case 401:
+		switch (_val14) {
+		case 0:
+			switch (_val15) {
+			case 0:
+				sendWSMessage_10000(1, _machine1, _clasped1, 1, 1, 400,
+					_clasped1, 1, 1, 0);
+				break;
+
+			case 1:
+			case 2:
+			case 4:
+				sendWSMessage_10000(1, _machine1, _clasped1, 1, 18, 400,
+					_clasped4, 1, 6, 1);
+				_val14 = 1;
+				break;
+
+			case 3:
+				sendWSMessage_10000(1, _machine1, _clasped2, 1, 13, 400,
+					_clasped2, 14, 19, 1);
+				_val14 = 3;
+				break;
+
+			case 5:
+				terminateMachineAndNull(_machine1);
+
+				if (_val13)
+					_machine1 = triggerMachineByHash_3000(8, 2, NORMAL_DIRS, SHADOW_DIRS,
+						480, 256, 7, triggerMachineByHashCallback3000, "fl walker");
+				else
+					_machine1 = triggerMachineByHash_3000(8, 2, NORMAL_DIRS, SHADOW_DIRS,
+						706, 256, 5, triggerMachineByHashCallback3000, "fl walker");
+
+				_G(kernel).trigger_mode = KT_PARSE;
+				kernel_timing_trigger(1, 1);
+				return;
+
+			default:
+				break;
+			}
+			break;
+
+		case 1:
+			switch (_val15) {
+			case 0:
+				sendWSMessage_10000(1, _machine1, _clasped1, 16, 1, 400,
+					_clasped1, 1, 1, 0);
+				_val14 = 0;
+				break;
+
+			case 1:
+				frame = imath_ranged_rand(1, 6);
+				sendWSMessage_10000(1, _machine1, _clasped4, frame, frame, 400,
+					_clasped4, frame, frame, 0);
+				break;
+
+			case 3:
+			case 5:
+				sendWSMessage_10000(1, _machine1, _clasped1, 16, 1, 400,
+					_clasped2, 1, 1, 0);
+				_val14 = 0;
+				break;
+
+			case 4:
+				frame = imath_ranged_rand(1, 6);
+				sendWSMessage_10000(1, _machine1, _clasped4, frame, frame, 400,
+					_clasped4, frame, frame, 0);
+				player_set_commands_allowed(true);
+				_val15 = 1;
+				break;
+
+			default:
+				sendWSMessage_10000(1, _machine1, _clasped3, 1, 18, 400,
+					_clasped3, 19, 21, 1);
+				_val14 = 2;
+				break;
+			}
+			break;
+
+		case 2:
+			if (_val15 == 2) {
+				frame = imath_ranged_rand(19, 21);
+				sendWSMessage_10000(1, _machine1, _clasped3, frame, frame, 400,
+					_clasped3, frame, frame, 0);
+			} else {
+				sendWSMessage_10000(1, _machine1, _clasped3, 18, 1, 400,
+					_clasped4, 1, 6, 0);
+				_val14 = 1;
+			}
+			break;
+
+		case 3:
+			if (_val15 == 3) {
+				frame = imath_ranged_rand(14, 19);
+				sendWSMessage_10000(1, _machine1, _clasped2, frame, frame, 400,
+					_clasped2, frame, frame, 0);
+			} else {
+				sendWSMessage_10000(1, _machine1, _clasped2, 20, 31, 400,
+					_clasped2, 1, 1, 0);
+				_val14 = 0;
+			}
+			break;
+
+		default:
+			break;
+		}
+		break;
+
 	default:
 		break;
 	}




More information about the Scummvm-git-logs mailing list