diff --git a/game/engines/default/engine/Entity.lua b/game/engines/default/engine/Entity.lua index 38d6d2071705aa0c43294049b619be35a0a775b7..03af078ba7b5f22455b985cc3f5dbbe1a15c453c 100644 --- a/game/engines/default/engine/Entity.lua +++ b/game/engines/default/engine/Entity.lua @@ -765,6 +765,7 @@ function _M:loadList(file, no_default, res, mod, loaded) -- Do we inherit things ? if t.base then local temp = table.clone(res[t.base], true, {define_as = true}) + if res[t.base].onEntityMerge then res[t.base]:onEntityMerge(temp) end table.mergeAppendArray(temp, t, true) t = temp t.base = nil diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index a222ddb327eac46004350c07c8270eb3ae0c3509..4db737a0eb686ff6140bb48b1b95d1a6b9f70179 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -225,6 +225,15 @@ function _M:init(t, no_default) self:recomputeGlobalSpeed() end +function _M:onEntityMerge(a) + -- Remove stats to make new stats work + for i, s in ipairs(_M.stats_def) do + if a.stats[i] then + a.stats[s.short_name], a.stats[i] = a.stats[i], nil + end + end +end + function _M:useEnergy(val) engine.Actor.useEnergy(self, val)