From 54b34a3ade642a1dfb800d1aadd5f0b7d198902f Mon Sep 17 00:00:00 2001 From: lexx2k Date: Wed, 8 Jan 2025 08:36:23 +0100 Subject: [PATCH] Encounters - Fixed: Merchant caravan cars in encounters could randomly overlap. Added a minimum spawn distance from each other. --- .../source/scripts/encounter/RNDDESRT.ssl | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/Fallout2/Fallout1in2/Mapper/source/scripts/encounter/RNDDESRT.ssl b/Fallout2/Fallout1in2/Mapper/source/scripts/encounter/RNDDESRT.ssl index de31ba8d3..4d76d48a0 100644 --- a/Fallout2/Fallout1in2/Mapper/source/scripts/encounter/RNDDESRT.ssl +++ b/Fallout2/Fallout1in2/Mapper/source/scripts/encounter/RNDDESRT.ssl @@ -1251,7 +1251,7 @@ procedure Raider2 begin end procedure Raider3 begin // Same as Raider1 in RNDMTN - variable LVar0 := 0; + variable Lvar0 := 0; display_msg(message_str(SCRIPT_RNDDESRT, 173)); Inner_ring := (dude_enc_perception / 2) + 4; Outer_ring := (dude_enc_perception / 2) + 6; @@ -1262,8 +1262,8 @@ procedure Raider3 begin // Same as Raider1 in RNDMTN random_seed_2 := 0; random_seed_3 := 0; - LVar0 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); - Create_EW_Red_Caravan(LVar0, 0) + Lvar0 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); + Create_EW_Red_Caravan(Lvar0, 0) if night then begin Critter := create_object(PID_BURNING_BARREL, 0, 0); @@ -1737,7 +1737,9 @@ procedure Junk4 begin end procedure Junk5 begin - variable LVar0 := 0; + variable spawn_tile0 := 0; + variable spawn_tile1 := 0; + display_msg(message_str(SCRIPT_RNDDESRT, 225)); Tot_Critter_A := random(1, 2); Tot_Critter_B := random(2, 6);// was 2, 12 @@ -1745,11 +1747,14 @@ procedure Junk5 begin Inner_ring := (dude_enc_perception / 2) + 2; group_angle := random(0, 5); - LVar0 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); - Create_EW_Red_Caravan(LVar0, 0) + spawn_tile0 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); + Create_EW_Red_Caravan(spawn_tile0, 0) - LVar0 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); - Create_EW_Grey_Caravan(LVar0, 0) + spawn_tile1 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); + while(tile_distance(spawn_tile0, spawn_tile1) < 5) do begin // To prevent the caravan cars from clipping into each other + spawn_tile1 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); + end + Create_EW_Grey_Caravan(spawn_tile1, 0) Critter_type := PID_PEASANT_ROBE; Critter_script := SCRIPT_GENMERCA; @@ -2714,17 +2719,21 @@ procedure Steel4 begin end procedure Steel5 begin - variable LVar0 := 0; + variable spawn_tile0 := 0; + variable spawn_tile1 := 0; display_msg(message_str(SCRIPT_RNDDESRT, 251)); Outer_ring := (dude_enc_perception / 2) + 6; Inner_ring := (dude_enc_perception / 2) + 3; - LVar0 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); - Create_EW_Red_Caravan(LVar0, 0) + spawn_tile0 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); + Create_EW_Red_Caravan(spawn_tile0, 0) - LVar0 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); - Create_EW_Grey_Caravan(LVar0, 0) + spawn_tile1 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); + while(tile_distance(spawn_tile0, spawn_tile1) < 5) do begin // To prevent the caravan cars from clipping into each other + spawn_tile1 := tile_num_in_direction(Critter_spawn_hex + random(0, 8) - 4, random(0, 5), random(7, 12)); + end + Create_EW_Grey_Caravan(spawn_tile1, 0) if night then begin Critter := create_object(PID_BURNING_BARREL, 0, 0);