[spoiler]
Code: Select all
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 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 atoim(variable arg0, variable arg1);
procedure get_char(variable arg0, variable arg1);
procedure wordar(variable arg0, variable arg1);
variable mode;
variable cur_section_start;
variable cur_pos;
variable cur_pid;
variable cur_pcx;
variable cur_size;
variable cur_gvar;
variable cur_time;
variable cur_undo;
variable items_avail;
variable max;
variable max_undo;
variable can_batch;
variable can_undo;
variable start0;
variable start1;
variable start2;
variable start3;
variable start4;
variable start5;
variable start6;
procedure item_options_0;
procedure item_options_1;
procedure item_options_2;
procedure item_options_3;
procedure item_options_4;
procedure item_options_5;
procedure item_options_6;
procedure display_next_option(variable arg0);
procedure count_items_avail;
procedure draw_item_properties;
procedure draw_item_pcx;
procedure parse_skill_name(variable arg0);
procedure display_items_list;
procedure display_items_avail;
procedure list_next;
procedure list_back;
procedure display_item_options;
procedure display_batch_ok;
procedure display_undo_ok;
procedure exit_mode;
procedure items_list_mode;
procedure item_options_mode;
procedure batch_ok_mode;
procedure undo_ok_mode;
procedure batch_item(variable arg0);
procedure undo_batch(variable arg0);
procedure batch_one_item;
procedure batch_all_items;
procedure undo_one_item;
procedure undo_all_items;
procedure loop_mode;
procedure batch_init;
procedure redraw_win_dscr;
procedure redraw_win_idle;
variable last_timed_obj;
variable last_timed_param;
variable check_still_kill;
variable stored_msg;
variable stored_node;
variable top_msg;
variable var_num;
procedure ChooseFromList;
procedure CLICK_PREV;
procedure CLICK_0;
procedure CLICK_1;
procedure CLICK_2;
procedure CLICK_3;
procedure CLICK_4;
procedure CLICK_MORE;
variable floater_patch_msg;
variable hs_temp;
procedure getTimeBit;
procedure start;
procedure timed_event_p_proc;
procedure critter_p_proc;
procedure map_enter_p_proc;
procedure combat_p_proc;
procedure map_update_p_proc;
procedure is_dropping_p_proc;
procedure Check_Bess_Float;
variable Did_Bess_Float;
import variable prize_fighter_obj;
variable lastmsg;
procedure use_obj_on_p_proc;
procedure description_p_proc;
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
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
return 0;
end
procedure atoim(variable arg0, variable arg1)
begin
variable LVar2 := 0;
variable LVar3 := 0;
variable LVar4 := 0;
LVar3 := arg1;
while((arg0 != LVar3) and (arg0 <= (LVar3 + ":")) and (arg0 >= (LVar3 + "0"))) do begin
while(not((arg0 > (LVar3 + LVar2)) and (arg0 < (LVar3 + (LVar2 + 1))) or (arg0 == (LVar3 + LVar2))) and (LVar2 < 9)) do begin
LVar2 := LVar2 + 1;
end
LVar3 := LVar3 + LVar2;
LVar4 := (LVar4 * 10) + LVar2;
LVar2 := 0;
end
return LVar4;
end
procedure get_char(variable arg0, variable arg1)
begin
if (arg0 == arg1) then begin
return "";
end
if (arg0 < (arg1 + "A")) then begin
if (arg0 < (arg1 + "1")) then begin
if (arg0 < (arg1 + ")")) then begin
if (arg0 < (arg1 + "%")) then begin
if (arg0 < (arg1 + "#")) then begin
if ((arg0 >= (arg1 + " ")) and (arg0 < (arg1 + "!"))) then begin
return " ";
end
else begin
if ((arg0 >= (arg1 + "!")) and (arg0 < (arg1 + "\""))) then begin
return "!";
end
else begin
if ((arg0 >= (arg1 + "\"")) and (arg0 < (arg1 + "#"))) then begin
return "\"";
end
end
end
end
else begin
if ((arg0 >= (arg1 + "#")) and (arg0 < (arg1 + "$"))) then begin
return "#";
end
else begin
if ((arg0 >= (arg1 + "$")) and (arg0 < (arg1 + "%"))) then begin
return "$";
end
end
end
end
else begin
if ((arg0 >= (arg1 + "%")) and (arg0 < (arg1 + "&"))) then begin
return "%";
end
else begin
if ((arg0 >= (arg1 + "&")) and (arg0 < (arg1 + "'"))) then begin
return "&";
end
else begin
if ((arg0 >= (arg1 + "'")) and (arg0 < (arg1 + "("))) then begin
return "'";
end
else begin
if ((arg0 >= (arg1 + "(")) and (arg0 < (arg1 + ")"))) then begin
return "(";
end
end
end
end
end
end
else begin
if (arg0 < (arg1 + "-")) then begin
if ((arg0 >= (arg1 + ")")) and (arg0 < (arg1 + "*"))) then begin
return ")";
end
else begin
if ((arg0 >= (arg1 + "*")) and (arg0 < (arg1 + "+"))) then begin
return "*";
end
else begin
if ((arg0 >= (arg1 + "+")) and (arg0 < (arg1 + ","))) then begin
return "+";
end
else begin
if ((arg0 >= (arg1 + ",")) and (arg0 < (arg1 + "-"))) then begin
return ",";
end
end
end
end
end
else begin
if ((arg0 >= (arg1 + "-")) and (arg0 < (arg1 + "."))) then begin
return "-";
end
else begin
if ((arg0 >= (arg1 + ".")) and (arg0 < (arg1 + "/"))) then begin
return ".";
end
else begin
if ((arg0 >= (arg1 + "/")) and (arg0 < (arg1 + "0"))) then begin
return "/";
end
else begin
if ((arg0 >= (arg1 + "0")) and (arg0 < (arg1 + "1"))) then begin
return "0";
end
end
end
end
end
end
end
else begin
if (arg0 < (arg1 + "9")) then begin
if (arg0 < (arg1 + "5")) then begin
if (arg0 < (arg1 + "3")) then begin
if ((arg0 >= (arg1 + "1")) and (arg0 < (arg1 + "2"))) then begin
return "1";
end
else begin
if ((arg0 >= (arg1 + "2")) and (arg0 < (arg1 + "3"))) then begin
return "2";
end
end
end
else begin
if ((arg0 >= (arg1 + "3")) and (arg0 < (arg1 + "4"))) then begin
return "3";
end
else begin
if ((arg0 >= (arg1 + "4")) and (arg0 < (arg1 + "5"))) then begin
return "4";
end
end
end
end
else begin
if (arg0 < (arg1 + "7")) then begin
if ((arg0 >= (arg1 + "5")) and (arg0 < (arg1 + "6"))) then begin
return "5";
end
else begin
if ((arg0 >= (arg1 + "6")) and (arg0 < (arg1 + "7"))) then begin
return "6";
end
end
end
else begin
if ((arg0 >= (arg1 + "7")) and (arg0 < (arg1 + "8"))) then begin
return "7";
end
else begin
if ((arg0 >= (arg1 + "8")) and (arg0 < (arg1 + "9"))) then begin
return "8";
end
end
end
end
end
else begin
if (arg0 < (arg1 + "=")) then begin
if (arg0 < (arg1 + ";")) then begin
if ((arg0 >= (arg1 + "9")) and (arg0 < (arg1 + ":"))) then begin
return "9";
end
else begin
if ((arg0 >= (arg1 + ":")) and (arg0 < (arg1 + ";"))) then begin
return ":";
end
end
end
else begin
if ((arg0 >= (arg1 + ";")) and (arg0 < (arg1 + "<"))) then begin
return ";";
end
else begin
if ((arg0 >= (arg1 + "<")) and (arg0 < (arg1 + "="))) then begin
return "<";
end
end
end
end
else begin
if (arg0 < (arg1 + "?")) then begin
if ((arg0 >= (arg1 + "=")) and (arg0 < (arg1 + ">"))) then begin
return "=";
end
else begin
if ((arg0 >= (arg1 + ">")) and (arg0 < (arg1 + "?"))) then begin
return ">";
end
end
end
else begin
if ((arg0 >= (arg1 + "?")) and (arg0 < (arg1 + "@"))) then begin
return "?";
end
else begin
if ((arg0 >= (arg1 + "@")) and (arg0 < (arg1 + "A"))) then begin
return "@";
end
end
end
end
end
end
end
else begin
if (arg0 < (arg1 + "a")) then begin
if (arg0 < (arg1 + "Q")) then begin
if (arg0 < (arg1 + "I")) then begin
if (arg0 < (arg1 + "E")) then begin
if (arg0 < (arg1 + "C")) then begin
if ((arg0 >= (arg1 + "A")) and (arg0 < (arg1 + "B"))) then begin
return "A";
end
else begin
if ((arg0 >= (arg1 + "B")) and (arg0 < (arg1 + "C"))) then begin
return "B";
end
end
end
else begin
if ((arg0 >= (arg1 + "C")) and (arg0 < (arg1 + "D"))) then begin
return "C";
end
else begin
if ((arg0 >= (arg1 + "D")) and (arg0 < (arg1 + "E"))) then begin
return "D";
end
end
end
end
else begin
if (arg0 < (arg1 + "G")) then begin
if ((arg0 >= (arg1 + "E")) and (arg0 < (arg1 + "F"))) then begin
return "E";
end
else begin
if ((arg0 >= (arg1 + "F")) and (arg0 < (arg1 + "G"))) then begin
return "F";
end
end
end
else begin
if ((arg0 >= (arg1 + "G")) and (arg0 < (arg1 + "H"))) then begin
return "G";
end
else begin
if ((arg0 >= (arg1 + "H")) and (arg0 < (arg1 + "I"))) then begin
return "H";
end
end
end
end
end
else begin
if (arg0 < (arg1 + "M")) then begin
if (arg0 < (arg1 + "K")) then begin
if ((arg0 >= (arg1 + "I")) and (arg0 < (arg1 + "J"))) then begin
return "I";
end
else begin
if ((arg0 >= (arg1 + "J")) and (arg0 < (arg1 + "K"))) then begin
return "J";
end
end
end
else begin
if ((arg0 >= (arg1 + "K")) and (arg0 < (arg1 + "L"))) then begin
return "K";
end
else begin
if ((arg0 >= (arg1 + "L")) and (arg0 < (arg1 + "M"))) then begin
return "L";
end
end
end
end
else begin
if (arg0 < (arg1 + "O")) then begin
if ((arg0 >= (arg1 + "M")) and (arg0 < (arg1 + "N"))) then begin
return "M";
end
else begin
if ((arg0 >= (arg1 + "N")) and (arg0 < (arg1 + "O"))) then begin
return "N";
end
end
end
else begin
if ((arg0 >= (arg1 + "O")) and (arg0 < (arg1 + "P"))) then begin
return "O";
end
else begin
if ((arg0 >= (arg1 + "P")) and (arg0 < (arg1 + "Q"))) then begin
return "P";
end
end
end
end
end
end
else begin
if (arg0 < (arg1 + "Y")) then begin
if (arg0 < (arg1 + "U")) then begin
if (arg0 < (arg1 + "S")) then begin
if ((arg0 >= (arg1 + "Q")) and (arg0 < (arg1 + "R"))) then begin
return "Q";
end
else begin
if ((arg0 >= (arg1 + "R")) and (arg0 < (arg1 + "S"))) then begin
return "R";
end
end
end
else begin
if ((arg0 >= (arg1 + "S")) and (arg0 < (arg1 + "T"))) then begin
return "S";
end
else begin
if ((arg0 >= (arg1 + "T")) and (arg0 < (arg1 + "U"))) then begin
return "T";
end
end
end
end
else begin
if (arg0 < (arg1 + "W")) then begin
if ((arg0 >= (arg1 + "U")) and (arg0 < (arg1 + "V"))) then begin
return "U";
end
else begin
if ((arg0 >= (arg1 + "V")) and (arg0 < (arg1 + "W"))) then begin
return "V";
end
end
end
else begin
if ((arg0 >= (arg1 + "W")) and (arg0 < (arg1 + "X"))) then begin
return "W";
end
else begin
if ((arg0 >= (arg1 + "X")) and (arg0 < (arg1 + "Y"))) then begin
return "X";
end
end
end
end
end
else begin
if (arg0 < (arg1 + "]")) then begin
if (arg0 < (arg1 + "[")) then begin
if ((arg0 >= (arg1 + "Y")) and (arg0 < (arg1 + "Z"))) then begin
return "Y";
end
else begin
if ((arg0 >= (arg1 + "Z")) and (arg0 < (arg1 + "["))) then begin
return "Z";
end
end
end
else begin
if ((arg0 >= (arg1 + "[")) and (arg0 < (arg1 + "\\"))) then begin
return "[";
end
else begin
if ((arg0 >= (arg1 + "\\")) and (arg0 < (arg1 + "]"))) then begin
return "\\";
end
end
end
end
else begin
if (arg0 < (arg1 + "_")) then begin
if ((arg0 >= (arg1 + "]")) and (arg0 < (arg1 + "^"))) then begin
return "]";
end
else begin
if ((arg0 >= (arg1 + "^")) and (arg0 < (arg1 + "_"))) then begin
return "^";
end
end
end
else begin
if ((arg0 >= (arg1 + "_")) and (arg0 < (arg1 + "`"))) then begin
return "_";
end
else begin
if ((arg0 >= (arg1 + "`")) and (arg0 < (arg1 + "a"))) then begin
return "`";
end
end
end
end
end
end
end
else begin
if (arg0 < (arg1 + "q")) then begin
if (arg0 < (arg1 + "i")) then begin
if (arg0 < (arg1 + "e")) then begin
if (arg0 < (arg1 + "c")) then begin
if ((arg0 >= (arg1 + "a")) and (arg0 < (arg1 + "b"))) then begin
return "a";
end
else begin
if ((arg0 >= (arg1 + "b")) and (arg0 < (arg1 + "c"))) then begin
return "b";
end
end
end
else begin
if ((arg0 >= (arg1 + "c")) and (arg0 < (arg1 + "d"))) then begin
return "c";
end
else begin
if ((arg0 >= (arg1 + "d")) and (arg0 < (arg1 + "e"))) then begin
return "d";
end
end
end
end
else begin
if (arg0 < (arg1 + "g")) then begin
if ((arg0 >= (arg1 + "e")) and (arg0 < (arg1 + "f"))) then begin
return "e";
end
else begin
if ((arg0 >= (arg1 + "f")) and (arg0 < (arg1 + "g"))) then begin
return "f";
end
end
end
else begin
if ((arg0 >= (arg1 + "g")) and (arg0 < (arg1 + "h"))) then begin
return "g";
end
else begin
if ((arg0 >= (arg1 + "h")) and (arg0 < (arg1 + "i"))) then begin
return "h";
end
end
end
end
end
else begin
if (arg0 < (arg1 + "m")) then begin
if (arg0 < (arg1 + "k")) then begin
if ((arg0 >= (arg1 + "i")) and (arg0 < (arg1 + "j"))) then begin
return "i";
end
else begin
if ((arg0 >= (arg1 + "j")) and (arg0 < (arg1 + "k"))) then begin
return "j";
end
end
end
else begin
if ((arg0 >= (arg1 + "k")) and (arg0 < (arg1 + "l"))) then begin
return "k";
end
else begin
if ((arg0 >= (arg1 + "l")) and (arg0 < (arg1 + "m"))) then begin
return "l";
end
end
end
end
else begin
if (arg0 < (arg1 + "o")) then begin
if ((arg0 >= (arg1 + "m")) and (arg0 < (arg1 + "n"))) then begin
return "m";
end
else begin
if ((arg0 >= (arg1 + "n")) and (arg0 < (arg1 + "o"))) then begin
return "n";
end
end
end
else begin
if ((arg0 >= (arg1 + "o")) and (arg0 < (arg1 + "p"))) then begin
return "o";
end
else begin
if ((arg0 >= (arg1 + "p")) and (arg0 < (arg1 + "q"))) then begin
return "p";
end
end
end
end
end
end
else begin
if (arg0 < (arg1 + "y")) then begin
if (arg0 < (arg1 + "u")) then begin
if (arg0 < (arg1 + "s")) then begin
if ((arg0 >= (arg1 + "q")) and (arg0 < (arg1 + "r"))) then begin
return "q";
end
else begin
if ((arg0 >= (arg1 + "r")) and (arg0 < (arg1 + "s"))) then begin
return "r";
end
end
end
else begin
if ((arg0 >= (arg1 + "s")) and (arg0 < (arg1 + "t"))) then begin
return "s";
end
else begin
if ((arg0 >= (arg1 + "t")) and (arg0 < (arg1 + "u"))) then begin
return "t";
end
end
end
end
else begin
if (arg0 < (arg1 + "w")) then begin
if ((arg0 >= (arg1 + "u")) and (arg0 < (arg1 + "v"))) then begin
return "u";
end
else begin
if ((arg0 >= (arg1 + "v")) and (arg0 < (arg1 + "w"))) then begin
return "v";
end
end
end
else begin
if ((arg0 >= (arg1 + "w")) and (arg0 < (arg1 + "x"))) then begin
return "w";
end
else begin
if ((arg0 >= (arg1 + "x")) and (arg0 < (arg1 + "y"))) then begin
return "x";
end
end
end
end
end
else begin
if (arg0 < (arg1 + "{")) then begin
if ((arg0 >= (arg1 + "y")) and (arg0 < (arg1 + "z"))) then begin
return "y";
end
else begin
if ((arg0 >= (arg1 + "z")) and (arg0 < (arg1 + "{"))) then begin
return "z";
end
end
end
else begin
if ((arg0 >= (arg1 + "{")) and (arg0 < (arg1 + "|"))) then begin
return "{";
end
else begin
if ((arg0 >= (arg1 + "|")) and (arg0 < (arg1 + "}"))) then begin
return "|";
end
else begin
if ((arg0 >= (arg1 + "}")) and (arg0 < (arg1 + "~"))) then begin
return "}";
end
end
end
end
end
end
end
end
return "";
end
procedure wordar(variable arg0, variable arg1)
begin
variable LVar2 := "";
variable LVar3 := "";
variable LVar4 := 0;
variable LVar5 := 0;
while(LVar4 < arg1) do begin
LVar5 := get_char(arg0, LVar3);
if (LVar5 == "") then begin
return "";
end
else begin
if (LVar5 == "|") then begin
LVar4 := LVar4 + 1;
end
LVar3 := LVar3 + LVar5;
end
end
while(1) do begin
LVar5 := get_char(arg0, LVar3);
if ((LVar5 == "") or (LVar5 == "|")) then begin
return LVar2;
end
else begin
LVar2 := LVar2 + LVar5;
LVar3 := LVar3 + LVar5;
end
end
return "";
end
procedure item_options_0
begin
cur_section_start := start0;
call item_options_mode;
end
procedure item_options_1
begin
cur_section_start := start1;
call item_options_mode;
end
procedure item_options_2
begin
cur_section_start := start2;
call item_options_mode;
end
procedure item_options_3
begin
cur_section_start := start3;
call item_options_mode;
end
procedure item_options_4
begin
cur_section_start := start4;
call item_options_mode;
end
procedure item_options_5
begin
cur_section_start := start5;
call item_options_mode;
end
procedure item_options_6
begin
cur_section_start := start6;
call item_options_mode;
end
procedure display_next_option(variable arg0)
begin
if (arg0 == 0) then begin
start0 := cur_section_start;
sayOption(proto_data(cur_pid, 1), item_options_0);
end
else begin
if (arg0 == 1) then begin
start1 := cur_section_start;
sayOption(proto_data(cur_pid, 1), item_options_1);
end
else begin
if (arg0 == 2) then begin
start2 := cur_section_start;
sayOption(proto_data(cur_pid, 1), item_options_2);
end
else begin
if (arg0 == 3) then begin
start3 := cur_section_start;
sayOption(proto_data(cur_pid, 1), item_options_3);
end
else begin
if (arg0 == 4) then begin
start4 := cur_section_start;
sayOption(proto_data(cur_pid, 1), item_options_4);
end
else begin
if (arg0 == 5) then begin
start5 := cur_section_start;
sayOption(proto_data(cur_pid, 1), item_options_5);
end
else begin
if (arg0 == 6) then begin
start6 := cur_section_start;
sayOption(proto_data(cur_pid, 1), item_options_6);
end
end
end
end
end
end
end
end
procedure count_items_avail
begin
variable LVar0 := 0;
LVar0 := cur_section_start;
cur_section_start := 500;
items_avail := 0;
while((message_str(2, cur_section_start) != "Error") and (message_str(2, cur_section_start) == "[ITEM]")) do begin
cur_gvar := atoim(message_str(2, cur_section_start + 4), "");
if ((message_str(2, cur_section_start + 4) == "") or global_var(cur_gvar)) then begin
items_avail := items_avail + 1;
end
cur_section_start := cur_section_start + 25;
end
cur_section_start := LVar0;
end
procedure draw_item_properties
begin
variable LVar0 := 7;
variable LVar1 := 7;
variable LVar2 := 100;
variable LVar3 := 1;
variable LVar4 := 1;
variable LVar5 := 1;
variable LVar6 := 0;
variable LVar7 := 0;
variable LVar8 := 0;
variable LVar9 := 0;
variable LVar10 := 0;
variable LVar11 := 0;
variable LVar12 := 0;
variable LVar13 := 0;
variable LVar14 := 0;
variable LVar15 := 0;
variable LVar16 := 0;
variable LVar17 := 0;
selectWin("win_dscr");
setTextColor(0.00000, 1.00000, 0.00000);
format(proto_data(cur_pid, 1), 25, LVar2, 250, 10, 2);
LVar2 := LVar2 + 30;
while((message_str(2, cur_section_start + LVar0) != "[TOOLS]") and (LVar0 < 25)) do begin
LVar0 := LVar0 + 1;
end
LVar0 := LVar0 + 1;
format(message_str(2, 300), 25, LVar2, 250, 10, 2);
LVar2 := LVar2 + 10;
LVar1 := LVar0;
while((message_str(2, cur_section_start + LVar0) != "[SKILLS]") and (LVar0 < 25) and (message_str(2, cur_section_start + LVar0) != "Error") and (message_str(2, cur_section_start) == "[ITEM]")) do begin
LVar16 := 0;
LVar17 := 0;
LVar15 := 0;
while(not(LVar15)) do begin
LVar14 := wordar(message_str(2, cur_section_start + LVar0), LVar16);
if (LVar14 == "") then begin
LVar15 := 1;
if (LVar17 == 0) then begin
LVar3 := 0;
end
end
else begin
LVar6 := atoim(LVar14, "");
if (obj_is_carrying_obj_pid(dude_obj, LVar6)) then begin
setTextColor(0.00000, 1.00000, 0.00000);
LVar17 := 1;
end
else begin
setTextColor(1.00000, 0.00000, 0.00000);
end
if (LVar16) then begin
format(message_str(2, 150) + proto_data(LVar6, 1), 25, LVar2, 250, 10, 0);
end
else begin
format(proto_data(LVar6, 1), 25, LVar2, 250, 10, 0);
end
LVar2 := LVar2 + 10;
LVar16 := LVar16 + 1;
end
end
LVar0 := LVar0 + 1;
end
if (LVar1 == LVar0) then begin
setTextColor(0.00000, 1.00000, 0.00000);
format(message_str(2, 303), 25, LVar2, 250, 10, 0);
LVar2 := LVar2 + 10;
end
LVar0 := LVar0 + 1;
setTextColor(0.00000, 1.00000, 0.00000);
format(message_str(2, 301), 25, LVar2, 250, 10, 2);
LVar2 := LVar2 + 10;
LVar1 := LVar0;
while((message_str(2, cur_section_start + LVar0) != "[COMPONENTS]") and (LVar0 < 25) and (message_str(2, cur_section_start + LVar0) != "Error") and (message_str(2, cur_section_start) == "[ITEM]")) do begin
LVar7 := parse_skill_name(message_str(2, cur_section_start + LVar0));
LVar8 := atoim(message_str(2, cur_section_start + LVar0), message_str(2, 19 + LVar7) + ":");
if (has_skill(dude_obj, LVar7) >= LVar8) then begin
setTextColor(0.00000, 1.00000, 0.00000);
end
else begin
setTextColor(1.00000, 0.00000, 0.00000);
LVar4 := 0;
end
format(message_str(2, 1 + LVar7) + ": " + LVar8, 25, LVar2, 250, 10, 0);
LVar2 := LVar2 + 10;
LVar0 := LVar0 + 1;
end
if (LVar1 == LVar0) then begin
setTextColor(0.00000, 1.00000, 0.00000);
format(message_str(2, 303), 25, LVar2, 250, 10, 0);
LVar2 := LVar2 + 10;
end
LVar0 := LVar0 + 1;
setTextColor(0.00000, 1.00000, 0.00000);
format(message_str(2, 302), 25, LVar2, 250, 10, 2);
LVar2 := LVar2 + 10;
LVar1 := LVar0;
max := 32767;
while((LVar0 < 25) and (message_str(2, cur_section_start + LVar0) != "Error") and (message_str(2, cur_section_start) == "[ITEM]")) do begin
LVar9 := atoim(message_str(2, cur_section_start + LVar0), "");
LVar10 := atoim(message_str(2, cur_section_start + LVar0), "" + LVar9 + ":");
if (obj_is_carrying_obj_pid(dude_obj, LVar9) >= LVar10) then begin
setTextColor(0.00000, 1.00000, 0.00000);
end
else begin
setTextColor(1.00000, 0.00000, 0.00000);
LVar5 := 0;
end
LVar11 := obj_is_carrying_obj_pid(dude_obj, LVar9) / LVar10;
if (LVar11 < max) then begin
max := LVar11;
end
format(proto_data(LVar9, 1) + ": " + LVar10, 25, LVar2, 250, 10, 0);
LVar2 := LVar2 + 10;
LVar0 := LVar0 + 1;
end
if (LVar1 == LVar0) then begin
setTextColor(0.00000, 1.00000, 0.00000);
format(message_str(2, 303), 25, LVar2, 250, 10, 0);
LVar2 := LVar2 + 10;
end
if (LVar3 and LVar4 and LVar5) then begin
can_batch := 1;
end
else begin
can_batch := 0;
end
cur_undo := message_str(2, cur_section_start + 6);
if ((cur_undo == "YES") and LVar3 and LVar4 and obj_is_carrying_obj_pid(dude_obj, cur_pid)) then begin
can_undo := 1;
end
else begin
can_undo := 0;
end
setTextColor(0.00000, 1.00000, 0.00000);
format(message_str(2, 304), 25, LVar2, 250, 10, 2);
LVar2 := LVar2 + 10;
cur_time := atoim(message_str(2, cur_section_start + 5), "");
LVar12 := cur_time / (60 * 10) / 60;
LVar13 := cur_time / (60 * 10) % 60;
format(message_str(2, 305) + LVar12, 25, LVar2, 250, 10, 0);
LVar2 := LVar2 + 10;
format(message_str(2, 306) + LVar13, 25, LVar2, 250, 10, 0);
showWin;
end
procedure draw_item_pcx
begin
variable LVar0 := 0;
variable LVar1 := 0;
cur_pcx := message_str(2, cur_section_start + 2);
cur_size := atoim(message_str(2, cur_section_start + 3), "");
LVar0 := cur_size / 1000;
LVar1 := cur_size % 1000;
call redraw_win_dscr;
selectWin("win_dscr");
displayGfx(cur_pcx, 150 - (LVar0 / 2), 55 - (LVar1 / 2), LVar0, LVar1);
showWin;
end
procedure parse_skill_name(variable arg0)
begin
variable LVar1 := 0;
variable LVar2 := 4294967295;
while((LVar1 < 18) and (LVar2 < 0)) do begin
if ((arg0 > message_str(2, 19 + LVar1)) and (arg0 < (message_str(2, 19 + LVar1) + ";"))) then begin
LVar2 := LVar1;
end
LVar1 := LVar1 + 1;
end
return LVar2;
end
procedure display_items_list
begin
sayStart;
mouseShape("pcx/st1.pcx", 0, 0);
sayReply("r_display_list", message_str(2, 200));
call display_items_avail;
sayOption(message_str(2, 101), exit_mode);
sayEnd;
end
procedure display_items_avail
begin
variable LVar0 := 0;
variable LVar1 := 0;
call redraw_win_idle;
cur_section_start := 500;
if (cur_pos != 0) then begin
sayOption(message_str(2, 106), list_back);
end
while(LVar1 < cur_pos) do begin
cur_gvar := atoim(message_str(2, cur_section_start + 4), "");
if ((message_str(2, cur_section_start + 4) == "") or global_var(cur_gvar)) then begin
LVar1 := LVar1 + 1;
end
cur_section_start := cur_section_start + 25;
end
while((LVar0 < 7) and (message_str(2, cur_section_start) != "Error") and (message_str(2, cur_section_start) == "[ITEM]")) do begin
cur_pid := atoim(message_str(2, cur_section_start + 1), "");
cur_gvar := atoim(message_str(2, cur_section_start + 4), "");
if ((message_str(2, cur_section_start + 4) == "") or global_var(cur_gvar)) then begin
call display_next_option(LVar0);
LVar0 := LVar0 + 1;
end
cur_section_start := cur_section_start + 25;
end
if ((cur_pos + 7) < (items_avail - 1)) then begin
sayOption(message_str(2, 105), list_next);
end
if (items_avail == 0) then begin
sayOption(message_str(2, 107), exit_mode);
end
end
procedure list_next
begin
cur_pos := cur_pos + 7;
end
procedure list_back
begin
cur_pos := cur_pos - 7;
end
procedure display_item_options
begin
cur_pid := atoim(message_str(2, cur_section_start + 1), "");
cur_gvar := atoim(message_str(2, cur_section_start + 4), "");
max_undo := obj_is_carrying_obj_pid(dude_obj, cur_pid);
sayStart;
mouseShape("pcx/st1.pcx", 0, 0);
sayReply("r_item_options", proto_data(cur_pid, 2));
call draw_item_pcx;
call draw_item_properties;
if (can_batch and (max > 1)) then begin
sayOption(message_str(2, 108) + message_str(2, 110) + max + message_str(2, 111), batch_all_items);
end
if (can_batch) then begin
sayOption(message_str(2, 103), batch_one_item);
end
if (can_undo and (max_undo > 1)) then begin
sayOption(message_str(2, 109) + message_str(2, 110) + max_undo + message_str(2, 111), undo_all_items);
end
if (can_undo) then begin
sayOption(message_str(2, 104), undo_one_item);
end
sayOption(message_str(2, 102), items_list_mode);
sayOption(message_str(2, 101), exit_mode);
sayEnd;
end
procedure display_batch_ok
begin
sayStart;
mouseShape("pcx/st1.pcx", 0, 0);
sayReply("r_batch_item", message_str(2, 201));
sayOption(message_str(2, 100), item_options_mode);
sayOption(message_str(2, 101), exit_mode);
sayEnd;
end
procedure display_undo_ok
begin
sayStart;
mouseShape("pcx/st1.pcx", 0, 0);
sayReply("r_undo_batch", message_str(2, 202));
sayOption(message_str(2, 100), item_options_mode);
sayOption(message_str(2, 101), exit_mode);
sayEnd;
end
procedure exit_mode
begin
mode := -1;
end
procedure items_list_mode
begin
mode := 1;
end
procedure item_options_mode
begin
mode := 2;
end
procedure batch_ok_mode
begin
mode := 3;
end
procedure undo_ok_mode
begin
mode := 4;
end
procedure batch_item(variable arg0)
begin
variable LVar1 := 7;
variable LVar2 := 0;
variable LVar3 := 0;
variable LVar4 := 0;
variable LVar5 := 0;
game_time_advance(cur_time * arg0);
while((message_str(2, cur_section_start + LVar1) != "[COMPONENTS]") and (LVar1 < 25)) do begin
LVar1 := LVar1 + 1;
end
LVar1 := LVar1 + 1;
while((LVar1 < 25) and (message_str(2, cur_section_start + LVar1) != "Error") and (message_str(2, cur_section_start) == "[ITEM]")) do begin
LVar2 := atoim(message_str(2, cur_section_start + LVar1), "");
LVar3 := atoim(message_str(2, cur_section_start + LVar1), LVar2 + ":");
removed_qty := obj_is_carrying_obj_pid(dude_obj, LVar2);
if ((LVar3 * arg0) < removed_qty) then begin
removed_qty := LVar3 * arg0;
end
if (removed_qty > 0) then begin
restock_obj := obj_carrying_pid_obj(dude_obj, LVar2);
if (obj_type(self_obj) == 1) then begin
restock_obj := obj_carrying_pid_obj(dude_obj, LVar2);
if (critter_inven_obj(self_obj, 0) == restock_obj) then begin
if (obj_item_subtype(critter_inven_obj(dude_obj, 0)) == 0) then begin
restock_obj := critter_inven_obj(dude_obj, 0);
debug_msg("armour pid == " + obj_pid(restock_obj));
rm_obj_from_inven(dude_obj, restock_obj);
add_obj_to_inven(dude_obj, restock_obj);
end
end
else begin
if ((critter_inven_obj(dude_obj, 2) == restock_obj) or (critter_inven_obj(dude_obj, 1) == restock_obj)) then begin
metarule(43, dude_obj);
end
end
end
restock_amt := rm_mult_objs_from_inven(dude_obj, restock_obj, removed_qty);
destroy_object(restock_obj);
end
restock_obj := 0;
restock_amt := 0;
LVar1 := LVar1 + 1;
end
restock_obj := create_object_sid(cur_pid, 0, 0, -1);
add_mult_objs_to_inven(dude_obj, restock_obj, arg0);
LVar4 := cur_time * arg0 / (60 * 10) / 60;
LVar5 := cur_time * arg0 / (60 * 10) % 60;
display_msg(message_str(2, 400) + proto_data(cur_pid, 1) + message_str(2, 402) + arg0 + message_str(2, 403) + LVar4 + message_str(2, 404) + LVar5 + message_str(2, 405));
call batch_ok_mode;
end
procedure undo_batch(variable arg0)
begin
variable LVar1 := 7;
variable LVar2 := 0;
variable LVar3 := 0;
variable LVar4 := 0;
variable LVar5 := 0;
game_time_advance(cur_time * arg0);
while((message_str(2, cur_section_start + LVar1) != "[COMPONENTS]") and (LVar1 < 25)) do begin
LVar1 := LVar1 + 1;
end
LVar1 := LVar1 + 1;
while((LVar1 < 25) and (message_str(2, cur_section_start + LVar1) != "Error") and (message_str(2, cur_section_start) == "[ITEM]")) do begin
LVar2 := atoim(message_str(2, cur_section_start + LVar1), "");
LVar3 := atoim(message_str(2, cur_section_start + LVar1), LVar2 + ":");
restock_obj := create_object_sid(LVar2, 0, 0, -1);
add_mult_objs_to_inven(dude_obj, restock_obj, LVar3 * arg0);
LVar1 := LVar1 + 1;
end
removed_qty := obj_is_carrying_obj_pid(dude_obj, cur_pid);
if (arg0 < removed_qty) then begin
removed_qty := arg0;
end
if (removed_qty > 0) then begin
restock_obj := obj_carrying_pid_obj(dude_obj, cur_pid);
if (obj_type(self_obj) == 1) then begin
restock_obj := obj_carrying_pid_obj(dude_obj, cur_pid);
if (critter_inven_obj(self_obj, 0) == restock_obj) then begin
if (obj_item_subtype(critter_inven_obj(dude_obj, 0)) == 0) then begin
restock_obj := critter_inven_obj(dude_obj, 0);
debug_msg("armour pid == " + obj_pid(restock_obj));
rm_obj_from_inven(dude_obj, restock_obj);
add_obj_to_inven(dude_obj, restock_obj);
end
end
else begin
if ((critter_inven_obj(dude_obj, 2) == restock_obj) or (critter_inven_obj(dude_obj, 1) == restock_obj)) then begin
metarule(43, dude_obj);
end
end
end
restock_amt := rm_mult_objs_from_inven(dude_obj, restock_obj, removed_qty);
destroy_object(restock_obj);
end
restock_obj := 0;
restock_amt := 0;
LVar4 := cur_time * arg0 / (60 * 10) / 60;
LVar5 := cur_time * arg0 / (60 * 10) % 60;
display_msg(message_str(2, 401) + proto_data(cur_pid, 1) + message_str(2, 402) + arg0 + message_str(2, 403) + LVar4 + message_str(2, 404) + LVar5 + message_str(2, 405));
call undo_ok_mode;
end
procedure batch_one_item
begin
call batch_item(1);
end
procedure batch_all_items
begin
call batch_item(max);
end
procedure undo_one_item
begin
call undo_batch(1);
end
procedure undo_all_items
begin
call undo_batch(max_undo);
end
procedure loop_mode
begin
while(mode != -1) do begin
if (mode == 1) then begin
call display_items_list;
end
else begin
if (mode == 2) then begin
call display_item_options;
end
else begin
if (mode == 3) then begin
call display_batch_ok;
end
else begin
if (mode == 4) then begin
call display_undo_ok;
end
end
end
end
end
end
procedure batch_init
begin
mode := 1;
cur_section_start := 500;
cur_pos := 0;
call count_items_avail;
setFont(5);
setTextColor(0.00000, 1.00000, 0.00000);
setHighlightColor(1.00000, 1.00000, 1.00000);
setHighlightColor(1.00000, 1.00000, 0.64000);
sayReplyWindow(300, 1, 340, 179, "PCX/w_rep.pcx");
sayOptionWindow(300, 180, 340, 199, "PCX/w_opt.pcx");
sayBorder(25, 25);
createWin("win_dscr", 1, 1, 300, 378);
selectWin("win_dscr");
display("PCX/w_dscr.pcx");
showWin;
call loop_mode;
deleteWin("win_dscr");
end
procedure redraw_win_dscr
begin
deleteWin("win_dscr");
createWin("win_dscr", 1, 1, 300, 378);
selectWin("win_dscr");
display("PCX/w_dscr.pcx");
showWin;
end
procedure redraw_win_idle
begin
deleteWin("win_dscr");
createWin("win_dscr", 1, 1, 300, 378);
selectWin("win_dscr");
display("PCX/w_idle.pcx");
showWin;
end
procedure ChooseFromList
begin
variable LVar0 := 0;
gsay_reply(1, stored_msg);
if (message_str(353, top_msg - 1) != "") then begin
giq_option(1, 1, message_str(353, 150), CLICK_PREV, 50);
end
if (LVar0 == 0) then begin
if (message_str(353, top_msg + 0) != "") then begin
giq_option(1, 1, message_str(353, top_msg + 0), CLICK_0, 50);
end
else begin
LVar0 := 1;
end
end
if (LVar0 == 0) then begin
if (message_str(353, top_msg + 1) != "") then begin
giq_option(1, 1, message_str(353, top_msg + 1), CLICK_1, 50);
end
else begin
LVar0 := 1;
end
end
if (LVar0 == 0) then begin
if (message_str(353, top_msg + 2) != "") then begin
giq_option(1, 1, message_str(353, top_msg + 2), CLICK_2, 50);
end
else begin
LVar0 := 1;
end
end
if (LVar0 == 0) then begin
if (message_str(353, top_msg + 3) != "") then begin
giq_option(1, 1, message_str(353, top_msg + 3), CLICK_3, 50);
end
else begin
LVar0 := 1;
end
end
if (LVar0 == 0) then begin
if (message_str(353, top_msg + 4) != "") then begin
giq_option(1, 1, message_str(353, top_msg + 4), CLICK_4, 50);
end
else begin
LVar0 := 1;
end
end
if (LVar0 == 0) then begin
if (message_str(353, top_msg + 5) != "") then begin
giq_option(1, 1, message_str(353, 151), CLICK_MORE, 50);
end
end
end
procedure CLICK_PREV
begin
top_msg := top_msg - 5;
call ChooseFromList;
end
procedure CLICK_0
begin
set_global_var(var_num, (global_var(var_num) / 100 * 100) + (top_msg % 100));
call stored_node;
end
procedure CLICK_1
begin
set_global_var(var_num, (global_var(var_num) / 100 * 100) + ((top_msg + 1) % 100));
call stored_node;
end
procedure CLICK_2
begin
set_global_var(var_num, (global_var(var_num) / 100 * 100) + ((top_msg + 2) % 100));
call stored_node;
end
procedure CLICK_3
begin
set_global_var(var_num, (global_var(var_num) / 100 * 100) + ((top_msg + 3) % 100));
call stored_node;
end
procedure CLICK_4
begin
set_global_var(var_num, (global_var(var_num) / 100 * 100) + ((top_msg + 4) % 100));
call stored_node;
end
procedure CLICK_MORE
begin
top_msg := top_msg + 5;
call ChooseFromList;
end
procedure getTimeBit
begin
variable LVar0 := 0;
LVar0 := game_time_hour;
if ((LVar0 >= 100) and (LVar0 <= 159)) then begin
return 1;
end
if ((LVar0 >= 200) and (LVar0 <= 259)) then begin
return 2;
end
if ((LVar0 >= 300) and (LVar0 <= 359)) then begin
return 4;
end
if ((LVar0 >= 400) and (LVar0 <= 459)) then begin
return 8;
end
if ((LVar0 >= 500) and (LVar0 <= 559)) then begin
return 16;
end
if ((LVar0 >= 600) and (LVar0 <= 659)) then begin
return 32;
end
if ((LVar0 >= 700) and (LVar0 <= 759)) then begin
return 64;
end
if ((LVar0 >= 800) and (LVar0 <= 859)) then begin
return 128;
end
if ((LVar0 >= 900) and (LVar0 <= 959)) then begin
return 256;
end
if ((LVar0 >= 1000) and (LVar0 <= 1059)) then begin
return 512;
end
if ((LVar0 >= 1100) and (LVar0 <= 1159)) then begin
return 1024;
end
if ((LVar0 >= 1200) and (LVar0 <= 1259)) then begin
return 2048;
end
if ((LVar0 >= 1300) and (LVar0 <= 1359)) then begin
return 4096;
end
if ((LVar0 >= 1400) and (LVar0 <= 1459)) then begin
return 8192;
end
if ((LVar0 >= 1500) and (LVar0 <= 1559)) then begin
return 16384;
end
if ((LVar0 >= 1600) and (LVar0 <= 1659)) then begin
return 32768;
end
if ((LVar0 >= 1700) and (LVar0 <= 1759)) then begin
return 65536;
end
if ((LVar0 >= 1800) and (LVar0 <= 1859)) then begin
return 131072;
end
if ((LVar0 >= 1900) and (LVar0 <= 1959)) then begin
return 262144;
end
if ((LVar0 >= 2000) and (LVar0 <= 2059)) then begin
return 524288;
end
if ((LVar0 >= 2100) and (LVar0 <= 2159)) then begin
return 1048576;
end
if ((LVar0 >= 2200) and (LVar0 <= 2259)) then begin
return 2097152;
end
if ((LVar0 >= 2300) and (LVar0 <= 2359)) then begin
return 4194304;
end
if ((LVar0 >= 0) and (LVar0 <= 100)) then begin
return 8388608;
end
end
procedure start
begin
if (local_var(0) == 0) then begin
set_local_var(0, game_time);
set_global_var(104, global_var(104) + 1);
if (global_var(104) < 0) then begin
set_global_var(104, 0);
end
else begin
if (global_var(104) > (100 + (2 * (get_critter_stat(dude_obj, 2) - 10)))) then begin
set_global_var(104, 100 + (2 * (get_critter_stat(dude_obj, 2) - 10)));
end
end
end
end
procedure timed_event_p_proc
begin
if (fixed_param == 1) then begin
critter_dmg(self_obj, 400, 0);
display_msg(message_str(14, 400));
end
else begin
if (fixed_param == 2) then begin
if ((global_var(173) == 3) and global_var(172)) then begin
move_to(dude_obj, tile_num(dude_obj), 1);
gfade_in(1);
end
end
else begin
if (fixed_param == 3) then begin
if (not(Check_Bess_Float)) then begin
add_timer_event(dude_obj, 1, 3);
end
end
else begin
if (fixed_param == 4) then begin
set_global_var(630, game_time + (7 * (24 * (60 * (60 * 10))) * 2));
end
end
end
end
end
procedure critter_p_proc
begin
if (global_var(630) != 0) then begin
if ((game_time > global_var(630)) and not((global_var(429) bwand 2) != 0) and (cur_map_index != 40)) then begin
set_global_var(582, global_var(582) bwor 1);
set_global_var(630, 0);
end
end
if (global_var(695) == 1) then begin
if (not(combat_is_initialized)) then begin
script_overrides;
set_global_var(695, 0);
call batch_init;
end
end
end
procedure map_enter_p_proc
begin
end
procedure combat_p_proc
begin
if (cur_map_index == 55) then begin
if (prize_fighter_obj == 0) then begin
end
else begin
if (fixed_param == 4) then begin
if (global_var(507) != 0) then begin
if ((((global_var(507) - game_time) / 10) <= 0) and (global_var(507) != 0)) then begin
last_timed_obj := prize_fighter_obj;
last_timed_param := last_timed_param;
metarule3(100, prize_fighter_obj, 42, 0);
add_timer_event(prize_fighter_obj, 0, 42);
end
else begin
if ((critter_state(dude_obj) bwand 2) or (critter_state(prize_fighter_obj) bwand 2)) then begin
last_timed_obj := prize_fighter_obj;
last_timed_param := last_timed_param;
metarule3(100, prize_fighter_obj, 41, 0);
add_timer_event(prize_fighter_obj, 0, 41);
end
end
end
end
end
end
end
procedure map_update_p_proc
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := (1 + has_trait(1, dude_obj, 0)) * (game_time - local_var(0)) / (60 * 10 * 3);
if (LVar0 > 0) then begin
set_global_var(104, global_var(104) + 1);
if (global_var(104) < 0) then begin
set_global_var(104, 0);
end
else begin
if (global_var(104) > (100 + (2 * (get_critter_stat(dude_obj, 2) - 10)))) then begin
set_global_var(104, 100 + (2 * (get_critter_stat(dude_obj, 2) - 10)));
end
end
end
if (global_var(192) == 0) then begin
if (global_var(193) > 0) then begin
LVar1 := (game_time / (10 * 60 * 60 * 24)) - global_var(133);
if (LVar1 > 30) then begin
if (global_var(193) < 5) then begin
display_msg(message_str(1, 140));
set_global_var(193, 5);
set_global_var(192, 1);
end
end
else begin
if (LVar1 > 25) then begin
if (global_var(193) < 4) then begin
display_msg(message_str(1, 130));
set_global_var(193, 4);
end
end
else begin
if (LVar1 > 20) then begin
if (global_var(193) < 3) then begin
display_msg(message_str(1, 120));
set_global_var(193, 3);
end
end
else begin
if (LVar1 > 15) then begin
if (global_var(193) < 2) then begin
display_msg(message_str(1, 110));
set_global_var(193, 2);
end
end
end
end
end
end
end
if (self_obj) then begin
if (obj_carrying_pid_obj(self_obj, 366) and not(global_var(629))) then begin
set_global_var(629, 1);
display_msg(message_str(1, 150) + 4000 + message_str(1, 151));
give_exp_points(4000);
end
end
end
procedure is_dropping_p_proc
begin
if (obj_pid(source_obj) == 366) then begin
script_overrides;
display_msg(message_str(14, 1099));
end
end
procedure Check_Bess_Float
begin
if (tile_distance(19894, tile_num(dude_obj)) < 10) then begin
if (not(Did_Bess_Float)) then begin
Did_Bess_Float := 1;
float_msg(dude_obj, message_str(1, 141), 0);
end
return 1;
end
return 0;
end
procedure use_obj_on_p_proc
begin
if (source_obj == dude_obj) then begin
if ((obj_being_used_with == 106) or (obj_being_used_with == 124) or (obj_being_used_with == 125) or (obj_being_used_with == 126)) then begin
set_global_var(104, global_var(104) + 1);
if (global_var(104) < 0) then begin
set_global_var(104, 0);
end
else begin
if (global_var(104) > (100 + (2 * (get_critter_stat(dude_obj, 2) - 10)))) then begin
set_global_var(104, 100 + (2 * (get_critter_stat(dude_obj, 2) - 10)));
end
end
end
else begin
if ((obj_being_used_with == 81) or (obj_being_used_with == 103)) then begin
set_global_var(104, global_var(104) + 1);
if (global_var(104) < 0) then begin
set_global_var(104, 0);
end
else begin
if (global_var(104) > (100 + (2 * (get_critter_stat(dude_obj, 2) - 10)))) then begin
set_global_var(104, 100 + (2 * (get_critter_stat(dude_obj, 2) - 10)));
end
end
end
else begin
if ((obj_being_used_with == 226) or (obj_being_used_with == 227)) then begin
set_global_var(104, global_var(104) + 1);
if (global_var(104) < 0) then begin
set_global_var(104, 0);
end
else begin
if (global_var(104) > (100 + (2 * (get_critter_stat(dude_obj, 2) - 10)))) then begin
set_global_var(104, 100 + (2 * (get_critter_stat(dude_obj, 2) - 10)));
end
end
end
else begin
if (0) then begin
set_global_var(104, global_var(104) + 1);
if (global_var(104) < 0) then begin
set_global_var(104, 0);
end
else begin
if (global_var(104) > (100 + (2 * (get_critter_stat(dude_obj, 2) - 10)))) then begin
set_global_var(104, 100 + (2 * (get_critter_stat(dude_obj, 2) - 10)));
end
end
end
else begin
if (0) then begin
set_global_var(104, global_var(104) + 1);
if (global_var(104) < 0) then begin
set_global_var(104, 0);
end
else begin
if (global_var(104) > (100 + (2 * (get_critter_stat(dude_obj, 2) - 10)))) then begin
set_global_var(104, 100 + (2 * (get_critter_stat(dude_obj, 2) - 10)));
end
end
end
else begin
if (0) then begin
set_global_var(104, global_var(104) + 1);
if (global_var(104) < 0) then begin
set_global_var(104, 0);
end
else begin
if (global_var(104) > (100 + (2 * (get_critter_stat(dude_obj, 2) - 10)))) then begin
set_global_var(104, 100 + (2 * (get_critter_stat(dude_obj, 2) - 10)));
end
end
end
end
end
end
end
end
end
end
procedure description_p_proc
begin
end
Ich finde es ist eine schlechte Lösung, guckt euch den Code an.
Er knallt den ganzen use_obj handler voll ach und sowieso...