/*
MR NPC: Billie Forks
Role: Murray's son, greeter, thief
Location: Groom Lake East, entrance, then at the General Store
Dialogue: Jinx
Script: Ardent
*/
/*
TODO:
- Destroy Billie when Murray's been busted
- Take Billie to the police station (node52)
*/
/* Include Files */
#include "..\headers\define.h"
#define NAME SCRIPT_GROOMC8
#include "..\headers\command.h"
#include "..\headers\redment.h"
#include "..\headers\MR\Location\GroomLake.h"
/* Standard Script Procedures */
procedure start;
procedure timed_event_p_proc;
procedure critter_p_proc;
procedure pickup_p_proc;
procedure destroy_p_proc;
procedure use_p_proc;
procedure look_at_p_proc;
procedure description_p_proc;
procedure use_skill_on_p_proc;
procedure use_obj_on_p_proc;
procedure damage_p_proc;
procedure map_enter_p_proc;
procedure map_update_p_proc;
procedure combat_p_proc;
procedure talk_p_proc;
procedure run_to_store;
procedure node001;
procedure node002;
procedure node003;
procedure node004;
procedure node005;
procedure node006;
procedure node007;
procedure node008;
procedure node009;
procedure node010;
procedure node011;
procedure node012;
procedure node013;
procedure node014;
procedure node015;
procedure node016;
procedure node017;
procedure node018;
procedure node019;
procedure node020;
procedure node021;
procedure node022;
procedure node023;
procedure node023a;
procedure node023b;
procedure node024;
procedure node025;
procedure node026;
procedure node027;
procedure node028;
procedure node029;
procedure node030;
procedure node031;
procedure node032;
procedure node033;
procedure node034;
procedure node035;
procedure node036;
procedure node037;
procedure node038;
procedure node039;
procedure node040;
procedure node041;
procedure node042;
procedure node043;
procedure node044;
procedure node045;
procedure node046;
procedure node047;
procedure node048;
procedure node049;
procedure node050;
procedure node051;
procedure node052;
procedure node994; //Billie run & hide
procedure node995; //Dude caught Billie stealing
procedure node996; //Dude didn't let Billie take him to shop
procedure node997; //Teleport Dude to Murray's shop, restart dialogue at N25
procedure node998;
procedure node999;
/*****************************************************************
Local Variables which are saved. All Local Variables need to be
prepended by LVAR_
*****************************************************************/
#define LVAR_Herebefore (4)
#define LVAR_Hostile (5)
#define LVAR_Personal_Enemy (6)
#define LVAR_Q_Monzol (7)
#define LVAR_Q_Murray (8)
#define LVAR_Q_Jen (9)
#define LVAR_Q_Huntsman (10)
#define LVAR_Q_Bask (11)
#define LVAR_Q_Kristinos (12)
#define LVAR_Q_Sheriff_Office (13)
#define LVAR_Q_Bar (14)
#define LVAR_Q_Hospital (15)
#define LVAR_Q_Water_Tower (16)
#define LVAR_Q_General_Store (17)
#define LVAR_Didnt_Let_Billie_Lead (18)
#define LVAR_Caught_Stealing (19) //0 - none, 1 - start at node29, 2 - node28, 3 - node27, 4 - done
#define LVAR_Show_Tongue (20) //0 - no, 1 - yes, 2 - done
#define LVAR_Hiding (21) //0 - nothing, 1 - run now, 2 - hiding, 3 - done
#define LVAR_Not_Talking (22) //0 - nothing, 1 - floats 160-3, 2 - float 155, 3 - done
/*******************************************************************
Useful macros
*******************************************************************/
#define greeting_done map_var(MVAR_Billie_Greeting) > 2
#define greeting_convo map_var(MVAR_Billie_Greeting) < 3
#define store_dude_tile (22915)
#define store_billie_tile (22113)
#define billie_run_hide_tile (19110)
#define dude_can_see_stealing (dude_perception >= 7) or ((dude_perception >= 6) and (has_trait(TRAIT_PERK,dude_obj,PERK_bonus_awareness))) or (has_skill(dude_obj,SKILL_STEAL) > 65) or (dude_luck >= 7) or (has_trait(TRAIT_PERK,dude_obj,PERK_harmless_perk))
#define attempt_stealing if (map_var(MVAR_Billie_Attempt_Stealing) == 0) then begin \
inven_roll := random(0,(inven_count(dude_obj) - 1)); \
stolen_item := inven_ptr(dude_obj, inven_roll); \
if ((critter_inven_obj(dude_obj,INVEN_TYPE_RIGHT_HAND) != stolen_item) and (critter_inven_obj(dude_obj,INVEN_TYPE_LEFT_HAND) != stolen_item) and (critter_inven_obj(dude_obj,INVEN_TYPE_WORN) != stolen_item)) then begin \
set_map_var(MVAR_Billie_Attempt_Stealing,1); \
count := rm_mult_objs_from_inven(dude_obj, stolen_item, 1); \
add_mult_objs_to_inven(self_obj, stolen_item, 1); \
end \
end
#define return_stolen_item count:=rm_mult_objs_from_inven(self_obj,stolen_item,1); \
add_mult_objs_to_inven(dude_obj,stolen_item,1); \
stolen_item:=0
/*******************************************************************
Imported variables from the Map scripts. These should only be
pointers and variables that need not be saved. If a variable
Needs to be saved, make it a map variable (MVAR_)
*******************************************************************/
import variable murray_stock_box;
/*******************************************************************
Local variables which do not need to be saved between map changes.
*******************************************************************/
variable begin
go_to_store; rot; stolen_item; inven_roll; count; kid_float; from34;
end
/*******************************************************************
******* PROCEDURES *******
*******************************************************************/
/*******************************************************************
The start procedure is the first procedure called when the map is
first entered. Any initial information that needs to be set up
should be placed in here.
*******************************************************************/
procedure start begin
end
procedure timed_event_p_proc begin
if (fixed_param == 0) then begin
//Billie led Dude to his dad's store, start dialogue at node25
dialogue_system_enter;
end
end
/********************************************************************
********************************************************************/
procedure use_p_proc begin
end
/***************************************************************************
This is cursory glance description that the player will receive should
he just pass the Action Cursor over. Examines which give more information
need to be in the description_p_proc procedure.
***************************************************************************/
procedure look_at_p_proc begin
script_overrides;
if (local_var(LVAR_Herebefore) == 0) then
display_msg(mstr(100));
else
display_msg(mstr(101));
end
procedure description_p_proc begin
script_overrides;
display_msg(mstr(102));
end
procedure use_skill_on_p_proc begin
end
procedure use_obj_on_p_proc begin
end
/******************************************************************************************
IF it gets damaged
******************************************************************************************/
procedure pickup_p_proc begin
if (obj_in_party(source_obj)) then begin
set_local_var(LVAR_Hostile,1);
attack(dude_obj);
end
end
procedure damage_p_proc begin
if (obj_in_party(source_obj)) then begin
set_local_var(LVAR_Hostile,1);
attack(dude_obj);
end
end
procedure destroy_p_proc begin
inc_good_critter
if (obj_in_party(source_obj)) then begin
inc_global_var(GVAR_CHILDKILLER_REPUTATION);
dec_global_var_amt(GVAR_TOWN_REP_REDDING,15);
end
end
/***************************************************************************************
Whenever the map is first entered, this procedure will be called.
***************************************************************************************/
procedure map_enter_p_proc begin
critter_add_trait(self_obj,TRAIT_OBJECT,OBJECT_TEAM_NUM,TEAM_GROOM_FOLKS);
//DEBUG - add dude some items
/*give_pid_qty(dude_obj,PID_POCKET_LINT,2)
give_pid_qty(dude_obj,PID_LEATHER_JACKET,2)
give_pid_qty(dude_obj,PID_10MM_PISTOL,2)*/
//Having greeted Dude, Billie resumes his post at the storefront
if (greeting_done) then begin
move_to(self_obj,store_billie_tile,0);
animate_rotation(3);
//If Billie was hiding from Dude, put him back in place and make him visible again
if (local_var(LVAR_Hiding) == 2) then begin
set_obj_visibility(self_obj,0);
set_local_var(LVAR_Hiding,3);
end
end
end
/**************************************************************************************
This procedure gets called roughly every 30 seconds of real time.
**************************************************************************************/
procedure map_update_p_proc begin
if ((tile_num(self_obj) == store_billie_tile) and (has_trait(TRAIT_OBJECT,self_obj,OBJECT_CUR_ROT) != 3)) then begin
animate_rotation(3);
end
//Make him talk again when the quest is solved
if (((local_var(LVAR_Not_Talking) == 1) or (local_var(LVAR_Not_Talking) == 2)) and (global_var(GVAR_GROOM_THIEVERY_AFOOT) >= GROOM_ThieveryAfoot_Completed)) then begin
set_local_var(LVAR_Not_Talking,3);
end
end
procedure critter_p_proc begin
if ((local_var(LVAR_Hostile) == 2) and (obj_can_see_obj(self_obj,dude_obj))) then begin
set_local_var(LVAR_Hostile,1);
attack(dude_obj);
end
//First greeting
if ((map_var(MVAR_Billie_Greeting) == 1) and (obj_can_see_obj(self_obj,dude_obj)) and (combat_is_initialized == false)) then begin
set_map_var(MVAR_Billie_Greeting,2);
dialogue_system_enter;
end
//Run and hide
if ((local_var(LVAR_Hiding) == 1) and (tile_distance(tile_num(self_obj),billie_run_hide_tile) < 2)) then begin
set_local_var(LVAR_Hiding,2);
set_obj_visibility(self_obj,1);
end
end
procedure combat_p_proc begin
//Passive when hiding and invisible
if (local_var(LVAR_Hiding) == 2) then begin
script_overrides;
end
end
/**************************************************************************************
This is used for any dialogue that may need to occur with the player.
**************************************************************************************/
procedure talk_p_proc begin
if ((local_var(LVAR_Not_Talking) == 0) or (local_var(LVAR_Not_Talking) > 2)) then begin
start_gdialog(NAME,self_obj,4,-1,-1);
gsay_start;
if (map_var(MVAR_Billie_Greeting) == 2) then begin //first greeting
call node001;
end
else begin
if ((global_var(GVAR_GROOM_THIEVERY_AFOOT) == GROOM_ThieveryAfoot_TookBribe) or (global_var(GVAR_GROOM_THIEVERY_AFOOT) == GROOM_ThieveryAfoot_ConfirmedBilly)) then begin
call node051;
end
else if (go_to_store == 2) then begin
go_to_store:=0;
call node025;
end
else if (local_var(LVAR_Caught_Stealing) == 1) then begin
set_local_var(LVAR_Caught_Stealing,4);
call node029;
end
else if (local_var(LVAR_Caught_Stealing) == 2) then begin
set_local_var(LVAR_Caught_Stealing,4);
call node028;
end
else if (local_var(LVAR_Caught_Stealing) == 3) then begin
set_local_var(LVAR_Caught_Stealing,4);
call node027;
end
else if (local_var(LVAR_Show_Tongue) == 1) then begin
set_local_var(LVAR_Show_Tongue,2);
call node030;
end
else begin
call node026;
end
end
gsay_end;
end_dialogue;
end
else if (local_var(LVAR_Not_Talking) == 1) then begin
floater_rand(160,163);
end
else begin
floater(155);
end
//Teleport Dude to Murray's store, restart dialogue
if (go_to_store == 1) then begin
gfade_out(1);
go_to_store:=2;
move_to(dude_obj,store_dude_tile,0);
move_to(self_obj,store_billie_tile,0);
rot:=rotation_to_tile(tile_num(self_obj),tile_num(dude_obj));
animate_rotation(rot);
add_timer_event(self_obj,4,0); //restart dialogue at node25
gfade_in(1);
end
else if (local_var(LVAR_Hiding) == 1) then begin
reg_anim_clear(self_obj);
reg_anim_begin();
animate_move_obj_to_tile(self_obj,billie_run_hide_tile,1);
reg_anim_end();
float_msg(self_obj,mstr(154),FLOAT_MSG_RED);
end
else if (local_var(LVAR_Didnt_Let_Billie_Lead) == 1) then begin
set_local_var(LVAR_Didnt_Let_Billie_Lead,2);
floater(kid_float);
call run_to_store;
end
if (map_var(MVAR_Billie_Greeting) < 3) then begin
//End the first convo and move stolen items to Murray's box
set_map_var(MVAR_Billie_Greeting,3);
if (stolen_item != 0) then begin
count:=rm_mult_objs_from_inven(self_obj,stolen_item,1);
add_mult_objs_to_inven(murray_stock_box,stolen_item,1);
end
end
end
procedure node001 begin
set_local_var(LVAR_Herebefore,1);
if (dude_is_male) then
Reply(300);
else
Reply(1000);
NOption(301,node002,4);
GOption(302,node003,4);
NOption(303,node019,4);
BOption(304,node024,4);
end
procedure node002 begin
Reply(310);
NOption(311,node003,4);
if (local_var(LVAR_Q_Monzol) == 0) then
NOption(312,node008,4);
NOption(313,node007,4);
BOption(314,node024,4);
end
procedure node003 begin
Reply(320);
NOption(321,node004,4);
NOption(322,node019,4);
BOption(323,node024,4);
end
procedure node004 begin
if (dude_is_male) then
Reply(330);
else
Reply(1010);
NOption(331,node005,4);
NOption(332,node006,4);
NOption(333,node007,4);
end
procedure node005 begin
Reply(340);
if (local_var(LVAR_Q_Monzol) == 0) then
NOption(341,node008,4);
if (local_var(LVAR_Q_Jen) == 0) then
NOption(342,node009,4);
if (local_var(LVAR_Q_Huntsman) == 0) then
NOption(343,node010,4);
if (local_var(LVAR_Q_Bask) == 0) then
NOption(344,node011,4);
if (local_var(LVAR_Q_Kristinos) == 0) then
NOption(345,node012,4);
if (greeting_convo) then begin
NOption(346,node006,4);
NOption(347,node019,4);
end
else begin
NOption(348,node037,4);
NOption(349,node999,4);
end
end
procedure node006 begin
Reply(350);
if (local_var(LVAR_Q_Sheriff_Office) == 0) then
NOption(351,node013,4);
if (local_var(LVAR_Q_Bar) == 0) then
NOption(352,node014,4);
if (local_var(LVAR_Q_Hospital) == 0) then
NOption(353,node015,4);
if (local_var(LVAR_Q_Water_Tower) == 0) then
NOption(354,node016,4);
if (local_var(LVAR_Q_General_Store) == 0) then
NOption(355,node017,4);
NOption(356,node005,4);
NOption(357,node019,4);
end
procedure node007 begin
set_local_var(LVAR_Q_Murray,1);
Reply(360);
NOption(361,node004,4);
NOption(362,node997,4);
NOption(363,node019,4);
end
procedure node008 begin
set_local_var(LVAR_Q_Monzol,1);
Reply(370);
NOption(371,node005,4);
if (greeting_convo) then begin
NOption(372,node018,4);
NOption(373,node006,4);
NOption(374,node019,4);
end
else begin
NOption(375,node037,4);
NOption(376,node999,4);
end
end
procedure node009 begin
set_local_var(LVAR_Q_Jen,1);
Reply(380);
NOption(381,node005,4);
if (greeting_convo) then begin
NOption(382,node018,4);
NOption(383,node006,4);
NOption(384,node019,4);
end
else begin
NOption(385,node037,4);
NOption(386,node999,4);
end
end
procedure node010 begin
set_local_var(LVAR_Q_Huntsman,1);
GROOM_Set_DudeHeardAboutPickett;
Reply(390);
NOption(391,node005,4);
if (greeting_convo) then begin
NOption(392,node006,4);
NOption(393,node019,4);
end
else begin
NOption(394,node037,4);
NOption(395,node999,4);
end
end
procedure node011 begin
set_local_var(LVAR_Q_Bask,1);
Reply(400);
NOption(401,node005,4);
NOption(402,node012,4);
if (greeting_convo) then begin
NOption(403,node006,4);
NOption(404,node019,4);
end
else begin
NOption(405,node037,4);
NOption(406,node999,4);
end
end
procedure node012 begin
set_local_var(LVAR_Q_Kristinos,1);
Reply(410);
NOption(411,node005,4);
if (greeting_convo) then begin
NOption(412,node006,4);
NOption(413,node019,4);
end
else begin
NOption(414,node037,4);
NOption(415,node999,4);
end
end
procedure node013 begin
attempt_stealing
set_local_var(LVAR_Q_Sheriff_Office,1);
Reply(420);
NOption(421,node006,4);
NOption(422,node005,4);
if (dude_can_see_stealing) then begin
BOption(423,node020,4);
if (has_skill(dude_obj,SKILL_STEAL) <= 60) then
NOption(424,node021,4);
end
NOption(425,node019,4);
end
procedure node014 begin
attempt_stealing
set_local_var(LVAR_Q_Bar,1);
Reply(430);
NOption(431,node006,4);
NOption(432,node005,4);
if (dude_can_see_stealing) then begin
BOption(433,node020,4);
if (has_skill(dude_obj,SKILL_STEAL) <= 60) then
NOption(434,node021,4);
end
NOption(435,node019,4);
end
procedure node015 begin
attempt_stealing
set_local_var(LVAR_Q_Hospital,1);
Reply(440);
NOption(441,node006,4);
NOption(442,node005,4);
if (dude_can_see_stealing) then begin
BOption(443,node020,4);
if (has_skill(dude_obj,SKILL_STEAL) <= 60) then
NOption(444,node021,4);
end
NOption(445,node019,4);
end
procedure node016 begin
attempt_stealing
set_local_var(LVAR_Q_Water_Tower,1);
Reply(450);
NOption(451,node006,4);
NOption(452,node005,4);
if (dude_can_see_stealing) then begin
BOption(453,node020,4);
if (has_skill(dude_obj,SKILL_STEAL) <= 60) then
NOption(454,node021,4);
end
NOption(455,node019,4);
end
procedure node017 begin
set_local_var(LVAR_Q_General_Store,1);
Reply(460);
NOption(461,node004,4);
NOption(462,node997,4);
NOption(463,node996,4);
end
procedure node018 begin
if (dude_is_male) then
Reply(470);
else
Reply(1020);
NOption(471,node004,4);
if (local_var(LVAR_Q_General_Store) == 0) then
NOption(472,node017,4);
NOption(473,node019,4);
end
procedure node019 begin
if (dude_is_male) then
Reply(480);
else
Reply(1030);
NOption(481,node004,4);
NOption(482,node997,4);
NOption(483,node996,4);
end
procedure node020 begin
return_stolen_item;
set_local_var(LVAR_Caught_Stealing,1);
if (global_var(GVAR_GROOM_BILLIE_CAUGHT_STEALING) == 0) then
set_global_var(GVAR_GROOM_BILLIE_CAUGHT_STEALING,1);
if (dude_is_male) then
Reply(490);
else
Reply(1040);
BOption(491,node022,4);
NOption(492,node022,4);
BOption(493,node995,4);
end
procedure node021 begin
critter_mod_skill(dude_obj,SKILL_STEAL,GROOM_Billie_Steal_Bonus);
display_msg(mstr(103));
give_xp(GROOM_Learned_Billie_Technique_XP);
Reply(500);
BOption(501,node020,4);
end
procedure node022 begin
if (dude_is_male) then
Reply(510);
else
Reply(1050);
GOption(511,node023,4);
BOption(512,node995,4);
end
procedure node023 begin
kid_float:=151;
if (dude_is_male) then
Reply(520);
else
Reply(1060);
NOption(521,node023a,4);
NOption(522,node023b,4);
end
procedure node023a begin
kid_float:=151;
set_local_var(LVAR_Caught_Stealing,2);
call node995;
end
procedure node023b begin
kid_float:=150;
set_local_var(LVAR_Caught_Stealing,3);
if (map_var(MVAR_Billie_Discount) < 1) then
set_map_var(MVAR_Billie_Discount,1);
call node995;
end
procedure node024 begin
set_local_var(LVAR_Show_Tongue,1);
Reply(530);
NOption(531,node996,4);
end
procedure node025 begin
attempt_stealing
if (map_var(MVAR_Billie_Discount) < 1) then
set_map_var(MVAR_Billie_Discount,1);
if (dude_is_male) then
Reply(540);
else
Reply(1070);
if (dude_can_see_stealing) then begin
BOption(541,node034,4);
BOption(542,node035,4);
end
NOption(543,node999,4);
end
procedure node026 begin
if (local_var(LVAR_Hiding) < 3) then begin
if (dude_is_male) then
Reply(550);
else
Reply(1080);
end
else begin
Reply(551);
end
NOption(552,node037,4);
NOption(553,node999,4);
end
procedure node027 begin
Reply(560);
NOption(561,node032,4);
NOption(562,node999,4);
end
procedure node028 begin
if (dude_is_male) then
Reply(570);
else
Reply(571);
NOption(572,node037,4);
NOption(573,node999,4);
end
procedure node029 begin
Reply(580);
NOption(581,node033,4);
BOption(582,node994,4);
end
procedure node030 begin
Reply(590);
BOption(591,node031,4);
NOption(592,node999,4);
end
procedure node031 begin
if (dude_is_male) then
Reply(600);
else
Reply(601);
NOption(602,node999,4);
end
procedure node032 begin
Reply(610);
NOption(611,node037,4);
NOption(612,node999,4);
end
procedure node033 begin
Reply(620);
NOption(621,node037,4);
NOption(622,node999,4);
end
procedure node034 begin
set_local_var(LVAR_Caught_Stealing,1);
if (global_var(GVAR_GROOM_BILLIE_CAUGHT_STEALING) == 0) then
set_global_var(GVAR_GROOM_BILLIE_CAUGHT_STEALING,1);
from34:=1;
return_stolen_item;
Reply(630);
NOption(631,node036,4);
BOption(632,node035,4);
end
procedure node035 begin
if (from34 == 0) then begin
return_stolen_item;
end
from34:=0;
Reply(640);
NOption(641,node999,4);
BOption(642,node994,4);
end
procedure node036 begin
if (dude_is_male) then
Reply(650);
else
Reply(1090);
NOption(651,node999,4);
end
procedure node037 begin
Reply(660);
NOption(661,node005,4);
if (GROOM_Quest_ThieveryAfoot_Active) then begin
if (local_var(LVAR_Caught_Stealing) == 0) then begin
BOption(662,node038,4);
end
else begin
BOption(663,node040,4);
end
end
NOption(664,node999,4);
end
procedure node038 begin
Reply(670);
NOption(671,node039,4);
if (global_var(GVAR_GROOM_THIEVERY_JEN_INFO) == 2) then
BOption(672,node040,4);
if (global_var(GVAR_GROOM_THIEVERY_ANNAMARIA_INFO) == 2) then
BOption(673,node040,4);
if ((global_var(GVAR_GROOM_THIEVERY_HARVIN_INFO) == 2) and (global_var(GVAR_GROOM_SAW_HARVIN_WATCH_AT_MURRAY) > 0)) then
BOption(674,node041,4);
end
procedure node039 begin
if (dude_is_male) then
Reply(680);
else
Reply(1100);
NOption(681,node005,4);
NOption(682,node999,4);
end
procedure node040 begin
Reply(690);
if ((global_var(GVAR_GROOM_THIEVERY_HARVIN_INFO) == 2) and (global_var(GVAR_GROOM_SAW_HARVIN_WATCH_AT_MURRAY) > 0)) then
BOption(691,node041,4);
if ((dude_strength >= 7) or (has_trait(TRAIT_TRAIT,dude_obj,TRAIT_bruiser)) or (local_var(LVAR_Caught_Stealing) > 0)) then
BOption(692,node044,4);
else
NOption(693,node043,4);
if (((dude_charisma >= 7) and (has_skill(dude_obj,SKILL_CONVERSANT) >= 50)) or (has_skill(dude_obj,SKILL_CONVERSANT) >= 75)) then
NOption(694,node045,4);
else
NOption(695,node043,4);
NOption(696,node999,4);
end
procedure node041 begin
Reply(700);
NOption(701,node042,4);
end
procedure node042 begin
Reply(710);
BOption(711,node044,4);
NOption(712,node045,4);
end
procedure node043 begin
set_local_var(LVAR_Not_Talking,1);
set_global_var(GVAR_GROOM_THIEVERY_BILLIE_CONFESSION,1);
Reply(720);
NOption(721,node999,4);
end
procedure node044 begin
set_global_var(GVAR_GROOM_THIEVERY_BILLIE_CONFESSION,2);
set_global_var(GVAR_GROOM_THIEVERY_AFOOT,GROOM_ThieveryAfoot_EvidenceBilly);
Reply(730);
NOption(731,node049,4);
end
procedure node045 begin
set_global_var(GVAR_GROOM_THIEVERY_BILLIE_CONFESSION,2);
set_global_var(GVAR_GROOM_THIEVERY_AFOOT,GROOM_ThieveryAfoot_EvidenceBilly);
Reply(740);
NOption(741,node046,4);
end
procedure node046 begin
Reply(750);
NOption(751,node047,4);
BOption(752,node048,4);
end
procedure node047 begin
set_local_var(LVAR_Not_Talking,2);
if (dude_is_male) then
Reply(760);
else
Reply(1110);
NOption(761,node999,4);
end
procedure node048 begin
Reply(770);
NOption(771,node047,4);
if ((dude_perception >= 7) or (has_trait(TRAIT_PERK,dude_obj,PERK_bonus_awareness)) or (dude_iq >= 6)) then
BOption(772,node049,4);
end
procedure node049 begin
set_global_var(GVAR_GROOM_THIEVERY_BILLIE_CONFESSION,3);
if (dude_is_male) then
Reply(780);
else
Reply(781);
NOption(782,node050,4);
end
procedure node050 begin
set_global_var(GVAR_GROOM_THIEVERY_AFOOT,GROOM_ThieveryAfoot_EvidenceMurray);
display_msg(mstr(104));
set_local_var(LVAR_Not_Talking,2);
Reply(790);
NOption(791,node047,4);
NOption(792,node999,4);
end
procedure node051 begin
Reply(800);
NOption(801,node052,4);
NOption(802,node999,4);
end
procedure node052 begin
//TODO: Take Billie to the station (probably need a different ending node)
Reply(810);
NOption(811,node999,4);
end
procedure node994 begin //Billie run & hide
set_local_var(LVAR_Hiding,1);
end
procedure node995 begin //After Billie stole from Dude
set_local_var(LVAR_Didnt_Let_Billie_Lead,1);
if (kid_float == 0) then
kid_float:=152;
end
procedure node996 begin //Dude didn't let Billie take him to shop
set_local_var(LVAR_Didnt_Let_Billie_Lead,1);
kid_float:=153;
end
procedure node997 begin //Teleport Dude to Murray's shop, restart dialogue at N25
go_to_store:=1;
end
procedure node998 begin
set_local_var(LVAR_Hostile,2);
end
procedure node999 begin
end
procedure run_to_store begin
reg_anim_clear(self_obj);
reg_anim_begin();
animate_move_obj_to_tile(self_obj,store_billie_tile,1);
reg_anim_end();
end