[Scummvm-git-logs] scummvm master -> 0d04c5aa23bb2f0bf4e757f29cc0761fa79853d9
Strangerke
noreply at scummvm.org
Mon Dec 2 08:15:08 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:
0d04c5aa23 M4: RIDDLE: room 704: Partial implementation of parser
Commit: 0d04c5aa23bb2f0bf4e757f29cc0761fa79853d9
https://github.com/scummvm/scummvm/commit/0d04c5aa23bb2f0bf4e757f29cc0761fa79853d9
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-02T09:13:05+01:00
Commit Message:
M4: RIDDLE: room 704: Partial implementation of parser
Changed paths:
engines/m4/riddle/rooms/section7/room704.cpp
engines/m4/riddle/rooms/section7/room704.h
diff --git a/engines/m4/riddle/rooms/section7/room704.cpp b/engines/m4/riddle/rooms/section7/room704.cpp
index 5c255deed7d..46ade116566 100644
--- a/engines/m4/riddle/rooms/section7/room704.cpp
+++ b/engines/m4/riddle/rooms/section7/room704.cpp
@@ -117,7 +117,389 @@ void Room704::pre_parser() {
}
void Room704::parser() {
- // TODO
+ bool ecx = player_said_any("look", "look at");
+ bool talkFl = player_said_any("talk", "talk to");
+ bool esi = player_said("take");
+ bool gearFl = player_said_any("push", "pull", "gear", "open", "close");
+
+ if (player_said("conv704a")) {
+ if (_G(kernel).trigger == 90)
+ conv_resume(conv_get_handle());
+ else
+ conv704a();
+ } else if (player_said("PRAYER WHEEL BROCHURE", "EMPTY NICHE") && inv_player_has("PRAYER WHEEL BROCHURE"))
+ digi_play("com123", 1, 255, -1, 997);
+ else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #5") && inv_player_has("PRAYER WHEEL BROCHURE"))
+ subA2344(_G(kernel).trigger, "704r04");
+ else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #6") && inv_player_has("PRAYER WHEEL BROCHURE")) {
+ switch (_G(flags[V218])) {
+ case 1:
+ subA2344(_G(kernel).trigger, "704r09");
+ break;
+
+ case 2:
+ subA2344(_G(kernel).trigger, "705r04");
+ break;
+
+ case 3:
+ subA2344(_G(kernel).trigger, "703r11");
+ break;
+
+ case 4:
+ subA2344(_G(kernel).trigger, "705r14a");
+ break;
+
+ case 5:
+ subA2344(_G(kernel).trigger, "706r10");
+ break;
+
+ default:
+ break;
+ }
+ } // player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #6") && inv_player_has("PRAYER WHEEL BROCHURE")
+
+ else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #7") && inv_player_has("PRAYER WHEEL BROCHURE"))
+ subA2344(_G(kernel).trigger, "704r11");
+ else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #8") && inv_player_has("PRAYER WHEEL BROCHURE"))
+ subA2344(_G(kernel).trigger, "704r12");
+ else if (player_said("PRAYER WHEEL BROCHURE", "SERENITY WHEEL") && inv_player_has("PRAYER WHEEL BROCHURE") && inv_player_has("SERENITY WHEEL")) {
+ player_set_commands_allowed(false);
+ digi_play("703r11", 1, 255, -1, -1);
+ player_set_commands_allowed(true);
+ } else if (player_said("PRAYER WHEEL BROCHURE", "INSIGHT WHEEL") && inv_player_has("PRAYER WHEEL BROCHURE") && inv_player_has("INSIGHT WHEEL")) {
+ player_set_commands_allowed(false);
+ digi_play("705r04", 1, 255, -1, -1);
+ player_set_commands_allowed(true);
+ } else if (player_said("PRAYER WHEEL BROCHURE", "PEACE WHEEL") && inv_player_has("PRAYER WHEEL BROCHURE") && inv_player_has("PEACE WHEEL")) {
+ player_set_commands_allowed(false);
+ digi_play("704r09", 1, 255, -1, -1);
+ player_set_commands_allowed(true);
+ } else if (player_said("PRAYER WHEEL BROCHURE", "TRUTH WHEEL") && inv_player_has("PRAYER WHEEL BROCHURE") && inv_player_has("TRUTH WHEEL")) {
+ player_set_commands_allowed(false);
+ digi_play("705r14a", 1, 255, -1, -1);
+ player_set_commands_allowed(true);
+ } else if (player_said("PRAYER WHEEL BROCHURE", "WISDOM WHEEL") && inv_player_has("PRAYER WHEEL BROCHURE") && inv_player_has("WISDOM WHEEL")) {
+ player_set_commands_allowed(false);
+ digi_play("706r10", 1, 255, -1, -1);
+ player_set_commands_allowed(true);
+ } else if (talkFl && player_said_any("MONK #5", "MONK #6", "MONK #7", "MONK #8") && _G(flags[V286]))
+ digi_play("com142", 1, 255, -1, -1);
+ else if (talkFl && player_said("MONK #5")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ digi_play("com081", 1, 255, 2, -1);
+ break;
+
+ case 2:
+ _704Monk1Series = series_load("704 MONK 1", -1, nullptr);
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 256, false, callback, "monk");
+ sendWSMessage_10000(1, _monkMach, _704Monk1Series, 1, 13, 3, _704Monk1Series, 13, 13, 0);
+
+ break;
+
+ case 3:
+ sendWSMessage_10000(1, _monkMach, _704Monk1Series, 14, 18, -1, _704Monk1Series, 19, 22, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+ digi_play("704E01", 1, 255, 4, -1);
+
+ break;
+
+ case 4:
+ sendWSMessage_10000(1, _monkMach, _704Monk1Series, 23, 26, 5, _704Monk1Series, 26, 26, 0);
+ break;
+
+ case 5:
+ terminateMachine(_monkMach);
+ series_unload(_704Monk1Series);
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+ }
+ } // talkFl && player_said("MONK #5")
+
+ else if (talkFl && player_said("MONK #6")) {
+ switch (_G(kernel).trigger) {
+ case 1:
+ player_set_commands_allowed(false);
+ digi_play("com081", 1, 255, 2, -1);
+ break;
+
+ case 2:
+ _704Monk2Series = series_load("704 MONK 2", -1, nullptr);
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 256, false, callback, "monk");
+ sendWSMessage_10000(1, _monkMach, _704Monk2Series, 1, 17, 3, _704Monk2Series, 17, 17, 4);
+
+ break;
+
+ case 3:
+ sendWSMessage_10000(1, _monkMach, _704Monk2Series, 18, 21, -1, _704Monk2Series, 22, 24, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+ digi_play("704F01", 1, 255, 4, -1);
+
+ break;
+
+ case 4:
+ sendWSMessage_10000(1, _monkMach, _704Monk2Series, 25, 28, 5, _704Monk2Series, 28, 28, 0);
+ break;
+
+ case 5:
+ terminateMachine(_monkMach);
+ series_unload(_704Monk2Series);
+ player_set_commands_allowed(true);
+ _field58_mode = 124;
+ _field5C_should = 125;
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(10, 127, nullptr);
+ _G(kernel).trigger_mode = KT_PARSE;
+
+ break;
+
+ default:
+ break;
+ }
+ } // talkFl && player_said("MONK #6")
+
+ else if (talkFl && player_said("MONK #7")) {
+ switch (_G(kernel).trigger) {
+ case 1:
+ player_set_commands_allowed(false);
+ digi_play("com081", 1, 255, 2, -1);
+ break;
+
+ case 2:
+ _704Monk3Series = series_load("704 MONK 3", -1, nullptr);
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 256, false, callback, "monk");
+ sendWSMessage_10000(1, _monkMach, _704Monk3Series, 1, 22, 3, _704Monk3Series, 22, 22, 0);
+
+ break;
+
+ case 3:
+ sendWSMessage_10000(1, _monkMach, _704Monk3Series, 23, 28, -1, _704Monk3Series, 29, 31, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+ digi_play("704H01", 1, 255, 4, -1);
+
+ break;
+
+ case 4:
+ sendWSMessage_10000(1, _monkMach, _704Monk3Series, 32, 35, 5, _704Monk3Series, 35, 35, 0);
+ break;
+
+ case 5:
+ terminateMachine(_monkMach);
+ series_unload(_704Monk3Series);
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+ }
+ } // talkFl && player_said("MONK #7")
+
+ else if (talkFl && player_said("MONK #8")) {
+ switch (_G(kernel).trigger) {
+ case 1:
+ player_set_commands_allowed(false);
+ digi_play("com081", 1, 255, 2, -1);
+ break;
+
+ case 2:
+ _704Monk4Series = series_load("704 MONK 4", -1, nullptr);
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 256, false, callback, "monk");
+ sendWSMessage_10000(1, _monkMach, _704Monk4Series, 1, 12, 3, _704Monk4Series, 12, 12, 0);
+ sendWSMessage_190000(_monkMach, 9);
+
+ break;
+
+ case 3:
+ sendWSMessage_10000(1, _monkMach, _704Monk4Series, 13, 13, -1, _704Monk4Series, 13, 15, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+ digi_play("704I01", 1, 255, 4, -1);
+
+ break;
+
+ case 4:
+ sendWSMessage_10000(1, _monkMach, _704Monk4Series, 16, 19, 5, _704Monk4Series, 16, 19, 0);
+ break;
+
+ case 5:
+ terminateMachine(_monkMach);
+ series_unload(_704Monk4Series);
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+ }
+ } // talkFl && player_said("MONK #8")
+
+ else if (ecx && player_said("GRATE")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_update_info(_G(my_walker), &_G(player_info));
+ switch (_G(player_info).facing) {
+ case 1:
+ case 11:
+ _ripLooksDownSeries = series_load("RIP LOOKS DOWN POS1", -1, nullptr);
+ setGlobals1(_ripLooksDownSeries, 1, 14, 14, 14, 0, 14, 29, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 2);
+ break;
+
+ case 2:
+ case 10:
+ _ripLooksDownSeries = series_load("RIP LOOKS DOWN POS2", -1, nullptr);
+ setGlobals1(_ripLooksDownSeries, 1, 14, 14, 14, 0, 14, 29, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 2);
+ break;
+
+ case 3:
+ case 9:
+ _ripLooksDownSeries = series_load("RIP TREK LOOK DOWN POS3", -1, nullptr);
+ setGlobals1(_ripLooksDownSeries, 1, 11, 11, 11, 0, 11, 22, 22, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 2);
+ break;
+
+ case 4:
+ case 8:
+ _ripLooksDownSeries = series_load("RIP LOOKS DOWN POS4", -1, nullptr);
+ setGlobals1(_ripLooksDownSeries, 1, 16, 16, 16, 0, 16, 33, 33, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 2);
+ break;
+
+ case 5:
+ case 7:
+ _ripLooksDownSeries = series_load("RIP LOOKS DOWN POS5", -1, nullptr);
+ setGlobals1(_ripLooksDownSeries, 1, 15, 15, 15, 0, 15, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 2);
+ break;
+
+ default:
+ // No value set for _ripLookDownSeries, most like an impossible value so I skipped
+ break;
+ }
+ break;
+
+ case 2:
+ digi_play("707r04", 1, 255, -1, -1);
+ kernel_timing_trigger(10, 3, nullptr);
+ break;
+
+ case 3:
+ sendWSMessage_120000(_G(my_walker), 4);
+ break;
+
+ case 4:
+ sendWSMessage_150000(_G(my_walker), 5);
+ break;
+
+ case 5:
+ series_unload(_ripLooksDownSeries);
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+ } // ecx && player_said("GRATE")
+
+ else if (player_said ("GRATE")) {
+ digi_play("707r02", 1, 255, -1, -1);
+ } else if (ecx && player_said("MONK #5")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _704Monk1Series = series_load("704 MONK 1", -1, nullptr);
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0, false, callback, "monk");
+ sendWSMessage_10000(1, _monkMach, _704Monk1Series, 1, 26, 2, _704Monk1Series, 26, 26, 0);
+
+ break;
+
+ case 2:
+ terminateMachine(_monkMach);
+ series_unload(_704Monk1Series);
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+ }
+ } // ecx && player_said("MONK #5")
+
+ else if (ecx && player_said("MONK #6")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _704Monk2Series = series_load("704 MONK 2", -1, nullptr);
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0, false, callback, "monk");
+ sendWSMessage_10000(1, _monkMach, _704Monk2Series, 1, 28, 2, _704Monk2Series, 28, 28, 0);
+
+ break;
+
+ case 2:
+ terminateMachine(_monkMach);
+ series_unload(_704Monk2Series);
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+ }
+ } // ecx && player_said("MONK #6")
+
+ else if (ecx && player_said("MONK #7")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _704Monk3Series = series_load("704 MONK 3", -1, nullptr);
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0, false, callback, "monk");
+ sendWSMessage_10000(1, _monkMach, _704Monk3Series, 1, 35, 2, _704Monk3Series, 35, 35, 0);
+
+ break;
+
+ case 2:
+ terminateMachine(_monkMach);
+ series_unload(_704Monk3Series);
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+ }
+ } // ecx && player_said("MONK #7")
+
+ else if (ecx && player_said("MONK #8")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _704Monk4Series = series_load("704 MONK 4", -1, nullptr);
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0, false, callback, "monk");
+ sendWSMessage_10000(1, _monkMach, _704Monk4Series, 1, 19, 2, _704Monk4Series, 19, 19, 0);
+
+ break;
+
+ case 2:
+ terminateMachine(_monkMach);
+ series_unload(_704Monk4Series);
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+ }
+ } // ecx && player_said("MONK #8")
+
+ // TODO Incomplete implementation
+
+ _G(player).command_ready = 0;
}
void Room704::daemon() {
@@ -394,6 +776,13 @@ void Room704::callback(frac16 myMessage, machine *sender) {
kernel_trigger_dispatchx(myMessage);
}
+void Room704::conv704a() {
+ // TODO Not yet implemented
+}
+
+void Room704::subA2344(int32 trigger, const char *digiName) {
+ // TODO Not yet implemented
+}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section7/room704.h b/engines/m4/riddle/rooms/section7/room704.h
index 3bd90cff7be..7b21421d07c 100644
--- a/engines/m4/riddle/rooms/section7/room704.h
+++ b/engines/m4/riddle/rooms/section7/room704.h
@@ -41,12 +41,19 @@ public:
private:
static void callback(frac16 myMessage, machine *sender);
+ void conv704a();
+ void subA2344(int32 trigger, const char *digiName);
int32 _field58_mode = 0;
int32 _field5C_should = 0;
int32 _704Eye2aSeries = 0;
+ int32 _704Monk1Series = 0;
+ int32 _704Monk2Series = 0;
+ int32 _704Monk3Series = 0;
+ int32 _704Monk4Series = 0;
int32 _ripGoesDownStairsSeries = 0;
+ int32 _ripLooksDownSeries = 0;
int32 _ripTrekMedReachHandPos1Series = 0;
machine *_monkMach = nullptr;
More information about the Scummvm-git-logs
mailing list