/* 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 0) { _field8C_unusedFl = true; _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); ws_hide_walker(_G(my_walker)); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, -1, _701rp01Series, 11, 11, 0); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1); sendWSMessage_1a0000(_agentPoshExpressMach, 11); digi_play("701X03", 1, 255, 2200, -1); } else { kernel_timing_trigger(1, _alreadyBeenHereFl ? 44 : 95, nullptr); } break; case 44: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, 45, _agentTalkLoopTjSeries, 12, 12, 0); break; case 45: setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); sendWSMessage_110000(_G(my_walker), -1); digi_play("701R03", 1, 255, 47, -1); break; case 46: sendWSMessage_110000(_G(my_walker), -1); digi_play("701R03", 1, 255, 47, -1); break; case 47: sendWSMessage_120000(_G(my_walker), -1); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1); sendWSMessage_1a0000(_agentPoshExpressMach, 11); digi_play("701X04", 1, 255, 48, -1); break; case 48: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, -1, _agentTalkLoopTjSeries, 12, 12, 0); sendWSMessage_150000(_G(my_walker), 948); break; case 49: sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 11, 0); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1); sendWSMessage_1a0000(_agentPoshExpressMach, 11); digi_play("701X05", 1, 255, 50, -1); break; case 50: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, -1, _agentTalkLoopTjSeries, 12, 12, 0); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 19, 4); sendWSMessage_1a0000(_agentPoshExpressMach02, 11); digi_play("701R05", 1, 255, 51, -1); break; case 51: sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 11, 0); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 13, 13, 1); sendWSMessage_1a0000(_agentPoshExpressMach, 11); digi_play("701X06", 1, 255, 52, -1); break; case 52: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, -1, _agentTalkLoopTjSeries, 12, 12, 0); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 19, 4); sendWSMessage_1a0000(_agentPoshExpressMach02, 11); digi_play("701R06", 1, 255, 53, -1); break; case 53: sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 11, 0); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 13, 13, 1); sendWSMessage_1a0000(_agentPoshExpressMach, 11); digi_play("701X07", 1, 255, 54, -1); break; case 54: terminateMachine(_agentPoshExpressMach02); sendWSMessage_10000(1, _agentPoshExpressMach, _agentShowMapSeries, 1, 47, 55, _agentShowMapSeries, 47, 47, 0); break; case 55: sendWSMessage_10000(1, _agentPoshExpressMach, _agentShowMapSeries, 47, 50, -1, _agentShowMapSeries, 47, 50, 1); sendWSMessage_1a0000(_agentPoshExpressMach, 11); digi_play("701X07A", 1, 255, 56, -1); break; case 56: sendWSMessage_10000(1, _agentPoshExpressMach, _agentShowMapSeries, 47, 1, 73, _agentShowMapSeries, 1, 1, 0); break; case 57: sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 11, 4); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1); sendWSMessage_1a0000(_agentPoshExpressMach, 11); digi_play("701X08", 1, 255, 58); break; case 58: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, -1, _agentTalkLoopTjSeries, 12, 12, 0); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 19, -1, _701rp01Series, 10, 19, 4); sendWSMessage_1a0000(_agentPoshExpressMach02, 9); digi_play("701R08", 1, 255, 59); break; case 59: sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 60, _701rp01Series, 1, 1, 0); break; case 60: terminateMachine(_agentPoshExpressMach02); terminateMachine(_safariShadow3Mach); ws_unhide_walker(_G(my_walker)); player_set_commands_allowed(true); break; case 71: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 42, _agentTalkLoopTjSeries, 13, 13, 0); break; case 72: sendWSMessage_150000(_G(my_walker), 54); break; case 73: _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, 74, _701rp01Series, 11, 11, 0); break; case 74: sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 19, -1, _701rp01Series, 10, 19, 4); sendWSMessage_1a0000(_agentPoshExpressMach02, 9); digi_play("701R07", 1, 255, 57, -1); break; case 75: case 76: setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); sendWSMessage_110000(_G(my_walker), 43); break; case 80: player_set_commands_allowed(false); player_update_info(_G(my_walker), &_G(player_info)); _safariShadow3Mach = series_place_sprite("SAFARI SHADOW 3", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 3840); setGlobals1(_ripTrekHandTalkPos3Series, 1, 4, 4, 4, 0, 5, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); sendWSMessage_110000(_G(my_walker), 1080); digi_play("701R37", 1, 255, -1, -1); break; case 81: sendWSMessage_150000(_G(my_walker), -1); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1); sendWSMessage_1a0000(_agentPoshExpressMach, 11); digi_play("701X11", 1, 255, 96, -1); break; case 82: if (_G(flags)[V286] != 1 || _G(flags)[V362] || _G(flags)[V372] || _G(flags)[V225]) { kernel_timing_trigger(1, 75, nullptr); } else { _G(flags)[V225] = 1; kernel_timing_trigger(1, 83, nullptr); } break; case 83: digi_play("701r42", 1, 255, 1083, -1); break; case 84: sendWSMessage_120000(_G(my_walker), -1); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, 85, _agentTalkLoopTjSeries, 12, 12, 0); break; case 85: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1); sendWSMessage_1a0000(_agentPoshExpressMach, 11); digi_play("701X07", 1, 255, 86, -1); break; case 86: sendWSMessage_10000(1, _agentPoshExpressMach02, _agentTalkLoopTjSeries, 12, 12, -1, _agentTalkLoopTjSeries, 12, 12, 0); _ripSketchingInNotebookPos3Series = series_load("RIP SKETCHING IN NOTEBOOK POS 3", -1, nullptr); sendWSMessage_150000(_G(my_walker), -1); kernel_timing_trigger(1, 88, nullptr); break; case 88: setGlobals1(_ripSketchingInNotebookPos3Series, 1, 32, 32, 34, 1, 32, 32, 32, 32, 0, 32, 1, 1, 1, 0, 0, 0, 0, 0, 0); sendWSMessage_110000(_G(my_walker), 89); break; case 89: sendWSMessage_190000(_G(my_walker), 9); digi_play("950_S34", 2, 255, 97, 950); break; case 90: sendWSMessage_150000(_G(my_walker), 91); break; case 91: series_unload(_ripSketchingInNotebookPos3Series); ws_hide_walker(_G(my_walker)); _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 92, _701rp01Series, 11, 11, 0); break; case 92: terminateMachine(_agentPoshExpressMach02); sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 86, 1, 93, _agentGetTelegramSeries, 1, 1, 0); break; case 93: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0); _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 94, _701rp01Series, 1, 1, 0); break; case 94: terminateMachine(_agentPoshExpressMach02); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0); ws_unhide_walker(_G(my_walker)); setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); kernel_timing_trigger(1, 76, nullptr); break; case 95: if (_G(flags)[V286] == 1 && !_G(flags)[V362]) _G(flags)[V372] = 1; terminateMachine(_safariShadow3Mach); player_set_commands_allowed(true); break; case 96: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 82, _agentTalkLoopTjSeries, 13, 13, 0); break; case 97: sendWSMessage_120000(_G(my_walker), 1089); break; case 100: kernel_timing_trigger(1, 102, nullptr); break; case 101: _ripleyMode = 1000; _ripleyShould = 1105; break; case 102: if (_field9E_triggerNum != -1) { kernel_timing_trigger(1, _field9E_triggerNum, nullptr); _field9E_triggerNum = -1; } else kernel_timing_trigger(1, 103, nullptr); break; case 103: switch (_ripleyMode) { case 1000: switch (_ripleyShould) { case 1100: player_set_commands_allowed(false); _agentMode = 2000; _agentShould = 2100; kernel_timing_trigger(1, 110, nullptr); player_update_info(_G(my_walker), &_G(player_info)); _safariShadow3Mach = series_place_sprite("SAFARI SHADOW 3", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 3840); ws_hide_walker(_G(my_walker)); _ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, triggerMachineByHashCallback, "rip talks agent"); _ripleyShould = 1103; sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 1); conv_load("conv701a", 10, 10, 101); _lastInventoryCheck = inventoryCheck(); _fieldBC_unusedFl = true; conv_export_value_curr((_G(flags)[V088] < 3) ? 0 : 1, 0); conv_export_pointer_curr(&_lastInventoryCheck, 1); _hasCrystalSkull = inv_player_has("CRYSTAL SKULL") ? 1 : 0; _hasStickAnsShellMap = inv_player_has("STICK AND SHELL MAP") ? 1 : 0; _hasWheeledToy = inv_player_has("WHEELED TOY") ? 1 : 0; _hasRebusAmulet = inv_player_has("REBUS AMULET") ? 1 : 0; _hasShrunkenHead = inv_player_has("SHRUNKEN HEAD") ? 1 : 0; _hasSilverButterfly = inv_player_has("SILVER BUTTERFLY") ? 1 : 0; _hasPostageStamp = inv_player_has("POSTAGE STAMP") ? 1 : 0; _hasGermanBankNote = inv_player_has("GERMAN BANKNOTE") ? 1 : 0; _hasWhaleBoneHorn = inv_player_has("WHALE BONE HORN") ? 1 : 0; _hasChisel = inv_player_has("CHISEL") ? 1 : 0; _hasIncenseBurner = inv_player_has("INCENSE BURNER") ? 1 : 0; _hasRomanovEmerald = inv_player_has("ROMANOV EMERALD") ? 1 : 0; conv_export_pointer_curr(&_hasCrystalSkull, 3); conv_export_pointer_curr(&_hasStickAnsShellMap, 4); conv_export_pointer_curr(&_hasWheeledToy, 5); conv_export_pointer_curr(&_hasRebusAmulet, 6); conv_export_pointer_curr(&_hasShrunkenHead, 7); conv_export_pointer_curr(&_hasSilverButterfly, 8); conv_export_pointer_curr(&_hasPostageStamp, 9); conv_export_pointer_curr(&_hasGermanBankNote, 10); conv_export_pointer_curr(&_hasWhaleBoneHorn, 11); conv_export_pointer_curr(&_hasChisel, 12); conv_export_pointer_curr(&_hasIncenseBurner, 13); conv_export_pointer_curr(&_hasRomanovEmerald, 14); _travelDest = 0; conv_export_pointer_curr(&_travelDest, 15); conv_export_pointer_curr(&_fieldC8, 17); conv_play(conv_get_handle()); break; case 1102: { const int32 rnd = imath_ranged_rand(1, 5); sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, rnd, rnd, 102, _ripTrekTalkerPos3Series, rnd, rnd, 0); } break; case 1103: sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0); break; case 1104: sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, -1, _ripTrekTalkerPos3Series, 5, 5, 0); break; case 1105: terminateMachine(_ripTalksAgentMach); terminateMachine(_safariShadow3Mach); ws_unhide_walker(_G(my_walker)); _agentShould = 2103; kernel_timing_trigger(1, 2700, nullptr); break; default: break; } break; case 3000: switch (_ripleyShould) { case 3100: player_set_commands_allowed(false); _ripleyShould = 3101; kernel_timing_trigger(10, 102); break; case 3101: terminateMachine(_agentPoshExpressMach02); sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 1, 60, 102, _agentGetTelegramSeries, 60, 60, 0); _ripleyShould = 3102; break; case 3102: digi_play("950_S06", 2, 255, 102, 950); inv_give_to_player("MESSAGE LOG"); sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 69, 69, -1, _agentGetTelegramSeries, 69, 69, 0); kernel_timing_trigger(1, 2201); _ripleyShould = 3103; break; case 3103: sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 71, 71, -1, _agentGetTelegramSeries, 71, 71, 0); _ripleyShould = 3103; break; case 3105: sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 71, 86, 102, _agentGetTelegramSeries, 86, 86, 0); _ripleyShould = 3107; break; case 3106: digi_play("950_S06", 2, 255, -1, 950); sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 70, 71, -1, _agentGetTelegramSeries, 71, 71, 0); _ripleyShould = 3103; break; case 3107: if (_field130) { kernel_timing_trigger(1, 2501); _field130 = false; } else { _ripleyShould = 3108; _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 1, 1, -1, _agentTalkLoopTjSeries, 1, 1, 0); } break; case 3108: terminateMachine(_agentPoshExpressMach02); kernel_timing_trigger(1, _alreadyBeenHereFl ? 45 : 95); ws_unhide_walker(_G(my_walker)); break; default: break; } break; case 3500: switch (_ripleyShould) { case 3501: _agentSignsForMoneySeries = series_load("AGENT SIGNS FOR MONEY", -1, nullptr); _ripleyShould = 3502; _agentShould = 2101; terminateMachine(_ripTalksAgentMach); player_set_commands_allowed(false); _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, -1, _701rp01Series, 11, 11, 0); digi_play(conv_sound_to_play(), 1, 255, 103, -1); break; case 3502: _agentShould = 2103; kernel_timing_trigger(1, 103, nullptr); _ripleyShould = 3504; break; case 3503: terminateMachine(_agentPoshExpressMach02); _ripleyShould = 3504; _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 102, _701rp01Series, 11, 11, 0); break; case 3504: terminateMachine(_agentPoshExpressMach); terminateMachine(_agentPoshExpressMach02); _ripleyShould = 3505; _ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 256, false, triggerMachineByHashCallback, "rip talks agent"); sendWSMessage_10000(1, _ripTalksAgentMach, _agentSignsForMoneySeries, 1, 70, 102, _agentSignsForMoneySeries, 70, 70, 0); break; case 3505: digi_play("950_S06", 2, 255, -1, 950); _ripleyShould = 3506; sendWSMessage_10000(1, _ripTalksAgentMach, _agentSignsForMoneySeries, 70, 94, 102, _agentSignsForMoneySeries, 94, 94, 0); break; case 3506: terminateMachine(_ripTalksAgentMach); _ripleyShould = 3507; _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0); _agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express"); _agentMode = 2000; _agentShould = 2102; sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 110, _agentTalkLoopTjSeries, 13, 13, 0); break; case 3507: _ripleyMode = 1000; inv_give_to_player("US DOLLARS"); terminateMachine(_agentPoshExpressMach02); _ripleyShould = 1103; player_update_info(_G(my_walker), &_G(player_info)); _ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, triggerMachineByHashCallback, "rip talks agent"); sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0); conv_resume(conv_get_handle()); series_unload(_agentSignsForMoneySeries); break; default: break; } break; case 3600: switch (_ripleyShould) { case 3601: _agentExchangeMoneySeries = series_load("AGENT EXCHANGE MONEY", -1, nullptr); sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 1, 5, -1, _ripTrekHandTalkPos3Series, 1, 5, 1); _ripleyShould = 3602; digi_play(_convDigiName_2.c_str(), 1, 255, 103, -1); break; case 3602: _ripleyShould = 3604; sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 103, _ripTrekTalkerPos3Series, 5, 5, 1); break; case 3603: terminateMachine(_agentPoshExpressMach); terminateMachine(_agentPoshExpressMach02); _ripleyShould = 3605; _ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 256, false, triggerMachineByHashCallback, "rip talks agent"); sendWSMessage_10000(1, _ripTalksAgentMach, _agentExchangeMoneySeries, 1, 52, 102, _agentExchangeMoneySeries, 52, 52, 0); break; case 3604: terminateMachine(_ripTalksAgentMach); _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); _ripleyShould = 3603; sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 102, _701rp01Series, 11, 11, 0); break; case 3605: digi_play("950_S06", 2, 255, -1, 959); _ripleyShould = 33605; sendWSMessage_10000(1, _ripTalksAgentMach, _agentExchangeMoneySeries, 52, 19, 102, _agentExchangeMoneySeries, 19, 19, 0); break; case 3606: _ripleyShould = 3607; terminateMachine(_ripTalksAgentMach); _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0); _agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 110, _agentTalkLoopTjSeries, 13, 13, 0); break; case 3607: inv_give_to_player("SIKKIMESE RUPEE"); terminateMachine(_agentPoshExpressMach02); _ripleyMode = 1000; _ripleyShould = 1103; player_update_info(_G(my_walker), &_G(player_info)); _ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, triggerMachineByHashCallback, "rip talks agent"); sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0); conv_resume(conv_get_handle()); series_unload(_agentExchangeMoneySeries); break; case 33605: digi_play("950_S06", 2, 255, -1, 950); _ripleyShould = 3606; sendWSMessage_10000(1, _ripTalksAgentMach, _agentExchangeMoneySeries, 19, 1, 102, _agentExchangeMoneySeries, 1, 1, 0); break; default: break; } break; case 3700: switch (_ripleyShould) { case 3701: player_set_commands_allowed(false); terminateMachine(_ripTalksAgentMach); _ripleyShould = 3702; _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 102, _701rp01Series, 11, 11, 0); break; case 3702: terminateMachine(_agentPoshExpressMach); terminateMachine(_agentPoshExpressMach02); _ripleyShould = 3709; _ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 256, false, triggerMachineByHashCallback, "rip talks agent"); sendWSMessage_10000(1, _ripTalksAgentMach, _agentGiveParcelSeries, 1, 33, 102, _agentGiveParcelSeries, 33, 33, 0); break; case 3704: switch (conv_current_entry()) { case 0: inv_move_object("CRYSTAL SKULL", 305); break; case 1: inv_move_object("STICK AND SHELL MAP", 305); break; case 2: inv_move_object("WHEELED TOY", 305); break; case 3: inv_move_object("REBUS AMULET", 305); break; case 4: inv_move_object("SHRUNKEN HEAD", 305); break; case 5: inv_move_object("SILVER BUTTERFLY", 305); break; case 6: inv_move_object("POSTAGE STAMP", 305); break; case 7: inv_move_object("GERMAN BANKNOTE", 305); break; case 8: inv_move_object("WHALE BONE HORN", 305); break; case 9: inv_move_object("CHISEL", 305); break; case 10: inv_move_object("INCENSE BURNER", 305); break; case 11: setFlag45(); inv_move_object("ROMANOV EMERALD", 999); break; default: break; } _agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express"); _agentShould = 2102; _agentMode = 2000; _ripleyShould = 3705; kernel_timing_trigger(1, 102, nullptr); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 110, _agentTalkLoopTjSeries, 13, 13, 0); break; case 3705: _ripleyShould = 3706; terminateMachine(_ripTalksAgentMach); _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0); break; case 3706: terminateMachine(_agentPoshExpressMach02); _ripleyMode = 1000; _ripleyShould = 1103; player_update_info(_G(my_walker), &_G(player_info)); _ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, triggerMachineByHashCallback, "rip talks agent"); sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0); conv_resume(conv_get_handle()); break; case 3709: _ripleyShould = 3704; sendWSMessage_10000(1, _ripTalksAgentMach, _agentGiveParcelSeries, 34, 51, 102, _agentGiveParcelSeries, 51, 51, 0); digi_play("950_S09", 2, 255, -1, 950); break; default: break; } break; default: break; } break; case 110: if (_field72_triggerNum != -1) { kernel_timing_trigger(1, _field72_triggerNum, nullptr); _field72_triggerNum = -1; } else kernel_timing_trigger(1, 111, nullptr); break; case 111: if (_agentMode != 2000) return; switch (_agentShould) { case 2100: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 14, 14, 110, _agentTalkLoopTjSeries, 14, 14, 0); _agentShould = 2102; break; case 2101: { const int32 rnd = imath_ranged_rand(14, 17); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, rnd, rnd, 110, _agentTalkLoopTjSeries, rnd, rnd, 0); } break; case 2102: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 14, 14, 110, _agentTalkLoopTjSeries, 14, 14, 0); break; case 2103: sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 14, 14, -1, _agentTalkLoopTjSeries, 14, 14, 0); break; case 2104: sendWSMessage_10000(1, _agentPoshExpressMach, _agentExchangeMoneySeries, 1, 66, 110, _agentExchangeMoneySeries, 66, 66, 0); break; default: break; } break; case 948: _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); ws_hide_walker(_G(my_walker)); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 10, -1, _701rp01Series, 11, 19, 4); sendWSMessage_1a0000(_agentPoshExpressMach02, 11); digi_play("701R04", 1, 255, 49, -1); break; case 1040: sendWSMessage_120000(_G(my_walker), 41); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 1, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0); break; case 1080: sendWSMessage_120000(_G(my_walker), 81); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 1, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0); break; case 1083: setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); sendWSMessage_110000(_G(my_walker), -1); digi_play("701R38", 1, 255, 84, -1); break; case 1089: sendWSMessage_190000(_G(my_walker), 5); sendWSMessage_130000(_G(my_walker), 90); break; case 2200: _ripleyShould = 3100; _ripleyMode = 3000; sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 102, _agentTalkLoopTjSeries, 13, 13, 0); break; case 2201: _ripleyShould = 3103; kernel_timing_trigger(60, 2300, nullptr); break; case 2300: _field58_digiName = nullptr; _field5C_digiName = nullptr; _field60_digiName = nullptr; _field64_digiName = nullptr; if (_field50_counter <= 0) { kernel_timing_trigger(1, 44, nullptr); return; } if (_itemDigiName) { _field58_digiName = _itemDigiName; _itemDigiName = nullptr; } else if (_G(flags)[V364] == 1) { _field58_digiName = "201R26"; _G(flags)[V364] = 0; } else if (_G(flags)[V365] == 1) { _field58_digiName = "201R61"; _G(flags)[V365] = 0; } else if (_G(flags)[V366] == 1) { _field58_digiName = "401R31"; _G(flags)[V366] = 0; } else if (_G(flags)[V373] == 1) { _field58_digiName = "401R36"; _G(flags)[V373] = 0; } else if (_G(flags)[V370] == 1) { _field58_digiName = "501R02"; _G(flags)[V370] = 0; } else if (_G(flags)[V371] == 1) { _field58_digiName = "501R03"; _G(flags)[V371] = 0; } else if (_G(flags)[V372] == 1) { _field58_digiName = "701R39"; _field5C_digiName = "701R39A"; _G(flags)[V372] = 0; } else if (_G(flags)[V367] == 1) { _field58_digiName = "401R37"; _G(flags)[V367] = 0; _field130 = true; } else if (_G(flags)[V368] == 1) { _field58_digiName = "401R38"; _G(flags)[V368] = 0; _field130 = true; } else if (_G(flags)[V369] == 1) { _field58_digiName = "401R39"; _G(flags)[V369] = 0; _field130 = true; } kernel_timing_trigger(1, 2301, nullptr); break; case 2301: _ripleyShould = 3106; kernel_timing_trigger(1, 2302, nullptr); break; case 2302: if (_field58_digiName) digi_play(_field58_digiName, 1, 255, 2303, -1); else kernel_timing_trigger(1, 2303, nullptr); break; case 2303: if (_field5C_digiName) digi_play(_field5C_digiName, 1, 255, 2304, -1); else kernel_timing_trigger(1, 2304, nullptr); break; case 2304: if (_field60_digiName) digi_play(_field60_digiName, 1, 255, 2305, -1); else kernel_timing_trigger(1, 2305, nullptr); break; case 2305: if (_field64_digiName) digi_play(_field64_digiName, 1, 255, 2306, -1); else kernel_timing_trigger(1, 2306, nullptr); break; case 2306: if (_field130) { _ripleyMode = 3000; _ripleyShould = 3105; kernel_timing_trigger(1, 102, nullptr); } else { --_field50_counter; if (_field50_counter <= 0) { kernel_timing_trigger(1, 2307); } else { _ripleyShould = 3106; kernel_timing_trigger(1, 2300); } } break; case 2307: _ripleyShould = 3105; kernel_timing_trigger(10, 102, nullptr); break; case 2501: terminateMachine(_agentPoshExpressMach); _agentPoshExpressMach03 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach03, _agentGiveParcelSeries, 51, 33, 2509, _agentGiveParcelSeries, 33, 33, 0); break; case 2504: terminateMachine(_agentPoshExpressMach03); _agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 2506, _701rp01Series, 1, 1, 0); if (!inv_player_has("ROMANOV EMERALD")) { inv_give_to_player("ROMANOV EMERALD"); } _agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express"); sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 1, 1, -1, _agentTalkLoopTjSeries, 1, 1, 0); break; case 2506: ws_unhide_walker(_G(my_walker)); terminateMachine(_agentPoshExpressMach02); kernel_timing_trigger(1, _alreadyBeenHereFl ? 45 : 95, nullptr); break; case 2509: sendWSMessage_10000(1, _agentPoshExpressMach03, _agentGiveParcelSeries, 32, 1, 2504, _agentGiveParcelSeries, 1, 1, 0); digi_play("950_S09", 2, 255, -1, 950); break; case 2600: player_set_commands_allowed(false); disable_player_commands_and_fade_init(2601); break; case 2601: switch (_travelDest) { 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] = 2; break; default: break; } _G(game).setRoom(495); break; case 2700: kernel_timing_trigger(1, 2701, nullptr); break; case 2701: kernel_timing_trigger(1, 2702, nullptr); break; case 2702: if (_field90) kernel_timing_trigger(1, 2600, nullptr); else player_set_commands_allowed(true); break; default: break; } } void Room701::conv701a() { _conv701aNode = conv_current_node(); const int32 entry = conv_current_entry(); const char *digiName = conv_sound_to_play(); if (digiName == nullptr) { conv_resume(conv_get_handle()); return; } const int32 who = conv_whos_talking(); if (who <= 0) { if (_conv701aNode == 3 && entry == 0) { _convDigiName_1 = Common::String(digiName); _ripleyMode = 3500; _ripleyShould = 3501; return; } _agentShould = 2101; } else if (who == 1) { if (_conv701aNode == 1 && entry == 1) { conv_set_box_xy(490, -4); set_dlg_rect(); int32 x1, y1, x2, y2; conv_get_dlg_coords(&x1, &y1, &x2, &y2); conv_get_dlg_coords(&x1, &y1, &x2, &y2); // useless? conv_set_dlg_coords(x1, y1 - 10, x2, y2 - 10); set_dlg_rect(); } else { conv_set_box_xy(10, 10); } switch (_conv701aNode) { case 1: if (entry == 3) { _convDigiName_2 = Common::String(digiName); _ripleyMode = 3600; _ripleyShould = 3601; return; } _ripleyShould = 1102; break; case 6: if (entry == 0) { _ripleyShould = 1102; digi_play(digiName, 1, 255, 1, -1); _field90 = true; return; } _ripleyShould = 1102; break; case 11: if (entry != 12) { _ripleyMode = 3700; _ripleyShould = 3701; return; } break; default: _ripleyShould = 1102; break; } } digi_play(digiName, 1, 255, 1, -1); } void Room701::updateCounter() { if (_G(flags)[V364] == 1) { ++_field50_counter; switch (_G(flags)[V005]) { case 1: _G(flags)[V351] = 1; break; case 2: _G(flags)[V352] = 1; break; case 3: _G(flags)[V353] = 1; break; case 4: _G(flags)[V354] = 1; break; default: break; } } if (_G(flags)[V365] == 1) { _G(flags)[V355] = 1; ++_field50_counter; } if (_G(flags)[V366] == 1) { _G(flags)[V356] = 1; ++_field50_counter; } if (_G(flags)[V367] == 1) { _G(flags)[V357] = 1; ++_field50_counter; } if (_G(flags)[V368] == 1) { _G(flags)[V358] = 1; ++_field50_counter; } if (_G(flags)[V369] == 1) { _G(flags)[V359] = 1; ++_field50_counter; } if (_G(flags)[V370] == 1) { _G(flags)[V360] = 1; ++_field50_counter; } if (_G(flags)[V371] == 1) { _G(flags)[V361] = 1; ++_field50_counter; } if (_G(flags)[V372] == 1) { _G(flags)[V362] = 1; ++_field50_counter; } if (_G(flags)[V373] == 1) { _G(flags)[V363] = 1; ++_field50_counter; } } int32 Room701::inventoryCheck() { for (int i = 0; i < 12; ++i) _inventoryCheckArray[i] = 0; _inventoryCheckCounter = 0; if (inv_player_has("CRYSTAL SKULL")) _inventoryCheckArray[_inventoryCheckCounter++] = 1; if (inv_player_has("STICK AND SHELL MAP")) _inventoryCheckArray[_inventoryCheckCounter++] = 2; if (inv_player_has("WHEELED TOY")) _inventoryCheckArray[_inventoryCheckCounter++] = 3; if (inv_player_has("REBUS AMULET")) _inventoryCheckArray[_inventoryCheckCounter++] = 4; if (inv_player_has("SHRUNKEN HEAD")) _inventoryCheckArray[_inventoryCheckCounter++] = 5; if (inv_player_has("SILVER BUTTERFLY")) _inventoryCheckArray[_inventoryCheckCounter++] = 6; if (inv_player_has("POSTAGE STAMP")) _inventoryCheckArray[_inventoryCheckCounter++] = 7; if (inv_player_has("GERMAN BANKNOTE")) _inventoryCheckArray[_inventoryCheckCounter++] = 8; if (inv_player_has("WHALE BONE HORN")) _inventoryCheckArray[_inventoryCheckCounter++] = 9; if (inv_player_has("CHISEL")) _inventoryCheckArray[_inventoryCheckCounter++] = 10; if (inv_player_has("INCENSE BURNER")) _inventoryCheckArray[_inventoryCheckCounter++] = 11; if (inv_player_has("ROMANOV EMERALD")) _inventoryCheckArray[_inventoryCheckCounter++] = 12; return _inventoryCheckCounter > 0 ? 1 : 0; } void Room701::syncGame(Common::Serializer &s) { s.syncAsByte(_field88); } } // namespace Rooms } // namespace Riddle } // namespace M4