875 lines
23 KiB
C++
875 lines
23 KiB
C++
/* 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 <http://www.gnu.org/licenses/ },.
|
|
*
|
|
*/
|
|
|
|
#include "m4/graphics/gr_series.h"
|
|
#include "m4/gui/gui_sys.h"
|
|
#include "m4/platform/keys.h"
|
|
#include "m4/riddle/rooms/section3/room304.h"
|
|
|
|
#include "m4/adv_r/other.h"
|
|
#include "m4/riddle/vars.h"
|
|
#include "m4/riddle/riddle.h"
|
|
|
|
namespace M4 {
|
|
namespace Riddle {
|
|
namespace Rooms {
|
|
|
|
void Room304::preload() {
|
|
if (_G(flags)[V000]) {
|
|
_G(art_base_override) = "RIPLEYS OFFICE-TREK";
|
|
_G(use_alternate_attribute_file) = false;
|
|
_G(player).walker_type = WALKER_ALT;
|
|
_G(player).shadow_type = SHADOW_ALT;
|
|
} else {
|
|
_G(player).walker_type = WALKER_PLAYER;
|
|
_G(player).shadow_type = SHADOW_PLAYER;
|
|
}
|
|
}
|
|
|
|
void Room304::init() {
|
|
interface_show();
|
|
_val1 = 0;
|
|
|
|
if (_G(game).previous_room != KERNEL_RESTORING_GAME)
|
|
_closeCartoonFl = false;
|
|
|
|
if (_G(game).previous_room == 303 && _G(flags)[V001])
|
|
_G(game).previous_room = 354;
|
|
|
|
if (_G(game).previous_room == KERNEL_RESTORING_GAME && _G(flags)[V001])
|
|
_G(game).previous_room = 354;
|
|
|
|
hotspot_set_active(_G(flags)[V001] ? "RUG" : "RUG ", false);
|
|
|
|
switch (_G(game).previous_room) {
|
|
case KERNEL_RESTORING_GAME:
|
|
if (_G(flags)[V001])
|
|
midi_play("thinker2", 255, true, -1, 949);
|
|
|
|
if (_G(flags)[V084] == 2 || player_been_here(201))
|
|
_sword = series_show_sprite("one frame sword", 0, 0xa00);
|
|
else
|
|
hotspot_set_active("SAMURAI SWORD", false);
|
|
break;
|
|
|
|
case 303:
|
|
player_set_commands_allowed(false);
|
|
ws_demand_location(_G(my_walker), 458, 263, 8);
|
|
|
|
if (_G(flags)[V084] == 2 || player_been_here(201))
|
|
_sword = series_show_sprite("one frame sword", 0, 0xa00);
|
|
else
|
|
hotspot_set_active("SAMURAI SWORD", false);
|
|
|
|
kernel_timing_trigger(1, 51);
|
|
break;
|
|
|
|
default:
|
|
AddSystemHotkey(KEY_ESCAPE, Hotkeys::escape_key_pressed);
|
|
AddSystemHotkey(KEY_F2, Hotkeys::saveGame);
|
|
AddSystemHotkey(KEY_F3, Hotkeys::loadGame);
|
|
|
|
if (_G(flags)[V001]) {
|
|
mouse_show();
|
|
_G(flags)[V001] = 1;
|
|
digi_preload("304r52");
|
|
digi_preload("304_s01");
|
|
digi_preload("304_s04");
|
|
player_set_commands_allowed(false);
|
|
|
|
_useSword = _useHandlingStick = false;
|
|
_cobraKillingFl = false;
|
|
ws_demand_location(_G(my_walker), 452, 285, 9);
|
|
kernel_timing_trigger(1, 49);
|
|
_trunk = series_show_sprite("one frame trunk", 0, 0);
|
|
_stick = series_show_sprite("one frame stick", 0, 0xf00);
|
|
|
|
LoadWSAssets("304 MC SCRIPT", _G(master_palette));
|
|
|
|
_mei1 = series_load("MEI STANDS AND LOOKS");
|
|
_G(globals)[GLB_TEMP_1] = _mei1 << 24;
|
|
_G(globals)[GLB_TEMP_2] = 0xf050000;
|
|
|
|
_mei2 = series_load("MEI TURNS INTO WALKER");
|
|
_G(globals)[GLB_TEMP_3] = _mei2 << 24;
|
|
_G(globals)[GLB_TEMP_4] = 0xf050000;
|
|
|
|
_mei3 = series_load("MEI CHEN NY WALKER POS4");
|
|
_G(globals)[GLB_TEMP_5] = _mei3 << 24;
|
|
|
|
_mei = TriggerMachineByHash(32, nullptr, -1, -1, intrMsgNull, false, "MACHINE mc");
|
|
|
|
LoadWSAssets("304 FL SN SCRIPT", _G(master_palette));
|
|
AddWSAssetCELS("test3", 2, nullptr);
|
|
AddWSAssetCELS("ripsh3", 12, nullptr);
|
|
_smoke = series_load("LF AND COBRA FIRE SMOKE", -1, _G(master_palette));
|
|
_G(globals)[GLB_TEMP_1] = _smoke << 24;
|
|
_G(globals)[GLB_TEMP_2] = 0x10000;
|
|
|
|
_machine2 = TriggerMachineByHash(45, nullptr, -1, -1, intrMsg, false, "MACHINE fl snake rock");
|
|
}
|
|
|
|
_sword = series_show_sprite("one frame sword", 0, 0xa00);
|
|
break;
|
|
}
|
|
|
|
if (!_G(flags)[V001]) {
|
|
hotspot_set_active("MEI CHEN", false);
|
|
hotspot_set_active("FENG LI", false);
|
|
|
|
if (_G(flags)[V084] != 1 || player_been_here(301)) {
|
|
hotspot_set_active("HANDLING STICK", false);
|
|
} else {
|
|
_stick = series_show_sprite("one frame stick", 0, 0xf00);
|
|
}
|
|
}
|
|
}
|
|
|
|
void Room304::daemon() {
|
|
switch (_G(kernel).trigger) {
|
|
case 49:
|
|
ws_walk(_G(my_walker), 387, 292, nullptr, 50, 9);
|
|
digi_play("304m01", 1, 255, 60);
|
|
break;
|
|
|
|
case 50:
|
|
player_set_commands_allowed(true);
|
|
break;
|
|
|
|
case 51:
|
|
ws_walk(_G(my_walker), 431, 287, nullptr, 50, 8);
|
|
break;
|
|
|
|
case 60:
|
|
midi_play("thinker2", 255, true, -1, 949);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void Room304::pre_parser() {
|
|
const bool takeFlag = player_said("take");
|
|
const bool useFlag = player_said("gear");
|
|
|
|
if (_closeCartoonFl) {
|
|
terminateMachineAndNull(_cartoonMach);
|
|
_closeCartoonFl = false;
|
|
intr_cancel_sentence();
|
|
hotspot_restore_all();
|
|
interface_show();
|
|
}
|
|
|
|
// At the very start of the game, you can't freely move around
|
|
// the room until the Cobra has been dealt with
|
|
if (_G(flags)[V001]) {
|
|
_G(player).resetWalk();
|
|
|
|
if ((takeFlag || useFlag) && player_said("samurai sword")) {
|
|
player_set_commands_allowed(false);
|
|
_useSword = true;
|
|
digi_preload("304_s10");
|
|
digi_preload("304_s05");
|
|
_cutSnake = series_load("CUT SNAKE");
|
|
sendWSMessage(0xa0000, 0, _machine2, 0, nullptr, 1);
|
|
}
|
|
|
|
if ((takeFlag || useFlag) && player_said("handling stick")) {
|
|
digi_preload("304_s03");
|
|
digi_preload("304_s08");
|
|
digi_preload("304_s02");
|
|
digi_preload("304_s11");
|
|
_useHandlingStick = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Room304::parser() {
|
|
const bool lookFlag = player_said_any("look", "look at");
|
|
const bool takeFlag = player_said("take");
|
|
const bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
|
|
|
|
if (_G(flags)[V001] && _cobraKillingFl && _G(kernel).trigger >= 49 && _G(kernel).trigger <= 54) {
|
|
switch (_G(kernel).trigger) {
|
|
case 49:
|
|
ws_hide_walker();
|
|
_cobraKills = series_ranged_play("COBRA KILLS RIP AND LF",
|
|
1, 0, 1, 4, 100, 0x200, 5, 50);
|
|
break;
|
|
case 50:
|
|
_cobraKills = series_ranged_play("COBRA KILLS RIP AND LF",
|
|
1, 0, 5, 19, 100, 0x200, 5, 51);
|
|
digi_play("304_s07", 1);
|
|
break;
|
|
case 51:
|
|
_cobraKills = series_ranged_play("COBRA KILLS RIP AND LF",
|
|
1, 0, 20, 41, 100, 0x200, 5, 54);
|
|
digi_play("304_s07", 1);
|
|
break;
|
|
case 52:
|
|
_cobraKills = series_ranged_play("COBRA KILLS RIP AND LF",
|
|
1, 0, 51, 51, 100, 0x200, 3000, -1);
|
|
disable_player_commands_and_fade_init(-1);
|
|
midi_fade_volume(0, 120);
|
|
kernel_timing_trigger(120, 53);
|
|
break;
|
|
case 53:
|
|
other_save_game_for_resurrection();
|
|
_G(game).setRoom(413);
|
|
break;
|
|
case 54:
|
|
_cobraKills = series_ranged_play("COBRA KILLS RIP AND LF",
|
|
1, 0, 42, 51, 100, 0x200, 5, 52);
|
|
digi_play("304_s12", 2);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
} else if (lookFlag && player_said("cartoon")) {
|
|
if (_G(flags)[V001]) {
|
|
digi_play("304r13", 1);
|
|
|
|
} else {
|
|
hotspot_hide_all();
|
|
interface_hide();
|
|
intr_cancel_sentence();
|
|
hotspot_add_dynamic("x", " ", 0, 0, 1500, 374, 0);
|
|
|
|
_closeCartoonFl = true;
|
|
_cartoonMach = series_show_sprite(_G(flags)[V000] ? "394pu99" : "304pu99", 0, 0);
|
|
digi_play("304r59", 1);
|
|
}
|
|
} else if (_G(kernel).trigger == 749) {
|
|
midi_stop();
|
|
} else if (_G(flags)[V001] && (takeFlag || useFlag) && player_said("samurai sword")) {
|
|
if (_G(flags)[V001]) {
|
|
switch (_G(kernel).trigger) {
|
|
case 11:
|
|
terminateMachineAndNull(_sword);
|
|
series_ranged_play("CUT SNAKE", 1, 0, 11, 22, 100, 0x200, 4, 12);
|
|
digi_play("304_s10", 1);
|
|
break;
|
|
case 12:
|
|
series_ranged_play("CUT SNAKE", 1, 0, 23, 55, 100, 0x200, 4, 13);
|
|
break;
|
|
case 13:
|
|
series_ranged_play("CUT SNAKE", 1, 0, 56, 69, 100, 0x200, 4, 14);
|
|
digi_play("304_s09", 2);
|
|
break;
|
|
case 14:
|
|
midi_fade_volume(0, 120);
|
|
kernel_timing_trigger(120, 749);
|
|
Common::strcpy_s(_G(player).noun, "HANDLING STICK");
|
|
series_ranged_play("CUT SNAKE", 1, 0, 70, 89, 100, 0x200, 4, 17);
|
|
digi_play("com125", 1);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
} else {
|
|
digi_play("304r64", 1);
|
|
}
|
|
} else if (_G(flags)[V001] && (takeFlag || useFlag) && player_said("handling stick")) {
|
|
// Catching snake with the handling stick, or killing it
|
|
// with the sword
|
|
handlingStickAndSword();
|
|
|
|
} else if (lookFlag && player_said_any("native mask", "shield")) {
|
|
digi_play("304r05", 1);
|
|
} else if (lookFlag && player_said("mailbag")) {
|
|
digi_play("304r15", 1);
|
|
} else if (lookFlag && player_said("picture")) {
|
|
digi_play("304r16", 1);
|
|
} else if (lookFlag && player_said("globe")) {
|
|
digi_play("304r18", 1);
|
|
} else if (lookFlag && player_said("vase")) {
|
|
digi_play("304r19", 1);
|
|
} else if (lookFlag && player_said_any("rug", "rug ")) {
|
|
digi_play("304r20", 1);
|
|
} else if (lookFlag && player_said("light switch")) {
|
|
digi_play("304r21", 1);
|
|
} else if (lookFlag && player_said("failing cabinet")) {
|
|
digi_play("304r29", 1);
|
|
} else if (takeFlag && player_said("flat file")) {
|
|
digi_play("304r30", 1);
|
|
} else if (takeFlag && player_said("cartoon")) {
|
|
digi_play("304r35", 1);
|
|
} else if (takeFlag && player_said("picture")) {
|
|
digi_play("304r36", 1);
|
|
} else if (useFlag && player_said("flat file")) {
|
|
digi_play(_G(flags)[V001] ? "304r46" : "304r76", 1);
|
|
} else if (useFlag && player_said("filing cabinet")) {
|
|
digi_play(_G(flags)[V001] ? "304r45" : "304r75", 1);
|
|
} else if (useFlag && player_said("trunk")) {
|
|
digi_play(_G(flags)[V001] ? "304r47" : "304r70", 1);
|
|
} else if (lookFlag && player_said("feng li")) {
|
|
digi_play("304r03", 1);
|
|
} else if (lookFlag && player_said("mei chen")) {
|
|
digi_play("304r04", 1);
|
|
} else if (lookFlag && player_said("beer stein") && _G(kernel).trigger == -1) {
|
|
digi_play("304r06", 1, 255, _G(flags)[V001] ? 1 : -1);
|
|
} else if (lookFlag && player_said("beer stein") && _G(kernel).trigger == 1) {
|
|
digi_play("304r07", 1);
|
|
} else if (lookFlag && player_said("desk")) {
|
|
digi_play(_G(flags)[V001] ? "304r08" : "304r56", 1);
|
|
} else if (lookFlag && player_said("filing cabinet")) {
|
|
digi_play(_G(flags)[V001] ? "304r09" : "304r57", 1);
|
|
} else if (lookFlag && player_said("flat file")) {
|
|
digi_play(_G(flags)[V001] ? "304r10" : "304r58", 1);
|
|
} else if (lookFlag && player_said("samurai sword")) {
|
|
digi_play("304r11", 1);
|
|
} else if (lookFlag && player_said("handling stick")) {
|
|
digi_play(_G(flags)[V001] ? "304r12" : "304r82", 1);
|
|
} else if (lookFlag && player_said("trunk")) {
|
|
if (_G(flags)[V001])
|
|
digi_play("304r14", 1);
|
|
else if (_G(flags)[V000] || _G(flags)[V084] == 1)
|
|
digi_play("304r61", 1);
|
|
else
|
|
digi_play("304r60", 1);
|
|
} else if (lookFlag && player_said("bookshelf")) {
|
|
digi_play(_G(flags)[V001] ? "304r17" : "304r62", 1);
|
|
} else if (player_said("exit")) {
|
|
if (_G(flags)[V001]) {
|
|
digi_play("304r01", 1);
|
|
} else {
|
|
switch (_G(kernel).trigger) {
|
|
case -1:
|
|
disable_player_commands_and_fade_init(1);
|
|
break;
|
|
case 1:
|
|
_G(game).setRoom(303);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
} else if (takeFlag && player_said("native mask")) {
|
|
digi_play(_G(flags)[V001] ? "304r25" : "304r66", 1);
|
|
} else if (takeFlag && player_said("shield")) {
|
|
digi_play(_G(flags)[V001] ? "304r26" : "304r67", 1);
|
|
} else if (takeFlag && player_said("samurai sword") && _G(flags)[V084] == 2) {
|
|
digi_play("304r64", 1);
|
|
} else if (takeFlag && player_said("handling stick") && _G(flags)[V084] == 1) {
|
|
digi_play("304r65", 1);
|
|
} else if (takeFlag && player_said("beer stein")) {
|
|
digi_play(_G(flags)[V001] ? "304r27" : "304r68", 1);
|
|
} else if (takeFlag && player_said("desk")) {
|
|
digi_play(_G(flags)[V001] ? "304r28" : "304r69", 1);
|
|
} else if (takeFlag && player_said("trunk")) {
|
|
digi_play(_G(flags)[V001] ? "304r31" : "304r70", 1);
|
|
} else if (takeFlag && player_said("mailbag")) {
|
|
digi_play("304r32", 1);
|
|
} else if (takeFlag && player_said("globe")) {
|
|
digi_play(_G(flags)[V001] ? "304r33" : "304r71", 1);
|
|
} else if (takeFlag && player_said("vase")) {
|
|
digi_play(_G(flags)[V001] ? "304r34" : "304r72", 1);
|
|
} else if (takeFlag && player_said("bookshelf")) {
|
|
digi_play(_G(flags)[V001] ? "304r37" : "304r37a", 1);
|
|
} else if (takeFlag && player_said("rug")) {
|
|
digi_play("304r73", 1);
|
|
} else if (takeFlag && player_said("rug ")) {
|
|
digi_play("304r38", 1);
|
|
} else if (useFlag && player_said("cartoon") && _G(player).click_x > 534) {
|
|
digi_play(_G(flags)[V001] ? "304r13" : "304r77", 1);
|
|
} else if (takeFlag && _G(player).click_y <= 374 && _G(flags)[V001]) {
|
|
switch (imath_ranged_rand(1, 3)) {
|
|
case 1:
|
|
digi_play("304r39", 1);
|
|
break;
|
|
case 2:
|
|
digi_play("304r40", 1);
|
|
break;
|
|
case 3:
|
|
digi_play("304r41", 1);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
} else {
|
|
return;
|
|
}
|
|
|
|
_G(player).command_ready = false;
|
|
}
|
|
|
|
void Room304::intrMsg(frac16 myMessage, struct machine *sender) {
|
|
Room304 *r = static_cast<Room304 *>(g_engine->_activeRoom);
|
|
const KernelTriggerType oldMode = _G(kernel).trigger_mode;
|
|
|
|
if ((myMessage >> 16) == 57) {
|
|
if ((_G(globals)[GLB_TEMP_1] >> 16) == 1) {
|
|
player_set_commands_allowed(false);
|
|
terminateMachineAndNull(r->_machine2);
|
|
series_unload(r->_smoke);
|
|
r->_cobra = series_load("COBRA KILLS RIP AND LF");
|
|
digi_preload("304_s07");
|
|
|
|
_G(kernel).trigger_mode = KT_PARSE;
|
|
r->_machine2 = series_ranged_play("LF AND COBRA FIRE SMOKE", 1, 0, 25, 49, 100, 0x200, 5, 49);
|
|
_G(kernel).trigger_mode = oldMode;
|
|
|
|
digi_play("304_s06", 1);
|
|
r->_cobraKillingFl = true;
|
|
sendWSMessage(0x200000, 0, r->_mei, 0, nullptr, 1);
|
|
return;
|
|
}
|
|
|
|
if (r->_useHandlingStick) {
|
|
ws_demand_location(_G(my_walker), 382, 295);
|
|
ws_hide_walker();
|
|
player_set_commands_allowed(false);
|
|
terminateMachineAndNull(r->_machine2);
|
|
terminateMachineAndNull(r->_stick);
|
|
digi_stop(1);
|
|
terminateMachineAndNull(r->_trunk);
|
|
|
|
r->_safe3 = series_stream("SNAKE HANDLE", 5, 0, 17);
|
|
series_stream_break_on_frame(r->_safe3, 10, 13);
|
|
sendWSMessage(0x200000, 0, r->_mei, 0, nullptr, 1);
|
|
_G(flags)[V084] = 2;
|
|
return;
|
|
}
|
|
}
|
|
|
|
if ((myMessage >> 16) == 58 && r->_useSword) {
|
|
ws_demand_location(_G(my_walker), 382, 295);
|
|
ws_hide_walker();
|
|
player_set_commands_allowed(false);
|
|
terminateMachineAndNull(r->_machine2);
|
|
series_unload(r->_smoke);
|
|
digi_stop(1);
|
|
|
|
_G(kernel).trigger_mode = KT_PARSE;
|
|
series_ranged_play("CUT SNAKE", 1, 0, 0, 10, 100, 0x200, 4, 11);
|
|
_G(kernel).trigger_mode = oldMode;
|
|
|
|
sendWSMessage(0x200000, 0, r->_mei, 0, nullptr, 1);
|
|
_G(flags)[V084] = 1;
|
|
}
|
|
}
|
|
|
|
void Room304::handlingStickAndSword() {
|
|
switch (_G(kernel).trigger) {
|
|
case 13:
|
|
series_stream_break_on_frame(_safe3, 29, 14);
|
|
digi_play("304_s03", 1);
|
|
break;
|
|
case 14:
|
|
series_stream_break_on_frame(_safe3, 106, 15);
|
|
digi_play("304_s08", 1);
|
|
break;
|
|
case 15:
|
|
series_stream_break_on_frame(_safe3, 111, 16);
|
|
digi_play("304_s02", 1);
|
|
break;
|
|
case 16:
|
|
series_stream_break_on_frame(_safe3, 145, 19);
|
|
midi_stop();
|
|
digi_play("304_s11", 1);
|
|
break;
|
|
|
|
case 17:
|
|
if (_G(flags)[V084] == 1) {
|
|
digi_unload("304_s10");
|
|
digi_unload("304_s05");
|
|
series_show_sprite("one frame dead snake", 0, 0x100);
|
|
} else if (_G(flags)[V084] == 2) {
|
|
digi_unload("304_s03");
|
|
digi_unload("304_s08");
|
|
digi_unload("304_s02");
|
|
digi_unload("304_s11");
|
|
}
|
|
|
|
terminateMachineAndNull(_mei);
|
|
series_unload(_mei1);
|
|
series_unload(_mei2);
|
|
|
|
ws_unhide_walker();
|
|
player_update_info();
|
|
ws_demand_location(_G(my_walker), _G(player_info).x - 28, _G(player_info).y + 9);
|
|
|
|
ws_walk_load_walker_series(S3_NORMAL_DIRS2, S3_NORMAL_NAMES2);
|
|
ws_walk_load_shadow_series(S3_SHADOW_DIRS2, S3_SHADOW_NAMES2);
|
|
|
|
_headUp1 = series_load("fl returns to head up");
|
|
_headUp2 = series_ranged_play("fl returns to head up",
|
|
1, 0, 0, 0, 100, 0x100, 250, 31);
|
|
_mei = triggerMachineByHash_3000(8, 3, *S3_NORMAL_DIRS2, *S3_SHADOW_DIRS2,
|
|
464, 283, 8, triggerMachineByHashCallback3000, "mc");
|
|
ws_demand_facing(_mei, 8);
|
|
kernel_timing_trigger(1, 74);
|
|
break;
|
|
|
|
case 18:
|
|
sendWSMessage_10000(_mei, 73, 275, 3, 20, 0);
|
|
break;
|
|
|
|
case 19:
|
|
digi_play("com125", 1);
|
|
break;
|
|
|
|
case 20:
|
|
sendWSMessage_10000(_mei, 29, 295, 3, 21, 1);
|
|
break;
|
|
|
|
case 21:
|
|
series_unload(_suit1);
|
|
terminateMachineAndNull(_headUp2);
|
|
series_unload(_headUp1);
|
|
|
|
_headUp1 = series_load("lf talk 1");
|
|
ws_hide_walker(_mei);
|
|
series_unload(221);
|
|
series_unload(222);
|
|
|
|
_suit1 = series_load("suit chin in hand pos3");
|
|
_suit2 = series_load("mc hands out talk pos3");
|
|
_suit3 = series_load("MC UNTIES LF");
|
|
|
|
series_ranged_play("MC UNTIES LF", 1, 0, 1, 21, 100, 0xa05, 5, 222);
|
|
break;
|
|
|
|
case 22:
|
|
ws_unhide_walker(_mei);
|
|
setGlobals1(_suit1, 1, 15, 15, 15, 1, 16, 19, 20, 23, 1);
|
|
sendWSMessage_110000(-1);
|
|
|
|
_headUp2 = series_ranged_play("MC UNTIES LF", -1, 0, 82, 82, 100, 0x200, 250);
|
|
setGlobals3(_suit2, 1, 24);
|
|
sendWSMessage_F0000(_mei, 23);
|
|
digi_play("304m04", 1);
|
|
break;
|
|
|
|
case 23:
|
|
terminateMachineAndNull(_headUp2);
|
|
series_unload(_suit2);
|
|
series_ranged_play("MC UNTIES LF", 1, 1, 83, 98, 100, 0xf05, 7, 25);
|
|
digi_play("304f02", 1);
|
|
break;
|
|
|
|
case 25:
|
|
series_unload(_suit3);
|
|
_headUp2 = series_ranged_play("MC UNTIES LF", -1, 0, 98, 98, 100, 0x200, 250);
|
|
kernel_timing_trigger(20, 26);
|
|
break;
|
|
|
|
case 26:
|
|
digi_play("304r48", 1, 255, 27);
|
|
sendWSMessage_120000(-1);
|
|
break;
|
|
|
|
case 27:
|
|
terminateMachineAndNull(_headUp2);
|
|
sendWSMessage_110000(28);
|
|
_headUp2 = series_ranged_play("lf talk 2", 1, 1, 5, 10, 100, 0x100, 6, 33);
|
|
digi_play("304f03", 1);
|
|
break;
|
|
|
|
case 28:
|
|
sendWSMessage_140000(29);
|
|
break;
|
|
|
|
case 29:
|
|
series_unload(_suit1);
|
|
_suit1 = series_load("rip suit arms x point pos3");
|
|
setGlobals1(_suit1, 1, 13, 14, 14, 1, 14, 14, 14, 19, 1,
|
|
14, 44, 44, 44, 1, 0, 0, 0, 0, 0);
|
|
sendWSMessage_110000(34);
|
|
digi_play("304r49", 1, 255, 35);
|
|
break;
|
|
|
|
case 31:
|
|
terminateMachineAndNull(_headUp2);
|
|
series_ranged_play("fl returns to head up", 1, 0, 1, 6, 100, 0x100, 7, 32);
|
|
break;
|
|
|
|
case 32:
|
|
_headUp2 = series_ranged_play("fl returns to head up", -1, 0, 6, 6, 100, 0x100, 300);
|
|
break;
|
|
|
|
case 33:
|
|
_headUp2 = series_ranged_play("lf talk 1", -1, 0, 0, 0, 100, 0x200, 250);
|
|
break;
|
|
|
|
case 34:
|
|
sendWSMessage_120000(-1);
|
|
break;
|
|
|
|
case 35:
|
|
sendWSMessage_110000(36);
|
|
break;
|
|
|
|
case 36:
|
|
terminateMachineAndNull(_headUp2);
|
|
_headUp2 = series_ranged_play("lf talk 1", 1, 1, 0, 14, 100, 0xa00, 6, 37);
|
|
digi_play("304f04", 1, 255);
|
|
break;
|
|
|
|
case 37:
|
|
_headUp2 = series_ranged_play("lf talk 1", -1, 0, 0, 0, 100, 0x200, 250);
|
|
_suit3 = series_load("mc stand and talk pos3");
|
|
setGlobals1(_suit3, 1, 1, 1, 8, 1);
|
|
sendWSMessage_110000(_mei, 38);
|
|
digi_play("304m05", 1, 255, 38);
|
|
break;
|
|
|
|
case 38:
|
|
if (_ctr1 >= 1) {
|
|
_ctr1 = 0;
|
|
sendWSMessage_140000(_mei, 39);
|
|
} else {
|
|
++_ctr1;
|
|
}
|
|
break;
|
|
|
|
case 39:
|
|
series_unload(_suit3);
|
|
sendWSMessage_160000(3, 44);
|
|
kernel_timing_trigger(30, 67);
|
|
break;
|
|
|
|
case 40:
|
|
series_unload(_suit1);
|
|
_safe1 = series_load("rip opens safe part 1");
|
|
_safe2 = series_load("rip opens safe part 2");
|
|
ws_walk(_G(my_walker), 510, 300, nullptr, 43, 3);
|
|
digi_preload("304r51");
|
|
digi_play("304r51", 1, 255, 79);
|
|
break;
|
|
|
|
case 43:
|
|
player_update_info();
|
|
ws_hide_walker();
|
|
digi_preload("304_s04");
|
|
digi_preload("304f05");
|
|
digi_preload("304r52");
|
|
series_plain_play("rip opens safe part 1", 1, 0, 100, 0, 5, 45);
|
|
break;
|
|
|
|
case 44:
|
|
sendWSMessage_150000(40);
|
|
break;
|
|
|
|
case 45:
|
|
series_plain_play("rip opens safe part 2", 1, 0, 100, 0, 5, 46);
|
|
digi_play("304_s01", 2);
|
|
break;
|
|
|
|
case 46:
|
|
_safe3 = series_stream("RIP OPENS SAFE PART 3", 5, 0, 49);
|
|
series_stream_break_on_frame(_safe3, 44, 53);
|
|
digi_play("304_s04", 2);
|
|
break;
|
|
|
|
case 47:
|
|
terminateMachineAndNull(_headUp2);
|
|
_headUp2 = series_ranged_play("lf talk 1", 1, 1, 0, 4, 100, 0xa00, 6, 48);
|
|
digi_play("304f05", 1, 255, 54);
|
|
break;
|
|
|
|
case 48:
|
|
_headUp2 = series_ranged_play("lf talk 1", -1, 0, 0, 0, 100, 0x200, 250);
|
|
break;
|
|
|
|
case 49:
|
|
ws_unhide_walker();
|
|
series_unload(_safe1);
|
|
series_unload(_safe2);
|
|
_safe1 = series_load("one frame safe open");
|
|
series_show_sprite("one frame safe open", 0, 0xa00);
|
|
_suit3 = series_load("mc hand to chin pos3");
|
|
ws_walk(_G(my_walker), 260, 279, nullptr, 80, 8);
|
|
break;
|
|
|
|
case 51:
|
|
digi_unload("304_s04");
|
|
digi_unload("304_f05");
|
|
digi_unload("304r52");
|
|
sendWSMessage_140000(-1);
|
|
ws_hide_walker(_mei);
|
|
|
|
_field60 = series_ranged_play_xy("mc hand to chin pos3",
|
|
1, 0, 0, 17, 29, 295, 100, 0x100, 9, -1, true);
|
|
digi_play("304m06", 1, 255, 55);
|
|
break;
|
|
|
|
case 53:
|
|
inv_give_to_player("POST MARKED ENVELOPE");
|
|
break;
|
|
|
|
case 54:
|
|
digi_play("304r52", 1, 255, 51);
|
|
break;
|
|
|
|
case 55:
|
|
if (_val1) {
|
|
kernel_timing_trigger(1, 56);
|
|
} else {
|
|
kernel_timing_trigger(60, 55);
|
|
}
|
|
break;
|
|
|
|
case 56:
|
|
_suit1 = series_load("rip suit stander talk pos4");
|
|
setGlobals1(_suit1, 1, 1, 1, 5, 1);
|
|
sendWSMessage_110000(58);
|
|
digi_play("304r53", 1, 255, 58);
|
|
break;
|
|
|
|
case 58:
|
|
if (_ctr1 >= 1) {
|
|
_ctr1 = 0;
|
|
sendWSMessage_140000(59);
|
|
} else {
|
|
++_ctr1;
|
|
}
|
|
break;
|
|
|
|
case 59:
|
|
series_unload(_suit1);
|
|
terminateMachineAndNull(_field60);
|
|
series_unload(_suit3);
|
|
|
|
_suit3 = series_load("mc hand to chin nod pos3");
|
|
series_ranged_play_xy("mc hand to chin nod pos3", 2, 1,
|
|
0, 7, 29, 295, 100, 0xa00, 7, 63);
|
|
digi_play("304m07", 1, 255, 60);
|
|
break;
|
|
|
|
case 60:
|
|
_suit1 = series_load("RIP LFT GEST RT PNT");
|
|
setGlobals3(_suit1, 1, 45);
|
|
sendWSMessage_F0000(75);
|
|
digi_play("304r54", 1, 255, 61);
|
|
break;
|
|
|
|
case 61:
|
|
_suit3 = series_load("mc hands out talk pos3");
|
|
kernel_timing_trigger(40, 65);
|
|
break;
|
|
|
|
case 63:
|
|
series_unload(_suit3);
|
|
_suit3 = series_load("mc hand to chin pos3");
|
|
_field60 = series_ranged_play_xy("mc hand to chin pos3",
|
|
1, 2, 0, 17, 29, 295, 100, 0x100, 7, 64);
|
|
break;
|
|
|
|
case 64:
|
|
ws_unhide_walker(_mei);
|
|
series_unload(_suit3);
|
|
break;
|
|
|
|
case 65:
|
|
setGlobals1(_suit3, 1, 10, 11, 16, 1, 17, 24, 1, 1, 1);
|
|
sendWSMessage_110000(_mei, -1);
|
|
digi_play("304m08", 1, 255, 66);
|
|
kernel_timing_trigger(60, 69);
|
|
break;
|
|
|
|
case 66:
|
|
sendWSMessage_120000(_mei, -1);
|
|
_G(game).setRoom(303);
|
|
break;
|
|
|
|
case 67:
|
|
digi_play("304r50", 1);
|
|
break;
|
|
|
|
case 69:
|
|
ws_walk(_G(my_walker), 458, 263, nullptr, -1, 2);
|
|
kernel_timing_trigger(30, 678);
|
|
break;
|
|
|
|
case 71:
|
|
if (_ctr1 >= 1) {
|
|
_ctr1 = 0;
|
|
sendWSMessage_140000(_mei, 72);
|
|
} else {
|
|
++_ctr1;
|
|
}
|
|
break;
|
|
|
|
case 72:
|
|
series_unload(_suit3);
|
|
_suit1 = series_load("rip suit rt hand gest talk pos3");
|
|
setGlobals1(_suit1, 1, 11, 12, 15, 1);
|
|
sendWSMessage_110000(73);
|
|
digi_play(_useHandlingStick ? "304r24" : "304r23", 1, 255, 73);
|
|
sendWSMessage_10000(_mei, 242, 274, 3, 18, 0);
|
|
break;
|
|
|
|
case 73:
|
|
if (_ctr1 >= 1) {
|
|
_ctr1 = 0;
|
|
sendWSMessage_140000(-1);
|
|
} else {
|
|
++_ctr1;
|
|
}
|
|
break;
|
|
|
|
case 74:
|
|
_ctr1 = 0;
|
|
_suit3 = series_load("mei ny hands out talk pos4");
|
|
setGlobals1(_suit3, 1, 9, 10, 15, 1);
|
|
sendWSMessage_110000(_mei, 71);
|
|
digi_play(_useHandlingStick ? "304m03" : "304m02", 1, 255, 71);
|
|
break;
|
|
|
|
case 75:
|
|
series_unload(_suit1);
|
|
break;
|
|
|
|
case 78:
|
|
digi_unload("304r51a");
|
|
kernel_timing_trigger(60, 47);
|
|
break;
|
|
|
|
case 79:
|
|
digi_unload("304r51");
|
|
digi_preload("304r51a");
|
|
digi_play("304r51a", 1, 255, 78);
|
|
break;
|
|
|
|
case 80:
|
|
_val1 = 1;
|
|
break;
|
|
|
|
case 222:
|
|
digi_play("304_s13", 2);
|
|
series_ranged_play("MC UNTIES LF", 1, 0, 22, 82, 100, 0xa05, 5, 22);
|
|
break;
|
|
|
|
case 678:
|
|
disable_player_commands_and_fade_init(-1);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
} // namespace Rooms
|
|
} // namespace Riddle
|
|
} // namespace M4
|