Files
2026-02-02 04:50:13 +01:00

1633 lines
48 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/riddle/rooms/section7/room701.h"
#include "m4/graphics/gr_series.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
void Room701::preload() {
_G(player).walker_type = WALKER_ALT;
_G(player).shadow_type = SHADOW_ALT;
LoadWSAssets("OTHER SCRIPT", _G(master_palette));
}
void Room701::init() {
if (_G(flags)[V286])
_G(flags)[V224] = 1;
_itemDigiName = nullptr;
_field8C_unusedFl = false;
_field50_counter = 0;
_field9E_triggerNum = -1;
_field130 = false;
if (_G(game).previous_room == KERNEL_RESTORING_GAME) {
_agentTalkLoopTjSeries = series_load("AGENT TALK LOOP TJ", -1, nullptr);
_agentGetTelegramSeries = series_load("AGENT GET TELEGRAM", -1, nullptr);
_agentShowMapSeries = series_load("AGENT SHOW MAP", -1, nullptr);
_agentGiveParcelSeries = series_load("AGENT GIVE PARCEL", -1, nullptr);
_701rp01Series = series_load("701RP01", -1, nullptr);
_ripTrekHandTalkPos3Series = series_load("RIP TREK HAND TALK POS3", -1, nullptr);
_ripTrekTalkerPos3Series = series_load("RIP TREK TALKER POS3", -1, nullptr);
_ripTrekMedReachPos3Series = series_load("RIP TREK MED REACH POS3", -1, nullptr);
_701rp99Series = series_load("701RP99", -1, nullptr);
_agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, -1, _agentTalkLoopTjSeries, 13, 13, 0);
} else {
_field88 = false;
player_set_commands_allowed(false);
_agentTalkLoopTjSeries = series_load("AGENT TALK LOOP TJ", -1, nullptr);
_agentGetTelegramSeries = series_load("AGENT GET TELEGRAM", -1, nullptr);
_agentShowMapSeries = series_load("AGENT SHOW MAP", -1, nullptr);
_agentGiveParcelSeries = series_load("AGENT GIVE PARCEL", -1, nullptr);
_701rp01Series = series_load("701RP01", -1, nullptr);
_ripTrekHandTalkPos3Series = series_load("RIP TREK HAND TALK POS3", -1, nullptr);
_ripTrekTalkerPos3Series = series_load("RIP TREK TALKER POS3", -1, nullptr);
_ripTrekMedReachPos3Series = series_load("RIP TREK MED REACH POS3", -1, nullptr);
_701rp99Series = series_load("701RP99", -1, nullptr);
_agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, -1, _agentTalkLoopTjSeries, 13, 13, 0);
++_G(flags)[V006];
if (setItemsPlacedFlags()) {
_field88 = true;
_itemDigiName = getItemsPlacedDigi();
++_field50_counter;
}
ws_demand_location(_G(my_walker), 50, 264);
ws_demand_facing(_G(my_walker), 3);
_alreadyBeenHereFl = false;
int32 trig = 80;
if (!player_been_here(701)) {
trig = 40;
_alreadyBeenHereFl = true;
}
ws_walk(_G(my_walker), 352, 251, nullptr, trig, 3, true);
}
digi_preload("701_s01", -1);
digi_play_loop("701_s01", 3, 45, -1, -1);
}
void Room701::pre_parser() {
if (player_said("rm702") && !_field88) {
_G(player).need_to_walk = false;
_G(player).ready_to_walk = true;
_G(player).waiting_for_walk = false;
}
}
void Room701::parser() {
const bool lookFl = player_said_any("look", "look at");
const bool talkFl = player_said_any("talk", "talk to");
const bool takeFl = player_said("take");
const bool gearFl = player_said_any("push", "pull", "gear", "open", "close");
if (player_said("conv701a")) {
if (_G(kernel).trigger == 1) {
const int32 who = conv_whos_talking();
if (who == 1)
_ripleyShould = 1103;
else if (who <= 0)
_agentShould = 2102;
conv_resume(conv_get_handle());
} else {
conv701a();
}
} // if (player_said("conv701a"))
else if (talkFl && player_said("agent")) {
player_set_commands_allowed(false);
_field88 = true;
_field72_triggerNum = -1;
_ripleyMode = 1000;
_ripleyShould = 1100;
_G(kernel).trigger_mode = KT_DAEMON;
kernel_timing_trigger(1, 102, nullptr);
_G(kernel).trigger_mode = KT_PARSE;
} else if (lookFl && player_said("COAT RACK")) {
digi_play("com130", 1, 255, -1, -1);
} else if (lookFl && player_said("Skin") && !_G(flags)[V226]) {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 4, 1, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), -1);
digi_play("701R10", 1, 255, 21, -1);
break;
case 21:
sendWSMessage_120000(_G(my_walker), -1);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 14, -1, _agentTalkLoopTjSeries, 11, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X09", 1, 255, 22, -1);
break;
case 22:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
sendWSMessage_110000(_G(my_walker), -1);
digi_play("701R11", 1, 255, 23, -1);
break;
case 23:
sendWSMessage_120000(_G(my_walker), -1);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 0);
sendWSMessage_140000(_agentPoshExpressMach, 11);
digi_play("701X10", 1, 255, 24, -1);
break;
case 24:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
digi_play("701R12", 1, 255, 25, -1);
break;
case 25:
sendWSMessage_150000(_G(my_walker), -1);
_G(flags)[V226] = 1;
player_set_commands_allowed(true);
break;
default:
break;
}
} // ecx && player_said("Skin") && !_G(flags)[V226]
else if (lookFl && player_said("Skin") && _G(flags)[V226]) {
player_set_commands_allowed(false);
digi_play("701R13", 1, 255, -1, -1);
player_set_commands_allowed(true);
} // ecx && player_said("Skin") && _G(flags)[V226]
else if (lookFl && player_said("Window"))
digi_play("701R17", 1, 255, -1, -1);
else if (lookFl && player_said("Poster"))
digi_play("com002", 1, 255, -1, 997);
else if (lookFl && player_said("Magazines"))
digi_play("com003", 1, 255, -1, 997);
else if (lookFl && player_said("Prayer Wheel"))
digi_play("701R19", 1, 255, -1, -1);
else if (lookFl && player_said("Agent"))
digi_play("701R20", 1, 255, -1, -1);
else if (lookFl && player_said_any("Sofa", "Chair"))
digi_play("com023", 1, 255, -1, 997);
else if (lookFl && player_said("Telephone"))
digi_play("com024", 1, 255, -1, 997);
else if (lookFl && player_said("Postcard Rack"))
digi_play("701R14", 1, 255, -1, -1);
else if (lookFl && player_said("Brochures"))
digi_play("701R15", 1, 255, -1, -1);
else if (lookFl && player_said("BUSH"))
digi_play("701R41", 1, 255, -1, -1);
else if (lookFl && player_said(" "))
digi_play("com001", 1, 255, -1, -1);
else if (takeFl && player_said("Brochures")) {
if (inv_player_has("PRAYER WHEEL BROCHURE"))
digi_play("701R21", 1, 255, -1, -1);
else {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
setGlobals1(_ripTrekMedReachPos3Series, 1, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), 62);
break;
case 62:
digi_play("950_S07", 2, 255, -1, 950);
kernel_examine_inventory_object("PING PRAYER WHEEL BROCHURE", _G(master_palette), 5, 1, 318, 150, 63, nullptr, -1);
break;
case 63:
sendWSMessage_140000(_G(my_walker), 64);
break;
case 64:
inv_give_to_player("PRAYER WHEEL BROCHURE");
player_set_commands_allowed(true);
break;
default:
break;
}
}
} // esi && player_said("Brochures")
else if (takeFl && player_said("Postcard Rack"))
digi_play("com004", 1, 255, -1, 997);
else if (takeFl && player_said("Magazines"))
digi_play("com005", 1, 255, -1, 997);
else if (takeFl && player_said("Yeti Skin"))
digi_play("701R24", 1, 255, -1, -1);
else if (player_said_any("PRAYER WHEEL BROCHURE", "PRAYER WHEEL") && inv_player_has("PRAYER WHEEL BROCHURE")) {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
setGlobals1(_701rp99Series, 1, 12, 12, 12, 0, 12, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), 301);
break;
case 301:
digi_play("701R25", 1, 255, 302, -1);
break;
case 302:
sendWSMessage_120000(_G(my_walker), 303);
break;
case 303:
sendWSMessage_150000(_G(my_walker), 304);
break;
case 304:
player_set_commands_allowed(true);
break;
default:
break;
}
} // player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL") && inv_player_has("PRAYER WHEEL BROCHURE")
else if (gearFl && player_said_any("Sofa", "Chair"))
digi_play("com025", 1, 255, -1, 997);
else if (gearFl && player_said("Telephone"))
digi_play("com026", 1, 255, -1, 997);
else if ((player_said("SIKKIMESE RUPEE", "Agent") && inv_player_has("SIKKIMESE RUPEE"))
|| player_said("US DOLLARS", "Agent") // 2 checks in the original: one checks if the payer has dollars, the other doesn't.
|| (player_said("CHINESE YUAN", "Agent") && inv_player_has("CHINESE YUAN"))
|| (player_said("PERUVIAN INTI", "Agent") && inv_player_has("PERUVIAN INTI"))
|| (player_said("SIKKIMESE RUPEE", "Agent") && inv_player_has("SIKKIMESE RUPEE"))) {
digi_play("com012", 1, 255, -1, 997);
} else if (player_said("journal", "skin")) {
digi_play(_G(flags)[V226] ? "701R35" : "701R36", 1, 255, -1, -1);
} else if (player_said("rm702")) {
if (_field88) {
switch (_G(kernel).trigger) {
case -1:
disable_player_commands_and_fade_init(3);
break;
case 3:
digi_stop(3);
_G(game).setRoom(702);
break;
default:
break;
}
} else {
switch (_G(kernel).trigger) {
case -1:
player_set_commands_allowed(false);
player_update_info(_G(my_walker), &_G(player_info));
ws_walk(_G(my_walker), 214, 265, nullptr, 2, 3, true);
break;
case 2:
setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), -1);
digi_play("22_12p01", 1, 255, 3, -1);
break;
case 3:
sendWSMessage_120000(_G(my_walker), -1);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("22_12n01", 1, 255, 4, -1);
break;
case 4:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
sendWSMessage_150000(_G(my_walker), -1);
ws_walk(_G(my_walker), 73, 265, nullptr, 5, 3, true);
break;
case 5:
player_set_commands_allowed(true);
disable_player_commands_and_fade_init(6);
break;
case 6:
digi_stop(3);
_G(game).setRoom(702);
break;
default:
break;
}
}
} // player_said("rm702")
else
return;
_G(player).command_ready = false;
}
void Room701::daemon() {
switch (_G(kernel).trigger) {
case 19:
digi_play("701_s01", 3, 127, 19, -1);
break;
case 40:
_field88 = true;
player_set_commands_allowed(false);
player_update_info(_G(my_walker), &_G(player_info));
_safariShadow3Mach = series_place_sprite("SAFARI SHADOW 3", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 3840);
setGlobals1(_ripTrekHandTalkPos3Series, 1, 4, 4, 4, 0, 5, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), 1040);
digi_play("701R01", 1, 255, -1, -1);
break;
case 41:
sendWSMessage_150000(_G(my_walker), -1);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X01", 1, 255, 71, -1);
break;
case 42:
setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), -1);
digi_play("701R02", 1, 255, 43, -1);
break;
case 43:
sendWSMessage_120000(_G(my_walker), -1);
updateCounter();
sendWSMessage_150000(_G(my_walker), -1);
if (_field50_counter == 1) {
_field8C_unusedFl = true;
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
ws_hide_walker(_G(my_walker));
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, -1, _701rp01Series, 11, 11, 0);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X02", 1, 255, 2200, -1);
} else if (_field50_counter > 0) {
_field8C_unusedFl = true;
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
ws_hide_walker(_G(my_walker));
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, -1, _701rp01Series, 11, 11, 0);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X03", 1, 255, 2200, -1);
} else {
kernel_timing_trigger(1, _alreadyBeenHereFl ? 44 : 95, nullptr);
}
break;
case 44:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, 45, _agentTalkLoopTjSeries, 12, 12, 0);
break;
case 45:
setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), -1);
digi_play("701R03", 1, 255, 47, -1);
break;
case 46:
sendWSMessage_110000(_G(my_walker), -1);
digi_play("701R03", 1, 255, 47, -1);
break;
case 47:
sendWSMessage_120000(_G(my_walker), -1);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X04", 1, 255, 48, -1);
break;
case 48:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, -1, _agentTalkLoopTjSeries, 12, 12, 0);
sendWSMessage_150000(_G(my_walker), 948);
break;
case 49:
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 11, 0);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X05", 1, 255, 50, -1);
break;
case 50:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, -1, _agentTalkLoopTjSeries, 12, 12, 0);
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 19, 4);
sendWSMessage_1a0000(_agentPoshExpressMach02, 11);
digi_play("701R05", 1, 255, 51, -1);
break;
case 51:
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 11, 0);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 13, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X06", 1, 255, 52, -1);
break;
case 52:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, -1, _agentTalkLoopTjSeries, 12, 12, 0);
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 19, 4);
sendWSMessage_1a0000(_agentPoshExpressMach02, 11);
digi_play("701R06", 1, 255, 53, -1);
break;
case 53:
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 11, 0);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 13, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X07", 1, 255, 54, -1);
break;
case 54:
terminateMachine(_agentPoshExpressMach02);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentShowMapSeries, 1, 47, 55, _agentShowMapSeries, 47, 47, 0);
break;
case 55:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentShowMapSeries, 47, 50, -1, _agentShowMapSeries, 47, 50, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X07A", 1, 255, 56, -1);
break;
case 56:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentShowMapSeries, 47, 1, 73, _agentShowMapSeries, 1, 1, 0);
break;
case 57:
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, -1, _701rp01Series, 11, 11, 4);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X08", 1, 255, 58);
break;
case 58:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, -1, _agentTalkLoopTjSeries, 12, 12, 0);
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 19, -1, _701rp01Series, 10, 19, 4);
sendWSMessage_1a0000(_agentPoshExpressMach02, 9);
digi_play("701R08", 1, 255, 59);
break;
case 59:
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 60, _701rp01Series, 1, 1, 0);
break;
case 60:
terminateMachine(_agentPoshExpressMach02);
terminateMachine(_safariShadow3Mach);
ws_unhide_walker(_G(my_walker));
player_set_commands_allowed(true);
break;
case 71:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 42, _agentTalkLoopTjSeries, 13, 13, 0);
break;
case 72:
sendWSMessage_150000(_G(my_walker), 54);
break;
case 73:
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 11, 74, _701rp01Series, 11, 11, 0);
break;
case 74:
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 19, -1, _701rp01Series, 10, 19, 4);
sendWSMessage_1a0000(_agentPoshExpressMach02, 9);
digi_play("701R07", 1, 255, 57, -1);
break;
case 75:
case 76:
setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), 43);
break;
case 80:
player_set_commands_allowed(false);
player_update_info(_G(my_walker), &_G(player_info));
_safariShadow3Mach = series_place_sprite("SAFARI SHADOW 3", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 3840);
setGlobals1(_ripTrekHandTalkPos3Series, 1, 4, 4, 4, 0, 5, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), 1080);
digi_play("701R37", 1, 255, -1, -1);
break;
case 81:
sendWSMessage_150000(_G(my_walker), -1);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X11", 1, 255, 96, -1);
break;
case 82:
if (_G(flags)[V286] != 1 || _G(flags)[V362] || _G(flags)[V372] || _G(flags)[V225]) {
kernel_timing_trigger(1, 75, nullptr);
} else {
_G(flags)[V225] = 1;
kernel_timing_trigger(1, 83, nullptr);
}
break;
case 83:
digi_play("701r42", 1, 255, 1083, -1);
break;
case 84:
sendWSMessage_120000(_G(my_walker), -1);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 12, 12, 85, _agentTalkLoopTjSeries, 12, 12, 0);
break;
case 85:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 13, -1, _agentTalkLoopTjSeries, 11, 13, 1);
sendWSMessage_1a0000(_agentPoshExpressMach, 11);
digi_play("701X07", 1, 255, 86, -1);
break;
case 86:
sendWSMessage_10000(1, _agentPoshExpressMach02, _agentTalkLoopTjSeries, 12, 12, -1, _agentTalkLoopTjSeries, 12, 12, 0);
_ripSketchingInNotebookPos3Series = series_load("RIP SKETCHING IN NOTEBOOK POS 3", -1, nullptr);
sendWSMessage_150000(_G(my_walker), -1);
kernel_timing_trigger(1, 88, nullptr);
break;
case 88:
setGlobals1(_ripSketchingInNotebookPos3Series, 1, 32, 32, 34, 1, 32, 32, 32, 32, 0, 32, 1, 1, 1, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), 89);
break;
case 89:
sendWSMessage_190000(_G(my_walker), 9);
digi_play("950_S34", 2, 255, 97, 950);
break;
case 90:
sendWSMessage_150000(_G(my_walker), 91);
break;
case 91:
series_unload(_ripSketchingInNotebookPos3Series);
ws_hide_walker(_G(my_walker));
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 92, _701rp01Series, 11, 11, 0);
break;
case 92:
terminateMachine(_agentPoshExpressMach02);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 86, 1, 93, _agentGetTelegramSeries, 1, 1, 0);
break;
case 93:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 94, _701rp01Series, 1, 1, 0);
break;
case 94:
terminateMachine(_agentPoshExpressMach02);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 11, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
ws_unhide_walker(_G(my_walker));
setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
kernel_timing_trigger(1, 76, nullptr);
break;
case 95:
if (_G(flags)[V286] == 1 && !_G(flags)[V362])
_G(flags)[V372] = 1;
terminateMachine(_safariShadow3Mach);
player_set_commands_allowed(true);
break;
case 96:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 82, _agentTalkLoopTjSeries, 13, 13, 0);
break;
case 97:
sendWSMessage_120000(_G(my_walker), 1089);
break;
case 100:
kernel_timing_trigger(1, 102, nullptr);
break;
case 101:
_ripleyMode = 1000;
_ripleyShould = 1105;
break;
case 102:
if (_field9E_triggerNum != -1) {
kernel_timing_trigger(1, _field9E_triggerNum, nullptr);
_field9E_triggerNum = -1;
} else
kernel_timing_trigger(1, 103, nullptr);
break;
case 103:
switch (_ripleyMode) {
case 1000:
switch (_ripleyShould) {
case 1100:
player_set_commands_allowed(false);
_agentMode = 2000;
_agentShould = 2100;
kernel_timing_trigger(1, 110, nullptr);
player_update_info(_G(my_walker), &_G(player_info));
_safariShadow3Mach = series_place_sprite("SAFARI SHADOW 3", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 3840);
ws_hide_walker(_G(my_walker));
_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, triggerMachineByHashCallback, "rip talks agent");
_ripleyShould = 1103;
sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 1);
conv_load("conv701a", 10, 10, 101);
_lastInventoryCheck = inventoryCheck();
_fieldBC_unusedFl = true;
conv_export_value_curr((_G(flags)[V088] < 3) ? 0 : 1, 0);
conv_export_pointer_curr(&_lastInventoryCheck, 1);
_hasCrystalSkull = inv_player_has("CRYSTAL SKULL") ? 1 : 0;
_hasStickAnsShellMap = inv_player_has("STICK AND SHELL MAP") ? 1 : 0;
_hasWheeledToy = inv_player_has("WHEELED TOY") ? 1 : 0;
_hasRebusAmulet = inv_player_has("REBUS AMULET") ? 1 : 0;
_hasShrunkenHead = inv_player_has("SHRUNKEN HEAD") ? 1 : 0;
_hasSilverButterfly = inv_player_has("SILVER BUTTERFLY") ? 1 : 0;
_hasPostageStamp = inv_player_has("POSTAGE STAMP") ? 1 : 0;
_hasGermanBankNote = inv_player_has("GERMAN BANKNOTE") ? 1 : 0;
_hasWhaleBoneHorn = inv_player_has("WHALE BONE HORN") ? 1 : 0;
_hasChisel = inv_player_has("CHISEL") ? 1 : 0;
_hasIncenseBurner = inv_player_has("INCENSE BURNER") ? 1 : 0;
_hasRomanovEmerald = inv_player_has("ROMANOV EMERALD") ? 1 : 0;
conv_export_pointer_curr(&_hasCrystalSkull, 3);
conv_export_pointer_curr(&_hasStickAnsShellMap, 4);
conv_export_pointer_curr(&_hasWheeledToy, 5);
conv_export_pointer_curr(&_hasRebusAmulet, 6);
conv_export_pointer_curr(&_hasShrunkenHead, 7);
conv_export_pointer_curr(&_hasSilverButterfly, 8);
conv_export_pointer_curr(&_hasPostageStamp, 9);
conv_export_pointer_curr(&_hasGermanBankNote, 10);
conv_export_pointer_curr(&_hasWhaleBoneHorn, 11);
conv_export_pointer_curr(&_hasChisel, 12);
conv_export_pointer_curr(&_hasIncenseBurner, 13);
conv_export_pointer_curr(&_hasRomanovEmerald, 14);
_travelDest = 0;
conv_export_pointer_curr(&_travelDest, 15);
conv_export_pointer_curr(&_fieldC8, 17);
conv_play(conv_get_handle());
break;
case 1102: {
const int32 rnd = imath_ranged_rand(1, 5);
sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, rnd, rnd, 102, _ripTrekTalkerPos3Series, rnd, rnd, 0);
}
break;
case 1103:
sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0);
break;
case 1104:
sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, -1, _ripTrekTalkerPos3Series, 5, 5, 0);
break;
case 1105:
terminateMachine(_ripTalksAgentMach);
terminateMachine(_safariShadow3Mach);
ws_unhide_walker(_G(my_walker));
_agentShould = 2103;
kernel_timing_trigger(1, 2700, nullptr);
break;
default:
break;
}
break;
case 3000:
switch (_ripleyShould) {
case 3100:
player_set_commands_allowed(false);
_ripleyShould = 3101;
kernel_timing_trigger(10, 102);
break;
case 3101:
terminateMachine(_agentPoshExpressMach02);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 1, 60, 102, _agentGetTelegramSeries, 60, 60, 0);
_ripleyShould = 3102;
break;
case 3102:
digi_play("950_S06", 2, 255, 102, 950);
inv_give_to_player("MESSAGE LOG");
sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 69, 69, -1, _agentGetTelegramSeries, 69, 69, 0);
kernel_timing_trigger(1, 2201);
_ripleyShould = 3103;
break;
case 3103:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 71, 71, -1, _agentGetTelegramSeries, 71, 71, 0);
_ripleyShould = 3103;
break;
case 3105:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 71, 86, 102, _agentGetTelegramSeries, 86, 86, 0);
_ripleyShould = 3107;
break;
case 3106:
digi_play("950_S06", 2, 255, -1, 950);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentGetTelegramSeries, 70, 71, -1, _agentGetTelegramSeries, 71, 71, 0);
_ripleyShould = 3103;
break;
case 3107:
if (_field130) {
kernel_timing_trigger(1, 2501);
_field130 = false;
} else {
_ripleyShould = 3108;
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 1, 1, -1, _agentTalkLoopTjSeries, 1, 1, 0);
}
break;
case 3108:
terminateMachine(_agentPoshExpressMach02);
kernel_timing_trigger(1, _alreadyBeenHereFl ? 45 : 95);
ws_unhide_walker(_G(my_walker));
break;
default:
break;
}
break;
case 3500:
switch (_ripleyShould) {
case 3501:
_agentSignsForMoneySeries = series_load("AGENT SIGNS FOR MONEY", -1, nullptr);
_ripleyShould = 3502;
_agentShould = 2101;
terminateMachine(_ripTalksAgentMach);
player_set_commands_allowed(false);
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, -1, _701rp01Series, 11, 11, 0);
digi_play(conv_sound_to_play(), 1, 255, 103, -1);
break;
case 3502:
_agentShould = 2103;
kernel_timing_trigger(1, 103, nullptr);
_ripleyShould = 3504;
break;
case 3503:
terminateMachine(_agentPoshExpressMach02);
_ripleyShould = 3504;
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 102, _701rp01Series, 11, 11, 0);
break;
case 3504:
terminateMachine(_agentPoshExpressMach);
terminateMachine(_agentPoshExpressMach02);
_ripleyShould = 3505;
_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 256, false, triggerMachineByHashCallback, "rip talks agent");
sendWSMessage_10000(1, _ripTalksAgentMach, _agentSignsForMoneySeries, 1, 70, 102, _agentSignsForMoneySeries, 70, 70, 0);
break;
case 3505:
digi_play("950_S06", 2, 255, -1, 950);
_ripleyShould = 3506;
sendWSMessage_10000(1, _ripTalksAgentMach, _agentSignsForMoneySeries, 70, 94, 102, _agentSignsForMoneySeries, 94, 94, 0);
break;
case 3506:
terminateMachine(_ripTalksAgentMach);
_ripleyShould = 3507;
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0);
_agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express");
_agentMode = 2000;
_agentShould = 2102;
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 110, _agentTalkLoopTjSeries, 13, 13, 0);
break;
case 3507:
_ripleyMode = 1000;
inv_give_to_player("US DOLLARS");
terminateMachine(_agentPoshExpressMach02);
_ripleyShould = 1103;
player_update_info(_G(my_walker), &_G(player_info));
_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, triggerMachineByHashCallback, "rip talks agent");
sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0);
conv_resume(conv_get_handle());
series_unload(_agentSignsForMoneySeries);
break;
default:
break;
}
break;
case 3600:
switch (_ripleyShould) {
case 3601:
_agentExchangeMoneySeries = series_load("AGENT EXCHANGE MONEY", -1, nullptr);
sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 1, 5, -1, _ripTrekHandTalkPos3Series, 1, 5, 1);
_ripleyShould = 3602;
digi_play(_convDigiName_2.c_str(), 1, 255, 103, -1);
break;
case 3602:
_ripleyShould = 3604;
sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 103, _ripTrekTalkerPos3Series, 5, 5, 1);
break;
case 3603:
terminateMachine(_agentPoshExpressMach);
terminateMachine(_agentPoshExpressMach02);
_ripleyShould = 3605;
_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 256, false, triggerMachineByHashCallback, "rip talks agent");
sendWSMessage_10000(1, _ripTalksAgentMach, _agentExchangeMoneySeries, 1, 52, 102, _agentExchangeMoneySeries, 52, 52, 0);
break;
case 3604:
terminateMachine(_ripTalksAgentMach);
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
_ripleyShould = 3603;
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 102, _701rp01Series, 11, 11, 0);
break;
case 3605:
digi_play("950_S06", 2, 255, -1, 959);
_ripleyShould = 33605;
sendWSMessage_10000(1, _ripTalksAgentMach, _agentExchangeMoneySeries, 52, 19, 102, _agentExchangeMoneySeries, 19, 19, 0);
break;
case 3606:
_ripleyShould = 3607;
terminateMachine(_ripTalksAgentMach);
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0);
_agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 110, _agentTalkLoopTjSeries, 13, 13, 0);
break;
case 3607:
inv_give_to_player("SIKKIMESE RUPEE");
terminateMachine(_agentPoshExpressMach02);
_ripleyMode = 1000;
_ripleyShould = 1103;
player_update_info(_G(my_walker), &_G(player_info));
_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, triggerMachineByHashCallback, "rip talks agent");
sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0);
conv_resume(conv_get_handle());
series_unload(_agentExchangeMoneySeries);
break;
case 33605:
digi_play("950_S06", 2, 255, -1, 950);
_ripleyShould = 3606;
sendWSMessage_10000(1, _ripTalksAgentMach, _agentExchangeMoneySeries, 19, 1, 102, _agentExchangeMoneySeries, 1, 1, 0);
break;
default:
break;
}
break;
case 3700:
switch (_ripleyShould) {
case 3701:
player_set_commands_allowed(false);
terminateMachine(_ripTalksAgentMach);
_ripleyShould = 3702;
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 11, 102, _701rp01Series, 11, 11, 0);
break;
case 3702:
terminateMachine(_agentPoshExpressMach);
terminateMachine(_agentPoshExpressMach02);
_ripleyShould = 3709;
_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 256, false, triggerMachineByHashCallback, "rip talks agent");
sendWSMessage_10000(1, _ripTalksAgentMach, _agentGiveParcelSeries, 1, 33, 102, _agentGiveParcelSeries, 33, 33, 0);
break;
case 3704:
switch (conv_current_entry()) {
case 0:
inv_move_object("CRYSTAL SKULL", 305);
break;
case 1:
inv_move_object("STICK AND SHELL MAP", 305);
break;
case 2:
inv_move_object("WHEELED TOY", 305);
break;
case 3:
inv_move_object("REBUS AMULET", 305);
break;
case 4:
inv_move_object("SHRUNKEN HEAD", 305);
break;
case 5:
inv_move_object("SILVER BUTTERFLY", 305);
break;
case 6:
inv_move_object("POSTAGE STAMP", 305);
break;
case 7:
inv_move_object("GERMAN BANKNOTE", 305);
break;
case 8:
inv_move_object("WHALE BONE HORN", 305);
break;
case 9:
inv_move_object("CHISEL", 305);
break;
case 10:
inv_move_object("INCENSE BURNER", 305);
break;
case 11:
setFlag45();
inv_move_object("ROMANOV EMERALD", 999);
break;
default:
break;
}
_agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express");
_agentShould = 2102;
_agentMode = 2000;
_ripleyShould = 3705;
kernel_timing_trigger(1, 102, nullptr);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 110, _agentTalkLoopTjSeries, 13, 13, 0);
break;
case 3705:
_ripleyShould = 3706;
terminateMachine(_ripTalksAgentMach);
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 102, _701rp01Series, 1, 1, 0);
break;
case 3706:
terminateMachine(_agentPoshExpressMach02);
_ripleyMode = 1000;
_ripleyShould = 1103;
player_update_info(_G(my_walker), &_G(player_info));
_ripTalksAgentMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, triggerMachineByHashCallback, "rip talks agent");
sendWSMessage_10000(1, _ripTalksAgentMach, _ripTrekTalkerPos3Series, 5, 5, 102, _ripTrekTalkerPos3Series, 5, 5, 0);
conv_resume(conv_get_handle());
break;
case 3709:
_ripleyShould = 3704;
sendWSMessage_10000(1, _ripTalksAgentMach, _agentGiveParcelSeries, 34, 51, 102, _agentGiveParcelSeries, 51, 51, 0);
digi_play("950_S09", 2, 255, -1, 950);
break;
default:
break;
}
break;
default:
break;
}
break;
case 110:
if (_field72_triggerNum != -1) {
kernel_timing_trigger(1, _field72_triggerNum, nullptr);
_field72_triggerNum = -1;
} else
kernel_timing_trigger(1, 111, nullptr);
break;
case 111:
if (_agentMode != 2000)
return;
switch (_agentShould) {
case 2100:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 14, 14, 110, _agentTalkLoopTjSeries, 14, 14, 0);
_agentShould = 2102;
break;
case 2101: {
const int32 rnd = imath_ranged_rand(14, 17);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, rnd, rnd, 110, _agentTalkLoopTjSeries, rnd, rnd, 0);
}
break;
case 2102:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 14, 14, 110, _agentTalkLoopTjSeries, 14, 14, 0);
break;
case 2103:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 14, 14, -1, _agentTalkLoopTjSeries, 14, 14, 0);
break;
case 2104:
sendWSMessage_10000(1, _agentPoshExpressMach, _agentExchangeMoneySeries, 1, 66, 110, _agentExchangeMoneySeries, 66, 66, 0);
break;
default:
break;
}
break;
case 948:
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
ws_hide_walker(_G(my_walker));
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 1, 10, -1, _701rp01Series, 11, 19, 4);
sendWSMessage_1a0000(_agentPoshExpressMach02, 11);
digi_play("701R04", 1, 255, 49, -1);
break;
case 1040:
sendWSMessage_120000(_G(my_walker), 41);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 1, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
break;
case 1080:
sendWSMessage_120000(_G(my_walker), 81);
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 1, 11, -1, _agentTalkLoopTjSeries, 11, 11, 0);
break;
case 1083:
setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sendWSMessage_110000(_G(my_walker), -1);
digi_play("701R38", 1, 255, 84, -1);
break;
case 1089:
sendWSMessage_190000(_G(my_walker), 5);
sendWSMessage_130000(_G(my_walker), 90);
break;
case 2200:
_ripleyShould = 3100;
_ripleyMode = 3000;
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 13, 13, 102, _agentTalkLoopTjSeries, 13, 13, 0);
break;
case 2201:
_ripleyShould = 3103;
kernel_timing_trigger(60, 2300, nullptr);
break;
case 2300:
_field58_digiName = nullptr;
_field5C_digiName = nullptr;
_field60_digiName = nullptr;
_field64_digiName = nullptr;
if (_field50_counter <= 0) {
kernel_timing_trigger(1, 44, nullptr);
return;
}
if (_itemDigiName) {
_field58_digiName = _itemDigiName;
_itemDigiName = nullptr;
} else if (_G(flags)[V364] == 1) {
_field58_digiName = "201R26";
_G(flags)[V364] = 0;
} else if (_G(flags)[V365] == 1) {
_field58_digiName = "201R61";
_G(flags)[V365] = 0;
} else if (_G(flags)[V366] == 1) {
_field58_digiName = "401R31";
_G(flags)[V366] = 0;
} else if (_G(flags)[V373] == 1) {
_field58_digiName = "401R36";
_G(flags)[V373] = 0;
} else if (_G(flags)[V370] == 1) {
_field58_digiName = "501R02";
_G(flags)[V370] = 0;
} else if (_G(flags)[V371] == 1) {
_field58_digiName = "501R03";
_G(flags)[V371] = 0;
} else if (_G(flags)[V372] == 1) {
_field58_digiName = "701R39";
_field5C_digiName = "701R39A";
_G(flags)[V372] = 0;
} else if (_G(flags)[V367] == 1) {
_field58_digiName = "401R37";
_G(flags)[V367] = 0;
_field130 = true;
} else if (_G(flags)[V368] == 1) {
_field58_digiName = "401R38";
_G(flags)[V368] = 0;
_field130 = true;
} else if (_G(flags)[V369] == 1) {
_field58_digiName = "401R39";
_G(flags)[V369] = 0;
_field130 = true;
}
kernel_timing_trigger(1, 2301, nullptr);
break;
case 2301:
_ripleyShould = 3106;
kernel_timing_trigger(1, 2302, nullptr);
break;
case 2302:
if (_field58_digiName)
digi_play(_field58_digiName, 1, 255, 2303, -1);
else
kernel_timing_trigger(1, 2303, nullptr);
break;
case 2303:
if (_field5C_digiName)
digi_play(_field5C_digiName, 1, 255, 2304, -1);
else
kernel_timing_trigger(1, 2304, nullptr);
break;
case 2304:
if (_field60_digiName)
digi_play(_field60_digiName, 1, 255, 2305, -1);
else
kernel_timing_trigger(1, 2305, nullptr);
break;
case 2305:
if (_field64_digiName)
digi_play(_field64_digiName, 1, 255, 2306, -1);
else
kernel_timing_trigger(1, 2306, nullptr);
break;
case 2306:
if (_field130) {
_ripleyMode = 3000;
_ripleyShould = 3105;
kernel_timing_trigger(1, 102, nullptr);
} else {
--_field50_counter;
if (_field50_counter <= 0) {
kernel_timing_trigger(1, 2307);
} else {
_ripleyShould = 3106;
kernel_timing_trigger(1, 2300);
}
}
break;
case 2307:
_ripleyShould = 3105;
kernel_timing_trigger(10, 102, nullptr);
break;
case 2501:
terminateMachine(_agentPoshExpressMach);
_agentPoshExpressMach03 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach03, _agentGiveParcelSeries, 51, 33, 2509, _agentGiveParcelSeries, 33, 33, 0);
break;
case 2504:
terminateMachine(_agentPoshExpressMach03);
_agentPoshExpressMach02 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 768, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach02, _701rp01Series, 11, 1, 2506, _701rp01Series, 1, 1, 0);
if (!inv_player_has("ROMANOV EMERALD")) {
inv_give_to_player("ROMANOV EMERALD");
}
_agentPoshExpressMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 1792, false, triggerMachineByHashCallback, "agent posh express");
sendWSMessage_10000(1, _agentPoshExpressMach, _agentTalkLoopTjSeries, 1, 1, -1, _agentTalkLoopTjSeries, 1, 1, 0);
break;
case 2506:
ws_unhide_walker(_G(my_walker));
terminateMachine(_agentPoshExpressMach02);
kernel_timing_trigger(1, _alreadyBeenHereFl ? 45 : 95, nullptr);
break;
case 2509:
sendWSMessage_10000(1, _agentPoshExpressMach03, _agentGiveParcelSeries, 32, 1, 2504, _agentGiveParcelSeries, 1, 1, 0);
digi_play("950_S09", 2, 255, -1, 950);
break;
case 2600:
player_set_commands_allowed(false);
disable_player_commands_and_fade_init(2601);
break;
case 2601:
switch (_travelDest) {
case 1:
_G(flags)[kTravelDest] = 1;
break;
case 2:
_G(flags)[kTravelDest] = 0;
break;
case 3:
_G(flags)[kTravelDest] = 4;
break;
case 4:
_G(flags)[kTravelDest] = 2;
break;
default:
break;
}
_G(game).setRoom(495);
break;
case 2700:
kernel_timing_trigger(1, 2701, nullptr);
break;
case 2701:
kernel_timing_trigger(1, 2702, nullptr);
break;
case 2702:
if (_field90)
kernel_timing_trigger(1, 2600, nullptr);
else
player_set_commands_allowed(true);
break;
default:
break;
}
}
void Room701::conv701a() {
_conv701aNode = conv_current_node();
const int32 entry = conv_current_entry();
const char *digiName = conv_sound_to_play();
if (digiName == nullptr) {
conv_resume(conv_get_handle());
return;
}
const int32 who = conv_whos_talking();
if (who <= 0) {
if (_conv701aNode == 3 && entry == 0) {
_convDigiName_1 = Common::String(digiName);
_ripleyMode = 3500;
_ripleyShould = 3501;
return;
}
_agentShould = 2101;
} else if (who == 1) {
if (_conv701aNode == 1 && entry == 1) {
conv_set_box_xy(490, -4);
set_dlg_rect();
int32 x1, y1, x2, y2;
conv_get_dlg_coords(&x1, &y1, &x2, &y2);
conv_get_dlg_coords(&x1, &y1, &x2, &y2); // useless?
conv_set_dlg_coords(x1, y1 - 10, x2, y2 - 10);
set_dlg_rect();
} else {
conv_set_box_xy(10, 10);
}
switch (_conv701aNode) {
case 1:
if (entry == 3) {
_convDigiName_2 = Common::String(digiName);
_ripleyMode = 3600;
_ripleyShould = 3601;
return;
}
_ripleyShould = 1102;
break;
case 6:
if (entry == 0) {
_ripleyShould = 1102;
digi_play(digiName, 1, 255, 1, -1);
_field90 = true;
return;
}
_ripleyShould = 1102;
break;
case 11:
if (entry != 12) {
_ripleyMode = 3700;
_ripleyShould = 3701;
return;
}
break;
default:
_ripleyShould = 1102;
break;
}
}
digi_play(digiName, 1, 255, 1, -1);
}
void Room701::updateCounter() {
if (_G(flags)[V364] == 1) {
++_field50_counter;
switch (_G(flags)[V005]) {
case 1:
_G(flags)[V351] = 1;
break;
case 2:
_G(flags)[V352] = 1;
break;
case 3:
_G(flags)[V353] = 1;
break;
case 4:
_G(flags)[V354] = 1;
break;
default:
break;
}
}
if (_G(flags)[V365] == 1) {
_G(flags)[V355] = 1;
++_field50_counter;
}
if (_G(flags)[V366] == 1) {
_G(flags)[V356] = 1;
++_field50_counter;
}
if (_G(flags)[V367] == 1) {
_G(flags)[V357] = 1;
++_field50_counter;
}
if (_G(flags)[V368] == 1) {
_G(flags)[V358] = 1;
++_field50_counter;
}
if (_G(flags)[V369] == 1) {
_G(flags)[V359] = 1;
++_field50_counter;
}
if (_G(flags)[V370] == 1) {
_G(flags)[V360] = 1;
++_field50_counter;
}
if (_G(flags)[V371] == 1) {
_G(flags)[V361] = 1;
++_field50_counter;
}
if (_G(flags)[V372] == 1) {
_G(flags)[V362] = 1;
++_field50_counter;
}
if (_G(flags)[V373] == 1) {
_G(flags)[V363] = 1;
++_field50_counter;
}
}
int32 Room701::inventoryCheck() {
for (int i = 0; i < 12; ++i)
_inventoryCheckArray[i] = 0;
_inventoryCheckCounter = 0;
if (inv_player_has("CRYSTAL SKULL"))
_inventoryCheckArray[_inventoryCheckCounter++] = 1;
if (inv_player_has("STICK AND SHELL MAP"))
_inventoryCheckArray[_inventoryCheckCounter++] = 2;
if (inv_player_has("WHEELED TOY"))
_inventoryCheckArray[_inventoryCheckCounter++] = 3;
if (inv_player_has("REBUS AMULET"))
_inventoryCheckArray[_inventoryCheckCounter++] = 4;
if (inv_player_has("SHRUNKEN HEAD"))
_inventoryCheckArray[_inventoryCheckCounter++] = 5;
if (inv_player_has("SILVER BUTTERFLY"))
_inventoryCheckArray[_inventoryCheckCounter++] = 6;
if (inv_player_has("POSTAGE STAMP"))
_inventoryCheckArray[_inventoryCheckCounter++] = 7;
if (inv_player_has("GERMAN BANKNOTE"))
_inventoryCheckArray[_inventoryCheckCounter++] = 8;
if (inv_player_has("WHALE BONE HORN"))
_inventoryCheckArray[_inventoryCheckCounter++] = 9;
if (inv_player_has("CHISEL"))
_inventoryCheckArray[_inventoryCheckCounter++] = 10;
if (inv_player_has("INCENSE BURNER"))
_inventoryCheckArray[_inventoryCheckCounter++] = 11;
if (inv_player_has("ROMANOV EMERALD"))
_inventoryCheckArray[_inventoryCheckCounter++] = 12;
return _inventoryCheckCounter > 0 ? 1 : 0;
}
void Room701::syncGame(Common::Serializer &s) {
s.syncAsByte(_field88);
}
} // namespace Rooms
} // namespace Riddle
} // namespace M4