[Scummvm-git-logs] scummvm master -> 8e6ea063056592bad224076122db34b88117d7ab

Strangerke noreply at scummvm.org
Sat Dec 14 06:58:15 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:
8e6ea06305 M4: RIDDLE: Room 706: End of implementation of parser


Commit: 8e6ea063056592bad224076122db34b88117d7ab
    https://github.com/scummvm/scummvm/commit/8e6ea063056592bad224076122db34b88117d7ab
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-14T07:58:00+01:00

Commit Message:
M4: RIDDLE: Room 706: End of implementation of parser

Changed paths:
    engines/m4/riddle/rooms/section7/room706.cpp
    engines/m4/riddle/rooms/section7/room706.h


diff --git a/engines/m4/riddle/rooms/section7/room706.cpp b/engines/m4/riddle/rooms/section7/room706.cpp
index d6e78191e44..93ed876706d 100644
--- a/engines/m4/riddle/rooms/section7/room706.cpp
+++ b/engines/m4/riddle/rooms/section7/room706.cpp
@@ -457,10 +457,198 @@ void Room706::parser() {
 		}
 	} // ecx && player_said("empty cell")
 
+	else if (ecx && player_said("MONK #14")) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			player_set_commands_allowed(false);
+			_706Monk3Series = series_load("706 MONK 3", -1, nullptr);
+			_monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0, false, triggerMachineByHashCallback, "monk");
+			sendWSMessage_10000(1, _monkMach, _706Monk3Series, 1, 22, 2, _706Monk3Series, 22, 22, 0);
+
+			break;
+
+		case 2:
+			terminateMachine(_monkMach);
+			series_unload(_706Monk3Series);
+			player_set_commands_allowed(true);
+
+			break;
+		default:
+			break;
+
+		}
+
+	} // ecx && player_said("MONK #14")
+
+	else if (ecx && player_said("MONK #15")) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			player_set_commands_allowed(false);
+			_monkMach = series_stream("706 MONK 4", 5, 0, 2);
+
+			break;
+
+		case 2:
+			player_set_commands_allowed(true);
+
+			break;
+		default:
+			break;
+		}
+
+	} // ecx && player_said("MONK #15")
+
+	else if (ecx && player_said("Note"))
+		digi_play("706R25", 1, 255, -1, -1);
+	else if (esi && player_said("Note"))
+		digi_play("706R27", 1, 255, -1, -1);
+	else if (player_said("TRUTH WHEEL", "EMPTY NICHE")) {
+		if (_G(kernel).trigger == -1 && !inv_player_has("TRUTH WHEEL"))
+			player_set_commands_allowed(true);
+		else
+			subA85B0(_G(kernel).trigger, 4);
+	} else if (player_said("PEACE WHEEL", "EMPTY NICHE")) {
+		if (_G(kernel).trigger == -1 && !inv_player_has("PEACE WHEEL"))
+			player_set_commands_allowed(true);
+		else
+			subA85B0(_G(kernel).trigger, 1);
+	} else if (player_said("WISDOM WHEEL", "EMPTY NICHE")) {
+		if (_G(kernel).trigger == -1 && !inv_player_has("WISDOM WHEEL"))
+			player_set_commands_allowed(true);
+		else
+			subA85B0(_G(kernel).trigger, 5);
+	} else if (player_said("INSIGHT WHEEL", "EMPTY NICHE")) {
+		if (_G(kernel).trigger == -1 && !inv_player_has("INSIGHT WHEEL"))
+			player_set_commands_allowed(true);
+		else
+			subA85B0(_G(kernel).trigger, 2);
+	} else if (player_said("SERENITY WHEEL", "EMPTY NICHE")) {
+		if (_G(kernel).trigger == -1 && !inv_player_has("SERENITY WHEEL"))
+			player_set_commands_allowed(true);
+		else
+			subA85B0(_G(kernel).trigger, 3);
+	} else if (player_said("TRUTH WHEEL", "PRAYER WHEEL #13") || player_said("PEACE WHEEL", "PRAYER WHEEL #13") || player_said("WISDOM WHEEL", "PRAYER WHEEL #13") || player_said("INSIGHT WHEEL", "PRAYER WHEEL #13") || player_said("SERENITY WHEEL", "PRAYER WHEEL #13")
+			|| player_said("TRUTH WHEEL", "PRAYER WHEEL #14") || player_said("PEACE WHEEL", "PRAYER WHEEL #14") || player_said("WISDOM WHEEL", "PRAYER WHEEL #14") || player_said("INSIGHT WHEEL", "PRAYER WHEEL #14") || player_said("SERENITY WHEEL", "PRAYER WHEEL #14")
+			|| player_said("TRUTH WHEEL", "PRAYER WHEEL #15") || player_said("PEACE WHEEL", "PRAYER WHEEL #15") || player_said("WISDOM WHEEL", "PRAYER WHEEL #15") || player_said("INSIGHT WHEEL", "PRAYER WHEEL #15") || player_said("SERENITY WHEEL", "PRAYER WHEEL #15")
+			|| player_said("TRUTH WHEEL", "PRAYER WHEEL #16") || player_said("PEACE WHEEL", "PRAYER WHEEL #16") || player_said("WISDOM WHEEL", "PRAYER WHEEL #16") || player_said("INSIGHT WHEEL", "PRAYER WHEEL #16") || player_said("SERENITY WHEEL", "PRAYER WHEEL #16")
+		)
+		digi_play("com080", 1, 255, -1, -1);
+	else if (ecx && player_said("EMPTY NICHE"))
+		digi_play("com127", 1, 255, -1, 997);
+	else if (ecx && (player_said_any("PRAYER WHEEL #13", "PRAYER WHEEL #14", "PRAYER WHEEL #16") || (player_said("PRAYER WHEEL #15") && _G(flags[V219]))))
+		digi_play("com076", 1, 255, -1, -1);
+	else if (esi && player_said_any("PRAYER WHEEL #13", "PRAYER WHEEL #14", "PRAYER WHEEL #15", "PRAYER WHEEL #16") && _G(flags[V286]))
+		digi_play(_G(flags[V224]) ? "706r26" : "com143", 1, 255, -1, -1);
+	else if (esi && player_said_any("PRAYER WHEEL #13", "PRAYER WHEEL #14", "PRAYER WHEEL #16")) {
+		_G(kernel).trigger_mode = KT_DAEMON;
+		kernel_trigger_dispatchx(kernel_trigger_create(80));
+		_G(kernel).trigger_mode = KT_PARSE;
+	} else if (esi && player_said("PRAYER WHEEL #15")) {
+		_G(kernel).trigger_mode = KT_DAEMON;
+		kernel_trigger_dispatchx(kernel_trigger_create(70));
+		_G(kernel).trigger_mode = KT_PARSE;
+	} else if (ecx && player_said(" ")) {
+		digi_play(_G(flags[V224]) ? "706r24" : "com075", 1, 255, -1, -1);
+	} else if (player_said("CUPOLA")) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			player_set_commands_allowed(false);
+			ws_hide_walker(_G(my_walker));
+			_706RipGoesUpStairsSeries = series_load("706 RIP GOES UP STAIRS", -1, nullptr);
+			_ripStairsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 320, 0, 100, 0, false, triggerMachineByHashCallback, "rip stairs machine");
+			sendWSMessage_10000(1, _ripStairsMach, _706RipGoesUpStairsSeries, 1, 29, 2, _706RipGoesUpStairsSeries, 29, 29, 0);
+
+			break;
+
+		case 2:
+			sendWSMessage_10000(1, _ripStairsMach, _706RipGoesUpStairsSeries, 30, 39, -1, _706RipGoesUpStairsSeries, 39, 39, 0);
+			disable_player_commands_and_fade_init(4);
+
+			break;
+
+		case 4:
+			terminateMachine(_ripStairsMach);
+			player_set_commands_allowed(true);
+			adv_kill_digi_between_rooms(false);
+			digi_play_loop("950_s39", 3, 255, -1, -1);
+			_G(game).new_room = 707;
+
+			break;
 
