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

dreammaster noreply at scummvm.org
Sat Aug 10 19:25:57 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:
df901d71fd M4: RIDDLE: Added rooom 402 conv402a


Commit: df901d71fd73da3026b93a6ff5457fe3e489628d
    https://github.com/scummvm/scummvm/commit/df901d71fd73da3026b93a6ff5457fe3e489628d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-10T12:25:51-07:00

Commit Message:
M4: RIDDLE: Added rooom 402 conv402a

Changed paths:
    engines/m4/riddle/rooms/section4/room402.cpp
    engines/m4/riddle/rooms/section4/room402.h


diff --git a/engines/m4/riddle/rooms/section4/room402.cpp b/engines/m4/riddle/rooms/section4/room402.cpp
index 6e68e7f0613..a387103d345 100644
--- a/engines/m4/riddle/rooms/section4/room402.cpp
+++ b/engines/m4/riddle/rooms/section4/room402.cpp
@@ -40,13 +40,13 @@ void Room402::init() {
 	if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
 		_val1 = 0;
 		_val2 = -1;
-		_val3 = 0;
+		_soundPtr1 = 0;
 		_val4 = 0;
 		_val5 = -1;
 		_val6 = 0;
-		_val7 = 0;
+		_soundPtr2 = 0;
 		_val8 = 0;
-		_val9 = -1;
+		_currentNode = -1;
 		_val10 = 0;
 		_val11 = 0;
 		_val12 = 0;
@@ -342,7 +342,242 @@ void Room402::pre_parser() {
 }
 
 void Room402::parser() {
+	bool lookFlag = player_said_any("look", "look at");
+	bool talkFlag = player_said_any("talk", "talk to");
+	bool takeFlag = player_said("take");
+	bool enterFlag = player_said("enter");
+	bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
+
+	if (player_said("conv402a")) {
+		// TODO
+		conv402a();
+	}
+	// TODO
+	else {
+		return;
+	}
+
+	_G(player).command_ready = false;
+}
+
+void Room402::conv402a() {
+	const char *sound = conv_sound_to_play();
+	int who = conv_whos_talking();
+	int node = conv_current_node();
+	int entry = conv_current_entry();
+	_currentNode = node;
+
+	if (!sound) {
+		conv_resume();
+	} else if (who <= 0) {
+		switch (node) {
+		case 4:
+		case 9:
+			Common::strcpy_s(_soundPtr2, 255, sound);
+			_val12 = 2000;
+			_val13 = 2107;
+			break;
+
+		case 5:
+		case 10:
+			Common::strcpy_s(_soundPtr2, 255, sound);
+
+			if (inv_player_has("POMERANIAN MARKS")) {
+				conv_resume();
+			} else {
+				_val12 = 2002;
+				_val13 = 2260;
+			}
+			break;
+
+		case 7:
+		case 25:
+			switch (entry) {
+			case 1:
+				digi_play(sound, 1);
+				_val12 = 2002;
+				_val13 = 2160;
+				break;
+
+			default:
+				_val13 = 2142;
+				digi_play(sound, 1, 255, 777);
+				break;
+			}
+			break;
+
+		case 14:
+			switch (entry) {
+			case 0:
+				Common::strcpy_s(_soundPtr2, 255, sound);
+				_val12 = 2002;
+				_val13 = 2260;
+				break;
+			case 1:
+				Common::strcpy_s(_soundPtr2, 255, sound);
+
+				if (inv_player_has("POMERANIAN MARKS")) {
+					_val12 = 2002;
+					_val13 = 2143;
+					conv_resume();
+				} else {
+					_val12 = 2002;
+					_val13 = 2170;
+				}
+				break;
+			default:
+				break;
+			}
+			break;
+
+		case 16:
+			switch (entry) {
+			case 0:
+				Common::strcpy_s(_soundPtr2, 255, sound);
+				_val12 = 2002;
+				_val13 = 2260;
+				break;
+			case 1:
+				Common::strcpy_s(_soundPtr2, 255, sound);
+				_val12 = 2002;
+				_val13 = 2143;
+				break;
+			default:
+				break;
+			}
+			break;
+
+		case 17:
+		case 18:
+			_G(flags)[V132] = 1;
+			Common::strcpy_s(_soundPtr2, 255, sound);
+			conv_resume();
+			break;
+
+		case 21:
+			if (entry == 1) {
+				Common::strcpy_s(_soundPtr2, 255, sound);
+				_val12 = 2002;
+				_val13 = 2260;
+			} else {
+				_val13 = 201;
+				digi_play(sound, 1, 255, 777);
+			}
+			break;
+
+		case 19:
+		case 22:
+		case 23:
+			_val10 = 1001;
+			Common::strcpy_s(_soundPtr2, 255, sound);
+			conv_resume();
+			break;
+
+		case 26:
+			switch (entry) {
+			case 0:
+				_val13 = 2101;
+				digi_play(sound, 1, 255, 777);
+				break;
+
+			case 1:
+				Common::strcpy_s(_soundPtr2, 255, sound);
+				_val12 = 2002;
+				_val13 = 2260;
+				break;
+
+			case 2:
+				Common::strcpy_s(_soundPtr2, 255, sound);
+				_val12 = 2002;
+				_val13 = 2143;
+				conv_resume();
+				break;
 
+			default:
+				break;
+			}
+			break;
+
+		case 28:
+		case 29:
+		case 30:
+		case 31:
+		case 32:
+		case 33:
+		case 35:
+		case 36:
+		case 37:
+		case 38:
+		case 39:
+		case 40:
+		case 49:
+		case 50:
+		case 51:
+		case 52:
+		case 53:
+		case 54:
+			_val8 = 1;
+			_val13 = 201;
+			digi_play(sound, 1, 255, 777);
+			break;
+
+		default:
+			_val13 = (_val12 == 2002) ? 2142 : 2101;
+			digi_play(sound, 1, 255, 777);
+			break;
+		}
+	} else if (who == 1) {
+		switch (node) {
+		case 1:
+			if (entry == 3) {
+				Common::strcpy_s(_soundPtr1, 255, sound);
+				_val10 = 1000;
+				_val11 = 1120;
+			} else if (_val10 == 1001) {
+				_val11 = 1114;
+				digi_play(sound, 1, 255, 777);
+			} else {
+				_val11 = 1102;
+				conv_resume();
+			}
+			break;
+
+		case 6:
+		case 11:
+			_val10 = 1000;
+			if (entry == 1) {
+				Common::strcpy_s(_soundPtr1, 255, sound);
+				conv_resume();
+			} else {
+				_val11 = 1102;
+				digi_play(sound, 1, 255, 777);
+			}
+			break;
+
+		case 14:
+		case 16:
+			if (entry == 1) {
+				_val10 = 1001;
+				_val11 = 1115;
+				Common::strcpy_s(_soundPtr2, 255, sound);
+				_val12 = 2002;
+				_val13 = 2180;
+
+				_G(kernel).trigger_mode = KT_DAEMON;
+				kernel_timing_trigger(1, 110);
+				_G(kernel).trigger_mode = KT_PARSE;
+			} else {
+				_val11 = (_val11 == 1001) ? 1114 : 2142;
+				digi_play(sound, 1, 255, 777);
+			}
+			break;
+
+		default:
+			_val11 = (_val10 == 1001) ? 1114 : 2142;
+			digi_play(sound, 1, 255, 777);
+			break;
+		}
+	}
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section4/room402.h b/engines/m4/riddle/rooms/section4/room402.h
index 369abcb5bb4..7fbec8ce720 100644
--- a/engines/m4/riddle/rooms/section4/room402.h
+++ b/engines/m4/riddle/rooms/section4/room402.h
@@ -32,13 +32,13 @@ class Room402 : public Room {
 private:
 	int _val1 = 0;
 	int _val2 = 0;
-	int _val3 = 0;
+	char *_soundPtr1 = nullptr;
 	int _val4 = 0;
 	int _val5 = 0;
 	int _val6 = 0;
-	int _val7 = 0;
+	char *_soundPtr2 = nullptr;
 	int _val8 = 0;
-	int _val9 = 0;
+	int _currentNode = 0;
 	int _val10 = 0;
 	int _val11 = 0;
 	int _val12 = 0;
@@ -62,6 +62,8 @@ private:
 	int _ripLeanWall = 0;
 	machine *_wolfWalker = nullptr;
 
+	void conv402a();
+
 public:
 	Room402() : Room() {}
 	~Room402() override {}




More information about the Scummvm-git-logs mailing list