/* 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 x1 >= 380) { _gkShould = 1; _G(kernel).call_daemon_every_loop = false; digi_play("950_s13", 1, 255, -1, 950); } switch (_G(kernel).trigger) { case 1: kernel_trigger_dispatchx(kernel_trigger_create(3)); kernel_timing_trigger(140, 4); break; case 3: sendWSMessage_10000(_mei, 170, 352, 4, -1, 1); break; case 4: ws_walk(_G(my_walker), 115, 353, nullptr, 5, 3); break; case 5: _meiHallOfClassics = series_load("mc hall of classics line"); setGlobals1(_meiHallOfClassics, 1, 8, 8, 8, 2, 35, 41, 41, 41); sendWSMessage_110000(_mei, 6); digi_play("203m01", 1); break; case 6: sendWSMessage_120000(_mei, 7); break; case 7: _ctr1 = 0; _ripLookAtHeadsTalkMei = series_load("rip look at heads talk mei"); setGlobals1(_ripLookAtHeadsTalkMei, 1, 5, 5, 8, 1, 8, 8, 8, 8, 0, 9, 16, 17, 20, 1, 16, 4, 4, 4, 0); sendWSMessage_110000(8); digi_play("203r01", 1, 255, 8); break; case 8: if (_ctr1 >= 1) { _ctr1 = 0; sendWSMessage_120000(9); } else { ++_ctr1; } break; case 9: sendWSMessage_150000(_mei, -1); _meiCheekLine = series_load("mc cheek line"); setGlobals1(_meiCheekLine, 1, 30, 30, 35, 1, 38, 38, 38, 38, 1, 21, 45, 45, 45, 1); sendWSMessage_110000(_mei, 10); digi_play("203m02", 1, 255, 10); break; case 10: if (_ctr1 >= 1) { _ctr1 = 0; sendWSMessage_120000(_mei, -1); sendWSMessage_110000(11); digi_play("203r02", 1, 255, 11); } else { ++_ctr1; } break; case 11: if (_ctr1 >= 1) { _ctr1 = 0; sendWSMessage_130000(12); } else { ++_ctr1; } break; case 12: digi_play("203r03", 1, 255, 13); break; case 13: sendWSMessage_180000(-1); sendWSMessage_130000(_mei, 14); digi_play("203m03", 1); break; case 14: sendWSMessage_150000(_mei, -1); sendWSMessage_10000(_mei, 271, 337, 2, -1, 1); kernel_timing_trigger(40, 15); break; case 15: sendWSMessage_150000(-1); ws_walk(_G(my_walker), 315, 353, nullptr, 16, -1); break; case 16: ws_walk(_G(my_walker), 350, 328, nullptr, 17, 10); break; case 17: series_unload(_meiCheekLine); series_unload(_ripLookAtHeadsTalkMei); series_unload(_meiHallOfClassics); _meiRightHandOut = series_load("mei trek rt hand out pos2"); setGlobals1(_meiRightHandOut, 1, 10, 10, 10, 1, 10, 1, 1, 1, 1); sendWSMessage_110000(_mei, 18); digi_play("203m04", 1, 255, 19); break; case 18: case 25: sendWSMessage_120000(_mei, -1); break; case 19: sendWSMessage_120000(_mei, -1); _gkMode = 3001; _digiName1 = "203g01"; _digiTrigger1 = 20; kernel_trigger_dispatchx(kernel_trigger_create(125)); break; case 20: sendWSMessage_150000(_mei, -1); series_unload(_meiRightHandOut); _ripYouSeeToIt = series_load("rip says you see to it"); _meiTurnAndTalk = series_load("mc turn and talk"); setGlobals1(_meiTurnAndTalk, 1, 55, 55, 55, 1, 1, 20, 20, 20, 0, 20, 1, 1, 1, 0, 55, 55, 55, 55, 0); sendWSMessage_110000(_mei, -1); digi_play("203m05", 1, 255, 21); break; case 21: sendWSMessage_150000(-1); setGlobals1(_ripYouSeeToIt, 1, 38, 38, 38, 1, 38, 26, 26, 26, 1); sendWSMessage_110000(23); digi_play("203r04", 1, 255, 24); break; case 23: sendWSMessage_120000(-1); break; case 24: sendWSMessage_150000(_mei, -1); _meiTalkToRip = series_load("mc talk to rip"); setGlobals1(_meiTalkToRip, 1, 13, 13, 13, 1, 13, 1, 1, 1); sendWSMessage_110000(_mei, 25); digi_play("203m06", 1, 255, 26); break; case 26: sendWSMessage_150000(-1); setGlobals1(_ripLooksAtHeads, 1, 21, 21, 21, 1, 21, 1, 1, 1, 1); sendWSMessage_110000(-1); digi_play("203r05", 1, 255, 27); break; case 27: sendWSMessage_120000(28); sendWSMessage_150000(_mei, -1); sendWSMessage_10000(_mei, -40, 352, 2, 29, 1); break; case 28: digi_play("203r05a", 1); break; case 29: sendWSMessage_60000(_mei); kernel_timing_trigger(1, 4567); break; case 30: sendWSMessage_150000(1968); player_set_commands_allowed(true); _G(player).disable_hyperwalk = false; break; case 31: _ripYouSeeToIt = series_load("rip says you see to it"); _meiTalkToRip = series_load("mc talk to rip"); _meiTurnAndTalk = series_load("mc turn and talk"); ws_demand_location(_G(my_walker), 100, 360); kernel_timing_trigger(1, 29); break; case 40: _oldLadyMode = 40; _oldLady1 = series_load("old lady"); _oldLadyProtectsHelmet = series_load("old lady protect helmet"); _ripKneeling = series_load("rip kneels down to old lady"); _ripKneelingTalk = series_load("rip kneeling talks to old lady"); _ripPointsAtHelmet = series_load("rip points at helmet"); ws_hide_walker(); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, false, triggerMachineByHashCallback, "rip kneel"); sendWSMessage_10000(1, _ripley, _ripKneeling, 1, 31, 42, _ripKneeling, 31, 31, 0); break; case 42: sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, 16, 43, _ripKneelingTalk, 16, 16, 0); digi_play("203r20", 1, 255, 45); break; case 43: sendWSMessage_10000(1, _ripley, _ripPointsAtHelmet, 1, 5, 44, _ripPointsAtHelmet, 5, 5, 0); break; case 44: sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 5, 1, -1, _ripKneelingTalk, 5, 5, 0); break; case 45: sendWSMessage_10000(1, _oldLady, _oldLady1, 1, 7, 46, _oldLady1, 7, 7, 0); break; case 46: sendWSMessage_10000(1, _oldLady, _oldLady1, 7, 1, 47, _oldLadyFrame, 1, 1, 0); break; case 47: sendWSMessage_10000(1, _oldLady, _oldLadyProtectsHelmet, 1, 16, 48, _oldLadyProtectsHelmet, 16, 16, 0); break; case 48: sendWSMessage_10000(1, _oldLady, _oldLadyProtectsHelmet, 16, 1, 49, _oldLadyFrame, 1, 1, 0); break; case 49: sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 5, 1, 50, _ripKneelingTalk, 1, 1, 0); break; case 50: sendWSMessage_10000(1, _ripley, _ripKneeling, 31, 1, 51, _ripKneeling, 1, 1, 0); break; case 51: terminateMachineAndNull(_ripley); series_unload(_ripPointsAtHelmet); series_unload(_ripKneelingTalk); series_unload(_ripKneeling); series_unload(_oldLadyProtectsHelmet); series_unload(_oldLady1); _oldLadyMode = 5666; _oldLadyShould = 5100; kernel_timing_trigger(1, 130); ws_unhide_walker(_G(my_walker)); player_set_commands_allowed(true); break; case 60: _oldLadyMode = 60; _oldLadyNoHelmet = series_load("old lady feeding no helmet"); ws_hide_walker(); _ripKneeling = series_load("rip kneels down to old lady"); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, false, triggerMachineByHashCallback, "rip kneel"); sendWSMessage_10000(1, _ripley, _ripKneeling, 1, 31, 62, _ripKneeling, 31, 31, 0); break; case 62: series_unload(_ripKneeling); _ripKneelingTalk = series_load("rip kneeling talks to old lady"); sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, 5, 65, _ripKneelingTalk, 5, 5, 0); break; case 65: _ripGivesPhoto = series_load("rip gives photo to old lady"); sendWSMessage_10000(1, _ripley, _ripGivesPhoto, 1, 9, 67, _ripGivesPhoto, 9, 9, 0); digi_play("203r18", 1, 255, 66); break; case 66: midi_play("HELMET", 255, true, -1, 949); break; case 67: kernel_timing_trigger(60, 68); break; case 68: _oldLadyShowsPhoto = series_load("old lady shows photo"); sendWSMessage_10000(1, _oldLady, _oldLadyShowsPhoto, 1, 23, 69, _oldLadyShowsPhoto, 23, 23, 0); break; case 69: _stream1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, false, triggerMachineByHashCallback, "POPUP OL & lover"); _oldLadyPhotoPopup = series_load("old woman photo pop-up"); sendWSMessage_10000(1, _stream1, _oldLadyPhotoPopup, 1, 5, -1, _oldLadyPhotoPopup, 5, 5, 0); kernel_timing_trigger(150, 70); break; case 70: sendWSMessage_10000(1, _stream1, _oldLadyPhotoPopup, 5, 1, 71, _oldLadyPhotoPopup, 1, 1, 0); break; case 71: terminateMachineAndNull(_stream1); series_unload(_oldLadyPhotoPopup); series_unload(_oldLadyShowsPhoto); _oldLadyPointsToPhoto = series_load("old lady points to photo"); sendWSMessage_10000(1, _oldLady, _oldLadyPointsToPhoto, 1, 12, 72, _oldLadyPointsToPhoto, 12, 12, 0); break; case 72: kernel_timing_trigger(15, 73); break; case 73: sendWSMessage_10000(1, _oldLady, _oldLadyPointsToPhoto, 12, 1, 74, _oldLadyPointsToPhoto, 1, 1, 0); break; case 74: sendWSMessage_10000(1, _ripley, _ripGivesPhoto, 9, 1, 75, _ripGivesPhoto, 1, 1, 0); break; case 75: terminateMachineAndNull(_ripley); terminateMachineAndNull(_oldLady); series_unload(_oldLadyPointsToPhoto); series_unload(_ripGivesPhoto); digi_preload("203r21"); _stream1 = series_stream("old lady takes photo", 5, 1, 76); inv_move_object("RIPLEY PHOTO", 203); digi_play("203r21", 1); break; case 76: digi_preload("203r21"); _stream1 = series_stream("old lady gives helmet", 5, 1, 79); series_stream_break_on_frame(_stream1, 62, 77); break; case 77: series_set_frame_rate(_stream1, 3000); series_stream("old woman smiles", 5, 0, 78); break; case 78: series_set_frame_rate(_stream1, 5); ws_OverrideCrunchTime(_stream1); series_stream_break_on_frame(_stream1, 87, 79); break; case 79: _oldLady = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, false, triggerMachineByHashCallback, "ol"); sendWSMessage_10000(1, _oldLady, _oldLadyNoHelmet, 1, 1, -1, _oldLadyNoHelmet, 1, 1, 0); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, false, triggerMachineByHashCallback, "rip kneel"); sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, 1, -1, _ripKneelingTalk, 1, 1, 0); digi_preload("203r22"); _stream1 = series_stream("rip smiles close-up", 5, 0, 82); series_stream_break_on_frame(_stream1, 14, 6250); digi_play("203r22", 1, 255, 80); break; case 80: digi_unload("203r22"); break; case 81: series_set_frame_rate(_stream1, 5); ws_OverrideCrunchTime(_stream1); break; case 82: terminateMachineAndNull(_ripley); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, false, triggerMachineByHashCallback, "rip kneel"); _ripKneeling = series_load("rip kneels down to old lady"); sendWSMessage_10000(1, _ripley, _ripKneeling, 31, 1, 84, _ripKneeling, 1, 1, 0); break; case 84: midi_fade_volume(0, 120); kernel_timing_trigger(120, 749); terminateMachineAndNull(_ripley); series_unload(_ripKneeling); sendWSMessage_10000(1, _oldLady, _oldLadyFrame, 2, 2, 0, _oldLadyFrame, 2, 2, 0); _oldLadyMode = 5669; _oldLadyShould = 5200; _G(flags)[V060] = 1; inv_give_to_player("SOLDIER'S HELMET"); setupHelmetHotspot(); kernel_timing_trigger(1, 130); ws_unhide_walker(); _flag2 = false; player_set_commands_allowed(true); break; case 90: other_save_game_for_resurrection(); player_set_commands_allowed(false); ws_hide_walker(); _peskyYellsThief = series_load("pesky yells thief"); _peasantRocksShadow = series_load("shadow pesky rock loop"); _ripClimbsAndBacksDown = series_load("rip climbs and backs down"); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, 0, 100, 0x100, false, triggerMachineByHashCallback, "rip climbs"); sendWSMessage_10000(1, _ripley, _ripClimbsAndBacksDown, 1, 75, 96, _ripClimbsAndBacksDown, 75, 75, 0); kernel_timing_trigger(400, 91); break; case 91: terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant yells thief"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false, triggerMachineByHashCallback, "SHADOW pp yells thief"); sendWSMessage_10000(1, _peasant, _peskyYellsThief, 1, 19, 94, _peskyYellsThief, 19, 19, 0); sendWSMessage_10000(1, _peasantShadow, _peasantRocksShadow, 1, 1, -1, _peasantRocksShadow, 1, 1, 0); _yellThiefFlag = true; kernel_timing_trigger(100, 92); digi_preload("203p02"); break; case 92: if (_yellThiefFlag) digi_play("203p02", 1, 255, 93); else digi_unload("203p02"); break; case 93: kernel_timing_trigger(120, 92); break; case 94: if (_yellThiefFlag) { sendWSMessage_10000(1, _peasant, _peskyYellsThief, 19, 21, 95, _peskyYellsThief, 21, 21, 0); } else { sendWSMessage_10000(1, _peasant, _peskyYellsThief, 19, 1, -1, _peskyYellsThief, 1, 1, 0); } break; case 95: if (_yellThiefFlag) { sendWSMessage_10000(1, _peasant, _peskyYellsThief, 21, 19, 94, _peskyYellsThief, 19, 19, 0); } else { sendWSMessage_10000(1, _peasant, _peskyYellsThief, 21, 1, -1, _peskyYellsThief, 1, 1, 0); } break; case 96: sendWSMessage_10000(1, _ripley, _ripClimbsAndBacksDown, 75, 1, 97, _ripClimbsAndBacksDown, 1, 1, 0); break; case 97: terminateMachineAndNull(_ripley); series_unload(_ripClimbsAndBacksDown); player_update_info(); ws_unhide_walker(); kernel_timing_trigger(3, 98); break; case 98: ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, -1, 4); terminateMachineAndNull(_official); terminateMachineAndNull(_officialShadow); ws_walk_load_shadow_series(OFFICIAL_SHADOW_DIRS, OFFICIAL_SHADOW_NAMES); ws_walk_load_walker_series(OFFICIAL_NORMAL_DIRS, OFFICIAL_NORMAL_NAMES); _official = triggerMachineByHash_3000(8, 5, *OFFICIAL_NORMAL_DIRS, *OFFICIAL_SHADOW_DIRS, 1300, 360, 9, triggerMachineByHashCallback3000, "official arresting"); sendWSMessage_10000(_official, 720, 345, 9, 99, 1); break; case 99: _yellThiefFlag = false; _officialTurn9_11_pointGun = series_load("official turn 9-11 point gun"); setGlobals1(_officialTurn9_11_pointGun, 1, 31, 31, 31, 0, 31, 13, 13, 13, 0, 13, 1, 1, 1); sendWSMessage_110000(_official, 100); break; case 100: sendWSMessage_120000(_official, -1); ws_walk(_G(my_walker), 656, 335, nullptr, 101, 9); break; case 101: sendWSMessage_130000(_official, 102); ws_walk(_G(my_walker), 280, 345, nullptr, 103, 9); break; case 102: sendWSMessage_150000(_official, -1); g_engine->camera_shift_xy(0, 0); sendWSMessage_10000(_official, 345, 355, 9, -1, 1); break; case 103: _ripLookAtHeadsTalkMei = series_load("rip look at heads talk mei"); setGlobals1(_ripLookAtHeadsTalkMei, 11, 16, 16, 16, 1, 16, 11, 11, 11); sendWSMessage_110000(-1); digi_play("203r28", 1, 255, 104); break; case 104: _officialMoveAlong = series_load("official move along"); setGlobals1(_officialMoveAlong, 1, 12, 12, 12, 0, 12, 1, 1, 1); sendWSMessage_110000(_official, 105); break; case 105: sendWSMessage_120000(_official, 106); break; case 106: sendWSMessage_150000(_official, 107); break; case 107: sendWSMessage_120000(108); break; case 108: sendWSMessage_150000(-1); ws_walk(_G(my_walker), -30, 355, nullptr, -1, -1); kernel_timing_trigger(40, 109); break; case 109: sendWSMessage_10000(_official, -30, 355, 9, -1, 1); kernel_timing_trigger(60, 110); break; case 110: disable_player_commands_and_fade_init(111); break; case 111: _G(game).setRoom(413); player_set_commands_allowed(true); break; case 120: switch (_peasantMode) { case 4050: switch (_peasantShould) { case 4091: case 4094: case 4095: if (_trigger2 != -1) { kernel_trigger_dispatchx(kernel_trigger_create(_trigger2)); _trigger2 = -1; } else { kernel_trigger_dispatchx(kernel_trigger_create(121)); } break; default: break; } break; case 4051: if (_peasantShould == 4110) { if (_trigger2 != -1) { kernel_trigger_dispatchx(kernel_trigger_create(_trigger2)); _trigger2 = -1; } else { player_update_info(); if (_G(player_info).x >= 450 && _G(player_info).x <= 800) { kernel_trigger_dispatchx(kernel_trigger_create(121)); } else { player_set_commands_allowed(false); _peasantShould = (_G(player_info).x < 450) ? 4117 : 4113; peasantWalk(); kernel_timing_trigger(1, 121); } } } break; case 4052: switch (_peasantShould) { case 4170: if (_trigger2 != -1) { kernel_trigger_dispatchx(kernel_trigger_create(_trigger2)); _trigger2 = -1; } else { player_update_info(); if (_G(player_info).x <= 450) { kernel_trigger_dispatchx(kernel_trigger_create(121)); } else { player_set_commands_allowed(false); _peasantShould = 4175; peasantWalk(); kernel_timing_trigger(1, 121); } } break; case 4174: case 4175: kernel_timing_trigger(1, 121); break; default: break; } break; case 4053: switch (_peasantShould) { case 4160: if (_trigger2 != -1) { kernel_trigger_dispatchx(kernel_trigger_create(_trigger2)); _trigger2 = -1; } else { player_update_info(); if (_G(player_info).x >= 800 && _G(player_info).x <= 1040) { kernel_trigger_dispatchx(kernel_trigger_create(121)); } else { player_set_commands_allowed(false); _peasantShould = (_G(player_info).x < 800) ? 4162 : 4166; peasantWalk(); kernel_timing_trigger(1, 121); } } break; default: break; } break; case 4054: switch (_peasantShould) { case 4140: if (_trigger2 != -1) { kernel_trigger_dispatchx(kernel_trigger_create(_trigger2)); _trigger2 = -1; } else { player_update_info(); if (_G(player_info).x < 1040) { player_set_commands_allowed(false); _peasantShould = 4142; peasantWalk(); kernel_timing_trigger(1, 121); } else { if (_val5) { _peasantShould = _val5; _val5 = 0; } kernel_trigger_dispatchx(kernel_trigger_create(121)); } } break; case 4146: case 4147: case 4148: case 4149: kernel_timing_trigger(1, 121); break; case 4150: kernel_trigger_dispatchx(kernel_trigger_create(121)); break; default: break; } break; case 4055: case 4056: case 4058: case 4059: kernel_trigger_dispatchx(kernel_trigger_create(121)); break; case 4057: if (_trigger2 != -1) { kernel_trigger_dispatchx(kernel_trigger_create(_trigger2)); _trigger2 = -1; } else { kernel_trigger_dispatchx(kernel_trigger_create(121)); } break; default: break; } break; case 121: switch (_peasantMode) { case 4050: switch (_peasantShould) { case 4091: sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120, _peasantRocks, 5, 5, 0); break; case 4094: _peasantSeries = series_load("pesky peasant reach for helmet"); _peasantSeriesShadow = series_load("shadow pp reach for helmet"); _peasantSquatTo9 = series_load("peasant squat to 9"); _peasantFromSquat3 = series_load("shadow pesky from squat to pos3"); terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim1(); _peasantShould = 4095; break; case 4095: terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = triggerMachineByHash_3000(8, 6, *S2_PEASANT_NORMAL_DIRS, *S2_PEASANT_SHADOW_DIRS, 763, 325, 3, triggerMachineByHashCallback3000, "pp_walking"); sendWSMessage_10000(_peasant, 1200, 332, 2, 120, 1); _peasantMode = 4054; _peasantShould = 4148; break; default: break; } break; case 4051: switch (_peasantShould) { case 4110: sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120, _peasantRocks, 5, 5, 0); break; case 4113: _peasantSquatTo9 = series_load("peasant squat to 9"); _peasantFromSquat3 = series_load("shadow pesky from squat to pos3"); _peasantSquat3 = series_load("peasant 3 to squat"); _peasantSquat9 = series_load("shadow pesky from 9 to squat"); terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim1(); _peasantShould = 4114; break; case 4114: terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = triggerMachineByHash_3000(8, 6, *S2_PEASANT_NORMAL_DIRS, *S2_PEASANT_SHADOW_DIRS, 763, 325, 3, triggerMachineByHashCallback3000, "pp_walk"); sendWSMessage_10000(_peasant, 932, 325, 3, 121, 1); _peasantShould = 4115; break; case 4115: sendWSMessage_60000(_peasant); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim2(); _peasantShould = 4116; break; case 4116: _peasantMode = 4053; _peasantShould = 4160; setupPeasantHotspot(_peasantMode); series_unload(_peasantSquat9); series_unload(_peasantSquat3); series_unload(_peasantFromSquat3); series_unload(_peasantSquatTo9); if (!_flag2) player_set_commands_allowed(true); kernel_timing_trigger(1, 120); break; case 4117: _peasantSquatTo9 = series_load("peasant squat to 9"); _peasantFromSquat3 = series_load("shadow pesky from squat to pos3"); _peasantSquat3 = series_load("peasant 3 to squat"); _peasantSquat9 = series_load("shadow pesky from 9 to squat"); terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim1(); _peasantShould = 4118; break; case 4118: terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = triggerMachineByHash_3000(8, 6, *S2_PEASANT_NORMAL_DIRS, *S2_PEASANT_SHADOW_DIRS, 727, 325, 9, triggerMachineByHashCallback3000, "pp_walking"); sendWSMessage_10000(_peasant, 436, 332, 9, 121, 1); _peasantShould = 4119; break; case 4119: sendWSMessage_60000(_peasant); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 418, 332, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 418, 332, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim2(); _peasantShould = 4120; break; case 4120: _peasantMode = 4052; _peasantShould = 4170; setupPeasantHotspot(_peasantMode); series_unload(_peasantSquat9); series_unload(_peasantSquat3); series_unload(_peasantFromSquat3); series_unload(_peasantSquatTo9); player_set_commands_allowed(true); kernel_timing_trigger(1, 120); break; default: break; } break; case 4052: switch (_peasantShould) { case 4170: sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120, _peasantRocks, 5, 5, 0); break; case 4175: _peasantSquatTo9 = series_load("peasant squat to 9"); _peasantFromSquat3 = series_load("shadow pesky from squat to pos3"); _peasantSquat3 = series_load("peasant 3 to squat"); _peasantSquat9 = series_load("shadow pesky from 9 to squat"); terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 418, 332, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 418, 332, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim1(); _peasantShould = 4176; break; case 4176: terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = triggerMachineByHash_3000(8, 6, *S2_PEASANT_NORMAL_DIRS, *S2_PEASANT_SHADOW_DIRS, 436, 332, 3, triggerMachineByHashCallback3000, "pp_walking"); sendWSMessage_10000(_peasant, 727, 325, 3, 121, 1); _peasantShould = 4177; break; case 4177: sendWSMessage_60000(_peasant); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim2(); _peasantShould = 4178; break; case 4178: series_unload(_peasantSquat9); series_unload(_peasantSquat3); series_unload(_peasantFromSquat3); series_unload(_peasantSquatTo9); _peasantMode = 4051; _peasantShould = 4110; setupPeasantHotspot(_peasantMode); player_set_commands_allowed(true); kernel_timing_trigger(1, 120); break; default: break; } break; case 4053: switch (_peasantShould) { case 4160: sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120, _peasantRocks, 5, 5, 0); break; case 4162: _peasantSquatTo9 = series_load("peasant squat to 9"); _peasantFromSquat3 = series_load("shadow pesky from squat to pos3"); _peasantSquat3 = series_load("peasant 3 to squat"); _peasantSquat9 = series_load("shadow pesky from 9 to squat"); terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim1(); _peasantShould = 4163; break; case 4163: terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = triggerMachineByHash_3000(8, 6, *S2_PEASANT_NORMAL_DIRS, *S2_PEASANT_SHADOW_DIRS, 932, 325, 9, triggerMachineByHashCallback3000, "pp_walking"); sendWSMessage_10000(_peasant, 763, 325, 9, 121, 1); _peasantShould = 4164; break; case 4164: sendWSMessage_60000(_peasant); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim2(); _peasantShould = 4165; break; case 4165: _peasantMode = 4051; _peasantShould = 4110; setupPeasantHotspot(_peasantMode); series_unload(_peasantSquat9); series_unload(_peasantSquat3); series_unload(_peasantFromSquat3); series_unload(_peasantSquatTo9); player_set_commands_allowed(true); kernel_timing_trigger(1, 120); break; case 4166: _peasantSquatTo9 = series_load("peasant squat to 9"); _peasantFromSquat3 = series_load("shadow pesky from squat to pos3"); _peasantSquat3 = series_load("peasant 3 to squat"); _peasantSquat9 = series_load("shadow pesky from 9 to squat"); terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim1(); _peasantShould = 4167; break; case 4167: terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = triggerMachineByHash_3000(8, 6, *S2_PEASANT_NORMAL_DIRS, *S2_PEASANT_SHADOW_DIRS, 968, 325, 3, triggerMachineByHashCallback3000, "pp_walking"); sendWSMessage_10000(_peasant, 1082, 322, 3, 121, 1); _peasantShould = 4168; break; case 4168: sendWSMessage_60000(_peasant); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim2(); _peasantShould = 4169; break; case 4169: _peasantMode = 4054; _peasantShould = 4140; setupPeasantHotspot(_peasantMode); series_unload(_peasantSquat9); series_unload(_peasantSquat3); series_unload(_peasantFromSquat3); series_unload(_peasantSquatTo9); if (!_G(flags)[V061] && !_flag2) player_set_commands_allowed(true); kernel_timing_trigger(1, 120); break; default: break; } break; case 4054: switch (_peasantShould) { case 4140: sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120, _peasantRocks, 5, 5, 0); break; case 4142: _peasantSquatTo9 = series_load("peasant squat to 9"); _peasantFromSquat3 = series_load("shadow pesky from squat to pos3"); _peasantSquat3 = series_load("peasant 3 to squat"); _peasantSquat9 = series_load("shadow pesky from 9 to squat"); terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim1(); _peasantShould = 4143; break; case 4143: terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = triggerMachineByHash_3000(8, 6, *S2_PEASANT_NORMAL_DIRS, *S2_PEASANT_SHADOW_DIRS, 1082, 322, 9, triggerMachineByHashCallback3000, "pp_walking"); sendWSMessage_10000(_peasant, 968, 325, 9, 121, 1); _peasantShould = 4144; break; case 4144: sendWSMessage_60000(_peasant); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim2(); _peasantShould = 4145; break; case 4145: _peasantMode = 4053; _peasantShould = 4160; setupPeasantHotspot(_peasantMode); series_unload(_peasantSquat9); series_unload(_peasantSquat3); series_unload(_peasantFromSquat3); series_unload(_peasantSquatTo9); if (!_flag2) player_set_commands_allowed(true); kernel_timing_trigger(1, 120); break; case 4146: _peasantSeries = series_load("pesky peasant reach for helmet"); _peasantSeriesShadow = series_load("shadow pp reach for helmet"); _peasantSquatTo9 = series_load("peasant squat to 9"); _peasantFromSquat3 = series_load("shadow pesky from squat to pos3"); terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant shadow"); peasantAnim1(); _peasantShould = 4147; break; case 4147: terminateMachineAndNull(_peasant); terminateMachineAndNull(_peasantShadow); _peasant = triggerMachineByHash_3000(8, 6, *S2_PEASANT_NORMAL_DIRS, *S2_PEASANT_SHADOW_DIRS, 1118, 322, 3, triggerMachineByHashCallback3000, "pp_walking"); sendWSMessage_10000(_peasant, 1200, 332, 2, 121, 1); _peasantShould = 4148; break; case 4148: sendWSMessage_60000(_peasant); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1240, 332, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1240, 332, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant shadow"); sendWSMessage_10000(1, _peasant, _peasantSeries, 1, 36, 121, _peasantSeries, 36, 23, 2); sendWSMessage_10000(1, _peasantShadow, _peasantSeriesShadow, 1, 36, -1, _peasantSeriesShadow, 36, 23, 2); _peasantShould = 4149; break; case 4149: series_unload(_peasantSquatTo9); series_unload(_peasantFromSquat3); player_set_commands_allowed(true); _peasantMode = 4054; _peasantShould = 4150; setupPeasantHotspot(_peasantMode); kernel_timing_trigger(1, 120); break; case 4150: sendWSMessage_10000(1, _peasant, _peasantSeries, 23, 36, 121, _peasantSeries, 36, 36, 0); sendWSMessage_10000(1, _peasantShadow, _peasantSeriesShadow, 23, 36, -1, _peasantSeriesShadow, 36, 36, 0); _peasantShould = 4151; break; case 4151: sendWSMessage_10000(1, _peasant, _peasantSeries, 36, 23, 120, _peasantSeries, 23, 23, 0); sendWSMessage_10000(1, _peasantShadow, _peasantSeriesShadow, 36, 23, -1, _peasantSeriesShadow, 23, 23, 0); _peasantShould = 4150; break; default: break; } break; case 4055: sendWSMessage_10000(1, _peasant, _peskyBegLoop, 1, 16, 120, _peskyBegLoop, 16, 16, 0); _peasantMode = 4057; break; case 4056: frame = imath_ranged_rand(17, 19); sendWSMessage_10000(1, _peasant, _peskyBegLoop, frame, frame, 120, _peskyBegLoop, frame, frame, 0); break; case 4057: sendWSMessage_10000(1, _peasant, _peskyBegLoop, 16, 16, 120, _peskyBegLoop, 16, 16, 0); break; case 4058: sendWSMessage_10000(1, _peasant, _peskyBegLoop, 16, 1, 121, _peasantRocks, 1, 1, 0); _peasantMode = 4059; break; case 4059: series_unload(_peskyBegLoop); switch (_peasantMode2) { case 4052: _peasantMode = 4052; _peasantShould = 4170; break; case 4053: _peasantMode = 4053; _peasantShould = 4160; break; case 4054: _peasantMode = 4054; _peasantShould = 4140; break; default: _peasantMode = 4051; _peasantShould = 4110; break; } kernel_timing_trigger(1, 120); player_set_commands_allowed(true); break; default: break; } break; case 125: kernel_trigger_dispatchx(kernel_trigger_create(126)); break; case 126: switch (_gkMode) { case 3000: if (_gkShould == 3000 && _trigger1 != -1) { kernel_trigger_dispatchx(_trigger1); _trigger1 = -1; } sendWSMessage_10000(1, _gk, _gkFrame, 1, 1, -1, _gkFrame, 1, 1, 0); break; case 3001: _gkManyDoNeedPass = series_load("gk many do but need a pass"); if (_digiName1) { digi_play(_digiName1, 1, 255, _digiTrigger1); _digiName1 = nullptr; } sendWSMessage_10000(1, _gk, _gkManyDoNeedPass, 1, 15, 125, _gkManyDoNeedPass, 15, 15, 0); _gkShould = 3001; _gkMode = 3002; break; case 3002: sendWSMessage_10000(1, _gk, _gkManyDoNeedPass, 15, 1, 125, _gkFrame, 1, 1, 0); _gkShould = 3001; _gkMode = 3003; break; case 3003: series_unload(_gkManyDoNeedPass); _gkShould = _gkMode = 3000; break; case 3004: if (_digiName1) { digi_play(_digiName1, 1, 255, _digiTrigger1); _digiName1 = nullptr; } sendWSMessage_10000(1, _gk, _gkMayNotPass, 1, 36, 125, _gkManyDoNeedPass, 1, 1, 0); _gkShould = _gkMode = 3000; break; default: break; } break; case 130: switch (_oldLadyMode) { case 40: break; case 5666: if (_trigger3 != -1) { kernel_trigger_dispatchx(kernel_trigger_create(_trigger3)); _trigger3 = -1; } else if (_oldLadyShould == 5100) { if (imath_ranged_rand(1, 80) < 20) _oldLadyShould = 5101; kernel_timing_trigger(30, 131); } break; case 5668: if (_trigger3 != -1) { kernel_trigger_dispatchx(kernel_trigger_create(_trigger3)); _trigger3 = -1; } else { // Original has a whole switch statement, but all cases lead // to the same trigger kernel_trigger_dispatchx(kernel_trigger_create(131)); } break; case 5669: if (_trigger3 != -1) { kernel_trigger_dispatchx(kernel_trigger_create(_trigger3)); _trigger3 = -1; } else { switch (_oldLadyShould) { case 5200: if (imath_ranged_rand(1, 80) < 20) _oldLadyShould = 5201; break; case 5202: _oldLadyShould = 5200; break; default: break; } kernel_timing_trigger(30, 131); } break; default: kernel_trigger_dispatchx(kernel_trigger_create(131)); break; } break; case 131: switch (_oldLadyMode) { case 5666: switch (_oldLadyShould) { case 5100: sendWSMessage_10000(1, _oldLady, _oldLadyFrame, 1, 1, 130, _oldLadyFrame, 1, 1, 0); break; case 5101: sendWSMessage_10000(1, _oldLady, _oldLadyFeedingBirds, 1, 26, 131, _oldLadyFeedingBirds, 26, 26, 0); _oldLadyShould = 5102; break; case 5102: sendWSMessage_10000(1, _oldLady, _oldLadyFeedingBirds, 26, 1, 131, _oldLadyFrame, 1, 1, 0); _oldLadyShould = 5100; break; default: break; } break; case 5668: switch (_oldLadyShould) { case 5301: sendWSMessage_10000(1, _oldLady, _oldLady1, 1, 6, 130, _oldLady1, 6, 6, 0); _oldLadyShould = 5302; break; case 5302: sendWSMessage_10000(1, _oldLady, _oldLady1, 6, 6, 130, _oldLady1, 6, 6, 0); break; case 5303: sendWSMessage_10000(1, _oldLady, _oldLady1, 6, 6, 131, _oldLady1, 6, 6, 0); _oldLadyShould = 5304; break; case 5304: sendWSMessage_10000(1, _oldLady, _oldLady1, 6, 6, 131, _oldLady1, 6, 6, 0); _oldLadyShould = 5305; break; case 5305: _ripleyShould = 1140; _oldLadyShould = 5302; kernel_trigger_dispatchx(kernel_trigger_create(130)); break; case 5306: sendWSMessage_10000(1, _oldLady, _oldLady1, 6, 1, 131, _oldLadyFrame, 1, 1, 0); _oldLadyShould = 5307; break; case 5307: series_unload(_oldLady1); _oldLadyMode = 5666; _oldLadyShould = 5100; kernel_timing_trigger(120, 130); break; case 5308: sendWSMessage_10000(1, _oldLady, _oldLady1, 6, 6, -1, _oldLady1, 6, 6, 0); break; default: break; } break; case 5669: switch (_oldLadyShould) { case 5200: sendWSMessage_10000(1, _oldLady, _oldLadyNoHelmet, 1, 1, 130, _oldLadyNoHelmet, 1, 1, 0); break; case 5201: sendWSMessage_10000(1, _oldLady, _oldLadyNoHelmet, 1, 36, 131, _oldLadyNoHelmet, 36, 36, 0); _oldLadyShould = 5202; break; case 5202: sendWSMessage_10000(1, _oldLady, _oldLadyNoHelmet, 36, 1, 130, _oldLadyFrame, 2, 2, 0); break; default: break; } break; default: break; } break; case 140: switch (_officialMode) { case 2001: switch (_officialShould) { case 2010: if (_trigger4 != -1) { kernel_trigger_dispatchx(_trigger4); _trigger4 = -1; } else { kernel_timing_trigger(2, 141); } break; case 2020: case 2040: kernel_timing_trigger(2, 141); break; default: break; } break; case 2002: switch (_officialShould) { case 2011: case 2013: case 2014: case 2015: case 2016: case 2017: kernel_trigger_dispatchx(kernel_trigger_create(141)); break; case 2012: kernel_timing_trigger(1, 141); break; default: break; } break; default: break; } break; case 141: switch (_officialMode) { case 2001: switch (_officialShould) { case 2010: sendWSMessage_10000(1, _official, _officialStander, 1, 1, -1, _officialStander, 1, 1, 0); break; case 2020: ws_hide_walker(); _ripHandTalk = series_load("rip trek hand talk pos3"); player_update_info(); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x100, false, triggerMachineByHashCallback, "rip talks official"); _ripsh1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x100, false, triggerMachineByHashCallback, "rip talks official SHADOW"); sendWSMessage_10000(1, _ripley, _ripHandTalk, 1, 16, -1, _ripHandTalk, 1, 1, 0); sendWSMessage_10000(1, _ripsh1, _shadow3, 1, 1, -1, _shadow3, 1, 1, 0); _officialShould = 2023; digi_play("03_02p01", 1, 255, 141); break; case 2023: _officialHalt = series_load("official halt"); sendWSMessage_10000(1, _official, _officialHalt, 1, 15, 141, _officialHalt, 15, 15, 0); _officialShould = 2024; digi_play("03_02n01", 1); break; case 2024: sendWSMessage_10000(1, _official, _officialHalt, 15, 1, 141, _officialStander, 1, 1, 0); _officialShould = 2025; break; case 2025: series_unload(_officialHalt); series_unload(_ripHandTalk); _ripArmsX = series_load("rip trek arms x pos3"); _officialThroughThere = series_load("official through there"); sendWSMessage_10000(1, _ripley, _ripArmsX, 1, 15, -1, _ripArmsX, 15, 15, 0); _officialShould = 2026; digi_play("03_06p02", 1, 255, 141); break; case 2026: sendWSMessage_10000(1, _official, _officialThroughThere, 1, 14, 141, _officialThroughThere, 14, 14, 0); _officialShould = 2027; digi_play("03_06n02", 1); break; case 2027: sendWSMessage_10000(1, _official, _officialThroughThere, 14, 1, 141, _officialStander, 1, 1, 0); _officialShould = 2028; break; case 2028: series_unload(_officialThroughThere); _ripHeadDownTalkOff = series_load("rip head down talk off td33"); sendWSMessage_10000(1, _ripley, _ripHeadDownTalkOff, 1, 5, -1, _ripHeadDownTalkOff, 3, 5, 1); _officialShould = 2029; digi_play("03_07p03", 1, 255, 141); break; case 2029: sendWSMessage_10000(1, _ripley, _ripHeadDownTalkOff, 5, 1, 141, _ripArmsX, 15, 15, 0); _officialShould = 2030; break; case 2030: sendWSMessage_10000(1, _ripley, _ripArmsX, 15, 1, 141, _ripArmsX, 1, 1, 0); _officialShould = 2031; break; case 2031: series_unload(_ripArmsX); terminateMachineAndNull(_ripley); terminateMachineAndNull(_ripsh1); ws_unhide_walker(); _officialShould = 2010; kernel_trigger_dispatchx(kernel_trigger_create(140)); player_set_commands_allowed(true); break; case 2040: _officialHalt = series_load("official halt"); if (_digiName3) { digi_play(_digiName3, 1, 255, _digiTrigger3); _digiName3 = nullptr; } sendWSMessage_10000(1, _official, _officialHalt, 1, 15, 141, _officialHalt, 15, 15, 0); _officialShould = 2042; break; case 2042: sendWSMessage_10000(1, _official, _officialHalt, 15, 1, 141, _officialStander, 1, 1, 0); _officialShould = 2043; break; case 2043: series_unload(_officialHalt); _officialShould = 2010; kernel_trigger_dispatchx(kernel_trigger_create(140)); break; default: break; } break; case 2002: switch (_officialShould) { case 2011: case 2012: sendWSMessage_10000(1, _official, _officialStander, 1, 1, 140, _officialStander, 1, 1, 0); _officialShould = 2012; break; case 2013: frame = imath_ranged_rand(1, 5); sendWSMessage_10000(1, _official, _officialStander, 1, frame, 140, _officialStander, frame, frame, 0); break; case 2014: sendWSMessage_10000(1, _official, _officialThroughThere, 1, 14, 141, _officialThroughThere, 14, 14, 0); _officialShould = 2015; break; case 2015: sendWSMessage_10000(1, _official, _officialThroughThere, 14, 1, 140, _officialStander, 1, 1, 0); _officialShould = 2016; break; case 2016: _officialShould = 2012; kernel_trigger_dispatchx(kernel_trigger_create(140)); conv_resume(); break; case 2017: sendWSMessage_10000(1, _official, _officialStander, 1, 1, -1, _officialStander, 1, 1, 0); break; default: break; } break; default: break; } break; case 150: if (_ripleyMode == 1001 && _ripleyShould == 1030 && _trigger5 != -1) { kernel_trigger_dispatchx(_trigger5); _trigger5 = -1; if (_showWalker) { ws_unhide_walker(); _showWalker = false; } if (_ripley80000) { sendWSMessage_80000(_ripley); _ripley80000 = false; } } kernel_timing_trigger(3, 151); break; case 151: switch (_ripleyMode) { case 1001: switch (_ripleyShould) { case 1010: conv_load("conv203d", 10, 10, 152); conv_export_value_curr(_G(flags)[V054], 0); conv_export_value_curr(0, 1); conv_export_value_curr(0, 2); conv_export_value_curr(_G(flags)[V073], 3); conv_export_value_curr(_G(flags)[V043], 5); conv_play(); _ripleyShould = 1030; kernel_trigger_dispatchx(kernel_trigger_create(150)); break; case 1020: case 1030: sendWSMessage_10000(1, _ripley, _ripHandsBehBack, 11, 11, 150, _ripHandsBehBack, 11, 11, 0); break; case 1040: _ripleyShould = 1060; sendWSMessage_10000(1, _ripley, _ripHandsBehBack, 11, 1, 151, _ripHandsBehBack, 1, 1, 0); break; case 1060: terminateMachineAndNull(_ripley); terminateMachineAndNull(_ripsh1); series_unload(_ripHandsBehBack); _peasantMode = 4058; ws_unhide_walker(); break; default: break; } break; case 1002: switch (_ripleyShould) { case 1110: ws_hide_walker(); player_set_commands_allowed(false); _oldLady1 = series_load("old lady"); _ripKneeling = series_load("rip kneels down to old lady"); _ripKneelingTalk = series_load("rip kneeling talks to old lady"); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x400, false, triggerMachineByHashCallback, "rip in conv"); sendWSMessage_10000(1, _ripley, _ripKneeling, 1, 31, 150, _ripKneeling, 31, 31, 0); _ripleyShould = 1112; _oldLadyMode = 5668; _oldLadyShould = 5301; kernel_trigger_dispatchx(kernel_trigger_create(130)); break; case 1112: sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, 4, 150, _ripKneelingTalk, 4, 4, 0); _ripleyShould = 1113; break; case 1113: conv_load("conv203e", 10, 10, 152); conv_export_value_curr(_G(flags)[V051], 0); conv_play(); _ripleyShould = 1130; kernel_trigger_dispatchx(kernel_trigger_create(150)); break; case 1120: frame = imath_ranged_rand(5, 9); sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, frame, 150, _ripKneelingTalk, frame, frame, 0); break; case 1121: _oldLadyProtectsHelmet = series_load("old lady protect helmet"); _ripPointsAtHelmet = series_load("rip points at helmet"); _ripleyShould = 1122; sendWSMessage_10000(1, _ripley, _ripPointsAtHelmet, 1, 5, 151, _ripPointsAtHelmet, 5, 5, 0); _oldLadyShould = 5308; break; case 1122: _ripleyShould = 1123; digi_play(_digiName2.c_str(), 1, 255, 151); break; case 1123: _ripleyShould = 1124; sendWSMessage_10000(1, _ripley, _ripPointsAtHelmet, 5, 1, 151, _ripKneelingTalk, 4, 4, 0); break; case 1124: _ripleyShould = 1125; sendWSMessage_10000(1, _oldLady, _oldLadyProtectsHelmet, 1, 16, 151, _oldLadyProtectsHelmet, 16, 16, 0); break; case 1125: _ripleyShould = 1126; sendWSMessage_10000(1, _oldLady, _oldLadyProtectsHelmet, 16, 1, 151, _oldLady1, 6, 6, 0); break; case 1126: _ripleyShould = 1127; series_stream("old woman cries for mommie", 5, 0, 151); break; case 1127: _ripleyShould = 1128; digi_preload("203r56"); kernel_timing_trigger(30, 666); series_stream("rip blinks", 10, 0, 151); break; case 1128: series_unload(_ripPointsAtHelmet); series_unload(_oldLadyProtectsHelmet); _oldLadyShould = 5302; kernel_trigger_dispatchx(kernel_trigger_create(130)); _ripleyShould = 1130; kernel_timing_trigger(1, 150); conv_resume(); break; case 1130: sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 4, 4, 150, _ripKneelingTalk, 4, 4, 0); break; case 1140: _ripleyShould = 1142; sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 4, 1, 151, _ripKneelingTalk, 1, 1, 0); break; case 1142: _ripleyShould = 1143; sendWSMessage_10000(1, _ripley, _ripKneeling, 31, 1, 151, _ripKneeling, 1, 1, 0); break; case 1143: terminateMachineAndNull(_ripley); series_unload(_ripKneelingTalk); series_unload(_ripKneeling); _oldLadyShould = 5306; ws_unhide_walker(); player_set_commands_allowed(true); break; default: break; } break; case 1003: switch (_ripleyShould) { case 1210: ws_hide_walker(); player_set_commands_allowed(false); _ripHandTalk = series_load("rip trek hand talk pos3"); _ripTalker = series_load("rip trek talker pos3"); _officialThroughThere = series_load("official through there"); player_update_info(); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x100, false, triggerMachineByHashCallback, "rip talks official"); _ripsh1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x100, false, triggerMachineByHashCallback, "rip talks official SHADOW"); sendWSMessage_10000(1, _ripley, _ripTalker, 1, 1, -1, _ripTalker, 1, 1, 0); sendWSMessage_10000(1, _ripsh1, _shadow3, 1, 1, 150, _shadow3, 1, 1, 0); _ripleyShould = 1211; _officialMode = 2002; _officialShould = 2011; kernel_trigger_dispatchx(kernel_trigger_create(140)); break; case 1211: conv_load("conv203c", 10, 10, 152); conv_export_value_curr(_G(flags)[V070], 0); conv_export_pointer_curr(&_G(flags)[V071], 1); conv_play(); _ripleyShould = 1230; kernel_trigger_dispatchx(kernel_trigger_create(150)); break; case 1220: frame = imath_ranged_rand(1, 5); sendWSMessage_10000(1, _ripley, _ripTalker, 1, frame, 150, _ripTalker, frame, frame, 0); break; case 1221: sendWSMessage_10000(1, _ripley, _ripHandTalk, 1, 16, 150, _ripHandTalk, 1, 1, 0); _ripleyShould = 1230; break; case 1230: sendWSMessage_10000(1, _ripley, _ripTalker, 1, 1, 150, _ripTalker, 1, 1, 0); break; case 1240: terminateMachineAndNull(_ripley); terminateMachineAndNull(_ripsh1); series_unload(_officialThroughThere); series_unload(_ripTalker); series_unload(_ripHandTalk); _officialShould = 2017; ws_unhide_walker(); player_set_commands_allowed(true); break; default: break; } break; default: break; } break; case 152: _flag2 = false; switch (_ripleyMode) { case 1001: _ripleyShould = 1040; break; case 1002: if (_unkShould == 1121) // It never happens _ripleyShould = 1121; else _oldLadyShould = 5303; break; case 1003: _ripleyShould = 1240; break; default: break; } break; case 153: kernel_trigger_dispatchx(kernel_trigger_create(150)); break; case 300: if (_G(flags)[V061]) { hotspot_set_active("PEASANT", false); hotspot_set_active("SOLDIER'S HELMET", false); } else { ws_walk_load_walker_series(S2_PEASANT_NORMAL_DIRS, S2_PEASANT_NORMAL_NAMES); ws_walk_load_shadow_series(S2_PEASANT_SHADOW_DIRS, S2_PEASANT_SHADOW_NAMES); _peasantRocks = series_load("peasant rocks 5frames"); _peasantRocksShadow = series_load("shadow pesky rock loop"); _peasantSquat3 = series_load("peasant 3 to squat"); _peasantSquat9 = series_load("shadow pesky from 9 to squat"); _peasantX = 1100; _peasantY = 375; _peasantLayer = 0x800; _peasantScale = 75; _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _peasantX, _peasantY - 53, _peasantScale, _peasantLayer, true, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, true, triggerMachineByHashCallback, "pesky peasant shadow"); sendWSMessage_10000(1, _peasant, _peasantSquat3, 2, 18, -1, _peasantRocks, 1, 1, 0); sendWSMessage_10000(1, _peasantShadow, _peasantSquat9, 2, 18, 302, _peasantRocksShadow, 1, 1, 0); } setupOfficial(); kernel_trigger_dispatchx(kernel_trigger_create(125)); kernel_trigger_dispatchx(kernel_trigger_create(130)); break; case 302: _peasantMode = 4054; _peasantShould = 4140; setupPeasantHotspot(_peasantMode); kernel_timing_trigger(1, 120); series_unload(_peasantSquat9); series_unload(_peasantSquat3); player_set_commands_allowed(true); break; case 303: case 371: player_set_commands_allowed(true); break; case 350: kernel_trigger_dispatchx(kernel_trigger_create(125)); kernel_trigger_dispatchx(kernel_trigger_create(130)); break; case 352: if (_yellThiefFlag) digi_play("203p02", 1, 255, 93); else digi_unload("203p02"); break; case 353: kernel_timing_trigger(120, 352); break; case 354: if (_yellThiefFlag) { sendWSMessage_10000(1, _peasant, _peskyYellsThief, 17, 21, 355, _peskyYellsThief, 21, 21, 0); } else { sendWSMessage_10000(1, _peasant, _peskyYellsThief, 17, 1, -1, _peskyYellsThief, 1, 1, 0); } break; case 355: if (_yellThiefFlag) { sendWSMessage_10000(1, _peasant, _peskyYellsThief, 21, 17, 354, _peskyYellsThief, 17, 17, 0); } else { sendWSMessage_10000(1, _peasant, _peskyYellsThief, 21, 1, -1, _peskyYellsThief, 1, 1, 0); } break; case 356: terminateMachineAndNull(_official); _official = triggerMachineByHash_3000(8, 5, *OFFICIAL_NORMAL_DIRS, *OFFICIAL_SHADOW_DIRS, 1436, 362, 9, triggerMachineByHashCallback3000, "official arresting"); sendWSMessage_10000(_official, 1065, 355, 9, 357, 1); break; case 357: _yellThiefFlag = false; setGlobals1(_officialTurn9_11, 1, 19, 19, 19); sendWSMessage_110000(_official, 358); break; case 358: sendWSMessage_150000(_official, -1); ws_demand_facing(_G(my_walker), 11); sendWSMessage_10000(_official, 1025, 290, 11, 359, 1); break; case 359: setGlobals1(_officialTurn11_3, 1, 39, 39, 39, 0, 39, 23, 23, 23, 0, 23, 39, 39, 39, 0, 39, 39, 39, 39, 0); sendWSMessage_110000(_official, 360); break; case 360: sendWSMessage_120000(_official, 363); break; case 363: ws_demand_location(_G(my_walker), 1100, 290, 9); ws_walk(_G(my_walker), 1060, 290, nullptr, 364, 7); break; case 364: sendWSMessage_150000(_official, -1); ws_demand_facing(_official, 9); setGlobals1(_officialTurn3_7, 1, 27, 27, 27); sendWSMessage_110000(_official, 365); ws_walk(_G(my_walker), 1062, 313, nullptr, 8888, 7); break; case 365: sendWSMessage_150000(_official, -1); ws_demand_facing(_G(my_walker), 7); sendWSMessage_10000(_official, 1010, 345, 9, 366, 1); break; case 366: ws_walk(_G(my_walker), 280, 345, nullptr, 103, 9); kernel_timing_trigger(50, 367); break; case 367: g_engine->camera_shift_xy(0, 0); sendWSMessage_10000(_official, 345, 355, 9, -1, 1); break; case 390: sendWSMessage_10000(1, _pigeons1, _pigeonsSeries1, 1, 88, -1, _pigeonsSeries1, 1, 88, 0); break; case 392: sendWSMessage_10000(1, _pigeons3, _pigeonsSeries3, 1, 93, -1, _pigeonsSeries3, 1, 93, 0); break; case 666: digi_play("203r56", 1, 255, 667); break; case 667: digi_unload("203r56"); break; case 749: midi_stop(); break; case 1968: series_unload(_ripLooksAtHeads); break; case 4567: series_unload(_meiTalkToRip); series_unload(_ripYouSeeToIt); series_unload(_meiTurnAndTalk); series_unload(S2_MEI_NORMAL_DIRS[4]); series_unload(S2_MEI_NORMAL_DIRS[3]); series_unload(S2_MEI_NORMAL_DIRS[2]); series_unload(S2_MEI_NORMAL_DIRS[1]); series_unload(S2_MEI_NORMAL_DIRS[0]); series_unload(S2_MEI_SHADOW_DIRS[4]); series_unload(S2_MEI_SHADOW_DIRS[3]); series_unload(S2_MEI_SHADOW_DIRS[2]); series_unload(S2_MEI_SHADOW_DIRS[1]); series_unload(S2_MEI_SHADOW_DIRS[0]); _peasantRocks = series_load("peasant rocks 5frames"); _peasantRocksShadow = series_load("shadow pesky rock loop"); ws_walk_load_walker_series(S2_PEASANT_NORMAL_DIRS, S2_PEASANT_NORMAL_NAMES); ws_walk_load_shadow_series(S2_PEASANT_SHADOW_DIRS, S2_PEASANT_SHADOW_NAMES); _peasantMode = 4050; _peasantShould = 4091; setupPeasantHotspot(4050); _peasantX = 745; _peasantY = 378; _peasantLayer = 0x800; _peasantScale = 75; _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false, triggerMachineByHashCallback, "pesky peasant"); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _peasantX, _peasantY - 53, _peasantScale, _peasantLayer, false, triggerMachineByHashCallback, "pesky peasant shadow"); sendWSMessage_10000(1, _peasantShadow, _peasantRocksShadow, 1, 1, -1, _peasantRocksShadow, 1, 1, 0); setupOfficial(); setupOldLady(); setupPigeons(); kernel_timing_trigger(1, 130); kernel_timing_trigger(1, 120); kernel_timing_trigger(2, 30); break; case 6250: series_set_frame_rate(_stream1, 3000); kernel_timing_trigger(60, 81); break; case 8888: ws_walk(_G(my_walker), 940, 345, nullptr, -1, 7); break; case 9000: setGlobals1(_ripHeadTurn, 1, 4, 4, 4); sendWSMessage_110000(9002); break; case 9002: digi_play("203r51", 1, 255, 9004); break; case 9004: _g1 = triggerMachineByHash_3000(8, 19, *SNORMAL1_DIRS, *SSHADOW1_DIRS, 660, 360, 9, triggerMachineByHashCallback3000, "g1"); _g2 = triggerMachineByHash_3000(8, 20, *SNORMAL2_DIRS, *SSHADOW2_DIRS, 715, 370, 9, triggerMachineByHashCallback3000, "g2"); sendWSMessage_10000(_g1, 340, 350, 9, 9040, 0); sendWSMessage_10000(_g2, -30, 360, 9, -1, 1); sendWSMessage_140000(-1); break; case 9005: sendWSMessage_10000(_g1, -30, 350, 9, -1, 1); _sg = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x500, false, triggerMachineByHashCallback, "sg"); sendWSMessage_10000(1, _sg, _203sg01, 1, 1, -1, _203sg01, 1, 1, 0); setGlobals1(_ripHeadTurn, 6, 9, 9, 9); sendWSMessage_110000(9006); break; case 9006: kernel_timing_trigger(60, 9007); break; case 9007: sendWSMessage_140000(9008); digi_play("com125", 1, 255, 9009); break; case 9008: ws_walk(_G(my_walker), 417, 240, nullptr, -1, 1); kernel_timing_trigger(60, 9010); break; case 9009: digi_play("203r52", 1); break; case 9010: sendWSMessage_10000(_mei, 216, 332, 3, 9011, 0); kernel_timing_trigger(120, 9030); break; case 9011: sendWSMessage_10000(_mei, 417, 240, 2, -1, 1); break; case 9013: if (g_engine->game_camera_panning()) { kernel_timing_trigger(30, 9013); } else { sendWSMessage_10000(1, _sg, _203sg01, 1, 84, 9014, _203sg01, 84, 84, 0); } break; case 9014: digi_play("203_s09", 2); sendWSMessage_10000(1, _sg, _203sg01, 85, 130, 9020, _203sg01, 130, 130, 0); break; case 9020: sendWSMessage_10000(1, _sg, _203sg01, 131, 155, -1, _203sg01, 155, 155, 0); disable_player_commands_and_fade_init(9025); break; case 9025: _G(game).setRoom(204); break; case 9030: _G(camera_reacts_to_player) = false; g_engine->camera_shift_xy(640, 0); kernel_timing_trigger(30, 9013); break; case 9040: series_stream("203pu99", 5, 0, -1); sendWSMessage_10000(_g1, 200, 350, 9, 9005, 0); break; default: if (_G(kernel).trigger < 9999) error("Unhandled trigger"); break; } } void Room203::pre_parser() { const bool lookFlag = player_said_any("look", "look at"); if (lookFlag && player_said(" ")) _G(player).resetWalk(); if (lookFlag && player_said("ALLEY WALL") && _G(kernel).trigger == -1) { _G(player).resetWalk(); _G(kernel).trigger_mode = KT_PARSE; ws_walk(_G(my_walker), 710, 300, nullptr, 230, 11); _G(kernel).trigger_mode = KT_PREPARSE; } } void Room203::parser() { const bool lookFlag = player_said_any("look", "look at"); const bool talkFlag = player_said_any("talk", "talk to"); const bool takeFlag = player_said("take"); if (player_said("conv203c")) { if (_G(kernel).trigger == 1) { _ripleyShould = 1230; _officialShould = 2012; conv_resume(); } else { conv203c(); } } else if (player_said("conv203d")) { conv203d(); } else if (player_said("conv203e")) { conv203e(); } else if (player_said("enter bsa")) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); disable_player_commands_and_fade_init(1); break; case 1: _G(game).setRoom(207); break; default: break; } } else if (lookFlag && player_said("ARCHWAY")) { _G(flags)[V073] = 1; digi_play("203R15", 1); } else if (player_said("archway")) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); _G(flags)[V073] = 1; _officialMode = 2001; _officialShould = 2040; _digiName3 = "203O01"; _digiTrigger3 = -1; _trigger4 = kernel_trigger_create(2); _G(kernel).trigger_mode = KT_DAEMON; kernel_trigger_dispatchx(kernel_trigger_create(140)); _G(kernel).trigger_mode = KT_PARSE; break; case 2: player_set_commands_allowed(true); break; default: break; } } else if (player_said("leave")) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); disable_player_commands_and_fade_init(1); break; case 1: _G(game).setRoom(201); break; default: break; } } else if (player_said("pass", "gatekeeper")) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); _ripHeadTurn = series_load("203pass"); setGlobals1(_ripHeadTurn, 1, 6, 6, 6); sendWSMessage_110000(2); break; case 2: kernel_timing_trigger(60, 7); break; case 3: ws_walk(_G(my_walker), 400, 252, nullptr, 5, 1); break; case 5: disable_player_commands_and_fade_init(6); break; case 6: _G(game).setRoom(204); break; case 7: sendWSMessage_140000(3); break; default: break; } } else if (player_said("walk through")) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); _gkMayNotPass = series_load("gk may not pass"); _gkMode = 3004; _digiName1 = "203g03"; _digiTrigger1 = -1; _trigger1 = kernel_trigger_create(2); _G(kernel).trigger_mode = KT_DAEMON; kernel_trigger_dispatchx(kernel_trigger_create(125)); _G(kernel).trigger_mode = KT_PARSE; break; case 2: series_unload(_gkMayNotPass); player_set_commands_allowed(true); break; default: break; } } else if (lookFlag && player_said("HALL OF CLASSICS")) { digi_play("203r12", 1); } else if (lookFlag && player_said("GATEKEEPER")) { digi_play("203r06", 1); } else if (lookFlag && player_said("OLD LADY")) { player_set_commands_allowed(false); playSound("203r07", _G(kernel).trigger); } else if (lookFlag && player_said("SOLDIER'S HELMET ")) { digi_play("203r09a", 1); } else if (lookFlag && player_said("SOLDIER'S HELMET") && !inv_player_has("SOLDIER'S HELMET") && !_G(flags)[V060]) { _G(flags)[V051] = 1; player_set_commands_allowed(false); playSound("203r09", _G(kernel).trigger); } else if (lookFlag && player_said("PEASANT")) { digi_play("203r08", 1); } else if (lookFlag && player_said("tree")) { digi_play("203r63", 1); } else if (player_said("SHRUNKEN HEAD", "BASKET")) { digi_play("203r65", 1); } else if (player_said("SOLDIER'S HELMET", "BASKET") && inv_player_has("SOLDIER'S HELMET")) { digi_play("203r59", 1); } else if (lookFlag && player_said("BASKET")) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); _ripTugsAtCollar = series_load("rip tugs at collar"); setGlobals1(_ripTugsAtCollar, 1, 9, 9, 9, 0, 9, 1, 1, 1); sendWSMessage_110000(211); digi_play("203CLRT1", 1); break; case 211: sendWSMessage_120000(212); break; case 212: sendWSMessage_150000(213); break; case 213: series_unload(_ripTugsAtCollar); player_set_commands_allowed(true); break; default: break; } } else if (lookFlag && player_said("BLACKSMITH'S WINDOW")) { _G(flags)[V054] = 1; _G(flags)[V036] = 1; digi_play("203R34", 1); } else if (lookFlag && player_said("sign")) { digi_play("203R55", 1); } else if (lookFlag && player_said("pigeons")) { digi_play("203R57", 1); } else if (lookFlag && player_said("HERBAL SHOP")) { digi_play("203R11", 1); } else if (lookFlag && player_said("OFFICIAL")) { digi_play("203R13", 1); } else if (lookFlag && player_said("ALLEY WALL")) { if (_G(kernel).trigger != -1) lookThroughHole("203r14", _G(kernel).trigger); } else if (lookFlag && player_said("AWNING")) { digi_play("203R16", 1); } else if (lookFlag && player_said("WOODPILE")) { digi_play("203R35", 1); } else if (lookFlag && player_said("WINDOW")) { switch (_G(kernel).trigger) { case -1: _G(flags)[V072] = _peasantMode; disable_player_commands_and_fade_init(1); break; case 1: _G(game).setRoom(202); break; default: break; } } else if (lookFlag && player_said("DOOR")) { digi_play("203R37", 1); } else if (talkFlag && player_said("OLD LADY")) { g_engine->camera_shift_xy(760, 0); player_set_commands_allowed(false); _flag2 = true; if (_G(flags)[V060]) { playSound("203r23", _G(kernel).trigger); } else { _ripleyMode = 1002; _ripleyShould = 1110; _trigger3 = 153; } } else if (talkFlag && player_said("PEASANT")) { ws_hide_walker(); player_set_commands_allowed(false); player_update_info(); _ripsh1 = series_place_sprite("ripsh1", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x500); _peskyBegLoop = series_load("pesky beg loop"); _ripHandsBehBack = series_load("rip trek hands beh back pos1"); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x400, false, triggerMachineByHashCallback, "rip in conv"); _G(kernel).trigger_mode = KT_DAEMON; _ripleyMode = 1001; _ripleyShould = 1010; sendWSMessage_10000(1, _ripley, _ripHandsBehBack, 1, 11, 150, _ripHandsBehBack, 11, 11, 0); _G(kernel).trigger_mode = KT_PARSE; _peasantMode2 = _peasantMode; _peasantMode = 4055; } else if (talkFlag && player_said("OFFICIAL")) { player_set_commands_allowed(false); _G(flags)[V073] = 1; _trigger4 = -1; _G(kernel).trigger_mode = KT_DAEMON; if (_G(flags)[V071]) { _ripleyMode = 1003; _ripleyShould = 1210; kernel_trigger_dispatchx(kernel_trigger_create(150)); } else { _officialMode = 2001; _officialShould = 2020; kernel_trigger_dispatchx(kernel_trigger_create(140)); } _G(kernel).trigger_mode = KT_PARSE; } else if (talkFlag && player_said("GATEKEEPER")) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); if (_G(flags)[V069]) { kernel_trigger_dispatchx(kernel_trigger_create(1)); } else { _G(flags)[V069] = 1; digi_play("203r17", 1, 255, 1); } break; case 1: _gkMayNotPass = series_load("gk may not pass"); _gkMode = 3004; _digiName1 = "203g02"; _digiTrigger1 = -1; _trigger1 = kernel_trigger_create(2); _G(kernel).trigger_mode = KT_DAEMON; kernel_trigger_dispatchx(kernel_trigger_create(125)); _G(kernel).trigger_mode = KT_PARSE; break; case 2: series_unload(_gkMayNotPass); player_set_commands_allowed(true); break; default: break; } } else if (takeFlag && player_said("SOLDIER'S HELMET ")) { digi_play("203R39", 1); } else if (takeFlag && HERE("SOLDIER'S HELMET")) { if (!_G(flags)[V061]) { player_set_commands_allowed(false); playSound("203r58", _G(kernel).trigger); } } else if (takeFlag && player_said("pigeons")) { digi_play("203R62", 1); } else if (player_said("SOLDIER'S HELMET", "tree") && inv_player_has("SOLDIER'S HELMET")) { digi_play("203r60", 1); } else if (player_said("BUCKET", "BASKET") && inv_player_has("BUCKET")) { digi_play("203r61", 1); } else if (takeFlag && player_said("WOODPILE")) { digi_play("207R40", 1); } else if (takeFlag && player_said("BASKET")) { lookAtHeads("203r38", _G(kernel).trigger); } else if (player_said("US DOLLARS", "PEASANT") && inv_player_has("US DOLLARS")) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); _peskyAction = series_load("rip trek med reach hand pos1"); setGlobals1(_peskyAction, 1, 10, 10, 10, 0, 10, 1, 1, 1); sendWSMessage_110000(1); break; case 1: if (_G(flags)[V075]) { digi_play("203r40b", 1, 255, 2); } else { digi_play("203r40a", 1, 255, 2); _G(flags)[V075] = 1; } break; case 2: sendWSMessage_120000(3); break; case 3: sendWSMessage_150000(4); break; case 4: series_unload(_peskyAction); player_set_commands_allowed(true); break; default: break; } } else if (player_said("CHINESE YUAN", "PEASANT") && inv_player_has("CHINESE YUAN")) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); _peskyBegLoop = series_load("pesky beg loop"); _peasantMode2 = _peasantMode; _peasantMode = 4055; _peskyAction = series_load("rip trek med reach hand pos1"); setGlobals1(_peskyAction, 1, 10, 10, 10, 0, 10, 1, 1, 1); sendWSMessage_110000(1); break; case 1: _peasantMode = 4056; digi_play("203p01", 1, 255, 2); break; case 2: _peasantMode = 4058; sendWSMessage_120000(3); break; case 3: sendWSMessage_150000(4); break; case 4: series_unload(_peskyAction); player_set_commands_allowed(true); break; default: break; } } else if (player_said("OFFICIAL") && (HAS("US DOLLARS") || HAS("CHINESE YUAN"))) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); _ripHandTalk = series_load("rip trek hand talk pos3"); setGlobals1(_ripHandTalk, 1, 4, 4, 4, 0, 4, 1, 1, 1); sendWSMessage_110000(4); break; case 4: _officialMode = 2001; _officialShould = 2040; _digiName3 = "203O02"; _digiTrigger3 = -1; _trigger4 = kernel_trigger_create(5); _G(kernel).trigger_mode = KT_DAEMON; kernel_trigger_dispatchx(kernel_trigger_create(140)); _G(kernel).trigger_mode = KT_PARSE; break; case 5: sendWSMessage_120000(6); break; case 6: sendWSMessage_150000(7); break; case 7: series_unload(_ripHandTalk); player_set_commands_allowed(true); break; default: break; } } else if (player_said("SEVEN SPOKES", "ALLEY WALL") && inv_player_has("SEVEN SPOKES")) { if (_G(flags)[V061]) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); ws_hide_walker(); _ripley = series_stream("climbs wall", 5, 3584, -1); series_stream_break_on_frame(_ripley, 21, 203); break; case 202: inv_move_object("SEVEN SPOKES", 999); _G(game).setRoom(204); break; case 203: digi_play("203_s06", 1, 100, -1); series_stream_break_on_frame(_ripley, 49, 204); break; case 204: series_stream_break_on_frame(_ripley, 63, 205); break; case 205: series_stream_break_on_frame(_ripley, 74, 206); digi_play("203_s06", 1, 100, -1); break; case 206: series_stream_break_on_frame(_ripley, 121, 207); digi_play("203_s06", 1, 100, -1); break; case 207: series_stream_break_on_frame(_ripley, 123, 8833); digi_play("203_s06", 1, 100, -1); break; case 208: series_stream_break_on_frame(_ripley, 202, 209); digi_play("203_s06", 1, 100, -1); break; case 209: digi_play("203_s06", 1, 100, -1); series_stream_break_on_frame(_ripley, 315, 3333); break; case 3333: disable_player_commands_and_fade_init(202); break; case 8833: digi_play("203_s07", 1, 100, -1); series_stream_break_on_frame(_ripley, 151, 208); break; default: break; } } else { player_set_commands_allowed(false); _G(player).disable_hyperwalk = true; _trigger2 = 90; } } else if (player_said("OLD LADY") && (HAS("US DOLLARS") || HAS("CHINESE YUAN"))) { if (_G(flags)[V051] != 0 && _G(flags)[V060] == 0) { _trigger3 = 40; player_set_commands_allowed(false); } else { playSound("203r19", _G(kernel).trigger); } } else if (player_said("RIPLEY PHOTO", "OLD LADY") && inv_player_has("RIPLEY PHOTO")) { player_set_commands_allowed(false); _flag2 = true; g_engine->camera_shift_xy(760, 0); _trigger3 = 60; } else if (player_said("SOLDIER'S HELMET", "AWNING") && inv_player_has("SOLDIER'S HELMET")) { switch (_G(kernel).trigger) { case -1: _G(flags)[V061] = 1; ws_hide_walker(); player_set_commands_allowed(false); hotspot_set_active("SOLDIER'S HELMET ", true); series_load("one frame helmet"); _ripTossesHelmet = series_load("rip tosses helmet"); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 960, -53, 100, 0x100, false, triggerMachineByHashCallback, "rip throws helmet"); sendWSMessage_10000(1, _ripley, _ripTossesHelmet, 1, 33, 2, _ripTossesHelmet, 33, 33, 0); break; case 2: digi_play("203_s03", 1); sendWSMessage_10000(1, _ripley, _ripTossesHelmet, 33, 42, 3, _ripTossesHelmet, 42, 42, 0); break; case 3: setupHelmetHotspot(); terminateMachineAndNull(_ripley); series_unload(_ripTossesHelmet); series_place_sprite("one frame helmet", 0, 960, -53, 100, 0x700); ws_unhide_walker(); kernel_timing_trigger(3, 4); break; case 4: inv_move_object("SOLDIER'S HELMET", 203); player_update_info(); ws_walk(_G(my_walker), _G(player_info).x + 65, _G(player_info).y + 10, nullptr, -1, 10); _val1 = 1; if (_peasantMode == 4050) { _peasantMode = 4050; _peasantShould = 4094; } else { _val5 = 4146; } break; default: break; } } else if (player_said("BUCKET", "AWNING") && inv_player_has("BUCKET")) { switch (_G(kernel).trigger) { case -1: ws_hide_walker(); player_set_commands_allowed(false); _ripTossesBucket = series_load("rip tosses bucket"); _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 960, -53, 100, 0x100, false, triggerMachineByHashCallback, "rip throws bucket"); sendWSMessage_10000(1, _ripley, _ripTossesBucket, 1, 47, 1, _ripTossesBucket, 47, 47, 0); break; case 1: terminateMachineAndNull(_ripley); ws_unhide_walker(); series_unload(_ripTossesBucket); _oneFrameBucket = series_load("one frame bucket"); series_place_sprite("one frame bucket", 0, 960, -53, 100, 0x700); if (_peasantShould == 4150 || _peasantShould == 4151) player_set_commands_allowed(true); else _peasantShould = 4146; break; default: break; } } else if (player_said("GATEKEEPER") && (HAS("US DOLLARS") || HAS("CHINESE YUAN"))) { switch (_G(kernel).trigger) { case -1: player_set_commands_allowed(false); _gkMayNotPass = series_load("gk may not pass"); _peskyAction = series_load("rip trek med reach hand pos1"); setGlobals1(_peskyAction, 1, 10, 10, 10, 1, 10, 1, 1, 1, 1); sendWSMessage_110000(1); break; case 1: _gkMode = 3004; _digiName1 = nullptr; _digiTrigger1 = -1; _trigger1 = kernel_trigger_create(2); _G(kernel).trigger_mode = KT_DAEMON; kernel_trigger_dispatchx(kernel_trigger_create(125)); _G(kernel).trigger_mode = KT_PARSE; break; case 2: sendWSMessage_120000(3); break; case 3: sendWSMessage_150000(4); break; case 4: series_unload(_peskyAction); series_unload(_gkMayNotPass); player_set_commands_allowed(true); break; default: break; } } else if (player_said("SOLDIER'S HELMET", "PEASANT")) { digi_play("203r64", 1); } else if (player_said("journal") && !takeFlag && !lookFlag && !inv_player_has(_G(player).noun)) { if (_G(flags)[kChinshiCartoon] == 1) { digi_play("203r54", 1); } else { if (_G(kernel).trigger == 6) { _G(flags)[V089] = 1; _G(flags)[kChinshiCartoon] = 1; } sketchInJournal("203r53"); } } else if (lookFlag && !inv_player_has(_G(player).noun)) { switch (_G(kernel).trigger) { case -1: if (_G(flags)[V050]) { digi_play("203R36A", 1); } else { _G(flags)[V050] = 1; player_set_commands_allowed(false); _flag2 = true; digi_play("203R36", 1, 255, 1); } break; case 1: _flag2 = false; player_set_commands_allowed(true); digi_play("203R36A", 1); break; default: break; } } else { return; } _G(player).command_ready = false; } void Room203::syncGame(Common::Serializer &s) { s.syncAsSint32LE(_ripleyMode); s.syncAsSint32LE(_ripleyShould); s.syncAsSint32LE(_oldLadyMode); s.syncAsSint32LE(_oldLadyShould); s.syncAsSint32LE(_peasantMode); s.syncAsSint32LE(_peasantMode2); s.syncAsSint32LE(_peasantShould); s.syncAsSint32LE(_officialMode); s.syncAsSint32LE(_officialShould); s.syncAsSint32LE(_gkMode); s.syncAsSint32LE(_gkShould); } void Room203::setupHelmetHotspot() { for (HotSpotRec *hs = _G(currentSceneDef).hotspots; hs; hs = hs->next) { if (!strcmp(hs->vocab, "SOLDIER'S HELMET")) { hs->active = _G(flags)[V060] ? !inv_player_has("SOLDIER'S HELMET") && hs->lr_x > 1200 : hs->lr_x < 1200; break; } } } void Room203::setupPeasantHotspot(int mode) { for (HotSpotRec *hs = _G(currentSceneDef).hotspots; hs; hs = hs->next) { if (!strcmp(hs->vocab, "PEASANT")) { switch (mode) { case 4050: case 4051: hs->active = hs->lr_x > 450 && hs->lr_x < 800; break; case 4052: hs->active = hs->lr_x < 450; break; case 4053: hs->active = hs->lr_x > 800 && hs->lr_x < 1040; break; case 4054: hs->active = _peasantShould != 4150 && hs->lr_x > 1040; break; default: break; } break; } } } void Room203::setupGk() { _gkFrame = series_load("gk single frame"); _gk = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x800, false, triggerMachineByHashCallback, "gk single frame"); _gkMode = _gkShould = 3000; sendWSMessage_10000(1, _gk, _gkFrame, 1, 1, -1, _gkFrame, 1, 1, 0); kernel_trigger_dispatchx(kernel_trigger_create(125)); } void Room203::setupOldLady() { _oldLadyFrame = series_load("old lady - two single frames"); if (_G(flags)[V060]) { hotspot_set_active("SOLDIER'S HELMET", false); _oldLadyNoHelmet = series_load("old lady feeding no helmet"); _oldLadyMode = 5569; _oldLadyShould = 5200; _oldLady = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, false, triggerMachineByHashCallback, "ol"); sendWSMessage_10000(1, _oldLady, _oldLadyNoHelmet, 1, 1, -1, _oldLadyNoHelmet, 1, 1, 0); } else { _oldLadyFeedingBirds = series_load("old lady feeding birds"); _oldLady = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, false, triggerMachineByHashCallback, "ol"); _oldLadyMode = 5666; _oldLadyShould = 5100; sendWSMessage_10000(1, _oldLady, _oldLadyFrame, 1, 1, -1, _oldLadyFrame, 1, 1, 0); } } void Room203::setupPigeons() { _pigeonsSeries1 = series_load("pigeon series of flcs 1"); _pigeonsSeries3 = series_load("pigeon series of flcs 3"); _pigeons1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1045, 373, 85, 0, false, triggerMachineByHashCallback, "pig1"); _pigeons3 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1065, 370, 85, 1, false, triggerMachineByHashCallback, "pig3"); kernel_trigger_dispatchx(kernel_trigger_create(392)); } void Room203::setupOfficial() { _officialMode = 2001; _officialShould = 2010; _officialStander = series_load("official stander"); _official = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1436, 362, 85, 0xf00, false, triggerMachineByHashCallback, "of"); _officialShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1436, 362, 85, 0xf00, false, triggerMachineByHashCallback, "ofSH"); sendWSMessage_10000(1, _official, _officialStander, 1, 1, -1, _officialStander, 1, 1, 0); sendWSMessage_10000(1, _officialShadow, _shadow3, 1, 1, -1, _shadow3, 1, 1, 0); } void Room203::setupPeasant() { _peasantRocks = series_load("peasant rocks 5frames"); _peasantRocksShadow = series_load("shadow pesky rock loop"); ws_walk_load_walker_series(S2_PEASANT_NORMAL_DIRS, S2_PEASANT_NORMAL_NAMES); ws_walk_load_shadow_series(S2_PEASANT_SHADOW_DIRS, S2_PEASANT_SHADOW_NAMES); setupPeasantHotspot(_peasantMode); _peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _peasantX, _peasantY - 53, _peasantScale, _peasantLayer, false, triggerMachineByHashCallback, "pp"); sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120, _peasantRocks, 5, 5, 0); _peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _peasantX, _peasantY - 53, _peasantScale, _peasantLayer, false, triggerMachineByHashCallback, "pp sh"); sendWSMessage_10000(1, _peasant, _peasantRocksShadow, 1, 1, -1, _peasantRocksShadow, 1, 1, 0); } void Room203::peasantWalk() { player_update_info(); switch (_peasantShould) { case 4113: case 4142: case 4162: case 4166: if (_G(player_info).y > 310 && _G(player_info).y < 330 && _G(player_info).x > 735 && _G(player_info).x < 1140) { if (_G(player_info).facing == 1 || _G(player_info).facing == 2 || _G(player_info).facing == 10 || _G(player_info).facing == 11) ws_walk(_G(my_walker), _G(player_info).x, 294, nullptr, -1, 0); else ws_walk(_G(my_walker), _G(player_info).x, 350, nullptr, -1, 0); } break; case 4117: case 4175: if (_G(player_info).y > 315 && _G(player_info).y < 335 && _G(player_info).x > 373 && _G(player_info).x < 763) { ws_walk(_G(my_walker), _G(player_info).x, 350, nullptr, -1, 0); } break; default: break; } } void Room203::peasantAnim1() { sendWSMessage_10000(1, _peasant, _peasantSquatTo9, 1, 11, 121, _peasantSquatTo9, 11, 11, 0); sendWSMessage_10000(1, _peasantShadow, _peasantFromSquat3, 1, 11, -1, _peasantFromSquat3, 11, 11, 0); } void Room203::peasantAnim2() { sendWSMessage_10000(1, _peasant, _peasantSquat3, 6, 18, -1, _peasantRocks, 1, 1, 0); sendWSMessage_10000(1, _peasantShadow, _peasantSquat9, 6, 18, 121, _peasantRocksShadow, 1, 1, 0); } void Room203::conv203c() { const char *sound = conv_sound_to_play(); const int who = conv_whos_talking(); const int node = conv_current_node(); const int entry = conv_current_entry(); if (sound) { digi_play(sound, 1, 255, (node == 3 && entry == 0 && who == 0) ? -1 : 1); if (who <= 0) { _officialShould = (node == 3 && entry == 0) ? 2014 : 2013; } else if (who == 1) { _ripleyShould = (node == 1 && entry == 0) ? 1221 : 1220; } } else { conv_resume(); } } void Room203::conv203d() { const char *sound = conv_sound_to_play(); const int who = conv_whos_talking(); if (_G(kernel).trigger == 1) { if (who <= 0) _peasantMode = 4057; else if (who == 1) _ripleyShould = 1030; conv_resume(); } else { if (who <= 0) _peasantMode = 4056; else if (who == 1) _ripleyShould = 1020; if (sound) digi_play(sound, 1, 255, 1); else conv_resume(); } } void Room203::conv203e() { const char *sound = conv_sound_to_play(); const int who = conv_whos_talking(); const int node = conv_current_node(); const int entry = conv_current_entry(); if (_G(kernel).trigger == 1) { if (who == 1) _ripleyShould = 1130; conv_resume(); } else { if (who <= 0) { _oldLadyShould = 5302; } else if (who == 1) { if (node == 1 && entry == 3) { _digiName2 = sound; _ripleyShould = 1121; } else { _unkShould = 1120; _ripleyShould = 1120; } } if (!sound) { conv_resume(); } else if (node != 1 || entry != 3) { digi_play(sound, 1, 255, 1); } } } void Room203::playSound(const char *digiName, int trigger) { switch (trigger) { case -1: _flag2 = true; player_set_commands_allowed(false); _ripLookDown = series_load("rip trek look down pos3"); setGlobals1(_ripLookDown, 1, 3, 3, 3, 0, 3, 1, 1, 1); sendWSMessage_110000(210); break; case 210: digi_play(digiName, 1, 255, 211); break; case 211: sendWSMessage_120000(212); break; case 212: sendWSMessage_150000(213); break; case 213: series_unload(_ripLookDown); _flag2 = false; player_set_commands_allowed(true); break; default: break; } } void Room203::lookThroughHole(const char *digiName, int trigger) { switch (trigger) { case 230: player_set_commands_allowed(false); _ripLooksThroughHole = series_load("rip looks through hole pos1"); setGlobals1(_ripLooksThroughHole, 1, 12, 12, 12, 1, 12, 1, 1, 1); sendWSMessage_110000(231); break; case 231: if (digiName) digi_play(digiName, 1, 255, 232); else kernel_timing_trigger(40, 232); break; case 232: sendWSMessage_120000(233); break; case 233: sendWSMessage_150000(234); break; case 234: series_unload(_ripLooksThroughHole); player_set_commands_allowed(true); break; default: break; } } void Room203::lookAtHeads(const char *digiName, int trigger) { switch (trigger) { case -1: player_set_commands_allowed(false); _ripLookAtHeadsTalkMei = series_load("rip look at heads talk mei"); setGlobals1(_ripLookAtHeadsTalkMei, 11, 16, 16, 16, 1, 16, 11, 11, 11); sendWSMessage_110000(220); break; case 220: if (digiName) digi_play(digiName, 1, 255, 221); else kernel_timing_trigger(40, 221); break; case 221: sendWSMessage_120000(222); break; case 222: sendWSMessage_150000(223); break; case 223: series_unload(_ripLookAtHeadsTalkMei); player_set_commands_allowed(true); break; default: break; } } } // namespace Rooms } // namespace Riddle } // namespace M4