[Scummvm-git-logs] scummvm master -> 12132efa1e03555695154c55fabb0e918b7c075a
dreammaster
noreply at scummvm.org
Sat Oct 26 23:47:14 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:
12132efa1e M4: RIDDLE: Added room 201 parser
Commit: 12132efa1e03555695154c55fabb0e918b7c075a
https://github.com/scummvm/scummvm/commit/12132efa1e03555695154c55fabb0e918b7c075a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-10-26T16:46:38-07:00
Commit Message:
M4: RIDDLE: Added room 201 parser
Changed paths:
engines/m4/riddle/rooms/section2/room201.cpp
engines/m4/riddle/rooms/section2/room201.h
diff --git a/engines/m4/riddle/rooms/section2/room201.cpp b/engines/m4/riddle/rooms/section2/room201.cpp
index c3afa4cdf6a..17c8bd1d621 100644
--- a/engines/m4/riddle/rooms/section2/room201.cpp
+++ b/engines/m4/riddle/rooms/section2/room201.cpp
@@ -1442,6 +1442,38 @@ void Room201::daemon() {
}
}
+static const char *LOOK[][2] = {
+ { "VASE", "201r08" },
+ { "POSTCARD RACK", "201r09" },
+ { "POSTER", "201r10" },
+ { "WINDOW", "201r11" },
+ { "MAGAZINES", "201r12" },
+ { "AGENT", "201r13" },
+ { "RUG", "201r14" },
+ { "LAMP", "201r37" },
+ { "PLANT", "201r38" },
+ { "SOFA", "201r39" },
+ { "CHAIR", "201r39" },
+ { "PHONE", "201r40" },
+ { nullptr, nullptr }
+};
+
+static const char *TAKE[][2] = {
+ { "POSTCARD RACK", "201r19" },
+ { "MAGAZINES", "201r20" },
+ { "VASE", "201r41" },
+ { "RUG", "201r42" },
+ { nullptr, nullptr }
+};
+
+static const char *USE[][2] = {
+ { "MONEY WITH AGENT", "201r43" },
+ { "SOFA", "201r44" },
+ { "CHAIR", "201r44" },
+ { "PHONE", "201r45" },
+ { nullptr, nullptr }
+};
+
void Room201::parser() {
bool lookFlag = player_said_any("look", "look at");
bool takeFlag = player_said("take");
@@ -1450,9 +1482,163 @@ void Room201::parser() {
if (player_said("conv201a")) {
conv201a();
+ } else if (lookFlag && player_said(" ")) {
+ digi_play("201R07", 1);
+ } else if (lookFlag && _G(walker).ripley_said(LOOK)) {
+ // Handled
+ } else if (takeFlag && _G(walker).ripley_said(TAKE)) {
+ // Handled
+ } else if (useFlag && _G(walker).ripley_said(USE)) {
+ // Handled
+ } else if (takeFlag && player_said("AGENT")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 666:
+ player_set_commands_allowed(false);
+ _conv1 = 0;
+ _G(kernel).trigger_mode = KT_DAEMON;
+ animateRipley();
+ _G(kernel).trigger_mode = KT_PARSE;
+ kernel_timing_trigger(2, 3);
+ break;
+
+ case 3:
+ _conv2 = 9;
+ _conv1 = 0;
+ break;
+ default:
+ break;
+ }
+ } else if (_G(kernel).trigger == 747) {
+ _conv2 = 14;
+ } else if (talkFlag && player_said("MEI CHEN")) {
+ if (_G(flags)[V059] == 0) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 666:
+ _ctr2 = 0;
+ player_set_commands_allowed(false);
+ _ripTalk = series_load("RIP TREK TALK");
+ _val6 = 0;
+ setGlobals1(_ripTalk, 1, 7, 1, 7, 1);
+ sendWSMessage_110000(2);
+ digi_play("201r15", 1, 255, 2);
+ break;
- } else if (lookFlag || takeFlag || talkFlag || useFlag) {
- // TODO
+ case 2:
+ if (_ctr2 >= 1) {
+ _ctr2 = 0;
+ sendWSMessage_150000(3);
+ } else {
+ ++_ctr2;
+ }
+ break;
+
+ case 3:
+ series_unload(_ripTalk);
+ _val6 = 3;
+ digi_play("201m04", 1, 255, 4);
+ break;
+
+ case 4:
+ _val6 = 0;
+ _trigger9 = kernel_trigger_create(5);
+ break;
+
+ case 5:
+ _val6 = 2;
+ _val8 = kernel_trigger_create(6);
+ break;
+
+ case 6:
+ _G(flags)[V059] = 1;
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+ } else {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 666:
+ player_set_commands_allowed(false);
+ _ripTalk = series_load("RIP TREK TALK");
+ _val6 = 0;
+ _trigger9 = kernel_trigger_create(2);
+ break;
+
+ case 2:
+ _val6 = 5;
+ _val9 = kernel_trigger_create(3);
+ break;
+
+ case 3:
+ {
+ _ctr2 = 0;
+ setGlobals1(_ripTalk, 1, 7, 1, 7, 1);
+ sendWSMessage_110000(4);
+
+ static const char *DIGI[3] = { "201r16", "201r17", "201r18" };
+ digi_play(DIGI[imath_ranged_rand(0, 2)], 1, 255, 4);
+ break;
+ }
+
+ case 4:
+ if (_ctr2 >= 1) {
+ _ctr2 = 0;
+ sendWSMessage_150000(5);
+ } else {
+ ++_ctr2;
+ }
+ break;
+
+ case 5:
+ series_unload(_ripTalk);
+ _val6 = 6;
+ _val9 = kernel_trigger_create(6);
+ break;
+
+ case 6:
+ _val6 = 0;
+ _trigger9 = kernel_trigger_create(7);
+ break;
+
+ case 7:
+ _val6 = 2;
+ _val8 = kernel_trigger_create(8);
+ break;
+
+ case 8:
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+ }
+ } else if (player_said("walk through")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ ws_walk(66, 254, nullptr, 2, 7);
+ break;
+
+ case 2:
+ player_set_commands_allowed(false);
+ disable_player_commands_and_fade_init(3);
+ break;
+
+ case 3:
+ _G(game).setRoom(203);
+ break;
+
+ default:
+ break;
+ }
+ } else if (player_said("journal") && !takeFlag && !lookFlag) {
+ digi_play("201r25", 1);
+ } else if (useFlag && !inv_player_has(_G(player).noun)) {
+ digi_play("201r46", 1);
} else {
return;
}
diff --git a/engines/m4/riddle/rooms/section2/room201.h b/engines/m4/riddle/rooms/section2/room201.h
index b300bc3e425..cca40dfb3cb 100644
--- a/engines/m4/riddle/rooms/section2/room201.h
+++ b/engines/m4/riddle/rooms/section2/room201.h
@@ -91,12 +91,14 @@ private:
int _trigger10 = -1;
int _trigger11 = -1;
int _trigger12 = -1;
- int _ctr1 = 0;
int _items[12];
int32 _itemFlags[12];
int _totalItems = 0;
int32 _hasKeyItems = 0;
+ int _ctr1 = 0;
+ int _ctr2 = 0;
+
void setupMei();
void conv201a();
void animateRipley();
More information about the Scummvm-git-logs
mailing list