[Scummvm-git-logs] scummvm master -> 2eed6653e1bc7c9639f1da80ac45edc1940147f6
Strangerke
noreply at scummvm.org
Wed Nov 20 23:00:27 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:
2eed6653e1 M4: RIDDLE: Room 701: Implement Parser
Commit: 2eed6653e1bc7c9639f1da80ac45edc1940147f6
https://github.com/scummvm/scummvm/commit/2eed6653e1bc7c9639f1da80ac45edc1940147f6
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-20T23:59:33+01:00
Commit Message:
M4: RIDDLE: Room 701: Implement Parser
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 0ffc7bc48f4..942257739d7 100644
--- a/engines/m4/riddle/rooms/section7/room701.cpp
+++ b/engines/m4/riddle/rooms/section7/room701.cpp
@@ -97,13 +97,271 @@ void Room701::pre_parser() {
}
void Room701::parser() {
- warning("STUB - 701 Parser");
+ bool ecx = player_said_any("look", "look at");
+ bool talkFl = player_said_any("talk", "talk to");
+ bool esi = player_said("take");
+ bool edi = player_said_any("push", "pull", "gear", "open", "close");
+
+ if (player_said("conv701a")) {
+ if (_G(kernel).trigger == 1) {
+ int32 who = conv_whos_talking();
+ if (who == 1)
+ _field98 = 1103;
+ else if (who <= 0)
+ _field6C = 2102;
+
+ conv_resume(conv_get_handle());
+ } else {
+ subparser_9B2FC();
+ }
+ } // if (player_said("conv701a"))
+
+ else if (talkFl && player_said("agent")) {
+ player_set_commands_allowed(false);
+ _field88 = 1;
+ _field72 = -1;
+ _field94 = 1000;
+ _field98 = 1100;
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(1, 102, nullptr);
+ _G(kernel).trigger_mode = KT_PARSE;
+ } else if (ecx && player_said("COAT RACK")) {
+ digi_play("com130", 1, 255, -1, -1);
+ } else if (ecx && player_said("Skin") && !_G(flags[V226])) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 4, 1, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), -1);
+ digi_play("701R10", 1, 255, 21, -1);
+
+ break;
+
+ case 21:
+ sendWSMessage_120000(_G(my_walker), -1);
+ sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 14, -1, _agentTalkLoopTjSeries, 11, 13, 1);
+
+ break;
+
+ case 22:
+ sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
+ sendWSMessage_110000(_G(my_walker), -1);
+ digi_play("701R11", 1, 255, 23, -1);
+
+ break;
+
+ case 23:
+ sendWSMessage_120000(_G(my_walker), -1);
+ sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 0);
+ sendWSMessage_140000(_agentPoshExpressMach, 11);
+ digi_play("701X10", 1, 255, 24, -1);
+
+ break;
+
+ case 24:
+ sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
+ digi_play("701R12", 1, 255, 25, -1);
+
+ break;
+
+ case 25:
+ sendWSMessage_150000(_G(my_walker), -1);
+ _G(flags[V226]) = 1;
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+ }
+ } // ecx && player_said("Skin") && !_G(flags[V226])
+
+ else if (ecx && player_said("Skin") && _G(flags[V226])) {
+ player_set_commands_allowed(false);
+ digi_play("701R13", 1, 255, -1, -1);
+ player_set_commands_allowed(true);
+
+ } // ecx && player_said("Skin") && _G(flags[V226])
+
+ else if (ecx && player_said("Window"))
+ digi_play("701R17", 1, 255, -1, -1);
+ else if (ecx && player_said("Poster"))
+ digi_play("com002", 1, 255, -1, 997);
+ else if (ecx && player_said("Magazines"))
+ digi_play("com003", 1, 255, -1, 997);
+ else if (ecx && player_said("Prayer Wheel"))
+ digi_play("701R19", 1, 255, -1, -1);
+ else if (ecx && player_said("Agent"))
+ digi_play("701R20", 1, 255, -1, -1);
+ else if (ecx && player_said_any("Sofa", "Chair"))
+ digi_play("com023", 1, 255, -1, 997);
+ else if (ecx && player_said("Telephone"))
+ digi_play("com024", 1, 255, -1, 997);
+ else if (ecx && player_said("Postcard Rack"))
+ digi_play("701R14", 1, 255, -1, -1);
+ else if (ecx && player_said("Brochures"))
+ digi_play("701R15", 1, 255, -1, -1);
+ else if (ecx && player_said("BUSH"))
+ digi_play("701R41", 1, 255, -1, -1);
+ else if (ecx && player_said(" "))
+ digi_play("com001", 1, 255, -1, -1);
+ else if (esi && player_said("Brochures")) {
+ if (inv_player_has("PRAYER WHEEL BROCHURE"))
+ digi_play("701R21", 1, 255, -1, -1);
+ else {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ setGlobals1(_ripTrekMedReachPos3Series, 1, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 62);
+
+ break;
+
+ case 62:
+ digi_play("950_S07", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING PRAYER WHEEL BROCHURE", _G(master_palette), 5, 1, 318, 150, 63, nullptr, -1);
+
+ break;
+
+ case 63:
+ sendWSMessage_140000(_G(my_walker), 64);
+ break;
+
+ case 64:
+ inv_give_to_player("PRAYER WHEEL BROCHURE");
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+ }
+ }
+ } // esi && player_said("Brochures")
+
+ else if (esi && player_said("Postcard Rack"))
+ digi_play("com004", 1, 255, -1, 997);
+ else if (esi && player_said("Magazines"))
+ digi_play("com005", 1, 255, -1, 997);
+ else if (esi && player_said("Yeti Skin"))
+ digi_play("701R24", 1, 255, -1, -1);
+ else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL") && inv_player_has("PRAYER WHEEL BROCHURE")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ setGlobals1(_701rp99Series, 1, 12, 12, 12, 0, 12, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 301);
+
+ break;
+
+ case 301:
+ digi_play("701R25", 1, 255, 302, -1);
+ break;
+
+ case 302:
+ sendWSMessage_120000(_G(my_walker), 303);
+ break;
+
+ case 303:
+ sendWSMessage_150000(_G(my_walker), 304);
+ break;
+
+ case 304:
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+
+ }
+ } // player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL") && inv_player_has("PRAYER WHEEL BROCHURE")
+
+ else if (edi && player_said_any("Sofa", "Chair"))
+ digi_play("com025", 1, 255, -1, 997);
+ else if (edi && player_said("Telephone"))
+ digi_play("com026", 1, 255, -1, 997);
+ else if ((player_said("SIKKIMESE RUPEE", "Agent") && inv_player_has("SIKKIMESE RUPEE"))
+ || player_said("US DOLLARS", "Agent") // 2 checks in the original: one checks if the payer has dollars, the other doesn't.
+ || (player_said("CHINESE YUAN", "Agent") && inv_player_has("CHINESE YUAN"))
+ || (player_said("PERUVIAN INTI", "Agent") && inv_player_has("PERUVIAN INTI"))
+ || (player_said("SIKKIMESE RUPEE", "Agent") && inv_player_has("SIKKIMESE RUPEE"))) {
+ digi_play("com012", 1, 255, -1, 997);
+ } else if (player_said("journal", "skin")) {
+ digi_play(_G(flags[V226]) ? "701R35" : "701R36", 1, 255, -1, -1);
+ } else if (player_said("rm702")) {
+ if (_field88) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ disable_player_commands_and_fade_init(3);
+ break;
+
+ case 3:
+ digi_stop(3);
+ _G(game).new_room = 702;
+ break;
+
+ default:
+ break;
+ }
+ } else {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), 214, 265, nullptr, 2, 3, true);
+
+ break;
+
+ case 2:
+ setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), -1);
+ digi_play("22_12p01", 1, 255, 3, -1);
+
+ break;
+
+ case 3:
+ sendWSMessage_120000(_G(my_walker), -1);
+ sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1);
+ sendWSMessage_1a0000(_agentPoshExpressMach, 11);
+ digi_play("22_12n01", 1, 255, 4, -1);
+
+ break;
+
+ case 4:
+ sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
+ sendWSMessage_150000(_G(my_walker), -1);
+ ws_walk(_G(my_walker), 73, 265, nullptr, 5, 3, true);
+
+ break;
+
+ case 5:
+ player_set_commands_allowed(true);
+ disable_player_commands_and_fade_init(6);
+
+ break;
+
+ case 6:
+ digi_stop(3);
+ _G(game).new_room = 702;
+ break;
+
+ default:
+ break;
+ }
+ }
+ } // player_said("rm702")
+
+ _G(player).command_ready = false;
}
void Room701::daemon() {
warning("STUB - 701 Daemon");
}
+void Room701::subparser_9B2FC() {
+ warning("STUB - 701 subparser_9B2FC");
+}
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
diff --git a/engines/m4/riddle/rooms/section7/room701.h b/engines/m4/riddle/rooms/section7/room701.h
index 253f8ccfc89..1fa1fca2e09 100644
--- a/engines/m4/riddle/rooms/section7/room701.h
+++ b/engines/m4/riddle/rooms/section7/room701.h
@@ -40,11 +40,17 @@ public:
void daemon() override;
private:
+ void subparser_9B2FC();
+
const char *_itemDigiName = nullptr;
int32 _field50 = 0;
+ int32 _field6C = 0;
+ int32 _field72 = 0;
int32 _field88 = 0;
int32 _field8C = 0;
+ int32 _field94 = 0;
+ int32 _field98 = 0;
int32 _field9E = 0;
int32 _field130 = 0;
int32 _field134 = 0;
More information about the Scummvm-git-logs
mailing list