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

Strangerke noreply at scummvm.org
Sat Nov 23 16:26:17 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:
eece903bdd M4: RIDDLE: Room 701: Implement Daemon trigger 103


Commit: eece903bdddad62c6967698402bbb4b8aad0fbdb
    https://github.com/scummvm/scummvm/commit/eece903bdddad62c6967698402bbb4b8aad0fbdb
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-23T17:26:04+01:00

Commit Message:
M4: RIDDLE: Room 701: Implement Daemon trigger 103

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


diff --git a/engines/m4/riddle/rooms/section7/room701.cpp b/engines/m4/riddle/rooms/section7/room701.cpp
index b32cca51229..1d5da947926 100644
--- a/engines/m4/riddle/rooms/section7/room701.cpp
+++ b/engines/m4/riddle/rooms/section7/room701.cpp
@@ -704,6 +704,434 @@ void Room701::daemon() {
 		break;
 
 	case 103:
+		switch (_field94) {
+		case 1000:
+			switch (_field98) {
+			case 1100:
+				player_set_commands_allowed(false);
+				_field68 = 2000;
+				_field6C = 2100;
+				kernel_timing_trigger(1, 110, nullptr);
+				player_update_info(_G(my_walker), &_G(player_info));
+				_safariShadow3Mach = series_place_sprite("SAFARI SHADOW 3", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 3840);
+				ws_hide_walker(_G(my_walker));
+				_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, 0, triggerMachineByHashCallback, "rip talks agent");
+				_field98 = 1103;
+				sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 1);
+				conv_load("conv701a", 10, 10, 101);
+				_fieldC4 = inventoryCheck();
+				_fieldBC = 1;
+
+				conv_export_value_curr((_G(flags[V088]) < 3) ? 0 : 1, 0);
+				conv_export_pointer_curr(&_fieldC4, 1);
+
+				_field100 = inv_player_has("CRYSTAL SKULL") ? 1 : 0;
+				_field104 = inv_player_has("STICK AND SHELL MAP") ? 1 : 0;
+				_field108 = inv_player_has("WHEELED TOY") ? 1 : 0;
+				_field10C = inv_player_has("REBUS AMULET") ? 1 : 0;
+				_field110 = inv_player_has("SHRUNKEN HEAD") ? 1 : 0;
+				_field114 = inv_player_has("SILVER BUTTERFLY") ? 1 : 0;
+				_field118 = inv_player_has("POSTAGE STAMP") ? 1 : 0;
+				_field11C = inv_player_has("GERMAN BANKNOTE") ? 1 : 0;
+				_field120 = inv_player_has("WHALE BONE HORN") ? 1 : 0;
+				_field124 = inv_player_has("CHISEL") ? 1 : 0;
+				_field128 = inv_player_has("INCENSE BURNER") ? 1 : 0;
+				_field12C = inv_player_has("ROMANOV EMERALD") ? 1 : 0;
+
+				conv_export_pointer_curr(&_field100, 3);
+				conv_export_pointer_curr(&_field104, 4);
+				conv_export_pointer_curr(&_field108, 5);
+				conv_export_pointer_curr(&_field10C, 6);
+				conv_export_pointer_curr(&_field110, 7);
+				conv_export_pointer_curr(&_field114, 8);
+				conv_export_pointer_curr(&_field118, 9);
+				conv_export_pointer_curr(&_field11C, 10);
+				conv_export_pointer_curr(&_field120, 11);
+				conv_export_pointer_curr(&_field124, 12);
+				conv_export_pointer_curr(&_field128, 13);
+				conv_export_pointer_curr(&_field12C, 14);
+
+				_fieldB8 = 0;
+				conv_export_pointer_curr(&_fieldB8, 15);
+				conv_export_pointer_curr(&_fieldC8, 17);
+				conv_play(conv_get_handle());
+
+				break;
+
+			case 1102: {
+				int32 rnd = imath_ranged_rand(1, 5);
+				sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, rnd, rnd, 102, _ripTrekTalkerPos3Series, rnd, rnd, 0);
+				}
+
+				break;
+
+			case 1103:
+				sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0);
+				break;
+
+			case 1104:
+				sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, -1, _ripTrekTalkerPos3Series, 5, 5, 0);
+				break;
+
+			case 1105:
+				terminateMachine(_ripTalksAgentMach);
+				terminateMachine(_safariShadow3Mach);
+				ws_unhide_walker(_G(my_walker));
+				_field6C = 2103;
+				kernel_timing_trigger(1, 2700, nullptr);
+
+				break;
+
+			default:
+				break;
+			}
+
+			break;
+
+		case 3000:
+			switch (_field98) {
+			case 3100:
+				player_set_commands_allowed(false);
+				_field98 = 3101;
+				break;
+
+			case 3101:
+				terminateMachine(_agentPoshExpressMach02);
+				sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 1, 60, 102, _agentGetTelegramSeries, 60, 60, 0);
+				_field98 = 3102;
+
+				break;
+
+			case 3102:
+				digi_play("950_S06", 2, 255, 102, 950);
+				inv_give_to_player("MESSAGE LOG");
+				sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 69, 69, -1, _agentGetTelegramSeries, 69, 69, 0);
+				kernel_timing_trigger(1, 2204, nullptr);
+				_field98 = 3103;
+
+				break;
+
+			case 3103:
+				sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 71, 71, -1, _agentGetTelegramSeries, 71, 71, 0);
+				_field98 = 3103;
+
+				break;
+
+			case 3105:
+				sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 71, 86, 102, _agentGetTelegramSeries, 86, 86, 0);
+				_field98 = 3107;
+
+				break;
+
+			case 3106:
+				digi_play("950_S06", 2, 255, -1, 950);
+				sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 70, 71, -1, _agentGetTelegramSeries, 71, 71, 0);
+				_field98 = 3103;
+
+				break;
+
+			case 3107:
+				if (_field130) {
+					kernel_timing_trigger(1, 2501, nullptr);
+					_field130 = 0;
+				} else {
+					_field98 = 3108;
+					_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
+					sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0);
+					sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 1, 1, -1, _agentTalkLoopTjSeries, 1, 1, 0);
+				}
+
+				break;
+
+			case 3108:
+				terminateMachine(_agentPoshExpressMach02);
+				kernel_timing_trigger(1, (_field134 == 1) ? 45 : 95, nullptr);
+				ws_unhide_walker(_G(my_walker));
+
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 3500:
+			switch (_field98) {
+			case 3501:
+				_agentSignsForMoneySeries = series_load("AGENT  SIGNS FOR MONEY", -1, nullptr);
+				_field98 = 3502;
+				_field6C = 2101;
+
+				terminateMachine(_ripTalksAgentMach);
+				player_set_commands_allowed(false);
+				_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
+				sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, -1, _701rp01Series, 11, 11, 0);
+				digi_play(conv_sound_to_play(), 1, 255, 103, -1);
+
+				break;
+
+			case 3502:
+				_field6C = 2103;
+				kernel_timing_trigger(1, 103, nullptr);
+				_field98 = 3504;
+
+				break;
+
+			case 3503:
+				terminateMachine(_agentPoshExpressMach02);
+				_field98 = 3504;
+				_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
+				sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 102, _701rp01Series, 11, 11, 0);
+
+				break;
+
+			case 3504:
+				terminateMachine(_agentPoshExpressMach);
+				terminateMachine(_agentPoshExpressMach02);
+				_field98 = 3505;
+				_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 256, false, triggerMachineByHashCallback, "rip talks agent");
+				sendWSMessage_10000(1, _ripTalksAgentMach, _agentSignsForMoneySeries, 1, 70, 102, _agentSignsForMoneySeries, 70, 70, 0);
+
+				break;
+
+			case 3505:
+				digi_play("950_S06", 2, 255, -1, 950);
+				_field98 = 3506;
+				sendWSMessage_10000(1, _ripTalksAgentMach, _agentSignsForMoneySeries, 70, 94, 102, _agentSignsForMoneySeries, 94, 94, 0);
+
+				break;
+
+			case 3506:
+				terminateMachine(_ripTalksAgentMach);
+				_field98 = 3507;
+				_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
+				sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0);
+				_agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express");
+				_field68 = 2000;
+				_field6C = 2102;
+				sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 110, _agentTalkLoopTjSeries, 13, 13, 0);
+
+				break;
+
+			case 3507:
+				_field94 = 1000;
+				inv_give_to_player("US DOLLARS");
+				terminateMachine(_agentPoshExpressMach02);
+				_field98 = 1103;
+				player_update_info(_G(my_walker), &_G(player_info));
+				_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, triggerMachineByHashCallback, "rip talks agent");
+				sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0);
+				conv_resume(conv_get_handle());
+				series_unload(_agentSignsForMoneySeries);
+
+				break;
+
+			default:
+				break;
+			}
+
+			break;
+		case 3600:
+			switch (_field98) {
+			case 3601:
+				_agentExchangeMoneySeries = series_load("AGENT  EXCHANGE MONEY", -1, nullptr);
+				sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 1, 5, -1, _ripTrekHandTalkPos3Series, 1, 5, 1);
+				_field98 = 3602;
+				digi_play_loop(_convDigiName_2.c_str(), 1, 255, 103, -1);
+
+				break;
+
+			case 3602:
+				_field98 = 3604;
+				sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 103, _ripTrekTalkerPos3Series, 5, 5, 1);
+
+				break;
+
+			case 3603:
+				terminateMachine(_agentPoshExpressMach);
+				terminateMachine(_agentPoshExpressMach02);
+				_field98 = 3605;
+				_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 256, false, triggerMachineByHashCallback, "rip talks agent");
+				sendWSMessage_10000(1, _ripTalksAgentMach, _agentExchangeMoneySeries, 1, 52, 102, _agentExchangeMoneySeries, 52, 52, 0);
+
+				break;
+
+			case 3604:
+				terminateMachine(_ripTalksAgentMach);
+				_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
+				_field98 = 3603;
+				sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 102, _701rp01Series, 11, 11, 0);
+
+				break;
+
+			case 3605:
+				digi_play("950_S06", 2, 255, -1, 959);
+				_field98 = 33605;
+				sendWSMessage_10000(1, _ripTalksAgentMach, _agentExchangeMoneySeries, 52, 19, 102, _agentExchangeMoneySeries, 19, 19, 0);
+
+				break;
+
+			case 3606:
+				_field98 = 3607;
+				terminateMachine(_ripTalksAgentMach);
+				_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, 0, triggerMachineByHashCallback, "agent posh express");
+				sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0);
+				_agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, 0, triggerMachineByHashCallback, "agent posh express");
+				sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 110, _agentTalkLoopTjSeries, 13, 13, 0);
+
+				break;
+
+			case 3607:
+				inv_give_to_player("SIKKIMESE RUPEE");
+				terminateMachine(_agentPoshExpressMach02);
+
+				_field94 = 1000;
+				_field98 = 1103;
+
+				player_update_info(_G(my_walker), &_G(player_info));
+				_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, 0, triggerMachineByHashCallback, "rip talks agent");
+				sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0);
+				conv_resume(conv_get_handle());
+				series_unload(_agentExchangeMoneySeries);
+
+				break;
+
+			case 33605:
+				digi_play("950_S06", 2, 255, -1, 950);
+				_field98 = 3606;
+				sendWSMessage_10000(1, _ripTalksAgentMach, _agentExchangeMoneySeries, 19, 1, 102, _agentExchangeMoneySeries, 1, 1, 0);
+
+				break;
+
+			default:
+				break;
+			}
+
+			break;
+		case 3700:
+			switch (_field98) {
+			case 3701:
+				player_set_commands_allowed(false);
+				terminateMachine(_ripTalksAgentMach);
+				_field98 = 3702;
+				_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
+				sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 102, _701rp01Series, 11, 11, 0);
+
+				break;
+
+			case 3702:
+				terminateMachine(_agentPoshExpressMach);
+				terminateMachine(_agentPoshExpressMach02);
+				_field98 = 3709;
+				_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 256, false, triggerMachineByHashCallback, "rip talks agent");
+				sendWSMessage_10000(1, _ripTalksAgentMach, _agentGiveParcelSeries, 1, 33, 102, _agentGiveParcelSeries, 33, 33, 0);
+
+				break;
+
+			case 3704:
+				switch (conv_current_entry()) {
+				case 0:
+					inv_move_object("CRYSTAL SKULL", 305);
+					break;
+
+				case 1:
+					inv_move_object("STICK AND SHELL MAP", 305);
+					break;
+
+				case 2:
+					inv_move_object("WHEELED TOY", 305);
+					break;
+
+				case 3:
+					inv_move_object("REBUS AMULET", 305);
+					break;
+
+				case 4:
+					inv_move_object("SHRUNKEN HEAD", 305);
+					break;
+
+				case 5:
+					inv_move_object("SILVER BUTTERFLY", 305);
+					break;
+
+				case 6:
+					inv_move_object("POSTAGE STAMP", 305);
+					break;
+
+				case 7:
+					inv_move_object("GERMAN BANKNOTE", 305);
+					break;
+
+				case 8:
+					inv_move_object("WHALE BONE HORN", 305);
+					break;
+
+				case 9:
+					inv_move_object("CHISEL", 305);
+					break;
+
+				case 10:
+					inv_move_object("INCENSE BURNER", 305);
+					break;
+
+				case 11:
+					setFlag45();
+					inv_move_object("ROMANOV EMERALD", 999);
+					break;
+
+				default:
+					break;
+				}
+
+				_agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express");
+				_field6C = 2102;
+				_field68 = 2000;
+				_field98 = 3705;
+
+				kernel_timing_trigger(1, 102, nullptr);
+				sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 110, _agentTalkLoopTjSeries, 13, 13, 0);
+
+				break;
+
+			case 3705:
+				_field98 = 3706;
+				terminateMachine(_ripTalksAgentMach);
+				_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
+				sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0);
+
+				break;
+
+			case 3706:
+				terminateMachine(_agentPoshExpressMach02);
+				_field94 = 1000;
+				_field98 = 98;
+				player_update_info(_G(my_walker), &_G(player_info));
+				_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, triggerMachineByHashCallback, "rip talks agent");
+				sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0);
+				conv_resume(conv_get_handle());
+
+				break;
+
+			case 3709:
+				_field98 = 3704;
+				sendWSMessage_10000(1, _ripTalksAgentMach, _agentGiveParcelSeries, 34, 51, 102, _agentGiveParcelSeries, 51, 51, 0);
+				digi_play("950_S09", 2, 255, -1, 950);
+
+				break;
+			default:
+				break;
+			}
+
+			break;
+
+		default:
+			break;
+
+		}
+
+
+		break;
+
 	case 110:
 	case 111:
 	case 948:
