/* 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 > 16; if (trigger >= 0) kernel_trigger_dispatchx(myMessage); } void Room610::setup() { sendWSMessage_10000(1, _sgTt, _sgSlapsTt2, 1, 1, 200, _sgSlapsTt2, 1, 1, 1); sendWSMessage_10000(1, _k, _k00, 50, 50, 400, _k00, 50, 60, 4); sendWSMessage_190000(_k, 11); sendWSMessage_1a0000(_k, 11); _sgMode = 1; _sgShould = 0; _val3 = 0; _kShould = 0; _val5 = 1; _val6 = 0; } void Room610::talkKuangShenGuo() { switch (_G(kernel).trigger) { case -1: _flag1 = true; digi_stop(2); player_set_commands_allowed(false); _val5 = 2; _sgShould = 4; digi_play("610r12", 1, 255, 1); break; case 1: ws_hide_walker(); _ripAction = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, false, triggerMachineByHashCallback610, "spleen"); sendWSMessage_10000(1, _ripAction, _rp04, 1, 21, 2, _rp04, 21, 11, 4); sendWSMessage_1a0000(_ripAction, 50); break; case 2: digi_play("610r13", 1, 255, 3); break; case 3: disable_player_commands_and_fade_init(4); interface_hide(); break; case 4: kernel_timing_trigger(30, 5); break; case 5: digi_play("950_s14", 1, 255, 6); break; case 6: other_save_game_for_resurrection(); _G(game).setRoom(413); break; default: break; } } void Room610::talkSamantha() { switch (_G(kernel).trigger) { case -1: _flag1 = true; digi_stop(2); player_set_commands_allowed(false); _val5 = 2; _sgShould = 4; digi_play("610r14", 1, 255, 1); break; case 1: ws_hide_walker(); _ripAction = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, false, triggerMachineByHashCallback610, "spleen"); sendWSMessage_10000(1, _ripAction, _rp04, 1, 21, 2, _rp04, 21, 11, 4); sendWSMessage_1a0000(_ripAction, 50); break; case 2: digi_play("610r15", 1, 255, 3); break; case 3: disable_player_commands_and_fade_init(4); interface_hide(); break; case 4: kernel_timing_trigger(30, 5); break; case 5: digi_play("950_s14", 1, 255, 6); break; case 6: other_save_game_for_resurrection(); _G(game).setRoom(413); break; default: break; } } bool Room610::useHorn() { _flag1 = true; if (_G(kernel).trigger == 5) { _val5 = 2; _sgShould = 4; } // Original never exits parser even when this code is called return false; } void Room610::useWindow() { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); if (_G(flags)[V012]) { kernel_timing_trigger(1, 1); } else { ws_hide_walker(); _ripAction = series_play("610rp02", 0, 0, 3, 5, 0, 100, 0, 0, 0, 32); } break; case 1: disable_player_commands_and_fade_init(2); break; case 2: _G(game).setRoom(604); break; case 3: _ripAction = series_play("610rp02", 0, 0, 4, 5, 0, 100, 0, 0, 33, 64); digi_play("610_s01", 2); hotspot_set_active("window", false); hotspot_set_active("window ", true); _G(flags)[V012] = 1; break; case 4: series_show("610 shed window open", 0xf00, 16); ws_unhide_walker(); player_set_commands_allowed(true); break; default: break; } } void Room610::daemonPreprocess() { switch (_G(kernel).trigger) { case 135: if (!_flag1) { if (++_val8 >= 8) _val8 = 1; switch (_val8) { case 1: digi_play("610k07", 2, 150); kernel_timing_trigger(400, 135); break; case 2: digi_play("610k08", 2, 150); kernel_timing_trigger(400, 135); break; case 3: digi_play("610k09", 2, 150); kernel_timing_trigger(400, 135); break; case 4: digi_play("610k10", 2, 150); kernel_timing_trigger(400, 135); break; case 5: digi_play("610k11", 2, 150); kernel_timing_trigger(400, 135); break; case 6: digi_play("610k12", 2, 150, 137); kernel_timing_trigger(400, 135); break; case 7: digi_play("610k13", 2, 150); kernel_timing_trigger(500, 135); break; default: break; } } break; case 137: _sgShould = 3; break; default: break; } } void Room610::daemonPostprocess() { if (!_flag1 && _flag2) { player_update_info(); if (_G(player_info).x <= 222) player_set_commands_allowed(false); if (!player_said("talk to", "KUANG") && !player_said("talk to", "SHEN GUO") && !player_said("talk to", "SAMANTHA") && _G(player_info).x <= 222) { intr_cancel_sentence(); ws_walk(_G(my_walker), 202, 244, nullptr, 666, 11, true); _flag1 = true; _val5 = 2; _sgShould = 4; } } } } // namespace Rooms } // namespace Riddle } // namespace M4