/* 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 3) { kernel_trigger_dispatch_now(3); } else { ++_val2; } break; case 15: setup(); _state1 = imath_ranged_rand(1, 4); series_play_with_breaks(PLAY8, "508BK02", 0x200, kCHANGE_BORK_ANIMATION, 3); break; case 16: setup(); _state1 = imath_ranged_rand(1, 2); _state2 = imath_ranged_rand(1, 4); series_play_with_breaks(PLAY9, "508BK03", 0x200, kCHANGE_BORK_ANIMATION, 3); break; case 17: _G(wilbur_should) = 2; kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION); ++_state3; _speechNum = 11; setup(); if (_state3 == 3) _borkState = 19; _state1 = imath_ranged_rand(1, 3); series_play_with_breaks(PLAY10, "508BK04", 0x200, kCHANGE_BORK_ANIMATION, 3, 6); break; case 18: _speechNum = kSPEECH_BORK_DESTROYED; _G(flags)[V227] = 1; hotspot_set_active("BORK", false); _state1 = imath_ranged_rand(1, 4); _state2 = imath_ranged_rand(1, 3); _state4 = imath_ranged_rand(1, 3); series_play_with_breaks(PLAY11, "508BK05", 0x200, 1, 3, 6); break; case 19: _G(flags)[V206] = 5003; _G(kernel).trigger_mode = KT_DAEMON; pal_fade_init(_G(kernel).first_fade, 255, 0, 0, 5015); break; default: break; } break; case 3: _G(flags)[V228] = 1; _state1 = imath_ranged_rand(1, 2); _val5 = 20; series_play_with_breaks(PLAY12, "508BK06", 0x200, 6, 3); break; case 5: switch (_val4) { case 21: hotspot_set_active("CHRISTMAS LIGHTS ", false); hotspot_set_active("CHRISTMAS LIGHTS ", true); _G(flags)[V229] = 1; _series3 = series_show(_G(flags)[V212] == 5000 ? "508LGT03" : "508LGT01", 0x300); break; case 22: hotspot_set_active("CHRISTMAS LIGHTS ", true); hotspot_set_active("CHRISTMAS LIGHTS ", false); _G(flags)[V229] = 0; _series3 = series_show(_G(flags)[V212] == 5000 ? "508LGT04" : "508LGT02", 0x400); break; case 23: _G(flags)[V229] = 0; terminateMachineAndNull(_series3); hotspot_set_active("CHRISTMAS LIGHTS ", false); hotspot_set_active("CHRISTMAS LIGHTS ", false); break; default: break; } break; case 6: switch (_val5) { case 20: _series2 = series_show("508WINDO", 0x200); break; default: break; } break; case 7: _G(kernel).trigger_mode = KT_DAEMON; pal_fade_init(_G(kernel).first_fade, 255, 0, 0, 5010); break; case kCHANGE_WILBUR_ANIMATION: switch (_G(wilbur_should)) { case 1: _val1 = 3; player_set_commands_allowed(false); _flag1 = false; _G(wilbur_should) = 4; series_play_with_breaks(PLAY6, "508Wi01", 0x300, kCHANGE_WILBUR_ANIMATION, 2); break; case 2: player_set_commands_allowed(false); _flag1 = false; terminateMachineAndNull(_series4); _val1 = 1; _G(wilbur_should) = 4; series_play_with_breaks(PLAY1, "508Wi06", 0x300, kCHANGE_WILBUR_ANIMATION, 2); break; case 3: player_set_commands_allowed(false); _flag1 = false; _val4 = 23; terminateMachineAndNull(_series4); _val1 = 1; if (_G(flags)[V212] == 5000) { _G(wilbur_should) = 6; series_play_with_breaks(PLAY2, "508Wi06", 0x300, kCHANGE_WILBUR_ANIMATION, 2); } else { _G(wilbur_should) = 5; series_play_with_breaks(PLAY2, "508Wi03", 0x300, kCHANGE_WILBUR_ANIMATION, 2); } break; case 4: if (_flag2) { _flag2 = false; kernel_trigger_dispatch_now(kWILBUR_SPEECH); } _G(wilbur_should) = 4; if (!_flag1) { player_set_commands_allowed(true); _flag1 = true; } if (_flag3) { _G(wilbur_should) = 9; _flag3 = false; kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION); } if (_val1 == 1) { switch (imath_ranged_rand(0, 2)) { case 0: _val1 = 1; _series4 = series_show("508Wi09", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 40, 0); break; case 1: _val1 = 2; _series4 = series_play("508Wi09", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 2); break; case 2: _val1 = 3; _series4 = series_play("508Wi09", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 3); break; default: break; } } else if (_val1 == 2) { switch (imath_ranged_rand(0, 2)) { case 0: _val1 = 1; _series4 = series_play("508Wi09", 0x200, 2, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 2); break; case 1: _val1 = 2; _series4 = series_show("508Wi09", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 40, 2); break; case 2: _val1 = 3; _series4 = series_play("508Wi09", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 2, 3); break; default: break; } } else if (_val1 == 3) { switch (imath_ranged_rand(0, 2)) { case 0: _val1 = 1; _series4 = series_play("508Wi09", 0x200, 2, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 3); break; case 1: _val1 = 2; _series4 = series_play("508Wi09", 0x200, 2, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 2, 3); break; case 2: _val1 = 3; _series4 = series_show("508Wi09", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 40, 3); break; default: break; } } break; case 5: if (!_flag1) { player_set_commands_allowed(true); _flag1 = true; } inv_give_to_player("CHRISTMAS LIGHTS"); if (_val1 == 1) { switch (imath_ranged_rand(0, 2)) { case 0: _val1 = 1; _series4 = series_show("508wi10", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 40, 0); break; case 1: _val1 = 2; _series4 = series_play("508wi10", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 2); break; case 2: _val1 = 3; _series4 = series_play("508wi10", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 3); break; default: break; } } else if (_val1 == 2) { switch (imath_ranged_rand(0, 2)) { case 0: _val1 = 1; _series4 = series_play("508wi10", 0x200, 2, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 2); break; case 1: _val1 = 2; _series4 = series_show("508wi10", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 40, 2); break; case 2: _val1 = 3; _series4 = series_play("508wi10", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 2, 3); break; default: break; } } else if (_val1 == 3) { switch (imath_ranged_rand(0, 2)) { case 0: _val1 = 1; _series4 = series_play("508wi10", 0x200, 2, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 3); break; case 1: _val1 = 2; _series4 = series_play("508wi10", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 2, 3); break; case 2: _val1 = 3; _series4 = series_show("508wi10", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 40, 3); break; default: break; } } break; case 6: if (!_flag1) { player_set_commands_allowed(true); _flag1 = true; } inv_give_to_player("CHRISTMAS LIGHTS "); if (_val1 == 1) { switch (imath_ranged_rand(0, 2)) { case 0: _val1 = 1; _series4 = series_show("508wi11", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 40, 0); break; case 1: _val1 = 2; _series4 = series_play("508wi11", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 2); break; case 2: _val1 = 3; _series4 = series_play("508wi11", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 3); break; default: break; } } else if (_val1 == 2) { switch (imath_ranged_rand(0, 2)) { case 0: _val1 = 1; _series4 = series_play("508wi11", 0x200, 2, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 2); break; case 1: _val1 = 2; _series4 = series_show("508wi11", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 40, 2); break; case 2: _val1 = 3; _series4 = series_play("508wi11", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 2, 3); break; default: break; } } else if (_val1 == 3) { switch (imath_ranged_rand(0, 2)) { case 0: _val1 = 1; _series4 = series_play("508wi11", 0x200, 2, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 0, 3); break; case 1: _val1 = 2; _series4 = series_play("508wi11", 0x200, 2, kCHANGE_WILBUR_ANIMATION, 20, 0, 100, 0, 0, 2, 3); break; case 2: _val1 = 3; _series4 = series_show("508wi11", 0x200, 0, kCHANGE_WILBUR_ANIMATION, 40, 3); break; default: break; } } break; case 7: _G(wilbur_should) = 4; _val4 = 22; player_set_commands_allowed(false); _flag1 = false; terminateMachineAndNull(_series4); _val1 = 1; if (_G(flags)[V212] == 5000) { series_play_with_breaks(PLAY3, "508Wi07", 0x300, kCHANGE_WILBUR_ANIMATION, 2); inv_move_object("CHRISTMAS LIGHTS ", 508); } else { series_play_with_breaks(PLAY3, "508Wi04", 0x300, kCHANGE_WILBUR_ANIMATION, 2); inv_move_object("CHRISTMAS LIGHTS", 508); } break; case 8: _G(wilbur_should) = 4; _val4 = 21; player_set_commands_allowed(false); _flag1 = false; terminateMachineAndNull(_series4); _val1 = 1; if (_G(flags)[V212] == 5000) { series_play_with_breaks(PLAY4, "508Wi08", 0x300, kCHANGE_WILBUR_ANIMATION, 2); inv_move_object("CHRISTMAS LIGHTS ", 508); } else { series_play_with_breaks(PLAY4, "508Wi05", 0x300, kCHANGE_WILBUR_ANIMATION, 2); inv_move_object("CHRISTMAS LIGHTS", 508); } break; case 9: player_set_commands_allowed(false); _flag1 = false; _val1 = 1; _flag3 = false; if (inv_player_has("CHRISTMAS LIGHTS") || player_said("CHRISTMAS LIGHTS ")) { _G(wilbur_should) = 8; kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION); _G(kernel).continue_handling_trigger = true; } else { terminateMachineAndNull(_series4); _G(wilbur_should) = 10002; series_play_with_breaks(PLAY5, "508Wi02", 0x300, 7, 2); } break; default: _G(kernel).continue_handling_trigger = true; break; } break; default: _G(kernel).continue_handling_trigger = true; break; } } void Room508::parser() { _G(kernel).trigger_mode = KT_DAEMON; if (player_said("LOOK AT") && player_said_any("CHIMNEY", "CHIMNEY POTS") && _G(flags)[kFireplaceHasFire]) { wilbur_speech("508w013"); } else if (player_said("RUBBER DUCKY", "BORK")) { wilbur_speech("500w042"); } else if (player_said("BORK", "KINDLING")) { wilbur_speech("500w069"); } else if (_G(walker).wilbur_said(SAID)) { // Already handled } else if (player_said("TAKE", "CHRISTMAS LIGHTS ")) { player_set_commands_allowed(false); if (_G(flags)[V227]) { _flag1 = false; _G(wilbur_should) = 3; kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION); } else { _borkState = 17; } } else if (player_said("HOLE") && player_said_any("CHRISTMAS LIGHTS ", "CHRISTMAS LIGHTS")) { player_set_commands_allowed(false); _G(wilbur_should) = 7; kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION); } else if (player_said("ROOF") && player_said_any("CHRISTMAS LIGHTS ", "CHRISTMAS LIGHTS")) { player_set_commands_allowed(false); _G(wilbur_should) = 8; kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION); } else if (player_said("WILBUR'S ROOM") && player_said_any("LEAVE", "LOOK AT", "GEAR")) { player_set_commands_allowed(false); _flag3 = true; _G(wilbur_should) = 9; kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION); } else { return; } _G(player).command_ready = false; } void Room508::loadSeries() { static const char *NAMES[8] = { "508bk01", "508bk01s", "508bk02", "508bk02s", "508bk03", "508bk03s", "508bk04", "508bk04s" }; for (int i = 0; i < 8; ++i) series_load(NAMES[i]); if (!_G(flags)[V228]) { series_load("508bk06"); series_load("508bk06s"); } } void Room508::setup() { switch (imath_ranged_rand(0, 3)) { case 0: case 1: _borkState = 14; break; case 2: _borkState = 15; break; case 3: _borkState = 16; break; default: break; } } } // namespace Rooms } // namespace Burger } // namespace M4