5986 lines
152 KiB
C++
5986 lines
152 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/ },.
|
|
*
|
|
*/
|
|
|
|
#include "m4/riddle/rooms/section4/room407.h"
|
|
#include "m4/graphics/gr_series.h"
|
|
#include "m4/riddle/vars.h"
|
|
#include "m4/riddle/riddle.h"
|
|
|
|
namespace M4 {
|
|
namespace Riddle {
|
|
namespace Rooms {
|
|
|
|
static const char *const SAID[][2] = {
|
|
{ "WATER", "407R99M" },
|
|
{ "WATER ", "407R99M" },
|
|
{ "WATER ", "407R99M" },
|
|
{ "BUTTONS", "407R99G" },
|
|
{ "BUTTON", "407R99G" },
|
|
{ "BUTTON ", "407R99G" },
|
|
{ "BUTTON ", "407R99G" },
|
|
{ "BUTTON ", "407R99G" },
|
|
{ "HIDDEN DOOR", "407R02" },
|
|
{ "WORK TABLE", "407R03" },
|
|
{ "DRAWER", "407R04" },
|
|
{ "SINK", "407R05" },
|
|
{ "PISTON ON TABLE", "407R11" },
|
|
{ "PUMP", "407R12a" },
|
|
{ "COMPRESSED AIR TANK", "407R14" },
|
|
{ "LARGE GEAR", "407R20" },
|
|
{ "ARMORED CABINET", "407R23" },
|
|
{ "METAL DOOR", "407R27" },
|
|
{ "SHELVES", "407R29" },
|
|
{ "SURGICAL TUBE ", "407R86" },
|
|
{ "SURGICAL TUBE ", "407R90" },
|
|
{ "SURGICAL TUBE ", "407R31" },
|
|
{ "GARDEN HOSE ", "407R85" },
|
|
{ "GARDEN HOSE ", "407R91" },
|
|
{ "GARDEN HOSE ", "407R87" },
|
|
{ "GLASS JAR ", "407R15A" },
|
|
{ "FAUCET PIPE ", "407R92" },
|
|
{ "FAUCET PIPE ", "407R07" },
|
|
{ "FAUCET STEM", "407R07" },
|
|
{ "JAR/RUBBER PLUG ", "407R77" },
|
|
{ "JAR/CORK ", "407R78" },
|
|
{ "JAR/CORK/PLUG ", "407R79" },
|
|
{ "JAR/GRIPS ", "407R80" },
|
|
{ "JAR/PLUG/GRIPS ", "407R81" },
|
|
{ "JAR/PLUG/CORK/GRIPS ", "407R83" },
|
|
{ "FAUCET PIPE/HOSE ", "407R94" },
|
|
{ "FAUCET PIPE/HOSE/TUBE ", "407R95" },
|
|
{ "MICROSCOPE", "407R60" },
|
|
{ "PERIODIC TABLE ", "407R99C" },
|
|
{ " ", "407R01" },
|
|
{ nullptr, nullptr }
|
|
};
|
|
|
|
void Room407::preload() {
|
|
_G(player).walker_type = 1;
|
|
_G(player).shadow_type = 1;
|
|
|
|
LoadWSAssets("OTHER SCRIPT", _G(master_palette));
|
|
}
|
|
|
|
void Room407::init() {
|
|
player_set_commands_allowed(false);
|
|
digi_preload("407_s31");
|
|
digi_preload("407_s32");
|
|
_val1 = 357;
|
|
_val2 = 293;
|
|
|
|
_waterFlowTube = series_load("water flowing out surg tube");
|
|
_waterFlowFaucet = series_load("WATER FLOWING OUT OF FAUCET");
|
|
_waterFlowStem = series_load("water flws out fauct stem surg");
|
|
|
|
if (_G(game).previous_room == KERNEL_RESTORING_GAME) {
|
|
if (_drawerState == 1010) {
|
|
ws_demand_facing(_G(my_walker), 9);
|
|
_ripMedReach = series_load("RIP TREK MED REACH POS3");
|
|
setGlobals1(_ripMedReach, 10, 10, 10, 10, 0, 10, 1, 1, 1);
|
|
sendWSMessage_110000(-1);
|
|
_drawerPopup = series_place_sprite("407 DRAWER POPUP", 0, 0, 0, 100, 0x200);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
if (_hoseState == 1101) {
|
|
_drawerPopupHose = series_place_sprite("407 DRAWER POPUP HOSE", 0, 0, 0, 100, 0x100);
|
|
hotspot_set_active("GARDEN HOSE", true);
|
|
}
|
|
|
|
if (_stopperState == 1101) {
|
|
_stopperInDrawer = series_place_sprite("407 STOPPER IN DRAWER", 0, 0, 0, 100, 0x100);
|
|
hotspot_set_active("RUBBER PLUG", true);
|
|
}
|
|
|
|
if (_tubeState == 1101) {
|
|
_tubeInDrawer = series_place_sprite("407 TUBE IN DRAWER", 0, 0, 0, 100, 0x100);
|
|
hotspot_set_active("SURGICAL TUBE", true);
|
|
}
|
|
|
|
if (_pumpState == 1101) {
|
|
_grips = series_place_sprite("407 PUMP HANDLE IN DRAWER", 0, 0, 0, 100, 0x100);
|
|
hotspot_set_active("PUMP GRIPS", true);
|
|
}
|
|
} else if (_tabletopState == 1030) {
|
|
_tabletopPopup = series_place_sprite("407 TABLETOP POPUP", 0, 0, 0, 100, 0x200);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
if (_tubeState == 1117)
|
|
_tabletopPopupWithItems1 = series_place_sprite(
|
|
"407 TABLETOP POPUP WITH ITEMS", 0, 0, 0, 100, 0);
|
|
|
|
if (_airValveState == 1110)
|
|
_tabletopPopupWithItems1 = series_place_sprite(
|
|
"407 TABLETOP POPUP WITH ITEMS",
|
|
(_valveState2 == 1010) ? 1 : 2,
|
|
0, 0, 100, 0x100);
|
|
|
|
if (_leverKeyState == 1113)
|
|
_tabletopPopupWithItems1 = series_place_sprite(
|
|
"407 TABLETOP POPUP WITH ITEMS", 3, 0, 0, 100, 0x100);
|
|
|
|
} else if (_pivotState == 1030) {
|
|
_pivotPopup = series_place_sprite("407 PIVOT POPUP", 0, 0, 0, 100, 0x200);
|
|
|
|
if (_leverKeyState == 1113)
|
|
_tabletopPopupWithItems3 = series_place_sprite(
|
|
"407 TABLE PIVOT WITH LEVER", 0, 0, 0, 100, 0x200);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
} else if (_glassTopState == 1030) {
|
|
_glassJarPopup = series_place_sprite("407 GLASS TOP POPUP", 0, 0, 0, 100, 0x200);
|
|
|
|
if (_val6 == 1010)
|
|
_glassTopPopupWithItems1 = series_place_sprite(
|
|
"407 GLASS TOP POPUP WITH ITEMS", 1, 0, 0, 100, 0x100);
|
|
else if (_periodicTableState == 1116)
|
|
_glassTopPopupWithItems2 = series_place_sprite(
|
|
"407 GLASS TOP POPUP WITH ITEMS", 0, 0, 0, 100, 0x100);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
} else if (_glassBottomState == 1030) {
|
|
_glassJarPopup = series_place_sprite("407 GLASS BOTTOM POPUP", 0, 0, 0, 100, 0x200);
|
|
|
|
if (_periodicTableState == 1116)
|
|
_glassTopPopupWithItems2 = series_place_sprite(
|
|
"407 GLS BOTTOM PU WITH ITEMS", 0, 0, 0, 100, 0x100);
|
|
|
|
if (_items2State == 1116)
|
|
_glassBottomWithItems1 = series_place_sprite(
|
|
"407 GLS BOTTOM PU WITH ITEMS", 1, 0, 0, 100, 0x100);
|
|
|
|
if (_stopperState == 1116)
|
|
_glassBottomWithItems2 = series_place_sprite(
|
|
"407 GLS BOTTOM PU WITH ITEMS", 4, 0, 0, 100, 0x100);
|
|
|
|
if (_leverKeyState == 1113)
|
|
_tabletopPopupWithItems3 = series_place_sprite(
|
|
"407 GLS BOTTOM PU WITH ITEMS", 5, 0, 0, 100, 0x100);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
} else if (_fullGlassState == 1030) {
|
|
_glassJarPopup = series_place_sprite("407 FULL GLASS POPUP",
|
|
0, 0, 0, 100, 0x200);
|
|
|
|
if (_periodicTableState == 1116)
|
|
_glassTopPopupWithItems2 = series_place_sprite(
|
|
"407 FULL GLASS POPUP", 0, 0, 0, 100, 0x100);
|
|
|
|
if (_items2State == 1116)
|
|
_glassBottomWithItems1 = series_place_sprite(
|
|
"407 FULL GLASS POPUP WITH ITEMS", 1, 0, 0, 100, 0x100);
|
|
|
|
if (_stopperState == 1116)
|
|
_glassBottomWithItems1 = series_place_sprite(
|
|
"407 FULL GLASS POPUP WITH ITEMS", 4, 0, 0, 100, 0x100);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
} else if (_roofPistonState == 1030) {
|
|
_roofPiston = series_place_sprite("407 ROOF PISTON/BRACE", 0, 0, 0, 100, 0x200);
|
|
|
|
if (_leverKeyState == 1114)
|
|
_tabletopPopupWithItems3 = series_place_sprite(
|
|
"407 ROOF PISTON WITH ITEMS", 1, 0, 0, 100, 0x100);
|
|
|
|
if (_rodState == 1114)
|
|
_roofPistonWithItems = series_place_sprite(
|
|
"407 ROOF PISTON WITH ITEMS", 0, 0, 0, 100, 0);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
} else if (_glassGoneState == 1030) {
|
|
_glassGone = series_place_sprite("407 GLASS GONE CU PU", 0, 0, 0, 100, 0x200);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
} else if (_comboLockState == 1030) {
|
|
_comboLockPopup = series_place_sprite(
|
|
"407 COMBINATION LOCK POPUP", 0, 0, 0, 100, 0x200);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
_407pu08a = series_load("407 COMBINATION LOCK NUMERALS");
|
|
_407pu08b = series_load("407PU08B");
|
|
_407pu08c = series_load("407PU08C");
|
|
_407pu08d = series_load("407PU08D");
|
|
|
|
_lockButton1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false,
|
|
triggerMachineByHashCallback, "LOCK button 1");
|
|
_lockButton2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false,
|
|
triggerMachineByHashCallback, "LOCK button 2");
|
|
_lockButton3 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false,
|
|
triggerMachineByHashCallback, "LOCK button 3");
|
|
_lockButton4 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false,
|
|
triggerMachineByHashCallback, "LOCK button 4");
|
|
|
|
sendWSMessage_10000(1, _lockButton1, _407pu08a,
|
|
_buttonFrame1 * 2 + 1, _buttonFrame1 * 2 + 1, -1,
|
|
_407pu08a, _buttonFrame1 * 2 + 1,
|
|
_buttonFrame1 * 2 + 1, 0);
|
|
sendWSMessage_10000(1, _lockButton2, _407pu08a,
|
|
_buttonFrame1 * 2 + 1, _buttonFrame1 * 2 + 1, -1,
|
|
_407pu08a, _buttonFrame1 * 2 + 1,
|
|
_buttonFrame1 * 2 + 1, 0);
|
|
sendWSMessage_10000(1, _lockButton3, _407pu08a,
|
|
_buttonFrame1 * 2 + 1, _buttonFrame1 * 2 + 1, -1,
|
|
_407pu08a, _buttonFrame1 * 2 + 1,
|
|
_buttonFrame1 * 2 + 1, 0);
|
|
|
|
hotspot_set_active("BUTTON", true);
|
|
hotspot_set_active("BUTTON ", true);
|
|
hotspot_set_active("BUTTON ", true);
|
|
hotspot_set_active("BUTTON ", true);
|
|
|
|
} else {
|
|
setHotspots();
|
|
}
|
|
} else {
|
|
static const char *HOTSPOTS[] = {
|
|
"GARDEN HOSE", "RUBBER PLUG", "SURGICAL TUBE",
|
|
"PUMP GRIPS", "PUMP GRIPS ", "JAR/CORK ",
|
|
"JAR/GRIPS ", "JAR/RUBBER PLUG ", "PUMP ROD ",
|
|
"GLASS JAR ", "LEVER KEY ", "GARDEN HOSE ",
|
|
"SURGICAL TUBE ", "FAUCET PIPE ", "GARDEN HOSE ",
|
|
"SURGICAL TUBE ", "FAUCET PIPE ", "SURGICAL TUBE ",
|
|
"GARDEN HOSE ", "GARDEN HOSE ", "AIR VALVE/HANDLE",
|
|
"LEVER KEY ", "NOZZLES/TUBE", "PERIODIC TABLE/JAR",
|
|
"PERIODIC TABLE ", "JAR/RUBBER PLUG", "JAR/CORK",
|
|
"MICROSCOPE", "BUTTONS", "LETTER", "BUTTON",
|
|
"BUTTON ", "BUTTON ", "BUTTON ", "WATER",
|
|
"WATER ", "WATER ", nullptr
|
|
};
|
|
for (auto *hs = HOTSPOTS; *hs; ++hs)
|
|
hotspot_set_active(*hs, false);
|
|
|
|
_valveState2 = 1010;
|
|
_valveState1 = 1011;
|
|
_drawerState = 1011;
|
|
_val6 = 1011;
|
|
_val7 = 1020;
|
|
_faucetPipeState = 1100;
|
|
_airValveState = 1100;
|
|
_leverKeyState = 1112;
|
|
_rodState = 1115;
|
|
_hoseState = 1101;
|
|
_tubeState = 1101;
|
|
_pumpState = 1101;
|
|
_stopperState = 1101;
|
|
_periodicTableState = 1112;
|
|
_xyzzy7 = 1112;
|
|
_items2State = 1116;
|
|
_corkState = 1118;
|
|
_xyzzy10 = 1040;
|
|
_faucetHookedToJar = 0;
|
|
_frotz2 = 0;
|
|
_frotz3 = 0;
|
|
_frotz4 = 0;
|
|
_frotz5 = 0;
|
|
_frotz6 = 0;
|
|
_frotz7 = 0;
|
|
_frotz8 = 0;
|
|
_lookedAtLever = 0;
|
|
_tabletopState = 1031;
|
|
_tabletopState = 1031;
|
|
_pivotState = 1031;
|
|
_fullGlassState = 1031;
|
|
_glassTopState = 1031;
|
|
_glassBottomState = 1031;
|
|
_roofPistonState = 1031;
|
|
_glassGoneState = 1031;
|
|
_comboLockState = 1031;
|
|
_buttonFrame1 = 0;
|
|
_buttonFrame2 = 0;
|
|
_buttonFrame3 = 0;
|
|
_buttonFrame4 = 0;
|
|
_codeCorrect = false;
|
|
|
|
_bottle = series_place_sprite("407BOTLE", 0, 0, -53, 100, 0xf00);
|
|
_chart = series_place_sprite("407CHART", 0, 0, -53, 100, 0xf00);
|
|
_cpist = series_place_sprite("407CPIST", 0, 0, -53, 100, 0xf00);
|
|
_drawer = series_place_sprite("407DRAWR", 0, 0, -53, 100, 0xf00);
|
|
_escape = series_place_sprite("407ESCAP", 0, 0, -53, 100, 0xd00);
|
|
_faucetPipe = series_place_sprite("407FAUC", 0, 0, -53, 100, 0xe00);
|
|
_airValve = series_place_sprite("407FAUC", 0, 0, -53, 100, 0xe00);
|
|
_lever = series_place_sprite("407LEVRW", 0, 0, -53, 100, 0xf00);
|
|
_niche = series_place_sprite("407NICH", 0, 0, -53, 100, 0xf00);
|
|
_tpist = series_place_sprite("407TPIST", 0, 0, -53, 100, 0xf00);
|
|
_pump = series_place_sprite("407pump", 0, 0, -53, 100, 0xf00);
|
|
}
|
|
|
|
if (_G(game).previous_room == KERNEL_RESTORING_GAME) {
|
|
_tpist = series_place_sprite("407TPIST", 0, 0, -53, 100, 0xf00);
|
|
_drawer = series_place_sprite("407DRAWR", 0, 0, -53, 100, 0xf00);
|
|
_escape = series_place_sprite("407ESCAP", 0, 0, -53, 100, 0xd00);
|
|
_star2 = series_place_sprite("407STAR2", 0, 0, -53, 100, 0xf00);
|
|
|
|
if (_valveState1 == 1010) {
|
|
if (_faucetPipeState == 1100) {
|
|
_G(kernel).trigger_mode = KT_DAEMON;
|
|
kernel_timing_trigger(1, 410);
|
|
_G(kernel).trigger_mode = KT_PARSE;
|
|
} else if (_tubeState == 1130) {
|
|
_G(kernel).trigger_mode = KT_DAEMON;
|
|
kernel_timing_trigger(1, 420);
|
|
_G(kernel).trigger_mode = KT_PARSE;
|
|
}
|
|
}
|
|
|
|
if (_val6 == 1010)
|
|
_gears = series_place_sprite("407GEARS", 0, 0, -53, 100, 0xf00);
|
|
|
|
if (_frotz2 != 0) {
|
|
_407h = series_load("407H");
|
|
_niche = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xb00, false,
|
|
triggerMachineByHashCallback, "Jar opens cabinet door");
|
|
sendWSMessage_10000(1, _niche, _407h, 29, 29, -1, _407h, 29, 29, 0);
|
|
|
|
if (_frotz4 == 0)
|
|
_letter = series_place_sprite("407 letter", 0, 0, 0, 100, 0xc00);
|
|
|
|
} else {
|
|
_cpist = series_place_sprite("407CPIST", 0, 0, -53, 100, 0xf00);
|
|
_niche = series_place_sprite("407NICH", 0, 0, -53, 100, 0xf00);
|
|
|
|
if (_corkState == 1116 || _corkState == 1130) {
|
|
_bits = series_place_sprite("407BITSR", 3, 0, -53, 100, 0xa00);
|
|
} else if (_xyzzy7 == 1112) {
|
|
_bits = series_place_sprite("407bbits", 0, 0, -53, 100, 0xa00);
|
|
}
|
|
|
|
switch (_tubeState) {
|
|
case 1100:
|
|
_tubeInDrawer = series_place_sprite("407 TUBING BY ITSELF", 1, 0, 0, 100, 0xa00);
|
|
break;
|
|
case 1116:
|
|
_tubeInDrawer = series_place_sprite("407 HOSE HANG FROM JAR", 1, 0, 0, 100, 0xa00);
|
|
break;
|
|
case 1117:
|
|
_tubeInDrawer = series_place_sprite("407surgn", 0, 0, -53, 100, 0xa00);
|
|
break;
|
|
case 1130:
|
|
_tubeInDrawer = series_place_sprite("407 TUBING BY ITSELF", 0, 0, 0, 100, 0xa00);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (_stopperState) {
|
|
case 1112:
|
|
_stopperInDrawer = series_place_sprite("407bbits", 2, 0, -53, 100, 0xa00);
|
|
break;
|
|
case 1116:
|
|
case 1130:
|
|
_stopperInDrawer = series_place_sprite("407BITSR", 0, 0, -53, 100, 0xa00);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (_rodState) {
|
|
case 1114:
|
|
_pump = series_place_sprite("407PMROD", 0, 0, -53, 100, 0xa00);
|
|
break;
|
|
case 1115:
|
|
_pump = series_place_sprite("407pump", 0, 0, -53, 100, 0xf00);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (_pumpState) {
|
|
case 1115:
|
|
_grips = series_place_sprite("407pump", 1, 0, -53, 100, 0xa00);
|
|
break;
|
|
case 1116:
|
|
case 1130:
|
|
if (_xyzzy7 == 1114 || _xyzzy7 == 1140)
|
|
_grips = series_place_sprite("407BITSR", 2, 0, -53, 100, 0xa00);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (_leverKeyState) {
|
|
case 1112:
|
|
_lever = series_place_sprite("407LEVRW", 0, 0, -53, 100, 0xa00);
|
|
break;
|
|
case 1113:
|
|
_lever = series_place_sprite("407LEVRW", 2, 0, -53, 100, 0xb00);
|
|
break;
|
|
case 1114:
|
|
if (!_frotz2)
|
|
_lever = series_place_sprite("407LEVRW", 1, 0, -53, 100, 0xa00);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (_xyzzy7) {
|
|
case 1112:
|
|
if (!inv_object_is_here("EMERALD/CORK"))
|
|
_bottle = series_place_sprite("sprite ofempty bottle", 0, 0, -53, 100, 0xf00);
|
|
else
|
|
_bottle = series_place_sprite((_val6 == 1010) ? "407BOTL2" : "407BOTLE",
|
|
0, 0, -53, 100, 0xf00);
|
|
break;
|
|
case 1114:
|
|
case 1140:
|
|
_bottle = series_place_sprite("407BOTLR", 0, 0, -53, 100, 0xa00);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (_hoseState) {
|
|
case 1100:
|
|
_drawerPopupHose = series_place_sprite(
|
|
"407 TUBE AND HOSE INTO SINK", 1, 0, 0, 100, 0xb00);
|
|
break;
|
|
case 1116:
|
|
_drawerPopupHose = series_place_sprite(
|
|
"407 HOSE HANG FROM JAR", 0, 0, 0, 100, 0xb00);
|
|
break;
|
|
case 1130:
|
|
_drawerPopupHose = series_place_sprite(
|
|
"407 TUBE AND HOSE INTO SINK", 0, 0, 0, 100, 0xb00);
|
|
break;
|
|
case 1140:
|
|
_drawerPopupHose = series_place_sprite(
|
|
"407 TUBE AND HOSE TO JAR", 0, 0, 0, 100, 0xb00);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (_faucetPipeState) {
|
|
case 1100:
|
|
_faucetPipe = series_place_sprite("407FAUC", 2, 0, 0, 100, 0xb00);
|
|
break;
|
|
case 1116:
|
|
case 1140:
|
|
_faucetPipe = series_place_sprite("407BITSR", 1, 0, -53, 100, 0xb00);
|
|
break;
|
|
case 1130:
|
|
_faucetPipe = series_place_sprite("407 FAUCET IN SINK", 0, 0, 0, 100, 0xb00);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
switch (_periodicTableState) {
|
|
case 1112:
|
|
_chart = series_place_sprite("407CHART", 0, 0, -53, 100, 0xf00);
|
|
break;
|
|
case 1116:
|
|
_chart = series_place_sprite("407bbits", 0, 0, -53, 100, 0xa00);
|
|
break;
|
|
case 1120:
|
|
_chart = series_place_sprite("407chrt2", 0, 0, -53, 100, 0xa00);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (_airValveState) {
|
|
case 1100:
|
|
_airValve = series_place_sprite("407FAUC",
|
|
(_valveState1 == 1011) ? 1 : 0, 0, 0, 100, 0xe00);
|
|
break;
|
|
case 1110:
|
|
_airValve = series_place_sprite("407 AIR VALVE HANDLE",
|
|
(_valveState2 == 1011) ? 1 : 0, 0, 0, 100, 0xe00);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
player_set_commands_allowed(true);
|
|
|
|
} else if (!_G(kittyScreaming)) {
|
|
midi_play("DRAMA1", 255, false, -1, 949);
|
|
_ripEnters = series_load("407 RIP ENTERS");
|
|
_stair = series_load("407STAIR");
|
|
ws_demand_location(_G(my_walker), 250, 331, 3);
|
|
ws_hide_walker();
|
|
|
|
_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "RIP enters");
|
|
sendWSMessage_10000(1, _ripley, _ripEnters, 1, 27, 400,
|
|
_ripEnters, 27, 27, 0);
|
|
|
|
} else {
|
|
terminateMachineAndNull(_faucetPipe);
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
terminateMachineAndNull(_bottle);
|
|
terminateMachineAndNull(_stopperInDrawer);
|
|
terminateMachineAndNull(_bits);
|
|
terminateMachineAndNull(_grips);
|
|
terminateMachineAndNull(_niche);
|
|
terminateMachineAndNull(_lever);
|
|
|
|
_407h = series_load("407H");
|
|
_niche = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xb00, false,
|
|
triggerMachineByHashCallback, "Jar opens cabinet door");
|
|
sendWSMessage_10000(1, _niche, _407h, 29, 29, -1,
|
|
_407h, 29, 29, 0);
|
|
inv_give_to_player("EMERALD/CORK");
|
|
|
|
_items2State = 1000;
|
|
_frotz2 = 1;
|
|
_faucetPipeState = 1140;
|
|
_hoseState = 1140;
|
|
_tubeState = 1140;
|
|
_xyzzy7 = 1140;
|
|
_stopperState = 1130;
|
|
_corkState = 1130;
|
|
_pumpState = 1130;
|
|
|
|
setHotspots();
|
|
ws_demand_location(_G(my_walker), 260, 335, 3);
|
|
}
|
|
}
|
|
|
|
void Room407::daemon() {
|
|
switch (_G(kernel).trigger) {
|
|
case 10:
|
|
player_set_commands_allowed(false);
|
|
digi_play("407_s02", 2);
|
|
terminateMachineAndNull(_drawerPopup);
|
|
|
|
if (_hoseState == 1101)
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
if (_stopperState == 1101)
|
|
terminateMachineAndNull(_stopperInDrawer);
|
|
if (_tubeState == 1101)
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
if (_pumpState == 1101)
|
|
terminateMachineAndNull(_grips);
|
|
|
|
sendWSMessage_120000(12);
|
|
break;
|
|
|
|
case 12:
|
|
setHotspots();
|
|
sendWSMessage_150000(13);
|
|
break;
|
|
|
|
case 13:
|
|
series_unload(_ripMedReach);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 20:
|
|
if (_leverKeyState != 1113) {
|
|
_407tpis2 = series_load("407tpis2");
|
|
terminateMachineAndNull(_tpist);
|
|
_tpist = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "PISTON ONLY");
|
|
sendWSMessage_10000(1, _tpist, _407tpis2, 1, 33, 40,
|
|
_407tpis2, 33, 33, 0);
|
|
digi_play("407_s18", 2);
|
|
} else if (_xyzzy7 != 1112) {
|
|
kernel_timing_trigger(1, 90);
|
|
} else if (!inv_object_is_here("EMERALD/CORK")) {
|
|
kernel_timing_trigger(1, 50);
|
|
} else if (_periodicTableState != 1116) {
|
|
kernel_timing_trigger(1, (_stopperState == 1116) ? 70 : 50);
|
|
} else {
|
|
kernel_timing_trigger(1, (_stopperState == 1116) ? 80 : 60);
|
|
}
|
|
break;
|
|
|
|
case 40:
|
|
terminateMachineAndNull(_tpist);
|
|
series_unload(_407tpis2);
|
|
_tpist = series_place_sprite("407TPIST", 0, 0, -53, 100, 0xf00);
|
|
|
|
if (_xyzzy7 != 1112)
|
|
kernel_timing_trigger(1, 180);
|
|
else if (!inv_object_is_here("EMERALD/CORK"))
|
|
kernel_timing_trigger(1, 185);
|
|
else if (_periodicTableState != 1116)
|
|
kernel_timing_trigger(1, (_stopperState == 1116) ? 170 : 150);
|
|
else
|
|
kernel_timing_trigger(1, (_stopperState == 1116) ? 175 : 160);
|
|
break;
|
|
|
|
case 50:
|
|
_407j = series_load("407j");
|
|
terminateMachineAndNull(_lever);
|
|
terminateMachineAndNull(_tpist);
|
|
|
|
_tpist = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "PISTON & LEVER");
|
|
sendWSMessage_10000(1, _tpist, _407j, 1, 33, 52,
|
|
_407j, 33, 33, 0);
|
|
digi_play("407_s18", 2);
|
|
break;
|
|
|
|
case 52:
|
|
terminateMachineAndNull(_tpist);
|
|
series_unload(_407j);
|
|
_lever = series_place_sprite("407LEVRW", 2, 0, -53, 100, 0xb00);
|
|
_tpist = series_place_sprite("407TPIST", 0, 0, -53, 100, 0xf00);
|
|
|
|
kernel_timing_trigger(1, inv_object_is_here("EMERALD/CORK") ? 150 : 185);
|
|
break;
|
|
|
|
case 60:
|
|
_407o = series_load("407o");
|
|
_407k = series_load("407k");
|
|
terminateMachineAndNull(_lever);
|
|
terminateMachineAndNull(_tpist);
|
|
|
|
_tpist = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "PISTON & LEVER");
|
|
sendWSMessage_10000(1, _tpist, _407k, 1, 33, 61, _407k, 33, 33, 0);
|
|
digi_play("407_s18", 2);
|
|
break;
|
|
|
|
case 61:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_tpist);
|
|
series_unload(_407k);
|
|
|
|
_lever = series_place_sprite("407LEVRW", 2, 0, -53, 100, 0xb00);
|
|
_tpist = series_place_sprite("407TPIST", 0, 0, -53, 100, 0xf00);
|
|
terminateMachineAndNull(_bottle);
|
|
terminateMachineAndNull(_chart);
|
|
|
|
_bottle = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "GLASS JAR SHAKES");
|
|
sendWSMessage_10000(1, _bottle, _407o, 1, 51, 62,
|
|
_407o, 51, 51, 0);
|
|
digi_play("407_s16", 3);
|
|
break;
|
|
|
|
case 62:
|
|
digi_play("407_s19", 1);
|
|
sendWSMessage_10000(1, _bottle, _407o, 52, 66, 63, _407o, 66, 66, 0);
|
|
break;
|
|
|
|
case 63:
|
|
digi_play("407_s28", 1);
|
|
sendWSMessage_10000(1, _bottle, _407o, 67, 91, 64, _407o, 91, 91, 0);
|
|
break;
|
|
|
|
case 64:
|
|
terminateMachineAndNull(_bottle);
|
|
_bottle = series_place_sprite("sprite ofempty bottle", 0, 0, -53, 100, 0xf00);
|
|
_chart = series_place_sprite("407chrt2", 0, 0, -53, 100, 0xf00);
|
|
|
|
series_unload(_407o);
|
|
kernel_timing_trigger(1, 190);
|
|
break;
|
|
|
|
case 70:
|
|
_407l = series_load("407l");
|
|
terminateMachineAndNull(_lever);
|
|
terminateMachineAndNull(_tpist);
|
|
|
|
_tpist = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "PISTON & LEVER");
|
|
sendWSMessage_10000(1, _tpist, _407l, 1, 33, 72, _407l, 33, 33, 0);
|
|
digi_play("407_s18", 2);
|
|
break;
|
|
|
|
case 72:
|
|
terminateMachineAndNull(_tpist);
|
|
series_unload(_407l);
|
|
|
|
_lever = series_place_sprite("407LEVRW", 2, 0, -53, 100, 0xb00);
|
|
_tpist = series_place_sprite("407TPIST", 0, 0, -53, 100, 0xf00);
|
|
kernel_timing_trigger(1, 170);
|
|
break;
|
|
|
|
case 80:
|
|
_407p = series_load("407p");
|
|
_407m = series_load("407m");
|
|
|
|
terminateMachineAndNull(_lever);
|
|
terminateMachineAndNull(_tpist);
|
|
_tpist = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "PISTON & LEVER");
|
|
sendWSMessage_10000(1, _tpist, _407m, 1, 33, 81, _407m, 33, 33, 0);
|
|
digi_play("407_s18", 2);
|
|
break;
|
|
|
|
case 81:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_tpist);
|
|
|
|
_lever = series_place_sprite("407LEVRW", 2, 0, -53, 100, 0xb00);
|
|
_tpist = series_place_sprite("407TPIST", 0, 0, -53, 100, 0xf00);
|
|
terminateMachineAndNull(_stopperInDrawer);
|
|
terminateMachineAndNull(_bottle);
|
|
terminateMachineAndNull(_chart);
|
|
|
|
_bottle = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "GLASS JAR TURNS");
|
|
sendWSMessage_10000(1, _bottle, _407p, 1, 51, 82, _407p, 51, 51, 0);
|
|
break;
|
|
|
|
case 82:
|
|
digi_play("407_s19", 1);
|
|
sendWSMessage_10000(1, _bottle, _407p, 52, 66, 83, _407p, 66, 66, 0);
|
|
break;
|
|
|
|
case 83:
|
|
sendWSMessage_10000(1, _bottle, _407p, 67, 91, 84, _407p, 91, 91, 0);
|
|
break;
|
|
|
|
case 84:
|
|
terminateMachineAndNull(_bottle);
|
|
_bottle = series_place_sprite("sprite ofempty bottle", 0, 0, -53, 100, 0xf00);
|
|
_stopperInDrawer = series_place_sprite("407bbits", 2, 0, -53, 100, 0xe00);
|
|
_chart = series_place_sprite("407chrt2", 0, 0, -53, 100, 0xf00);
|
|
|
|
series_unload(_407p);
|
|
kernel_timing_trigger(1, 190);
|
|
break;
|
|
|
|
case 90:
|
|
_407q = series_load("407q");
|
|
terminateMachineAndNull(_lever);
|
|
terminateMachineAndNull(_tpist);
|
|
|
|
_tpist = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "PISTON & LEVER");
|
|
sendWSMessage_10000(1, _tpist, _407q, 1, 33, 92, _407q, 33, 33, 0);
|
|
digi_play("407_s18", 2);
|
|
break;
|
|
|
|
case 92:
|
|
terminateMachineAndNull(_tpist);
|
|
series_unload(_407q);
|
|
_lever = series_place_sprite("407LEVRW", 2, 0, -53, 100, 0xb00);
|
|
_tpist = series_place_sprite("407TPIST", 0, 0, -53, 100, 0xf00);
|
|
kernel_timing_trigger(1, 180);
|
|
break;
|
|
|
|
case 150:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_bottle);
|
|
|
|
_407a = series_load("407a");
|
|
_bottle = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "GLASS JAR TURNS");
|
|
sendWSMessage_10000(1, _bottle, _407a, 1, 30, 151, _407a, 30, 30, 0);
|
|
digi_play("407_s16", 3);
|
|
|
|
if (inv_object_is_here("EMERALD/CORK"))
|
|
kernel_timing_trigger(240, 450);
|
|
break;
|
|
|
|
case 151:
|
|
sendWSMessage_10000(1, _bottle, _407a, 31, 61, 152, _407a, 61, 61, 0);
|
|
digi_play("407_s17", 3);
|
|
break;
|
|
|
|
case 152:
|
|
terminateMachineAndNull(_bottle);
|
|
_bottle = series_place_sprite("407BOTLE", 0, 0, -53, 100, 0xf00);
|
|
series_unload(_407a);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 160:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_bottle);
|
|
terminateMachineAndNull(_chart);
|
|
|
|
_407b = series_load("407b");
|
|
_bottle = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "GLASS JAR TURNS");
|
|
sendWSMessage_10000(1, _bottle, _407b, 1, 30, 161, _407b, 30, 30, 0);
|
|
digi_play("407_s16", 3);
|
|
kernel_timing_trigger(240, 450);
|
|
break;
|
|
|
|
case 161:
|
|
sendWSMessage_10000(1, _bottle, _407b, 31, 61, 162, _407b, 61, 61, 0);
|
|
digi_play("407_s17", 3);
|
|
break;
|
|
|
|
case 162:
|
|
terminateMachineAndNull(_bottle);
|
|
_bottle = series_place_sprite("407BOTLE", 0, 0, -53, 100, 0xf00);
|
|
_chart = series_place_sprite("407bbits", 1, 0, -53, 100, 0xe00);
|
|
series_unload(_407b);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 170:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_bottle);
|
|
terminateMachineAndNull(_stopperInDrawer);
|
|
|
|
_407c = series_load("407c");
|
|
_bottle = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "GLASS JAR TURNS");
|
|
sendWSMessage_10000(1, _bottle, _407c, 1, 30, 171, _407c, 30, 30, 0);
|
|
digi_play("407_s16", 3);
|
|
kernel_timing_trigger(240, 450);
|
|
break;
|
|
|
|
case 171:
|
|
sendWSMessage_10000(1, _bottle, _407c, 31, 61, 172, _407c, 61, 61, 0);
|
|
digi_play("407_s17", 3);
|
|
break;
|
|
|
|
case 172:
|
|
terminateMachineAndNull(_bottle);
|
|
_bottle = series_place_sprite("407BOTLE", 0, 0, -53, 100, 0xf00);
|
|
_stopperInDrawer = series_place_sprite("407bbits", 2, 0, -53, 100, 0xe00);
|
|
series_unload(_407c);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 175:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_stopperInDrawer);
|
|
terminateMachineAndNull(_bottle);
|
|
terminateMachineAndNull(_chart);
|
|
|
|
_407d = series_load("407d");
|
|
_bottle = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "GLASS JAR TURNS");
|
|
sendWSMessage_10000(1, _bottle, _407d, 1, 30, 176, _407d, 30, 30, 0);
|
|
digi_play("407_s16", 3);
|
|
kernel_timing_trigger(240, 450);
|
|
break;
|
|
|
|
case 176:
|
|
sendWSMessage_10000(1, _bottle, _407d, 31, 61, 177, _407d, 61, 61, 0);
|
|
digi_play("407_s17", 3);
|
|
break;
|
|
|
|
case 177:
|
|
terminateMachineAndNull(_bottle);
|
|
_bottle = series_place_sprite("407BOTLE", 0, 0, -53, 100, 0xf00);
|
|
_stopperInDrawer = series_place_sprite("407bbits", 2, 0, -53, 100, 0xe00);
|
|
_chart = series_place_sprite("407bbits", 1, 0, -53, 100, 0xe00);
|
|
series_unload(_407d);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 180:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_gears);
|
|
|
|
_407s = series_load("407s");
|
|
_gears = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "GEARS TURN");
|
|
sendWSMessage_10000(1, _bottle, _407s, 1, 30, 181, _407s, 30, 30, 0);
|
|
digi_play("407_s16", 3);
|
|
break;
|
|
|
|
case 181:
|
|
sendWSMessage_10000(1, _gears, _407s, 31, 60, 182, _407s, 60, 60, 0);
|
|
digi_play("407_s17", 3);
|
|
break;
|
|
|
|
case 182:
|
|
terminateMachineAndNull(_gears);
|
|
_gears = series_place_sprite("407GEARS", 0, 0, -53, 100, 0xf00);
|
|
series_unload(_407s);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 185:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_bottle);
|
|
|
|
_407r = series_load("407r");
|
|
_bottle = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "GLASS JAR TURNS");
|
|
sendWSMessage_10000(1, _bottle, _407r, 1, 30, 186, _407r, 30, 30, 0);
|
|
digi_play("407_s16", 3);
|
|
break;
|
|
|
|
case 186:
|
|
sendWSMessage_10000(1, _bottle, _407r, 31, 61, 187, _407r, 61, 61, 0);
|
|
digi_play("407_s17", 3);
|
|
break;
|
|
|
|
case 187:
|
|
terminateMachineAndNull(_bottle);
|
|
_bottle = series_place_sprite("sprite ofempty bottle", 0, 0, -53, 100, 0xf00);
|
|
series_unload(_407r);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 190:
|
|
ws_walk(_G(my_walker), 155, 335, nullptr, 192, 11);
|
|
break;
|
|
|
|
case 192:
|
|
_ripMedHand1 = series_load("RIP TREK MED REACH HAND POS1");
|
|
setGlobals1(_ripMedHand1, 1, 10, 10, 10, 0, 10, 1, 1, 1);
|
|
sendWSMessage_110000(193);
|
|
break;
|
|
|
|
case 193:
|
|
inv_give_to_player("EMERALD/CORK");
|
|
hotspot_set_active("EMERALD/CORK", false);
|
|
hotspot_set_active("PERIODIC TABLE/JAR", false);
|
|
hotspot_set_active("PERIODIC TABLE ", true);
|
|
_periodicTableState = 1120;
|
|
|
|
midi_play("EMERALD", 255, false, 194, 949);
|
|
kernel_examine_inventory_object("PING EMERALD/CORK",
|
|
_G(master_palette), 5, 1, 50, 200, 195, nullptr, -1);
|
|
break;
|
|
|
|
case 194:
|
|
digi_play("407r32", 1);
|
|
break;
|
|
|
|
case 195:
|
|
sendWSMessage_120000(196);
|
|
break;
|
|
|
|
case 196:
|
|
sendWSMessage_150000(197);
|
|
break;
|
|
|
|
case 197:
|
|
series_unload(_ripMedHand1);
|
|
_items2State = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 200:
|
|
player_set_commands_allowed(false);
|
|
digi_stop(1);
|
|
terminateMachineAndNull(_tabletopPopup);
|
|
|
|
if (_tubeState == 1117)
|
|
terminateMachineAndNull(_tabletopPopupWithItems1);
|
|
if (_airValveState == 1110)
|
|
terminateMachineAndNull(_tabletopPopupWithItems2);
|
|
if (_leverKeyState == 1113)
|
|
terminateMachineAndNull(_tabletopPopupWithItems3);
|
|
|
|
setHotspots();
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 202:
|
|
player_set_commands_allowed(false);
|
|
digi_stop(1);
|
|
terminateMachineAndNull(_pivotPopup);
|
|
|
|
if (_leverKeyState == 1113)
|
|
terminateMachineAndNull(_tabletopPopupWithItems3);
|
|
|
|
setHotspots();
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 204:
|
|
player_set_commands_allowed(false);
|
|
digi_stop(1);
|
|
terminateMachineAndNull(_glassJarPopup);
|
|
|
|
if (_periodicTableState == 1116)
|
|
terminateMachineAndNull(_glassTopPopupWithItems2);
|
|
if (_val6 == 1010)
|
|
terminateMachineAndNull(_glassTopPopupWithItems1);
|
|
|
|
setHotspots();
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 206:
|
|
player_set_commands_allowed(false);
|
|
digi_stop(1);
|
|
terminateMachineAndNull(_glassJarPopup);
|
|
|
|
if (_periodicTableState == 1116)
|
|
terminateMachineAndNull(_tabletopPopupWithItems2);
|
|
if (_items2State == 1116)
|
|
terminateMachineAndNull(_glassBottomWithItems1);
|
|
if (_stopperState == 1116)
|
|
terminateMachineAndNull(_glassBottomWithItems2);
|
|
|
|
setHotspots();
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 208:
|
|
player_set_commands_allowed(false);
|
|
digi_stop(1);
|
|
terminateMachineAndNull(_glassJarPopup);
|
|
|
|
if (_periodicTableState == 1116)
|
|
terminateMachineAndNull(_glassTopPopupWithItems2);
|
|
if (_items2State == 1116)
|
|
terminateMachineAndNull(_glassBottomWithItems1);
|
|
if (_stopperState == 1116)
|
|
terminateMachineAndNull(_glassBottomWithItems2);
|
|
if (_val6 == 1010)
|
|
terminateMachineAndNull(_glassTopPopupWithItems1);
|
|
|
|
setHotspots();
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 210:
|
|
player_set_commands_allowed(false);
|
|
digi_stop(1);
|
|
terminateMachineAndNull(_roofPiston);
|
|
|
|
if (_leverKeyState == 1114)
|
|
terminateMachineAndNull(_tabletopPopupWithItems3);
|
|
if (_rodState == 1114)
|
|
terminateMachineAndNull(_roofPistonWithItems);
|
|
|
|
setHotspots();
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 212:
|
|
player_set_commands_allowed(false);
|
|
digi_stop(1);
|
|
terminateMachineAndNull(_glassGone);
|
|
|
|
setHotspots();
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 214:
|
|
player_set_commands_allowed(false);
|
|
terminateMachineAndNull(_comboLockPopup);
|
|
terminateMachineAndNull(_lockButton1);
|
|
terminateMachineAndNull(_lockButton2);
|
|
terminateMachineAndNull(_lockButton3);
|
|
terminateMachineAndNull(_lockButton4);
|
|
series_unload(_407pu08d);
|
|
series_unload(_407pu08c);
|
|
series_unload(_407pu08b);
|
|
series_unload(_407pu08a);
|
|
|
|
setHotspots();
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 216:
|
|
terminateMachineAndNull(_glassTopPopupWithItems2);
|
|
setHotspots();
|
|
interface_show();
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 218:
|
|
player_set_commands_allowed(false);
|
|
digi_stop(1);
|
|
terminateMachineAndNull(_microscopeCloseup);
|
|
|
|
setHotspots();
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 300:
|
|
ws_walk(_G(my_walker), 441, 331, nullptr, 302, 1);
|
|
break;
|
|
|
|
case 302:
|
|
_ripHiHand1 = series_load("rip trek hi 1 hand");
|
|
setGlobals1(_ripHiHand1, 1, 12, 12, 12, 0, 12, 1, 1, 1);
|
|
sendWSMessage_110000(303);
|
|
break;
|
|
|
|
case 303:
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
terminateMachineAndNull(_faucetPipe);
|
|
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
hotspot_set_active("FAUCET PIPE ", false);
|
|
hotspot_set_active("FAUCET PIPE ", true);
|
|
hotspot_set_active("SURGICAL TUBE ", true);
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
hotspot_set_active("GARDEN HOSE ", true);
|
|
|
|
_faucetPipeState = 1140;
|
|
_hoseState = 1140;
|
|
_tubeState = 1140;
|
|
_xyzzy7 = 1140;
|
|
_drawerPopupHose = series_place_sprite("407 TUBE AND HOSE TO JAR",
|
|
0, 0, 0, 100, 0xb00);
|
|
_faucetPipe = series_place_sprite("407BITSR", 1, 0, -53, 100, 0xb00);
|
|
sendWSMessage_120000(304);
|
|
break;
|
|
|
|
case 304:
|
|
sendWSMessage_150000(305);
|
|
break;
|
|
|
|
case 305:
|
|
series_unload(_ripHiHand1);
|
|
_faucetHookedToJar = 1;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 310:
|
|
ws_walk(_G(my_walker), 441, 331, nullptr, 312, 1);
|
|
break;
|
|
|
|
case 312:
|
|
_ripHiHand1 = series_load("rip trek hi 1 hand");
|
|
setGlobals1(_ripHiHand1, 1, 12, 12, 12, 0, 12, 1, 1, 1);
|
|
sendWSMessage_110000(313);
|
|
break;
|
|
|
|
case 313:
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
terminateMachineAndNull(_faucetPipe);
|
|
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
hotspot_set_active("FAUCET PIPE ", false);
|
|
hotspot_set_active("FAUCET PIPE ", true);
|
|
hotspot_set_active("SURGICAL TUBE ", true);
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
hotspot_set_active("GARDEN HOSE ", true);
|
|
|
|
_faucetPipeState = 1140;
|
|
_hoseState = 1140;
|
|
_tubeState = 1140;
|
|
_xyzzy7 = 1140;
|
|
|
|
sendWSMessage_120000(314);
|
|
break;
|
|
|
|
case 314:
|
|
sendWSMessage_150000(315);
|
|
break;
|
|
|
|
case 315:
|
|
series_unload(_ripHiHand1);
|
|
ws_walk(_G(my_walker), 155, 335, nullptr, 316, 11);
|
|
break;
|
|
|
|
case 316:
|
|
_ripMedHand1 = series_load("RIP TREK MED REACH HAND POS1");
|
|
setGlobals1(_ripMedHand1, 1, 10, 10, 10, 0, 10, 1, 1, 1);
|
|
sendWSMessage_110000(317);
|
|
break;
|
|
|
|
case 317:
|
|
_drawerPopupHose = series_place_sprite("407 TUBE AND HOSE TO JAR",
|
|
0, 0, 0, 100, 0xb00);
|
|
_faucetPipe = series_place_sprite("407BITSR", 1, 0, -53, 100, 0xb00);
|
|
sendWSMessage_120000(318);
|
|
break;
|
|
|
|
case 318:
|
|
sendWSMessage_150000(319);
|
|
break;
|
|
|
|
case 319:
|
|
series_unload(_ripMedHand1);
|
|
_faucetHookedToJar = 1;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 320:
|
|
_ripHeadTurn = series_load("RIP TREK HEAD TURN POS1");
|
|
setGlobals1(_ripHeadTurn, 1, 3, 3, 3, 0, 3, 1, 1, 1);
|
|
sendWSMessage_110000(322);
|
|
break;
|
|
|
|
case 322:
|
|
if (_stopperState == 1116 && _corkState == 1116 && _pumpState == 1116) {
|
|
terminateMachineAndNull(_faucetPipe);
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
terminateMachineAndNull(_bottle);
|
|
terminateMachineAndNull(_stopperInDrawer);
|
|
terminateMachineAndNull(_bits);
|
|
terminateMachineAndNull(_grips);
|
|
terminateMachineAndNull(_niche);
|
|
terminateMachineAndNull(_lever);
|
|
|
|
_letter = series_place_sprite("407 letter", 0, 0, 0, 100, 0xc00);
|
|
_407h = series_load("407H");
|
|
_niche = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xb00, false,
|
|
triggerMachineByHashCallback, "Jar opens cabinet door");
|
|
sendWSMessage_10000(1, _niche, _407h, 1, 29, 330, _407h, 29, 29, 0);
|
|
digi_play("407_s21", 2);
|
|
} else {
|
|
if (_stopperState != 1116) {
|
|
_jarWaterFallingLeft = series_load("407 JAR WATER FALLING LEFT");
|
|
_jarLeft = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "407 JAR WATER FALLING LEFT");
|
|
sendWSMessage_10000(1, _jarLeft, _jarWaterFallingLeft, 1, 13, 323,
|
|
_jarWaterFallingLeft, 14, 19, 0);
|
|
}
|
|
|
|
if (_corkState != 1116) {
|
|
_jarWaterFallingCentre = series_load("407 JAR WATER FALLING CENTRE");
|
|
_jarCentre = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "Center jar hole leaks");
|
|
sendWSMessage_10000(1, _jarCentre, _jarWaterFallingCentre, 1, 11, 323,
|
|
_jarWaterFallingCentre, 12, 15, 0);
|
|
}
|
|
|
|
if (_pumpState != 1116) {
|
|
_jarWaterFallingRight = series_load("407 JAR WATER FALLING RIGHT");
|
|
_jarRight = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "Right jar hole leaks");
|
|
sendWSMessage_10000(1, _jarRight, _jarWaterFallingRight, 1, 13, 323,
|
|
_jarWaterFallingRight, 14, 20, 0);
|
|
}
|
|
|
|
kernel_timing_trigger(200, 340);
|
|
}
|
|
break;
|
|
|
|
case 323:
|
|
digi_play_loop("407_s10", 2);
|
|
break;
|
|
|
|
case 330:
|
|
digi_preload("407r37");
|
|
digi_play("407r37", 1, 255, 666);
|
|
_frotz2 = 1;
|
|
_stopperState = 1130;
|
|
_corkState = 1130;
|
|
_pumpState = 1130;
|
|
|
|
hotspot_set_active("MICROSCOPE", true);
|
|
hotspot_set_active("LETTER", true);
|
|
hotspot_set_active("ARMORED CABINET", false);
|
|
kernel_timing_trigger(1, 340);
|
|
break;
|
|
|
|
case 340:
|
|
sendWSMessage_120000(342);
|
|
break;
|
|
|
|
case 342:
|
|
sendWSMessage_150000(343);
|
|
break;
|
|
|
|
case 343:
|
|
series_unload(_ripHeadTurn);
|
|
_ripMedHand1 = series_load("RIP TREK MED REACH HAND POS1");
|
|
setGlobals1(_ripMedHand1, 1, 10, 10, 10, 0, 10, 1, 1, 1);
|
|
sendWSMessage_110000(344);
|
|
break;
|
|
|
|
case 344:
|
|
if (!_frotz2) {
|
|
if (_stopperState != 1115)
|
|
sendWSMessage_10000(1, _jarLeft, _jarWaterFallingLeft, 20, 35, 350,
|
|
_jarWaterFallingLeft, 35, 35, 0);
|
|
if (_corkState != 1116)
|
|
sendWSMessage_10000(1, _jarCentre, _jarWaterFallingCentre, 16, 28, 351,
|
|
_jarWaterFallingCentre, 28, 28, 0);
|
|
if (_pumpState != 1116)
|
|
sendWSMessage_10000(1, _jarRight, _jarWaterFallingRight, 21, 35, 352,
|
|
_jarWaterFallingRight, 35, 35, 0);
|
|
}
|
|
|
|
terminateMachineAndNull(_airValve);
|
|
_valveState1 = 1011;
|
|
_airValve = series_place_sprite("407FAUC", 1, 0, 0, 100, 0xe00);
|
|
sendWSMessage_120000(345);
|
|
break;
|
|
|
|
case 345:
|
|
sendWSMessage_150000(346);
|
|
break;
|
|
|
|
case 346:
|
|
series_unload(_ripMedHand1);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 350:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_jarLeft);
|
|
series_unload(_jarWaterFallingLeft);
|
|
break;
|
|
|
|
case 351:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_jarCentre);
|
|
series_unload(_jarWaterFallingCentre);
|
|
break;
|
|
|
|
case 352:
|
|
digi_stop(2);
|
|
terminateMachineAndNull(_jarRight);
|
|
series_unload(_jarWaterFallingRight);
|
|
break;
|
|
|
|
case 360:
|
|
_comboLockState = 1031;
|
|
digi_preload("407_s24");
|
|
digi_preload("407_s27");
|
|
digi_preload("407_s27a");
|
|
digi_preload("407_s27b");
|
|
digi_preload("407_s27c");
|
|
|
|
terminateMachineAndNull(_comboLockPopup);
|
|
terminateMachineAndNull(_lockButton1);
|
|
terminateMachineAndNull(_lockButton2);
|
|
terminateMachineAndNull(_lockButton3);
|
|
terminateMachineAndNull(_lockButton4);
|
|
series_unload(_407pu08d);
|
|
series_unload(_407pu08c);
|
|
series_unload(_407pu08b);
|
|
series_unload(_407pu08a);
|
|
|
|
setHotspots();
|
|
_407e = series_load("407E");
|
|
terminateMachineAndNull(_escape);
|
|
_escape = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xd00, false,
|
|
triggerMachineByHashCallback, "METAL DOOR");
|
|
sendWSMessage_10000(1, _escape, _407e, 1, 30, 364, _407e, 30, 30, 0);
|
|
digi_play("407_s24", 2);
|
|
kernel_timing_trigger(30, 362);
|
|
break;
|
|
|
|
case 362:
|
|
player_update_info();
|
|
ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 363, 1);
|
|
break;
|
|
|
|
case 363:
|
|
_exit = series_load("407 EXIT");
|
|
|
|
if (_frotz5)
|
|
digi_play("407r43", 1);
|
|
break;
|
|
|
|
case 364:
|
|
ws_walk(_G(my_walker), 409, 320, nullptr, 365, 1);
|
|
break;
|
|
|
|
case 365:
|
|
ws_hide_walker();
|
|
_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "RIP exits");
|
|
sendWSMessage_10000(1, _ripley, _exit, 1, 22, 366, _exit, 22, 22, 0);
|
|
break;
|
|
|
|
case 366:
|
|
digi_play("407_s03", 3);
|
|
digi_play("407r44", 1);
|
|
sendWSMessage_10000(1, _ripley, _exit, 22, 65, 367, _exit, 65, 65, 0);
|
|
break;
|
|
|
|
case 367:
|
|
sendWSMessage_10000(1, _ripley, _exit, 66, 81, -1, _exit, 81, 81, 0);
|
|
sendWSMessage_10000(1, _escape, _407e, 30, 1, 368, _407e, 1, 1, 0);
|
|
digi_play("407_s24", 2);
|
|
break;
|
|
|
|
case 368:
|
|
digi_play("407_s25", 2, 255, 369);
|
|
break;
|
|
|
|
case 369:
|
|
kernel_timing_trigger(60, 370);
|
|
break;
|
|
|
|
case 370:
|
|
digi_play("407r45", 1);
|
|
kernel_timing_trigger(60, 371);
|
|
break;
|
|
|
|
case 371:
|
|
disable_player_commands_and_fade_init(380);
|
|
break;
|
|
|
|
case 380:
|
|
kernel_timing_trigger(60, 381);
|
|
break;
|
|
|
|
case 381:
|
|
digi_play("407_s27a", 3, 255, 382);
|
|
break;
|
|
|
|
case 382:
|
|
digi_play("407_s27", 3, 255, 383);
|
|
break;
|
|
|
|
case 383:
|
|
kernel_timing_trigger(60, 384);
|
|
break;
|
|
|
|
case 384:
|
|
digi_play("407r46", 1, 255, 385);
|
|
break;
|
|
|
|
case 385:
|
|
digi_play("407_s27b", 3, 255, 386);
|
|
break;
|
|
|
|
case 386:
|
|
digi_play("407_s27", 3, 255, 390);
|
|
break;
|
|
|
|
case 390:
|
|
digi_play("407_s27a", 3);
|
|
digi_play("407r44", 1, 255, 391);
|
|
break;
|
|
|
|
case 391:
|
|
digi_play("407r47", 1, 255, 392);
|
|
break;
|
|
|
|
case 392:
|
|
digi_play("407_s27b", 3, 255, 393);
|
|
break;
|
|
|
|
case 393:
|
|
digi_play("407_s30", 3, 255, 395);
|
|
break;
|
|
|
|
case 395:
|
|
_G(flags)[kLeftCastleUnderground] = 1;
|
|
midi_stop();
|
|
digi_stop(3);
|
|
_G(game).setRoom(408);
|
|
break;
|
|
|
|
case 400:
|
|
ws_unhide_walker();
|
|
sendWSMessage_10000(1, _ripley, _stair, 1, 30, 402, _stair, 30, 30, 0);
|
|
kernel_timing_trigger(60, 401);
|
|
ws_walk(_G(my_walker), 347, 331, nullptr, -1, 9);
|
|
break;
|
|
|
|
case 401:
|
|
digi_play("407_s12", 2);
|
|
break;
|
|
|
|
case 402:
|
|
terminateMachineAndNull(_ripley);
|
|
_star2 = series_place_sprite("407STAR2", 0, 0, -53, 100, 0xf00);
|
|
series_unload(_stair);
|
|
series_unload(_ripEnters);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 410:
|
|
if (_hoseState == 1100) {
|
|
digi_play("407_s32", 3);
|
|
} else if (_tubeState == 1100) {
|
|
digi_play_loop("407_s31", 3);
|
|
_sink = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "water into sink");
|
|
sendWSMessage_10000(1, _sink, _waterFlowTube, 1, 4, -1,
|
|
_waterFlowTube, 1, 4, 0);
|
|
hotspot_set_active("WATER ", true);
|
|
} else {
|
|
_sink = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "water into sink");
|
|
sendWSMessage_10000(1, _sink, _waterFlowFaucet, 1, 4, -1,
|
|
_waterFlowFaucet, 1, 4, 0);
|
|
hotspot_set_active("WATER", true);
|
|
digi_play("407_s31", 3);
|
|
}
|
|
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 420:
|
|
if (_hoseState == 1130) {
|
|
digi_play_loop("407_s32", 3);
|
|
} else {
|
|
digi_play_loop("407_s31", 3);
|
|
_sink = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, false,
|
|
triggerMachineByHashCallback, "water into sink");
|
|
sendWSMessage_10000(1, _sink, _waterFlowStem, 1, 4, -1,
|
|
_waterFlowStem, 1, 4, 0);
|
|
hotspot_set_active("WATER ", true);
|
|
}
|
|
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 430:
|
|
digi_stop(3);
|
|
|
|
if (_hoseState != 1100) {
|
|
hotspot_set_active("WATER ", false);
|
|
hotspot_set_active("WATER", false);
|
|
terminateMachineAndNull(_sink);
|
|
}
|
|
break;
|
|
|
|
case 440:
|
|
digi_stop(3);
|
|
|
|
if (_hoseState != 1130) {
|
|
hotspot_set_active("WATER ", false);
|
|
terminateMachineAndNull(_sink);
|
|
}
|
|
break;
|
|
|
|
case 450:
|
|
digi_play("407_s16a", 1);
|
|
break;
|
|
|
|
case 666:
|
|
digi_unload("407r37");
|
|
break;
|
|
|
|
case 1200:
|
|
if (_valveState1 == 1010) {
|
|
digi_play("407_s31", 3);
|
|
kernel_timing_trigger(_val1, 1200);
|
|
}
|
|
break;
|
|
|
|
case 1202:
|
|
if (_valveState1 == 1010) {
|
|
digi_play("407_s32", 3);
|
|
kernel_timing_trigger(_val2, 1202);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::pre_parser() {
|
|
const bool lookFlag = player_said_any("look", "look at");
|
|
const bool takeFlag = player_said("take");
|
|
const bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
|
|
|
|
if ((player_said("SURGICAL TUBE", "FAUCET PIPE") || player_said("TUBE/HOSE", "FAUCET PIPE")) &&
|
|
_faucetPipeState == 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 ") && _hoseState != 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 ") && _faucetPipeState != 1130) {
|
|
if (_valveState1 != 1101) {
|
|
digi_play("407R99E", 1);
|
|
intr_cancel_sentence();
|
|
return;
|
|
}
|
|
|
|
mouse_set_sprite(36);
|
|
intr_freshen_sentence();
|
|
}
|
|
|
|
if (useFlag && player_said("GARDEN HOSE ") && _tubeState != 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 ") && _hoseState != 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 (_drawerState == 1010) {
|
|
_G(player).resetWalk();
|
|
|
|
if (player_said(" ") || (lookFlag && player_said("MESSAGE LOG"))) {
|
|
intr_cancel_sentence();
|
|
_drawerState = 1011;
|
|
kernel_timing_trigger(1, 10, KT_DAEMON, KT_PARSE);
|
|
}
|
|
} else if (_tabletopState == 1030) {
|
|
_G(player).resetWalk();
|
|
|
|
if (player_said(" ")) {
|
|
intr_cancel_sentence();
|
|
_tabletopState = 1031;
|
|
kernel_timing_trigger(1, 200, KT_DAEMON, KT_PARSE);
|
|
}
|
|
} else if (_pivotState == 1030) {
|
|
_G(player).resetWalk();
|
|
|
|
if (player_said(" ")) {
|
|
intr_cancel_sentence();
|
|
_pivotState = 1031;
|
|
kernel_timing_trigger(1, 202, KT_DAEMON, KT_PARSE);
|
|
}
|
|
} else if (_glassTopState == 1030) {
|
|
_G(player).resetWalk();
|
|
|
|
if (player_said(" ")) {
|
|
intr_cancel_sentence();
|
|
_glassTopState = 1031;
|
|
kernel_timing_trigger(1, 204, KT_DAEMON, KT_PARSE);
|
|
}
|
|
} else if (_glassBottomState == 1030) {
|
|
_G(player).resetWalk();
|
|
|
|
if (player_said(" ")) {
|
|
intr_cancel_sentence();
|
|
_glassBottomState = 1031;
|
|
kernel_timing_trigger(1, 206, KT_DAEMON, KT_PARSE);
|
|
}
|
|
} else if (_fullGlassState == 1030) {
|
|
_G(player).resetWalk();
|
|
|
|
if (player_said(" ")) {
|
|
intr_cancel_sentence();
|
|
_fullGlassState = 1031;
|
|
kernel_timing_trigger(1, 208, KT_DAEMON, KT_PARSE);
|
|
}
|
|
} else if (_roofPistonState == 1030) {
|
|
_G(player).resetWalk();
|
|
|
|
if (player_said(" ")) {
|
|
intr_cancel_sentence();
|
|
_roofPistonState = 1031;
|
|
kernel_timing_trigger(1, 210, KT_DAEMON, KT_PARSE);
|
|
}
|
|
} else if (_glassGoneState == 1030) {
|
|
_G(player).resetWalk();
|
|
|
|
if (player_said(" ")) {
|
|
intr_cancel_sentence();
|
|
_glassGoneState = 1031;
|
|
kernel_timing_trigger(1, 212, KT_DAEMON, KT_PARSE);
|
|
}
|
|
} else if (_comboLockState == 1030) {
|
|
_G(player).resetWalk();
|
|
|
|
if (player_said(" ")) {
|
|
intr_cancel_sentence();
|
|
_comboLockState = 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() {
|
|
const bool lookFlag = player_said_any("look", "look at");
|
|
const bool takeFlag = player_said("take");
|
|
const bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
|
|
|
|
if (lookFlag && _G(walker).ripley_said(SAID)) {
|
|
// No implementation
|
|
} else if (lookFlag && player_said("ROMANOV EMERALD")) {
|
|
lookItem("PING ROMANOV EMERALD", "407R34");
|
|
} else if (lookFlag && player_said("JAR/RUBBER PLUG")) {
|
|
lookItem("PING JAR/RUBBER PLUG", "407R77");
|
|
} else if (lookFlag && player_said("JAR/CORK")) {
|
|
lookItem("PING JAR/CORK", "407R78");
|
|
} else if (lookFlag && player_said("JAR/CORK/PLUG")) {
|
|
lookItem("PING JAR/CORK/PLUG", "407R79");
|
|
} else if (lookFlag && player_said("JAR/GRIPS")) {
|
|
lookItem("PING JAR/GRIPS", "407R80");
|
|
} else if (lookFlag && player_said("JAR/PLUG/GRIPS")) {
|
|
lookItem("PING JAR/PLUG/GRIPS", "407R81");
|
|
} else if (lookFlag && player_said("JAR/CORK/GRIPS")) {
|
|
lookItem("PING JAR/CORK/GRIPS", "407R82");
|
|
} else if (lookFlag && player_said("JAR/PLUG/CORK/GRIPS")) {
|
|
lookItem("PING JAR/PLUG/CORK/GRIPS", "407R83");
|
|
} else if (lookFlag && player_said("TUBE/HOSE")) {
|
|
lookItem("PING TUBE/HOSE", "407R93");
|
|
} else if (lookFlag && player_said("FAUCET PIPE/HOSE")) {
|
|
lookItem("PING FAUCET PIPE/HOSE", "407R94");
|
|
} else if (lookFlag && player_said("FAUCET PIPE ")) {
|
|
digi_play((_tubeState == 1116) ? "407R86" : "407R07", 1);
|
|
} else if (lookFlag && player_said("FAUCET PIPE/HOSE/TUBE")) {
|
|
lookItem("PING FAUCET PIPE/HOSE/TUBE", "407R95");
|
|
} else if ((useFlag && player_said("MICROSCOPE")) ||
|
|
player_said("ROMANOV EMERALD", "MICROSCOPE")) {
|
|
useMicroscope();
|
|
} else if (lookFlag && player_said("LETTER") &&
|
|
inv_object_is_here("MENENDEZ'S LETTER")) {
|
|
digi_play("407r38", 1);
|
|
} else if (lookFlag && player_said("SURGICAL TUBE") &&
|
|
inv_object_is_here("SURGICAL TUBE")) {
|
|
digi_play("407r31", 1);
|
|
} else if (lookFlag && player_said("WALL PISTON")) {
|
|
digi_play("407r99r", 1);
|
|
} else if (lookFlag && player_said("PUMP ROD ")) {
|
|
digi_play("407r13", 1);
|
|
} else if (lookFlag && player_said("LEVER KEY ")) {
|
|
roofPistonPopup();
|
|
digi_play("407r26a", 1);
|
|
} else if (lookFlag && player_said("RUBBER PLUG") &&
|
|
inv_object_is_here("RUBBER PLUG")) {
|
|
digi_play("407r06", 1);
|
|
} else if (lookFlag && player_said("JAR/RUBBER PLUG") &&
|
|
inv_object_is_here("JAR/RUBBER PLUG")) {
|
|
if (_xyzzy7 == 1112)
|
|
glassBottomPopup();
|
|
digi_play("407r77", 1);
|
|
} else if (lookFlag && player_said("FAUCET PIPE") &&
|
|
inv_object_is_here("FAUCET PIPE")) {
|
|
digi_play("407r07", 1);
|
|
} else if (lookFlag && player_said("SURGICAL TUBE ") &&
|
|
inv_object_is_here("SURGICAL TUBE")) {
|
|
digi_play("407r31", 1);
|
|
} else if (lookFlag && player_said("FAUCET HANDLE") &&
|
|
inv_object_is_here("FAUCET HANDLE")) {
|
|
digi_play("407r08", 1);
|
|
} else if (lookFlag && player_said("TABLE PIVOT")) {
|
|
pivotPopup();
|
|
digi_play("407r09", 1);
|
|
} else if (lookFlag && player_said("NOZZLES")) {
|
|
tabletopPopup();
|
|
digi_play("407r10", 1);
|
|
} else if (lookFlag && player_said("PUMP ROD") &&
|
|
inv_object_is_here("PUMP ROD")) {
|
|
digi_play("407r13", 1);
|
|
} else if (lookFlag && player_said("GLASS JAR") &&
|
|
inv_object_is_here("GLASS JAR") && lookGlassJar()) {
|
|
// No implementation
|
|
} else if (lookFlag && player_said("EMERALD/CORK") &&
|
|
inv_object_is_here("EMERALD/CORK") && lookEmeraldCork()) {
|
|
// No implementation
|
|
} else if (lookFlag && player_said("IRON SUPPORT")) {
|
|
if (_xyzzy7 == 1112) {
|
|
glassTopPopup();
|
|
} else {
|
|
glassGonePopup();
|
|
}
|
|
} else if (lookFlag && player_said("SMALL GEAR WHEEL")) {
|
|
if (_xyzzy7 == 1112) {
|
|
glassTopPopup();
|
|
} else {
|
|
glassGonePopup();
|
|
}
|
|
|
|
digi_play("407r21", 1);
|
|
} else if (lookFlag && player_said("PERIODIC TABLE/JAR") && _xyzzy7 == 1112) {
|
|
glassTopPopup();
|
|
} else if (lookFlag && player_said("PERIODIC TABLE")) {
|
|
if (inv_player_has("PERIODIC TABLE")) {
|
|
periodicTablePopup();
|
|
} else {
|
|
digi_play(_frotz8 ? "407r99c" : "407r22", 1);
|
|
}
|
|
} else if (lookFlag && player_said("BRACKET")) {
|
|
roofPistonPopup();
|
|
digi_play("407r24", 1);
|
|
} else if (lookFlag && player_said("CEILING PISTON")) {
|
|
roofPistonPopup();
|
|
digi_play("407r25", 1);
|
|
} else if (lookFlag && player_said("LEVER KEY") &&
|
|
inv_object_is_here("LEVER KEY") && lookLeverKey()) {
|
|
// No implementation
|
|
} else if (lookFlag && player_said("LEVER KEY ") &&
|
|
inv_object_is_here("LEVER KEY")) {
|
|
pivotPopup();
|
|
digi_play("407r64", 1);
|
|
} else if (lookFlag && player_said("AIR VALVE/HANDLE")) {
|
|
tabletopPopup();
|
|
digi_play("407r63", 1);
|
|
} else if (lookFlag && player_said("AIR VALVE")) {
|
|
tabletopPopup();
|
|
digi_play("407r62", 1);
|
|
} 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 ") && _tubeState == 1100) {
|
|
gardenHoseSurgicalTube();
|
|
} else if ((player_said("SURGICAL TUBE", "FAUCET PIPE") ||
|
|
player_said("TUBE/HOSE", "FAUCET PIPE")) && _faucetPipeState == 1100) {
|
|
surgicalTubeFaucetPipe();
|
|
} else if ((player_said("SURGICAL TUBE", "FAUCET STEM") ||
|
|
player_said("TUBE/HOSE", "FAUCET STEM") ||
|
|
player_said("FAUCET PIPE/HOSE/TUBE", "FAUCET STEM")) &&
|
|
_faucetPipeState != 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();
|
|
} else if (player_said("ROMANOV EMERALD", "IRON SUPPORT") && _val6 == 1011) {
|
|
emeraldIronSupport();
|
|
} else if (player_said("GLASS JAR", "LEVER KEY ") ||
|
|
player_said("JAR/RUBBER PLUG", "LEVER KEY ") ||
|
|
player_said("JAR/CORK", "LEVER KEY ") ||
|
|
player_said("JAR/GRIPS", "LEVER KEY ") ||
|
|
player_said("JAR/CORK/PLUG", "LEVER KEY ") ||
|
|
player_said("JAR/PLUG/GRIPS", "LEVER KEY ") ||
|
|
player_said("JAR/CORK/GRIPS", "LEVER KEY ") ||
|
|
player_said("JAR/PLUG/CORK/GRIPS", "LEVER KEY ")) {
|
|
reachLeverKey();
|
|
} else if (player_said("LEVER KEY/PUMP ROD", "BRACKET")) {
|
|
placeLeverKey();
|
|
} else if (player_said("RUBBER PLUG", "GLASS JAR") && _xyzzy7 == 1112) {
|
|
rubberPlugGlassJar();
|
|
} else if (player_said("CORK", "GLASS JAR") && _xyzzy7 == 1112) {
|
|
corkGlassJar1();
|
|
} else if (player_said("pump grips", "glass jar ") &&
|
|
(_xyzzy7 == 1114 || _xyzzy7 == 1140)) {
|
|
pumpGripsGlassJar();
|
|
} else if (player_said("rubber plug", "glass jar ") &&
|
|
(_xyzzy7 == 1114 || _xyzzy7 == 1140)) {
|
|
rubberPlugGlassJar2();
|
|
} else if (player_said("CORK", "GLASS JAR ") &&
|
|
(_xyzzy7 == 1114 || _xyzzy7 == 1140)) {
|
|
corkGlassJar2();
|
|
} else if (player_said("PERIODIC TABLE", "GLASS JAR") && _periodicTableState == 1000) {
|
|
periodicTableGlassJar();
|
|
} else if (player_said("SURGICAL TUBE", "NOZZLES") && _tubeState == 1000) {
|
|
surgicalTubeNozzles();
|
|
} else if (player_said("LEVER KEY", "TABLE PIVOT") && _leverKeyState == 1000) {
|
|
leverKeyTablePivot();
|
|
} else if (player_said("PUMP ROD", "BRACKET") && _rodState == 1000) {
|
|
pumpRodBracket();
|
|
} else if ((player_said("LEVER KEY", "BRACKET") || player_said("LEVER KEY", "PUMP ROD ")) &&
|
|
_leverKeyState == 1000) {
|
|
if (_rodState == 1114)
|
|
leverKey1();
|
|
else
|
|
leverKey2();
|
|
} else if (player_said("FAUCET HANDLE", "AIR VALVE") && _airValveState == 1000) {
|
|
faucetHandleAirValve();
|
|
} else if (player_said("FAUCET PIPE", "FAUCET HANDLE") &&
|
|
_airValveState == 1000 && _faucetPipeState == 1100) {
|
|
faucetPipeFaucetHandle1();
|
|
} else if (player_said("FAUCET PIPE", "FAUCET HANDLE") &&
|
|
_faucetPipeState == 1000 && _airValveState == 1100 && _tubeState != 1130) {
|
|
faucetPipeFaucetHandle2();
|
|
} else if ((player_said("FAUCET PIPE", "FAUCET STEM") ||
|
|
player_said("FAUCET PIPE/TUBE", "FAUCET STEM") ||
|
|
player_said("FAUCET PIPE/TUBE", "FAUCET HANDLE") ||
|
|
player_said("FAUCET PIPE/TUBE", "SINK") ||
|
|
player_said("FAUCET PIPE", "SINK")) &&
|
|
_tubeState != 1130) {
|
|
faucetPipeFaucetHandle2();
|
|
} else if (player_said("FAUCET HANDLE", "FAUCET STEM") && _airValveState == 1000) {
|
|
faucetPipeFaucetHandle1();
|
|
} else if (player_said("PUMP ROD", "PUMP") && _rodState == 1000) {
|
|
pumpRodPump();
|
|
} else if ((player_said("PUMP GRIPS", "PUMP") ||
|
|
player_said("PUMP GRIPS", "PUMP ROD"))
|
|
&& _rodState == 1115) {
|
|
pumpGripsPump();
|
|
} else if (player_said("RUBBER PLUG", "SINK")) {
|
|
digi_play("407R35", 1);
|
|
} else if (player_said("FAUCET PIPE", "GLASS JAR") ||
|
|
player_said("FAUCET PIPE", "IRON SUPPORT")) {
|
|
digi_play("407R67", 1);
|
|
|
|
} else if (useFlag && player_said(" ")) {
|
|
switch (imath_ranged_rand(1, 3)) {
|
|
case 1:
|
|
digi_play("com006", 1);
|
|
break;
|
|
case 2:
|
|
digi_play("com011", 1);
|
|
break;
|
|
case 3:
|
|
digi_play("com018", 1);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
} else if (useFlag && player_said("BUTTON")) {
|
|
useButton1();
|
|
} else if (useFlag && player_said("BUTTON ")) {
|
|
useButton2();
|
|
} else if (useFlag && player_said("BUTTON ")) {
|
|
useButton3();
|
|
} else if (useFlag && player_said("BUTTON ")) {
|
|
useButton4();
|
|
} else if (useFlag && player_said("BUTTONS")) {
|
|
useButtons();
|
|
} else if (useFlag && player_said("LEVER KEY ") &&
|
|
_leverKeyState == 1114 && _xyzzy7 != 1114 && _xyzzy7 != 1140) {
|
|
useLeverKey();
|
|
} else if (useFlag && player_said_any("FAUCET HANDLE", "FAUCET STEM") &&
|
|
_airValveState == 1100 && inv_object_is_here("FAUCET HANDLE")) {
|
|
if (_frotz2) {
|
|
digi_play("407r99e", 1);
|
|
} else if (_faucetPipeState == 1100 || (_tubeState == 1130 && _faucetPipeState != 1130)) {
|
|
if (_periodicTableState == 1120)
|
|
digi_play("407r99o", 1);
|
|
else
|
|
useFaucet();
|
|
} else if (_faucetHookedToJar) {
|
|
useFaucet();
|
|
} else if (_tubeState == 1130) {
|
|
// The original is doing two additional checks on _faucetHookedToJar and (_faucetPipeState == 1100 which are useless at this point (already covered)
|
|
digi_play("407r99e", 1);
|
|
} else {
|
|
digi_play("407r99n", 1);
|
|
}
|
|
} else if (useFlag && player_said("AIR VALVE/HANDLE")
|
|
&& _airValveState == 1110 && inv_object_is_here("FAUCET HANDLE")) {
|
|
if (inv_object_is_here("EMERALD/CORK") || _val6 != 1110 ||
|
|
_xyzzy7 != 1112 || _val7 != 1021) {
|
|
useValveHandle();
|
|
} else {
|
|
digi_play("com090a", 1);
|
|
}
|
|
} else if (useFlag && player_said_any("PUMP GRIPS ", "PUMP", "PUMP ROD")
|
|
&& usePump()) {
|
|
// No implementation
|
|
} else if (useFlag && player_said("DRAWER")) {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_ripMedReach = series_load("RIP TREK MED REACH POS3");
|
|
setGlobals1(_ripMedReach, 1, 10, 10, 10, 0, 10, 1, 1, 1);
|
|
sendWSMessage_110000(1);
|
|
break;
|
|
|
|
case 1:
|
|
_drawerState = 1010;
|
|
_drawerPopup = series_place_sprite("407 DRAWER POPUP", 0, 0, 0, 100, 0x200);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
if (_hoseState == 1101) {
|
|
_drawerPopupHose = series_place_sprite("407 DRAWER POPUP HOSE", 0, 0, 0, 100, 0x100);
|
|
hotspot_set_active("GARDEN HOSE", true);
|
|
}
|
|
|
|
if (_stopperState == 1101) {
|
|
_stopperInDrawer = series_place_sprite("407 STOPPER IN DRAWER",
|
|
0, 0, 0, 100, 0x100);
|
|
hotspot_set_active("RUBBER PLUG", true);
|
|
}
|
|
|
|
if (_tubeState == 1101) {
|
|
_tubeInDrawer = series_place_sprite("407 TUBE IN DRAWER",
|
|
0, 0, 0, 100, 0x100);
|
|
hotspot_set_active("SURGICAL TUBE", true);
|
|
}
|
|
|
|
if (_pumpState == 1101) {
|
|
_grips = series_place_sprite(
|
|
"407 PUMP HANDLE IN DRAWER", 0, 0, 0, 100, 0x100);
|
|
hotspot_set_active("PUMP GRIPS", true);
|
|
}
|
|
|
|
digi_play("407_s01", 2);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
} else {
|
|
goto take;
|
|
}
|
|
|
|
_G(player).command_ready = false;
|
|
return;
|
|
|
|
take:
|
|
if (takeFlag && player_said("LETTER")) {
|
|
takeLetter();
|
|
} else if (takeFlag && player_said("FAUCET PIPE ") && _faucetPipeState == 1130) {
|
|
takeFaucetPipe1();
|
|
} else if (takeFlag && player_said("SURGICAL TUBE ") && _tubeState == 1100) {
|
|
takeSurgicalTube1();
|
|
} else if (takeFlag && player_said("GARDEN HOSE ") && _hoseState == 1100) {
|
|
takeGardenHose1();
|
|
} else if (takeFlag && player_said("GARDEN HOSE ") && _hoseState == 1130) {
|
|
takeGardenHose2();
|
|
} else if (takeFlag && player_said("SURGICAL TUBE ") && _tubeState == 1130) {
|
|
takeSurgicalTube2();
|
|
} else if (takeFlag && player_said("FAUCET PIPE ") && _faucetPipeState == 1116) {
|
|
takeFaucetPipe2();
|
|
} else if (takeFlag && player_said("GARDEN HOSE ") && _hoseState == 1116) {
|
|
takeGardenHose3();
|
|
} else if (takeFlag && player_said("SURGICAL TUBE ") && _tubeState == 1116) {
|
|
takeSurgicalTube3();
|
|
} else if (takeFlag && player_said("GLASS JAR ")) {
|
|
if (_faucetPipeState == 1116 || _xyzzy7 != 1114)
|
|
digi_play("com096", 1);
|
|
else
|
|
takeGlassJar1();
|
|
} else if (takeFlag && player_said("GLASS JAR") &&
|
|
_val6 == 1010 && _xyzzy7 == 1112) {
|
|
takeGlassJar2();
|
|
} else if (takeFlag && player_said("PERIODIC TABLE") && _periodicTableState == 1112) {
|
|
takePeriodicTable1();
|
|
} else if (takeFlag && player_said("PERIODIC TABLE ")) {
|
|
takePeriodicTable2();
|
|
} else if (takeFlag && player_said("JAR/GRIPS ") &&
|
|
(_xyzzy7 == 1114 || _xyzzy7 == 1140) &&
|
|
_pumpState == 1116) {
|
|
takeJarGrips();
|
|
} else if (takeFlag && player_said("JAR/CORK") && _xyzzy7 == 1112) {
|
|
takeJarCork1();
|
|
} else if (takeFlag && player_said("JAR/CORK ") &&
|
|
(_xyzzy7 == 1114 || _xyzzy7 == 1140) &&
|
|
_corkState == 1116) {
|
|
takeJarCork2();
|
|
} else if (takeFlag && player_said("JAR/RUBBER PLUG") && _xyzzy7 == 1112) {
|
|
takeJarRubberPlug1();
|
|
} else if (takeFlag && player_said("JAR/RUBBER PLUG ") &&
|
|
(_xyzzy7 == 1114 || _xyzzy7 == 1140) &&
|
|
_stopperState == 1116) {
|
|
takeJarRubberPlug2();
|
|
} else if (takeFlag && player_said("NOZZLES/TUBE")) {
|
|
takeNozzlesTube();
|
|
} else if (takeFlag && player_said("LEVER KEY") && _leverKeyState == 1112) {
|
|
takeLeverKeyFromWall();
|
|
} else if (takeFlag && player_said("LEVER KEY ")) {
|
|
takeLeverKeyFromBench();
|
|
} else if (takeFlag && player_said("AIR VALVE/HANDLE") && _airValveState == 1110) {
|
|
takeAirValveHandle();
|
|
} else if (takeFlag && player_said("FAUCET HANDLE") && _airValveState == 1100) {
|
|
takeFaucetHandle();
|
|
} else if (takeFlag && player_said("FAUCET PIPE") && _faucetPipeState == 1100) {
|
|
takeFaucetPipe3();
|
|
} else if (takeFlag && player_said("PUMP ROD") && _rodState == 1115) {
|
|
takePumpRod1();
|
|
} else if (takeFlag && player_said("PUMP ROD ") &&
|
|
_xyzzy7 != 1114 && _xyzzy7 != 1140) {
|
|
if (_leverKeyState == 1114)
|
|
takePumpRod2();
|
|
else
|
|
takePumpRod3();
|
|
} else if (takeFlag && player_said("LEVER KEY ")) {
|
|
if (_leverKeyState != 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("TABLE 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")) &&
|
|
(_hoseState == 1060 || _hoseState == 1061 || _tubeState == 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:
|
|
_hoseState = 1062;
|
|
_faucetPipeState = 1111;
|
|
_tubeState = 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") &&
|
|
_hoseState == 1000 && _faucetPipeState == 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:
|
|
_hoseState = 1061;
|
|
_faucetPipeState = 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") &&
|
|
_hoseState == 1000 && _tubeState == 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:
|
|
_hoseState = 1060;
|
|
_tubeState = 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") &&
|
|
_faucetPipeState == 1000 && _tubeState == 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:
|
|
_faucetPipeState = 1060;
|
|
_tubeState = 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;
|
|
_corkState = 1116;
|
|
_stopperState = 1116;
|
|
_pumpState = 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;
|
|
_corkState = 1116;
|
|
_stopperState = 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;
|
|
_corkState = 1116;
|
|
_pumpState = 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;
|
|
_stopperState = 1116;
|
|
_pumpState = 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 && _corkState == 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;
|
|
_corkState = 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 && _pumpState == 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;
|
|
_pumpState = 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 && _stopperState == 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;
|
|
_stopperState = 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") &&
|
|
_leverKeyState == 1000 && _rodState == 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:
|
|
_leverKeyState = 1041;
|
|
_rodState = 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") &&
|
|
_hoseState == 1062) {
|
|
_hoseState = 1000;
|
|
_tubeState = 1000;
|
|
_faucetPipeState = 1000;
|
|
inv_move_object("FAUCET PIPE/HOSE/TUBE", 407);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
inv_give_to_player("FAUCET PIPE");
|
|
} else if (useFlag && player_said("TUBE/HOSE") && _hoseState == 1060) {
|
|
_hoseState = 1000;
|
|
_tubeState = 1000;
|
|
inv_move_object("TUBE/HOSE", 407);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
} else if (useFlag && player_said("FAUCET PIPE/HOSE") && _hoseState == 1061) {
|
|
_hoseState = 1000;
|
|
_faucetPipeState = 1000;
|
|
inv_move_object("FAUCET PIPE/HOSE", 407);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
inv_give_to_player("FAUCET PIPE");
|
|
} else if (useFlag && player_said("FAUCET PIPE/TUBE") && _tubeState == 1061) {
|
|
_tubeState = 1000;
|
|
_faucetPipeState = 1000;
|
|
inv_move_object("FAUCET PIPE/TUBE", 407);
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
inv_give_to_player("FAUCET PIPE");
|
|
} else if (useFlag && player_said("JAR/PLUG/CORK/GRIPS") && _xyzzy7 == 1056) {
|
|
_xyzzy7 = 1000;
|
|
_corkState = 1000;
|
|
_pumpState = 1000;
|
|
_stopperState = 1000;
|
|
inv_move_object("JAR/PLUG/CORK/GRIPS", 407);
|
|
inv_give_to_player("GLASS JAR");
|
|
inv_give_to_player("PUMP GRIPS");
|
|
inv_give_to_player("CORK");
|
|
inv_give_to_player("RUBBER PLUG");
|
|
} else if (useFlag && player_said("JAR/CORK/PLUG") && _xyzzy7 == 1053) {
|
|
_xyzzy7 = 1000;
|
|
_corkState = 1000;
|
|
_stopperState = 1000;
|
|
inv_move_object("JAR/CORK/PLUG", 407);
|
|
inv_give_to_player("GLASS JAR");
|
|
inv_give_to_player("RUBBER PLUG");
|
|
inv_give_to_player("CORK");
|
|
} else if (useFlag && player_said("JAR/CORK/GRIPS") && _xyzzy7 == 1055) {
|
|
_xyzzy7 = 1000;
|
|
_corkState = 1000;
|
|
_pumpState = 1000;
|
|
inv_move_object("JAR/CORK/GRIPS", 407);
|
|
inv_give_to_player("GLASS JAR");
|
|
inv_give_to_player("PUMP GRIPS");
|
|
inv_give_to_player("CORK");
|
|
} else if (useFlag && player_said("JAR/PLUG/GRIPS") && _xyzzy7 == 1054) {
|
|
_xyzzy7 = 1000;
|
|
_stopperState = 1000;
|
|
_pumpState = 1000;
|
|
inv_move_object("JAR/PLUG/GRIPS", 407);
|
|
inv_give_to_player("GLASS JAR");
|
|
inv_give_to_player("PUMP GRIPS");
|
|
inv_give_to_player("RUBBER PLUG");
|
|
} else if (useFlag && player_said("JAR/GRIPS") && _xyzzy7 == 1052) {
|
|
_xyzzy7 = 1000;
|
|
_pumpState = 1000;
|
|
inv_move_object("JAR/GRIPS", 407);
|
|
inv_give_to_player("GLASS JAR");
|
|
inv_give_to_player("PUMP GRIPS");
|
|
} else if (useFlag && player_said("JAR/CORK") && _xyzzy7 == 1051) {
|
|
_xyzzy7 = 1000;
|
|
_corkState = 1000;
|
|
inv_move_object("JAR/CORK", 407);
|
|
inv_give_to_player("GLASS JAR");
|
|
inv_give_to_player("CORK");
|
|
} else if (useFlag && player_said("JAR/RUBBER PLUG") && _xyzzy7 == 1050) {
|
|
_xyzzy7 = 1000;
|
|
_stopperState = 1000;
|
|
inv_move_object("JAR/RUBBER PLUG", 407);
|
|
inv_give_to_player("GLASS JAR");
|
|
inv_give_to_player("RUBBER PLUG");
|
|
} else if (useFlag && player_said("LEVER KEY/PUMP ROD") && _xyzzy10 == 1041) {
|
|
_leverKeyState = 1000;
|
|
_rodState = 1000;
|
|
_xyzzy10 = 1040;
|
|
inv_move_object("LEVER KEY/PUMP ROD", 407);
|
|
inv_give_to_player("LEVER KEY");
|
|
inv_give_to_player("PUMP ROD");
|
|
} else if (useFlag && player_said("EMERALD/CORK") &&
|
|
inv_player_has("EMERALD/CORK")) {
|
|
_items2State = 1000;
|
|
_corkState = 1000;
|
|
inv_move_object("EMERALD/CORK", NOWHERE);
|
|
inv_give_to_player("ROMANOV EMERALD");
|
|
inv_give_to_player("CORK");
|
|
} else if (player_said("journal") &&
|
|
!takeFlag && !lookFlag && !inv_player_has(_G(player).noun)) {
|
|
digi_play("407r59", 1);
|
|
} else {
|
|
return;
|
|
}
|
|
|
|
_G(player).command_ready = false;
|
|
}
|
|
|
|
void Room407::syncGame(Common::Serializer &s) {
|
|
s.syncAsSint16LE(_val1);
|
|
s.syncAsSint16LE(_val2);
|
|
s.syncAsSint16LE(_valveState2);
|
|
s.syncAsSint16LE(_valveState1);
|
|
s.syncAsSint16LE(_drawerState);
|
|
s.syncAsSint16LE(_val6);
|
|
s.syncAsSint16LE(_val7);
|
|
s.syncAsSint16LE(_faucetPipeState);
|
|
s.syncAsSint16LE(_airValveState);
|
|
s.syncAsSint16LE(_leverKeyState);
|
|
s.syncAsSint16LE(_rodState);
|
|
s.syncAsSint16LE(_hoseState);
|
|
s.syncAsSint16LE(_tubeState);
|
|
s.syncAsSint16LE(_pumpState);
|
|
s.syncAsSint16LE(_stopperState);
|
|
s.syncAsSint16LE(_periodicTableState);
|
|
s.syncAsSint16LE(_xyzzy7);
|
|
s.syncAsSint16LE(_items2State);
|
|
s.syncAsSint16LE(_corkState);
|
|
s.syncAsSint16LE(_xyzzy10);
|
|
s.syncAsSint16LE(_faucetHookedToJar);
|
|
s.syncAsSint16LE(_frotz2);
|
|
s.syncAsSint16LE(_frotz3);
|
|
s.syncAsSint16LE(_frotz4);
|
|
s.syncAsSint16LE(_frotz5);
|
|
s.syncAsSint16LE(_frotz6);
|
|
s.syncAsSint16LE(_frotz7);
|
|
s.syncAsSint16LE(_frotz8);
|
|
s.syncAsSint16LE(_lookedAtLever);
|
|
s.syncAsSint16LE(_tabletopState);
|
|
s.syncAsSint16LE(_pivotState);
|
|
s.syncAsSint16LE(_fullGlassState);
|
|
s.syncAsSint16LE(_glassTopState);
|
|
s.syncAsSint16LE(_glassBottomState);
|
|
s.syncAsSint16LE(_roofPistonState);
|
|
s.syncAsSint16LE(_glassGoneState);
|
|
s.syncAsSint16LE(_comboLockState);
|
|
s.syncAsSint16LE(_buttonFrame1);
|
|
s.syncAsSint16LE(_buttonFrame2);
|
|
s.syncAsSint16LE(_buttonFrame3);
|
|
s.syncAsSint16LE(_buttonFrame4);
|
|
s.syncAsSint16LE(_val11);
|
|
s.syncAsSint16LE(_val15);
|
|
s.syncAsSint16LE(_val16);
|
|
s.syncAsSint16LE(_waterFlowTube);
|
|
s.syncAsSint16LE(_waterFlowFaucet);
|
|
s.syncAsSint16LE(_waterFlowStem);
|
|
s.syncAsSint16LE(_codeCorrect);
|
|
}
|
|
|
|
void Room407::setHotspots() {
|
|
disableHotspots();
|
|
|
|
hotspot_set_active(" ", true);
|
|
|
|
if (_drawerState == 1010) {
|
|
if (_hoseState == 1101)
|
|
hotspot_set_active("GARDEN HOSE", true);
|
|
if (_stopperState == 1101)
|
|
hotspot_set_active("RUBBER PLUG", true);
|
|
if (_tubeState == 1101)
|
|
hotspot_set_active("SURGICAL TUBE", true);
|
|
if (_pumpState == 1101)
|
|
hotspot_set_active("PUMP GRIPS", true);
|
|
|
|
} else if (_tabletopState == 1030 || _pivotState == 1030 ||
|
|
_glassTopState == 1030 || _glassBottomState == 1030 || _fullGlassState == 1030 ||
|
|
_roofPistonState == 1030 || _glassGoneState == 1030) {
|
|
// No implementation
|
|
} else if (_comboLockState == 1030) {
|
|
hotspot_set_active("BUTTON", true);
|
|
hotspot_set_active("BUTTON ", true);
|
|
hotspot_set_active("BUTTON ", true);
|
|
hotspot_set_active("BUTTON ", true);
|
|
|
|
} else {
|
|
enableHotspots();
|
|
|
|
hotspot_set_active("GARDEN HOSE", false);
|
|
hotspot_set_active("RUBBER PLUG", false);
|
|
hotspot_set_active("SURGICAL TUBE", false);
|
|
hotspot_set_active("PUMP GRIPS", false);
|
|
hotspot_set_active("BUTTON", false);
|
|
hotspot_set_active("BUTTON ", false);
|
|
hotspot_set_active("BUTTON ", false);
|
|
hotspot_set_active("BUTTON ", false);
|
|
|
|
if (_pumpState != 1115)
|
|
hotspot_set_active("PUMP GRIPS ", false);
|
|
if (_rodState != 1115)
|
|
hotspot_set_active("PUMP ROD", false);
|
|
if (_rodState != 1114)
|
|
hotspot_set_active("PUMP ROD ", false);
|
|
if (_airValveState != 1100)
|
|
hotspot_set_active("FAUCET HANDLE", false);
|
|
if (_faucetPipeState != 1100)
|
|
hotspot_set_active("FAUCET PIPE", false);
|
|
if (_airValveState != 1110)
|
|
hotspot_set_active("AIR VALVE/HANDLE", false);
|
|
else
|
|
hotspot_set_active("AIR VALVE", false);
|
|
if (_leverKeyState != 1112)
|
|
hotspot_set_active("LEVER KEY", false);
|
|
if (_leverKeyState != 1113)
|
|
hotspot_set_active("LEVER KEY ", false);
|
|
if (_leverKeyState != 1114)
|
|
hotspot_set_active("LEVER KEY ", false);
|
|
if (_tubeState != 1117)
|
|
hotspot_set_active("NOZZLES/TUBE", false);
|
|
else
|
|
hotspot_set_active("NOZZLES", false);
|
|
if (_periodicTableState != 1112)
|
|
hotspot_set_active("PERIODIC TABLE", false);
|
|
if (_periodicTableState != 1116)
|
|
hotspot_set_active("PERIODIC TABLE/JAR", false);
|
|
if (_periodicTableState != 1120)
|
|
hotspot_set_active("PERIODIC TABLE ", false);
|
|
|
|
if (inv_object_is_here("EMERALD/CORK"))
|
|
hotspot_set_active("EMERALD/CORK", false);
|
|
|
|
if (_xyzzy7 == 1112) {
|
|
if (_stopperState != 1116)
|
|
hotspot_set_active("JAR/RUBBER PLUG", false);
|
|
if (_corkState != 1116)
|
|
hotspot_set_active("JAR/CORK", false);
|
|
if (_items2State != 1116)
|
|
hotspot_set_active("EMERALD PIN/CORK", false);
|
|
} else {
|
|
hotspot_set_active("GLASS JAR", false);
|
|
hotspot_set_active("JAR/RUBBER PLUG", false);
|
|
hotspot_set_active("JAR/CORK", false);
|
|
hotspot_set_active("EMERALD PIN/CORK", false);
|
|
}
|
|
|
|
if (_xyzzy7 != 1114 && _xyzzy7 != 1140) {
|
|
hotspot_set_active("JAR/CORK ", false);
|
|
hotspot_set_active("JAR/GRIPS ", false);
|
|
hotspot_set_active("GLASS JAR ", false);
|
|
hotspot_set_active("JAR/RUBBER PLUG ", false);
|
|
} else {
|
|
if (_stopperState != 1116 && _stopperState != 1130)
|
|
hotspot_set_active("JAR/RUBBER PLUG ", false);
|
|
if (_corkState != 1116 && _corkState != 1130)
|
|
hotspot_set_active("JAR/CORK ", false);
|
|
if (_pumpState != 1116 && _pumpState != 1130)
|
|
hotspot_set_active("JAR/GRIP ", false);
|
|
}
|
|
|
|
if (_faucetPipeState != 1116 && _faucetPipeState != 1140)
|
|
hotspot_set_active("FAUCET PIPE ", false);
|
|
if (_hoseState != 1116)
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
if (_tubeState != 1116)
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
if (_hoseState != 1130)
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
if (_faucetPipeState != 1130)
|
|
hotspot_set_active("FAUCET PIPE ", false);
|
|
if (_tubeState != 1130 && _tubeState != 1140)
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
if (_tubeState != 1100)
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
if (_hoseState != 1140)
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
if (_hoseState != 1100)
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
|
|
if (_frotz2) {
|
|
hotspot_set_active("ARMORED CABINET", false);
|
|
|
|
if (_frotz4)
|
|
hotspot_set_active("LETTER", false);
|
|
if (!_frotz4)
|
|
hotspot_set_active("BUTTONS", false);
|
|
|
|
} else {
|
|
hotspot_set_active("MICROSCOPE", false);
|
|
hotspot_set_active("BUTTONS", false);
|
|
hotspot_set_active("LETTER", false);
|
|
}
|
|
|
|
hotspot_set_active("WATER", false);
|
|
hotspot_set_active("WATER ", false);
|
|
hotspot_set_active("WATER ", false);
|
|
|
|
if (!_valveState1) {
|
|
if (_faucetPipeState == 1100) {
|
|
if (_tubeState != 1100)
|
|
hotspot_set_active("WATER", true);
|
|
else if (_hoseState != 1100)
|
|
hotspot_set_active("WATER ", true);
|
|
} else {
|
|
if (_tubeState == 1130 && _hoseState != 1130)
|
|
hotspot_set_active("WATER ", true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void Room407::lookItem(const char *item, const char *digi) {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
kernel_examine_inventory_object(item, _G(master_palette),
|
|
5, 1, 175, 150, 1, digi, -1);
|
|
break;
|
|
case 1:
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::useMicroscope() {
|
|
if (_G(kernel).trigger == -1) {
|
|
_val16 = 1030;
|
|
|
|
if (player_said("ROMANOV EMERALD", "MICROSCOPE")) {
|
|
_frotz5 = 1;
|
|
_microscopeCloseup = series_place_sprite("407 MICROSCOPE CLOSEUP",
|
|
0, 200, 150, 100, 0x200);
|
|
digi_play("407r42", 1);
|
|
} else {
|
|
_microscopeCloseup = series_place_sprite("407pu07A", 0, 0, 0, 100, 0x200);
|
|
}
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
player_set_commands_allowed(true);
|
|
}
|
|
}
|
|
|
|
void Room407::roofPistonPopup() {
|
|
if (_G(kernel).trigger == -1) {
|
|
_roofPistonState = 1030;
|
|
_roofPiston = series_place_sprite("407 ROOF PISTON/BRACE",
|
|
0, 0, 0, 100, 0x200);
|
|
|
|
if (_leverKeyState == 1114) {
|
|
_tabletopPopupWithItems3 = series_place_sprite(
|
|
"407 ROOF PISTON WITH ITEMS", 1, 0, 0, 100, 0x100);
|
|
}
|
|
|
|
if (_rodState == 1114) {
|
|
_roofPistonWithItems = series_place_sprite(
|
|
"407 ROOF PISTON WITH ITEMS", 0, 0, 0, 100, 0);
|
|
}
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
player_set_commands_allowed(true);
|
|
}
|
|
}
|
|
|
|
void Room407::glassBottomPopup() {
|
|
if (_G(kernel).trigger == -1) {
|
|
_glassBottomState = 1030;
|
|
_glassJarPopup = series_place_sprite(
|
|
"407 GLASS BOTTOM POPUP", 0, 0, 0, 100, 0x200);
|
|
|
|
if (_periodicTableState == 1116)
|
|
_glassTopPopupWithItems2 = series_place_sprite(
|
|
"407 GLS BOTTOM PU WITH ITEMS", 0, 0, 0, 100, 0x100);
|
|
|
|
if (_items2State == 1116)
|
|
_glassBottomWithItems1 = series_place_sprite(
|
|
"407 GLS BOTTOM PU WITH ITEMS", 1, 0, 0, 100, 0x100);
|
|
|
|
if (_stopperState == 1116)
|
|
_glassBottomWithItems2 = series_place_sprite(
|
|
"407 GLS BOTTOM PU WITH ITEMS", 4, 0, 0, 100, 0x100);
|
|
|
|
if (_leverKeyState == 1113)
|
|
_tabletopPopupWithItems3 = series_place_sprite(
|
|
"407 GLS BOTTOM PU WITH ITEMS", 1, 0, 0, 100, 0x100);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
player_set_commands_allowed(true);
|
|
}
|
|
}
|
|
|
|
void Room407::glassTopPopup() {
|
|
if (_G(kernel).trigger == -1) {
|
|
_glassTopState = 1030;
|
|
_glassJarPopup = series_place_sprite("407 GLASS TOP POPUP",
|
|
0, 0, 0, 100, 0x200);
|
|
|
|
if (_val6 == 1010) {
|
|
_glassTopPopupWithItems1 = series_place_sprite(
|
|
"407 GLASS TOP POPUP WITH ITEMS", 1, 0, 0, 100, 0x100);
|
|
|
|
if (!player_said("SMALL GEAR WHEEL"))
|
|
digi_play("407r66a", 1);
|
|
|
|
} else if (_periodicTableState == 1116) {
|
|
_glassTopPopupWithItems2 = series_place_sprite(
|
|
"407 GLASS TOP POPUP WITH ITEMS", 0, 0, 0, 100, 0x100);
|
|
|
|
if (!player_said("SMALL GEAR WHEEL"))
|
|
digi_play("407r99a", 1);
|
|
|
|
} else {
|
|
if (!player_said("SMALL GEAR WHEEL"))
|
|
digi_play("407r19", 1);
|
|
}
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
player_set_commands_allowed(true);
|
|
}
|
|
}
|
|
|
|
void Room407::glassGonePopup() {
|
|
if (_G(kernel).trigger == -1) {
|
|
_glassGoneState = 1030;
|
|
_glassGone = series_place_sprite("407 GLASS GONE CU PU",
|
|
0, 0, 0, 100, 0x200);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
player_set_commands_allowed(true);
|
|
}
|
|
}
|
|
|
|
void Room407::pivotPopup() {
|
|
if (_G(kernel).trigger == -1) {
|
|
_pivotState = 1030;
|
|
_pivotPopup = series_place_sprite("407 PIVOT POPUP",
|
|
0, 0, 0, 100, 0x200);
|
|
|
|
if (_leverKeyState == 1113)
|
|
_tabletopPopupWithItems3 = series_place_sprite(
|
|
"407 TABLE PIVOT WITH LEVER", 0, 0, 0, 100, 0x200);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
player_set_commands_allowed(true);
|
|
}
|
|
}
|
|
|
|
void Room407::tabletopPopup() {
|
|
if (_G(kernel).trigger == -1) {
|
|
_tabletopState = 1030;
|
|
_tabletopPopup = series_place_sprite("407 TABLETOP POPUP",
|
|
0, 0, 0, 100, 0x200);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
if (_tubeState == 1117)
|
|
_tabletopPopupWithItems1 = series_place_sprite(
|
|
"407 TABLETOP POPUP WITH ITEMS", 0, 0, 0, 100, 0);
|
|
|
|
if (_airValveState == 1110)
|
|
_tabletopPopupWithItems2 = series_place_sprite(
|
|
"407 TABLETOP POPUP WITH ITEMS",
|
|
(_valveState2 == 1010) ? 1 : 2, 0, 0, 100, 0x100);
|
|
|
|
if (_leverKeyState == 1113)
|
|
_tabletopPopupWithItems3 = series_place_sprite(
|
|
"407 TABLETOP POPUP WITH ITEMS", 0, 0, 0, 100, 0x100);
|
|
|
|
player_set_commands_allowed(true);
|
|
}
|
|
}
|
|
|
|
bool Room407::lookGlassJar() {
|
|
if (_xyzzy7 == 1112) {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
glassJarPopup();
|
|
|
|
if (!inv_object_is_here("EMERALD/CORK")) {
|
|
digi_play("407r99a", 1);
|
|
} else if (!_frotz6 && !_frotz7) {
|
|
_frotz7 = 1;
|
|
digi_play("407r15", 1);
|
|
} else {
|
|
_frotz7 = 1;
|
|
digi_play("407r15", 1, 255, _frotz6 ? 2 : -1);
|
|
}
|
|
return true;
|
|
case 1:
|
|
digi_play("407r16", 1);
|
|
return true;
|
|
case 2:
|
|
digi_play("407r16a", 1);
|
|
return true;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void Room407::glassJarPopup() {
|
|
if (_G(kernel).trigger == -1) {
|
|
_fullGlassState = 1030;
|
|
_glassJarPopup = series_place_sprite("407 FULL GLASS POPUP",
|
|
0, 0, 0, 100, 0x200);
|
|
|
|
if (_periodicTableState == 1116)
|
|
_glassTopPopupWithItems2 = series_place_sprite(
|
|
"407 FULL GLASS POPUP WITH ITEMS", 0, 0, 0, 100, 0x100);
|
|
|
|
if (_items2State == 1116)
|
|
_glassBottomWithItems1 = series_place_sprite(
|
|
"407 FULL GLASS POPUP WITH ITEMS", 1, 0, 0, 100, 0x100);
|
|
|
|
if (_stopperState == 1116)
|
|
_glassBottomWithItems2 = series_place_sprite(
|
|
"407 FULL GLASS POPUP WITH ITEMS", 4, 0, 0, 100, 0x100);
|
|
|
|
if (_val6 == 1010)
|
|
_glassTopPopupWithItems1 = series_place_sprite(
|
|
"407 FULL GLASS POPUP WITH ITEMS", 6, 0, 0, 100, 0x100);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
player_set_commands_allowed(true);
|
|
}
|
|
}
|
|
|
|
bool Room407::lookEmeraldCork() {
|
|
if (_xyzzy7 == 1112) {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
glassBottomPopup();
|
|
|
|
if (_frotz6) {
|
|
digi_play("407r17", 1);
|
|
} else {
|
|
_frotz6 = 1;
|
|
digi_play("407r17", 1, 255, 1);
|
|
}
|
|
return true;
|
|
|
|
case 1:
|
|
digi_play("407r17a", 1);
|
|
return true;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void Room407::periodicTablePopup() {
|
|
if (_G(kernel).trigger == -1) {
|
|
_val15 = 1030;
|
|
_glassTopPopupWithItems2 = series_place_sprite(
|
|
"Large periodic table", 0, 0, 0, 100, 0);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
player_set_commands_allowed(true);
|
|
}
|
|
}
|
|
|
|
bool Room407::lookLeverKey() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (_lookedAtLever) {
|
|
digi_play("407r26a", 1);
|
|
} else {
|
|
digi_play("407r26", 1, 255, 2);
|
|
_lookedAtLever = 1;
|
|
}
|
|
|
|
return true;
|
|
|
|
case 2:
|
|
digi_play("407r26a", 1);
|
|
return true;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void Room407::gardenHoseSurgicalTube() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
ws_walk(_G(my_walker), 170, 335, nullptr, 0, 11, true);
|
|
break;
|
|
case 0:
|
|
if (_valveState1 == 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);
|
|
_hoseState = 1100;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::gardenHoseSurgicalTube2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (_valveState1 == 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 (_hoseState != 1061) {
|
|
inv_move_object("GARDEN HOSE", 407);
|
|
} else {
|
|
_faucetPipe = 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 (_hoseState == 1061)
|
|
_faucetPipeState = 1130;
|
|
|
|
_hoseState = 1130;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::surgicalTubeFaucetPipe() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
case 0:
|
|
if (_valveState1 == 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 (_tubeState == 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);
|
|
_hoseState = 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);
|
|
_tubeState = 1100;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 777:
|
|
ws_walk(_G(my_walker), 170, 335, nullptr, 0, 11);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::surgicalTubeStem() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
if (_tubeState != 1111) {
|
|
inv_move_object("SURGICAL TUBE", 407);
|
|
} else if (_hoseState == 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);
|
|
_hoseState = 1130;
|
|
} else if (_hoseState == 1062) {
|
|
_drawerPopupHose = series_place_sprite(
|
|
"407 TUBE AND HOSE INTO SINK", 0, 0, 0, 100, 0xe00);
|
|
hotspot_set_active("GARDEN HOSE ", true);
|
|
_faucetPipe = 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);
|
|
_faucetPipeState = 1130;
|
|
_hoseState = 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::reachLeverKey() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
case 0:
|
|
player_set_commands_allowed(false);
|
|
_ripHiHand2 = series_load("rip trek hi reach 2hnd");
|
|
setGlobals1(_ripHiHand2, 1, 13, 13, 13, 0, 13, 1, 1, 1);
|
|
sendWSMessage_110000(1);
|
|
break;
|
|
|
|
case 1:
|
|
inv_move_object("GLASS JAR", 407);
|
|
hotspot_set_active("GLASS JAR ", true);
|
|
_bottle = series_place_sprite("407BOTLR", 0, 0, -53, 100, 0xe00);
|
|
|
|
switch (_xyzzy7) {
|
|
case 1050:
|
|
_stopperState = 1116;
|
|
hotspot_set_active("JAR/RUBBER PLUG ", true);
|
|
inv_move_object("JAR/RUBBER PLUG", 407);
|
|
_stopperInDrawer = series_place_sprite(
|
|
"407BITSR", 0, 0, -53, 100, 0xb00);
|
|
break;
|
|
|
|
case 1051:
|
|
_corkState = 1116;
|
|
hotspot_set_active("JAR/CORK ", true);
|
|
inv_move_object("JAR/CORK", 407);
|
|
_bits = series_place_sprite("407BITSR", 3, 0, -53, 100, 0xb00);
|
|
break;
|
|
|
|
case 1052:
|
|
_pumpState = 1116;
|
|
hotspot_set_active("JAR/GRIPS ", true);
|
|
inv_move_object("JAR/GRIPS", 407);
|
|
_bits = series_place_sprite("407BITSR", 2, 0, -53, 100, 0xb00);
|
|
break;
|
|
|
|
case 1053:
|
|
_corkState = 1116;
|
|
_stopperState = 1116;
|
|
hotspot_set_active("JAR/RUBBER PLUG ", true);
|
|
hotspot_set_active("JAR/CORK ", true);
|
|
inv_move_object("JAR/CORK/PLUG", 407);
|
|
_stopperInDrawer = series_place_sprite("407BITSR", 3, 0, -53, 100, 0xb00);
|
|
_bits = series_place_sprite("407BITSR", 3, 0, -53, 100, 0xb00);
|
|
break;
|
|
|
|
case 1054:
|
|
_pumpState = 1116;
|
|
_stopperState = 1116;
|
|
hotspot_set_active("JAR/RUBBER PLUG ", true);
|
|
hotspot_set_active("JAR/GRIPS ", true);
|
|
inv_move_object("JAR/PLUG/GRIPS", 407);
|
|
_stopperInDrawer = series_place_sprite("407BITSR", 0, 0, -53, 100, 0xb00);
|
|
_bits = series_place_sprite("407BITSR", 2, 0, -53, 100, 0xb00);
|
|
break;
|
|
|
|
case 1055:
|
|
_corkState = 1116;
|
|
_pumpState = 1116;
|
|
hotspot_set_active("JAR/CORK ", true);
|
|
hotspot_set_active("JAR/GRIPS ", true);
|
|
inv_move_object("JAR/CORK/GRIPS", 407);
|
|
_bits = series_place_sprite("407BITSR", 3, 0, -53, 100, 0xe00);
|
|
_grips = series_place_sprite("407BITSR", 2, 0, -53, 100, 0xb00);
|
|
break;
|
|
|
|
case 1056:
|
|
_corkState = 1116;
|
|
_pumpState = 1116;
|
|
_stopperState = 1116;
|
|
hotspot_set_active("JAR/RUBBER PLUG ", true);
|
|
hotspot_set_active("JAR/CORK ", true);
|
|
hotspot_set_active("JAR/GRIPS ", true);
|
|
inv_move_object("JAR/PLUG/CORK/GRIPS", 407);
|
|
_stopperInDrawer = series_place_sprite("407BITSR", 0, 0, -53, 100, 0xb00);
|
|
_bits = series_place_sprite("407BITSR", 2, 0, -53, 100, 0xb00);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripHiHand2);
|
|
_xyzzy7 = 1114;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 777:
|
|
player_set_commands_allowed(false);
|
|
ws_walk(_G(my_walker), 463, 323, nullptr, 0, 1);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::faucetPipeGardenHose() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (_valveState1 == 1010)
|
|
digi_play("407r99e", 1);
|
|
else
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
_faucetPipe = 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);
|
|
_faucetPipeState = 1130;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::faucetPipeGlassJar() {
|
|
switch (_G(kernel).trigger) {
|
|
case 1:
|
|
if (_faucetPipeState != 1111) {
|
|
inv_move_object("FAUCET PIPE", 407);
|
|
} else if (_hoseState == 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);
|
|
_hoseState = 1116;
|
|
} else if (_hoseState == 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);
|
|
_tubeState = 1116;
|
|
_hoseState = 1116;
|
|
}
|
|
|
|
_faucetPipe = 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);
|
|
_faucetPipeState = 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:
|
|
player_set_commands_allowed(false);
|
|
ws_walk(_G(my_walker), 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 (_hoseState == 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 (_hoseState == 1060)
|
|
_tubeState = 1116;
|
|
|
|
_hoseState = 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);
|
|
sendWSMessage_110000(1);
|
|
break;
|
|
|
|
case 777:
|
|
ws_walk(_G(my_walker), 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);
|
|
_tubeState = 1116;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::emeraldIronSupport() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_ripHiHand2 = series_load("rip trek hi reach 2hnd");
|
|
setGlobals1(_ripHiHand2, 1, 10, 10, 10, 0, 10, 1, 1, 1);
|
|
sendWSMessage_110000(1);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_bottle);
|
|
_gears = series_place_sprite("407GEARS", 0, 0, -53, 100, 0xf00);
|
|
_bottle = series_place_sprite("407BOTL2", 0, 0, -53, 100, 0xe00);
|
|
digi_play("407_s29", 2);
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripHiHand2);
|
|
_val6 = 1010;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::placeLeverKey() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_placeLeverKey = series_load("407 PLACE LEVER KEY");
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP levers ceiling");
|
|
sendWSMessage_10000(1, _ripley, _placeLeverKey, 1, 42, 2,
|
|
_placeLeverKey, 42, 42, 0);
|
|
break;
|
|
|
|
case 2:
|
|
digi_play("407_s07a", 1);
|
|
sendWSMessage_10000(1, _ripley, _placeLeverKey, 42, 70, 3,
|
|
_placeLeverKey, 70, 70, 0);
|
|
break;
|
|
|
|
case 3:
|
|
terminateMachineAndNull(_ripley);
|
|
ws_unhide_walker();
|
|
_pump = series_place_sprite("407PMROD", 0, 0, -53, 100, 0xf00);
|
|
_lever = series_place_sprite("407LEVRW", 1, 0, -53, 100, 0xf00);
|
|
hotspot_set_active("LEVER KEY ", true);
|
|
hotspot_set_active("PUMP ROD ", true);
|
|
inv_move_object("LEVER KEY/PUMP ROD", 407);
|
|
_leverKeyState = 1114;
|
|
_rodState = 1114;
|
|
_xyzzy10 = 1040;
|
|
series_unload(_placeLeverKey);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::rubberPlugGlassJar() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
_stopperInDrawer = series_place_sprite("407bbits", 2, 0, -53, 100, 0xe00);
|
|
inv_move_object("RUBBER PLUG", 407);
|
|
hotspot_set_active("JAR/RUBBER PLUG", true);
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
_stopperState = 1116;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::rubberPlugGlassJar2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
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:
|
|
_stopperInDrawer = series_place_sprite("407BITSR", 0, 0, -53, 100, 0xe00);
|
|
inv_move_object("RUBBER PLUG", 407);
|
|
hotspot_set_active("JAR/RUBBER PLUG ", true);
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripHiHand1);
|
|
_stopperState = 1116;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::corkGlassJar1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
_stopperInDrawer = series_place_sprite("407bbits", 0, 0, -53, 100, 0xe00);
|
|
inv_move_object("CORK", 407);
|
|
hotspot_set_active("JAR/CORK", true);
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
_stopperState = 1116;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::corkGlassJar2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
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:
|
|
_bits = series_place_sprite("407BITSR", 3, 0, -53, 100, 0xe00);
|
|
inv_move_object("CORK", 407);
|
|
hotspot_set_active("JAR/CORK ", true);
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripHiHand1);
|
|
_corkState = 1116;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::pumpGripsGlassJar() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_ripHiHand1 = series_load("rip trek hi 1 hand");
|
|
setGlobals1(_ripHiHand1, 1, 7, 7, 7, 0, 7, 1, 1, 1);
|
|
sendWSMessage_110000(1);
|
|
break;
|
|
|
|
case 1:
|
|
_grips = series_place_sprite("407BITSR", 2, 0, -53, 100, 0xe00);
|
|
inv_move_object("PUMP GRIPS", 407);
|
|
hotspot_set_active("JAR/GRIPS ", true);
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripHiHand1);
|
|
_pumpState = 1116;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::periodicTableGlassJar() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (inv_object_is_here("EMERALD/CORK")) {
|
|
player_set_commands_allowed(false);
|
|
_rollStuff = series_load("407 ROLL STUFF");
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP folds table into jar");
|
|
sendWSMessage_10000(1, _ripley, _rollStuff, 1, 90, 2,
|
|
_rollStuff, 90, 90, 0);
|
|
kernel_timing_trigger(130, 1);
|
|
} else {
|
|
digi_play("com118", 1);
|
|
}
|
|
break;
|
|
|
|
case 1:
|
|
digi_play("407_s14", 2);
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_10000(1, _ripley, _rollStuff, 91, 109, 3,
|
|
_rollStuff, 109, 109, 0);
|
|
break;
|
|
|
|
case 3:
|
|
terminateMachineAndNull(_ripley);
|
|
ws_unhide_walker();
|
|
_chart = series_place_sprite("407bbits", 1, 0, -53, 100, 0xe00);
|
|
series_unload(_rollStuff);
|
|
inv_move_object("PERIODIC TABLE", 407);
|
|
hotspot_set_active("PERIODIC TABLE/JAR", true);
|
|
_periodicTableState = 1116;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::surgicalTubeNozzles() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
_tubeInDrawer = series_place_sprite("407surgn", 0, 0, -53, 100, 0xa00);
|
|
inv_move_object("SURGICAL TUBE", 407);
|
|
hotspot_set_active("NOZZLES/TUBE", true);
|
|
hotspot_set_active("NOZZLES", false);
|
|
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);
|
|
digi_play("407r75", 1);
|
|
_tubeState = 1117;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::leverKeyTablePivot() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
_lever = series_place_sprite("407LEVRW", 2, 0, -53, 100, 0xb00);
|
|
inv_move_object("LEVER KEY", 407);
|
|
hotspot_set_active("LEVER KEY ", true);
|
|
digi_play("407_s07a", 2);
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
_leverKeyState = 1113;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::pumpRodBracket() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_407rp99 = series_load("407RP99");
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP levers ceiling");
|
|
sendWSMessage_10000(1, _ripley, _407rp99, 1, 35, 2,
|
|
_407rp99, 35, 35, 0);
|
|
break;
|
|
|
|
case 2:
|
|
digi_play("407_s07a", 1);
|
|
sendWSMessage_10000(1, _ripley, _407rp99, 36, 61, 3,
|
|
_407rp99, 61, 61, 0);
|
|
break;
|
|
|
|
case 3:
|
|
terminateMachineAndNull(_ripley);
|
|
terminateMachineAndNull(_safariShadow);
|
|
ws_unhide_walker();
|
|
_pump = series_place_sprite("407PMROD", 0, 0, -53, 100, 0xf00);
|
|
|
|
hotspot_set_active("PUMP ROD ", true);
|
|
inv_move_object("PUMP ROD", 407);
|
|
_rodState = 1114;
|
|
|
|
series_unload(_407rp99);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::leverKey1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_407rp98 = series_load("407RP98");
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP levers ceiling");
|
|
sendWSMessage_10000(1, _ripley, _407rp98, 1, 53, 2,
|
|
_407rp98, 53, 53, 0);
|
|
break;
|
|
|
|
case 2:
|
|
digi_play("407_s07a", 1);
|
|
sendWSMessage_10000(1, _ripley, _407rp98, 54, 81, 3,
|
|
_407rp98, 81, 81, 0);
|
|
break;
|
|
|
|
case 3:
|
|
digi_play("407_s07a", 1);
|
|
sendWSMessage_10000(1, _ripley, _407rp98, 81, 101, 4,
|
|
_407rp98, 101, 101, 0);
|
|
break;
|
|
|
|
case 4:
|
|
terminateMachineAndNull(_ripley);
|
|
terminateMachineAndNull(_safariShadow);
|
|
ws_unhide_walker();
|
|
_pump = series_place_sprite("407PMROD", 0, 0, -53, 100, 0xf00);
|
|
_lever = series_place_sprite("407LEVRW", 1, 0, -53, 100, 0xf00);
|
|
hotspot_set_active("LEVER KEY ", true);
|
|
inv_move_object("LEVER KEY", 407);
|
|
_leverKeyState = 1114;
|
|
|
|
series_unload(_407rp98);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::leverKey2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_placeLeverKey = series_load("407 PLACE LEVER KEY");
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP levers ceiling");
|
|
sendWSMessage_10000(1, _ripley, _placeLeverKey, 1, 30, 1,
|
|
_placeLeverKey, 30, 30, 0);
|
|
break;
|
|
|
|
case 1:
|
|
digi_play("com105", 1, 255, 2, 997);
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_10000(1, _ripley, _placeLeverKey, 32, 1, 3,
|
|
_placeLeverKey, 1, 1, 0);
|
|
break;
|
|
|
|
case 3:
|
|
terminateMachineAndNull(_ripley);
|
|
terminateMachineAndNull(_safariShadow);
|
|
ws_unhide_walker();
|
|
series_unload(_placeLeverKey);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::faucetHandleAirValve() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(4);
|
|
break;
|
|
|
|
case 1:
|
|
digi_play("407_s13", 2);
|
|
_airValve = series_place_sprite("407 AIR VALVE HANDLE",
|
|
(_valveState2 == 1011) ? 1 : 0, 0, 0, 100, 0xe00);
|
|
|
|
inv_move_object("FAUCET HANDLE", 407);
|
|
hotspot_set_active("AIR VALVE/HANDLE", true);
|
|
hotspot_set_active("AIR VALVE", false);
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
digi_play("407r73", 1);
|
|
_airValveState = 1110;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::faucetPipeFaucetHandle1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
digi_play("407_s04", 2);
|
|
_airValve = series_place_sprite("407FAUC",
|
|
(_valveState1 == 1011) ? 1 : 0, 0, 0, 100, 0xe00);
|
|
|
|
inv_move_object("FAUCET HANDLE", 407);
|
|
hotspot_set_active("FAUCET HANDLE", true);
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
_airValveState = 1100;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::faucetPipeFaucetHandle2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
_faucetPipe = series_place_sprite("407FAUC", 2, 0, 0, 100, 0xe00);
|
|
inv_move_object("FAUCET PIPE", 407);
|
|
hotspot_set_active("FAUCET PIPE", true);
|
|
|
|
if (_tubeState == 1061) {
|
|
_tubeInDrawer = series_place_sprite("407 TUBING BY ITSELF",
|
|
1, 0, 0, 100, 0xb00);
|
|
hotspot_set_active("SURGICAL TUBE ", true);
|
|
_tubeState = 1100;
|
|
inv_move_object("FAUCET PIPE/TUBE", 407);
|
|
}
|
|
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
_faucetPipeState = 1100;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::pumpRodPump() {
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP pumps");
|
|
sendWSMessage_10000(1, _ripley, _pump407, 1, 40, 1,
|
|
_pump407, 40, 40, 0);
|
|
kernel_timing_trigger(150, 69);
|
|
break;
|
|
|
|
case 1:
|
|
_pump = series_place_sprite("407pump", 0, 0, -53, 100, 0xf00);
|
|
inv_move_object("PUMP ROD", 407);
|
|
hotspot_set_active("PUMP ROD", true);
|
|
sendWSMessage_10000(1, _ripley, _pump407, 40, 1, 4,
|
|
_pump407, 1, 1, 0);
|
|
break;
|
|
|
|
case 4:
|
|
terminateMachineAndNull(_ripley);
|
|
terminateMachineAndNull(_safariShadow);
|
|
ws_unhide_walker();
|
|
series_unload(_pump407);
|
|
_rodState = 1115;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 69:
|
|
digi_play("407_s07", 2);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::pumpGripsPump() {
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP pumps");
|
|
sendWSMessage_10000(1, _ripley, _pump407, 1, 40, 1,
|
|
_pump407, 40, 40, 0);
|
|
kernel_timing_trigger(180, 69);
|
|
break;
|
|
|
|
case 1:
|
|
_grips = series_place_sprite("407pump", 1, 0, -53, 100, 0xe00);
|
|
inv_move_object("PUMP GRIPS", 407);
|
|
hotspot_set_active("PUMP GRIPS ", true);
|
|
sendWSMessage_10000(1, _ripley, _pump407, 40, 1, 4,
|
|
_pump407, 1, 1, 0);
|
|
break;
|
|
|
|
case 4:
|
|
terminateMachineAndNull(_ripley);
|
|
terminateMachineAndNull(_safariShadow);
|
|
ws_unhide_walker();
|
|
series_unload(_pump407);
|
|
_pumpState = 1115;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 69:
|
|
digi_play("407_s07", 2);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::useButton1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
sendWSMessage_10000(1, _lockButton1,
|
|
_407pu08a, _buttonFrame1 * 2 + 2,
|
|
_buttonFrame1 * 2 + 2, 1,
|
|
_407pu08a, _buttonFrame1 * 2 + 2,
|
|
_buttonFrame1 * 2 + 2, 0);
|
|
digi_play("407_s26", 2);
|
|
break;
|
|
|
|
case 1:
|
|
if (++_buttonFrame1 == 10)
|
|
_buttonFrame1 = 0;
|
|
|
|
sendWSMessage_10000(1, _lockButton1,
|
|
_407pu08a, _buttonFrame1 * 2 + 1,
|
|
_buttonFrame1 * 2 + 1, 2,
|
|
_407pu08a, _buttonFrame1 * 2 + 1,
|
|
_buttonFrame1 * 2 + 1, 0);
|
|
break;
|
|
|
|
case 2:
|
|
if (_buttonFrame1 == 3)
|
|
checkCode();
|
|
|
|
if (_codeCorrect) {
|
|
kernel_timing_trigger(1, 360, KT_DAEMON, KT_PARSE);
|
|
} else {
|
|
player_set_commands_allowed(true);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::useButton2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
sendWSMessage_10000(1, _lockButton2,
|
|
_407pu08b, _buttonFrame2 * 2 + 2,
|
|
_buttonFrame2 * 2 + 2, 1,
|
|
_407pu08b, _buttonFrame2 * 2 + 2,
|
|
_buttonFrame2 * 2 + 2, 0);
|
|
digi_play("407_s26", 2);
|
|
break;
|
|
|
|
case 1:
|
|
if (++_buttonFrame2 == 10)
|
|
_buttonFrame2 = 0;
|
|
|
|
sendWSMessage_10000(1, _lockButton2,
|
|
_407pu08b, _buttonFrame2 * 2 + 1,
|
|
_buttonFrame2 * 2 + 1, 2,
|
|
_407pu08b, _buttonFrame2 * 2 + 1,
|
|
_buttonFrame2 * 2 + 1, 0);
|
|
break;
|
|
|
|
case 2:
|
|
if (_buttonFrame2 == 4)
|
|
checkCode();
|
|
|
|
if (_codeCorrect) {
|
|
kernel_timing_trigger(1, 360, KT_DAEMON, KT_PARSE);
|
|
} else {
|
|
player_set_commands_allowed(true);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::useButton3() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
sendWSMessage_10000(1, _lockButton3,
|
|
_407pu08c, _buttonFrame3 * 2 + 2,
|
|
_buttonFrame3 * 2 + 2, 1,
|
|
_407pu08c, _buttonFrame3 * 2 + 2,
|
|
_buttonFrame3 * 2 + 2, 0);
|
|
digi_play("407_s26", 2);
|
|
break;
|
|
|
|
case 1:
|
|
if (++_buttonFrame3 == 10)
|
|
_buttonFrame3 = 0;
|
|
|
|
sendWSMessage_10000(1, _lockButton3,
|
|
_407pu08c, _buttonFrame3 * 2 + 1,
|
|
_buttonFrame3 * 2 + 1, 2,
|
|
_407pu08c, _buttonFrame3 * 2 + 1,
|
|
_buttonFrame3 * 2 + 1, 0);
|
|
break;
|
|
|
|
case 2:
|
|
if (_buttonFrame3 == 4)
|
|
checkCode();
|
|
|
|
if (_codeCorrect) {
|
|
kernel_timing_trigger(1, 360, KT_DAEMON, KT_PARSE);
|
|
} else {
|
|
player_set_commands_allowed(true);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::useButton4() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
sendWSMessage_10000(1, _lockButton4,
|
|
_407pu08d, _buttonFrame4 * 2 + 2,
|
|
_buttonFrame4 * 2 + 2, 1,
|
|
_407pu08d, _buttonFrame4 * 2 + 2,
|
|
_buttonFrame4 * 2 + 2, 0);
|
|
digi_play("407_s26", 2);
|
|
break;
|
|
|
|
case 1:
|
|
if (++_buttonFrame4 == 10)
|
|
_buttonFrame4 = 0;
|
|
|
|
sendWSMessage_10000(1, _lockButton4,
|
|
_407pu08d, _buttonFrame4 * 2 + 1,
|
|
_buttonFrame4 * 2 + 1, 2,
|
|
_407pu08d, _buttonFrame4 * 2 + 1,
|
|
_buttonFrame4 * 2 + 1, 0);
|
|
break;
|
|
|
|
case 2:
|
|
if (_buttonFrame4 == 1)
|
|
checkCode();
|
|
|
|
if (_codeCorrect) {
|
|
kernel_timing_trigger(1, 360, KT_DAEMON, KT_PARSE);
|
|
} else {
|
|
player_set_commands_allowed(true);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::checkCode() {
|
|
if (_buttonFrame1 == 3 && _buttonFrame2 == 4 &&
|
|
_buttonFrame3 == 1 && _buttonFrame4 == 1)
|
|
_codeCorrect = true;
|
|
}
|
|
|
|
void Room407::useButtons() {
|
|
if (_G(kernel).trigger == -1) {
|
|
player_set_commands_allowed(false);
|
|
_comboLockState = 1030;
|
|
_comboLockPopup = series_place_sprite("407 COMBINATION LOCK POPUP",
|
|
0, 0, 0, 100, 0x200);
|
|
|
|
disableHotspots();
|
|
hotspot_set_active(" ", true);
|
|
|
|
_407pu08a = series_load("407 COMBINATION LOCK NUMERALS");
|
|
_407pu08b = series_load("407PU08B");
|
|
_407pu08c = series_load("407PU08C");
|
|
_407pu08d = series_load("407PU08D");
|
|
|
|
_lockButton1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false,
|
|
triggerMachineByHashCallback, "LOCK button 1");
|
|
_lockButton2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false,
|
|
triggerMachineByHashCallback, "LOCK button 2");
|
|
_lockButton3 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false,
|
|
triggerMachineByHashCallback, "LOCK button 3");
|
|
_lockButton4 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false,
|
|
triggerMachineByHashCallback, "LOCK button 4");
|
|
|
|
const int frame1 = _buttonFrame1 * 2 + 1;
|
|
const int frame2 = _buttonFrame2 * 2 + 1;
|
|
const int frame3 = _buttonFrame3 * 2 + 1;
|
|
const int frame4 = _buttonFrame4 * 2 + 1;
|
|
sendWSMessage_10000(1, _lockButton1, _407pu08a, frame1, frame1, -1,
|
|
_407pu08a, frame1, frame1, 0);
|
|
sendWSMessage_10000(1, _lockButton2, _407pu08b, frame2, frame2, -1,
|
|
_407pu08b, frame2, frame2, 0);
|
|
sendWSMessage_10000(1, _lockButton3, _407pu08c, frame3, frame3, -1,
|
|
_407pu08c, frame3, frame3, 0);
|
|
sendWSMessage_10000(1, _lockButton4, _407pu08d, frame4, frame4, -1,
|
|
_407pu08d, frame4, frame4, 0);
|
|
|
|
hotspot_set_active("BUTTON", true);
|
|
hotspot_set_active("BUTTON ", true);
|
|
hotspot_set_active("BUTTON ", true);
|
|
hotspot_set_active("BUTTON ", true);
|
|
player_set_commands_allowed(true);
|
|
}
|
|
}
|
|
|
|
void Room407::useLeverKey() {
|
|
switch (_G(kernel).trigger) {
|
|
case 1:
|
|
_hangRip = series_load("407 HANG RIP");
|
|
terminateMachineAndNull(_niche);
|
|
terminateMachineAndNull(_cpist);
|
|
terminateMachineAndNull(_lever);
|
|
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP hangs from lever");
|
|
sendWSMessage_10000(1, _ripley, _hangRip, 1, 25, 2,
|
|
_hangRip, 25, 25, 0);
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_10000(1, _ripley, _hangRip, 25, 63, 3,
|
|
_hangRip, 63, 63, 0);
|
|
digi_play("407_s23", 2);
|
|
break;
|
|
|
|
case 3:
|
|
terminateMachineAndNull(_ripley);
|
|
terminateMachineAndNull(_safariShadow);
|
|
ws_unhide_walker();
|
|
|
|
_niche = series_place_sprite("407NICH", 0, 0, -53, 100, 0xf00);
|
|
_cpist = series_place_sprite("407CPIST", 0, 0, -53, 100, 0xf00);
|
|
_lever = series_place_sprite("407LEVRW", 1, 0, -53, 100, 0xf00);
|
|
series_unload(_hangRip);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 777:
|
|
player_set_commands_allowed(false);
|
|
ws_walk(_G(my_walker), 466, 330, nullptr, 1, 1);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::useFaucet() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
digi_play("407_s04", 2);
|
|
terminateMachineAndNull(_airValve);
|
|
|
|
if (_valveState1 != 1010) {
|
|
_valveState1 = 1010;
|
|
_airValve = series_place_sprite("407FAUC", 0, 0, 0, 100, 0xe00);
|
|
} else {
|
|
_valveState1 = 1011;
|
|
_airValve = series_place_sprite("407FAUC", 1, 0, 0, 100, 0xe00);
|
|
|
|
if (_faucetPipeState == 1100) {
|
|
kernel_timing_trigger(1, 430, KT_DAEMON, KT_PARSE);
|
|
} else if (_tubeState == 1130) {
|
|
kernel_timing_trigger(1, 440, KT_DAEMON, KT_PARSE);
|
|
}
|
|
}
|
|
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
|
|
if (_faucetHookedToJar && _valveState1 == 1010)
|
|
kernel_timing_trigger(1, 320, KT_DAEMON, KT_PARSE);
|
|
else if (_valveState1 == 1010 && _faucetPipeState == 1100)
|
|
kernel_timing_trigger(1, 410, KT_DAEMON, KT_PARSE);
|
|
else if (_tubeState == 1130)
|
|
kernel_timing_trigger(1, 420, KT_DAEMON, KT_PARSE);
|
|
else
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::useValveHandle() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(4);
|
|
break;
|
|
|
|
case 1:
|
|
digi_play("407_s13", 2);
|
|
terminateMachineAndNull(_airValve);
|
|
|
|
if (_valveState2 != 1011) {
|
|
_valveState2 = 1011;
|
|
_airValve = series_place_sprite("407 AIR VALVE HANDLE", 1, 0, 0, 100, 0xe00);
|
|
digi_play("407r74a", 1);
|
|
} else {
|
|
_valveState2 = 1010;
|
|
_airValve = series_place_sprite("407 AIR VALVE HANDLE", 0, 0, 0, 100, 0xe00);
|
|
|
|
if (_val7 == 1021) {
|
|
_val7 = 1020;
|
|
|
|
if (_tubeState == 1117) {
|
|
_frotz3 = 1;
|
|
kernel_timing_trigger(1, 20, KT_DAEMON, KT_PARSE);
|
|
} else {
|
|
digi_play("407_s09", 2);
|
|
digi_play("407r76", 1);
|
|
}
|
|
} else {
|
|
digi_play("407r74", 1);
|
|
}
|
|
}
|
|
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
|
|
if (_frotz3)
|
|
_frotz3 = 0;
|
|
else
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
bool Room407::usePump() {
|
|
if (_val7 != 1020) {
|
|
digi_play("407r70", 1);
|
|
} else if (_rodState == 1115 && _pumpState == 1115) {
|
|
if (inv_object_is_here("EMERALD/CORK") || _xyzzy7 != 1112 ||
|
|
_val6 != 1010) {
|
|
usePump2();
|
|
} else {
|
|
digi_play("com090a", 1);
|
|
}
|
|
} else if (_rodState == 1115) {
|
|
digi_play("407r72", 1);
|
|
} else {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void Room407::usePump2() {
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP pumps");
|
|
sendWSMessage_10000(1, _ripley, _pump407, 81, 62, 1,
|
|
_pump407, 62, 62, 0);
|
|
_val11 = 1;
|
|
break;
|
|
|
|
case 1:
|
|
digi_play("407_s11", 2);
|
|
sendWSMessage_10000(1, _ripley, _pump407, 62, 46, 2,
|
|
_pump407, 46, 46, 0);
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_10000(1, _ripley, _pump407, 46, 66, 3,
|
|
_pump407, 66, 66, 0);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_10000(1, _ripley, _pump407, 67, 81, 4,
|
|
_pump407, 81, 81, 0);
|
|
break;
|
|
|
|
case 4:
|
|
_grips = series_place_sprite("407pump", 1, 0, -53, 100, 0xf00);
|
|
terminateMachineAndNull(_ripley);
|
|
terminateMachineAndNull(_safariShadow);
|
|
ws_unhide_walker();
|
|
series_unload(_pump407);
|
|
|
|
if (_valveState2 == 1011) {
|
|
_val7 = 1021;
|
|
digi_play("407r69", 1);
|
|
} else {
|
|
digi_play("407r71", 1);
|
|
}
|
|
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeLetter() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (inv_object_is_here("MENENDEZ'S LETTER")) {
|
|
player_set_commands_allowed(false);
|
|
_ripMedHand1 = series_load("RIP TREK MED REACH HAND POS1");
|
|
setGlobals1(_ripMedHand1, 1, 10, 10, 10, 0, 10, 1, 1, 1);
|
|
sendWSMessage_110000(11);
|
|
}
|
|
break;
|
|
|
|
case 11:
|
|
terminateMachineAndNull(_letter);
|
|
hotspot_set_active("LETTER", false);
|
|
hotspot_set_active("BUTTONS", true);
|
|
digi_play("407r39", 1, 255, 13);
|
|
break;
|
|
|
|
case 13:
|
|
kernel_examine_inventory_object("PING MENENDEZ'S LETTER",
|
|
_G(master_palette), 5, 1, 270, 150, 14, "407r41", -1);
|
|
_G(flags)[V017] = 1;
|
|
_G(flags)[V280] = 1;
|
|
break;
|
|
|
|
case 14:
|
|
digi_stop(1);
|
|
inv_give_to_player("MENENDEZ'S LETTER");
|
|
_frotz4 = 1;
|
|
_G(flags)[V370] = 1;
|
|
sendWSMessage_120000(15);
|
|
break;
|
|
|
|
case 15:
|
|
sendWSMessage_150000(8);
|
|
break;
|
|
|
|
case 8:
|
|
series_unload(_ripMedHand1);
|
|
sketchInJournal(nullptr);
|
|
break;
|
|
|
|
default:
|
|
sketchInJournal(nullptr);
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
void Room407::takeFaucetPipe1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_faucetPipe);
|
|
inv_give_to_player("FAUCET PIPE");
|
|
hotspot_set_active("FAUCET PIPE ", false);
|
|
kernel_examine_inventory_object("PING FAUCET PIPE",
|
|
_G(master_palette), 5, 1, 100, 200, 3, nullptr, -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripMedHand1);
|
|
_faucetPipeState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeFaucetPipe2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
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 1:
|
|
terminateMachineAndNull(_faucetPipe);
|
|
hotspot_set_active("FAUCET PIPE ", false);
|
|
inv_give_to_player("FAUCET PIPE");
|
|
|
|
if (_tubeState == 1116) {
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
_tubeState = 1000;
|
|
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
_hoseState = 1000;
|
|
|
|
kernel_examine_inventory_object("PING FAUCET PIPE/HOSE/TUBE",
|
|
_G(master_palette), 5, 1, 400, 150, 3, nullptr, -1);
|
|
} else if (_hoseState == 1116) {
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
_hoseState = 1000;
|
|
|
|
kernel_examine_inventory_object("PING FAUCET PIPE/HOSE",
|
|
_G(master_palette), 5, 1, 400, 150, 3, nullptr, -1);
|
|
} else {
|
|
kernel_examine_inventory_object("PING FAUCET PIPE",
|
|
_G(master_palette), 5, 1, 400, 150, 3, nullptr, -1);
|
|
}
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripHiHand1);
|
|
_faucetPipeState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeFaucetPipe3() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (_valveState1 == 1010)
|
|
digi_play("407r99e", 1);
|
|
else
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_faucetPipe);
|
|
inv_give_to_player("FAUCET PIPE");
|
|
hotspot_set_active("FAUCET PIPE", false);
|
|
|
|
if (_hoseState == 1100) {
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
_hoseState = 1000;
|
|
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
_tubeState = 1000;
|
|
|
|
kernel_examine_inventory_object("PING FAUCET PIPE/HOSE/TUBE",
|
|
_G(master_palette), 5, 1, 75, 200, 2, nullptr, -1);
|
|
} else if (_tubeState == 1100) {
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
_tubeState = 1000;
|
|
|
|
kernel_examine_inventory_object("PING FAUCET PIPE/TUBE",
|
|
_G(master_palette), 5, 1, 75, 200, 2, nullptr, -1);
|
|
} else {
|
|
kernel_examine_inventory_object("PING FAUCET PIPE",
|
|
_G(master_palette), 5, 1, 75, 200, 2, nullptr, -1);
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
_faucetPipeState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeSurgicalTube1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (_valveState1 == 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:
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
|
|
if (_hoseState == 1100) {
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
_hoseState = 1000;
|
|
kernel_examine_inventory_object("PING TUBE/HOSE",
|
|
_G(master_palette), 5, 1, 75, 200, 2, "407_s06", -1);
|
|
} else {
|
|
kernel_examine_inventory_object("PING SURGICAL TUBE",
|
|
_G(master_palette), 5, 1, 75, 200, 2, "407_s06", -1);
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripHiHand1);
|
|
_tubeState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeSurgicalTube2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (_valveState1 == 1010) {
|
|
digi_play("407r99e", 1);
|
|
} else {
|
|
reachHand(10);
|
|
}
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
|
|
if (_faucetPipeState == 1130) {
|
|
terminateMachineAndNull(_faucetPipe);
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
inv_give_to_player("FAUCET PIPE");
|
|
_faucetPipeState = 1000;
|
|
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
_hoseState = 1000;
|
|
|
|
kernel_examine_inventory_object("PING FAUCET PIPE/HOSE/TUBE",
|
|
_G(master_palette), 5, 1, 175, 150, 3, "407_s06", -1);
|
|
} else if (_hoseState == 1130) {
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
_hoseState = 1000;
|
|
|
|
kernel_examine_inventory_object("PING TUBE/HOSE",
|
|
_G(master_palette), 5, 1, 175, 150, 3, "407_s06", -1);
|
|
} else {
|
|
kernel_examine_inventory_object("PING SURGICAL TUBE",
|
|
_G(master_palette), 5, 1, 175, 150, 3, "407_s06", -1);
|
|
}
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripMedHand1);
|
|
_tubeState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeSurgicalTube3() {
|
|
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:
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
kernel_examine_inventory_object("PING SURGICAL TUBE",
|
|
_G(master_palette), 5, 1, 380, 250, 3, nullptr, -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripLowHand1);
|
|
_tubeState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeGardenHose1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (_valveState1 == 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:
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
kernel_examine_inventory_object("PING GARDEN HOSE",
|
|
_G(master_palette), 5, 1, 75, 200, 2, nullptr, -1);
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripHiHand1);
|
|
_hoseState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeGardenHose2() {
|
|
switch (_G(kernel).trigger) {
|
|
case 1:
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
|
|
if (_faucetPipeState == 1130) {
|
|
terminateMachineAndNull(_faucetPipe);
|
|
hotspot_set_active("FAUCET PIPE ", false);
|
|
inv_give_to_player("FAUCET PIPE");
|
|
_faucetPipeState = 1000;
|
|
kernel_examine_inventory_object("PING FAUCET PIPE/HOSE",
|
|
_G(master_palette), 5, 1, 175, 150, 3, nullptr, -1);
|
|
} else {
|
|
kernel_examine_inventory_object("PING GARDEN HOSE",
|
|
_G(master_palette), 5, 1, 175, 150, 3, nullptr, -1);
|
|
}
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripMedHand1);
|
|
_hoseState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 70:
|
|
if (_valveState1 == 1010) {
|
|
digi_play("407r99e", 1);
|
|
} else {
|
|
reachHand(10);
|
|
}
|
|
break;
|
|
|
|
case 777:
|
|
ws_walk(_G(my_walker), 170, 335, nullptr, 70, 11);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeGardenHose3() {
|
|
switch (_G(kernel).trigger) {
|
|
case 1:
|
|
terminateMachineAndNull(_drawerPopupHose);
|
|
inv_give_to_player("GARDEN HOSE");
|
|
hotspot_set_active("GARDEN HOSE ", false);
|
|
|
|
if (_tubeState == 1116) {
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
hotspot_set_active("SURGICAL TUBE ", false);
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
_tubeState = 1000;
|
|
kernel_examine_inventory_object("PING FAUCET PIPE/HOSE",
|
|
_G(master_palette), 5, 1, 400, 150, 3, nullptr, -1);
|
|
} else {
|
|
kernel_examine_inventory_object("PING GARDEN HOSE",
|
|
_G(master_palette), 5, 1, 400, 150, 3, nullptr, -1);
|
|
}
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripHiHand1);
|
|
_hoseState = 1000;
|
|
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(_G(my_walker), 436, 331, nullptr, 70, 1);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeGardenHose4() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (inv_object_is_here("GARDEN HOSE")) {
|
|
inv_give_to_player("GARDEN HOSE");
|
|
_hoseState = 1000;
|
|
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:
|
|
player_set_commands_allowed(false);
|
|
_ripHiHand2 = series_load("rip trek hi reach 2hnd");
|
|
setGlobals1(_ripHiHand2, 1, 13, 13, 13, 0, 13, 1, 1, 1);
|
|
sendWSMessage_110000(1);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_bottle);
|
|
inv_give_to_player("GLASS JAR");
|
|
hotspot_set_active("GLASS JAR ", false);
|
|
|
|
if (_stopperState == 1116) {
|
|
terminateMachineAndNull(_stopperInDrawer);
|
|
inv_give_to_player("RUBBER PLUG");
|
|
hotspot_set_active("JAR/RUBBER PLUG ", false);
|
|
_stopperState = 1000;
|
|
}
|
|
|
|
if (_pumpState == 1116) {
|
|
terminateMachineAndNull(_grips);
|
|
inv_give_to_player("PUMP GRIPS");
|
|
hotspot_set_active("JAR/GRIPS ", false);
|
|
_pumpState = 1000;
|
|
}
|
|
|
|
if (_corkState == 1116) {
|
|
terminateMachineAndNull(_bits);
|
|
inv_give_to_player("CORK");
|
|
hotspot_set_active("JAR/CORK ", false);
|
|
_corkState = 1000;
|
|
}
|
|
|
|
kernel_examine_inventory_object("PING GLASS JAR",
|
|
_G(master_palette), 5, 1, 375, 150, 3, nullptr, -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripHiHand2);
|
|
_xyzzy7 = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeGlassJar2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_ripHiHand2 = series_load("rip trek hi reach 2hnd");
|
|
setGlobals1(_ripHiHand2, 1, 13, 13, 13, 0, 13, 1, 1, 1);
|
|
sendWSMessage_110000(1);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_bottle);
|
|
inv_give_to_player("GLASS JAR");
|
|
hotspot_set_active("GLASS JAR", false);
|
|
|
|
if (_stopperState == 1116) {
|
|
terminateMachineAndNull(_stopperInDrawer);
|
|
inv_give_to_player("RUBBER PLUG");
|
|
hotspot_set_active("JAR/RUBBER PLUG", false);
|
|
_stopperState = 1000;
|
|
}
|
|
|
|
if (_corkState == 1116) {
|
|
terminateMachineAndNull(_bits);
|
|
inv_give_to_player("CORK");
|
|
hotspot_set_active("JAR/CORK", false);
|
|
_corkState = 1000;
|
|
}
|
|
|
|
kernel_examine_inventory_object("PING GLASS JAR",
|
|
_G(master_palette), 5, 1, 100, 200, 3, nullptr, -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripHiHand2);
|
|
_xyzzy7 = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takePeriodicTable1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_rptmhr11 = series_load("RPTMHR11");
|
|
setGlobals1(_rptmhr11, 1, 10, 10, 10, 0, 10, 1, 1, 1);
|
|
sendWSMessage_110000(1);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_chart);
|
|
inv_give_to_player("PERIODIC TABLE");
|
|
hotspot_set_active("PERIODIC TABLE", false);
|
|
kernel_examine_inventory_object("PING PERIODIC TABLE",
|
|
_G(master_palette), 5, 1, 450, 200, 3, nullptr, -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_rptmhr11);
|
|
_periodicTableState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takePeriodicTable2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_chart);
|
|
inv_give_to_player("PERIODIC TABLE");
|
|
hotspot_set_active("PERIODIC TABLE ", false);
|
|
kernel_examine_inventory_object("PING PERIODIC TABLE",
|
|
_G(master_palette), 5, 1, 100, 200, 3, nullptr, -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripMedHand1);
|
|
_periodicTableState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeJarGrips() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_ripHiHand1 = series_load("rip trek hi 1 hand");
|
|
setGlobals1(_ripHiHand1, 1, 7, 7, 7, 0, 7, 1, 1, 1);
|
|
sendWSMessage_110000(1);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_grips);
|
|
inv_give_to_player("PUMP GRIPS");
|
|
hotspot_set_active("PUMP GRIPS ", false);
|
|
kernel_examine_inventory_object("PING PUMP GRIPS",
|
|
_G(master_palette), 5, 1, 425, 150, 3, "407R30", -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripHiHand1);
|
|
_pumpState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeJarCork1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_bits);
|
|
inv_give_to_player("CORK");
|
|
hotspot_set_active("JAR/CORK", false);
|
|
kernel_examine_inventory_object("PING CORK",
|
|
_G(master_palette), 5, 1, 150, 200, 3, nullptr, -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripMedHand1);
|
|
_corkState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeJarCork2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
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:
|
|
terminateMachineAndNull(_bits);
|
|
inv_give_to_player("CORK");
|
|
hotspot_set_active("JAR/CORK ", false);
|
|
kernel_examine_inventory_object("PING CORK",
|
|
_G(master_palette), 5, 1, 425, 150, 3, nullptr, -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripHiHand1);
|
|
_corkState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeJarRubberPlug1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_stopperInDrawer);
|
|
inv_give_to_player("RUBBER PLUG");
|
|
hotspot_set_active("JAR/RUBBER PLUG", false);
|
|
kernel_examine_inventory_object("PING RUBBER PLUG",
|
|
_G(master_palette), 5, 1, 150, 200, 3, nullptr, -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripMedHand1);
|
|
_stopperState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeJarRubberPlug2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
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:
|
|
terminateMachineAndNull(_stopperInDrawer);
|
|
inv_give_to_player("RUBBER PLUG");
|
|
hotspot_set_active("JAR/RUBBER PLUG ", false);
|
|
kernel_examine_inventory_object("PING RUBBER PLUG",
|
|
_G(master_palette), 5, 1, 425, 150, 3, nullptr, -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripHiHand1);
|
|
_stopperState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeNozzlesTube() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_tubeInDrawer);
|
|
inv_give_to_player("SURGICAL TUBE");
|
|
hotspot_set_active("NOZZLES/TUBE", false);
|
|
kernel_examine_inventory_object("PING SURGICAL TUBE",
|
|
_G(master_palette), 5, 1, 225, 200, 3, "407_s06", -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_120000(4);
|
|
break;
|
|
|
|
case 4:
|
|
sendWSMessage_150000(5);
|
|
break;
|
|
|
|
case 5:
|
|
series_unload(_ripMedHand1);
|
|
_tubeState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeLeverKeyFromWall() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_ripMedReach = series_load("RIP TREK MED REACH POS3");
|
|
setGlobals1(_ripMedReach, 1, 11, 11, 11, 0, 11, 1, 1, 1);
|
|
sendWSMessage_110000(1);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_lever);
|
|
inv_give_to_player("LEVER KEY");
|
|
hotspot_set_active("LEVER KEY", false);
|
|
kernel_examine_inventory_object("PING LEVER KEY",
|
|
_G(master_palette), 5, 1, 25, 200, 2, nullptr, -1);
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedReach);
|
|
_leverKeyState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeLeverKeyFromBench() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_lever);
|
|
inv_give_to_player("LEVER KEY");
|
|
hotspot_set_active("LEVER KEY ", false);
|
|
kernel_examine_inventory_object("PING LEVER KEY", 5, 1, 175, 200, 2, "407_s07a");
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
_leverKeyState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
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, false,
|
|
triggerMachineByHashCallback, "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");
|
|
_leverKeyState = 1000;
|
|
|
|
series_unload(_407rp98);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeAirValveHandle() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(4);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_airValve);
|
|
inv_give_to_player("FAUCET HANDLE");
|
|
hotspot_set_active("AIR VALVE/HANDLE", false);
|
|
hotspot_set_active("AIR VALVE", true);
|
|
kernel_examine_inventory_object("PING FAUCET HANDLE",
|
|
_G(master_palette), 5, 1, 175, 200, 2, "407_s13", -1);
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
_airValveState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takeFaucetHandle() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
reachHand(10);
|
|
break;
|
|
|
|
case 1:
|
|
if (_valveState1 == 1010) {
|
|
_valveState1 = 1011;
|
|
|
|
if (_faucetPipeState == 1100)
|
|
kernel_timing_trigger(1, 430, KT_DAEMON, KT_PARSE);
|
|
else if (_tubeState == 1130)
|
|
kernel_timing_trigger(1, 440, KT_DAEMON, KT_PARSE);
|
|
}
|
|
|
|
terminateMachineAndNull(_airValve);
|
|
inv_give_to_player("FAUCET HANDLE");
|
|
hotspot_set_active("FAUCET HANDLE", false);
|
|
kernel_examine_inventory_object("PING FAUCET HANDLE",
|
|
_G(master_palette), 5, 1, 75, 200, 2, "407_s04", -1);
|
|
break;
|
|
|
|
case 2:
|
|
sendWSMessage_120000(3);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_150000(4);
|
|
break;
|
|
|
|
case 4:
|
|
series_unload(_ripMedHand1);
|
|
_airValveState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takePumpRod1() {
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP pumps");
|
|
sendWSMessage_10000(1, _ripley, _pump407, 1, 40, 1,
|
|
_pump407, 40, 40, 0);
|
|
kernel_timing_trigger(150, 69);
|
|
break;
|
|
|
|
case 1:
|
|
if (_pumpState == 1115) {
|
|
terminateMachineAndNull(_grips);
|
|
inv_give_to_player("PUMP GRIPS");
|
|
hotspot_set_active("PUMP GRIPS ", false);
|
|
_pumpState = 1000;
|
|
kernel_examine_inventory_object("PING PUMP GRIPS",
|
|
_G(master_palette), 5, 1, 125, 200, 2, nullptr, -1);
|
|
} else {
|
|
kernel_timing_trigger(1, 2);
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
kernel_timing_trigger(1, 3);
|
|
break;
|
|
|
|
case 3:
|
|
kernel_examine_inventory_object("PING PUMP ROD",
|
|
_G(master_palette), 5, 1, 125, 200, 4, nullptr, -1);
|
|
break;
|
|
|
|
case 4:
|
|
kernel_timing_trigger(1, 5);
|
|
break;
|
|
|
|
case 5:
|
|
terminateMachineAndNull(_pump);
|
|
hotspot_set_active("PUMP ROD", false);
|
|
inv_give_to_player("PUMP ROD");
|
|
sendWSMessage_10000(1, _ripley, _pump407, 14, 1, 6, _pump407, 1, 1, 0);
|
|
break;
|
|
|
|
case 6:
|
|
terminateMachineAndNull(_ripley);
|
|
terminateMachineAndNull(_safariShadow);
|
|
ws_unhide_walker();
|
|
series_unload(_pump407);
|
|
_rodState = 1000;
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 69:
|
|
digi_play("407_s07", 2);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takePumpRod2() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (inv_object_is_here("PUMP ROD")) {
|
|
player_set_commands_allowed(false);
|
|
_placeLeverKey = series_load("407 PLACE LEVER KEY");
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP levers ceiling");
|
|
sendWSMessage_10000(1, _ripley, _placeLeverKey, 70, 49, 2,
|
|
_placeLeverKey, 49, 49, 0);
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
kernel_examine_inventory_object("PING LEVER KEY/PUMP ROD",
|
|
_G(master_palette), 5, 1, 350, 150, 3, "407_s07a", -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_10000(1, _ripley, _placeLeverKey, 48, 1, 4,
|
|
_placeLeverKey, 1, 1, 0);
|
|
break;
|
|
|
|
case 4:
|
|
terminateMachineAndNull(_ripley);
|
|
ws_unhide_walker();
|
|
hotspot_set_active("LEVER KEY ", false);
|
|
hotspot_set_active("PUMP ROD ", false);
|
|
inv_give_to_player("PUMP ROD");
|
|
_leverKeyState = 1000;
|
|
_rodState = 1000;
|
|
series_unload(_placeLeverKey);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takePumpRod3() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
player_set_commands_allowed(false);
|
|
_407rp99 = series_load("407rp99");
|
|
ws_hide_walker();
|
|
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);
|
|
|
|
_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0, false,
|
|
triggerMachineByHashCallback, "RIP takes pump rod from ceiling");
|
|
sendWSMessage_10000(1, _ripley, _407rp99, 61, 42, 2,
|
|
_407rp99, 42, 42, 0);
|
|
break;
|
|
|
|
case 2:
|
|
digi_play("407_s07a", 1);
|
|
kernel_examine_inventory_object("PING PUMP ROD",
|
|
_G(master_palette), 5, 1, 350, 150, 3, "407_s07a", -1);
|
|
break;
|
|
|
|
case 3:
|
|
sendWSMessage_10000(1, _ripley, _407rp99, 41, 1, 4,
|
|
_407rp99, 1, 1, 0);
|
|
break;
|
|
|
|
case 4:
|
|
terminateMachineAndNull(_ripley);
|
|
terminateMachineAndNull(_safariShadow);
|
|
ws_unhide_walker();
|
|
hotspot_set_active("PUMP ROD ", false);
|
|
inv_give_to_player("PUMP ROD");
|
|
_rodState = 1000;
|
|
series_unload(_407rp99);
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room407::takePumpGrips1() {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
if (inv_object_is_here("PUMP GRIPS")) {
|
|
inv_give_to_player("PUMP GRIPS");
|
|
_pumpState = 1000;
|
|
|
|
hotspot_set_active("PUMP GRIPS", false);
|
|
terminateMachineAndNull(_grips);
|
|
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, false,
|
|
triggerMachineByHashCallback, "RIP pumps");
|
|
sendWSMessage_10000(1, _ripley, _pump407, 1, 40, 1,
|
|
_pump407, 40, 40, 0);
|
|
kernel_timing_trigger(150, 69);
|
|
break;
|
|
|
|
case 1:
|
|
terminateMachineAndNull(_grips);
|
|
inv_give_to_player("PUMP GRIPS");
|
|
hotspot_set_active("PUMP GRIPS ", false);
|
|
_pumpState = 1000;
|
|
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);
|
|
ws_unhide_walker();
|
|
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");
|
|
_tubeState = 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
|