diff --git a/game/modules/tome/data/talents/corruptions/sanguisuge.lua b/game/modules/tome/data/talents/corruptions/sanguisuge.lua index 2b43b42b1d7a7f0993217815d2204b9e90582f81..8856b44b30e3537e6d6224cf91654980b328af8c 100644 --- a/game/modules/tome/data/talents/corruptions/sanguisuge.lua +++ b/game/modules/tome/data/talents/corruptions/sanguisuge.lua @@ -110,15 +110,17 @@ newTalent{ cooldown = 20, range = 10, no_energy = true, - tactical = { BUFF = 2 }, - getMult = function(self,t) return self:combatTalentScale(t, 8, 16) end, + tactical = { HEAL = 2 }, + getMult = function(self,t) return self:combatTalentSpellDamage(t, 4, 30) end, action = function(self, t) - self:setEffect(self.EFF_LIFE_TAP, 7, {power=t.getMult(self,t)}) + self:setEffect(self.EFF_LIFE_TAP, 2, {power=t.getMult(self,t)}) game:playSoundNear(self, "talents/spell_generic2") return true end, info = function(self, t) - return ([[Tap your life force to provide a furious boost, increasing all damage you deal by %0.1f%% for 7 turns.]]): + return ([[Feed on the pain you cause your foes. + For 2 turns you gain %d%% lifesteal on all damage dealt. + The lifesteal will increase with your Spellpower.]]): format(t.getMult(self,t)) end, } diff --git a/game/modules/tome/data/timed_effects/magical.lua b/game/modules/tome/data/timed_effects/magical.lua index c8cffeb8192f7d3bba6afacd7c8d60abde60987c..87b4f9d2e1618c89ab6dd453382bce990411aab0 100644 --- a/game/modules/tome/data/timed_effects/magical.lua +++ b/game/modules/tome/data/timed_effects/magical.lua @@ -581,18 +581,24 @@ newEffect{ newEffect{ name = "LIFE_TAP", image = "talents/life_tap.png", desc = "Life Tap", - long_desc = function(self, eff) return ("The target taps its blood's hidden power, increasing all damage done by %d%%."):format(eff.power) end, + long_desc = function(self, eff) return ("The target taps its blood's hidden power, healing for %d%% of all damage they deal."):format(eff.power) end, type = "magical", subtype = { blight=true }, status = "beneficial", - parameters = { power=10 }, - on_gain = function(self, err) return "#Target# is overloaded with power.", "+Life Tap" end, - on_lose = function(self, err) return "#Target# seems less dangerous.", "-Life Tap" end, + parameters = { power=0 }, + on_gain = function(self, err) return "#Target# looks healthier as he deals damage.", "+Life Tap" end, + on_lose = function(self, err) return "#Target# stops leeching life.", "-Life Tap" end, activate = function(self, eff) - eff.pid = self:addTemporaryValue("inc_damage", {all=eff.power}) end, deactivate = function(self, eff) - self:removeTemporaryValue("inc_damage", eff.pid) + end, + callbackOnDealDamage = function(self, eff, value, target, dead, death_node) + -- Lifesteal done here to avoid stacking in bad ways with other LS effects + if value <= 0 or not target then return end + local leech = math.min(value, target.life) * eff.power / 100 + if leech > 0 then + self:heal(leech, self) + end end, }