diff --git a/game/engines/default/engine/Actor.lua b/game/engines/default/engine/Actor.lua index 77fa99951e06e313ab30715e75c59f514ec4a2b7..5b5f092f283e0aa5b1b65978456dfeb7dc33264f 100644 --- a/game/engines/default/engine/Actor.lua +++ b/game/engines/default/engine/Actor.lua @@ -510,3 +510,8 @@ end function _M:getEntityKind() return "actor" end + +function _M:he_she() return string.he_she(self) end +function _M:his_her() return string.his_her(self) end +function _M:him_her() return string.him_her(self) end +function _M:his_her_self() return string.his_her_self(self) end diff --git a/game/engines/default/engine/utils.lua b/game/engines/default/engine/utils.lua index 578a387908c001e107fcf57121e962fc9f62ca82..a03aea0dafaf7ced05dd7cf5f84e96a4afc4d7b1 100644 --- a/game/engines/default/engine/utils.lua +++ b/game/engines/default/engine/utils.lua @@ -586,6 +586,13 @@ function string.a_an(str) else return "a "..str end end +function string.he_she(actor) + if actor.female then return "she" + elseif actor.neuter then return "it" + else return "he" + end +end + function string.his_her(actor) if actor.female then return "her" elseif actor.neuter then return "it" @@ -593,6 +600,13 @@ function string.his_her(actor) end end +function string.him_her(actor) + if actor.female then return "her" + elseif actor.neuter then return "it" + else return "him" + end +end + function string.his_her_self(actor) if actor.female then return "herself" elseif actor.neuter then return "itself" diff --git a/game/modules/tome/class/interface/PartyLore.lua b/game/modules/tome/class/interface/PartyLore.lua index 2852e7a4b3c7ce95642141dc10db1102b34283f0..21aadb85f4c5441ce3fd138cbafac803642ee7a0 100644 --- a/game/modules/tome/class/interface/PartyLore.lua +++ b/game/modules/tome/class/interface/PartyLore.lua @@ -20,6 +20,7 @@ require "engine.class" local Dialog = require "engine.ui.Dialog" local LorePopup = require "mod.dialogs.LorePopup" +local slt2 = require "slt2" module(..., package.seeall, class.make) @@ -65,7 +66,14 @@ function _M:getLore(lore, silent) self.lore_known = self.lore_known or {} self.additional_lore = self.additional_lore or {} if not silent then assert(self.lore_defs[lore] or self.additional_lore[lore], "bad lore id "..lore) end - return self.lore_defs[lore] or self.additional_lore[lore] + local l = table.clone(self.lore_defs[lore] or self.additional_lore[lore]) + + if l.template then + local tpl = slt2.loadstring(l.lore) + l.lore = slt2.render(tpl, {player=self:findMember{main=true}, self=self}) + end + + return l end function _M:additionalLore(id, name, category, lore)