Skip to content

Commit

Permalink
Eldridge: workaround to preserve "unique-ish" .223 Pistol (#304)
Browse files Browse the repository at this point in the history
  • Loading branch information
phobos2077 committed Jul 19, 2024
1 parent ab74eec commit b13ad11
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
18 changes: 18 additions & 0 deletions scripts_src/newreno/nceldrid.ssl
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ procedure Node030;
#define dude_touched_door_bit bit_15
#define back_room_bit bit_16
#define closed_warning_bit bit_17
#define pistol_given_bit bit_24

#define module lvar_bit(LVAR_Flags, module_bit)
#define set_module set_lvar_bit_on(LVAR_Flags, module_bit)
Expand All @@ -131,6 +132,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_given lvar_bit(LVAR_Flags, pistol_given_bit)
#define set_pistol_given set_lvar_bit_on(LVAR_Flags, pistol_given_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); \
Expand Down Expand Up @@ -320,6 +324,17 @@ procedure pickup_p_proc begin
end
end

procedure ensure_pistol begin
// workaround for overly-aggressive wipe_inventory: restore pistol, but only once (potentially grants a second one)
if (not pistol_given) then begin
if (obj_is_carrying_obj_pid(new_reno_eldridge_box_2, PID_223_PISTOL) == 0) then begin
ndebug("restoring deleted .223 Pistol!");
give_pid_qty(new_reno_eldridge_box_2, PID_223_PISTOL, 1)
end
set_pistol_given;
end
end

procedure talk_p_proc begin
//added by killap
if (Fallout2_enclave_destroyed) then
Expand All @@ -330,6 +345,7 @@ procedure talk_p_proc begin
gdialog_set_barter_mod(-10);
//added by killap

call ensure_pistol;
if (eldridge_bed_time) then begin
call Node030;
end else begin
Expand Down Expand Up @@ -358,6 +374,8 @@ end
procedure destroy_p_proc begin
new_reno_eldridge_obj := 0;
move_obj_inven_to_obj(new_reno_eldridge_box, self_obj);

call ensure_pistol;
move_obj_inven_to_obj(new_reno_eldridge_box_2, self_obj);
give_voice_chip(self_obj)
set_eldridge_dead;
Expand Down
8 changes: 8 additions & 0 deletions scripts_src/newreno/nieldbx2.ssl
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,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_obj := obj_carrying_pid_obj(self_obj, PID_223_PISTOL);
if (pistol_obj) then begin
ndebug("preserving .223 Pistol from inventory wipe...");
rm_obj_from_inven(self_obj, pistol_obj);
end

variable tmp_box := move_critical_items();
if (map_first_run) then begin
give_pid_qty(self_obj, PID_223_PISTOL, 1)
Expand All @@ -62,6 +68,8 @@ procedure map_enter_p_proc begin
check_restock_item(PID_SUPER_SLEDGE, 1, 1, 25)
check_restock_item(PID_BOZAR, 1, 1, 25)
call restore_critical_items(tmp_box);
if (pistol_obj) then
add_obj_to_inven(self_obj, pistol_obj);
set_local_var(LVAR_Restock_Time, (random(2,4) * ONE_GAME_DAY) + game_time);
end
end
Expand Down

0 comments on commit b13ad11

Please sign in to comment.