From 029f6aef3fcdfa2b0558ab303b2a6aaf4f97c603 Mon Sep 17 00:00:00 2001
From: Shibari <ShibariTOME@Gmail.com>
Date: Thu, 25 Oct 2018 04:48:17 -0400
Subject: [PATCH] Redesign Life Tap

Now grants lifesteal for 2 turns
---
 .../data/talents/corruptions/sanguisuge.lua    | 10 ++++++----
 .../tome/data/timed_effects/magical.lua        | 18 ++++++++++++------
 2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/game/modules/tome/data/talents/corruptions/sanguisuge.lua b/game/modules/tome/data/talents/corruptions/sanguisuge.lua
index 2b43b42b1d..8856b44b30 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 c8cffeb819..87b4f9d2e1 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,
 }
 
-- 
GitLab