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

Strangerke noreply at scummvm.org
Sat Nov 23 23:06:23 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:
beee01d338 M4: RIDDLE: Room 701:  Implement last trigger, renaming + fix a bug in init


Commit: beee01d338a6f352b91c43c49a4fe99a6a69ff71
    https://github.com/scummvm/scummvm/commit/beee01d338a6f352b91c43c49a4fe99a6a69ff71
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-24T00:06:06+01:00

Commit Message:
M4: RIDDLE: Room 701:  Implement last trigger, renaming + fix a bug in init

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 3d9a1b21cc2..56ad3afc4b6 100644
--- a/engines/m4/riddle/rooms/section7/room701.cpp
+++ b/engines/m4/riddle/rooms/section7/room701.cpp
@@ -38,10 +38,10 @@ void Room701::init() {
 		_G(flags[V224]) = 1;
 
 	_itemDigiName = nullptr;
-	_field8C = 0;
+	_field8C_unusedFl = false;
 	_field50_counter = 0;
 	_field9E_triggerNum = -1;
-	_field130 = 0;
+	_field130 = false;
 
 	if (_G(game).previous_room == KERNEL_RESTORING_GAME) {
 		_agentTalkLoopTjSeries = series_load("AGENT TALK LOOP TJ", -1, nullptr);
@@ -56,7 +56,7 @@ void Room701::init() {
 		_agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express");
 		sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, -1, _agentTalkLoopTjSeries, 13, 13, 0);
 	} else {
-		_field88 = 0;
+		_field88 = false;
 
 		player_set_commands_allowed(false);
 		_agentTalkLoopTjSeries = series_load("AGENT TALK LOOP TJ", -1, nullptr);
@@ -73,15 +73,22 @@ void Room701::init() {
 
 		++_G(flags[V006]);
 		if (setItemsPlacedFlags()) {
-			_field88 = 1;
+			_field88 = true;
 			_itemDigiName = getItemsPlacedDigi();
 			++_field50_counter;
 		}
 
 		ws_demand_location(_G(my_walker), 50, 264);
 		ws_demand_facing(_G(my_walker), 3);
-		_field134 = 0;
-		ws_walk(_G(my_walker), 352, 251, nullptr, player_been_here(701) ? 80 : 40, 3, true);
+		_alreadyBeenHereFl = false;
+
+		int32 trig = 80;
+		if (!player_been_here(701)) {
+			trig = 40;
+			_alreadyBeenHereFl = true;
+		}
+
+		ws_walk(_G(my_walker), 352, 251, nullptr, trig, 3, true);
 	}
 
 	digi_preload("701_s01", -1);
@@ -118,7 +125,7 @@ void Room701::parser() {
 
 	else if (talkFl && player_said("agent")) {
 		player_set_commands_allowed(false);
-		_field88 = 1;
+		_field88 = true;
 		_field72_triggerNum = -1;
 		_field94 = 1000;
 		_field98 = 1100;
@@ -361,7 +368,7 @@ void Room701::daemon() {
 		break;
 
 	case 40:
-		_field88 = 1;
+		_field88 = true;
 		player_set_commands_allowed(false);
 		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);
@@ -392,7 +399,7 @@ void Room701::daemon() {
 		sendWSMessage_150000(_G(my_walker), -1);
 
 		if (_field50_counter == 1) {
-			_field8C = 1;
+			_field8C_unusedFl = true;
 			_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
 			ws_hide_walker(_G(my_walker));
 			sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, -1, _701rp01Series, 11, 11, 0);
@@ -401,7 +408,7 @@ void Room701::daemon() {
 			digi_play("701X02", 1, 255, 2200, -1);
 
 		} else if (_field50_counter > 0) {
-			_field8C = 1;
+			_field8C_unusedFl = true;
 			_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
 			ws_hide_walker(_G(my_walker));
 			sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, -1, _701rp01Series, 11, 11, 0);
@@ -410,7 +417,7 @@ void Room701::daemon() {
 			digi_play("701X03", 1, 255, 2200, -1);
 
 		} else {
-			kernel_timing_trigger(1, (_field134 == 1) ? 44 : 95, nullptr);
+			kernel_timing_trigger(1, _alreadyBeenHereFl ? 44 : 95, nullptr);
 		}
 
 		break;
@@ -719,40 +726,40 @@ void Room701::daemon() {
 				_field98 = 1103;
 				sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 1);
 				conv_load("conv701a", 10, 10, 101);
-				_fieldC4 = inventoryCheck();
-				_fieldBC = 1;
+				_lastInventoryCheck = inventoryCheck();
+				_fieldBC_unusedFl = true;
 
 				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(&_lastInventoryCheck, 1);
+
+				_hasCrystalSkull = inv_player_has("CRYSTAL SKULL") ? 1 : 0;
+				_hasStickAnsShellMap = inv_player_has("STICK AND SHELL MAP") ? 1 : 0;
+				_hasWheeledToy = inv_player_has("WHEELED TOY") ? 1 : 0;
+				_hasRebusAmulet = inv_player_has("REBUS AMULET") ? 1 : 0;
+				_hasShrunkenHead = inv_player_has("SHRUNKEN HEAD") ? 1 : 0;
+				_hasSilverButterfly = inv_player_has("SILVER BUTTERFLY") ? 1 : 0;
+				_hasPostageStamp = inv_player_has("POSTAGE STAMP") ? 1 : 0;
+				_hasGermanBankNote = inv_player_has("GERMAN BANKNOTE") ? 1 : 0;
+				_hasWhaleBoneHorn = inv_player_has("WHALE BONE HORN") ? 1 : 0;
+				_hasChisel = inv_player_has("CHISEL") ? 1 : 0;
+				_hasIncenseBurner = inv_player_has("INCENSE BURNER") ? 1 : 0;
+				_hasRomanovEmerald = inv_player_has("ROMANOV EMERALD") ? 1 : 0;
+
+				conv_export_pointer_curr(&_hasCrystalSkull, 3);
+				conv_export_pointer_curr(&_hasStickAnsShellMap, 4);
+				conv_export_pointer_curr(&_hasWheeledToy, 5);
+				conv_export_pointer_curr(&_hasRebusAmulet, 6);
+				conv_export_pointer_curr(&_hasShrunkenHead, 7);
+				conv_export_pointer_curr(&_hasSilverButterfly, 8);
+				conv_export_pointer_curr(&_hasPostageStamp, 9);
+				conv_export_pointer_curr(&_hasGermanBankNote, 10);
+				conv_export_pointer_curr(&_hasWhaleBoneHorn, 11);
+				conv_export_pointer_curr(&_hasChisel, 12);
+				conv_export_pointer_curr(&_hasIncenseBurner, 13);
+				conv_export_pointer_curr(&_hasRomanovEmerald, 14);
+
+				_travelDest = 0;
+				conv_export_pointer_curr(&_travelDest, 15);
 				conv_export_pointer_curr(&_fieldC8, 17);
 				conv_play(conv_get_handle());
 
@@ -833,7 +840,7 @@ void Room701::daemon() {
 			case 3107:
 				if (_field130) {
 					kernel_timing_trigger(1, 2501, nullptr);
-					_field130 = 0;
+					_field130 = false;
 				} else {
 					_field98 = 3108;
 					_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
@@ -845,7 +852,7 @@ void Room701::daemon() {
 
 			case 3108:
 				terminateMachine(_agentPoshExpressMach02);
-				kernel_timing_trigger(1, (_field134 == 1) ? 45 : 95, nullptr);
+				kernel_timing_trigger(1, _alreadyBeenHereFl ? 45 : 95, nullptr);
 				ws_unhide_walker(_G(my_walker));
 
 				break;
@@ -1141,8 +1148,40 @@ void Room701::daemon() {
 		break;
 
 	case 111:
-		// TODO
-		warning("TODO 111");
+		if (_field68 != 2000)
+			return;
+
+		switch (_field6C) {
+		case 2100:
+			sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 14, 14, 110, _agentTalkLoopTjSeries, 14, 14, 0);
+			_field6C = 2102;
+
+			break;
+
+		case 2101: {
+			int32 rnd = imath_ranged_rand(14, 17);
+			sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, rnd, rnd, 110, _agentTalkLoopTjSeries, rnd, rnd, 0);
+			}
+
+			break;
+
+		case 2102:
+			sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 14, 14, 110, _agentTalkLoopTjSeries, 14, 14, 0);
+			break;
+
+		case 2103:
+			sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 14, 14, -1, _agentTalkLoopTjSeries, 14, 14, 0);
+			break;
+
+		case 2104:
+			sendWSMessage_10000(1, _agentPoshExpressMach, _agentExchangeMoneySeries, 1, 66, 110, _agentExchangeMoneySeries, 66, 66, 0);
+			break;
+
+		default:
+			break;
+
+		}
+
 		break;
 
 	case 948:
@@ -1224,15 +1263,15 @@ void Room701::daemon() {
 		} else if (_G(flags[V367]) == 1) {
 			_field58_digiName = "401R37";
 			_G(flags[V367]) = 0;
-			_field130 = 1;
+			_field130 = true;
 		} else if (_G(flags[V368]) == 1) {
 			_field58_digiName = "401R38";
 			_G(flags[V368]) = 0;
-			_field130 = 1;
+			_field130 = true;
 		} else if (_G(flags[V369]) == 1) {
 			_field58_digiName = "401R39";
 			_G(flags[V369]) = 0;
-			_field130 = 1;
+			_field130 = true;
 		}
 
 		kernel_timing_trigger(1, 2301, nullptr);
@@ -1277,7 +1316,7 @@ void Room701::daemon() {
 		break;
 
 	case 2306:
-		if (_field130 == 1) {
+		if (_field130) {
 			_field94 = 3000;
 			_field98 = 3105;
 			kernel_timing_trigger(1, 102, nullptr);
@@ -1322,7 +1361,7 @@ void Room701::daemon() {
 	case 2506:
 		ws_unhide_walker(_G(my_walker));
 		terminateMachine(_agentPoshExpressMach02);
-		kernel_timing_trigger(1, _field134 == 1 ? 45 : 95, nullptr);
+		kernel_timing_trigger(1, _alreadyBeenHereFl ? 45 : 95, nullptr);
 
 		break;
 
@@ -1339,7 +1378,7 @@ void Room701::daemon() {
 		break;
 
 	case 2601:
-		switch (_fieldB8) {
+		switch (_travelDest) {
 		case 1:
 			_G(flags[kTravelDest]) = 1;
 			break;
@@ -1374,7 +1413,7 @@ void Room701::daemon() {
 		break;
 
 	case 2702:
-		if (_field90 == 1)
+		if (_field90)
 			kernel_timing_trigger(1, 2600, nullptr);
 		else
 			player_set_commands_allowed(true);
@@ -1387,7 +1426,7 @@ void Room701::daemon() {
 }
 
 void Room701::conv701a() {
-	int32 node = _fieldB4 = conv_current_node();
+	_conv701aNode = conv_current_node();
 	int32 entry = conv_current_entry();
 	const char *digiName = conv_sound_to_play();
 
@@ -1398,7 +1437,7 @@ void Room701::conv701a() {
 
 	int32 who = conv_whos_talking();
 	if (who <= 0) {
-		if (node == 3 && entry == 0) {
+		if (_conv701aNode == 3 && entry == 0) {
 			_convDigiName_1 = Common::String(digiName);
 			_field94 = 3500;
 			_field98 = 3501;
@@ -1408,7 +1447,7 @@ void Room701::conv701a() {
 		_field6C = 2101;
 
 	} else if (who == 1) {
-		if (node == 1 && entry == 1) {
+		if (_conv701aNode == 1 && entry == 1) {
 			conv_set_box_xy(490, -4);
 			set_dlg_rect();
 			int32 x1, y1, x2, y2;
@@ -1420,7 +1459,7 @@ void Room701::conv701a() {
 			conv_set_box_xy(10, 10);
 		}
 
-		switch (node) {
+		switch (_conv701aNode) {
 		case 1:
 			if (entry == 3) {
 				_convDigiName_2 = Common::String(digiName);
@@ -1438,7 +1477,7 @@ void Room701::conv701a() {
 			if (entry == 0) {
 				_field98 = 1102;
 				digi_play(digiName, 1, 255, 1, -1);
-				_field90 = 1;
+				_field90 = true;
 
 				return;
 			}
@@ -1539,47 +1578,47 @@ void Room701::updateCounter() {
 
 int32 Room701::inventoryCheck() {
 	for (int i = 0; i < 12; ++i)
-		_fieldD0[i] = 0;
+		_inventoryCheckArray[i] = 0;
 
-	_fieldFC_index = 0;
+	_inventoryCheckCounter = 0;
 
 	if (inv_player_has("CRYSTAL SKULL"))
-		_fieldD0[_fieldFC_index++] = 1;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 1;
 
 	if (inv_player_has("STICK AND SHELL MAP"))
-		_fieldD0[_fieldFC_index++] = 2;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 2;
 
 	if (inv_player_has("WHEELED TOY"))
-		_fieldD0[_fieldFC_index++] = 3;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 3;
 
 	if (inv_player_has("REBUS AMULET"))
-		_fieldD0[_fieldFC_index++] = 4;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 4;
 
 	if (inv_player_has("SHRUNKEN HEAD"))
-		_fieldD0[_fieldFC_index++] = 5;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 5;
 
 	if (inv_player_has("SILVER BUTTERFLY"))
-		_fieldD0[_fieldFC_index++] = 6;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 6;
 
 	if (inv_player_has("POSTAGE STAMP"))
-		_fieldD0[_fieldFC_index++] = 7;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 7;
 
 	if (inv_player_has("GERMAN BANKNOTE"))
-		_fieldD0[_fieldFC_index++] = 8;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 8;
 
 	if (inv_player_has("WHALE BONE HORN"))
-		_fieldD0[_fieldFC_index++] = 9;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 9;
 
 	if (inv_player_has("CHISEL"))
-		_fieldD0[_fieldFC_index++] = 10;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 10;
 
 	if (inv_player_has("INCENSE BURNER"))
-		_fieldD0[_fieldFC_index++] = 11;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 11;
 
 	if (inv_player_has("ROMANOV EMERALD"))
-		_fieldD0[_fieldFC_index++] = 12;
+		_inventoryCheckArray[_inventoryCheckCounter++] = 12;
 
-	return _fieldFC_index > 0 ? 1 : 0;
+	return _inventoryCheckCounter > 0 ? 1 : 0;
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section7/room701.h b/engines/m4/riddle/rooms/section7/room701.h
index ce498b0147a..0efa69a5997 100644
--- a/engines/m4/riddle/rooms/section7/room701.h
+++ b/engines/m4/riddle/rooms/section7/room701.h
@@ -46,44 +46,45 @@ private:
 
 	const char *_field58_digiName = nullptr;
 	const char *_field5C_digiName = nullptr;
-	const char *_field60_digiName = nullptr;
-	const char *_field64_digiName = nullptr;
+	const char *_field60_digiName = nullptr; // Useless: Never set
+	const char *_field64_digiName = nullptr; // Useless: Never set
 
 	const char *_itemDigiName = nullptr;
-	Common::String _convDigiName_1 = "";
+	Common::String _convDigiName_1 = ""; // Useless: Assigned but not used?
 	Common::String _convDigiName_2 = "";
 
+	bool _field88 = false;
+	bool _field8C_unusedFl = false; // Set but never used
+	bool _field90 = false;
+	bool _fieldBC_unusedFl = false;
+	bool _field130 = false;
+	bool _alreadyBeenHereFl = false;
+
 	int32 _field50_counter = 0;
 	int32 _field68 = 0;
 	int32 _field6C = 0;
-	int32 _field72_triggerNum = -1;
-	int32 _field88 = 0;
-	int32 _field8C = 0;
-	int32 _field90 = 0;
+	int32 _field72_triggerNum = -1; // Useless : always -1
 	int32 _field94 = 0;
 	int32 _field98 = 0;
-	int32 _field9E_triggerNum = -1;
-	int32 _fieldB4 = 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 _field9E_triggerNum = -1; // Useless : always -1
+	int32 _conv701aNode = 0;
+	int32 _travelDest = 0;
+	int32 _lastInventoryCheck = 0;
+	int32 _fieldC8 = 0; // Useless: Set but never used
+	int32 _inventoryCheckArray[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Useless: Most likely a residual of debug trace
+	int32 _inventoryCheckCounter = 0;
+	int32 _hasCrystalSkull = 0;
+	int32 _hasStickAnsShellMap = 0;
+	int32 _hasWheeledToy = 0;
+	int32 _hasRebusAmulet = 0;
+	int32 _hasShrunkenHead = 0;
+	int32 _hasSilverButterfly = 0;
+	int32 _hasPostageStamp = 0;
+	int32 _hasGermanBankNote = 0;
+	int32 _hasWhaleBoneHorn = 0;
+	int32 _hasChisel = 0;
+	int32 _hasIncenseBurner = 0;
+	int32 _hasRomanovEmerald = 0;
 
 	int32 _701rp01Series = 0;
 	int32 _701rp99Series = 0;




More information about the Scummvm-git-logs mailing list