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

Strangerke noreply at scummvm.org
Thu Jan 30 07:58:04 UTC 2025


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:
c585ffb34f M4: RIDDLE: Recover work on the hardcoded logic of room 808, fix a bug in pre_parser


Commit: c585ffb34f5b658c605a7a3aa447a099add05267
    https://github.com/scummvm/scummvm/commit/c585ffb34f5b658c605a7a3aa447a099add05267
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-01-30T08:56:58+01:00

Commit Message:
M4: RIDDLE: Recover work on the hardcoded logic of room 808, fix a bug in pre_parser

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


diff --git a/engines/m4/riddle/flags.h b/engines/m4/riddle/flags.h
index 240f100eede..781d3d18b94 100644
--- a/engines/m4/riddle/flags.h
+++ b/engines/m4/riddle/flags.h
@@ -311,8 +311,8 @@ enum Flag {
 	V274 = 274,
 	V275 = 275,
 	V276 = 276,
-	V277 = 277,
-	V278 = 278,
+	V277 = 277, // look at "hole in chasm wall", 808 -> 1 when animation displayed once
+	V278 = 278, // look at "hole in bridge", 808 -> 1 when animation displayed once
 	V279 = 279,
 	V280 = 280,
 	V281 = 281,
diff --git a/engines/m4/riddle/rooms/section8/room808.cpp b/engines/m4/riddle/rooms/section8/room808.cpp
index ec236867d0d..9d5f68d6f76 100644
--- a/engines/m4/riddle/rooms/section8/room808.cpp
+++ b/engines/m4/riddle/rooms/section8/room808.cpp
@@ -214,7 +214,7 @@ void Room808::pre_parser() {
 			_G(player).walk_x = 202;
 			_G(player).walk_y = 179;
 			_G(player).walk_facing = 2;
-		} else if (player_said_any("mei chen", "east") || scumm_stricmp(_G(player).noun, "wheel") || scumm_stricmp(_G(player).noun, "bridge")) {
+		} else if (player_said_any("mei chen", "east") || !scumm_strnicmp(_G(player).noun, "wheel", 5) || !scumm_strnicmp(_G(player).noun, "bridge", 6)) {
 			_G(player).need_to_walk = false;
 			_G(player).ready_to_walk = true;
 			_G(player).waiting_for_walk = false;
@@ -489,6 +489,85 @@ void Room808::parser() {
 		break;
 
 	case 1:
+		if (player_said(" ")) {
+			digi_play("808r01", 1, 255, -1, -1);
+		} else if (!scumm_strnicmp(_G(player).noun, "wheel", 5) || !scumm_strnicmp(_G(player).noun, "bridge", 6)) {
+			switch (_G(kernel).trigger) {
+				// TODO Not implemented
+			default:
+				break;
+			}
+		} else if (!scumm_stricmp(_G(player).noun, "FARMER'S SHOVEL") && inv_object_in_scene("FARMER'S SHOVEL", 808)) {
+			// TODO Not implemented
+		} else if (player_said("chain")) {
+			digi_play("808r04", 1, 255, -1, -1);
+		} else if (player_said("slot")) {
+			digi_play("808r05", 1, 255, -1, -1);
+		} else if (player_said("crank") && inv_object_in_scene("crank", 808)) {
+			digi_play("808r06", 1, 255, -1, -1);
+		} else if (player_said("lit urn")) {
+			digi_play("808r07", 1, 255, -1, -1);
+		} else if (player_said("unlit urn")) {
+			digi_play("com061", 1, 255, -1, 997);
+		} else if (player_said("soldier")) {
+			digi_play("808r09", 1, 255, -1, -1);
+		} else if (player_said ("broken feet")) {
+			digi_play("808r10", 1, 255, -1, -1);
+		} else if (player_said("large hole")) {
+			digi_play("808r11", 1, 255, -1, -1);
+		} else if (player_said_any("corridor", "east")) {
+			digi_play("808r12", 1, 255, -1, -1);
+		} else if (player_said("lower staircase")) {
+			digi_play("808r13", 1, 255, -1, -1);
+		} else if (player_said("chasm")) {
+			switch (_G(kernel).trigger) {
+				// TODO not implemented
+			default:
+				break;
+			}
+		} else if (player_said("hole in bridge")) {
+			switch (_G(kernel).trigger) {
+			case -1:
+				if (_G(flags[V278]) && _G(flags[V277]))
+					digi_play("808r16", 1, 255, -1, -1);
+				else {
+					_G(flags[V278]) = 1;
+					digi_play("808r15", 1, 255, _G(flags[V278]) ? 10 : -1, -1);
+				}
+				break;
+
+			case 10:
+				digi_play("808r15a", 1, 255, -1, -1);
+				break;
+
+			default:
+				break;
+			}
+		} else if (player_said("hole in chasm wall")) {
+			switch (_G(kernel).trigger) {
+			case -1:
+				if (_G(flags[V278]) && _G(flags[V277]))
+					digi_play("808r16", 1, 255, -1, -1);
+				else {
+					_G(flags[V277]) = 1;
+					digi_play("808r17", 1, 255, _G(flags[V278])  ? 10 : -1, -1);
+				}
+				break;
+
+			case 10:
+				digi_play("808r17a", 1, 255, -1, -1);
+				break;
+
+			default:
+				break;
+			}
+		} else if (player_said("mei chen")) {
+			digi_play("808r18", 1, 255, -1, -1);
+		} else
+			break;
+
+		return;
+
 	case 2:
 	case 3:
 		break;




More information about the Scummvm-git-logs mailing list