variable ProtoOfItemGiven;
variable ValueOfRollCheck := 1;
variable Scenery_Creation;
variable Scenery_Creation_Hex;
variable Scenery_Creation_Count;
variable Temp_Scenery_Creation_Hex;
variable Scenery_Creation_Ptr;
variable How_Many_Party_Members_Are_Injured;
variable How_Many_Party_Members_Armed;
variable PartyHealingItem;
procedure checkPartyMembersNearDoor;
variable tmp_gen_rep;
variable global_temp;
variable dest_tile;
variable step_tile;
variable in_dialog;
variable forced_node;
variable restock_amt;
variable restock_obj;
variable restock_trash;
variable removed_qty;
procedure start;
procedure use_p_proc;
procedure talk_p_proc;
procedure look_p_proc;
procedure description_p_proc;
procedure Node001;
procedure Node010;
procedure Node010a;
procedure Node010b;
procedure Node010c;
procedure Node010d;
procedure Node010e;
procedure Node011;
procedure Node011a;
procedure Node011b;
procedure Node012;
procedure Node013;
procedure Node013a;
procedure Node013b;
procedure Node013c;
procedure Node013d;
procedure Node013e;
procedure Node013f;
procedure Node013g;
procedure Node014;
procedure Node999;
procedure use_skill_on_p_proc;
procedure Check_And_Kill_Row(variable arg0, variable arg1);
procedure Check_And_Kill(variable arg0);
variable kill_player;
procedure checkPartyMembersNearDoor
begin
if (party_member_obj(16777278) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777278)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777376) != 0) then begin // Myron!
if (tile_distance_objs(self_obj, party_member_obj(16777376)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777377) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777377)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777305) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777305)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777313) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777313)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777323) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777323)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777352) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777352)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777378) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777378)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777368) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777368)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777379) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777379)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777380) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777380)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777295) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777295)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777381) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777381)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777407) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777407)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777411) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777411)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777412) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777412)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777413) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777413)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777481) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777481)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777558) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777558)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777600) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777600)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777718) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777718)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777719) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777719)) <= 5) then begin
return 1;
end
end
if (party_member_obj(16777720) != 0) then begin
if (tile_distance_objs(self_obj, party_member_obj(16777720)) <= 5) then begin
return 1;
end
end
return 0;
end
procedure start
begin
end
procedure use_p_proc
begin
variable LVar0 := 0;
if (get_critter_stat(source_obj, 4) < 4) then begin
if (source_obj == dude_obj) then begin
display_msg(message_str(163, 102));
end
else begin
display_msg(obj_name(source_obj) + message_str(163, 200));
end
end
else begin
dialogue_system_enter;
end
end
procedure talk_p_proc
begin
start_gdialog(163, self_obj, 4, -1, -1);
gsay_start;
call Node001;
gsay_end;
end_dialogue;
if (kill_player == 1) then begin
kill_player := 0;
critter_dmg(dude_obj, 10000, 0);
end
end
procedure look_p_proc
begin
script_overrides;
display_msg(message_str(163, 100));
end
procedure description_p_proc
begin
script_overrides;
display_msg(message_str(163, 101));
end
procedure Node001
begin
gsay_reply(163, 103);
giq_option(4, 163, 104, Node010, 50);
giq_option(4, 163, 105, Node013, 50);
giq_option(4, 163, 106, Node999, 50);
end
procedure Node010
begin
gsay_reply(163, message_str(163, 108) + message_str(163, 109) + message_str(163, 110) + message_str(163, 111) + message_str(163, 112) + message_str(163, 113));
giq_option(4, 163, 114, Node010a, 50);
giq_option(4, 163, 115, Node010b, 50);
giq_option(4, 163, 116, Node010c, 50);
giq_option(4, 163, 117, Node010d, 50);
giq_option(4, 163, 118, Node010e, 50);
giq_option(4, 163, 119, Node011, 50);
giq_option(4, 163, 120, Node999, 50);
end
procedure Node010a
begin
set_local_var(1, 1);
call Node012;
end
procedure Node010b
begin
set_local_var(1, 2);
call Node012;
end
procedure Node010c
begin
set_local_var(1, 3);
call Node012;
end
procedure Node010d
begin
set_local_var(1, 4);
call Node012;
end
procedure Node010e
begin
set_local_var(1, 0);
call Node012;
end
procedure Node011
begin
gsay_reply(163, 121);
giq_option(4, 163, 122, Node011a, 50);
giq_option(4, 163, 123, Node011b, 50);
end
procedure Node011a
begin
set_local_var(1, 5);
call Node012;
end
procedure Node011b
begin
set_local_var(1, 6);
call Node012;
end
procedure Node012
begin
gsay_reply(163, message_str(163, 125) + message_str(163, 126) + message_str(163, 170 + local_var(1)) + message_str(163, 127) + message_str(163, 180 + local_var(0)));
giq_option(4, 163, 128, Node010, 50);
giq_option(4, 163, 129, Node013, 50);
giq_option(4, 163, 130, Node014, 50);
giq_option(4, 163, 131, Node999, 50);
end
procedure Node013
begin
gsay_reply(163, message_str(163, 132) + message_str(163, 133) + message_str(163, 134) + message_str(163, 135) + message_str(163, 136) + message_str(163, 137) + message_str(163, 138) + message_str(163, 139));
giq_option(4, 163, 140, Node013a, 50);
giq_option(4, 163, 141, Node013b, 50);
giq_option(4, 163, 142, Node013c, 50);
giq_option(4, 163, 143, Node013d, 50);
giq_option(4, 163, 144, Node013e, 50);
giq_option(4, 163, 145, Node013f, 50);
giq_option(4, 163, 146, Node013g, 50);
giq_option(4, 163, 147, Node999, 50);
end
procedure Node013a
begin
set_local_var(0, 1);
call Node012;
end
procedure Node013b
begin
set_local_var(0, 0);
call Node012;
end
procedure Node013c
begin
set_local_var(0, 2);
call Node012;
end
procedure Node013d
begin
set_local_var(0, 3);
call Node012;
end
procedure Node013e
begin
set_local_var(0, 4);
call Node012;
end
procedure Node013f
begin
set_local_var(0, 5);
call Node012;
end
procedure Node013g
begin
set_local_var(0, 6);
call Node012;
end
procedure Node014
begin
variable LVar0 := 0;
variable LVar1 := 0;
variable LVar2 := 0;
variable LVar3 := 0;
variable LVar4 := 0;
LVar0 := LVar0 + Check_And_Kill(16777278);
LVar0 := LVar0 + Check_And_Kill(16777376); // Myron, call of the function I actually try to decompose
LVar0 := LVar0 + Check_And_Kill(16777377);
LVar0 := LVar0 + Check_And_Kill(16777305);
LVar0 := LVar0 + Check_And_Kill(16777313);
LVar0 := LVar0 + Check_And_Kill(16777323);
LVar0 := LVar0 + Check_And_Kill(16777378);
LVar0 := LVar0 + Check_And_Kill(16777379);
LVar0 := LVar0 + Check_And_Kill(16777380);
LVar0 := LVar0 + Check_And_Kill(16777597);
LVar4 := Check_And_Kill(16777352);
if (LVar4 > 0) then begin
LVar2 := 0;
LVar0 := LVar0 + LVar4;
end
LVar4 := Check_And_Kill(16777558);
if (LVar4 > 0) then begin
LVar2 := 0;
LVar0 := LVar0 + LVar4;
end
LVar4 := Check_And_Kill(16777600);
if (LVar4 > 0) then begin
LVar2 := 0;
LVar0 := LVar0 + LVar4;
end
LVar4 := Check_And_Kill(16777687);
if (LVar4 > 0) then begin
LVar2 := 0;
LVar0 := LVar0 + LVar4;
end
LVar4 := Check_And_Kill(16777381);
if (LVar4 > 0) then begin
LVar2 := 0;
LVar0 := LVar0 + LVar4;
end
LVar4 := Check_And_Kill(16777368);
if (LVar4 > 0) then begin
LVar2 := 0;
LVar0 := LVar0 + LVar4;
end
LVar4 := Check_And_Kill(16777295);
if (LVar4 > 0) then begin
LVar2 := 4;
LVar0 := LVar0 + LVar4;
end
LVar4 := Check_And_Kill(16777596);
if (LVar4 > 0) then begin
LVar2 := 1;
LVar0 := LVar0 + LVar4;
end
LVar4 := Check_And_Kill(16777595);
if (LVar4 > 0) then begin
LVar2 := 2;
LVar0 := LVar0 + LVar4;
end
LVar4 := Check_And_Kill(16777292);
if (LVar4 > 0) then begin
LVar2 := 0;
LVar3 := 1;
end
LVar4 := Check_And_Kill(16777293);
if (LVar4 > 0) then begin
LVar2 := 0;
LVar3 := 1;
end
LVar4 := Check_And_Kill(16777294);
if (LVar4 > 0) then begin
LVar2 := 0;
LVar3 := 1;
end
if (tile_in_tile_rect(16525, 16312, 18325, 18113, tile_num(dude_obj))) then begin
LVar0 := LVar0 + 1;
kill_player := 1;
while(get_critter_stat(dude_obj, 4) > 1) do begin
set_critter_stat(dude_obj, 4, -1);
end
end
set_global_var(0, global_var(0) + (-100 * LVar0));
debug_msg("Player gains " + (-100 * LVar0) + " Karma Points.");
set_global_var(37, 0);
set_global_var(38, 0);
set_global_var(39, 0);
set_global_var(40, 0);
set_global_var(41, 0);
set_global_var(42, 0);
set_global_var(43, 0);
set_global_var(44, 0);
set_global_var(45, 0);
tmp_gen_rep := global_var(0);
if (has_trait(0, dude_obj, 95)) then begin
tmp_gen_rep := global_var(0) * 2;
end
if (tmp_gen_rep >= 1000) then begin
set_global_var(37, 1);
end
else
if (tmp_gen_rep >= 750) then begin
set_global_var(38, 1);
end
else
if (tmp_gen_rep >= 500) then begin
set_global_var(39, 1);
end
else
if (tmp_gen_rep >= 250) then begin
set_global_var(40, 1);
end
else
if (tmp_gen_rep > -250) then begin
set_global_var(41, 1);
end
else
if (tmp_gen_rep > -500) then begin
set_global_var(42, 1);
end
else
if (tmp_gen_rep > -750) then begin
set_global_var(43, 1);
end
else
if (tmp_gen_rep > -1000) then begin
set_global_var(44, 1);
end
else begin
set_global_var(45, 1);
end
if ((local_var(2) == 0) and ((LVar0 > 0) or (LVar3 == 1))) then begin
give_exp_points(500);
display_msg(message_str(14, 100) + 500 + message_str(14, 101));
set_local_var(2, 1);
end
debug_msg("Room_Capacity == " + LVar0);
if ((LVar0 == 0) and (LVar3 == 0)) then begin
gsay_reply(163, 148);
end
else
if (LVar0 > 1) then begin
gsay_reply(163, 149); // 149 = "Extraction failed"
end
else
if (LVar2 == 0) then begin
gsay_reply(163, 149); // 149 = "Extraction failed"
end
else
if (not(1)) then begin
gsay_reply(163, 150);
end
else
if (LVar2 == 3) then begin
LVar1 := create_object_sid(322, 0, 0, -1);
end
else
if (LVar2 == 1) then begin
LVar1 := create_object_sid(324, 0, 0, -1);
end
else
if (LVar2 == 2) then begin
LVar1 := create_object_sid(323, 0, 0, -1);
end
else
if (LVar2 == 4) then begin
LVar1 := create_object_sid(321, 0, 0, -1);
end
move_to(LVar1, 16515, 0);
gsay_reply(163, message_str(163, 151) + message_str(163, 152)); // 151 = "Success of the extraction"
giq_option(4, 163, 153, Node999, 50);
end
procedure Node999
begin
end
procedure use_skill_on_p_proc
begin
variable LVar0 := 0;
script_overrides;
LVar0 := action_being_used;
if (LVar0 == 12) then begin
call use_p_proc;
end
end
procedure Check_And_Kill_Row(variable arg0, variable arg1)
begin
variable LVar2 := 0;
variable LVar3 := 0;
variable LVar4 := 0;
variable LVar5 := 0;
LVar2 := arg0;
LVar3 := arg0 + 10;
while(LVar2 <= LVar3) do begin
if (tile_contains_obj_pid(LVar2, elevation(self_obj), arg1)) then begin // What is this procedure supposed to do? And how can I know about default procedures?
LVar4 := tile_contains_pid_obj(LVar2, elevation(self_obj), arg1); // and this one
LVar5 := LVar5 + 1;
critter_dmg(LVar4, 10000, 0);
end
LVar2 := LVar2 + 1;
end
return LVar5;
end
procedure Check_And_Kill(variable arg0)
begin
variable LVar1 := 0;
variable LVar2 := 0;
LVar1 := 16513;
while(LVar1 <= 17713) do begin
LVar2 := LVar2 + Check_And_Kill_Row(LVar1, arg0);
LVar1 := LVar1 + 200;
end
return LVar2;
end