[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