-	warning("%d %d", esi ? 1 : 0, gearFl ? 1 : 0);
+		default:
+			break;
+		}
+	} // player_said("CUPOLA")
+
+	else if (player_said("North Face")) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			disable_player_commands_and_fade_init(4);
+			break;
+
+		case 4:
+			adv_kill_digi_between_rooms(false);
+			digi_play_loop("950_s39", 3, 255, -1, -1);
+			_G(game).new_room = 705;
+
+			break;
+
+		default:
+			break;
+		}
+	} // player_said("North Face")
+
+	else if (player_said("South Face")) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			disable_player_commands_and_fade_init(4);
+			break;
+
+		case 4:
+			adv_kill_digi_between_rooms(false);
+			digi_play_loop("950_s39", 3, 255, -1, -1);
+			_G(game).new_room = 703;
 
-	// TODO Incomplete implementation
+			break;
+
+		default:
+			break;
+		}
+	} // player_said("South Face")
+
+	else if (ecx && player_said("  "))
+		digi_play("709r01", 1, 255, -1, 709);
+	else if (!esi && player_said("  ")) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			_ripStepsDownSeries = series_load("RIP STEPS DOWN", -1, nullptr);
+			ws_hide_walker(_G(my_walker));
+			_downToMazeMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 256, false, triggerMachineByHashCallback, "down to maze");
+			sendWSMessage_10000(1, _downToMazeMach, _ripStepsDownSeries, 1, 13, -1, _ripStepsDownSeries, 13, 13, 0);
+			kernel_timing_trigger(60, 2, nullptr);
+
+			break;
+
+		case 2:
+			disable_player_commands_and_fade_init(3);
+			break;
+
+		case 3:
+			_G(game).new_room = 709;
+			break;
+
+		default:
+			break;
+		}
+	} // !esi && player_said("  ")
+
+	else if (!gearFl && !esi && player_said_any("MONK #13", "MONK #14", "MONK #16")) {
+		// The original is testing 2 times the monk #14 and is missing the monk #16, I think it's better that way
+		digi_play("com017", 1, 255, -1, -1);
+	} else
+		return;
+
+	_G(player).command_ready = false;
 }
 
 void Room706::daemon() {
@@ -748,11 +936,15 @@ void Room706::daemon() {
 }
 
 void Room706::conv706a() {
-	//TODO Not implemented yet
+	// TODO Not implemented yet
 }
 
 void Room706::subA8BA8(int32 trigger, const char *digiName) {
-	//TODO Not implemented yet
+	// TODO Not implemented yet
+}
+
+void Room706::subA85B0(int32 trigger, int val1) {
+	// TODO Not implemented yet
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section7/room706.h b/engines/m4/riddle/rooms/section7/room706.h
index bda5164225e..2631cacb6e8 100644
--- a/engines/m4/riddle/rooms/section7/room706.h
+++ b/engines/m4/riddle/rooms/section7/room706.h
@@ -42,6 +42,7 @@ public:
 private:
 	void conv706a();
 	void subA8BA8(int32 trigger, const char *digiName);
+	void subA85B0(int32 trigger, int val1);
 
 	int32 _field78_mode = 0;
 	int32 _field7C_should = 0;
@@ -52,15 +53,19 @@ private:
 	int32 _706Monk3Series = 0;
 	int32 _706Monk4Series = 0;
 	int32 _706RipGoesDownStairsSeries = 0;
+	int32 _706RipGoesUpStairsSeries = 0;
 	int32 _ripLooksDownSeries = 0;
 	int32 _ripShieldsFaceSeries = 0;
+	int32 _ripStepsDownSeries = 0;
 	int32 _ripTrekMedReachHandPos1Series = 0;
 
+	machine *_downToMazeMach = nullptr;
 	machine *_monkMach = nullptr;
 	machine *_prayerWheelMach = nullptr;
 	machine *_ripStairsMach = nullptr;
 };
 
+
 } // namespace Rooms
 } // namespace Riddle
 } // namespace M4




More information about the Scummvm-git-logs mailing list