From 7b8291995f5318e1177e65d9bbf6298d75366da3 Mon Sep 17 00:00:00 2001 From: phobos2077 Date: Sat, 6 Jul 2024 20:59:46 +0200 Subject: [PATCH] Add awareness expanded mod (#20) --- root/data/text/english/game/pbs_combat.msg | 12 ++++ root/data/text/russian/game/pbs_combat.msg | 12 ++++ root/mods/ecco/misc.ini | 5 ++ .../_pbs_main/gl_pbs_awareness_expanded.ssl | 63 +++++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 scripts_src/_pbs_main/gl_pbs_awareness_expanded.ssl diff --git a/root/data/text/english/game/pbs_combat.msg b/root/data/text/english/game/pbs_combat.msg index 67802e6..a93b876 100644 --- a/root/data/text/english/game/pbs_combat.msg +++ b/root/data/text/english/game/pbs_combat.msg @@ -22,3 +22,15 @@ # skill booster kits {310}{}{ It has supplies for %d/%d uses.} + +# armor awareness +{400}{}{His resistances are: } +{401}{}{Her resistances are: } +{402}{}{Its resistances are: } +{410}{}{%d/%d%% %s, } +{411}{}{%d AC.} +{420}{}{normal} +{421}{}{laser} +{422}{}{fire} +{423}{}{plasma} +{426}{}{explode} diff --git a/root/data/text/russian/game/pbs_combat.msg b/root/data/text/russian/game/pbs_combat.msg index 524b833..0c9e767 100644 --- a/root/data/text/russian/game/pbs_combat.msg +++ b/root/data/text/russian/game/pbs_combat.msg @@ -22,3 +22,15 @@ # skill booster kits {310}{}{ Может быть быть использован(а) ещё %d/%d раз.} + +# armor awareness +{400}{}{Его зищита: } +{401}{}{Её защита: } +{402}{}{Его защита: } +{410}{}{%d/%d%% %s, } +{411}{}{%d КБ.} +{420}{}{обыч.} +{421}{}{лаз.} +{422}{}{ог.} +{423}{}{плаз.} +{426}{}{взр.} diff --git a/root/mods/ecco/misc.ini b/root/mods/ecco/misc.ini index dfad6f6..ead18d0 100644 --- a/root/mods/ecco/misc.ini +++ b/root/mods/ecco/misc.ini @@ -176,6 +176,11 @@ remember_sneak=1 ensure_npcs_ammo=1 +[AWARENESS] +; 1 to enable displaying extra info when examining critters while having awereness perk +display_extra_info=1 + + [TOWN_REP] 0=47 ; ARROYO 2=48 ; KLAMATH diff --git a/scripts_src/_pbs_main/gl_pbs_awareness_expanded.ssl b/scripts_src/_pbs_main/gl_pbs_awareness_expanded.ssl new file mode 100644 index 0000000..e668fef --- /dev/null +++ b/scripts_src/_pbs_main/gl_pbs_awareness_expanded.ssl @@ -0,0 +1,63 @@ +/** + * - Expands awareness perk effect by printing target's armor stats. + */ + +#include "../sfall/command_lite.h" +#include "../sfall/define_lite.h" +#include "../sfall/define_extra.h" +#include "../sfall/sfall.h" + +#define SCRIPT_REALNAME "pbs_awareness_expanded" + +#include "../_pbs_headers/ecco_log.h" +#include "../_pbs_headers/ecco_ini.h" +#include "../_pbs_headers/ecco_msg.h" + +/* +procedure description_hook begin + display_msg("desc "+obj_name(get_sfall_arg)); +end +*/ + +#define critter_is_biped(cr) (proto_data(obj_pid(cr), cr_body_type) == CR_BODY_BIPED) + +procedure mstr_dmg_resist(variable obj, variable dmgType) begin + variable + formatStr := mstr_ecco_combat(410), + dmgTypeStr := mstr_ecco_combat(420 + dmgType), + dt := get_critter_stat(obj, STAT_dmg_thresh + dmgType), + dr := get_critter_stat(obj, STAT_dmg_resist + dmgType); + + return string_format(formatStr, dt, dr, dmgTypeStr); +end + +procedure stdprocedure_end_hook begin + variable proc := get_sfall_arg, obj := get_sfall_arg; + if (proc == description_proc and obj != dude_obj and obj_type(obj) == OBJ_TYPE_CRITTER + and dude_perk(PERK_bonus_awareness) and not is_critter_dead(obj)) then begin + variable + //dmgType := obj_pid get_active_weapon(dude_obj) + ac := get_critter_stat(obj, STAT_ac), + msg := mstr_ecco_combat(400 + get_gender(obj) if critter_is_biped(obj) else 402) + + mstr_dmg_resist(obj, DMG_normal_dam) + + mstr_dmg_resist(obj, DMG_laser) + + mstr_dmg_resist(obj, DMG_fire) + + mstr_dmg_resist(obj, DMG_plasma) + + mstr_dmg_resist(obj, DMG_explosion) + + string_format(mstr_ecco_combat(411), ac); + + display_msg(msg); + end +end + +#define INI_FILE INI_MISC +#define INI_SECTION "AWARENESS" + +procedure start begin + if not game_loaded then return; + if (not get_ini_value_def(INI_FILE, INI_SECTION, "display_extra_info", false)) then return; + + register_hook_proc(HOOK_STDPROCEDURE_END, stdprocedure_end_hook); + //register_hook_proc(HOOK_DESCRIPTIONOBJ, description_hook); +end +