[Scummvm-git-logs] scummvm master -> 06f8bf7f441eb799a68a8acac931b109e4f71cbc

dreammaster noreply at scummvm.org
Wed Sep 11 04:18: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:
06f8bf7f44 M4: RIDDLE: More room 504 parser


Commit: 06f8bf7f441eb799a68a8acac931b109e4f71cbc
    https://github.com/scummvm/scummvm/commit/06f8bf7f441eb799a68a8acac931b109e4f71cbc
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-10T21:18:50-07:00

Commit Message:
M4: RIDDLE: More room 504 parser

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


diff --git a/engines/m4/riddle/rooms/section5/room504.cpp b/engines/m4/riddle/rooms/section5/room504.cpp
index df4cf73551e..b430f55eab0 100644
--- a/engines/m4/riddle/rooms/section5/room504.cpp
+++ b/engines/m4/riddle/rooms/section5/room504.cpp
@@ -492,7 +492,422 @@ void Room504::parser() {
 	} else if (takeFlag && !_flag1 && player_said_any("VINES ", "COIL OF VINES  ") &&
 			_G(flags)[V171] == 4) {
 		digi_play("COM126", 1, 255, -1, 997);
+
+	} else if (_flag1 && _G(player).click_x <= 300 &&
+			player_said("ROPE COIL ") && _G(flags)[V154] == 1) {
+		player_set_commands_allowed(false);
+		_val1 = 1;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(528, 168, nullptr, 595, 8);
+	} else if (_flag1 && _G(player).click_x <= 300 &&
+			player_said("GREEN VINE COIL ") && _G(flags)[V152] == 1) {
+		player_set_commands_allowed(false);
+		_val1 = 2;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(528, 168, nullptr, 595, 8);
+	} else if (_flag1 && _G(player).click_x <= 300 &&
+			player_said("BROWN VINE COIL ") && _G(flags)[V153] == 1) {
+		player_set_commands_allowed(false);
+		_val1 = 3;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(528, 168, nullptr, 595, 8);
+	} else if (_flag1 && _G(player).click_x <= 300 &&
+			player_said("COIL OF VINES ") && _G(flags)[V171] == 1) {
+		player_set_commands_allowed(false);
+		_val1 = 4;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(528, 168, nullptr, 595, 8);
+
+	} else if (!_flag1 && player_said("TREE", "ROPE COIL  ")) {
+		player_set_commands_allowed(false);
+		_val1 = 1;
+		_G(flags)[V154] = 2;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 611, 11);
+	} else if (!_flag1 && player_said("TREE", "GREEN VINE COIL  ")) {
+		player_set_commands_allowed(false);
+		_val1 = 2;
+		_G(flags)[V152] = 2;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 611, 11);
+	} else if (!_flag1 && player_said("TREE", "COIL OF VINES  ")) {
+		player_set_commands_allowed(false);
+		_val1 = 4;
+		_G(flags)[V171] = 2;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 611, 11);
+	} else if (!_flag1 && player_said("TREE", "BROWN VINE COIL  ")) {
+		player_set_commands_allowed(false);
+		_val1 = 3;
+		_G(flags)[V153] = 2;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 611, 11);
+
+	} else if (!_flag1 && _G(player).click_x > 300 && player_said("ROPE COIL   ")) {
+		player_set_commands_allowed(false);
+		_val1 = 1;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(200, 153, nullptr, 620, 3);
+	} else if (!_flag1 && _G(player).click_x > 300 && player_said("GREEN VINE COIL   ")) {
+		player_set_commands_allowed(false);
+		_val1 = 2;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(200, 153, nullptr, 620, 3);
+	} else if (!_flag1 && _G(player).click_x > 300 && player_said("COIL OF VINES   ")) {
+		player_set_commands_allowed(false);
+		_val1 = 3;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(200, 153, nullptr, 620, 3);
+	} else if (!_flag1 && _G(player).click_x > 300 && player_said("BROWN VINE COIL   ")) {
+		player_set_commands_allowed(false);
+		_val1 = 4;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(200, 153, nullptr, 620, 3);
+
+	} else if (player_said("TREE") && player_said("ROPE") &&
+			!_flag1 && inv_player_has("ROPE")) {
+		player_set_commands_allowed(false);
+		_val1 = 1;
+		_G(flags)[V154] = 0;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 630, 11);
+	} else if (player_said("TREE") && player_said("GREEN VINE") &&
+			!_flag1 && inv_player_has("GREEN VINE")) {
+		player_set_commands_allowed(false);
+		_val1 = 2;
+		_G(flags)[V152] = 0;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 630, 11);
+	} else if (player_said("TREE") && player_said("VINES") &&
+			!_flag1 && inv_player_has("VINES")) {
+		player_set_commands_allowed(false);
+		_val1 = 4;
+		_G(flags)[V171] = 0;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 630, 11);
+	} else if (player_said("TREE") && player_said("BROWN VINE") &&
+			!_flag1 && inv_player_has("BROWN VINE")) {
+		player_set_commands_allowed(false);
+		_val1 = 3;
+		_G(flags)[V153] = 0;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 630, 11);
+
+	} else if (_flag1 && vineStatueFlag && player_said("ROPE COIL    ")) {
+		player_set_commands_allowed(false);
+		_val1 = 1;
+		_G(flags)[V154] = 2;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		kernel_timing_trigger(1, 638);
+	} else if (_flag1 && vineStatueFlag && player_said("GREEN VINE COIL    ")) {
+		player_set_commands_allowed(false);
+		_val1 = 2;
+		_G(flags)[V152] = 2;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		kernel_timing_trigger(1, 638);
+	} else if (_flag1 && vineStatueFlag && player_said("BROWN VINE COIL    ")) {
+		player_set_commands_allowed(false);
+		_val1 = 3;
+		_G(flags)[V153] = 2;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		kernel_timing_trigger(1, 638);
+	} else if (_flag1 && vineStatueFlag && player_said("COIL OF VINES    ")) {
+		player_set_commands_allowed(false);
+		_val1 = 4;
+		_G(flags)[V171] = 2;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		kernel_timing_trigger(1, 638);
+
+	} else if (useFlag && player_said_any("ROPE ", "ROPE   ") &&
+			_G(flags)[V154] == 2 && _flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 1;
+		_G(flags)[V154] = 5;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(485, 166, nullptr, 675, 11);
+	} else if (useFlag && player_said_any("GREEN VINE ", "GREEN VINE   ") &&
+			_G(flags)[V152] == 2 && _flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 2;
+		_G(flags)[V152] = 5;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(485, 166, nullptr, 675, 11);
+	} else if (useFlag && player_said_any("BROWN VINE ", "BROWN VINE   ") &&
+			_G(flags)[V153] == 2 && _flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 3;
+		_G(flags)[V153] = 5;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(485, 166, nullptr, 675, 11);
+	} else if (useFlag && player_said("VINES ") &&
+			_G(flags)[V171] == 2 && _flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 4;
+		_G(flags)[V171] = 5;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(485, 166, nullptr, 675, 11);
+
+	} else if (useFlag && player_said_any("ROPE  ", "ROPE   ") &&
+			_G(flags)[V154] == 2 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 1;
+		_G(flags)[V154] = 4;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 684, 11);
+	} else if (useFlag && player_said_any("GREEN VINE  ", "GREEN VINE   ") &&
+			_G(flags)[V152] == 2 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 2;
+		_G(flags)[V152] = 4;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 684, 11);
+	} else if (useFlag && player_said_any("BROWN VINE  ", "BROWN VINE   ") &&
+			_G(flags)[V154] == 2 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 3;
+		_G(flags)[V153] = 4;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 684, 11);
+	} else if (useFlag && player_said("VINES  ") &&
+			_G(flags)[V171] == 2 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 1;
+		_G(flags)[V171] = 4;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 684, 11);
+
+	} else if (takeFlag && player_said("ROPE  ") &&
+			_G(flags)[V154] == 0 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 1;
+		_G(flags)[V154] = 3;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 693, 11);
+	} else if (takeFlag && player_said_any("GREEN VINE  ", "GREEN VINE COIL   ") &&
+			_G(flags)[V152] == 0 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 2;
+		_G(flags)[V152] = 3;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 693, 11);
+	} else if (takeFlag && player_said_any("BROWN VINE  ", "BROWN VINE COIL   ") &&
+			_G(flags)[V153] == 0 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 3;
+		_G(flags)[V153] = 3;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 693, 11);
+	} else if (takeFlag && player_said_any("VINES  ", "COIL OF VINES   ") &&
+			_G(flags)[V171] == 0 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 4;
+		_G(flags)[V171] = 3;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 693, 11);
+
+	} else if (takeFlag && player_said("ROPE  ") &&
+			_G(flags)[V154] == 5 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 1;
+		_G(flags)[V154] = 3;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 700, 11);
+	} else if (takeFlag && player_said_any("GREEN VINE  ", "GREEN VINE COIL   ") &&
+			_G(flags)[V153] == 5 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 3;
+		_G(flags)[V153] = 3;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 700, 11);
+	} else if (takeFlag && player_said_any("BROWN VINE  ", "BROWN VINE COIL   ") &&
+			_G(flags)[V152] == 5 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 2;
+		_G(flags)[V152] = 3;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 700, 11);
+	} else if (takeFlag && player_said_any("VINES  ", "COIL OF VINES   ") &&
+			_G(flags)[V171] == 5 && !_flag1) {
+		player_set_commands_allowed(false);
+		_val1 = 4;
+		_G(flags)[V171] = 3;
+		_G(kernel).trigger_mode = KT_DAEMON;
+		ws_walk(135, 146, nullptr, 700, 11);
+
+	} else if (takeFlag && _flag1 && player_said_any("ROPE  ", "ROPE COIL    ") &&
+			_G(flags)[V154] == 5) {
+		digi_play("COM126", 1, 255, -1, 997);
+	} else if (takeFlag && _flag1 && player_said_any("GREEN VINE  ", "GREEN VINE COIL    ") &&
+			_G(flags)[V152] == 5) {
+		digi_play("COM126", 1, 255, -1, 997);
+	} else if (takeFlag && _flag1 && player_said_any("BROWN VINE  ", "BROWN VINE COIL    ") &&
+			_G(flags)[V153] == 5) {
+		digi_play("COM126", 1, 255, -1, 997);
+	} else if (takeFlag && _flag1 && player_said_any("VINES  ", "COIL OF VINES    ") &&
+			_G(flags)[V171] == 5) {
+		digi_play("COM126", 1, 255, -1, 997);
+
+	} else if (lookFlag && player_said("STELE") && _G(flags)[V149] == 1) {
+		digi_play("504R23", 1);
+	} else if (_G(flags)[V149] == 0 && lookFlag && (
+			player_said("STELE") || player_said_any("JOURNAL", "STELE"))) {
+		switch (_G(kernel).trigger) {
+		case -1:
+		case 666:
+			player_set_commands_allowed(false);
+			digi_play("504R22", 1, 255, 2);
+			break;
+		case 2:
+			digi_preload("950_s34");
+			_ripSketching = series_load("RIP SKETCHING IN NOTEBOOK POS 3");
+			setGlobals1(_ripSketching, 1, 22, 22, 22, 0, 23, 36, 36, 36);
+			sendWSMessage_110000(3);
+			break;
+		case 3:
+			sendWSMessage_190000(9);
+			sendWSMessage_120000(4);
+			digi_play("950_s34", 1, 255, 7);
+			break;
+		case 4:
+			sendWSMessage_110000(5);
+			break;
+		case 5:
+			sendWSMessage_140000(6);
+			break;
+		case 6:
+			digi_unload("950_s34");
+			series_unload(_ripSketching);
+			_G(flags)[V149] = 1;
+			_G(flags)[V283] = 1;
+			player_set_commands_allowed(true);
+			break;
+		case 7:
+			switch (_G(player_info).facing) {
+			case 3:
+			case 9:
+				sendWSMessage_190000(5);
+				break;
+			default:
+				break;
+			}
+			break;
+		default:
+			break;
+		}
+	} else if (_G(flags)[V149] == 1 && player_said("JOURNAL", "STELE")) {
+		Common::strcpy_s(_G(player).noun, " ");
+		return;
+	} else if (takeFlag && ITEM("WHEELED TOY") && _flag1) {
+		if (_G(flags)[V141] == 1) {
+			switch (_G(kernel).trigger) {
+			case -1:
+				player_set_commands_allowed(false);
+				g_engine->camera_shift_xy(862, 0);
+				kernel_timing_trigger(1, 1);
+				break;
+			case 1:
+				if (g_engine->game_camera_panning()) {
+					kernel_timing_trigger(5, 1);
+				} else {
+					_ripLowReach = series_load("RIP LOW REACH POS1");
+					setGlobals1(_ripLowReach, 1, 10, 10, 10);
+					sendWSMessage_110000(2);
+				}
+				break;
+			case 2:
+				terminateMachineAndNull(_toy);
+				kernel_examine_inventory_object("PING WHEELED TOY",
+					_G(master_palette), 5, 1, 113, 107, 3, nullptr, -1);
+				break;
+			case 3:
+				sendWSMessage_140000(4);
+				break;
+			case 4:
+				series_unload(_ripLowReach);
+				inv_give_to_player("WHELED TOY");
+				setMiscItems();
+				player_set_commands_allowed(true);
+				break;
+			default:
+				break;
+			}
+		} else {
+			digi_play("504R48", 1);
+		}
+	} else if (takeFlag && player_said("WOODEN LADDER ") &&
+			inv_object_is_here("WOODEN LADDER") &&
+			_G(flags)[V155] == 1 && _flag1) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			player_set_commands_allowed(false);
+			g_engine->camera_shift_xy(0, 0);
+			kernel_timing_trigger(1, 1);
+			break;
+		case 1:
+			if (g_engine->game_camera_panning()) {
+				kernel_timing_trigger(5, 1);
+			} else {
+				_ripMedReach = series_load("RIP TREK MED REACH HAND POS1");
+				setGlobals1(_ripMedReach, 1, 10, 10, 10);
+				sendWSMessage_110000(2);
+			}
+			break;
+		case 2:
+			terminateMachineAndNull(_ladder);
+			kernel_examine_inventory_object("PING WOODEN LADDER",
+				_G(master_palette), 5, 1, 480, 75, 3, nullptr, -1);
+			break;
+		case 3:
+			sendWSMessage_140000(4);
+			break;
+		case 4:
+			inv_give_to_player("WOODEN LADDER");
+			setMiscItems();
+			series_unload(_ripMedReach);
+			player_set_commands_allowed(true);
+			break;
+		default:
+			break;
+		}
+	} else if (takeFlag && player_said("WOODEN LADDER") &&
+			_G(flags)[V141] == 0) {
+		digi_play("504R48", 1);
+	} else if (takeFlag && ITEM("WOODEN LADDER") &&
+			_G(flags)[V155] == 0 && _flag1 && _G(flags)[V141] == 1) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			player_set_commands_allowed(false);
+			g_engine->camera_shift_xy(862, 0);
+			kernel_timing_trigger(1, 1);
+			break;
+		case 1:
+			if (g_engine->game_camera_panning()) {
+				kernel_timing_trigger(5, 1);
+			} else {
+				_ripLowReach = series_load("RIP LOW REACH POS1");
+				setGlobals1(_ripLowReach, 1, 10, 10, 10);
+				sendWSMessage_110000(2);
+			}
+			break;
+		case 2:
+			terminateMachineAndNull(_ladder);
+			kernel_examine_inventory_object("PING WOODEN LADDER",
+				_G(master_palette), 5, 1, 136, 120, 3, nullptr, -1);
+			break;
+		case 3:
+			sendWSMessage_140000(4);
+			break;
+		case 4:
+			inv_give_to_player("WOODEN LADDER");
+			setMiscItems();
+			series_unload(_ripLowReach);
+			player_set_commands_allowed(true);
+			break;
+		default:
+			break;
+		}
 	}
+
 	// TODO
 	else {
 		return;
diff --git a/engines/m4/riddle/rooms/section5/room504.h b/engines/m4/riddle/rooms/section5/room504.h
index 0561134b26c..120fc735b0f 100644
--- a/engines/m4/riddle/rooms/section5/room504.h
+++ b/engines/m4/riddle/rooms/section5/room504.h
@@ -37,6 +37,9 @@ private:
 	int _volume = 0;
 	int _convState = 0;
 	int _convState2 = 0;
+	int _ripSketching = 0;
+	int _ripLowReach = 0;
+	int _ripMedReach = 0;
 
 	machine *_vines1 = nullptr;
 	machine *_vines2 = nullptr;




More information about the Scummvm-git-logs mailing list