/* 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 250) || (_G(player_info).y > 227 && !_G(flags)[kRoadOpened])) { kernel_trigger_dispatch_now(11); } else if (!_G(flags)[kRoadOpened]) { digi_preload_stream_breaks(SERIES2); series_stream_with_breaks(SERIES2, "136dt01", 6, 0x400, 14); } else { kernel_trigger_dispatch_now(11); } break; case 14: if (!_G(flags)[kRoadOpened]) { _volume -= 10; if (_volume > 0) { digi_change_volume(2, _volume); kernel_timing_trigger(3, 14); } else { digi_stop(1); digi_unload_stream_breaks(SERIES2); digi_stop(2); digi_unload("100_013"); player_set_commands_allowed(true); _volume = 255; } } break; case 15: setupSign(); _G(walker).reset_walker_sprites(); digi_preload_stream_breaks(SERIES2); if (_G(flags)[kRoadOpened]) { _G(flags)[V000] = 1002; series_stream_with_breaks(SERIES3, "136dt02", 6, 0x200, 6); } else { series_stream_with_breaks(SERIES2, "136dt01", 6, 0x200, 14); } break; case 16: ws_demand_location(398, 297, 8); ws_hide_walker(); terminateMachineAndNull(_sign1); terminateMachineAndNull(_sign2); player_set_commands_allowed(false); series_play_with_breaks(PLAY1, "136wi01", 0x300, 17, 3); break; case 17: _G(flags)[kRoadOpened] = 1; ws_unhide_walker(); player_set_commands_allowed(true); setupSign(); setupSignWalkAreas(); wilbur_speech("136w004"); break; case kCHANGE_WILBUR_ANIMATION: switch (_G(wilbur_should)) { case 3: player_set_commands_allowed(true); player_first_walk(639, 264, 9, 588, 252, 9, true); break; case 4: player_set_commands_allowed(true); player_first_walk(0, 355, 3, 96, 340, 3, true); break; default: _G(kernel).continue_handling_trigger = true; break; } break; case kBurlEntersTown: if (player_commands_allowed() && _G(player).walker_visible && INTERFACE_VISIBLE && !digi_play_state(1)) { Section1::updateDisablePlayer(); digi_preload("100_013"); digi_play("100_013", 2); kernel_timing_trigger(240, 13); } else { kernel_timing_trigger(60, 10028); } break; default: _G(kernel).continue_handling_trigger = true; break; } } void Room133_136::pre_parser() { if (player_said("gear", "sign") && !_G(flags)[kRoadOpened]) player_hotspot_walk_override(246, 247, 8); if (player_said("old bridge") && !player_said_any("enter", "gear", "look", "look at")) player_hotspot_walk_override_just_face(3); if (player_said("town limits") && !player_said_any("enter", "gear", "look", "look at")) player_hotspot_walk_override_just_face(9); if (player_said("enter", "construction")) player_hotspot_walk_override(292, 173, 1); } void Room133_136::parser() { const bool lookFlag = player_said_any("look", "look at"); _G(kernel).trigger_mode = KT_DAEMON; if (player_said("gear", "sign") && !_G(flags)[kRoadOpened]) { kernel_trigger_dispatch_now(16); } else if (_G(walker).wilbur_said(SAID)) { // Already handled } else if (lookFlag && player_said("construction")) { wilbur_speech(_G(flags)[V000] == 1002 ? "136w006" : "136w007"); } else if (player_said("enter", "old bridge") || player_said("gear", "old bridge") || (lookFlag && player_said("old bridge"))) { player_set_commands_allowed(false); pal_fade_init(_G(kernel).first_fade, 255, 0, 30, 1008); } else if (player_said("enter", "town limits") || player_said("gear", "town limits") || (lookFlag && player_said("town limits"))) { player_set_commands_allowed(false); pal_fade_init(_G(kernel).first_fade, 255, 0, 30, 1010); } else if (inv_player_has(_G(player).verb) && player_said_any("old bridge", "town limits", "construction")) { wilbur_speech("136w008"); } else { return; } _G(player).command_ready = false; } void Room133_136::setupSign() { if (_G(flags)[kRoadOpened]) { hotspot_set_active("sign", false); hotspot_set_active("sign ", true); _sign1 = series_play("136signr", 0x800, 0, -1, 600, -1, 100, 0, 0, 0, 0); _sign2 = series_play("136sinrs", 0x801, 0, -1, 600, -1, 100, 0, 0, 0, 0); } else { hotspot_set_active("sign ", false); hotspot_set_active("sign", true); _sign1 = series_play("136signl", 0xa00, 0, -1, 600, -1, 100, 0, 0, 0, 0); _sign2 = series_play("136sinls", 0xa01, 0, -1, 600, -1, 100, 0, 0, 0, 0); } } void Room133_136::setupSignWalkAreas() { if (_G(flags)[kRoadOpened]) { intr_add_no_walk_rect(294, 263, 332, 278, 297, 292); intr_add_no_walk_rect(332, 278, 380, 300, 297, 292); if (_walkCodes) intr_remove_no_walk_rect(_walkCodes); } else { _walkCodes = intr_add_no_walk_rect(144, 241, 244, 252, 167, 272); } } } // namespace Rooms } // namespace Burger } // namespace M4