@@ -887,7 +1315,7 @@ void Room701::updateCounter() {
 	}
 }
 
-bool Room701::inventoryCheck() {
+int32 Room701::inventoryCheck() {
 	for (int i = 0; i < 12; ++i)
 		_fieldD0[i] = 0;
 
@@ -929,7 +1357,7 @@ bool Room701::inventoryCheck() {
 	if (inv_player_has("ROMANOV EMERALD"))
 		_fieldD0[_fieldFC_index++] = 12;
 
-	return _fieldFC_index > 0;
+	return _fieldFC_index > 0 ? 1 : 0;
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section7/room701.h b/engines/m4/riddle/rooms/section7/room701.h
index be2421dd6d9..f43e78698e5 100644
--- a/engines/m4/riddle/rooms/section7/room701.h
+++ b/engines/m4/riddle/rooms/section7/room701.h
@@ -42,13 +42,14 @@ public:
 private:
 	void conv701a();
 	void updateCounter();
-	bool inventoryCheck();
+	int32 inventoryCheck();
 
 	const char *_itemDigiName = nullptr;
 	Common::String _convDigiName_1 = "";
 	Common::String _convDigiName_2 = "";
 
 	int32 _field50_counter = 0;
+	int32 _field68 = 0;
 	int32 _field6C = 0;
 	int32 _field72 = 0;
 	int32 _field88 = 0;
@@ -58,16 +59,34 @@ private:
 	int32 _field98 = 0;
 	int32 _field9E_triggerNum = -1;
 	int32 _fieldB4 = 0;
-	int32 _fieldD0[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
+	int32 _fieldB8 = 0;
+	int32 _fieldBC = 0;
+	int32 _fieldC4 = 0;
+	int32 _fieldC8 = 0;
+	int32 _fieldD0[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 	int32 _fieldFC_index = 0;
+	int32 _field100 = 0;
+	int32 _field104 = 0;
+	int32 _field108 = 0;
+	int32 _field10C = 0;
+	int32 _field110 = 0;
+	int32 _field114 = 0;
+	int32 _field118 = 0;
+	int32 _field11C = 0;
+	int32 _field120 = 0;
+	int32 _field124 = 0;
+	int32 _field128 = 0;
+	int32 _field12C = 0;
 	int32 _field130 = 0;
 	int32 _field134 = 0;
 
 	int32 _701rp01Series = 0;
 	int32 _701rp99Series = 0;
+	int32 _agentExchangeMoneySeries = 0;
 	int32 _agentGetTelegramSeries = 0;
 	int32 _agentGiveParcelSeries = 0;
 	int32 _agentShowMapSeries = 0;
+	int32 _agentSignsForMoneySeries = 0;
 	int32 _agentTalkLoopTjSeries = 0;
 	int32 _ripSketchingInNotebookPos3Series = 0;
 	int32 _ripTrekHandTalkPos3Series = 0;
@@ -76,6 +95,7 @@ private:
 	
 	machine *_agentPoshExpressMach = nullptr;
 	machine *_agentPoshExpressMach02 = nullptr;
+	machine *_ripTalksAgentMach = nullptr;
 	machine *_safariShadow3Mach = nullptr;
 };
 




More information about the Scummvm-git-logs mailing list