[Scummvm-git-logs] scummvm master -> e89797e313620eb001e20b17a7aac5365d285df6
dreammaster
noreply at scummvm.org
Fri Aug 30 04:18:33 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:
e89797e313 M4: RIDDLE: Yet more room 407 parser
Commit: e89797e313620eb001e20b17a7aac5365d285df6
https://github.com/scummvm/scummvm/commit/e89797e313620eb001e20b17a7aac5365d285df6
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-29T21:18:27-07:00
Commit Message:
M4: RIDDLE: Yet 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 aff02f53275..38b4173104b 100644
--- a/engines/m4/riddle/rooms/section4/room407.cpp
+++ b/engines/m4/riddle/rooms/section4/room407.cpp
@@ -1144,11 +1144,300 @@ void Room407::parser() {
} else if (takeFlag && player_said("PUMP ROD") && _xyzzy1 == 1115) {
takePumpRod1();
} else if (takeFlag && player_said("PUMP ROD ") &&
- _xyzzy7 != 1114 && _xyzzy7 != 1140) {
+ _xyzzy7 != 1114 && _xyzzy7 != 1140) {
if (_val10 == 1114)
takePumpRod2();
else
takePumpRod3();
+ } else if (takeFlag && player_said("LEVER KEY ")) {
+ if (_val10 != 1114 || _xyzzy7 == 1114 || _xyzzy7 == 1140)
+ digi_play("com129", 1);
+ else
+ takeLeverKey3();
+ } else if (takeFlag && player_said("PUMP GRIPS")) {
+ takePumpGrips1();
+ return;
+ } else if (takeFlag && player_said("PUMP GRIPS ")) {
+ takePumpGrips2();
+ } else if (takeFlag && player_said("GARDEN HOSE")) {
+ takeGardenHose4();
+ return;
+ } else if (takeFlag && player_said("RUBBER PLUG")) {
+ takeRubberPlug();
+ return;
+ } else if (takeFlag && player_said("SURGICAL TUBE")) {
+ takeSurgicalTube();
+ return;
+ } else if (takeFlag && player_said("MICROSCOPE")) {
+ digi_play("407r61", 1);
+ } else if (takeFlag && (
+ player_said("DRAIN") ||
+ player_said("FAUCET STEM") ||
+ player_said("IRON SUPPORT") ||
+ player_said("AIR VALVE") ||
+ player_said("NOZZLES") ||
+ player_said("TALBE PIVOT") ||
+ player_said("HIDDEN DOOR") ||
+ player_said("CEILING PISTON") ||
+ player_said("DRAWER") ||
+ player_said("PISTON ON TABLE") ||
+ player_said("BUTTONS") ||
+ player_said("COMPRESSED AIR TANK") ||
+ player_said("WALL PISTON") ||
+ player_said("BRACKET") ||
+ player_said("LARGE GEAR") ||
+ player_said("SMALL GEAR WHEEL") ||
+ player_said("METAL DOOR") ||
+ player_said("ARMORED CABINET")
+ )) {
+ digi_play("com066", 1);
+ } else if ((player_said("FAUCET PIPE/HOSE", "SURGICAL TUBE") ||
+ player_said("TUBE/HOSE", "FAUCET PIPE") ||
+ player_said("FAUCET PIPE/TUBE", "GARDEN HOSE")) &&
+ (_xyzzy2 == 1060 || _xyzzy2 == 1061 || _xyzzy3 == 1061)) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING FAUCET PIPE/HOSE/TUBE",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _xyzzy2 = 1062;
+ _val8 = 1111;
+ _xyzzy3 = 1111;
+ inv_move_object("SURGICAL TUBE", 407);
+ inv_move_object("FAUCET PIPE", 407);
+ inv_move_object("GARDEN HOSE", 407);
+ inv_move_object("FAUCET PIPE/HOSE", 407);
+ inv_move_object("FAUCET PIPE/TUBE", 407);
+ inv_move_object("TUBE/HOSE", 407);
+ inv_give_to_player("FAUCET PIPE/HOSE/TUBE");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("FAUCET PIPE", "GARDEN HOSE") &&
+ _xyzzy2 == 1000 && _val8 == 1000) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING FAUCET PIPE/HOSE",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _xyzzy2 = 1061;
+ _val8 = 1111;
+ inv_move_object("GARDEN HOSE", 407);
+ inv_move_object("FAUCET PIPE", 407);
+ inv_give_to_player("FAUCET PIPE/HOSE");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("GARDEN HOSE", "SURGICAL TUBE") &&
+ _xyzzy2 == 1000 && _xyzzy3 == 1000) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING TUBE/HOSE",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _xyzzy2 = 1060;
+ _xyzzy3 = 1111;
+ inv_move_object("GARDEN HOSE", 407);
+ inv_move_object("SURGICAL TUBE", 407);
+ inv_give_to_player("TUBE/HOSE");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("FAUCET PIPE", "SURGICAL TUBE") &&
+ _val8 == 1000 && _xyzzy3 == 1000) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING FAUCET PIPE/TUBE",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _val8 = 1060;
+ _xyzzy3 = 1061;
+ inv_move_object("FAUCET PIPE", 407);
+ inv_move_object("SURGICAL TUBE", 407);
+ inv_give_to_player("FAUCET PIPE/TUBE");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if ((player_said("JAR/PLUG/GRIPS", "CORK") ||
+ player_said("JAR/CORK/PLUG", "PUMP GRIPS") ||
+ player_said("JAR/CORK/GRIPS", "RUBBER PLUG")) &&
+ (_xyzzy7 == 1054 || _xyzzy7 == 1053 || _xyzzy7 == 1055)) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING JAR/PLUG/CORK/GRIPS",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _xyzzy7 = 1056;
+ _xyzzy9 = 1116;
+ _xyzzy5 = 1116;
+ _xyzzy4 = 1116;
+ inv_move_object("JAR/PLUG/GRIPS", 407);
+ inv_move_object("JAR/CORK/PLUG", 407);
+ inv_move_object("JAR/CORK/GRIPS", 407);
+ inv_move_object("RUBBER PLUG", 407);
+ inv_move_object("CORK", 407);
+ inv_move_object("PUMP GRIPS", 407);
+ inv_give_to_player("JAR/PLUG/CORK/GRIPS");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if ((player_said("JAR/RUBBER PLUG", "CORK") ||
+ player_said("JAR/CORK", "RUBBER PLUG")) &&
+ (_xyzzy7 == 1050 || _xyzzy7 == 1051)) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING JAR/CORK/PLUG",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _xyzzy7 = 1053;
+ _xyzzy9 = 1116;
+ _xyzzy5 = 1116;
+ inv_move_object("JAR/RUBBER PLUG", 407);
+ inv_move_object("JAR/CORK", 407);
+ inv_move_object("RUBBER PLUG", 407);
+ inv_move_object("CORK", 407);
+ inv_give_to_player("JAR/CORK/PLUG");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if ((player_said("JAR/GRIPS", "CORK") ||
+ player_said("JAR/CORK", "PUMP GRIPS")) &&
+ (_xyzzy7 == 1052 || _xyzzy7 == 1051)) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING JAR/CORK/GRIPS",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _xyzzy7 = 1055;
+ _xyzzy9 = 1116;
+ _xyzzy4 = 1116;
+ inv_move_object("JAR/GRIPS", 407);
+ inv_move_object("JAR/CORK", 407);
+ inv_move_object("PUMP GRIPS", 407);
+ inv_move_object("CORK", 407);
+ inv_give_to_player("JAR/CORK/GRIPS");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if ((player_said("JAR/GRIPS", "RUBBER PLUG") ||
+ player_said("JAR/RUBBER PLUG", "PUMP GRIPS")) &&
+ (_xyzzy7 == 1052 || _xyzzy7 == 1050)) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING JAR/PLUG/GRIPS",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _xyzzy7 = 1055;
+ _xyzzy5 = 1116;
+ _xyzzy4 = 1116;
+ inv_move_object("JAR/GRIPS", 407);
+ inv_move_object("JAR/RUBBER PLUG", 407);
+ inv_move_object("PUMP GRIPS", 407);
+ inv_move_object("RUBBER PLUG", 407);
+ inv_give_to_player("JAR/PLUG/GRIPS");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("GLASS JAR", "CORK") &&
+ _xyzzy7 == 1000 && _xyzzy9 == 1000) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING JAR/CORK",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _xyzzy7 = 1051;
+ _xyzzy9 = 1116;
+ inv_move_object("GLASS JAR", 407);
+ inv_move_object("CORK", 407);
+ inv_give_to_player("JAR/CORK");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("GLASS JAR", "PUMP GRIPS") &&
+ _xyzzy7 == 1000 && _xyzzy4 == 1000) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING JAR/GRIPS",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _xyzzy7 = 1052;
+ _xyzzy4 = 1116;
+ inv_move_object("GLASS JAR", 407);
+ inv_move_object("PUMP GRIPS", 407);
+ inv_give_to_player("JAR/GRIPS");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("GLASS JAR", "RUBBER PLUG") &&
+ _xyzzy7 == 1000 && _xyzzy5 == 1000) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING JAR/RUBBER PLUG",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _xyzzy7 = 1050;
+ _xyzzy5 = 1116;
+ inv_move_object("GLASS JAR", 407);
+ inv_move_object("RUBBER PLUG", 407);
+ inv_give_to_player("JAR/RUBBER PLUG");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("LEVER KEY", "PUMP ROD") &&
+ _val10 == 1000 && _xyzzy1 == 1000) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING LEVER KEY/PUMP ROD",
+ _G(master_palette), 5, 1, 270, 150, 2, nullptr, -1);
+ break;
+ case 2:
+ _val10 = 1041;
+ _xyzzy1 = 1041;
+ _xyzzy10 = 1041;
+ inv_move_object("LEVER KEY", 407);
+ inv_move_object("PUMP ROD", 407);
+ inv_give_to_player("LEVER KEY/PUMP ROD");
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+
+ } else if (useFlag && player_said("FAUCET PIPE/HOSE/TUBE")) {
+ // TODO
}
// TODO
else {
@@ -3619,6 +3908,30 @@ void Room407::takeGardenHose3() {
}
}
+void Room407::takeGardenHose4() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (inv_object_is_here("GARDEN HOSE")) {
+ inv_give_to_player("GARDEN HOSE");
+ hotspot_set_active("GARDEN HOSE", false);
+ terminateMachineAndNull(_drawerPopupHose);
+ kernel_examine_inventory_object("PING GARDEN HOSE",
+ _G(master_palette), 5, 1, 25, 190, 2, nullptr, -1);
+
+ _G(player).command_ready = false;
+ }
+ break;
+
+ case 2:
+ player_set_commands_allowed(true);
+ _G(player).command_ready = false;
+ break;
+
+ default:
+ break;
+ }
+}
+
void Room407::takeGlassJar1() {
switch (_G(kernel).trigger) {
case -1:
@@ -4073,6 +4386,60 @@ void Room407::takeLeverKey2() {
}
}
+void Room407::takeLeverKey3() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _407rp98 = series_load("407RP98");
+ terminateMachineAndNull(_lever);
+ terminateMachineAndNull(_pump);
+
+ player_update_info();
+ _safariShadow = series_place_sprite("SAFARI SHADOW 1", 0,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0xf00);
+
+ ws_hide_walker();
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0, 0,
+ triggerMachineByHashCallbackNegative, "RIP levers ceiling");
+ sendWSMessage_10000(1, _ripley, _407rp98, 101, 81, 2,
+ _407rp98, 81, 81, 0);
+ break;
+
+ case 2:
+ digi_play("407_s07a", 1);
+ sendWSMessage_10000(1, _ripley, _407rp98, 80, 53, 3,
+ _407rp98, 53, 53, 0);
+ break;
+
+ case 3:
+ kernel_examine_inventory_object("PING LEVER KEY",
+ _G(master_palette), 5, 1, 350, 150, 4, "407_s07a", -1);
+ break;
+
+ case 4:
+ sendWSMessage_10000(1, _ripley, _407rp98, 52, 1, 5,
+ _407rp98, 1, 1, 0);
+ break;
+
+ case 5:
+ terminateMachineAndNull(_ripley);
+ terminateMachineAndNull(_safariShadow);
+ ws_unhide_walker();
+
+ _pump = series_place_sprite("407PMROD", 0, 0, -53, 100, 0xf00);
+ hotspot_set_active("LEVER KEY ", false);
+ inv_give_to_player("LEVER KEY");
+ _val10 = 1000;
+
+ series_unload(_407rp98);
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+}
+
void Room407::takeAirValveHandle() {
switch (_G(kernel).trigger) {
case -1:
@@ -4303,6 +4670,127 @@ void Room407::takePumpRod3() {
}
}
+void Room407::takePumpGrips1() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (inv_object_is_here("PUMP GRIPS")) {
+ inv_give_to_player("PUMP GRIPS");
+ _xyzzy4 = 1000;
+
+ hotspot_set_active("PUMP GRIPS", false);
+ terminateMachineAndNull(_handleInDrawer);
+ kernel_examine_inventory_object("PING PUMP GRIPS",
+ _G(master_palette), 5, 1, 85, 190, 2, nullptr, -1);
+ _G(player).command_ready = false;
+ }
+ break;
+
+ case 2:
+ player_set_commands_allowed(true);
+ _G(player).command_ready = false;
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room407::takePumpGrips2() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _pump407 = series_load("407 PUMP");
+
+ player_update_info();
+ _safariShadow = series_place_sprite("SAFARI SHADOW 1", 0,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0xf00);
+ ws_hide_walker();
+
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, 0,
+ triggerMachineByHashCallbackNegative, "RIP pumps");
+ sendWSMessage_10000(1, _ripley, _pump407, 1, 40, 1,
+ _pump407, 40, 40, 0);
+ kernel_timing_trigger(150, 69);
+ break;
+
+ case 1:
+ terminateMachineAndNull(_handleInDrawer);
+ inv_give_to_player("PUMP GRIPS");
+ hotspot_set_active("PUMP GRIPS ", false);
+ kernel_examine_inventory_object("PING PUMP GRIPS",
+ _G(master_palette), 5, 1, 125, 200, 2, nullptr, -1);
+ break;
+
+ case 2:
+ sendWSMessage_10000(1, _ripley, _pump407, 14, 1, 4,
+ _pump407, 1, 1, 0);
+ break;
+
+ case 4:
+ terminateMachineAndNull(_ripley);
+ terminateMachineAndNull(_safariShadow);
+ series_unload(_pump407);
+ player_set_commands_allowed(true);
+ break;
+
+ case 69:
+ digi_play("407_s07", 2);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room407::takeRubberPlug() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (inv_object_is_here("RUBBER PLUG")) {
+ inv_give_to_player("RUBBER PLUG");
+ hotspot_set_active("RUBBER PLUG", false);
+ terminateMachineAndNull(_stopperInDrawer);
+ kernel_examine_inventory_object("PING RUBBER PLUG",
+ _G(master_palette), 5, 1, 75, 210, 2, nullptr, -1);
+
+ _G(player).command_ready = false;
+ }
+ break;
+
+ case 2:
+ player_set_commands_allowed(true);
+ _G(player).command_ready = false;
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room407::takeSurgicalTube() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (inv_object_is_here("SURGICAL TUBE")) {
+ inv_give_to_player("SURGICAL TUBE");
+ _xyzzy3 = 1000;
+ hotspot_set_active("SURGICAL TUBE", false);
+ terminateMachineAndNull(_tubeInDrawer);
+ kernel_examine_inventory_object("PING SURGICAL TUBE",
+ _G(master_palette), 5, 1, 85, 210, 2, nullptr, -1);
+
+ _G(player).command_ready = false;
+ }
+ break;
+
+ case 2:
+ player_set_commands_allowed(true);
+ _G(player).command_ready = false;
+ 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 b1869e4dd4f..179be383000 100644
--- a/engines/m4/riddle/rooms/section4/room407.h
+++ b/engines/m4/riddle/rooms/section4/room407.h
@@ -202,6 +202,7 @@ private:
void takeGardenHose1();
void takeGardenHose2();
void takeGardenHose3();
+ void takeGardenHose4();
void takeGlassJar1();
void takeGlassJar2();
void takePeriodicTable1();
@@ -214,11 +215,16 @@ private:
void takeNozzlesTube();
void takeLeverKey1();
void takeLeverKey2();
+ void takeLeverKey3();
void takeAirValveHandle();
void takeFaucetHandle();
void takePumpRod1();
void takePumpRod2();
void takePumpRod3();
+ void takePumpGrips1();
+ void takePumpGrips2();
+ void takeRubberPlug();
+ void takeSurgicalTube();
public:
Room407() : Room() {}
More information about the Scummvm-git-logs
mailing list