Divergent/mods/Hideout Furniture/gamedata/scripts/igi_preconditions_hf.script

35 lines
1.1 KiB
Plaintext

function is_condlist_true(condlist_str, npc)
if (condlist_str and condlist_str ~= "") then
local precond_list = xr_logic.parse_condlist(npc, nil, "precondition", condlist_str)
if (precond_list == "false") then
return false
end
if (db.actor and xr_logic.pick_section_from_condlist(db.actor, npc, precond_list) == "false") then
return false
end
end
return true
end
igi_precondition.conditions.condlist = function (cond)
---@type game_object
local npc = mob_trade.GetTalkingNpc()
---@type string
local precond_string = cond.value
-- Replace '[taskgiver.section]' with the task giver's section
precond_string = precond_string:gsub("%[taskgiver.section%]", npc:section())
return is_condlist_true(precond_string, npc)
end
---@param cond {uid: string, maximum: number}
igi_precondition.conditions.repeats = function (cond)
---@type game_object
local npc = mob_trade.GetTalkingNpc()
local precond_max_str = ("{%s_%s_complete_%s} true, false"):format(npc:section(), cond.uid, cond.maximum)
return is_condlist_true(precond_max_str, npc)
end