/* 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 280 && _G(player_info).y < 300) { ws_walk(_G(player_info).x, _G(player_info).y, nullptr, -1, -1); player_set_commands_allowed(false); kernel_trigger_dispatch_now(6); } else { kernel_timing_trigger(15, 2); } } break; case 3: player_update_info(); if (_G(player_info).y > 300) { _borkState = _val3; kernel_trigger_dispatch_now(4); } else { kernel_timing_trigger(15, 3); } break; case 4: switch (_borkState) { case 4: _G(flags)[V186] = 0; _borkStairs.terminate(); _val3 = 5; kernel_timing_trigger(imath_ranged_rand(240, 360), 3); break; case 5: _G(flags)[V186] = 1; _G(flags)[kStairsBorkState] = 5000; _borkState = 6; _borkStairs.play("505bk01", 0xbff, 0, 4, 6, 0, 100, 0, 0, 0, 2); break; case 6: _val4 = 0; kernel_trigger_dispatch_now(5); kernel_trigger_dispatch_now(2); _borkState = 7; _borkStairs.play("505bk01", 0xbff, 0, 4, 6, 0, 100, 0, 0, 3, 9); break; case 7: terminateMachineAndNull(_fan); _borkState = 8; _borkStairs[0] = series_play("505bk01", 0xbff, 0, 4, 6, 0, 100, 0, 0, 10, 24); _borkStairs[1] = series_play("505bk01s", 0xc00, 0, 7, 6, 0, 100, 0, 0, 10, 24); _val4 = 1; kernel_trigger_dispatch_now(5); break; case 8: _borkState = 9; _borkStairs.play("505bk01", 0xbff, 0, 4, 6, 0, 100, 0, 0, 25, 24); _val4 = 2; kernel_trigger_dispatch_now(5); break; case 9: _G(flags)[kStairsBorkState] = 5001; _borkState = 4; _borkStairs.play("505bk01", 0xbff, 0, 4, 6, 0, 100, 0, 0, 27, 31); _val4 = 3; kernel_trigger_dispatch_now(5); break; default: _G(kernel).continue_handling_trigger = true; break; } break; case 5: switch (_val4) { case 0: digi_play((imath_ranged_rand(1, 2) == 1) ? "505b001a" : "505b001b", 2); break; case 1: digi_play("505b002", 2); break; case 2: digi_play("505b003", 2); break; case 3: digi_play((imath_ranged_rand(1, 2) == 1) ? "505b004a" : "505b004b", 2); break; default: break; } break; case 6: _G(flags)[V206] = 5005; kernel_trigger_dispatch_now(5015); break; case 7: _fan = series_play("505fan", 0xbff, 0, -1, 6, -1); break; case kCHANGE_WILBUR_ANIMATION: switch (_G(wilbur_should)) { case 1: player_set_commands_allowed(false); ws_demand_location(333, 271, 3); ws_hide_walker(); _G(wilbur_should) = 10001; series_play_with_breaks(PLAY1, "505wi01", 0xc00, kCHANGE_WILBUR_ANIMATION, 3); break; case 2: player_set_commands_allowed(false); ws_hide_walker(); _destTrigger = 5006; kernel_timing_trigger(30, 1); series_play_with_breaks(PLAY2, "505wi02", 0xc00, -1, 3); break; case 3: _G(wilbur_should) = 2; wilbur_speech("500w054", kCHANGE_WILBUR_ANIMATION); break; default: _G(kernel).continue_handling_trigger = true; break; } break; default: _G(kernel).continue_handling_trigger = true; break; } } void Room505::pre_parser() { _G(kernel).trigger_mode = KT_DAEMON; if (player_said_any("WILBUR'S ROOM", "BATHROOM", "AUNT POLLY'S ROOM") && !player_said_any("ENTER", "LOOK AT", "GEAR")) player_set_facing_hotspot(); } void Room505::parser() { _G(kernel).trigger_mode = KT_DAEMON; const bool railingFlag = player_said("RAILING") && _G(flags)[kStairsBorkState] == 5003; if (player_said("LOOK AT", "STAIRS") && _G(flags)[kStairsBorkState] == 5003) { wilbur_speech("505w002"); } else if (railingFlag && player_said("LOOK AT")) { wilbur_speech("505w005"); } else if (railingFlag && player_said("GEAR")) { wilbur_speech("505w007"); } else if (_G(walker).wilbur_said(SAID)) { // Already handled } else if (player_said("WILBUR'S ROOM") && player_said_any("GEAR", "ENTER", "LOOK AT")) { _destTrigger = 5010; kernel_trigger_dispatch_now(1); } else if (player_said("LOOK AT", "BATHROOM") || player_said("GEAR", "BATHROOM")) { _destTrigger = 5011; kernel_trigger_dispatch_now(1); } else if (player_said("LOOK AT", "AUNT POLLY'S ROOM") || player_said("GEAR", "AUNT POLLY'S ROOM")) { _destTrigger = 5013; kernel_trigger_dispatch_now(1); } else if (player_said("GEAR", "STAIRS")) { _G(wilbur_should) = 2; kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION); } else if (player_said("SOAPY WATER", "RAILING")) { _G(flags)[V196] = 1; player_set_commands_allowed(false); _G(wilbur_should) = 3; kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION); } else { return; } _G(player).command_ready = false; } } // namespace Rooms } // namespace Burger } // namespace M4