/* 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 _ctr1) val = 1; else _ctr1 = 0; if (val == 1) { sendWSMessage_10000(1, _agent, _401a01, 1, 1, 100, _401a01, 1, 1, 0); } else { sendWSMessage_10000(1, _agent, _401a01, 1, 3, 100, _401a01, 3, 3, 0); _agentMode = 4; } break; case 7: sendWSMessage_10000(1, _agent, _401a02, 1, 57, 100, _401a01, 1, 1, 0); _agentShould = 4; _ctr1 = 0; break; case 8: terminateMachineAndNull(_ripMach); sendWSMessage_10000(1, _agent, _401a04, 1, 62, 108, _401a01, 1, 1, 0); break; case 9: terminateMachineAndNull(_ripMach); sendWSMessage_10000(1, _agent, _401a05, 1, 53, 105, _401a01, 53, 53, 0); break; case 10: terminateMachineAndNull(_ripMach); sendWSMessage_10000(1, _agent, _401a03, 1, 47, 103, _401a03, 1, 1, 0); break; default: sendWSMessage_10000(1, _agent, _401a01, 1, 3, 100, _401a01, 3, 3, 0); _agentMode = 4; _ctr1 = 0; break; } break; case 4: switch (_agentShould) { case 0: val = imath_ranged_rand(1, 3); ++_ctr1; if (imath_ranged_rand(20, 80) > _ctr1) val = 1; else _ctr1 = 0; switch (val) { case 1: sendWSMessage_10000(1, _agent, _401a01, 3, 3, 100, _401a01, 3, 3, 0); break; case 2: sendWSMessage_10000(1, _agent, _401a01, 11, 28, 100, _401a01, 28, 28, 0); _agentMode = 11; _ctr1 = 0; break; case 3: sendWSMessage_10000(1, _agent, _401a01, 3, 1, 100, _401a01, 1, 1, 0); _agentMode = 1; _ctr1 = 0; break; default: break; } break; case 4: sendWSMessage_10000(1, _agent, _401a01, 3, 3, 100, _401a01, 3, 3, 0); break; case 5: sendWSMessage_10000(1, _agent, _401a01, 4, 4, -1, _401a01, 4, 10, 4); sendWSMessage_1a0000(_agent, 13); break; case 6: sendWSMessage_10000(1, _agent, _401a01, 29, 43, 100, _401a01, 3, 3, 0); sendWSMessage_190000(_agent, 13); _agentShould = 4; break; case 11: sendWSMessage_10000(1, _agent, _401a01, 11, 28, 100, _401a01, 28, 28, 0); _agentMode = 11; break; default: sendWSMessage_10000(1, _agent, _401a01, 3, 1, 100, _401a01, 1, 1, 0); _agentMode = 1; _ctr1 = 0; break; } break; case 11: switch (_agentShould) { case 0: val = imath_ranged_rand(1, 2); ++_ctr1; if (imath_ranged_rand(20, 80) < _ctr1) val = 1; else _ctr1 = 0; if (val == 1) { sendWSMessage_10000(1, _agent, _401a01, 28, 28, 100, _401a01, 28, 28, 0); } else { sendWSMessage_10000(1, _agent, _401a01, 28, 11, 100, _401a01, 3, 3, 0); _agentMode = 4; _ctr1 = 0; } break; case 11: sendWSMessage_10000(1, _agent, _401a01, 28, 28, 100, _401a01, 28, 28, 0); break; default: sendWSMessage_10000(1, _agent, _401a01, 28, 11, 100, _401a01, 3, 3, 0); break; } break; default: break; } break; case 102: _ripMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false, triggerMachineByHashCallback, "rip"); sendWSMessage_10000(1, _ripMach, _401rp01, 11, 11, 200, _401rp01, 11, 11, 0); _ripleyMode = _ripleyShould = 0; sendWSMessage_10000(1, _agent, _401a01, 1, 1, 100, _401a01, 1, 1, 0); _agentShould = 4; _ctr1 = 0; _G(kernel).trigger_mode = KT_PARSE; digi_play(conv_sound_to_play(), 1, 255, 1); _G(kernel).trigger_mode = KT_DAEMON; break; case 103: sendWSMessage_10000(1, _agent, _401a03, 48, 67, 102, _401a01, 1, 1, 0); digi_play(imath_ranged_rand(1, 2) == 1 ? "950_s09" : "950_s10", 2); break; case 104: series_show("401a06", 0); _ripMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false, triggerMachineByHashCallback, "rip"); sendWSMessage_10000(1, _ripMach, _401rp01, 11, 11, 200, _401rp01, 11, 11, 0); _ripleyMode = _ripleyShould = 0; sendWSMessage_10000(1, _agent, _401a01, 1, 1, 100, _401a01, 1, 1, 0); _agentShould = 4; _ctr1 = 0; conv_resume(); break; case 105: sendWSMessage_10000(1, _agent, _401a05, 53, 1, 106, _401a01, 1, 1, 0); break; case 106: _ripMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false, triggerMachineByHashCallback, "rip"); sendWSMessage_10000(1, _ripMach, _401rp01, 11, 11, 200, _401rp01, 11, 11, 0); _ripleyMode = _ripleyShould = 0; sendWSMessage_10000(1, _agent, _401a01, 1, 1, 100, _401a01, 1, 1, 0); _agentShould = 0; _ctr1 = 0; inv_give_to_player("POMERANIAN MARKS"); conv_resume(); break; case 108: sendWSMessage_10000(1, _agent, _401a04, 63, 90, 104, _401a01, 1, 1, 0); digi_play("950_s35", 2); break; case 200: kernel_timing_trigger(1, 201); break; case 201: if (!_ripleyMode) { switch (_ripleyShould) { case 0: sendWSMessage_10000(1, _ripMach, _401rp01, 11, 11, 200, _401rp01, 11, 11, 0); break; case 1: sendWSMessage_10000(1, _ripMach, _401rp01, 12, 12, -1, _401rp01, 12, 19, 4); sendWSMessage_1a0000(_ripMach, 13); break; case 2: sendWSMessage_10000(1, _ripMach, _401rp01, 20, 36, 200, _401rp01, 11, 11, 0); sendWSMessage_190000(_ripMach, 13); _ripleyShould = 0; break; case 3: sendWSMessage_10000(1, _ripMach, _401rp01, 11, 1, 202, _401rp01, 1, 1, 0); break; default: break; } } break; case 202: terminateMachineAndNull(_ripMach); ws_unhide_walker(); player_set_commands_allowed(true); break; case 300: ws_hide_walker(); _ripMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false, triggerMachineByHashCallback, "rip"); sendWSMessage_10000(1, _ripMach, _401rp01, 1, 11, 305, _401rp01, 11, 11, 0); _agentShould = 5; digi_play((_val1 == 1) ? "401x02" : "401x03", 1); break; case 305: terminateMachineAndNull(_agent); sendWSMessage_10000(1, _ripMach, _401a02, 1, 47, 306, _401a02, 47, 47, 0); break; case 306: kernel_timing_trigger(1, 990); inv_give_to_player("MESSAGE LOG"); break; case 320: sendWSMessage_10000(1, _ripMach, _401a02, 48, 57, 322, _401a02, 57, 57, 0); break; case 322: sendWSMessage_10000(1, _ripMach, _401rp01, 11, 1, 324, _401rp01, 1, 1, 0); _agent = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x600, false, triggerMachineByHashCallback, "agent"); sendWSMessage_10000(1, _agent, _401a01, 1, 1, 100, _401a01, 1, 1, 0); break; case 324: case 520: case 620: case 720: case 826: terminateMachineAndNull(_ripMach); ws_unhide_walker(); kernel_timing_trigger(1, 1000); break; case 400: _G(flag1) = 0; setGlobals1(_rip4, 1, 1, 1, 5, 1); sendWSMessage_110000(405); _agentShould = 4; digi_play("401r02", 1, 255, 405); break; case 405: if (_G(flag1) >= 1) { _G(flag1) = 0; sendWSMessage_140000(-1); _agentShould = 5; digi_play("401x04", 1, 255, 407); } else { ++_G(flag1); } break; case 407: _agentShould = 4; kernel_timing_trigger(1, 100); setGlobals1(_rip4, 1, 1, 1, 5, 1); sendWSMessage_110000(410); digi_play("401r03", 1, 255, 410); break; case 410: if (_G(flag1) >= 1) { _G(flag1) = 0; sendWSMessage_140000(-1); _agentShould = 5; digi_play("401x05", 1, 255, 412); } else { ++_G(flag1); } break; case 412: _agentShould = 0; kernel_timing_trigger(1, 100); _G(flags)[V020] = 1; kernel_timing_trigger(1, 1000); break; case 500: setGlobals1(_rip2, 1, 15, 15, 15, 0, 1, 2, 3, 5, 1, 2, 1, 1, 1); _agentShould = 4; sendWSMessage_110000(503); digi_play("401r29", 1, 255, 505); break; case 503: case 603: sendWSMessage_29a0000(_rip3); sendWSMessage_120000(-1); break; case 505: sendWSMessage_130000(-1); digi_play("401x09", 1, 255, 507); break; case 507: _agentShould = 4; kernel_timing_trigger(1, 100); sendWSMessage_120000(-1); digi_play("401r30", 1, 255, 510); break; case 510: sendWSMessage_110000(511); _agentShould = 5; digi_play("401x10", 1, 255, 512); break; case 511: sendWSMessage_29a0000(_rip2); sendWSMessage_140000(514); break; case 512: sendWSMessage_10000(1, _agent, _401a01, 3, 3, 100, _401a01, 3, 3, 0); break; case 514: kernel_timing_trigger(60, 515); break; case 515: ws_hide_walker(); _ripMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false, triggerMachineByHashCallback, "rip"); sendWSMessage_10000(1, _ripMach, _401rp01, 1, 11, 516, _401rp01, 11, 11, 0); break; case 516: terminateMachineAndNull(_ripMach); sendWSMessage_10000(1, _agent, _401a04, 1, 63, 517, _401a04, 63, 63, 0); break; case 517: sendWSMessage_10000(1, _agent, _401a04, 64, 90, 518, _401a01, 1, 1, 0); digi_play("950_s35", 2); break; case 518: series_show("401a06", 0x600, 16); sendWSMessage_10000(1, _agent, _401a01, 1, 1, 100, _401a01, 1, 1, 0); _G(flags)[V016] = 1; _G(flags)[V366] = 1; _ripMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false, triggerMachineByHashCallback, "rip"); sendWSMessage_10000(1, _ripMach, _401rp01, 11, 1, 520, _401rp01, 1, 1, 0); _agentShould = 0; _ctr1 = 0; break; case 600: setGlobals1(_rip2, 1, 15, 15, 15, 0, 1, 2, 3, 5, 1, 2, 1, 1, 1); _agentShould = 4; sendWSMessage_110000(603); digi_play("401r32", 1, 255, 605); break; case 605: sendWSMessage_110000(612); break; case 612: sendWSMessage_29a0000(_rip2); sendWSMessage_140000(613); break; case 613: ws_hide_walker(); _ripMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false, triggerMachineByHashCallback, "rip"); sendWSMessage_10000(1, _ripMach, _401rp01, 1, 11, 616, _401rp01, 11, 11, 0); break; case 616: terminateMachineAndNull(_agent); sendWSMessage_10000(1, _ripMach, _401a04, 1, 63, 617, _401a04, 63, 63, 0); break; case 617: sendWSMessage_10000(1, _ripMach, _401a04, 64, 90, 618, _401a01, 1, 1, 0); digi_play("950_s35", 2); break; case 618: series_show("401a06", 0x600, 16); _agent = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x600, false, triggerMachineByHashCallback, "agent"); sendWSMessage_10000(1, _agent, _401a01, 1, 1, 100, _401a01, 1, 1, 0); sendWSMessage_10000(1, _ripMach, _401rp01, 11, 1, 620, _401rp01, 1, 1, 0); _G(flags)[V019] = 1; _agentShould = 0; _ctr1 = 0; break; case 700: setGlobals1(_rip4, 1, 1, 1, 5, 1); sendWSMessage_110000(705); _agentShould = 4; digi_play(_G(flags)[V019] ? "401r33" : "401r34", 1, 255, 705); break; case 705: if (_G(flag1) >= 1) { _G(flag1) = 0; sendWSMessage_140000(-1); _agentShould = 5; digi_play("401x12", 1, 255, 707); } else { ++_G(flag1); } break; case 707: _agentShould = 4; kernel_timing_trigger(1, 100); setGlobals1(_rip4, 1, 1, 1, 5, 1); sendWSMessage_110000(710); digi_play("401r35", 1, 255, 710); _G(flags)[V373] = 1; break; case 710: if (_G(flag1) >= 1) { _G(flag1) = 0; sendWSMessage_140000(-1); _agentShould = 5; digi_play("401x13", 1, 255, 712); } else { ++_G(flag1); } break; case 712: sendWSMessage_10000(1, _agent, _401a01, 3, 3, -1, _401a01, 3, 3, 0); kernel_timing_trigger(1, 715); break; case 715: ws_hide_walker(); _ripMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false, triggerMachineByHashCallback, "rip"); sendWSMessage_10000(1, _ripMach, _401a04, 1, 11, 716, _401rp01, 11, 11, 0); break; case 716: terminateMachineAndNull(_ripMach); sendWSMessage_10000(1, _agent, _401a03, 1, 67, 718, _401a01, 1, 1, 0); break; case 718: sendWSMessage_10000(1, _agent, _401a01, 1, 1, 100, _401a01, 1, 1, 0); inv_move_object("TURTLE", 305); inv_move_object("TURTLE TREATS", 305); _G(flags[V091]) = 1; _ripMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false, triggerMachineByHashCallback, "rip"); sendWSMessage_10000(1, _ripMach, _401rp01, 11, 1, 720, _401rp01, 1, 1, 0); _agentShould = 0; _ctr1 = 0; break; case 800: sendWSMessage_10000(1, _ripMach, _401a02, 48, 57, 822, _401a02, 57, 57, 0); break; case 822: sendWSMessage_10000(1, _ripMach, _401a03, 67, 1, 824, _401rp01, 11, 11, 0); break; case 824: sendWSMessage_10000(1, _ripMach, _401rp01, 11, 1, 826, _401rp01, 1, 1, 0); inv_give_to_player("ROMANOV EMERALD"); _agent = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x600, false, triggerMachineByHashCallback, "agent"); sendWSMessage_10000(1, _agent, _401a01, 1, 1, 100, _401a01, 1, 1, 0); _agentShould = 0; _ctr1 = 0; break; case 990: _digiName1 = nullptr; _digiName2 = nullptr; _digiName3 = nullptr; _digiName4 = nullptr; if (_val1 <= 0) { kernel_timing_trigger(1, 320); } else if (_digiName) { _digiName1 = _digiName; _digiName = nullptr; kernel_timing_trigger(1, 991); } else if (_G(flags)[V364] == 1) { _digiName1 = "201R26"; _G(flags)[V364] = 0; kernel_timing_trigger(1, 991); } else if (_G(flags)[V365] == 1) { _digiName1 = "201R61"; _G(flags)[V365] = 0; kernel_timing_trigger(1, 991); } else if (_G(flags)[V366] == 1) { _digiName1 = "401R31"; _G(flags)[V366] = 0; kernel_timing_trigger(1, 991); } else if (_G(flags)[V371] == 1) { _digiName = "501R03C"; _G(flags)[V371] = 0; kernel_timing_trigger(1, 991); } else if (_G(flags)[V372] == 1) { _digiName1 = "701R39"; _digiName2 = "701R39A"; _G(flags)[V372] = 0; kernel_timing_trigger(1, 991); } else if (_G(flags)[V367] == 1) { _digiName1 = "401R37"; _G(flags)[V367] = 0; _val2 = 1; kernel_timing_trigger(1, 991); } else if (_G(flags)[V368] == 1) { _digiName1 = "401R38"; _G(flags)[V368] = 0; _val2 = 1; kernel_timing_trigger(1, 991); } else if (_G(flags)[V369] == 1) { _digiName1 = "401R39"; _G(flags)[V369] = 0; _val2 = 1; kernel_timing_trigger(1, 991); } break; case 991: if (_digiName1) { digi_play(_digiName1, 1, 255, 993); } else { kernel_timing_trigger(1, 993); } break; case 993: if (_digiName2) { digi_play(_digiName2, 1, 255, 994); } else { kernel_timing_trigger(1, 994); } break; case 994: if (_digiName3) { digi_play(_digiName3, 1, 255, 995); } else { kernel_timing_trigger(1, 995); } break; case 995: if (_digiName4) { digi_play(_digiName4, 1, 255, 996); } else { kernel_timing_trigger(1, 996); } break; case 996: if (_val2) { _val2 = 0; kernel_timing_trigger(1, 800); } else { if (--_val1 == 0) { kernel_timing_trigger(1, 320); } else { kernel_timing_trigger(1, 800); } } break; case 999: kernel_timing_trigger(1, _val1 ? 300 : 1000); break; case 1000: if (!_G(flags)[V020]) { kernel_timing_trigger(30, 400); } else if (_G(flags)[V110] && !_G(flags)[V016]) { kernel_timing_trigger(30, 500); } else if (_G(flags)[V017] && player_been_here(407) && !_G(flags)[V019]) { kernel_timing_trigger(30, 600); } else if (_G(flags)[kWolfFled] && !_G(flags)[V091]) { kernel_timing_trigger(30, 700); } else { player_set_commands_allowed(true); } break; default: break; } } void Room401::parser() { const bool lookFlag = player_said_any("look", "look at"); const bool takeFlag = player_said("take"); const bool useFlag = player_said("gear"); if (player_said("conv401a")) { conv401a(); } else if (_G(kernel).trigger == 747) { if (_val4) { switch (_val4) { case 1: _G(flags)[kTravelDest] = 1; break; case 2: _G(flags)[kTravelDest] = 0; break; case 3: _G(flags)[kTravelDest] = 4; break; case 4: _G(flags)[kTravelDest] = 3; break; default: break; } disable_player_commands_and_fade_init(748); } _agentShould = 0; _ripleyShould = 3; } else if (_G(kernel).trigger == 748) { _G(flags)[kBilliardsFan] = 0; _G(game).setRoom(495); } else if (player_said("talk to", "agent")) { ws_hide_walker(); _G(kernel).trigger_mode = KT_DAEMON; _ripMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, false, triggerMachineByHashCallback, "rip"); sendWSMessage_10000(1, _ripMach, _401rp01, 1, 11, 200, _401rp01, 11, 11, 0); _ripleyMode = 0; _ripleyShould = 0; _G(kernel).trigger_mode = KT_PARSE; conv_load("conv401a", 10, 10, 747); conv_export_value_curr(_G(flags)[V088] < 3 ? 0 : 1, 1); conv_export_pointer_curr(&_val4, 2); conv_export_value_curr(inv_player_has("POMERANIAN MARKS") ? 1 : 0, 3); conv_export_value_curr(_G(flags)[V110], 4); conv_export_value_curr(getItemCount() ? 1 : 0, 5); #define EXPORT(INDEX, NAME) conv_export_value_curr(inv_player_has(NAME) ? 1 : 0, INDEX) EXPORT(6, "CRYSTAL SKULL"); EXPORT(7, "STICK AND SHELL MAP"); EXPORT(8, "WHEELED TOY"); EXPORT(9, "REBUS AMULET"); EXPORT(10, "SHRUNKEN HEAD"); EXPORT(11, "SILVER BUTTERFLY"); EXPORT(12, "POSTAGE STAMP"); EXPORT(13, "GERMAN BANKNOTE"); EXPORT(14, "WHALE BONE HORN"); EXPORT(15, "CHISEL"); EXPORT(16, "INCENSE BURNER"); EXPORT(17, "ROMANOV EMERALD"); #undef EXPORT conv_play(); _G(kernel).trigger_mode = KT_DAEMON; _agentShould = 4; } else if (lookFlag && player_said(" ")) { digi_play("COM001", 1, 255, -1, 997); } else if (takeFlag && player_said("BEER STEIN")) { digi_play("203r58", 1); } else if (lookFlag && player_said("BEER STEIN")) { if (_G(flags)[V015]) { digi_play("401R07", 1); } else { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); digi_play("401R05", 1, 255, 3); kernel_timing_trigger(1, 230); break; case 1: player_update_info(); ws_walk(_G(my_walker), _G(player_info).x + 1, _G(player_info).y, nullptr, 2, 3); _agentShould = 4; break; case 2: setGlobals1(_rip1, 1, 7, 8, 9, 1); sendWSMessage_110000(-1); break; case 3: sendWSMessage_140000(-1); _agentShould = 5; digi_play("401x06", 1, 255, 4); break; case 4: setGlobals1(_rip1, 1, 7, 8, 9, 1); sendWSMessage_110000(-1); _agentShould = 4; _G(kernel).trigger_mode = KT_DAEMON; kernel_timing_trigger(1, 100); _G(kernel).trigger_mode = KT_PARSE; digi_play("401r06", 1, 255, 5); break; case 5: sendWSMessage_140000(-1); _agentShould = 5; digi_play("401x07", 1, 255, 6); break; case 6: _agentShould = 0; _G(kernel).trigger_mode = KT_DAEMON; kernel_timing_trigger(1, 100); _G(kernel).trigger_mode = KT_PARSE; _G(flags)[V015] = 1; player_set_commands_allowed(true); break; default: break; } } } else if (lookFlag && _G(walker).ripley_said(SAID)) { // No implementation } else if (useFlag && player_said_any("SOFA", "CHAIR")) { digi_play("COM025", 1, 255, -1, 997); } else if (useFlag && player_said("TELEPHONE")) { digi_play("COM026", 1, 255, -1, 997); } else if ((useFlag || takeFlag) && player_said("COAT")) { digi_play("203R58", 1); } else if (takeFlag && player_said("POSTCARD RACK")) { digi_play("COM004", 1, 255, -1, 997); } else if (takeFlag && player_said("MAGAZINE")) { digi_play("COM005", 1, 255, -1, 997); } else if (player_said("exit")) { switch (_G(kernel).trigger) { case -1: disable_player_commands_and_fade_init(3); break; case 3: _G(game).setRoom(410); break; default: break; } } else { return; } _G(player).command_ready = false; } void Room401::conv401a() { const int who = conv_whos_talking(); const int node = conv_current_node(); const int entry = conv_current_entry(); const char *sound = conv_sound_to_play(); if (_G(kernel).trigger == 1) { if (who <= 0) { if (node == 3) return; _agentShould = 4; _G(kernel).trigger_mode = KT_DAEMON; kernel_timing_trigger(1, 100); _G(kernel).trigger_mode = KT_PARSE; } else if (who == 1) { if (node == 1 && entry == 1) { } else { conv_set_box_xy(10, 10); } if (node == 1 && entry == 3) { _agentShould = 9; _ripleyShould = 0; _G(kernel).trigger_mode = KT_DAEMON; kernel_timing_trigger(1, 200); _G(kernel).trigger_mode = KT_PARSE; return; } _ripleyShould = 0; _G(kernel).trigger_mode = KT_DAEMON; kernel_timing_trigger(1, 200); _G(kernel).trigger_mode = KT_PARSE; } conv_resume(); } else if (!sound) { conv_resume(); } else { if (who <= 0) { if (node == 3) { _agentShould = 8; _G(flags)[V014] = 0; } else if (node == 2 && entry == 0) { _agentShould = 10; return; } else { _agentShould = 5; } } else if (who == 1) { #define ITEM(NODE, ENTRY, ITEM) if (node == NODE && entry == ENTRY) inv_move_object(ITEM, 305) ITEM(11, 0, "CRYSTAL SKULL"); ITEM(11, 1, "STICK AND SHELL MAP"); ITEM(11, 2, "WHEELED TOY"); ITEM(11, 3, "REBUS AMULET"); ITEM(11, 4, "SHRUNKEN HEAD"); ITEM(11, 5, "SILVER BUTTERFLY"); ITEM(11, 6, "POSTAGE STAMP"); ITEM(11, 7, "GERMAN BANKNOTE"); ITEM(11, 8, "WHALE BONE HORN"); ITEM(11, 9, "CHISEL"); ITEM(11, 10, "INCENSE BURNER"); #undef ITEM if (node == 11 && entry == 11) { setFlag45(); inv_move_object("ROMANOV EMERALD", NOWHERE); } if (node != 11) _ripleyShould = 1; } digi_play(sound, 1, 255, 1); } } int Room401::getItemCount() const { int count = 0; static const char *NAMES[12] = { "SHRUNKEN HEAD", "INCENSE BURNER", "CRYSTAL SKULL", "WHALE BONE HORN", "WHEELED TOY", "SILVER BUTTERFLY", "REBUS AMULET", "CHISEL", "GERMAN BANKNOTE", "POSTAGE STAMP", "STICK AND SHELL MAP", "ROMANOV EMERALD" }; for (int i = 0; i < 12; ++i) { if (inv_player_has(NAMES[i])) ++count; } return count; } } // namespace Rooms } // namespace Riddle } // namespace M4