From 41d92ebe6a72527afcf91a9e9da6d7340f6de011 Mon Sep 17 00:00:00 2001 From: phobos2077 Date: Wed, 17 Jul 2024 01:59:14 +0200 Subject: [PATCH] ammocost_mod: export variable instead of procedure to avoid related issues - Exported procs in SSL get executed asynchronously, leading to all kinds of issues --- scripts_src/_pbs_main/gl_ammocost_mod.ssl | 7 ++----- scripts_src/_pbs_main/gl_pbs_ai.ssl | 2 +- scripts_src/_pbs_main/gl_pbs_random_encounters.ssl | 4 ++-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/scripts_src/_pbs_main/gl_ammocost_mod.ssl b/scripts_src/_pbs_main/gl_ammocost_mod.ssl index 6fb40a0..e33057b 100644 --- a/scripts_src/_pbs_main/gl_ammocost_mod.ssl +++ b/scripts_src/_pbs_main/gl_ammocost_mod.ssl @@ -15,11 +15,7 @@ variable procedure start; -export procedure ammocost_mod_get_cost(variable weaponPid); - -procedure ammocost_mod_get_cost(variable weaponPid) begin - return ini_ammocost[weaponPid] or 1; -end +export variable pbs_ammocost_map; /* HOOK_AMMOCOST @@ -58,5 +54,6 @@ procedure start begin if (len_array(ini_ammocost) > 0) then begin register_hook_proc(HOOK_AMMOCOST, ammocost_handler); end + pbs_ammocost_map = ini_ammocost; end end diff --git a/scripts_src/_pbs_main/gl_pbs_ai.ssl b/scripts_src/_pbs_main/gl_pbs_ai.ssl index 690f1ff..24f69a5 100644 --- a/scripts_src/_pbs_main/gl_pbs_ai.ssl +++ b/scripts_src/_pbs_main/gl_pbs_ai.ssl @@ -277,7 +277,7 @@ procedure bestweapon_handler begin if (weapon1 == 0 or weapon2 == 0 or weapon_type(weapon1) != weapon_type(weapon2) - or item_proto_is_hidden(obj_pid(weapon1)) or item_proto_is_hidden(obj_pid(weapon2))) then return; + or proto_item_is_hidden(obj_pid(weapon1)) or proto_item_is_hidden(obj_pid(weapon2))) then return; variable weapon1rank := weapon_rank(critter, weapon1, target), diff --git a/scripts_src/_pbs_main/gl_pbs_random_encounters.ssl b/scripts_src/_pbs_main/gl_pbs_random_encounters.ssl index f5f1fd9..54bf456 100644 --- a/scripts_src/_pbs_main/gl_pbs_random_encounters.ssl +++ b/scripts_src/_pbs_main/gl_pbs_random_encounters.ssl @@ -26,7 +26,7 @@ end export variable pbs_random_encounter_placement; -import procedure ammocost_mod_get_cost(variable weaponPid); +import variable pbs_ammocost_map; #define weapon_pid_can_burst(pid) (weapon_attack_mode1(pid) == ATTACK_MODE_BURST or weapon_attack_mode2(pid) == ATTACK_MODE_BURST) @@ -41,7 +41,7 @@ procedure calc_required_spare_ammo(variable weaponPid) begin return burstSize * random(2, 4) if canBurst - else ammocost_mod_get_cost(weaponPid) * random(10, 20); + else (pbs_ammocost_map[weaponPid] or 1) * random(10, 20); end procedure ensure_npcs_ammo begin