[Scummvm-git-logs] scummvm master -> 452303aa4b459c8bab4128aa9ffff83ec1a4e73f
Strangerke
noreply at scummvm.org
Sun Dec 1 20:59:49 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:
452303aa4b M4: RIDDLE: room 704: Implement daemon, rename parameters of sendWSMessage_130000
Commit: 452303aa4b459c8bab4128aa9ffff83ec1a4e73f
https://github.com/scummvm/scummvm/commit/452303aa4b459c8bab4128aa9ffff83ec1a4e73f
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-01T21:57:13+01:00
Commit Message:
M4: RIDDLE: room 704: Implement daemon, rename parameters of sendWSMessage_130000
Changed paths:
engines/m4/riddle/rooms/section7/room704.cpp
engines/m4/riddle/rooms/section7/room704.h
engines/m4/riddle/triggers.cpp
engines/m4/riddle/triggers.h
diff --git a/engines/m4/riddle/rooms/section7/room704.cpp b/engines/m4/riddle/rooms/section7/room704.cpp
index 255201bb6d5..9e44670c407 100644
--- a/engines/m4/riddle/rooms/section7/room704.cpp
+++ b/engines/m4/riddle/rooms/section7/room704.cpp
@@ -121,7 +121,272 @@ void Room704::parser() {
}
void Room704::daemon() {
- // TODO
+ bool ecx = player_said("take");
+
+ switch (_G(kernel).trigger) {
+ case 70:
+ player_set_commands_allowed(false);
+ setGlobals1(_ripTrekMedReachHandPos1Series, 1, 5, 5, 5, 0, 5, 10, 10, 10, 0, 10, 1, 1, 1, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 71);
+
+ break;
+
+ case 71:
+ kernel_timing_trigger(5, 72, nullptr);
+ break;
+
+ case 72:
+ sendWSMessage_120000(_G(my_walker), 73);
+ break;
+
+ case 73:
+ kernel_timing_trigger(5, 74, nullptr);
+ break;
+
+ case 74:
+ switch (_G(flags[V218])) {
+ case 1:
+ inv_give_to_player("PEACE WHEEL");
+ _G(flags[V218]) = 0;
+ terminateMachine(_prayerWheelMach);
+ player_update_info(_G(my_walker), &_G(player_info));
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING PEACE WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 353, 225, 75, nullptr, -1);
+
+ break;
+
+ case 2:
+ inv_give_to_player("INSIGHT WHEEL");
+ _G(flags[V218]) = 0;
+ terminateMachine(_prayerWheelMach);
+ player_update_info(_G(my_walker), &_G(player_info));
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING INSIGHT WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 353, 225, 75, nullptr, -1);
+
+ break;
+
+ case 3:
+ inv_give_to_player("SERENITY WHEEL");
+ _G(flags[V218]) = 0;
+ terminateMachine(_prayerWheelMach);
+ player_update_info(_G(my_walker), &_G(player_info));
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING SERENITY WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 353, 225, 75, nullptr, -1);
+
+ break;
+
+ case 4:
+ inv_give_to_player("TRUTH WHEEL");
+ _G(flags[V218]) = 0;
+ terminateMachine(_prayerWheelMach);
+ player_update_info(_G(my_walker), &_G(player_info));
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING TRUTH WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 353, 225, 75, nullptr, -1);
+
+ break;
+
+ case 5:
+ inv_give_to_player("WISDOM WHEEL");
+ _G(flags[V218]) = 0;
+ terminateMachine(_prayerWheelMach);
+ player_update_info(_G(my_walker), &_G(player_info));
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING WISDOM WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 353, 225, 75, nullptr, -1);
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case 75:
+ sendWSMessage_130000(_G(my_walker), 76);
+ break;
+
+ case 76:
+ sendWSMessage_150000(_G(my_walker), 77);
+ break;
+
+ case 77:
+ player_set_commands_allowed(true);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "EMPTY NICHE", true);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "PRAYER WHEEL #6", false);
+
+ break;
+
+ case 80:
+ player_set_commands_allowed(false);
+ setGlobals1(_ripTrekMedReachHandPos1Series, 1, 5, 5, 5, 0, 5, 10, 10, 10, 0, 10, 1, 1, 1, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 81);
+
+ break;
+
+ case 81:
+ kernel_timing_trigger(5, 82, nullptr);
+ break;
+
+ case 82:
+ sendWSMessage_120000(_G(my_walker), 83);
+ break;
+
+ case 83:
+ if (ecx && _G(player).click_y <= 374) {
+ switch (imath_ranged_rand(1, 3)) {
+ case 1:
+ digi_play("com077", 1, 255, 84, -1);
+ break;
+
+ case 2:
+ digi_play("com078", 1, 255, 84, -1);
+ break;
+
+ case 3:
+ digi_play("com079", 1, 255, 84, -1);
+ break;
+
+ default:
+ break;
+ }
+ }
+ break;
+
+ case 84:
+ sendWSMessage_130000(_G(my_walker), 85);
+ break;
+
+ case 85:
+ sendWSMessage_150000(_G(my_walker), 86);
+ break;
+
+ case 86:
+ case 91:
+ player_set_commands_allowed(true);
+ break;
+
+ case 123:
+ if (_field58 != 124)
+ break;
+
+ switch (_field5C) {
+ case 121:
+ _704Eye2aSeries = series_load("704EYE2a", -1, nullptr);
+ _field5C = 922;
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 256, false, callback, "monk");
+ sendWSMessage_10000(1, _monkMach, _704Eye2aSeries, 1, 5, 123, _704Eye2aSeries, 5, 5, 0);
+
+ break;
+
+ case 122:
+ terminateMachine(_monkMach);
+ series_unload(_704Eye2aSeries);
+ conv_resume(conv_get_handle());
+
+ break;
+
+ case 125:
+ conv_load("conv704a", 10, 10, 91);
+ conv_export_value_curr(0, 0);
+ conv_export_value_curr(_G(flags[V211]), 1);
+ conv_export_value_curr(_G(flags[V213]), 2);
+ conv_export_value_curr((_G(flags[V218]) == 3) ? 1 : 0, 0);
+ conv_play(conv_get_handle());
+
+ break;
+
+ case 922:
+ switch (imath_ranged_rand(1, 2)) {
+ case 1:
+ _field5C = 923;
+ break;
+
+ case 2:
+ _field5C = 924;
+ break;
+
+ default:
+ break;
+ }
+
+ kernel_timing_trigger(10, 123, nullptr);
+
+ break;
+
+ case 923:
+ _field5C = 925;
+ sendWSMessage_10000(1, _monkMach, _704Eye2aSeries, 6, 7, -1, _704Eye2aSeries, 11, 13, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+ digi_play(conv_sound_to_play(), 1, 255, 123, -1);
+
+ break;
+
+ case 924:
+ _field5C = 925;
+ sendWSMessage_10000(1, _monkMach, _704Eye2aSeries, 6, 10, -1, _704Eye2aSeries, 11, 13, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+ digi_play(conv_sound_to_play(), 1, 255, 123, -1);
+
+ break;
+
+ case 925:
+ _field5C = 926;
+ sendWSMessage_10000(1, _monkMach, _704Eye2aSeries, 14, 17, 123, _704Eye2aSeries, 17, 17, 0);
+
+ break;
+
+ case 926:
+ _field5C = 122;
+ kernel_timing_trigger(10, 123, nullptr);
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case 127:
+ if (_field58 != 124)
+ break;
+
+ switch (_field5C) {
+ case 121:
+ case 122:
+ case 124:
+ case 125:
+ case 126:
+ case 127:
+ case 922:
+ case 923:
+ case 924:
+ case 925:
+ case 926:
+ kernel_timing_trigger(1, 123, nullptr);
+ break;
+ default:
+ break;
+ }
+
+ break;
+
+ case 140:
+ player_set_commands_allowed(true);
+ ws_unhide_walker(_G(my_walker));
+ terminateMachine(_ripStairsMach);
+ kernel_timing_trigger(10, 141, nullptr);
+
+ break;
+
+ case 141:
+ series_unload(_ripGoesDownStairsSeries);
+ break;
+
+ default:
+ break;
+
+ }
}
diff --git a/engines/m4/riddle/rooms/section7/room704.h b/engines/m4/riddle/rooms/section7/room704.h
index 3671a0cf8e5..e151b5dd017 100644
--- a/engines/m4/riddle/rooms/section7/room704.h
+++ b/engines/m4/riddle/rooms/section7/room704.h
@@ -42,9 +42,14 @@ public:
private:
static void callback(frac16 myMessage, machine *sender);
+ int32 _field58 = 0;
+ int32 _field5C = 0;
+
+ int32 _704Eye2aSeries = 0;
int32 _ripGoesDownStairsSeries = 0;
int32 _ripTrekMedReachHandPos1Series = 0;
+ machine *_monkMach = nullptr;
machine *_prayerWheelMach = nullptr;
machine *_ripStairsMach = nullptr;
};
diff --git a/engines/m4/riddle/triggers.cpp b/engines/m4/riddle/triggers.cpp
index 331760758cd..a1de3d921df 100644
--- a/engines/m4/riddle/triggers.cpp
+++ b/engines/m4/riddle/triggers.cpp
@@ -209,12 +209,12 @@ void sendWSMessage_120000(int trigger) {
sendWSMessage_120000(_G(my_walker), trigger);
}
-void sendWSMessage_130000(machine *recv, int val1) {
- if (val1 == 0)
- val1 = -1;
+void sendWSMessage_130000(machine *mach, int trigger) {
+ if (trigger == 0)
+ trigger = -1;
- _G(globals)[GLB_TEMP_17] = kernel_trigger_create(val1);
- sendWSMessage(ACTION_19 << 16, 0, recv, 0, 0, 1);
+ _G(globals)[GLB_TEMP_17] = kernel_trigger_create(trigger);
+ sendWSMessage(ACTION_19 << 16, 0, mach, 0, nullptr, 1);
}
void sendWSMessage_130000(int val1) {
diff --git a/engines/m4/riddle/triggers.h b/engines/m4/riddle/triggers.h
index 740e3ef3a3b..c2064c3c131 100644
--- a/engines/m4/riddle/triggers.h
+++ b/engines/m4/riddle/triggers.h
@@ -62,7 +62,7 @@ extern void sendWSMessage_110000(machine *mach, int trigger);
extern void sendWSMessage_110000(int trigger);
extern void sendWSMessage_120000(int trigger);
extern void sendWSMessage_120000(machine *mach, int trigger);
-extern void sendWSMessage_130000(machine *recv, int val1);
+extern void sendWSMessage_130000(machine *mach, int trigger);
extern void sendWSMessage_130000(int val1);
extern void sendWSMessage_140000(machine *mach, int trigger);
extern void sendWSMessage_140000(int trigger);
More information about the Scummvm-git-logs
mailing list