diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index fda1e5c5a62c9d3d95f0f76693faf1ad53556f1e..e7e9c2aae2a39445de0dbdd40151a19fd8e4a879 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -645,22 +645,6 @@ function _M:onTakeHit(value, src) game.logSeen(self, "%s shatters into pieces!", self.name:capitalize()) end - -- Split ? - if self.clone_on_hit and value >= self.clone_on_hit.min_dam_pct * self.max_life / 100 and rng.percent(self.clone_on_hit.chance) then - -- Find space - local x, y = util.findFreeGrid(self.x, self.y, 1, true, {[Map.ACTOR]=true}) - if x then - -- Find a place around to clone - local a = self:clone() - a.energy.val = 0 - a.exp_worth = 0.1 - a.inven = {} - a.x, a.y = nil, nil - game.zone:addEntity(game.level, a, "actor", x, y) - game.logSeen(self, "%s is split in two!", self.name:capitalize()) - end - end - -- Adds hate if self:knowTalent(self.T_HATE_POOL) then local hateGain = 0 @@ -717,6 +701,24 @@ function _M:onTakeHit(value, src) if value > self.life then value = self.life - 1 end end + -- Split ? + if self.clone_on_hit and value >= self.clone_on_hit.min_dam_pct * self.max_life / 100 and rng.percent(self.clone_on_hit.chance) then + -- Find space + local x, y = util.findFreeGrid(self.x, self.y, 1, true, {[Map.ACTOR]=true}) + if x then + -- Find a place around to clone + local a = self:clone() + a.life = math.max(1, a.life - value / 2) + a.energy.val = 0 + a.exp_worth = 0.1 + a.inven = {} + a.x, a.y = nil, nil + game.zone:addEntity(game.level, a, "actor", x, y) + game.logSeen(self, "%s is split in two!", self.name:capitalize()) + value = value / 2 + end + end + return value end