[Scummvm-git-logs] scummvm master -> 60d8932116bad44ab24fdac99c3750c4b315b163

Strangerke noreply at scummvm.org
Mon Dec 9 23:55:43 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:
60d8932116 M4: RIDDLE: room 706: Implement daemon


Commit: 60d8932116bad44ab24fdac99c3750c4b315b163
    https://github.com/scummvm/scummvm/commit/60d8932116bad44ab24fdac99c3750c4b315b163
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-10T00:54:30+01:00

Commit Message:
M4: RIDDLE: room 706: Implement daemon

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 76cf8b79437..23eb0b3f1c4 100644
--- a/engines/m4/riddle/rooms/section7/room706.cpp
+++ b/engines/m4/riddle/rooms/section7/room706.cpp
@@ -147,7 +147,287 @@ void Room706::parser() {
 }
 
 void Room706::daemon() {
-	// TODO Not implemented yet
+	bool esi = player_said("take");
+
+	switch (_G(kernel).trigger) {
+	case 70:
+		player_set_commands_allowed(false);
+		setGlobals1(_ripTrekMedReachHandPos1Series, 1, 5, 5, 5, 0, 5, 10, 10, 10, 0, 10, 1, 1, 1, 0, 0, 0, 0, 0, 0);
+		sendWSMessage_110000(_G(my_walker), 71);
+
+		break;
+
+	case 71:
+		kernel_timing_trigger(5, 72, nullptr);
+		break;
+
+	case 72:
+		sendWSMessage_120000(_G(my_walker), 73);
+		break;
+
+	case 73:
+		kernel_timing_trigger(5, 73, nullptr);
+		break;
+
+	case 74:
+		switch (_G(flags[V219])) {
+		case 1:
+			inv_give_to_player("PEACE WHEEL");
+			_G(flags[V219]) = 0;
+			player_update_info(_G(my_walker), &_G(player_info));
+			digi_play("950_S40", 2, 255, -1, 950);
+			kernel_examine_inventory_object("PING PEACE WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 800, 225, 75, nullptr, -1);
+
+			break;
+
+		case 2:
+			inv_give_to_player("INSIGHT WHEEL");
+			_G(flags[V219]) = 0;
+			player_update_info(_G(my_walker), &_G(player_info));
+			digi_play("950_S40", 2, 255, -1, 950);
+			kernel_examine_inventory_object("PING INSIGHT WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 800, 225, 75, nullptr, -1);
+
+			break;
+
+		case 3:
+			inv_give_to_player("SERENITY WHEEL");
+			_G(flags[V219]) = 0;
+			player_update_info(_G(my_walker), &_G(player_info));
+			digi_play("950_S40", 2, 255, -1, 950);
+			kernel_examine_inventory_object("PING SERENITY WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 800, 225, 75, nullptr, -1);
+
+			break;
+
+		case 4:
+			inv_give_to_player("TRUTH WHEEL");
+			_G(flags[V219]) = 0;
+			player_update_info(_G(my_walker), &_G(player_info));
+			digi_play("950_S40", 2, 255, -1, 950);
+			kernel_examine_inventory_object("PING TRUTH WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 800, 225, 75, nullptr, -1);
+
+			break;
+
+		case 5:
+			inv_give_to_player("WISDOM WHEEL");
+			_G(flags[V219]) = 0;
+			player_update_info(_G(my_walker), &_G(player_info));
+			digi_play("950_S40", 2, 255, -1, 950);
+			kernel_examine_inventory_object("PING WISDOM WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 800, 225, 75, nullptr, -1);
+
+			break;
+
+		default:
+			break;
+		}
+
+		break;
+
+	case 75:
+		sendWSMessage_130000(_G(my_walker), 76);
+		break;
+
+	case 76:
+		sendWSMessage_150000(_G(my_walker), 77);
+		break;
+
+	case 77:
+		hotspot_set_active(_G(currentSceneDef).hotspots, "PRAYER WHEEL #15", false);
+		hotspot_set_active(_G(currentSceneDef).hotspots, "EMPTY NICHE", true);
+		player_set_commands_allowed(true);
+
+		break;
+
+	case 80:
+		player_set_commands_allowed(false);
+		setGlobals1(_ripTrekMedReachHandPos1Series, 1, 5, 5, 5, 0, 5, 10, 10, 10, 0, 10, 1, 1, 1, 0, 0, 0, 0, 0, 0);
+		sendWSMessage_110000(_G(my_walker), 81);
+
+		break;
+
+	case 81:
+		kernel_timing_trigger(5, 82, nullptr);
+		break;
+
+	case 82:
+		sendWSMessage_120000(_G(my_walker), 83);
+		break;
+
+	case 83:
+		if (!esi || _G(player).click_y > 374)
+			break;
+
+		switch (imath_ranged_rand(1, 3)) {
+		case 1:
+			digi_play("com077", 1, 255, 84, -1);
+			break;
+
+		case 2:
+			digi_play("com078", 1, 255, 84, -1);
+			break;
+
+		case 3:
+			digi_play("com079", 1, 255, 84, -1);
+			break;
+
+		default:
+			break;
+		}
+
+		break;
+
+	case 84:
+		sendWSMessage_130000(_G(my_walker), 85);
+		break;
+
+	case 85:
+		sendWSMessage_150000(_G(my_walker), 86);
+		break;
+
+	case 86:
+	case 91:
+		player_set_commands_allowed(true);
+		break;
+
+	case 123:
+		if (_field78_mode != 124)
+			break;
+
+		switch (_field7C_should) {
+		case 121:
+			_706eye3aSeries = series_load("706eye3a", -1, nullptr);
+			_field7C_should = 922;
+			_monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 256, false, triggerMachineByHashCallback, "monk");
+			sendWSMessage_10000(1, _monkMach, _706eye3aSeries, 1, 5, 123, _706eye3aSeries, 5, 5, 0);
+
+			break;
+
+		case 122:
+			terminateMachine(_monkMach);
+			series_unload(_706eye3aSeries);
+			conv_resume(conv_get_handle());
+
+			break;
+
+		case 125:
+			conv_load("conv706a", 10, 10, 91);
+			conv_export_value_curr(0, 0);
+			conv_export_value_curr(_G(flags[V211]), 1);
+			conv_export_value_curr(_G(flags[V213]), 2);
+			conv_export_value_curr((_G(flags[V219]) == 4) ? 1 : 0, 0);
+
+			conv_play(conv_get_handle());
+
+			break;
+
+		case 922:
+			switch (imath_ranged_rand(1, 2)) {
+			case 1:
+				_field7C_should = 923;
+				break;
+
+			case 2:
+				_field7C_should = 924;
+				break;
+
+			default:
+				break;
+			}
+
+			kernel_timing_trigger(10, 123, nullptr);
+
+			break;
+
+		case 923:
+			_field7C_should = 925;
+			sendWSMessage_10000(1, _monkMach, _706eye3aSeries, 6, 9, -1, _706eye3aSeries, 10, 11, 4);
+			sendWSMessage_1a0000(_monkMach, 9);
+			digi_play(conv_sound_to_play(), 1, 255, 123, -1);
+
+			break;
+
+		case 924:
+			_field7C_should = 925;
+			sendWSMessage_10000(1, _monkMach, _706eye3aSeries, 10, 10, -1, _706eye3aSeries, 10, 11, 4);
+			sendWSMessage_1a0000(_monkMach, 9);
+			digi_play(conv_sound_to_play(), 1, 255, 123, -1);
+
+			break;
+
+		case 925:
+			_field7C_should = 926;
+			sendWSMessage_10000(1, _monkMach, _706eye3aSeries, 12, 15, 123, _706eye3aSeries, 15, 15, 0);
+			break;
+
+		case 926:
+			_field7C_should = 122;
+			kernel_timing_trigger(10, 123, nullptr);
+
+			break;
+
+		default: // including case 126
+			break;
+		}
+
+		break;
+
+	case 127:
+		if (_field78_mode != 124)
+			break;
+
+		switch (_field7C_should) {
+		case 121:
+		case 122:
+		case 124:
+		case 125:
+		case 126:
+		case 127:
+		case 922:
+		case 923:
+		case 924:
+		case 925:
+		case 926:
+			kernel_timing_trigger(1, 123, nullptr);
+			break;
+
+		default:
+			break;
+
+		}
+		break;
+
+	case 131:
+		sendWSMessage_120000(_G(my_walker), 132);
+		break;
+
+	case 132:
+		digi_play("706r23", 1, 255, 133, -1);
+		break;
+
+	case 133:
+		sendWSMessage_150000(_G(my_walker), 135);
+		break;
+
+	case 135:
+		series_unload(_ripShieldsFaceSeries);
+		player_set_commands_allowed(true);
+
+		break;
+
+	case 140:
+		player_set_commands_allowed(true);
+		ws_unhide_walker(_G(my_walker));
+		terminateMachine(_ripStairsMach);
+		kernel_timing_trigger(10, 141, nullptr);
+
+		break;
+
+	case 141:
+		series_unload(_706RipGoesDownStairsSeries);
+		break;
+
+	default:
+		break;
+	}
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section7/room706.h b/engines/m4/riddle/rooms/section7/room706.h
index 0c7cfb3f6b7..79076d56f71 100644
--- a/engines/m4/riddle/rooms/section7/room706.h
+++ b/engines/m4/riddle/rooms/section7/room706.h
@@ -40,10 +40,15 @@ public:
 	void daemon() override;
 
 private:
+	int32 _field78_mode = 0;
+	int32 _field7C_should = 0;
+
+	int32 _706eye3aSeries = 0;
 	int32 _706RipGoesDownStairsSeries = 0;
 	int32 _ripShieldsFaceSeries = 0;
 	int32 _ripTrekMedReachHandPos1Series = 0;
 
+	machine *_monkMach = nullptr;
 	machine *_prayerWheelMach = nullptr;
 	machine *_ripStairsMach = nullptr;
 };




More information about the Scummvm-git-logs mailing list