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

Strangerke noreply at scummvm.org
Wed Dec 4 06:52:29 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:
a168e7edc1 M4: RIDDLE: room 705: Partial implementation of daemon (up to trigger 94)


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

Commit Message:
M4: RIDDLE: room 705: Partial implementation of daemon (up to trigger 94)

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


diff --git a/engines/m4/riddle/flags.h b/engines/m4/riddle/flags.h
index 9d97965f8ca..8812d3164f2 100644
--- a/engines/m4/riddle/flags.h
+++ b/engines/m4/riddle/flags.h
@@ -253,8 +253,8 @@ enum Flag {
 	V216 = 216,
 	V217 = 217, // Prayer wheel in niche, room 703
 	V218 = 218,
-	V219 = 219,
-	V220 = 220,
+	V219 = 219, // Prayer wheel in niche, room 704
+	V220 = 220, // prayer wheel in niche, room 705
 	V221 = 221,
 	V222 = 222,
 	V223 = 223,
diff --git a/engines/m4/riddle/rooms/section7/room705.cpp b/engines/m4/riddle/rooms/section7/room705.cpp
index 58bd474ec20..3715fdb0c92 100644
--- a/engines/m4/riddle/rooms/section7/room705.cpp
+++ b/engines/m4/riddle/rooms/section7/room705.cpp
@@ -137,9 +137,200 @@ void Room705::pre_parser() {
 }
 
 void Room705::parser() {
+	// TODO not yet implemented
 }
 
 void Room705::daemon() {
+	bool esi = player_said("take");
+
+	switch (_G(kernel).trigger) {
+	case 70:
+		player_set_commands_allowed(false);
+		setGlobals1(_field24Series, 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, 74);
+		break;
+
+	case 74:
+		switch (_G(flags[V220])) {
+		case 1:
+			inv_give_to_player("PEACE WHEEL");
+			_G(flags[V220]) = 0;
+			terminateMachine(_leftWheelMach);
+			digi_play("950_S40", 2, 255, -1, 950);
+			kernel_examine_inventory_object("PING PEACE WHEEL", _G(master_palette), 5, 1, 145, 225, 75, nullptr, -1);
+
+			break;
+
+		case 2:
+			inv_give_to_player("INSIGHT WHEEL");
+			_G(flags[V220]) = 0;
+			terminateMachine(_leftWheelMach);
+			digi_play("950_S40", 2, 255, -1, 950);
+			kernel_examine_inventory_object("PING INSIGHT WHEEL", _G(master_palette), 5, 1, 145, 225, 75, nullptr, -1);
+
+			break;
+
+		case 3:
+			inv_give_to_player("SERENITY WHEEL");
+			_G(flags[V220]) = 0;
+			terminateMachine(_leftWheelMach);
+			digi_play("950_S40", 2, 255, -1, 950);
+			kernel_examine_inventory_object("PING SERENITY WHEEL", _G(master_palette), 5, 1, 145, 225, 75, nullptr, -1);
+
+			break;
+
+		case 4:
+			inv_give_to_player("TRUTH WHEEL");
+			_G(flags[V220]) = 0;
+			terminateMachine(_leftWheelMach);
+			digi_play("950_S40", 2, 255, -1, 950);
+			kernel_examine_inventory_object("PING TRUTH WHEEL", _G(master_palette), 5, 1, 145, 225, 75, nullptr, -1);
+
+			break;
+
+		case 5:
+			inv_give_to_player("WISDOM WHEEL");
+			_G(flags[V220]) = 0;
+			terminateMachine(_leftWheelMach);
+			digi_play("950_S40", 2, 255, -1, 950);
+			kernel_examine_inventory_object("PING WISDOM WHEEL", _G(master_palette), 5, 1, 145, 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 #9", false);
+		hotspot_set_active(_G(currentSceneDef).hotspots, "EMPTY NICHE", true);
+		player_set_commands_allowed(true);
+
+		break;
+
+	case 80:
+		player_set_commands_allowed(false);
+		setGlobals1(_field24Series, 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);
+		break;
+
+	case 82:
+		sendWSMessage_120000(_G(my_walker), 83);
+		break;
+
+	case 83:
+		if (esi && _G(player).click_y <= 374) {
+			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), 86);
+		break;
+
+	case 86:
+		sendWSMessage_150000(_G(my_walker), 87);
+		break;
+
+	case 87:
+	case 91:
+	case 94:
+		player_set_commands_allowed(true);
+		break;
+
+	case 123:
+	case 127:
+	case 133:
+	case 137:
+	case 140:
+		player_set_commands_allowed(false);
+		setGlobals1(_field24Series, 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), 141);
+
+		break;
+
+	case 141:
+	case 142:
+		sendWSMessage_120000(_G(my_walker), 143);
+		break;
+
+	case 143:
+	case 144:
+	case 145:
+		sendWSMessage_130000(_G(my_walker), 146);
+		break;
+
+	case 146:
+		sendWSMessage_150000(_G(my_walker), 147);
+		break;
+
+	case 147:
+		hotspot_set_active(_G(currentSceneDef).hotspots, "PRAYER WHEEL #12", false);
+		hotspot_set_active(_G(currentSceneDef).hotspots, "EMPTY NICHE ", true);
+		player_set_commands_allowed(true);
+
+		break;
+
+	case 150:
+	case 151:
+	case 152:
+	case 153:
+	case 154:
+	case 155:
+	case 160:
+	case 161:
+	case 951:
+	case 952:
+	case 954:
+	case 955:
+		//TODO incomplete implementation
+	default:
+		break;
+	}
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section7/room705.h b/engines/m4/riddle/rooms/section7/room705.h
index a62123e40f0..05a35db6e34 100644
--- a/engines/m4/riddle/rooms/section7/room705.h
+++ b/engines/m4/riddle/rooms/section7/room705.h
@@ -40,6 +40,8 @@ public:
 	void daemon() override;
 
 private:
+	int32 _field24Series = 0;
+
 	int32 _ripGoesDownStairsSeries = 0;
 	int32 _ripTrekMedReachPos1Series = 0;
 




More information about the Scummvm-git-logs mailing list