Divergent/mods/Body Health System Realisti.../gamedata/scripts/aaa_descr_override.script

163 lines
8.0 KiB
Plaintext
Raw Normal View History

2024-03-17 20:18:03 -04:00
local gc = game.translate_string
local blue_clr = utils_xml.get_color("d_blue")
local red_clr = strformat("%c[%s,%s,%s,%s]", 255, 250, 50, 50) -- bad shit
local white_clr = strformat("%c[%s,%s,%s,%s]", 255, 255, 255, 255)
local teal_clr = strformat("%c[%s,%s,%s,%s]", 255, 150, 250, 240) -- for non-stat properties
local green_clr = utils_xml.get_color("d_green")
local def_clr = utils_xml.get_color("ui_gray_2")
local title_clr = utils_xml.get_color("ui_gray_3")
local bhs_display_numeric_at = 12
local bhs_show_numeric_always = true
local dbg = false
function pr(...)
if not dbg then return end
printf(...)
end
BuildFooter = ui_item.build_desc_footer
function ui_item.build_desc_footer(obj, sec, str)
if zzz_player_injuries.healonelist[sec] or zzz_player_injuries.healhelplist[sec] or zzz_player_injuries.painkillerlist[sec] or zzz_player_injuries.surgerylist[sec] or zzz_player_injuries.splintlist[sec] or (zzz_player_injuries.bhs_exp_mode and zzz_player_injuries.exp_druglist[sec]) then
printf("Changed desc for %s", sec)
str = str or gc(ini_sys:r_string_ex(sec, "description"))
if (not str) then return "" end
str = str .. title_clr .. gc("desc_over_bhs") .. def_clr .. " \\n"
local bhs_str = bhs_descr_str(obj, sec)
str = str .. bhs_str
str = str .. " \\n"
else
return BuildFooter(obj, sec, str)
end
return str
end
function get_local_val(path, script_name, str_to_find)
if _G[script_name] then
if not file_exists(path) then
return
end
for line in io.lines(path) do
if string.find(line, str_to_find) then
_,_, loc_val = string.find(line, "start_blur_4%s*=%s*(%d+)") -- RavenAscendant carried
if type(tonumber(loc_val)) == "number" then
return loc_val
end
end
end
end
end
function file_exists(name)
local f = io.open(name, "r")
if f ~= nil then
io.close(f)
return true
else
return false
end
end
-- BHS
function bhs_descr_str(obj, obj_sec)
local _str = ""
local blue_main = utils_xml.get_color("d_blue")
local blue_clr = strformat("%c[%s,%s,%s,%s]", 255, 74, 134, 232)
local yel_clr = strformat("%c[%s,%s,%s,%s]", 0, 252, 186, 3)
local grey_clr = utils_xml.get_color("ui_gray_2")
-- get string
local function build_string(t_name, sec, color)
local hphealed_str = ""
local head_str = ""
local torso_str = ""
local arm_str = ""
local leg_str = ""
local healpower_str = ""
local timeregen_str = ""
local painkillerpower_str = ""
local painkillerdur_str = ""
local splint_str = ""
local surgery_str = ""
local restore_str = ""
local restoretime_str = ""
if sec and t_name[sec] then
for limb, val in pairs(t_name[sec]) do
if limb == "healamount" then
hphealed_str = grey_clr .. color .. "+" .. val .. " " .. gc("st_bhs_limb_hp")
elseif limb == "head" then
head_str = grey_clr .. gc("st_bhs_head_str") .. color .. (val) .. "%" .. " "
elseif limb == "torso" then
torso_str = grey_clr .. gc("st_bhs_torso_str") .. color .. (val) .. "%" .. " "
elseif limb == "rightarm" then
arm_str = grey_clr .. gc("st_bhs_rightarm_str") .. color .. (val) .. "%" .. " "
elseif limb == "rightleg" then
leg_str = grey_clr .. gc("st_bhs_rightleg_str") .. color .. (val) .. "%" .. " "
elseif limb == "healtimer" and zzz_player_injuries.medkits_heal_logic==2 then
timeregen_str = grey_clr .. gc("desc_over_over") .. " " .. color .. ((val / 1000)*t_name[sec].healamount) .. " " .. gc("desc_over_sec") .. " "
elseif limb == "healtimer" and zzz_player_injuries.medkits_heal_logic==1 then
timeregen_str = grey_clr .. gc("desc_over_over") .. " " .. color .. ((val / 1000)*t_name[sec].head) .. " " .. gc("desc_over_sec") .. " "
elseif limb == "healpower" then
if val == 0 then text=gc("st_bhs_currhp")
else text = val*100 .. "%" end
healpower_str = grey_clr .. gc("st_bhs_upto") .. " " .. color .. text .. " max. "
elseif limb == "painkillerpower" then
painkillerpower_str = grey_clr .. gc("st_bhs_painkillerlvl") .. " " .. color .. val
elseif limb == "painkillerduration" then
painkillerdur_str = grey_clr .. gc("st_bhs_for") .. " " .. color .. (val / 1000) .. " " .. gc("desc_over_sec")
elseif limb == "splintamount" then
splint_str = grey_clr .. gc("st_bhs_splints") .. " "
elseif limb == "surgeryamount" then
surgery_str = grey_clr .. gc("st_bhs_surgerys") .. " "
elseif limb == "restorepower" then
restore_str = grey_clr .. color .. (val*ini_sys:r_float_ex(sec, "boost_time"))*100 .. "%" .. " " .. gc("st_bhs_main_hp")
elseif limb == "restoretime" then
restoretime_str = grey_clr .. gc("desc_over_over") .. " " .. color .. val .. " " .. gc("desc_over_sec") .. " "
end
end
end
--local main_string = head_str .. torso_str .. arm_str .. leg_str .. (timeregen_str ~= "" and (" " .. timeregen_str) or "")
local main_string = (hphealed_str ~= "" and (" " .. hphealed_str) or "") .. (timeregen_str ~= "" and (" " .. timeregen_str) or "") .. (healpower_str ~= "" and (" " .. healpower_str) or "") .. (head_str ~= "" and (" " .. head_str) or "") .. (torso_str ~= "" and (" " .. torso_str) or "") .. (arm_str ~= "" and (" " .. arm_str) or "") .. (leg_str ~= "" and (" " .. leg_str) or "") .. (painkillerpower_str ~= "" and (" " .. painkillerpower_str) or "") .. (painkillerdur_str ~= "" and (" " .. painkillerdur_str) or "") .. (surgery_str ~= "" and (" " .. surgery_str) or "") .. (splint_str ~= "" and (" " .. splint_str) or "") .. (restore_str ~= "" and (" " .. restore_str) or "") .. (restoretime_str ~= "" and (" " .. restoretime_str) or "")
-- printf("main_string: [%s]", main_string)
return main_string
end
local medkits_pre = " " .. blue_main .. gc("st_bhs_mihail_krug") .. " " .. blue_clr .. " " .. gc("st_bhs_heals") .. " "
local medkits_str = build_string(zzz_player_injuries.healonelist, obj_sec, blue_clr)
local healhelp_pre = " " .. blue_main .. gc("st_bhs_mihail_krug") .. " " .. blue_clr .. " " .. gc("st_bhs_heals") .. " "
local healhelp_str = build_string(zzz_player_injuries.healhelplist, obj_sec, blue_clr)
local surgerys_pre = " " .. blue_main .. gc("st_bhs_mihail_krug") .. " " .. blue_clr .. " " .. gc("st_bhs_surgery") .. " "
local surgerys_str = build_string(zzz_player_injuries.surgerylist, obj_sec, blue_clr)
local splints_pre = " " .. blue_main .. gc("st_bhs_mihail_krug") .. " " .. blue_clr .. " " .. gc("st_bhs_splint") .. " "
local splints_str = build_string(zzz_player_injuries.splintlist, obj_sec, blue_clr)
local painkillers_pre = " " .. yel_clr .. gc("st_bhs_mihail_krug") .. " " .. yel_clr .. " " .. gc("st_bhs_painkiller") .. " "
local painkillers_str = build_string(zzz_player_injuries.painkillerlist, obj_sec, yel_clr)
local bhs_exp_pre = " " .. green_clr .. gc("st_bhs_mihail_krug") .. " " .. green_clr .. " " .. gc("st_bhs_restore") .. " "
local bhs_exp_str = build_string(zzz_player_injuries.exp_druglist, obj_sec, green_clr)
-- printf("obj_sec: [ %s ] || medkits_str: [ %s ] || healhelp_str: [ %s ]", obj_sec, medkits_str ~= "" and true or false, healhelp_str ~= "" and true or false)
if medkits_str ~= "" and painkillers_str ~= "" then
_str = medkits_pre .. medkits_str .. "\\n" .. painkillers_pre .. painkillers_str .. grey_clr .. "\\n"
elseif healhelp_str ~= "" and painkillers_str ~= "" then
_str = healhelp_pre .. healhelp_str .. "\\n" .. painkillers_pre .. painkillers_str .. grey_clr .. "\\n"
elseif medkits_str ~= "" and bhs_exp_str ~= "" and zzz_player_injuries.bhs_exp_mode then
_str = medkits_pre .. medkits_str .. "\\n" .. bhs_exp_pre .. bhs_exp_str .. grey_clr .. "\\n"
elseif medkits_str ~= "" then
_str = medkits_pre .. medkits_str .. grey_clr .. "\\n"
elseif healhelp_str ~= "" then
_str = healhelp_pre .. healhelp_str .. grey_clr .. "\\n"
elseif splints_str ~= "" then
_str = splints_pre .. splints_str .. grey_clr .. "\\n"
elseif painkillers_str ~= "" then
_str = painkillers_pre .. painkillers_str .. grey_clr .. "\\n"
elseif surgerys_str ~= "" then
_str = surgerys_pre .. surgerys_str .. grey_clr .. "\\n"
elseif bhs_exp_str ~= "" and zzz_player_injuries.bhs_exp_mode then
_str = bhs_exp_pre .. bhs_exp_str .. grey_clr .. "\\n"
end
return _str
end