![]() |
This is the transcript of a script file, which runs certain tasks in the game upon execution. |
---|
procedure start;
procedure stranger;
procedure Lighting;
procedure choose_start;
procedure North_table;
procedure South_table;
procedure Shady_table;
procedure Raider_table;
procedure Junk_table;
procedure Hub_table;
procedure Necrop_table;
procedure Steel_table;
procedure Vats_table;
procedure Glow_table;
procedure Bone_table;
procedure Death_table;
procedure North1;
procedure North2;
procedure North3;
procedure North4;
procedure North5;
procedure North6;
procedure South1;
procedure South2;
procedure South3;
procedure South4;
procedure South5;
procedure South6;
procedure Shady1;
procedure Shady2;
procedure Shady3;
procedure Shady4;
procedure Shady5;
procedure Shady6;
procedure Raider1;
procedure Raider2;
procedure Raider3;
procedure Raider4;
procedure Raider5;
procedure Raider6;
procedure Junk1;
procedure Junk2;
procedure Junk3;
procedure Junk4;
procedure Junk5;
procedure Junk6;
procedure Hub1;
procedure Hub2;
procedure Hub3;
procedure Hub4;
procedure Hub5;
procedure Hub6;
procedure Necrop1;
procedure Necrop2;
procedure Necrop3;
procedure Necrop4;
procedure Necrop5;
procedure Necrop6;
procedure Steel1;
procedure Steel2;
procedure Steel3;
procedure Steel4;
procedure Steel5;
procedure Steel6;
procedure Vats1;
procedure Vats2;
procedure Vats3;
procedure Vats4;
procedure Vats5;
procedure Vats6;
procedure Glow1;
procedure Glow2;
procedure Glow3;
procedure Glow4;
procedure Glow5;
procedure Glow6;
procedure Death1;
procedure Death2;
procedure Death3;
procedure Death4;
procedure Death5;
procedure Death6;
procedure Bone1;
procedure Bone2;
procedure Bone3;
procedure Bone4;
procedure Bone5;
procedure Bone6;
procedure Scenes;
procedure Place_critter;
procedure hunters;
procedure add_party;
procedure update_party;
procedure remove_party;
variable party_elevation;
variable dude_start_hex;
export variable Ian_ptr;
export variable Dog_ptr;
export variable Tycho_ptr;
export variable Katja_ptr;
export variable Tandi_ptr;
variable Dude_tile;
variable Place_Holder;
variable Encounter_Num;
variable Tot_Critter_A;
variable Tot_Critter_B;
variable Scorpions_Killed;
variable Skill_roll;
variable Item;
variable money;
variable Ranger_rerolls;
variable victim;
variable Critter;
variable Inner_ring;
variable Outer_ring;
variable Critter_direction;
variable Critter_tile;
variable Critter_type;
variable Critter_script := -1;
variable dude_pos;
variable dude_rot;
variable group_angle;
variable Range;
export variable random_seed_1;
export variable random_seed_2;
export variable random_seed_3;
procedure Darkness;
procedure Invasion;
procedure start
begin
if (script_action == map_enter_proc) then begin
dude_rot := random(0, 5);
set_global_var(GVAR_SAVE_TANDI_6, 0);
if ((global_var(GVAR_LOAD_MAP_INDEX) != 1) and metarule(14, 0)) then begin
Ranger_rerolls := has_trait(TTRAIT_PERK, dude_obj, PERK_ranger);
set_global_var(GVAR_SAVE_TANDI_5, 0);
while (Encounter_Num == 0) do begin
Encounter_Num := random(1, 6) + random(1, 6) + random(1, 6);
if (get_critter_stat(dude_obj, STAT_lu) > 8) then begin
Encounter_Num := Encounter_Num + 2;
end
else begin
if (get_critter_stat(dude_obj, STAT_lu) > 6) then begin
Encounter_Num := Encounter_Num + 1;
end
else begin
if (get_critter_stat(dude_obj, STAT_lu) < 3) then begin
Encounter_Num := Encounter_Num - 1;
end
end
end
if ((global_var(GVAR_HUNTER_STATUS) != 3) and (global_var(GVAR_CHILDKILLER_REPUATION) > 2) and random(0, 1)) then begin
Encounter_Num := 7;
end
else begin
if (Encounter_Num <= 3) then begin
Encounter_Num := 1;
end
else begin
if (Encounter_Num <= 5) then begin
Encounter_Num := 2;
end
else begin
if (Encounter_Num <= 8) then begin
Encounter_Num := 3;
end
else begin
if (Encounter_Num <= 12) then begin
Encounter_Num := 4;
end
else begin
if (Encounter_Num <= 15) then begin
Encounter_Num := 5;
end
else begin
Encounter_Num := 6;
end
end
end
end
end
end
if (global_var(GVAR_WORLD_TERRAIN) == 0) then begin
call North_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 1) then begin
call South_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 5) then begin
call Shady_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 6) then begin
call Raider_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 7) then begin
call Junk_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 8) then begin
call Hub_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 9) then begin
call Necrop_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 10) then begin
call Steel_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 11) then begin
call Vats_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 12) then begin
call Glow_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 14) then begin
call Death_table();
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 13) then begin
call Bone_table();
end
else begin
if (random(0, 1)) then begin
call North_table();
end
else begin
call South_table();
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
else begin
if (metarule(14, 0)) then begin
dude_pos := random(0, 3);
Dude_tile := tile_num(dude_obj);
call Scenes();
if (dude_pos == 0) then begin
override_map_start(109, 72, 0, dude_rot);
end
else begin
if (dude_pos == 1) then begin
override_map_start(131, 102, 0, dude_rot);
end
else begin
if (dude_pos == 2) then begin
override_map_start(90, 112, 0, dude_rot);
end
else begin
override_map_start(80, 86, 0, dude_rot);
end
end
end
end
end
call Lighting();
end
else begin
if (script_action == map_update_proc) then begin
call Lighting();
end
else begin
if (script_action == map_exit_proc) then begin
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 0);
if (Scorpions_Killed == 1) then begin
if (is_success(Skill_roll)) then begin
if (is_critical(Skill_roll)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 100));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 101));
end
end
else begin
if (is_critical(Skill_roll)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 102));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 103));
end
end
end
end
end
end
end
procedure stranger
begin
variable LVar0 := 1;
if (has_trait(TTRAIT_PERK, dude_obj, PERK_mysterious_stranger) and (global_var(GVAR_STRANGER_STATUS) == 0) and random(0, 1)) then begin
Critter_type := 16777520;
Critter_script := 856;
Critter_direction := random(0, 5);
Outer_ring := 7;
Inner_ring := 4;
call Place_critter();
Critter_direction := dude_rot + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
anim(Critter, 1000, Critter_direction);
Item := create_object(7, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(40, 0, 0);
add_mult_objs_to_inven(Critter, Item, 2);
Item := item_caps_adjust(Critter, random(7, 30) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
LVar0 := global_var(GVAR_WATER_THIEF_1);
if (LVar0 == 1) then begin
set_global_var(GVAR_WATER_THIEF_1, 10);
end
else begin
if (LVar0 == 2) then begin
set_global_var(GVAR_WATER_THIEF_1, 9);
end
else begin
set_global_var(GVAR_WATER_THIEF_1, 15);
end
end
end
end
procedure Lighting
begin
variable LVar0 := 0;
LVar0 := game_time_hour;
if ((LVar0 >= 600) and (LVar0 < 700)) then begin
set_light_level(LVar0 - 600 + 40);
end
else begin
if ((LVar0 >= 700) and (LVar0 < 1800)) then begin
set_light_level(100);
end
else begin
if ((LVar0 >= 1800) and (LVar0 < 1900)) then begin
set_light_level(100 - (LVar0 - 1800));
end
else begin
set_light_level(40);
end
end
end
end
procedure choose_start
begin
dude_pos := random(0, 3);
if (global_var(GVAR_WORLD_TERRAIN) == 1) then begin
if (Encounter_Num == 1) then begin
override_map_start(93, 91, 0, 1);
end
else begin
if (dude_pos == 0) then begin
override_map_start(109, 72, 0, dude_rot);
end
else begin
if (dude_pos == 1) then begin
override_map_start(131, 102, 0, dude_rot);
end
else begin
if (dude_pos == 2) then begin
override_map_start(90, 112, 0, dude_rot);
end
else begin
override_map_start(80, 86, 0, dude_rot);
end
end
end
end
end
else begin
if (global_var(GVAR_WORLD_TERRAIN) == 10) then begin
if ((Encounter_Num == 1) or (Encounter_Num == 5) or (Encounter_Num == 6)) then begin
override_map_start(100, 100, 0, dude_rot);
end
else begin
if (dude_pos == 0) then begin
override_map_start(109, 72, 0, dude_rot);
end
else begin
if (dude_pos == 1) then begin
override_map_start(131, 102, 0, dude_rot);
end
else begin
if (dude_pos == 2) then begin
override_map_start(90, 112, 0, dude_rot);
end
else begin
override_map_start(80, 86, 0, dude_rot);
end
end
end
end
end
else begin
if (dude_pos == 0) then begin
override_map_start(109, 72, 0, dude_rot);
end
else begin
if (dude_pos == 1) then begin
override_map_start(131, 102, 0, dude_rot);
end
else begin
if (dude_pos == 2) then begin
override_map_start(90, 112, 0, dude_rot);
end
else begin
override_map_start(80, 86, 0, dude_rot);
end
end
end
end
end
Dude_tile := tile_num(dude_obj);
call Scenes();
end
procedure North_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 1) or (Encounter_Num == 2) or (Encounter_Num == 3) or (Encounter_Num == 4) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Northern Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call North1();
end
else begin
if (Encounter_Num == 2) then begin
call North2();
end
else begin
if (Encounter_Num == 3) then begin
call North3();
end
else begin
if (Encounter_Num == 4) then begin
call North4();
end
else begin
if (Encounter_Num == 5) then begin
call North5();
end
else begin
if (Encounter_Num == 6) then begin
call North6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure South_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 2) or (Encounter_Num == 4) or (Encounter_Num == 5) or (Encounter_Num == 6) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Southern Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call South1();
end
else begin
if (Encounter_Num == 2) then begin
call South2();
end
else begin
if (Encounter_Num == 3) then begin
call South3();
end
else begin
if (Encounter_Num == 4) then begin
call South4();
end
else begin
if (Encounter_Num == 5) then begin
call South5();
end
else begin
if (Encounter_Num == 6) then begin
call South6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure Shady_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 1) or (Encounter_Num == 3) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Shady Sands Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call Shady1();
end
else begin
if (Encounter_Num == 2) then begin
call Shady2();
end
else begin
if (Encounter_Num == 3) then begin
call Shady3();
end
else begin
if (Encounter_Num == 4) then begin
call Shady4();
end
else begin
if (Encounter_Num == 5) then begin
call Shady5();
end
else begin
if (Encounter_Num == 6) then begin
call Shady6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure Raider_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 1) or (Encounter_Num == 3) or (Encounter_Num == 4) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Raiders Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call Raider1();
end
else begin
if (Encounter_Num == 2) then begin
call Raider2();
end
else begin
if (Encounter_Num == 3) then begin
call Raider3();
end
else begin
if (Encounter_Num == 4) then begin
call Raider4();
end
else begin
if (Encounter_Num == 5) then begin
call Raider5();
end
else begin
if (Encounter_Num == 6) then begin
call Raider6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure Junk_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 1) or (Encounter_Num == 2) or (Encounter_Num == 3) or (Encounter_Num == 4) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Junk Town Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call Junk1();
end
else begin
if (Encounter_Num == 2) then begin
call Junk2();
end
else begin
if (Encounter_Num == 3) then begin
call Junk3();
end
else begin
if (Encounter_Num == 4) then begin
call Junk4();
end
else begin
if (Encounter_Num == 5) then begin
call Junk5();
end
else begin
if (Encounter_Num == 6) then begin
call Junk6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure Hub_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 2) or (Encounter_Num == 3) or (Encounter_Num == 4) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Hub Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call Hub1();
end
else begin
if (Encounter_Num == 2) then begin
call Hub2();
end
else begin
if (Encounter_Num == 3) then begin
call Hub3();
end
else begin
if (Encounter_Num == 4) then begin
call Hub4();
end
else begin
if (Encounter_Num == 5) then begin
call Hub5();
end
else begin
if (Encounter_Num == 6) then begin
call Hub6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure Necrop_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 2) or (Encounter_Num == 3) or (Encounter_Num == 5) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Necropolis Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call Necrop1();
end
else begin
if (Encounter_Num == 2) then begin
call Necrop2();
end
else begin
if (Encounter_Num == 3) then begin
call Necrop3();
end
else begin
if (Encounter_Num == 4) then begin
call Necrop4();
end
else begin
if (Encounter_Num == 5) then begin
call Necrop5();
end
else begin
if (Encounter_Num == 6) then begin
call Necrop6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure Steel_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 1) or (Encounter_Num == 2) or (Encounter_Num == 4) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Brotherhood of Steel Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call Steel1();
end
else begin
if (Encounter_Num == 2) then begin
call Steel2();
end
else begin
if (Encounter_Num == 3) then begin
call Steel3();
end
else begin
if (Encounter_Num == 4) then begin
call Steel4();
end
else begin
if (Encounter_Num == 5) then begin
call Steel5();
end
else begin
if (Encounter_Num == 6) then begin
call Steel6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure Vats_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 1) or (Encounter_Num == 2) or (Encounter_Num == 3) or (Encounter_Num == 4) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Vats Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call Vats1();
end
else begin
if (Encounter_Num == 2) then begin
call Vats2();
end
else begin
if (Encounter_Num == 3) then begin
call Vats3();
end
else begin
if (Encounter_Num == 4) then begin
call Vats4();
end
else begin
if (Encounter_Num == 5) then begin
call Vats5();
end
else begin
if (Encounter_Num == 6) then begin
call Vats6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure Glow_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 1) or (Encounter_Num == 3) or (Encounter_Num == 4) or (Encounter_Num == 5) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Glow Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call Glow1();
end
else begin
if (Encounter_Num == 2) then begin
call Glow2();
end
else begin
if (Encounter_Num == 3) then begin
call Glow3();
end
else begin
if (Encounter_Num == 4) then begin
call Glow4();
end
else begin
if (Encounter_Num == 5) then begin
call Glow5();
end
else begin
if (Encounter_Num == 6) then begin
call Glow6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure Bone_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 1) or (Encounter_Num == 3) or (Encounter_Num == 5) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Bone Desert encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call Bone1();
end
else begin
if (Encounter_Num == 2) then begin
call Bone2();
end
else begin
if (Encounter_Num == 3) then begin
call Bone3();
end
else begin
if (Encounter_Num == 4) then begin
call Bone4();
end
else begin
if (Encounter_Num == 5) then begin
call Bone5();
end
else begin
if (Encounter_Num == 6) then begin
call Bone6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure Death_table
begin
if (Ranger_rerolls) then begin
Ranger_rerolls := Ranger_rerolls - 1;
if ((Encounter_Num == 1) or (Encounter_Num == 2) or (Encounter_Num == 4) or (Encounter_Num == 6) or (Encounter_Num == 7)) then begin
Encounter_Num := 0;
end
end
if (global_var(GVAR_WATER_THIEF_8)) then begin
Encounter_Num := global_var(GVAR_WATER_THIEF_8);
set_global_var(GVAR_WATER_THIEF_8, 0);
debug_msg("Death Claw encounter type: " + Encounter_Num);
end
if (Encounter_Num) then begin
call choose_start();
if (Encounter_Num == 1) then begin
call Death1();
end
else begin
if (Encounter_Num == 2) then begin
call Death2();
end
else begin
if (Encounter_Num == 3) then begin
call Death3();
end
else begin
if (Encounter_Num == 4) then begin
call Death4();
end
else begin
if (Encounter_Num == 5) then begin
call Death5();
end
else begin
if (Encounter_Num == 6) then begin
call Death6();
end
else begin
call hunters();
end
end
end
end
end
end
end
end
procedure North1
begin
display_msg(message_str(SCRIPT_RNDDESRT, 104));
Tot_Critter_A := random(3, 6);
Tot_Critter_B := random(4, 8);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 4;
group_angle := random(0, 5);
Critter_type := 16777227;
Critter_script := 12;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Tot_Critter_A := Tot_Critter_A - 1;
end
victim := Critter;
Critter_script := 222;
if (group_angle == 0) then begin
group_angle := 3;
end
else begin
if (group_angle == 1) then begin
group_angle := 4;
end
else begin
if (group_angle == 2) then begin
group_angle := 5;
end
else begin
if (group_angle == 3) then begin
group_angle := 0;
end
else begin
if (group_angle == 4) then begin
group_angle := 1;
end
else begin
if (group_angle == 5) then begin
group_angle := 2;
end
end
end
end
end
end
while (Tot_Critter_B) do begin
if (random(0, 3) == 3) then begin
Critter_type := 16777226;
end
else begin
Critter_type := 16777378;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Tot_Critter_B := Tot_Critter_B - 1;
end
attack_setup(dude_obj, victim);
attack_setup(dude_obj, Critter);
attack_setup(Critter, victim);
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure North2
begin
variable LVar0 := 0;
Tot_Critter_A := random(1, 2);
Tot_Critter_B := random(3, 5);
group_angle := random(0, 5);
if (is_success(do_check(dude_obj, STAT_pe, -2)) or has_trait(TTRAIT_PERK, dude_obj, PERK_bonus_awareness)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 197));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 7;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 5;
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 105));
LVar0 := 1;
Outer_ring := 5;
Inner_ring := 2;
end
Critter_type := 16777419;
Critter_script := 749;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (LVar0) then begin
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
end
else begin
anim(Critter, 1000, random(0, 5));
end
if (random(0, 1)) then begin
if (random(0, 1)) then begin
Item := create_object(18, 0, 0);
end
else begin
Item := create_object(8, 0, 0);
end
end
else begin
Item := create_object(4, 0, 0);
end
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, (random(1, 20) * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1);
Tot_Critter_A := Tot_Critter_A - 1;
end
Outer_ring := Outer_ring + 2;
Inner_ring := Inner_ring + 2;
while (Tot_Critter_B) do begin
if (random(0, 1)) then begin
Critter_type := 16777449;
end
else begin
Critter_type := 16777432;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (LVar0) then begin
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
end
else begin
anim(Critter, 1000, random(0, 5));
end
if (random(0, 1)) then begin
if (random(0, 1)) then begin
Item := create_object(18, 0, 0);
end
else begin
Item := create_object(8, 0, 0);
end
end
else begin
Item := create_object(4, 0, 0);
end
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, random(1, 25) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
Tot_Critter_B := Tot_Critter_B - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure North3
begin
display_msg(message_str(SCRIPT_RNDDESRT, 106));
Tot_Critter_A := random(4, 6);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
Critter_type := 16777227;
Critter_script := 12;
group_angle := random(0, 5);
while (Tot_Critter_A) do begin
Critter_direction := group_angle;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777229;
Critter_direction := random(0, 5);
Outer_ring := 4;
Inner_ring := 2;
call Place_critter();
anim(Critter, 1000, random(0, 5));
Item := item_caps_adjust(Critter, random(40, 100) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
if (random(0, 1)) then begin
Item := create_object(40, 0, 0);
add_obj_to_inven(Critter, Item);
end
kill_critter(Critter, 61);
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure North4
begin
display_msg(message_str(SCRIPT_RNDDESRT, 107));
Tot_Critter_A := random(2, 4);
group_angle := random(0, 5);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
Inner_ring := get_critter_stat(dude_obj, STAT_pe) / 2;
Critter_type := 16777227;
Critter_script := 12;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 3 * 2) - 3);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure North5
begin
display_msg(message_str(SCRIPT_RNDDESRT, 108));
Tot_Critter_A := random(2, 6);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 8;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 4;
Critter_script := 222;
while (Tot_Critter_A) do begin
if (random(0, 3) == 3) then begin
Critter_type := 16777226;
end
else begin
Critter_type := 16777378;
end
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, random(0, 5));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure North6
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := random(1, 6);
if (obj_is_carrying_obj_pid(dude_obj, 126)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 125));
destroy_object(obj_carrying_pid_obj(dude_obj, 126));
end
else begin
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 20 * has_trait(TTRAIT_PERK, dude_obj, PERK_survivalist));
if (is_success(Skill_roll)) then begin
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 109));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 110) + LVar0 + message_str(SCRIPT_RNDDESRT, 111));
end
end
else begin
if (is_critical(Skill_roll)) then begin
LVar1 := random(2, 4);
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 112) + LVar1 + message_str(SCRIPT_RNDDESRT, 113));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 114) + LVar0 + message_str(SCRIPT_RNDDESRT, 115) + LVar1 + message_str(SCRIPT_RNDDESRT, 116));
end
critter_injure(dude_obj, 2);
end
else begin
LVar1 := random(1, 2);
if (LVar0 == 1) then begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 117));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 118) + LVar1 + message_str(SCRIPT_RNDDESRT, 119));
end
end
else begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 120) + LVar0 + message_str(SCRIPT_RNDDESRT, 121));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 122) + LVar0 + message_str(SCRIPT_RNDDESRT, 123) + LVar1 + message_str(SCRIPT_RNDDESRT, 124));
end
end
critter_injure(dude_obj, 2);
end
end
critter_dmg(dude_obj, LVar1, 0);
LVar0 := LVar0 * 3600;
game_time_advance(game_ticks(LVar0));
end
end
procedure South1
begin
variable LVar0 := 0;
display_msg(message_str(SCRIPT_RNDDESRT, 131));
Tot_Critter_A := random(6, 10);
Outer_ring := 7;
Inner_ring := 10;
Critter_type := 16777244;
Critter_script := 941;
while (Tot_Critter_A) do begin
Critter_direction := 1;
call Place_critter();
anim(Critter, 1000, 4);
Tot_Critter_A := Tot_Critter_A - 1;
end
end
procedure South2
begin
display_msg(message_str(SCRIPT_RNDDESRT, 132));
Tot_Critter_A := random(4, 6);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Critter_type := 16777227;
Critter_script := 12;
group_angle := random(0, 5);
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2 * 2) - 2);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure South3
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := random(1, 6);
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 20 * has_trait(TTRAIT_PERK, dude_obj, PERK_survivalist));
if (obj_is_carrying_obj_pid(dude_obj, 126)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 125));
destroy_object(obj_carrying_pid_obj(dude_obj, 126));
end
else begin
if (is_success(Skill_roll)) then begin
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 109));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 110) + LVar0 + message_str(SCRIPT_RNDDESRT, 111));
end
end
else begin
if (is_critical(Skill_roll)) then begin
LVar1 := random(2, 4);
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 112) + LVar1 + message_str(SCRIPT_RNDDESRT, 113));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 114) + LVar0 + message_str(SCRIPT_RNDDESRT, 115) + LVar1 + message_str(SCRIPT_RNDDESRT, 116));
end
critter_injure(dude_obj, 2);
end
else begin
LVar1 := random(1, 2);
if (LVar0 == 1) then begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 117));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 118) + LVar1 + message_str(SCRIPT_RNDDESRT, 119));
end
end
else begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 120) + LVar0 + message_str(SCRIPT_RNDDESRT, 121));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 122) + LVar0 + message_str(SCRIPT_RNDDESRT, 123) + LVar1 + message_str(SCRIPT_RNDDESRT, 124));
end
end
critter_injure(dude_obj, 2);
end
end
critter_dmg(dude_obj, LVar1, 0);
LVar0 := LVar0 * 3600;
game_time_advance(game_ticks(LVar0));
end
end
procedure South4
begin
display_msg(message_str(SCRIPT_RNDDESRT, 143));
Tot_Critter_A := random(2, 5);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Critter_script := 749;
group_angle := random(0, 5);
while (Tot_Critter_A) do begin
if (random(0, 1)) then begin
Critter_type := 16777449;
end
else begin
Critter_type := 16777432;
end
Critter_direction := group_angle + (random(0, 1 * 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
if (random(0, 1)) then begin
if (random(0, 1)) then begin
Item := create_object(34, 0, 0);
add_obj_to_inven(Critter, Item);
if (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger)) then begin
Item := create_object(34, 0, 0);
add_obj_to_inven(Critter, Item);
end
Item := create_object(10, 0, 0);
end
else begin
Item := create_object(29, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
Item := create_object(8, 0, 0);
end
end
else begin
Item := create_object(7, 0, 0);
end
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, random(10, 30) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure South5
begin
display_msg(message_str(SCRIPT_RNDDESRT, 144));
Tot_Critter_A := random(4, 8);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 7;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Critter_script := 943;
group_angle := random(0, 5);
while (Tot_Critter_A) do begin
if (random(0, 4) == 4) then begin
Critter_type := 16777226;
end
else begin
Critter_type := 16777378;
end
Critter_direction := group_angle + (random(0, 2 * 2) - 2);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, random(0, 5));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure South6
begin
display_msg(message_str(SCRIPT_RNDDESRT, 145));
Tot_Critter_A := random(3, 6);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
group_angle := random(0, 5);
Critter_type := 16777227;
Critter_script := 12;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2 * 2) - 2);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure Shady1
begin
display_msg(message_str(SCRIPT_RNDDESRT, 146));
Tot_Critter_A := 2;
Tot_Critter_B := random(2, 3);
set_global_var(GVAR_WATER_THIEF_3, 0);
set_global_var(GVAR_WATER_THIEF_4, 0);
set_global_var(GVAR_WATER_THIEF_5, 0);
set_global_var(GVAR_WATER_THIEF_2, Tot_Critter_B);
set_global_var(GVAR_WATER_THIEF_1, 6);
group_angle := random(0, 5);
Outer_ring := 11;
Inner_ring := 8;
Critter_type := 16777255;
Critter_script := 713;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := item_caps_adjust(Critter, (random(1, 12) * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1);
Tot_Critter_A := Tot_Critter_A - 1;
end
victim := Critter;
Critter_type := 16777449;
Critter_script := 749;
if (group_angle == 0) then begin
group_angle := 3;
end
else begin
if (group_angle == 1) then begin
group_angle := 4;
end
else begin
if (group_angle == 2) then begin
group_angle := 5;
end
else begin
if (group_angle == 3) then begin
group_angle := 0;
end
else begin
if (group_angle == 4) then begin
group_angle := 1;
end
else begin
if (group_angle == 5) then begin
group_angle := 2;
end
end
end
end
end
end
while (Tot_Critter_B) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(7, 0, 0);
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, (random(1, 13) * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1);
Tot_Critter_B := Tot_Critter_B - 1;
end
attack_setup(Critter, victim);
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Shady2
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := random(1, 6);
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 20 * has_trait(TTRAIT_PERK, dude_obj, PERK_survivalist));
if (obj_is_carrying_obj_pid(dude_obj, 126)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 125));
destroy_object(obj_carrying_pid_obj(dude_obj, 126));
end
else begin
if (is_success(Skill_roll)) then begin
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 109));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 110) + LVar0 + message_str(SCRIPT_RNDDESRT, 111));
end
end
else begin
if (is_critical(Skill_roll)) then begin
LVar1 := random(2, 4);
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 112) + LVar1 + message_str(SCRIPT_RNDDESRT, 113));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 114) + LVar0 + message_str(SCRIPT_RNDDESRT, 115) + LVar1 + message_str(SCRIPT_RNDDESRT, 116));
end
critter_injure(dude_obj, 2);
end
else begin
LVar1 := random(1, 2);
if (LVar0 == 1) then begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 117));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 118) + LVar1 + message_str(SCRIPT_RNDDESRT, 119));
end
critter_injure(dude_obj, 2);
end
else begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 120) + LVar0 + message_str(SCRIPT_RNDDESRT, 121));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 122) + LVar0 + message_str(SCRIPT_RNDDESRT, 123) + LVar1 + message_str(SCRIPT_RNDDESRT, 124));
end
critter_injure(dude_obj, 2);
end
end
end
critter_dmg(dude_obj, LVar1, 0);
LVar0 := LVar0 * 3600;
game_time_advance(game_ticks(LVar0));
end
end
procedure Shady3
begin
display_msg(message_str(SCRIPT_RNDDESRT, 169));
Scorpions_Killed := 1;
Tot_Critter_A := random(1, 3);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
Critter_type := 16777227;
Critter_script := 12;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 4);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Shady4
begin
if (not(global_var(GVAR_SAVE_TANDI_2))) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 170));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 305));
end
Tot_Critter_B := random(4, 6);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 7;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
group_angle := dude_rot;
set_global_var(GVAR_WATER_THIEF_2, 0);
if (not(global_var(GVAR_SAVE_TANDI_2))) then begin
Critter_type := 16777246;
Critter_script := 243;
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(71, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(29, 0, 0);
add_mult_objs_to_inven(Critter, Item, 2 * (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1));
Item := create_object(30, 0, 0);
add_mult_objs_to_inven(Critter, Item, 1 * (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1));
Item := create_object(34, 0, 0);
add_mult_objs_to_inven(Critter, Item, 2 * (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1));
Item := create_object(40, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 4));
Item := create_object(47, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 1));
Item := create_object(81, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 3));
Item := item_caps_adjust(Critter, random(25, 100) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
victim := Critter;
end
else begin
set_global_var(GVAR_WATER_THIEF_2, 1);
end
Critter_type := 16777218;
Critter_script := 757;
while (Tot_Critter_B) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (not(global_var(GVAR_SAVE_TANDI_2))) then begin
if (random(0, 1)) then begin
Critter_direction := group_angle + (random(0, 4) - 2);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
anim(Critter, 1000, Critter_direction);
end
else begin
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(victim)));
end
end
else begin
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
end
Item := create_object(10, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(34, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
Item := item_caps_adjust(Critter, random(1, 6) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
Tot_Critter_B := Tot_Critter_B - 1;
end
end
procedure Shady5
begin
display_msg(message_str(SCRIPT_RNDDESRT, 171));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 4;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
Critter_direction := dude_rot;
Critter_type := 16777246;
if (random(0, 1)) then begin
Critter_type := 16777246;
Critter_script := 699;
end
else begin
Critter_type := 16777218;
Critter_script := 749;
end
Critter_script := -1;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(8, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(29, 0, 0);
add_mult_objs_to_inven(Critter, Item, 1 + has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger));
Item := create_object(7, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(81, 0, 0);
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, random(8, 44) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
kill_critter(Critter, 61);
Tot_Critter_A := random(4, 6);
if ((game_time_hour >= 700) and (game_time_hour < 1800)) then begin
Outer_ring := 6;
Inner_ring := 4;
end
else begin
Outer_ring := 4;
Inner_ring := 3;
end
Critter_type := 16777284;
Critter_script := 735;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Shady6
begin
variable LVar0 := 2;
display_msg(message_str(SCRIPT_RNDDESRT, 172));
Critter_direction := random(0, 5);
money := create_object(41, 0, 0);
Critter_tile := tile_num_in_direction(Dude_tile, Critter_direction, 4);
Item := create_object(71, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
if (get_critter_stat(dude_obj, STAT_lu) == 8) then begin
money := 0;
Item := create_object(71, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
Item := create_object(29, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
if (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger)) then begin
Item := create_object(29, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
end
Item := create_object(46, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
add_mult_objs_to_inven(Item, money, 6 * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
end
else begin
if (get_critter_stat(dude_obj, STAT_lu) > 8) then begin
Item := create_object(71, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
if (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger)) then begin
LVar0 := 4;
end
while (LVar0) do begin
Item := create_object(29, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
LVar0 := LVar0 - 1;
end
Item := create_object(46, 0, 0);
add_mult_objs_to_inven(Item, money, 122 * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
critter_attempt_placement(Item, Critter_tile, 0);
Item := create_object(8, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
end
else begin
Item := create_object(71, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
Item := create_object(46, 0, 0);
add_mult_objs_to_inven(Item, money, 4 * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
critter_attempt_placement(Item, Critter_tile, 0);
end
end
end
procedure Raider1
begin
variable LVar0 := 0;
display_msg(message_str(SCRIPT_RNDDESRT, 173));
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 4;
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Tot_Critter_A := random(5, 7);
Tot_Critter_B := random(2, 3);
group_angle := random(0, 5);
random_seed_1 := Tot_Critter_A;
random_seed_2 := 0;
random_seed_3 := 0;
LVar0 := tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(7, 12));
Item := create_object(33554959, LVar0, 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 0), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 1), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 2), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 3), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 4), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 5), 0);
if ((game_time_hour >= 1900) or (game_time_hour < 600)) then begin
Critter := create_object(33554433, 0, 0);
Critter_tile := tile_num_in_direction(Dude_tile, group_angle, 5);
critter_attempt_placement(Critter, Critter_tile, 0);
end
Critter_type := 16777244;
Critter_script := -1;
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, random(0, 5));
kill_critter(Critter, 61);
Critter_type := 16777244;
Critter_script := -1;
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, random(0, 5));
kill_critter(Critter, 61);
Critter_script := 750;
while (Tot_Critter_A) do begin
if (random(0, 1)) then begin
Critter_type := 16777449;
end
else begin
Critter_type := 16777432;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(0, 1)) then begin
if (random(0, 1)) then begin
Item := create_object(34, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
Item := create_object(10, 0, 0);
end
else begin
Item := create_object(29, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
Item := create_object(8, 0, 0);
end
end
else begin
Item := create_object(7, 0, 0);
end
add_obj_to_inven(Critter, Item);
Tot_Critter_A := Tot_Critter_A - 1;
end
victim := Critter;
if (random(0, 1)) then begin
Critter_type := 16777449;
end
else begin
Critter_type := 16777432;
end
Critter_script := -1;
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(1, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
kill_critter(Critter, 61);
Critter_type := 16777219;
Critter_script := 755;
if (group_angle == 0) then begin
group_angle := 3;
end
else begin
if (group_angle == 1) then begin
group_angle := 4;
end
else begin
if (group_angle == 2) then begin
group_angle := 5;
end
else begin
if (group_angle == 3) then begin
group_angle := 0;
end
else begin
if (group_angle == 4) then begin
group_angle := 1;
end
else begin
if (group_angle == 5) then begin
group_angle := 2;
end
end
end
end
end
end
while (Tot_Critter_B) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(10, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(34, 0, 0);
add_obj_to_inven(Critter, Item);
if (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger)) then begin
Item := create_object(34, 0, 0);
add_obj_to_inven(Critter, Item);
end
Tot_Critter_B := Tot_Critter_B - 1;
end
attack_setup(victim, Critter);
Critter_type := 16777219;
Critter_script := -1;
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(2, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(10, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(34, 0, 0);
add_obj_to_inven(Critter, Item);
kill_critter(Critter, 61);
Critter_type := 16777229;
Critter_script := 753;
Critter_direction := random(0, 5);
call Place_critter();
critter_dmg(Critter, 5, 0);
Item := item_caps_adjust(Critter, random(100, 300) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
if (random(1, 10) > 6) then begin
Item := create_object(47, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(1, 10) > 6) then begin
Item := create_object(40, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(1, 10) > 6) then begin
Item := create_object(78, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(1, 10) > 6) then begin
Item := create_object(84, 0, 0);
add_obj_to_inven(Critter, Item);
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Raider2
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := random(1, 6);
if (obj_is_carrying_obj_pid(dude_obj, 126)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 125));
destroy_object(obj_carrying_pid_obj(dude_obj, 126));
end
else begin
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 20 * has_trait(TTRAIT_PERK, dude_obj, PERK_survivalist));
if (is_success(Skill_roll)) then begin
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 109));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 110) + LVar0 + message_str(SCRIPT_RNDDESRT, 111));
end
end
else begin
if (is_critical(Skill_roll)) then begin
LVar1 := random(2, 4);
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 112) + LVar1 + message_str(SCRIPT_RNDDESRT, 113));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 114) + LVar0 + message_str(SCRIPT_RNDDESRT, 115) + LVar1 + message_str(SCRIPT_RNDDESRT, 116));
end
critter_injure(dude_obj, 2);
end
else begin
LVar1 := random(1, 2);
if (LVar0 == 1) then begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 117));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 118) + LVar1 + message_str(SCRIPT_RNDDESRT, 119));
end
critter_injure(dude_obj, 2);
end
else begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 120) + LVar0 + message_str(SCRIPT_RNDDESRT, 121));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 122) + LVar0 + message_str(SCRIPT_RNDDESRT, 123) + LVar1 + message_str(SCRIPT_RNDDESRT, 124));
end
critter_injure(dude_obj, 2);
end
end
end
critter_dmg(dude_obj, LVar1, 0);
LVar0 := LVar0 * 3600;
game_time_advance(game_ticks(LVar0));
end
end
procedure Raider3
begin
display_msg(message_str(SCRIPT_RNDDESRT, 196));
Tot_Critter_A := random(3, 4);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Critter_type := 16777227;
Critter_script := 12;
while (Tot_Critter_A) do begin
Critter_direction := random(4, 5);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Raider4
begin
display_msg(message_str(SCRIPT_RNDDESRT, 197));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 3;
Tot_Critter_A := random(4, 6);
group_angle := random(0, 5);
Critter_script := 749;
while (Tot_Critter_A) do begin
if (random(0, 1)) then begin
if (random(0, 1)) then begin
Critter_type := 16777449;
end
else begin
Critter_type := 16777432;
end
end
else begin
Critter_type := 16777319;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(0, 1)) then begin
if (random(0, 1)) then begin
Item := create_object(10, 0, 0);
end
else begin
Item := create_object(18, 0, 0);
end
end
else begin
Item := create_object(8, 0, 0);
end
add_obj_to_inven(Critter, Item);
if (random(0, 1)) then begin
Item := create_object(124, 0, 0);
add_obj_to_inven(Critter, Item);
end
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Raider5
begin
display_msg(message_str(SCRIPT_RNDDESRT, 198));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Critter_direction := dude_rot;
Critter_type := 16777254;
Critter_script := 700;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(0, 1)) then begin
if (random(0, 1)) then begin
Item := create_object(10, 0, 0);
end
else begin
Item := create_object(18, 0, 0);
end
end
else begin
Item := create_object(8, 0, 0);
end
add_obj_to_inven(Critter, Item);
if (random(0, 1)) then begin
Item := item_caps_adjust(Critter, random(5, 10) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
end
end
procedure Raider6
begin
display_msg(message_str(SCRIPT_RNDDESRT, 199));
Tot_Critter_A := random(3, 5);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 4;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Critter_script := -1;
while (Tot_Critter_A) do begin
if (random(0, 1)) then begin
if (random(0, 1)) then begin
Critter_type := 16777449;
end
else begin
Critter_type := 16777432;
end
end
else begin
Critter_type := 16777319;
end
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, random(0, 5));
kill_critter(Critter, 61);
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777252;
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, random(0, 5));
kill_critter(Critter, 61);
end
procedure Junk1
begin
display_msg(message_str(SCRIPT_RNDDESRT, 200));
Tot_Critter_A := random(3, 4);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Critter_type := 16777227;
Critter_script := 12;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 4);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Junk2
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := random(1, 6);
if (obj_is_carrying_obj_pid(dude_obj, 126)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 125));
destroy_object(obj_carrying_pid_obj(dude_obj, 126));
end
else begin
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 20 * has_trait(TTRAIT_PERK, dude_obj, PERK_survivalist));
if (is_success(Skill_roll)) then begin
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 109));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 110) + LVar0 + message_str(SCRIPT_RNDDESRT, 111));
end
end
else begin
if (is_critical(Skill_roll)) then begin
LVar1 := random(2, 4);
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 112) + LVar1 + message_str(SCRIPT_RNDDESRT, 113));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 114) + LVar0 + message_str(SCRIPT_RNDDESRT, 115) + LVar1 + message_str(SCRIPT_RNDDESRT, 116));
end
critter_injure(dude_obj, 2);
end
else begin
LVar1 := random(1, 2);
if (LVar0 == 1) then begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 117));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 118) + LVar1 + message_str(SCRIPT_RNDDESRT, 119));
end
critter_injure(dude_obj, 2);
end
else begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 120) + LVar0 + message_str(SCRIPT_RNDDESRT, 121));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 122) + LVar0 + message_str(SCRIPT_RNDDESRT, 123) + LVar1 + message_str(SCRIPT_RNDDESRT, 124));
end
critter_injure(dude_obj, 2);
end
end
end
critter_dmg(dude_obj, LVar1, 0);
LVar0 := LVar0 * 3600;
game_time_advance(game_ticks(LVar0));
end
end
procedure Junk3
begin
display_msg(message_str(SCRIPT_RNDDESRT, 223));
Tot_Critter_A := random(4, 6);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
group_angle := random(0, 5);
Critter_type := 16777379;
Critter_script := 693;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, random(0, 5));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Junk4
begin
display_msg(message_str(SCRIPT_RNDDESRT, 224));
Tot_Critter_A := random(2, 4);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Critter_type := 16777452;
Critter_script := 437;
group_angle := random(0, 5);
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (random(1, 3) == 1) then begin
anim(Critter, 1000, random(0, 5));
end
else begin
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
end
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(0, 1)) then begin
Item := create_object(10, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(34, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
end
Tot_Critter_A := Tot_Critter_A - 1;
end
Item := create_object(100, 0, 0);
add_obj_to_inven(Critter, Item);
end
procedure Junk5
begin
variable LVar0 := 0;
display_msg(message_str(SCRIPT_RNDDESRT, 225));
Tot_Critter_A := random(1, 3);
Tot_Critter_B := random(2, 12);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
group_angle := random(0, 5);
LVar0 := tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(7, 12));
Item := create_object(33554959, LVar0, 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 0), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 1), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 2), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 3), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 4), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 5), 0);
LVar0 := tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(7, 12));
Item := create_object(33554960, LVar0, 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 0), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 1), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 2), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 3), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 4), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 5), 0);
Critter_type := 16777245;
Critter_script := 752;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, random(0, 5));
Item := item_caps_adjust(Critter, random(50, 150) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
Item := create_object(30, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(1, 4));
Item := create_object(29, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(1, 4));
Item := create_object(4, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(1, 4));
Item := create_object(71, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(4, 8));
Item := create_object(127, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 2));
Item := create_object(93, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 2));
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777243;
for (Critter_script := 755; Tot_Critter_B; Tot_Critter_B := Tot_Critter_B - 1) begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, random(0, 5));
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(0, 1)) then begin
Item := create_object(18, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(31, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
continue;
end
Item := create_object(10, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(34, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
end
end
procedure Junk6
begin
variable LVar0 := 2;
variable LVar1 := 0;
display_msg(message_str(SCRIPT_RNDDESRT, 172));
LVar1 := create_object(41, 0, 0);
Critter_direction := random(0, 5);
Critter_tile := tile_num_in_direction(Dude_tile, Critter_direction, 4);
if (get_critter_stat(dude_obj, STAT_lu) < 3) then begin
Item := create_object(71, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
end
else begin
if (get_critter_stat(dude_obj, STAT_lu) == 8) then begin
Item := create_object(71, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
Item := create_object(29, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
if (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger)) then begin
Item := create_object(29, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
end
Item := create_object(46, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
add_mult_objs_to_inven(Item, LVar1, 6 * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
end
else begin
if (get_critter_stat(dude_obj, STAT_lu) > 8) then begin
Item := create_object(71, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
if (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger)) then begin
LVar0 := 4;
end
while (LVar0) do begin
Item := create_object(29, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
LVar0 := LVar0 - 1;
end
Item := create_object(46, 0, 0);
add_mult_objs_to_inven(Item, LVar1, 122 * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
critter_attempt_placement(Item, Critter_tile, 0);
Item := create_object(8, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
end
else begin
Item := create_object(71, 0, 0);
critter_attempt_placement(Item, Critter_tile, 0);
Item := create_object(46, 0, 0);
add_mult_objs_to_inven(Item, LVar1, 4 * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
critter_attempt_placement(Item, Critter_tile, 0);
end
end
end
end
procedure Hub1
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := random(1, 6) + 2;
if (obj_is_carrying_obj_pid(dude_obj, 126)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 125));
destroy_object(obj_carrying_pid_obj(dude_obj, 126));
end
else begin
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 20 * has_trait(TTRAIT_PERK, dude_obj, PERK_survivalist));
if (is_success(Skill_roll)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 110) + LVar0 + message_str(SCRIPT_RNDDESRT, 111));
end
else begin
if (is_critical(Skill_roll)) then begin
LVar1 := random(2, 4);
end
else begin
LVar1 := random(2, 3);
end
display_msg(message_str(SCRIPT_RNDDESRT, 114) + LVar0 + message_str(SCRIPT_RNDDESRT, 115) + LVar1 + message_str(SCRIPT_RNDDESRT, 116));
critter_injure(dude_obj, 2);
end
critter_dmg(dude_obj, LVar1, 0);
LVar0 := LVar0 * 3600;
game_time_advance(game_ticks(LVar0));
end
end
procedure Hub2
begin
display_msg(message_str(SCRIPT_RNDDESRT, 133));
Tot_Critter_A := random(3, 6);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Critter_script := 749;
while (Tot_Critter_A) do begin
if (random(0, 1)) then begin
if (random(0, 1)) then begin
Critter_type := 16777254;
end
else begin
Critter_type := 16777235;
end
end
else begin
Critter_type := 16777243;
end
Critter_direction := random(3, 5);
call Place_critter();
anim(Critter, 1000, random(0, 2));
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(0, 1)) then begin
if (random(0, 1)) then begin
Item := create_object(9, 0, 0);
end
else begin
Item := create_object(10, 0, 0);
end
end
else begin
Item := create_object(8, 0, 0);
end
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, random(10, 30) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
if (random(0, 3) == 3) then begin
Item := create_object(40, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(0, 3) == 3) then begin
Item := create_object(87, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(0, 3) == 3) then begin
Item := create_object(81, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(0, 3) == 3) then begin
Item := create_object(103, 0, 0);
add_obj_to_inven(Critter, Item);
end
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure Hub3
begin
display_msg(message_str(SCRIPT_RNDDESRT, 134));
Tot_Critter_A := random(2, 3);
Tot_Critter_B := random(1, 2);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Critter_type := 16777227;
Critter_script := 12;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 4);
call Place_critter();
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777382;
while (Tot_Critter_B) do begin
Critter_direction := random(0, 4);
call Place_critter();
Tot_Critter_B := Tot_Critter_B - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure Hub4
begin
display_msg(message_str(SCRIPT_RNDDESRT, 135));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
Tot_Critter_A := random(4, 6);
Critter_script := 573;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 2);
if (random(0, 1)) then begin
Critter_type := 16777243;
end
else begin
Critter_type := 16777253;
end
call Place_critter();
anim(Critter, 1000, random(3, 5));
Item := item_caps_adjust(Critter, random(20, 50) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
if (random(0, 1)) then begin
Item := create_object(9, 0, 0);
end
else begin
Item := create_object(18, 0, 0);
end
add_obj_to_inven(Critter, Item);
Tot_Critter_A := Tot_Critter_A - 1;
end
end
procedure Hub5
begin
variable LVar0 := 0;
display_msg(message_str(SCRIPT_RNDDESRT, 136));
LVar0 := tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(7, 9));
Item := create_object(33554959, LVar0, 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 0), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 1), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 2), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 3), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 4), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 5), 0);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
Tot_Critter_A := random(5, 8);
Critter_script := 755;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 2);
if (random(0, 1)) then begin
Critter_type := 16777243;
end
else begin
Critter_type := 16777253;
end
call Place_critter();
anim(Critter, 1000, random(3, 5));
Item := item_caps_adjust(Critter, random(20, 50) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
if (random(0, 1)) then begin
Item := create_object(9, 0, 0);
end
else begin
Item := create_object(18, 0, 0);
end
add_obj_to_inven(Critter, Item);
Tot_Critter_A := Tot_Critter_A - 1;
end
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 4;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Critter_type := 16777229;
Critter_script := 752;
call Place_critter();
Item := item_caps_adjust(Critter, random(100, 300) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
Item := create_object(71, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 4));
Item := create_object(81, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 4));
Item := create_object(40, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 2));
Item := create_object(47, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 1));
Item := create_object(29, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 3));
Item := create_object(30, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 3));
Item := create_object(35, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 2));
Item := create_object(36, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 2));
end
procedure Hub6
begin
display_msg(message_str(SCRIPT_RNDDESRT, 137));
Tot_Critter_A := random(2, 4);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
Critter_type := 16777244;
Critter_script := 34;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 5);
call Place_critter();
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777386;
Critter_script := -1;
call Place_critter();
end
procedure Necrop1
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := random(1, 6);
if (obj_is_carrying_obj_pid(dude_obj, 126)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 125));
destroy_object(obj_carrying_pid_obj(dude_obj, 126));
end
else begin
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 20 * has_trait(TTRAIT_PERK, dude_obj, PERK_survivalist));
if (is_success(Skill_roll)) then begin
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 109));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 110) + LVar0 + message_str(SCRIPT_RNDDESRT, 111));
end
end
else begin
if (is_critical(Skill_roll)) then begin
LVar1 := random(2, 4);
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 112) + LVar1 + message_str(SCRIPT_RNDDESRT, 113));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 114) + LVar0 + message_str(SCRIPT_RNDDESRT, 115) + LVar1 + message_str(SCRIPT_RNDDESRT, 116));
end
critter_injure(dude_obj, 2);
end
else begin
LVar1 := random(1, 2);
if (LVar0 == 1) then begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 117));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 118) + LVar1 + message_str(SCRIPT_RNDDESRT, 119));
end
critter_injure(dude_obj, 2);
end
else begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 120) + LVar0 + message_str(SCRIPT_RNDDESRT, 121));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 122) + LVar0 + message_str(SCRIPT_RNDDESRT, 123) + LVar1 + message_str(SCRIPT_RNDDESRT, 124));
end
critter_injure(dude_obj, 2);
end
end
end
critter_dmg(dude_obj, LVar1, 0);
LVar0 := LVar0 * 3600;
game_time_advance(game_ticks(LVar0));
end
end
procedure Necrop2
begin
display_msg(message_str(SCRIPT_RNDDESRT, 126));
Tot_Critter_A := random(2, 4);
Tot_Critter_B := random(2, 4);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
group_angle := random(0, 5);
Critter_script := 12;
Dude_tile := Dude_tile + (200 * (random(0, 4) - 2));
while (Tot_Critter_A) do begin
if (random(0, 3) == 3) then begin
Critter_type := 16777382;
end
else begin
Critter_type := 16777227;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Tot_Critter_A := Tot_Critter_A - 1;
end
victim := Critter;
Critter_script := 222;
if (group_angle == 0) then begin
group_angle := 3;
end
else begin
if (group_angle == 1) then begin
group_angle := 4;
end
else begin
if (group_angle == 2) then begin
group_angle := 5;
end
else begin
if (group_angle == 3) then begin
group_angle := 0;
end
else begin
if (group_angle == 4) then begin
group_angle := 1;
end
else begin
if (group_angle == 5) then begin
group_angle := 2;
end
end
end
end
end
end
while (Tot_Critter_B) do begin
if (random(0, 2) == 2) then begin
Critter_type := 16777226;
end
else begin
Critter_type := 16777378;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Tot_Critter_B := Tot_Critter_B - 1;
end
attack_setup(Critter, victim);
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Necrop3
begin
display_msg(message_str(SCRIPT_RNDDESRT, 127));
Tot_Critter_A := random(2, 4);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 4;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 2;
group_angle := random(0, 5);
Critter_type := 16777230;
Critter_script := 953;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Necrop4
begin
variable LVar0 := 0;
variable LVar1 := 0;
variable LVar2 := 0;
display_msg(message_str(SCRIPT_RNDDESRT, 128));
Item := create_object(33554653, tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(5, 8)), 0);
Item := create_object(33554654, tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(5, 8)), 0);
Item := create_object(33554747, tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(5, 8)), 0);
if (random(0, 3) == 3) then begin
LVar1 := tile_num_in_direction(tile_num(dude_obj), random(0, 5), random(0, 5));
LVar2 := random(0, 4);
if (LVar2 == 0) then begin
LVar0 := create_object(29, LVar1, 0);
end
else begin
if (LVar2 == 1) then begin
LVar0 := create_object(30, LVar1, 0);
end
else begin
if (LVar2 == 2) then begin
LVar0 := create_object(34, LVar1, 0);
end
else begin
if (LVar2 == 3) then begin
LVar0 := create_object(31, LVar1, 0);
end
else begin
if (LVar2 == 4) then begin
LVar0 := create_object(111, LVar1, 0);
end
end
end
end
end
end
LVar1 := tile_num_in_direction(tile_num(dude_obj), random(0, 5), random(3, 5));
LVar0 := create_object(33554541, LVar1, 0);
LVar1 := tile_num_in_direction(tile_num(dude_obj), random(0, 5), random(3, 5));
LVar0 := create_object(33554437, LVar1, 0);
LVar1 := tile_num_in_direction(tile_num(dude_obj), random(0, 5), random(3, 5));
LVar0 := create_object(33554524, LVar1, 0);
end
procedure Necrop5
begin
display_msg(message_str(SCRIPT_RNDDESRT, 127));
Tot_Critter_A := random(1, 3);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 4;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 2;
group_angle := random(0, 5);
Critter_type := 16777230;
Critter_script := 953;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Necrop6
begin
variable LVar0 := 0;
variable LVar1 := 0;
display_msg(message_str(SCRIPT_RNDDESRT, 130));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 4;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 2;
if (random(0, 1)) then begin
Critter_type := 16777254;
end
else begin
Critter_type := 16777253;
end
Critter_script := -1;
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, random(0, 5));
if (random(0, 3) == 3) then begin
LVar1 := create_object(40, 0, 0);
add_obj_to_inven(LVar0, LVar1);
end
if (random(0, 3) == 3) then begin
LVar1 := item_caps_adjust(LVar0, random(50, 100) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
end
if (random(0, 3) == 3) then begin
LVar1 := create_object(90, 0, 0);
add_obj_to_inven(LVar0, LVar1);
end
if (random(0, 3) == 3) then begin
LVar1 := create_object(10, 0, 0);
add_obj_to_inven(LVar0, LVar1);
end
if (random(0, 3) == 3) then begin
LVar1 := create_object(8, 0, 0);
add_obj_to_inven(LVar0, LVar1);
end
if (random(0, 3) == 3) then begin
LVar1 := create_object(1, 0, 0);
add_obj_to_inven(LVar0, LVar1);
end
if (random(0, 3) == 3) then begin
LVar1 := create_object(127, 0, 0);
add_obj_to_inven(LVar0, LVar1);
end
if (random(0, 3) == 3) then begin
LVar1 := create_object(51, 0, 0);
add_obj_to_inven(LVar0, LVar1);
end
LVar1 := create_object(106, 0, 0);
add_obj_to_inven(LVar0, LVar1);
LVar1 := item_caps_adjust(LVar0, random(3, 9) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
kill_critter(Critter, 61);
end
procedure Steel1
begin
display_msg(message_str(SCRIPT_RNDDESRT, 226));
Tot_Critter_A := 2;
Tot_Critter_B := 6;
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 8;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 4;
group_angle := random(0, 5);
random_seed_1 := 0;
Critter_script := 759;
if (random(0, 1)) then begin
Critter_type := 16777491;
end
else begin
Critter_type := 16777494;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(28, 0, 0);
add_obj_to_inven(Critter, Item);
victim := Critter;
Critter_script := 758;
while (Tot_Critter_A) do begin
if (random(0, 1)) then begin
Critter_type := 16777490;
end
else begin
Critter_type := 16777493;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(12, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(1, 3) == 1) then begin
Item := create_object(13, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(37, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(1, 3));
end
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777403;
Critter_script := 850;
if (group_angle == 0) then begin
group_angle := 3;
end
else begin
if (group_angle == 1) then begin
group_angle := 4;
end
else begin
if (group_angle == 2) then begin
group_angle := 5;
end
else begin
if (group_angle == 3) then begin
group_angle := 0;
end
else begin
if (group_angle == 4) then begin
group_angle := 1;
end
else begin
if (group_angle == 5) then begin
group_angle := 2;
end
end
end
end
end
end
while (Tot_Critter_B) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
if (random(1, 3) == 1) then begin
Item := create_object(11, 0, 0);
end
else begin
Item := create_object(12, 0, 0);
end
add_obj_to_inven(Critter, Item);
if (random(1, 2) == 1) then begin
Item := create_object(13, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(37, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(1, 3));
end
Tot_Critter_B := Tot_Critter_B - 1;
end
attack_setup(victim, Critter);
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Steel2
begin
display_msg(message_str(SCRIPT_RNDDESRT, 227));
Tot_Critter_A := random(6, 10);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 7;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 3;
Critter_type := 16777227;
for (Critter_script := 12; Tot_Critter_A; Tot_Critter_A := Tot_Critter_A - 1) begin
Critter_direction := random(3, 5);
call Place_critter();
if (random(1, 3) == 1) then begin
anim(Critter, 1000, random(0, 5));
continue;
end
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
end
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Steel3
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := random(1, 6);
if (obj_is_carrying_obj_pid(dude_obj, 126)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 125));
destroy_object(obj_carrying_pid_obj(dude_obj, 126));
end
else begin
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 20 * has_trait(TTRAIT_PERK, dude_obj, PERK_survivalist));
if (is_success(Skill_roll)) then begin
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 109));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 110) + LVar0 + message_str(SCRIPT_RNDDESRT, 111));
end
end
else begin
if (is_critical(Skill_roll)) then begin
LVar1 := random(2, 4);
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 112) + LVar1 + message_str(SCRIPT_RNDDESRT, 113));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 114) + LVar0 + message_str(SCRIPT_RNDDESRT, 115) + LVar1 + message_str(SCRIPT_RNDDESRT, 116));
end
critter_injure(dude_obj, 2);
end
else begin
LVar1 := random(1, 2);
if (LVar0 == 1) then begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 117));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 118) + LVar1 + message_str(SCRIPT_RNDDESRT, 119));
end
end
else begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 120) + LVar0 + message_str(SCRIPT_RNDDESRT, 121));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 122) + LVar0 + message_str(SCRIPT_RNDDESRT, 123) + LVar1 + message_str(SCRIPT_RNDDESRT, 124));
end
critter_injure(dude_obj, 2);
end
end
end
critter_dmg(dude_obj, LVar1, 0);
LVar0 := LVar0 * 3600;
game_time_advance(game_ticks(LVar0));
end
end
procedure Steel4
begin
display_msg(message_str(SCRIPT_RNDDESRT, 250));
Tot_Critter_A := random(5, 7);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 4;
group_angle := dude_rot;
random_seed_1 := 0;
if (random(0, 1)) then begin
Critter_type := 16777491;
end
else begin
Critter_type := 16777494;
end
Critter_script := 759;
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(28, 0, 0);
add_obj_to_inven(Critter, Item);
Critter_script := 758;
while (Tot_Critter_A) do begin
if (random(0, 1)) then begin
Critter_type := 16777490;
end
else begin
Critter_type := 16777493;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
if (random(1, 3) == 1) then begin
Item := create_object(32, 0, 0);
add_obj_to_inven(Critter, Item);
end
Item := create_object(12, 0, 0);
add_obj_to_inven(Critter, Item);
Tot_Critter_A := Tot_Critter_A - 1;
end
end
procedure Steel5
begin
variable LVar0 := 0;
display_msg(message_str(SCRIPT_RNDDESRT, 251));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
LVar0 := tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(7, 12));
Item := create_object(33554959, LVar0, 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 0), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 1), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 2), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 3), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 4), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 5), 0);
LVar0 := tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(7, 12));
Item := create_object(33554960, LVar0, 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 0), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 1), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 2), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 3), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 4), 0);
Item := create_object(33554499, tile_num_in_direction(LVar0, 1, 5), 0);
if ((game_time_hour >= 1900) or (game_time_hour < 600)) then begin
Critter := create_object(33554433, 0, 0);
Critter_tile := tile_num_in_direction(Dude_tile, random(0, 5), 5);
critter_attempt_placement(Critter, Critter_tile, 0);
Critter := create_object(33554433, 0, 0);
Critter_tile := tile_num_in_direction(Dude_tile, random(0, 5), 5);
critter_attempt_placement(Critter, Critter_tile, 0);
end
Tot_Critter_A := random(1, 2);
while (Tot_Critter_A) do begin
Critter_type := 16777244;
Critter_script := 34;
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, random(0, 5));
Tot_Critter_A := Tot_Critter_A - 1;
end
Tot_Critter_A := random(2, 4);
Critter_type := 16777245;
Critter_script := 752;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, random(0, 5));
if (random(0, 1)) then begin
Item := create_object(71, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(0, 1)) then begin
Item := create_object(29, 0, 0);
add_mult_objs_to_inven(Critter, Item, 2 * (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1));
end
if (random(0, 1)) then begin
Item := create_object(30, 0, 0);
add_mult_objs_to_inven(Critter, Item, 1 * (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1));
end
if (random(0, 1)) then begin
Item := create_object(34, 0, 0);
add_mult_objs_to_inven(Critter, Item, 2 * (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1));
end
if (random(0, 1)) then begin
Item := create_object(40, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 4));
end
if (random(0, 1)) then begin
Item := create_object(47, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 1));
end
if (random(0, 1)) then begin
Item := create_object(81, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(0, 3));
end
Item := item_caps_adjust(Critter, random(12, 32) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
Tot_Critter_A := Tot_Critter_A - 1;
end
Tot_Critter_B := random(6, 8);
Critter_script := 755;
while (Tot_Critter_B) do begin
Critter_direction := random(0, 5);
if (random(0, 1)) then begin
Critter_type := 16777243;
end
else begin
Critter_type := 16777238;
end
call Place_critter();
anim(Critter, 1000, random(0, 5));
Item := item_caps_adjust(Critter, random(1, 15) * (has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder) + 1));
if (random(0, 1)) then begin
Item := create_object(95, 0, 0);
add_obj_to_inven(Critter, Item);
if (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger)) then begin
Item := create_object(95, 0, 0);
add_obj_to_inven(Critter, Item);
end
Item := create_object(94, 0, 0);
end
else begin
Item := create_object(34, 0, 0);
add_obj_to_inven(Critter, Item);
if (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger)) then begin
Item := create_object(34, 0, 0);
add_obj_to_inven(Critter, Item);
end
Item := create_object(10, 0, 0);
end
add_obj_to_inven(Critter, Item);
if (random(0, 1)) then begin
if (random(0, 2) == 0) then begin
Item := create_object(125, 0, 0);
end
else begin
Item := create_object(124, 0, 0);
end
add_obj_to_inven(Critter, Item);
end
Tot_Critter_B := Tot_Critter_B - 1;
end
end
procedure Steel6
begin
display_msg(message_str(SCRIPT_RNDDESRT, 252));
Tot_Critter_A := random(3, 4);
Tot_Critter_B := random(12, 15);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 7;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 4;
group_angle := random(0, 5);
random_seed_1 := 0;
Critter_script := 759;
if (random(0, 1)) then begin
Critter_type := 16777491;
end
else begin
Critter_type := 16777494;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(28, 0, 0);
add_obj_to_inven(Critter, Item);
for (Critter_script := 758; Tot_Critter_A; Tot_Critter_A := Tot_Critter_A - 1) begin
if (random(0, 1)) then begin
Critter_type := 16777490;
end
else begin
Critter_type := 16777493;
end
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
if (random(0, 3) == 1) then begin
Item := create_object(13, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(37, 0, 0);
add_mult_objs_to_inven(Critter, Item, random(1, 3));
continue;
end
Item := create_object(12, 0, 0);
add_obj_to_inven(Critter, Item);
end
victim := Critter;
Critter_type := 16777254;
Critter_script := 749;
if (group_angle == 0) then begin
group_angle := 3;
end
else begin
if (group_angle == 1) then begin
group_angle := 4;
end
else begin
if (group_angle == 2) then begin
group_angle := 5;
end
else begin
if (group_angle == 3) then begin
group_angle := 0;
end
else begin
if (group_angle == 4) then begin
group_angle := 1;
end
else begin
if (group_angle == 5) then begin
group_angle := 2;
end
end
end
end
end
end
while (Tot_Critter_B) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Item := create_object(7, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(0, 2)) then begin
Item := create_object(30, 0, 0);
add_obj_to_inven(Critter, Item);
if (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger)) then begin
Item := create_object(30, 0, 0);
add_obj_to_inven(Critter, Item);
end
Item := create_object(8, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(0, 1)) then begin
Item := create_object(40, 0, 0);
add_obj_to_inven(Critter, Item);
end
Tot_Critter_B := Tot_Critter_B - 1;
end
attack_setup(Critter, victim);
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Vats1
begin
display_msg(message_str(SCRIPT_RNDDESRT, 253));
radiation_inc(dude_obj, random(15, 30));
Tot_Critter_A := random(3, 4);
Tot_Critter_B := 1;
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 3;
Critter_type := 16777403;
Critter_script := 850;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
if (random(0, 1) == 1) then begin
if (random(0, 3) == 0) then begin
Item := create_object(11, 0, 0);
end
else begin
Item := create_object(12, 0, 0);
end
end
else begin
Item := create_object(234, 0, 0);
end
add_obj_to_inven(Critter, Item);
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777241;
Critter_script := 854;
while (Tot_Critter_B) do begin
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(12, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(35, 0, 0);
add_obj_to_inven(Critter, Item);
Tot_Critter_B := Tot_Critter_B - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Vats2
begin
display_msg(message_str(SCRIPT_RNDDESRT, 254));
if (random(0, 1)) then begin
Critter_type := 16777259;
Critter_script := 953;
end
else begin
Critter_type := 16777261;
Critter_script := 953;
end
Tot_Critter_A := random(3, 5);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 2;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Vats3
begin
display_msg(message_str(SCRIPT_RNDDESRT, 306));
Tot_Critter_A := random(1, 2);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 4;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 2;
Critter_type := 16777261;
Critter_script := 953;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777259;
Critter_script := 953;
Tot_Critter_A := 1;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
Tot_Critter_A := random(2, 3);
Critter_type := 16777403;
Critter_script := 850;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777241;
Critter_script := 854;
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(118, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(38, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 2);
if (not(obj_is_carrying_obj_pid(dude_obj, 100))) then begin
Item := create_object(100, 0, 0);
add_obj_to_inven(Critter, Item);
end
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Vats4
begin
display_msg(message_str(SCRIPT_RNDDESRT, 256));
Tot_Critter_A := random(3, 4);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 7;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Critter_type := 16777403;
Critter_script := 850;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, random(3, 4));
if (random(0, 1) == 1) then begin
if (random(0, 1) == 1) then begin
Item := create_object(11, 0, 0);
end
else begin
Item := create_object(12, 0, 0);
end
end
else begin
Item := create_object(234, 0, 0);
end
add_obj_to_inven(Critter, Item);
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777241;
Critter_script := 854;
Tot_Critter_B := 1;
while (Tot_Critter_B) do begin
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, random(3, 4));
Item := create_object(12, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(35, 0, 0);
add_obj_to_inven(Critter, Item);
Tot_Critter_B := Tot_Critter_B - 1;
end
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 3;
Critter_type := 16777261;
Critter_script := 953;
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, random(3, 4));
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Vats5
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := random(1, 6);
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 20 * has_trait(TTRAIT_PERK, dude_obj, PERK_survivalist));
if (is_success(Skill_roll)) then begin
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 109));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 110) + LVar0 + message_str(SCRIPT_RNDDESRT, 111));
end
end
else begin
if (is_critical(Skill_roll)) then begin
LVar1 := random(2, 4);
if (LVar0 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 112) + LVar1 + message_str(SCRIPT_RNDDESRT, 113));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 114) + LVar0 + message_str(SCRIPT_RNDDESRT, 115) + LVar1 + message_str(SCRIPT_RNDDESRT, 116));
end
critter_injure(dude_obj, 2);
end
else begin
LVar1 := random(1, 2);
if (LVar0 == 1) then begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 117));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 118) + LVar1 + message_str(SCRIPT_RNDDESRT, 119));
end
critter_injure(dude_obj, 2);
end
else begin
if (LVar1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 120) + LVar0 + message_str(SCRIPT_RNDDESRT, 121));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 122) + LVar0 + message_str(SCRIPT_RNDDESRT, 123) + LVar1 + message_str(SCRIPT_RNDDESRT, 124));
end
critter_injure(dude_obj, 2);
end
end
end
LVar0 := LVar0 * 3600;
game_time_advance(game_ticks(LVar0));
end
procedure Vats6
begin
display_msg(message_str(SCRIPT_RNDDESRT, 279));
Item := create_object(33554804, tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(8, 10)), 0);
Item := create_object(33554653, tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(5, 9)), 0);
Item := create_object(33554654, tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(5, 9)), 0);
Item := create_object(33554747, tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(5, 9)), 0);
Item := create_object(33555207, tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(5, 9)), 0);
if ((game_time_hour >= 1900) or (game_time_hour < 600)) then begin
Item := create_object(33554433, tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(8, 10)), 0);
if (random(0, 1)) then begin
Item := create_object(33554433, tile_num_in_direction(Dude_tile + random(0, 8) - 4, random(0, 5), random(8, 10)), 0);
end
end
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 3;
group_angle := random(0, 5);
Critter_type := 16777403;
Critter_script := 850;
Tot_Critter_A := random(2, 3);
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777241;
Critter_script := 854;
Critter_direction := random(0, 2);
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(12, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(35, 0, 0);
add_obj_to_inven(Critter, Item);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 3;
Critter_type := 16777261;
Critter_script := 953;
Tot_Critter_A := 2;
if (group_angle == 0) then begin
group_angle := 3;
end
else begin
if (group_angle == 1) then begin
group_angle := 4;
end
else begin
if (group_angle == 2) then begin
group_angle := 5;
end
else begin
if (group_angle == 3) then begin
group_angle := 0;
end
else begin
if (group_angle == 4) then begin
group_angle := 1;
end
else begin
if (group_angle == 5) then begin
group_angle := 2;
end
end
end
end
end
end
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Glow1
begin
variable LVar0 := 3;
display_msg(message_str(SCRIPT_RNDDESRT, 280));
Tot_Critter_A := random(2, 3);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 4;
Critter_type := 16777403;
Critter_script := 850;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
if (random(0, 1)) then begin
Critter_type := 16777241;
Critter_script := 854;
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(118, 0, 0);
add_obj_to_inven(Critter, Item);
if (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger)) then begin
LVar0 := 5;
end
while (LVar0) do begin
Item := create_object(38, 0, 0);
add_obj_to_inven(Critter, Item);
LVar0 := LVar0 - 1;
end
end
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Glow2
begin
variable LVar0 := 0;
display_msg(message_str(SCRIPT_RNDDESRT, 281));
LVar0 := game_time_hour;
Tot_Critter_A := random(3, 5);
if ((LVar0 > 600) and (LVar0 < 1900)) then begin
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 2;
end
else begin
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 2;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 2;
end
Critter_type := 16777261;
Critter_script := 953;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
if (random(0, 1)) then begin
Critter_direction := random(0, 4);
Critter_type := 16777259;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
end
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Glow3
begin
display_msg(message_str(SCRIPT_RNDDESRT, 282));
Tot_Critter_A := random(4, 8);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 8;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Critter_type := 16777227;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 4);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(92, 0, 0);
add_obj_to_inven(Critter, Item);
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Glow4
begin
display_msg(message_str(SCRIPT_RNDDESRT, 283));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 4;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 2;
Critter_type := 16777261;
Critter_script := 953;
Tot_Critter_A := 1;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 2);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
radiation_inc(dude_obj, random(15, 30));
end
procedure Glow5
begin
display_msg(message_str(SCRIPT_RNDDESRT, 284));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 3;
group_angle := random(0, 5);
Tot_Critter_A := 1 + random(0, 1);
Critter_type := 16777261;
Critter_script := 953;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Tot_Critter_A := Tot_Critter_A - 1;
end
if (random(0, 1)) then begin
Critter_type := 16777259;
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
end
end
procedure Glow6
begin
display_msg(message_str(SCRIPT_RNDDESRT, 285));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 2;
Critter_script := 953;
Critter_type := 16777259;
Critter_direction := random(2, 5);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
if (random(0, 1)) then begin
Critter_type := 16777261;
Critter_direction := random(1, 4);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
end
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Death1
begin
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 8;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 8;
if (global_var(GVAR_KILL_DEATHCLAW) != 2) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 286));
Critter_direction := random(0, 5);
Critter_type := 16777267;
Critter_script := 642;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 287));
Critter_type := 16777227;
Critter_script := 12;
Tot_Critter_A := random(3, 5);
while (Tot_Critter_A) do begin
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure Death2
begin
display_msg(message_str(SCRIPT_RNDDESRT, 288));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 3;
Critter_direction := random(0, 5);
Critter_type := 16777259;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure Death3
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := random(1, 6) + 2;
if (obj_is_carrying_obj_pid(dude_obj, 126)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 125));
destroy_object(obj_carrying_pid_obj(dude_obj, 126));
end
else begin
Skill_roll := roll_vs_skill(dude_obj, SKILL_OUTDOORSMAN, 20 * has_trait(TTRAIT_PERK, dude_obj, PERK_survivalist));
if (is_success(Skill_roll)) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 110) + LVar0 + message_str(SCRIPT_RNDDESRT, 111));
end
else begin
if (is_critical(Skill_roll)) then begin
LVar1 := random(2, 4);
end
else begin
LVar1 := random(2, 3);
end
display_msg(message_str(SCRIPT_RNDDESRT, 114) + LVar0 + message_str(SCRIPT_RNDDESRT, 115) + LVar1 + message_str(SCRIPT_RNDDESRT, 116));
critter_injure(dude_obj, 2);
end
critter_dmg(dude_obj, LVar1, 0);
LVar0 := LVar0 * 3600;
game_time_advance(game_ticks(LVar0));
end
end
procedure Death4
begin
display_msg(message_str(SCRIPT_RNDDESRT, 299));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Tot_Critter_A := random(2, 4);
group_angle := random(0, 5);
Critter_type := 16777227;
Critter_script := 12;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 4) - 2);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure Death5
begin
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 10;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 3) + 10;
if (1 == 1) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 300));
Critter_direction := dude_rot + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
Critter_type := 16777254;
Critter_script := 703;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(18, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, (random(20, 60) * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1);
Item := create_object(40, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(31, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(111, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(9, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(1, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(90, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(125, 0, 0);
add_obj_to_inven(Critter, Item);
set_global_var(GVAR_TRENT_STATUS, 1);
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 301));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 7;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 4;
Critter_direction := random(0, 5);
if (random(0, 3) == 3) then begin
Critter_type := 16777226;
end
else begin
Critter_type := 16777378;
end
Critter_script := 222;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure Death6
begin
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 5;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
if (global_var(GVAR_KILL_DEATHCLAW) != 2) then begin
display_msg(message_str(SCRIPT_RNDDESRT, 302));
Critter_direction := random(0, 5);
Critter_type := 16777267;
Critter_script := 642;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
end
else begin
display_msg(message_str(SCRIPT_RNDDESRT, 303));
Critter_type := 16777227;
Critter_script := 12;
Tot_Critter_A := random(3, 5);
group_angle := random(0, 5);
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 4) - 2);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure Bone1
begin
display_msg(message_str(SCRIPT_RNDDESRT, 307));
Tot_Critter_A := random(2, 3);
group_angle := random(0, 5);
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 4;
Critter_type := 16777403;
Critter_script := 850;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 4) - 2);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
if (random(1, 4) == 1) then begin
Item := create_object(11, 0, 0);
end
else begin
Item := create_object(12, 0, 0);
end
add_obj_to_inven(Critter, Item);
if (random(1, 5) == 1) then begin
Item := create_object(13, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(0, 2) == 0) then begin
Item := item_caps_adjust(Critter, random(5, 20) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
end
Tot_Critter_A := Tot_Critter_A - 1;
end
if (random(0, 1)) then begin
Critter_type := 16777241;
Critter_script := 854;
Critter_direction := group_angle + (random(0, 4) - 2);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(12, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(0, 2) == 0) then begin
Item := item_caps_adjust(Critter, random(5, 20) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
end
end
set_global_var(GVAR_WATER_THIEF_1, 3);
call stranger();
end
procedure Bone2
begin
variable LVar0 := 0;
display_msg(message_str(SCRIPT_RNDDESRT, 308));
group_angle := random(0, 5);
if ((game_time_hour >= 1900) or (game_time_hour < 600) and random(0, 1)) then begin
Critter := create_object(33555044, 0, 0);
Critter_tile := tile_num_in_direction(Dude_tile, group_angle, 4);
critter_attempt_placement(Critter, Critter_tile, 0);
Critter := create_object(33555044, 0, 0);
if (group_angle == 0) then begin
Item := 3;
end
else begin
if (group_angle == 1) then begin
Item := 4;
end
else begin
if (group_angle == 2) then begin
Item := 5;
end
else begin
if (group_angle == 3) then begin
Item := 0;
end
else begin
if (group_angle == 4) then begin
Item := 1;
end
else begin
if (group_angle == 5) then begin
Item := 2;
end
end
end
end
end
end
Critter_tile := tile_num_in_direction(Dude_tile, Item, 4);
critter_attempt_placement(Critter, Critter_tile, 0);
end
Dude_tile := Dude_tile + (random(0, 4) - 2 + ((random(0, 2) - 1) * 200));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 4;
Tot_Critter_A := random(3, 5);
Tot_Critter_B := random(3, 5);
Critter_type := 16777419;
Critter_script := 749;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
LVar0 := random(0, 2);
if (LVar0 == 0) then begin
Item := create_object(18, 0, 0);
end
else begin
if (LVar0 == 1) then begin
Item := create_object(21, 0, 0);
end
else begin
Item := create_object(8, 0, 0);
end
end
add_obj_to_inven(Critter, Item);
if (random(0, 2) == 0) then begin
Item := item_caps_adjust(Critter, random(5, 25) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
end
Tot_Critter_A := Tot_Critter_A - 1;
end
victim := Critter;
Critter_type := 16777472;
Critter_script := 751;
if (group_angle == 0) then begin
group_angle := 3;
end
else begin
if (group_angle == 1) then begin
group_angle := 4;
end
else begin
if (group_angle == 2) then begin
group_angle := 5;
end
else begin
if (group_angle == 3) then begin
group_angle := 0;
end
else begin
if (group_angle == 4) then begin
group_angle := 1;
end
else begin
if (group_angle == 5) then begin
group_angle := 2;
end
end
end
end
end
end
while (Tot_Critter_B) do begin
Critter_direction := group_angle + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
if (group_angle == 0) then begin
Critter_direction := 3;
end
else begin
if (group_angle == 1) then begin
Critter_direction := 4;
end
else begin
if (group_angle == 2) then begin
Critter_direction := 5;
end
else begin
if (group_angle == 3) then begin
Critter_direction := 0;
end
else begin
if (group_angle == 4) then begin
Critter_direction := 1;
end
else begin
if (group_angle == 5) then begin
Critter_direction := 2;
end
end
end
end
end
end
if (random(0, 2) == 0) then begin
Critter_direction := Critter_direction + (random(0, 2) - 1);
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
end
anim(Critter, 1000, Critter_direction);
if (random(0, 1)) then begin
Item := create_object(4, 0, 0);
end
else begin
Item := create_object(7, 0, 0);
end
add_obj_to_inven(Critter, Item);
if (random(0, 2) == 0) then begin
Item := item_caps_adjust(Critter, random(4, 25) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
end
Tot_Critter_B := Tot_Critter_B - 1;
end
attack_setup(Critter, victim);
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure Bone3
begin
display_msg(message_str(SCRIPT_RNDDESRT, 309));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Tot_Critter_A := random(3, 7);
group_angle := random(0, 5);
Critter_type := 16777419;
Critter_script := 749;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + random(0, 2 * 2) - 2;
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
if (random(0, 1)) then begin
Item := create_object(8, 0, 0);
end
else begin
Item := create_object(10, 0, 0);
end
add_obj_to_inven(Critter, Item);
if (random(0, 2) == 0) then begin
Item := item_caps_adjust(Critter, random(4, 25) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
end
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777254;
Critter_script := 749;
Critter_direction := group_angle + random(0, 2 * 2) - 2;
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(1, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(47, 0, 0);
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, random(25, 100) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
if (random(0, 1)) then begin
Item := create_object(38, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
end
if (random(0, 1)) then begin
Item := create_object(6, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(0, 1)) then begin
Item := create_object(31, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
end
if (random(0, 1)) then begin
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Bone4
begin
display_msg(message_str(SCRIPT_RNDDESRT, 310));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Tot_Critter_A := random(2, 5);
group_angle := random(0, 5);
Critter_type := 16777419;
Critter_script := 749;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + random(0, 2 * 2) - 2;
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
if (random(0, 1)) then begin
Item := create_object(8, 0, 0);
end
else begin
Item := create_object(10, 0, 0);
end
add_obj_to_inven(Critter, Item);
if (random(0, 2) == 0) then begin
Item := item_caps_adjust(Critter, random(4, 25) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
end
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777254;
Critter_script := 749;
Critter_direction := group_angle + random(0, 2 * 2) - 2;
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(47, 0, 0);
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, random(25, 100) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
if (random(0, 1)) then begin
Item := create_object(38, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
end
if (random(0, 1)) then begin
Item := create_object(6, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(0, 1)) then begin
Item := create_object(31, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
end
if (random(0, 1)) then begin
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Bone5
begin
display_msg(message_str(SCRIPT_RNDDESRT, 311));
Outer_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 6;
Inner_ring := (get_critter_stat(dude_obj, STAT_pe) / 2) + 2;
Tot_Critter_A := random(1, 3);
group_angle := random(0, 5);
Critter_type := 16777419;
Critter_script := 749;
while (Tot_Critter_A) do begin
Critter_direction := group_angle + random(0, 2 * 2) - 2;
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
if (random(0, 1)) then begin
Item := create_object(8, 0, 0);
end
else begin
Item := create_object(10, 0, 0);
end
add_obj_to_inven(Critter, Item);
if (random(0, 2) == 0) then begin
Item := item_caps_adjust(Critter, random(4, 25) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
end
Tot_Critter_A := Tot_Critter_A - 1;
end
Critter_type := 16777254;
Critter_script := 749;
Critter_direction := group_angle + random(0, 2 * 2) - 2;
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(1, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(47, 0, 0);
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, random(25, 100) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
if (random(0, 1)) then begin
Item := create_object(38, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
end
if (random(0, 1)) then begin
Item := create_object(6, 0, 0);
add_obj_to_inven(Critter, Item);
end
if (random(0, 1)) then begin
Item := create_object(31, 0, 0);
add_mult_objs_to_inven(Critter, Item, has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1);
end
if (random(0, 1)) then begin
Item := create_object(4, 0, 0);
add_obj_to_inven(Critter, Item);
end
set_global_var(GVAR_WATER_THIEF_1, 2);
call stranger();
end
procedure Bone6
begin
display_msg(message_str(SCRIPT_RNDDESRT, 313));
Tot_Critter_A := random(4, 6);
if ((game_time_hour >= 700) and (game_time_hour < 1800)) then begin
Outer_ring := 6;
Inner_ring := 3;
end
else begin
Outer_ring := 4;
Inner_ring := 3;
end
Critter_type := 16777284;
Critter_script := 735;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 5);
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Tot_Critter_A := Tot_Critter_A - 1;
end
set_global_var(GVAR_WATER_THIEF_1, 1);
call stranger();
end
procedure Scenes
begin
variable LVar0 := 0;
variable LVar1 := 0;
variable LVar2 := 0;
variable LVar3 := 0;
variable LVar4 := 0;
Tot_Critter_A := random(3, 14);
LVar4 := -1;
while (Tot_Critter_A) do begin
Critter_direction := random(0, 5);
Range := random(4, 28);
Place_Holder := Range;
LVar0 := tile_num_in_direction(Dude_tile, Critter_direction, Place_Holder);
Critter_direction := random(0, 5);
LVar0 := tile_num_in_direction(Dude_tile, Critter_direction, Place_Holder);
LVar0 := LVar0 + (random(0, 2) - 1);
Critter_direction := random(0, 5);
LVar0 := tile_num_in_direction(Dude_tile, Critter_direction, Place_Holder);
LVar0 := LVar0 + (random(0, 2) - 1);
Critter_direction := random(0, 5);
LVar0 := tile_num_in_direction(Dude_tile, Critter_direction, Place_Holder);
LVar2 := random(0, 9);
while (LVar4 == LVar2) do begin
LVar2 := random(0, 9);
end
debug_msg(message_str(SCRIPT_RNDDESRT, 304) + LVar2 + "");
if (LVar2 == 0) then begin
LVar3 := random(1, 6);
if (LVar3 == 1) then begin
Item := create_object(33554517, 0, 0);
end
else begin
if (LVar3 == 2) then begin
if (random(1, 4) == 1) then begin
Item := create_object(33554749, 0, 0);
end
else begin
Item := create_object(33554496, 0, 0);
end
end
else begin
if (LVar3 == 3) then begin
Item := create_object(33554555, 0, 0);
end
else begin
if (LVar3 == 4) then begin
Item := create_object(33554496, 0, 0);
end
else begin
if (LVar3 == 5) then begin
Item := create_object(33554497, 0, 0);
end
else begin
if (random(1, 3) == 1) then begin
Item := create_object(33554498, 0, 0);
end
else begin
Item := create_object(33554744, 0, 0);
end
end
end
end
end
end
end
else begin
if (LVar2 == 1) then begin
LVar3 := random(1, 3);
if (LVar3 == 1) then begin
Item := create_object(33554712, 0, 0);
end
else begin
if (LVar3 == 2) then begin
Item := create_object(33554711, 0, 0);
end
else begin
Item := create_object(33554710, 0, 0);
end
end
end
else begin
if (LVar2 == 2) then begin
LVar3 := random(1, 5);
if (LVar3 == 1) then begin
Item := create_object(33554514, 0, 0);
end
else begin
if (LVar3 == 2) then begin
Item := create_object(33554515, 0, 0);
end
else begin
if (LVar3 == 3) then begin
Item := create_object(33554516, 0, 0);
end
else begin
if (LVar3 == 4) then begin
Item := create_object(33554517, 0, 0);
end
else begin
Item := create_object(33554518, 0, 0);
end
end
end
end
end
else begin
if (LVar2 == 3) then begin
Item := create_object(33554533, 0, 0);
end
else begin
if (LVar2 == 4) then begin
LVar3 := random(1, 4);
if (LVar3 == 1) then begin
Item := create_object(33554524, 0, 0);
end
else begin
if (LVar3 == 2) then begin
Item := create_object(33554525, 0, 0);
end
else begin
if (LVar3 == 3) then begin
Item := create_object(33554524, 0, 0);
end
else begin
Item := create_object(33554525, 0, 0);
end
end
end
end
else begin
if (LVar2 == 5) then begin
LVar3 := random(1, 4);
if (LVar3 == 1) then begin
Item := create_object(33554534, 0, 0);
end
else begin
if (LVar3 == 2) then begin
Item := create_object(33554535, 0, 0);
end
else begin
if (LVar3 == 3) then begin
Item := create_object(33554536, 0, 0);
end
else begin
Item := create_object(33554534, 0, 0);
end
end
end
end
else begin
if (LVar2 == 6) then begin
LVar3 := random(1, 3);
if (LVar3 == 1) then begin
Item := create_object(33554541, 0, 0);
end
else begin
if (LVar3 == 2) then begin
Item := create_object(33554542, 0, 0);
end
else begin
Item := create_object(33554540, 0, 0);
end
end
end
else begin
if (LVar2 == 7) then begin
LVar3 := random(1, 4);
if (LVar3 == 1) then begin
Item := create_object(33554555, 0, 0);
end
else begin
if (LVar3 == 2) then begin
Item := create_object(33554553, 0, 0);
end
else begin
if (LVar3 == 3) then begin
Item := create_object(33554556, 0, 0);
end
else begin
Item := create_object(33554554, 0, 0);
end
end
end
end
else begin
if (LVar2 == 8) then begin
LVar3 := random(1, 3);
if (LVar3 == 1) then begin
Item := create_object(33554712, 0, 0);
end
else begin
if (LVar3 == 2) then begin
Item := create_object(33554711, 0, 0);
end
else begin
Item := create_object(33554710, 0, 0);
end
end
end
else begin
LVar3 := random(1, 6);
if (LVar3 == 1) then begin
Item := create_object(33554517, 0, 0);
end
else begin
if (LVar3 == 2) then begin
if (random(1, 3) == 1) then begin
Item := create_object(33554749, 0, 0);
end
else begin
Item := create_object(33554496, 0, 0);
end
end
else begin
if (LVar3 == 3) then begin
Item := create_object(33554555, 0, 0);
end
else begin
if (LVar3 == 4) then begin
Item := create_object(33554496, 0, 0);
end
else begin
if (LVar3 == 5) then begin
Item := create_object(33554497, 0, 0);
end
else begin
if (random(1, 3) == 1) then begin
Item := create_object(33554498, 0, 0);
end
else begin
Item := create_object(random(0, 2) + 33554710, 0, 0);
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
LVar4 := LVar2;
critter_attempt_placement(Item, LVar0, 0);
Tot_Critter_A := Tot_Critter_A - 1;
end
end
procedure Place_critter
begin
variable LVar0 := 0;
variable LVar1 := 0;
Critter := create_object_sid(Critter_type, 0, 0, Critter_script);
Range := random(Inner_ring, Outer_ring);
LVar0 := random(0, 5);
Critter_tile := tile_num_in_direction(Dude_tile, Critter_direction, Range);
LVar1 := tile_num_in_direction(Critter_tile, LVar0, Range / 2);
if ((tile_distance(Dude_tile, LVar1) <= Outer_ring) and (tile_distance(Dude_tile, LVar1) >= Inner_ring)) then begin
Critter_tile := tile_num_in_direction(Critter_tile, LVar0, Range / 2);
end
critter_attempt_placement(Critter, Critter_tile, 0);
end
procedure hunters
begin
Inner_ring := 8;
Outer_ring := 5;
group_angle := random(0, 5);
Critter_direction := group_angle + random(0, 3 * 2) - 3;
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
Critter_type := 16777349;
Critter_script := 241;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(23, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(36, 0, 0);
add_mult_objs_to_inven(Critter, Item, 4 * (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1));
Item := create_object(17, 0, 0);
add_obj_to_inven(Critter, Item);
Item := item_caps_adjust(Critter, random(5, 30) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
Item := create_object(144, 0, 0);
add_mult_objs_to_inven(Critter, Item, 2);
Critter_direction := group_angle + random(0, 3 * 2) - 3;
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
Critter_type := 16777467;
Critter_script := 383;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(7, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(2, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(0, 2) == 0) then begin
Item := item_caps_adjust(Critter, random(5, 30) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
end
Critter_direction := group_angle + random(0, 3 * 2) - 3;
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
Critter_type := 16777472;
Critter_script := 383;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(143, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(34, 0, 0);
add_mult_objs_to_inven(Critter, Item, 3 * (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1));
Item := create_object(2, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(14, 0, 0);
add_mult_objs_to_inven(Critter, Item, 2 * (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1));
if (random(0, 2) == 0) then begin
Item := item_caps_adjust(Critter, random(5, 40) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
end
Critter_direction := group_angle + random(0, 3 * 2) - 3;
while (Critter_direction < 0) do begin
Critter_direction := Critter_direction + 6;
end
if (Critter_direction > 5) then begin
Critter_direction := Critter_direction % 6;
end
Critter_type := 16777462;
Critter_script := 383;
call Place_critter();
anim(Critter, 1000, rotation_to_tile(tile_num(Critter), tile_num(dude_obj)));
Item := create_object(18, 0, 0);
add_obj_to_inven(Critter, Item);
Item := create_object(31, 0, 0);
add_mult_objs_to_inven(Critter, Item, 2 * (has_trait(TTRAIT_PERK, dude_obj, PERK_scrounger) + 1));
Item := create_object(2, 0, 0);
add_obj_to_inven(Critter, Item);
if (random(0, 2) == 0) then begin
Item := item_caps_adjust(Critter, random(5, 30) * ((2 * has_trait(TTRAIT_PERK, dude_obj, PERK_fortune_finder)) + 1));
end
call stranger();
end
procedure add_party
begin
variable LVar0 := 0;
variable LVar1 := 0;
party_elevation := elevation(dude_obj);
if (global_var(GVAR_TANDI_STATUS) == 5) then begin
if (Tandi_ptr == 0) then begin
end
critter_add_trait(Tandi_ptr, TTRAIT_OBJECT, OBJECT_TEAM_NUM, 0);
end
end
procedure update_party
begin
variable LVar0 := 0;
variable LVar1 := 0;
if (elevation(dude_obj) != party_elevation) then begin
party_elevation := elevation(dude_obj);
if (global_var(GVAR_IAN_STATUS) == 2) then begin
if (Ian_ptr == 0) then begin
end
else begin
move_to(Ian_ptr, tile_num_in_direction(tile_num(dude_obj), 1, 2), elevation(dude_obj));
end
end
if (global_var(GVAR_DOG_EMPATHY)) then begin
if (Dog_ptr == 0) then begin
end
else begin
move_to(Dog_ptr, tile_num_in_direction(tile_num(dude_obj), 2, 1), elevation(dude_obj));
end
end
if (global_var(GVAR_HERNANDEZ_STATUS) == 2) then begin
if (Tycho_ptr == 0) then begin
end
else begin
move_to(Tycho_ptr, tile_num_in_direction(tile_num(dude_obj), 3, 2), elevation(dude_obj));
end
end
if (global_var(GVAR_KATJA_STATUS) == 2) then begin
if (Katja_ptr == 0) then begin
end
else begin
move_to(Katja_ptr, tile_num_in_direction(tile_num(dude_obj), 4, 2), elevation(dude_obj));
end
end
if (global_var(GVAR_TANDI_STATUS) == 5) then begin
if (Tandi_ptr == 0) then begin
end
else begin
move_to(Tandi_ptr, tile_num_in_direction(tile_num(dude_obj), 4, 4), elevation(dude_obj));
end
end
end
end
procedure remove_party
begin
if (global_var(GVAR_IAN_STATUS) == 2) then begin
set_global_var(GVAR_IAN_STATUS, 2);
end
if (global_var(GVAR_DOG_EMPATHY)) then begin
set_global_var(GVAR_DOG_EMPATHY, 1);
end
if (global_var(GVAR_HERNANDEZ_STATUS) == 2) then begin
set_global_var(GVAR_HERNANDEZ_STATUS, 2);
end
if (global_var(GVAR_KATJA_STATUS) == 2) then begin
set_global_var(GVAR_KATJA_STATUS, 2);
end
if (global_var(GVAR_TANDI_STATUS) == 5) then begin
end
end
procedure Darkness
begin
set_light_level(40);
end
procedure Invasion
begin
if (not(global_var(GVAR_MASTER_BLOWN) == 2)) then begin
if (global_var(GVAR_NECROPOLIS_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
set_global_var(GVAR_NECROPOLIS_INVADED, 1);
end
if (global_var(GVAR_THE_HUB_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
set_global_var(GVAR_HUB_INVADED, 1);
end
if (global_var(GVAR_BROTHERHOOD_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
set_global_var(GVAR_BROTHERHOOD_INVADED, 1);
end
if (global_var(GVAR_JUNKTOWN_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
set_global_var(GVAR_JUNKTOWN_INVADED, 1);
end
if (global_var(GVAR_SHADY_SANDS_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
set_global_var(GVAR_SHADY_SANDS_INVADED, 1);
end
if (global_var(GVAR_VAULT_13_INVADED_DATE) <= 0) then begin
set_global_var(GVAR_VAULT_INVADED, 1);
end
if (global_var(GVAR_FOLLOWERS_INVADED_DATE) > (game_time / (10 * 60 * 60 * 24))) then begin
set_global_var(GVAR_FOLLOWERS_INVADED, 1);
end
end
end