[Scummvm-git-logs] scummvm master -> cde46fed2eea73b260ffdf00cac569611e9577a5
dreammaster
noreply at scummvm.org
Sat Aug 24 23:49:15 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:
cde46fed2e M4: RIDDLE: More room 407 parser
Commit: cde46fed2eea73b260ffdf00cac569611e9577a5
https://github.com/scummvm/scummvm/commit/cde46fed2eea73b260ffdf00cac569611e9577a5
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-24T16:49:09-07:00
Commit Message:
M4: RIDDLE: More room 407 parser
Changed paths:
engines/m4/riddle/rooms/section4/room407.cpp
engines/m4/riddle/rooms/section4/room407.h
diff --git a/engines/m4/riddle/rooms/section4/room407.cpp b/engines/m4/riddle/rooms/section4/room407.cpp
index cd10627448c..3d3d9a58f53 100644
--- a/engines/m4/riddle/rooms/section4/room407.cpp
+++ b/engines/m4/riddle/rooms/section4/room407.cpp
@@ -876,6 +876,39 @@ void Room407::parser() {
} else if (lookFlag && player_said("NOZZLES/TUBE")) {
tabletopPopup();
digi_play("407r31", 1);
+ } else if (lookFlag && player_said("GARDEN HOSE") &&
+ inv_object_is_here("GARDEN HOSE")) {
+ digi_play("407r28", 1);
+ } else if (lookFlag && player_said("PUMP GRIPS ") &&
+ inv_object_is_here("PUMP GRIPS")) {
+ digi_play("407r99", 1);
+ } else if (lookFlag && player_said("PUMP GRIPS") &&
+ inv_object_is_here("PUMP GRIPS")) {
+ digi_play("407r30", 1);
+ } else if (player_said("GARDEN HOSE", "SURGICAL TUBE ") && _xyzzy3 == 1100) {
+ gardenHoseSurgicalTube();
+ } else if ((player_said("SURGICAL TUBE", "FAUCET PIPE") ||
+ player_said("TUBE/HOSE", "FAUCET PIPE")) && _val8 == 1100) {
+ surgicalTubeFaucetPipe();
+ } else if ((player_said("SURGICAL TUBE", "FAUCET STEM") ||
+ player_said("TUBE/HOSE", "FAUCET STEM") ||
+ player_said("FAUCET PIPE/HOSE/TUBE", "FAUCET STEM")) &&
+ _val8 != 1100) {
+ surgicalTubeStem();
+ } else if (player_said("GARDEN HOSE", "SURGICAL TUBE ") ||
+ player_said("FAUCET PIPE/HOSE", "SURGICAL TUBE ")) {
+ gardenHoseSurgicalTube2();
+ } else if (player_said("FAUCET PIPE", "GARDEN HOSE ")) {
+ faucetPipeGardenHose();
+ } else if (player_said("FAUCET PIPE", "GLASS JAR ") ||
+ player_said("FAUCET PIPE/HOSE", "GLASS JAR ") ||
+ player_said("FAUCET PIPE/HOSE/TUBE", "GLASS JAR ")) {
+ faucetPipeGlassJar();
+ } else if (player_said("GARDEN HOSE", "FAUCET PIPE ") ||
+ player_said("TUBE/HOSE", "FAUCET PIPE ")) {
+ gardenHoseFaucetPipe();
+ } else if (player_said("SURGICAL TUBE", "GARDEN HOSE ")) {
+ surgicalTubeGardenHose();
}
// TODO
else {
@@ -1312,6 +1345,363 @@ bool Room407::lookLeverKey() {
return false;
}
+void Room407::gardenHoseSurgicalTube() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ ws_walk(170, 335, nullptr, 0, 11, 1);
+ break;
+ case 0:
+ if (_val4 == 1010) {
+ digi_play("407r99e", 1);
+ } else {
+ player_set_commands_allowed(false);
+ _ripHiHand1 = series_load("rip trek hi 1 hand");
+ setGlobals1(_ripHiHand1, 1, 5, 5, 5, 0, 5, 1, 1, 1);
+ sendWSMessage_110000(1);
+ }
+ break;
+
+ case 1:
+ _drawerPopupHose = series_place_sprite("407 TUBE AND HOSE INTO SINK",
+ 1, 0, 0, 100, 0xe00);
+ hotspot_set_active("GARDEN HOSE ", true);
+ inv_move_object("GARDEN HOSE", 407);
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripHiHand1);
+ _xyzzy2 = 1100;
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room407::gardenHoseSurgicalTube2() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (_val4 == 1010)
+ digi_play("407r99e", 1);
+ else
+ reachHand(10);
+ break;
+
+ case 1:
+ _drawerPopupHose = series_place_sprite(
+ "407 TUBE AND HOSE INTO SINK", 0, 0, 0, 100, 0xe00);
+ hotspot_set_active("GARDEN HOSE ", true);
+
+ if (_xyzzy2 == 1061) {
+ inv_move_object("GARDEN HOSE", 407);
+ } else {
+ _faucet1 = series_place_sprite("407 FAUCET IN SINK",
+ 0, 0, 0, 100, 0xe00);
+ hotspot_set_active("FAUCET PIPE ", true);
+ inv_move_object("FAUCET PIPE/HOSE", 407);
+ }
+
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripMedHand1);
+ if (_xyzzy2 == 1061)
+ _val8 = 1130;
+
+ _xyzzy2 = 1130;
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room407::surgicalTubeFaucetPipe() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 0:
+ if (_val4 == 1010) {
+ digi_play("407r99e", 1);
+ } else {
+ player_set_commands_allowed(false);
+ _ripHiHand1 = series_load("rip trek hi 1 hand");
+ setGlobals1(_ripHiHand1, 1, 6, 6, 6, 0, 6, 1, 1, 1);
+ sendWSMessage_110000(1);
+ }
+ break;
+
+ case 1:
+ inv_move_object("SURGICAL TUBE", 407);
+ _tubeInDrawer = series_place_sprite("407 TUBING BY ITSELF",
+ 1, 0, 0, 100, 0xe00);
+ hotspot_set_active("SURGICAL TUBE ", true);
+
+ if (_xyzzy3 == 1111) {
+ _drawerPopupHose = series_place_sprite("407 TUBE AND HOSE INTO SINK",
+ 1, 0, 0, 100, 0xe00);
+ hotspot_set_active("GARDEN HOSE ", true);
+ inv_move_object("TUBE/HOSE", 407);
+ _xyzzy2 = 1100;
+ }
+
+ digi_play("407_s06", 2, 255, 2);
+ break;
+
+ case 2:
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripHiHand1);
+ _xyzzy3 = 1100;
+ player_set_commands_allowed(true);
+ break;
+
+ case 777:
+ ws_walk(170, 335, nullptr, 0, 11);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room407::surgicalTubeStem() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ reachHand(10);
+ break;
+
+ case 1:
+ if (_xyzzy3 != 1111) {
+ inv_move_object("SURGICAL TUBE", 407);
+ } else if (_xyzzy2 == 1060) {
+ _drawerPopupHose = series_place_sprite(
+ "407 TUBE AND HOSE INTO SINK", 0, 0, 0, 100, 0xe00);
+ hotspot_set_active("GARDEN HOSE ", true);
+ inv_move_object("TUBE/HOSE", 407);
+ _xyzzy2 = 1130;
+ } else if (_xyzzy2 == 1062) {
+ _drawerPopupHose = series_place_sprite(
+ "407 TUBE AND HOSE INTO SINK", 0, 0, 0, 100, 0xe00);
+ hotspot_set_active("GARDEN HOSE ", true);
+ _faucet1 = series_place_sprite("407 FAUCET IN SINK", 0, 0, 0, 100, 0xe00);
+ hotspot_set_active("FAUCET PIPE ", true);
+ inv_move_object("FAUCET PIPE/HOSE/TUBE", 407);
+ _val8 = 1130;
+ _xyzzy2 = 1130;
+ }
+
+ _tubeInDrawer = series_place_sprite("407 TUBING BY ITSELF",
+ 0, 0, 0, 100, 0xe00);
+ hotspot_set_active("SURGICAL TUBE ", true);
+ digi_play("407_s06", 2, 255, 2);
+ break;
+
+ case 2:
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripMedHand1);
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room407::reachHand(int frame) {
+ player_set_commands_allowed(false);
+ _ripMedHand1 = series_load("RIP TREK MED REACH HAND POS1");
+ setGlobals1(_ripMedHand1, 1, frame, frame, frame, 0, frame, 1, 1, 1);
+ sendWSMessage_110000(1);
+}
+
+void Room407::faucetPipeGardenHose() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (_val4 == 1010)
+ digi_play("407r99e", 1);
+ else
+ reachHand(10);
+ break;
+
+ case 1:
+ _faucet1 = series_place_sprite("407 FAUCET IN SINK",
+ 0, 0, 0, 100, 0xe00);
+ hotspot_set_active("FAUCET PIPE ", true);
+ inv_move_object("FAUCET PIPE", 407);
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripMedHand1);
+ _val8 = 1130;
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room407::faucetPipeGlassJar() {
+ switch (_G(kernel).trigger) {
+ case 1:
+ if (_val8 != 1111) {
+ inv_move_object("FAUCET PIPE", 407);
+ } else if (_xyzzy2 == 1061) {
+ _drawerPopupHose = series_place_sprite(
+ "407 HOSE HANG FROM JAR", 0, 0, 0, 100, 0xb00);
+ hotspot_set_active("GARDEN HOSE ", true);
+ inv_move_object("FAUCET PIPE/HOSE", 407);
+ _xyzzy2 = 1116;
+ } else if (_xyzzy2 == 1062) {
+ _drawerPopupHose = series_place_sprite(
+ "407 HOSE HANG FROM JAR", 0, 0, 0, 100, 0xb00);
+ hotspot_set_active("GARDEN HOSE ", true);
+ _tubeInDrawer = series_place_sprite("407 HOSE HANG FROM JAR",
+ 1, 0, 0, 100, 0xb00);
+ hotspot_set_active("SURGICAL TUBE ", true);
+ inv_move_object("FAUCET PIPE/HOSE/TUBE", 407);
+ _xyzzy3 = 1116;
+ _xyzzy2 = 1116;
+ }
+
+ _faucet1 = series_place_sprite("407BITSR", 1, 0, -53, 100, 0xb00);
+ hotspot_set_active("FAUCET PIPE ", true);
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripHiHand1);
+ _val8 = 1116;
+ player_set_commands_allowed(true);
+ break;
+
+ case 70:
+ player_set_commands_allowed(false);
+ _ripHiHand1 = series_load("rip trek hi 1 hand");
+ setGlobals1(_ripHiHand1, 1, 12, 12, 12, 0, 12, 1, 1, 1);
+ sendWSMessage_110000(1);
+ break;
+
+ case 777:
+ ws_walk(436, 331, nullptr, 70, 1);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room407::gardenHoseFaucetPipe() {
+ switch (_G(kernel).trigger) {
+ case 1:
+ _drawerPopupHose = series_place_sprite(
+ "407 HOSE HANG FROM JAR", 0, 0, 0, 100, 0xb00);
+ hotspot_set_active("GARDEN HOSE ", true);
+
+ if (_xyzzy2 == 1060) {
+ _tubeInDrawer = series_place_sprite(
+ "407 HOSE HANG FROM JAR", 1, 0, 0, 100, 0xb00);
+ inv_move_object("TUBE/HOSE", 407);
+ hotspot_set_active("SURGICAL TUBE ", true);
+ } else {
+ inv_move_object("GARDEN HOSE", 407);
+ }
+
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripHiHand1);
+ if (_xyzzy2 == 1060)
+ _xyzzy3 = 1116;
+
+ _xyzzy2 = 1116;
+ player_set_commands_allowed(true);
+ break;
+
+ case 70:
+ _ripHiHand1 = series_load("rip trek hi 1 hand");
+ setGlobals1(_ripHiHand1, 1, 12, 12, 12, 0, 12, 1, 1, 1);
+ break;
+
+ case 777:
+ ws_walk(436, 331, nullptr, 70, 1);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room407::surgicalTubeGardenHose() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _ripLowHand1 = series_load("RIP LOW REACH POS1");
+ setGlobals1(_ripLowHand1, 1, 11, 11, 11, 0, 11, 1, 1, 1);
+ sendWSMessage_110000(1);
+ break;
+
+ case 1:
+ _tubeInDrawer = series_place_sprite("407 HOSE HANG FROM JAR", 1, 0, 0, 100, 0xb00);
+ inv_move_object("SURGICAL TUBE", 407);
+ hotspot_set_active("SURGICAL TUBE ", true);
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripLowHand1);
+ _xyzzy3 = 1116;
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+}
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
diff --git a/engines/m4/riddle/rooms/section4/room407.h b/engines/m4/riddle/rooms/section4/room407.h
index c1ea9586f86..f60b699edaa 100644
--- a/engines/m4/riddle/rooms/section4/room407.h
+++ b/engines/m4/riddle/rooms/section4/room407.h
@@ -125,6 +125,9 @@ private:
int _stair = 0;
machine *_ripley = nullptr;
machine *_microscopeCloseup = nullptr;
+ int _ripHiHand1 = 0;
+ int _ripMedHand1 = 0;
+ int _ripLowHand1 = 0;
void setHotspots();
void lookItem(const char *item, const char *digi);
@@ -140,6 +143,15 @@ private:
bool lookEmeraldCork();
void periodicTablePopup();
bool lookLeverKey();
+ void gardenHoseSurgicalTube();
+ void gardenHoseSurgicalTube2();
+ void surgicalTubeFaucetPipe();
+ void surgicalTubeStem();
+ void reachHand(int frame);
+ void faucetPipeGardenHose();
+ void faucetPipeGlassJar();
+ void gardenHoseFaucetPipe();
+ void surgicalTubeGardenHose();
public:
Room407() : Room() {}
More information about the Scummvm-git-logs
mailing list