From d4aea7ee204b358d3d74c39015a18670cdf7c0bd Mon Sep 17 00:00:00 2001 From: phobos2077 Date: Sun, 7 Jul 2024 01:43:05 +0200 Subject: [PATCH] Eldridge: a workaround to make sure .223 Pistol don't get wiped by wipe_inventory setting - Spawn one if it's not there for existing saves, but only once --- scripts_src/newreno/nceldrid.ssl | 13 +++++++++++++ scripts_src/newreno/nieldbx2.ssl | 8 ++++++++ 2 files changed, 21 insertions(+) diff --git a/scripts_src/newreno/nceldrid.ssl b/scripts_src/newreno/nceldrid.ssl index d85ad7f..808a20d 100644 --- a/scripts_src/newreno/nceldrid.ssl +++ b/scripts_src/newreno/nceldrid.ssl @@ -109,6 +109,8 @@ procedure Node030; #define dude_touched_door_bit bit_15 #define back_room_bit bit_16 #define closed_warning_bit bit_17 +// pbs: +#define pistol_blyat_bit bit_24 #define module lvar_bit(LVAR_Flags, module_bit) #define set_module set_lvar_bit_on(LVAR_Flags, module_bit) @@ -134,6 +136,9 @@ procedure Node030; #define closed_warning lvar_bit(LVAR_Flags, closed_warning_bit) #define set_closed_warning set_lvar_bit_on(LVAR_Flags, closed_warning_bit) +#define pistol_blyat lvar_bit(LVAR_Flags, pistol_blyat_bit) +#define set_pistol_blyat set_lvar_bit_on(LVAR_Flags, pistol_blyat_bit) + #define give_eldridge_box(x) if (x != current_box) then begin \ if (current_box != 0) then begin \ move_obj_inven_to_obj(self_obj, current_box); \ @@ -328,6 +333,14 @@ procedure talk_p_proc begin gdialog_set_barter_mod(-10); //added by killap + // pbs: workaround for overly-aggressive wipe_inventory: restore pistol, but only once (potentially grants a second one) + if (not pistol_blyat) then begin + if (obj_is_carrying_obj_pid(new_reno_eldridge_box_2, PID_223_PISTOL) == 0) then begin + ndebug("restoring deleted .223 Pistol!"); + call add_item_pid(new_reno_eldridge_box_2, PID_223_PISTOL); + end + set_pistol_blyat; + end if (eldridge_bed_time) then begin call Node030; end else begin diff --git a/scripts_src/newreno/nieldbx2.ssl b/scripts_src/newreno/nieldbx2.ssl index 9d286aa..05fe805 100644 --- a/scripts_src/newreno/nieldbx2.ssl +++ b/scripts_src/newreno/nieldbx2.ssl @@ -50,6 +50,12 @@ procedure map_enter_p_proc begin if (is_loading_game == false) then begin restock_fix if (local_var(LVAR_Restock_Time) < game_time) then begin + variable pistol_blyat := obj_carrying_pid_obj(self_obj, PID_223_PISTOL); + if (pistol_blyat) then begin + ndebug("preserving .223 Pistol from inventory wipe..."); + rm_obj_from_inven(self_obj, pistol_blyat); + end + variable tmp_box := move_critical_items(); if (map_first_run) then begin give_pid_qty(self_obj, PID_223_PISTOL, 1) @@ -69,6 +75,8 @@ procedure map_enter_p_proc begin call check_restock_craft_schematic(PID_PBS_CRAFT_SCHEMA_T2, PID_IMPROVED_FLAMETHROWER, 100); call check_restock_craft_schematic(PID_PBS_CRAFT_SCHEMA_T2, PID_FLAMETHROWER_FUEL_MK_II, 100); call restore_critical_items(tmp_box); + if (pistol_blyat) then + add_obj_to_inven(self_obj, pistol_blyat); set_local_var(LVAR_Restock_Time, (random(2,4) * ONE_GAME_DAY) + game_time); end end