[Scummvm-git-logs] scummvm master -> 9cae5781155854606163e6cd9fd9da2a9f1941dd
dreammaster
noreply at scummvm.org
Fri Aug 23 05:12:28 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:
9cae578115 M4: RIDDLE: Added room 407 pre-parser
Commit: 9cae5781155854606163e6cd9fd9da2a9f1941dd
https://github.com/scummvm/scummvm/commit/9cae5781155854606163e6cd9fd9da2a9f1941dd
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-22T22:00:30-07:00
Commit Message:
M4: RIDDLE: Added room 407 pre-parser
Changed paths:
engines/m4/adv_r/adv_trigger.cpp
engines/m4/adv_r/adv_trigger.h
engines/m4/riddle/rooms/section4/room407.cpp
engines/m4/riddle/rooms/section4/room407.h
diff --git a/engines/m4/adv_r/adv_trigger.cpp b/engines/m4/adv_r/adv_trigger.cpp
index c031a0200f5..40f5da48aa2 100644
--- a/engines/m4/adv_r/adv_trigger.cpp
+++ b/engines/m4/adv_r/adv_trigger.cpp
@@ -144,6 +144,13 @@ void kernel_timing_trigger(int32 ticks, int16 trigger, const char *name) {
}
}
+void kernel_timing_trigger(int32 ticks, int16 trigger,
+ KernelTriggerType preMode, KernelTriggerType postMode) {
+ _G(kernel).trigger_mode = preMode;
+ kernel_timing_trigger(ticks, trigger, nullptr);
+ _G(kernel).trigger_mode = postMode;
+}
+
void kernel_timing_trigger_daemon(int32 ticks, int16 trigger) {
KernelTriggerType oldMode = _G(kernel).trigger_mode;
_G(kernel).trigger_mode = KT_DAEMON;
diff --git a/engines/m4/adv_r/adv_trigger.h b/engines/m4/adv_r/adv_trigger.h
index 8c4e62c36f1..6c04bd4be00 100644
--- a/engines/m4/adv_r/adv_trigger.h
+++ b/engines/m4/adv_r/adv_trigger.h
@@ -63,6 +63,8 @@ bool kernel_trigger_dispatchx(int32 trigger_num);
bool kernel_trigger_dispatch_now(int32 trigger_num);
void kernel_timing_trigger(int32 ticks, int16 trigger, const char *name = nullptr);
void kernel_timing_trigger_daemon(int32 ticks, int16 trigger);
+void kernel_timing_trigger(int32 ticks, int16 trigger,
+ KernelTriggerType preMode, KernelTriggerType postMode);
void cisco_dispatch_triggers();
void cisco_clear_triggers();
diff --git a/engines/m4/riddle/rooms/section4/room407.cpp b/engines/m4/riddle/rooms/section4/room407.cpp
index da839c0cd5a..bb2d19a1415 100644
--- a/engines/m4/riddle/rooms/section4/room407.cpp
+++ b/engines/m4/riddle/rooms/section4/room407.cpp
@@ -531,7 +531,182 @@ void Room407::pre_parser() {
bool lookFlag = player_said_any("look", "look at");
bool takeFlag = player_said("take");
bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
- // TODO
+
+ if ((player_said("SURGICAL TUBE", "FAUCET PIPE") || player_said("TUBE/HOSE", "FAUCET PIPE")) &&
+ _val8 == 1100) {
+ _G(player).resetWalk();
+ kernel_timing_trigger(1, 777, KT_PARSE, KT_PREPARSE);
+ }
+
+ if (player_said("LEVER KEY ", "GLASS JAR") ||
+ player_said("LEVER KEY ", "JAR/RUBBER PLUG") ||
+ player_said("LEVER KEY ", "JAR/CORK") ||
+ player_said("LEVER KEY ", "JAR/GRIPS") ||
+ player_said("LEVER KEY ", "JAR/CORK/PLUG") ||
+ player_said("LEVER KEY ", "JAR/PLUG/GRIPS") ||
+ player_said("LEVER KEY ", "JAR/CORK/GRIPS") ||
+ player_said("LEVER KEY ", "JAR/PLUG/CORK/GRIPS") ||
+ player_said("FAUCET PIPE ", "TUBE/HOSE") ||
+ player_said("FAUCET PIPE ", "GARDEN HOSE") ||
+ (takeFlag && player_said("GARDEN HOSE ")) ||
+ player_said("GLASS JAR ", "FAUCET PIPE") ||
+ player_said("GLASS JAR ", "FAUCET PIPE/HOSE") ||
+ player_said("GLASS JAR ", "FAUCET PIPE/HOSE/TUBE")) {
+ _G(player).resetWalk();
+ kernel_timing_trigger(1, 777, KT_PARSE, KT_PREPARSE);
+ }
+
+ if (useFlag && player_said("LEVER KEY ")) {
+ _G(player).resetWalk();
+ kernel_timing_trigger(1, 777, KT_PARSE, KT_PREPARSE);
+ }
+
+ if (player_said("SURGICAL TUBE ", "GARDEN HOSE ")) {
+ player_set_commands_allowed(false);
+ _G(player).resetWalk();
+ intr_cancel_sentence();
+ kernel_timing_trigger(1, 310, KT_DAEMON, KT_PARSE);
+ }
+
+ if (player_said("GARDEN HOSE ", "FAUCET PIPE ")) {
+ player_set_commands_allowed(false);
+ _G(player).resetWalk();
+ kernel_timing_trigger(1, 300, KT_DAEMON, KT_PARSE);
+ }
+
+ if (player_said("FAUCET PIPE ", "GLASS JAR ") ||
+ player_said("SURGICAL TUBE ", "FAUCET STEM")) {
+ player_set_commands_allowed(false);
+ _G(player).resetWalk();
+ intr_cancel_sentence();
+ kernel_timing_trigger(1, 300, KT_DAEMON, KT_PARSE);
+ }
+
+ if (useFlag && player_said("SURGICAL TUBE ") && _xyzzy2 != 1130) {
+ mouse_set_sprite(43);
+ intr_freshen_sentence();
+ }
+
+ if (useFlag && player_said("SURGICAL TUBE ")) {
+ mouse_set_sprite(43);
+ intr_freshen_sentence();
+ }
+
+ if (useFlag && player_said("GARDEN HOSE ") && _val8 != 1130) {
+ if (_val4 != 1101) {
+ digi_play("407R99E", 1);
+ intr_cancel_sentence();
+ return;
+ }
+
+ mouse_set_sprite(36);
+ intr_freshen_sentence();
+ }
+
+ if (useFlag && player_said("GARDEN HOSE ") && _xyzzy3 != 1116) {
+ mouse_set_sprite(36);
+ intr_freshen_sentence();
+ }
+
+ if (useFlag && player_said("FAUCET PIPE ")) {
+ mouse_set_sprite(44);
+ intr_freshen_sentence();
+ }
+
+ if (useFlag && player_said("FAUCET PIPE ") && _xyzzy2 != 1116) {
+ mouse_set_sprite(44);
+ intr_freshen_sentence();
+ }
+
+ if (_val15 == 1030) {
+ _G(player).resetWalk();
+
+ if (player_said(" ")) {
+ intr_cancel_sentence();
+ _val15 = 1031;
+ kernel_timing_trigger(1, 216, KT_DAEMON, KT_PARSE);
+ }
+ } else if (_val5 == 1010) {
+ _G(player).resetWalk();
+
+ if (player_said(" ") || (lookFlag && player_said("MESSAGE LOG"))) {
+ intr_cancel_sentence();
+ _val5 = 1011;
+ kernel_timing_trigger(1, 10, KT_DAEMON, KT_PARSE);
+ }
+ } else if (_frotz10 == 1030) {
+ _G(player).resetWalk();
+
+ if (player_said(" ")) {
+ intr_cancel_sentence();
+ _frotz10 = 1031;
+ kernel_timing_trigger(1, 200, KT_DAEMON, KT_PARSE);
+ }
+ } else if (_int1 == 1030) {
+ _G(player).resetWalk();
+
+ if (player_said(" ")) {
+ intr_cancel_sentence();
+ _int1 = 1031;
+ kernel_timing_trigger(1, 202, KT_DAEMON, KT_PARSE);
+ }
+ } else if (_int3 == 1030) {
+ _G(player).resetWalk();
+
+ if (player_said(" ")) {
+ intr_cancel_sentence();
+ _int3 = 1031;
+ kernel_timing_trigger(1, 204, KT_DAEMON, KT_PARSE);
+ }
+ } else if (_int4 == 1030) {
+ _G(player).resetWalk();
+
+ if (player_said(" ")) {
+ intr_cancel_sentence();
+ _int4 = 1031;
+ kernel_timing_trigger(1, 206, KT_DAEMON, KT_PARSE);
+ }
+ } else if (_int2 == 1030) {
+ _G(player).resetWalk();
+
+ if (player_said(" ")) {
+ intr_cancel_sentence();
+ _int2 = 1031;
+ kernel_timing_trigger(1, 208, KT_DAEMON, KT_PARSE);
+ }
+ } else if (_int5 == 1030) {
+ _G(player).resetWalk();
+
+ if (player_said(" ")) {
+ intr_cancel_sentence();
+ _int5 = 1031;
+ kernel_timing_trigger(1, 210, KT_DAEMON, KT_PARSE);
+ }
+ } else if (_int6 == 1030) {
+ _G(player).resetWalk();
+
+ if (player_said(" ")) {
+ intr_cancel_sentence();
+ _int6 = 1031;
+ kernel_timing_trigger(1, 212, KT_DAEMON, KT_PARSE);
+ }
+ } else if (_int7 == 1030) {
+ _G(player).resetWalk();
+
+ if (player_said(" ")) {
+ intr_cancel_sentence();
+ _int7 = 1031;
+ kernel_timing_trigger(1, 214, KT_DAEMON, KT_PARSE);
+ }
+ } else if (_val16 == 1030) {
+ _G(player).resetWalk();
+
+ if (player_said(" ")) {
+ intr_cancel_sentence();
+ _val16 = 1031;
+ kernel_timing_trigger(1, 218, KT_DAEMON, KT_PARSE);
+ }
+ }
}
void Room407::parser() {
diff --git a/engines/m4/riddle/rooms/section4/room407.h b/engines/m4/riddle/rooms/section4/room407.h
index 024ffa245d7..bf2c2323a0d 100644
--- a/engines/m4/riddle/rooms/section4/room407.h
+++ b/engines/m4/riddle/rooms/section4/room407.h
@@ -72,7 +72,8 @@ private:
int _buttonFrame3 = 0;
int _buttonFrame4 = 0;
int _int14 = 0;
-
+ int _val15 = 0;
+ int _val16 = 0;
int _waterFlowTube = 0;
int _waterFlowFaucet = 0;
int _waterFlowStem = 0;
More information about the Scummvm-git-logs
mailing list