diff --git a/game/modules/tome/data/talents/gifts/cold-drake.lua b/game/modules/tome/data/talents/gifts/cold-drake.lua
index 892f1020bce2c867b5ef658edbd61e97fad3b4b2..a663f38dba1abcce17b0d6d79c8ec6aca28e1e13 100644
--- a/game/modules/tome/data/talents/gifts/cold-drake.lua
+++ b/game/modules/tome/data/talents/gifts/cold-drake.lua
@@ -89,7 +89,7 @@ newTalent{
 	on_learn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) + 1 end,
 	on_unlearn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) - 1 end,
 	getArmor = function(self, t) return self:combatTalentMindDamage(t, 5, 25) end,
-	getLifePct = function(self, t) return self:combatTalentLimit(t, 1, 0.02, 0.10) end, -- Limit < 100% bonus
+	getLifePct = function(self, t) return self:combatTalentLimit(t, 1, 0.05, 0.15) end, -- Limit < 100% bonus
 	getDamageOnMeleeHit = function(self, t) return 10 +  self:combatTalentMindDamage(t, 10, 30) end,
 	activate = function(self, t)
 		return {
diff --git a/game/modules/tome/data/talents/gifts/corrosive-blades.lua b/game/modules/tome/data/talents/gifts/corrosive-blades.lua
index 249f99d7247af417cfac3e81a89be6ea94392dc5..252b44b62af59287d55113cfb6b70d5e47dda54d 100644
--- a/game/modules/tome/data/talents/gifts/corrosive-blades.lua
+++ b/game/modules/tome/data/talents/gifts/corrosive-blades.lua
@@ -122,7 +122,7 @@ newTalent{
 	tactical = { ATTACKAREA = { ACID = 2 }, DISABLE = { knockback = 1 } },
 	target = function(self, t) return {type="ball", radius=self:getTalentRadius(t), range=self:getTalentRange(t), talent=t} end,
 	getDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 290) end,
-	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 12, 5, 8)) end, -- Limit < 12
+	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 12, 5, 8.5)) end, -- Limit < 12
 	getNb = function(self, t) local l = self:getTalentLevel(t)
 		if l < 3 then return 2
 		elseif l < 5 then return 3
diff --git a/game/modules/tome/data/talents/gifts/earthen-power.lua b/game/modules/tome/data/talents/gifts/earthen-power.lua
index 063099263cdc8a8b66c52b5b449b2d424132b683..f081711928d823060774b61f0b284fde7352be92 100644
--- a/game/modules/tome/data/talents/gifts/earthen-power.lua
+++ b/game/modules/tome/data/talents/gifts/earthen-power.lua
@@ -32,9 +32,9 @@ newTalent{
 	end,
 	getValues = function(self, t)
 		return
-			self:combatTalentLimit(t, 1, 0.07, 0.15),
+			self:combatTalentLimit(t, 1, 0.08, 0.165),
 			self:combatTalentScale(t, 6, 10),
-			self:combatTalentLimit(t, 0.5, 0.067, 0.185),
+			self:combatTalentLimit(t, 0.5, 0.075, 0.2),
 			self:combatTalentScale(t, 5, 9, "log")
 	end,
 	getDamage = function(self, t) return 30 end,
diff --git a/game/modules/tome/data/talents/gifts/earthen-vines.lua b/game/modules/tome/data/talents/gifts/earthen-vines.lua
index d9754f8bc1b154916edb79108f91b89d03d0d218..11785738f46b5ea7364a81edbf335dc573d5be02 100644
--- a/game/modules/tome/data/talents/gifts/earthen-vines.lua
+++ b/game/modules/tome/data/talents/gifts/earthen-vines.lua
@@ -98,7 +98,7 @@ newTalent{
 	require = gifts_req3,
 	points = 5,
 	equilibrium = 15,
-	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 11, 7)) end,
+	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 11, 6)) end,
 	requires_target = true,
 	range = 20,
 	tactical = { HEAL = 2, CLOSEIN = 2 },
@@ -144,7 +144,7 @@ newTalent{
 	require = gifts_req4,
 	points = 5,
 	equilibrium = 15,
-	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 11, 7)) end,
+	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 11, 6)) end,
 	requires_target = true,
 	range = 20,
 	tactical = { ATTACK = { PHYSICAL = 2 }, CLOSEIN = 2 },
diff --git a/game/modules/tome/data/talents/gifts/eyals-fury.lua b/game/modules/tome/data/talents/gifts/eyals-fury.lua
index 4ca385928f97dc9e8329f2472e6e777fb697b0ff..571d675a94b747e41cdfcf4c544b90b0797c979f 100644
--- a/game/modules/tome/data/talents/gifts/eyals-fury.lua
+++ b/game/modules/tome/data/talents/gifts/eyals-fury.lua
@@ -60,7 +60,7 @@ newTalent{
 	getSave = function(self, t) return self:combatTalentMindDamage(t, 5, 50) end,
 	getResist = function(self, t) return self:combatTalentMindDamage(t, 5, 40) end,
 	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end,
-	getAffinity = function(self, t) return self:combatTalentLimit(t, 50, 5, 20) end, -- Limit <50%
+	getAffinity = function(self, t) return self:combatTalentLimit(t, 50, 8, 25) end, -- Limit <50%
 	getPower = function(self, t) return self:combatTalentMindDamage(t, 2, 8) end,
 	trigger = function(self, t, target, source_t) -- called in damage_types.lua default projector
 		self:setEffect(self.EFF_NATURE_REPLENISHMENT, t.getDuration(self, t), {power = t.getPower(self, t)})
@@ -98,7 +98,7 @@ newTalent{
 	tactical = { ATTACKAREA = { ACID = 2 },  DISABLE = {blind = 1} },
 	getDuration = function(self, t) return 5 end,
 	getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 120) end,
-	getChance = function(self, t) return self:combatTalentLimit(t, 100, 20, 40) end, --Limit < 100%
+	getChance = function(self, t) return self:combatTalentLimit(t, 100, 25, 40) end, --Limit < 100%
 	removeEffect = function(self, target) -- remove one random beneficial magical effect or sustain
 	-- Go through all beneficial magical effects
 		local effs = {}
@@ -170,7 +170,7 @@ newTalent{
 	points = 5,
 	equilibrium = 20,
 	cooldown = 20,
-	radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 4, 6)) end, --Limit < 10
+	radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 4, 8)) end, --Limit < 10
 	tactical = { ATTACKAREA = { NATURE = 2 },  EQUILIBRIUM = 1 },
 	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 4, 8)) end,
 	getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 100) end,
diff --git a/game/modules/tome/data/talents/gifts/harmony.lua b/game/modules/tome/data/talents/gifts/harmony.lua
index 8cf25db368110f83a972910742df58aaa71c11c9..caebf640eb77d7ab98f293b602acfa6a6283ebbd 100644
--- a/game/modules/tome/data/talents/gifts/harmony.lua
+++ b/game/modules/tome/data/talents/gifts/harmony.lua
@@ -36,7 +36,7 @@ newTalent{
 		return false
 	end,
 	is_heal = true,
-	getdur = function(self,t) return math.floor(self:combatTalentLimit(t, 30, 6, 10)) end, -- limit to <30
+	getdur = function(self,t) return math.floor(self:combatTalentLimit(t, 30, 6, 14)) end, -- limit to <30
 	action = function(self, t)
 		local nb = 0
 		for eff_id, p in pairs(self.tmp) do
@@ -152,9 +152,9 @@ newTalent{
 	direct_hit = true,
 	requires_target = true,
 	range = 0,
-	radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 2, 5.2)) end, -- Limit < 10
+	radius = function(self, t) return math.floor(self:combatTalentLimit(t, 10, 3.5, 7)) end, -- Limit < 10
 	target = function(self, t) return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t} end, -- To be improved after AI update
-	getDur = function(self, t) return math.floor(self:combatTalentLimit(t, 20, 4, 8)) end, -- Limit < 20
+	getDur = function(self, t) return math.floor(self:combatTalentLimit(t, 20, 6, 10)) end, -- Limit < 20
 	getPct = function(self, t) return self:combatTalentLimit(t, 1, 0.4, 0.7) end, -- Limit < 100% healing transfer
 	getEquilibrium = function(self, t) return self:combatTalentScale(t, 5, 10, "log", 0, 3) end, -- slow scaling since this can affect a lot of heals quickly
 	action = function(self, t)
diff --git a/game/modules/tome/data/talents/gifts/higher-draconic.lua b/game/modules/tome/data/talents/gifts/higher-draconic.lua
index a9362fc19af0f954f05bfd0efe6a1688231c10c8..ae0cfc2c7c63900f75811d2382dbddc5b1df9d4c 100644
--- a/game/modules/tome/data/talents/gifts/higher-draconic.lua
+++ b/game/modules/tome/data/talents/gifts/higher-draconic.lua
@@ -121,7 +121,7 @@ newTalent{
 		local bonus = self:knowTalent(self.T_CHROMATIC_FURY) and self:combatTalentStatDamage(t, "wil", 60, 750) or 0
 		return self:combatTalentStatDamage(t, "str", 60, 750) + bonus
 	end,
-	getEffect = function(self, t) return math.ceil(self:combatTalentLimit(t, 50, 10, 20)) end,
+	getEffect = function(self, t) return math.ceil(self:combatTalentLimit(t, 50, 15, 30)) end,
 	on_learn = function(self, t)
 		self.resists[DamageType.NATURE] = (self.resists[DamageType.NATURE] or 0) + 3
 		self.inc_damage[DamageType.NATURE] = (self.inc_damage[DamageType.NATURE] or 0) + 4
@@ -141,7 +141,7 @@ newTalent{
 		self:project(tg, x, y, function(px, py)
 			local target = game.level.map(px, py, Map.ACTOR)
 			if target and target:canBe("poison") then
-				target:setEffect(self.EFF_CRIPPLING_POISON, 6, {src=self, power=dam/6, fail=math.ceil(self:combatTalentLimit(t, 100, 10, 20))})
+				target:setEffect(self.EFF_CRIPPLING_POISON, 6, {src=self, power=dam/6, fail=math.ceil(self:combatTalentLimit(t, 100, 15, 30))})
 			end
 		end)
 
@@ -169,8 +169,8 @@ newTalent{
 	require = gifts_req_high3,
 	points = 5,
 	mode = "passive",
-	resistKnockback = function(self, t) return self:combatTalentLimit(t, 1, .17, .5) end, -- Limit < 100%
-	resistBlindStun = function(self, t) return self:combatTalentLimit(t, 1, .07, .25) end, -- Limit < 100%
+	resistKnockback = function(self, t) return self:combatTalentLimit(t, 1, .2, .5) end, -- Limit < 100%
+	resistBlindStun = function(self, t) return self:combatTalentLimit(t, 1, .1, .25) end, -- Limit < 100%
 	passives = function(self, t, p)
 		self:talentTemporaryValue(p, "knockback_immune", t.resistKnockback(self, t))
 		self:talentTemporaryValue(p, "stun_immune", t.resistBlindStun(self, t))
@@ -189,9 +189,9 @@ newTalent{
 	points = 5,
 	mode = "passive",
 	no_npc_use = true, -- breaths are high damage on rares already; should really change this to be less binary in general, this is weird design
-	getDamageIncrease = function(self, t) return self:combatTalentLimit(t, 50, 5, 15) end, -- Limit < 50%
+	getDamageIncrease = function(self, t) return self:combatTalentLimit(t, 50, 8, 20) end, -- Limit < 50%
 	getResists = function(self, t) return self:combatTalentScale(t, 0.6, 2.5) end,
-	getResistPen = function(self, t) return self:combatTalentLimit(t, 50, 5, 15) end, -- Limit < 50%
+	getResistPen = function(self, t) return self:combatTalentLimit(t, 50, 12, 30) end, -- Limit < 50%
 	passives = function(self, t, p)
 		local dam_inc = t.getDamageIncrease(self, t)
 		local resists = t.getResists(self, t)
diff --git a/game/modules/tome/data/talents/gifts/mindstar-mastery.lua b/game/modules/tome/data/talents/gifts/mindstar-mastery.lua
index 3f8a4534a55060c1dbbfcddbbb144161ee55e7cc..16f138d38a8e0a03f15ced0d38a56c95650c83cd 100644
--- a/game/modules/tome/data/talents/gifts/mindstar-mastery.lua
+++ b/game/modules/tome/data/talents/gifts/mindstar-mastery.lua
@@ -88,7 +88,7 @@ newTalent{
 	tactical = { ATTACK = 2, DISABLE = 2 },
 	target = function(self, t) return {type="hit", range=self:getTalentRange(t)} end,
 	on_pre_use = function(self, t, silent) if not self:hasPsiblades(true, false) then if not silent then game.logPlayer(self, "You require a psiblade in your mainhand to use this talent.") end return false end return true end,
-	speedPenalty = function(self, t) return self:combatTalentLimit(t, 1, 0.18, 0.23) end,
+	speedPenalty = function(self, t) return self:combatTalentLimit(t, 1, 0.2, 0.45) end,
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
 		local x, y, target = self:getTarget(tg)
diff --git a/game/modules/tome/data/talents/gifts/moss.lua b/game/modules/tome/data/talents/gifts/moss.lua
index 6ad9228145be54c99f46e261a2bbcdb6ea26b2fb..a10fff587e899bd0d82b28bb5ac6cf85e662752b 100644
--- a/game/modules/tome/data/talents/gifts/moss.lua
+++ b/game/modules/tome/data/talents/gifts/moss.lua
@@ -35,7 +35,7 @@ newTalent{
 	no_energy = true,
 	tactical = { ATTACKAREA = {NATURE=1}, DISABLE = {pin = 1} },
 	getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end,
-	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 8)) end, -- Limit < 16
+	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 10)) end, -- Limit < 16
 	getSlow = function(self, t) return math.ceil(self:combatTalentLimit(t, 100, 36, 60)) end, -- Limit < 100%
 	getPin = function(self, t) return math.ceil(self:combatTalentLimit(t, 100, 25, 45)) end, -- Limit < 100%
 	range = 0,
@@ -86,7 +86,7 @@ newTalent{
 	tactical = { ATTACKAREA = {NATURE=1}, HEAL = 1 },
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end,
-	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 8)) end, -- Limit < 16
+	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 10)) end, -- Limit < 16
 	getHeal = function(self, t) return math.floor(self:combatTalentLimit(t, 200, 62, 110)) end, -- Limit < 200%	
 	range = 0,
 	radius = function(self, t)
@@ -134,8 +134,8 @@ newTalent{
 	no_energy = true,
 	tactical = { ATTACKAREA = {NATURE=1}, DISABLE = 2 },
 	getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end,
-	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 8)) end, -- Limit < 16
-	getFail = function(self, t) return self:combatTalentLimit(t, 50, 19, 35) end, -- Limit < 50%
+	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 10)) end, -- Limit < 16
+	getFail = function(self, t) return self:combatTalentLimit(t, 50, 20, 35) end, -- Limit < 50%
 	range = 0,
 	radius = function(self, t)
 		return math.floor(self:combatTalentScale(t,2.5, 4.5, nil, 0, 0, true)) 
@@ -182,7 +182,7 @@ newTalent{
 	no_energy = true,
 	tactical = { ATTACKAREA = {NATURE=1}, DISABLE = {confusion = 1} },
 	getDamage = function(self, t) return self:combatTalentMindDamage(t, 6, 40) end,
-	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 8)) end, -- Limit < 16
+	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 16, 4, 10)) end, -- Limit < 16
 	getChance = function(self, t) return math.ceil(self:combatTalentLimit(t, 100, 25.5, 47.5)) end, -- Limit < 100%
 	getPower = function(self, t) return math.max(0,self:combatTalentLimit(t, 50, 20, 40)) end, -- Limit < 50%
 	range = 0,
diff --git a/game/modules/tome/data/talents/gifts/mucus.lua b/game/modules/tome/data/talents/gifts/mucus.lua
index bf888fb347253d4117f70ee3e265055ef0555312..253c2d3856fd2c7899e1fe2eff9f14760dbc5aaf 100644
--- a/game/modules/tome/data/talents/gifts/mucus.lua
+++ b/game/modules/tome/data/talents/gifts/mucus.lua
@@ -37,7 +37,7 @@ newTalent{
 			if self:getTalentLevel(t)>=4 then return {NATURE = 1 } end
 		end
 	},
-	getDur = function(self, t) return math.floor(self:combatTalentLimit(t, 20, 4, 6.5)) end, -- Limit < 20
+	getDur = function(self, t) return math.floor(self:combatTalentLimit(t, 20, 4, 8)) end, -- Limit < 20
 	getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 50) end,
 	-- note meditation recovery: local pt = 2 + self:combatTalentMindDamage(t, 20, 120) / 10 = O(<1)
 	getEqui = function(self, t) return self:combatTalentMindDamage(t, 2, 8) end,
diff --git a/game/modules/tome/data/talents/gifts/ooze.lua b/game/modules/tome/data/talents/gifts/ooze.lua
index b6ad511097252abda9f448c42fd0ba4b43821c9b..3a93b9114cb3abbf2215f9f466ffaf9f1401df18 100644
--- a/game/modules/tome/data/talents/gifts/ooze.lua
+++ b/game/modules/tome/data/talents/gifts/ooze.lua
@@ -31,11 +31,11 @@ newTalent{
 		end
 	},
 	getMaxHP = function(self, t) return
-		50 + self:combatTalentMindDamage(t, 30, 250) + self.max_life * self:combatTalentLimit(t, 0.25, .025, .1)
+		50 + self:combatTalentMindDamage(t, 30, 250) + self.max_life * self:combatTalentLimit(t, 0.25, .035, .125)
 	end,
-	getMax = function(self, t) local _, _, max = checkMaxSummon(self, true) return math.min(max, math.max(1, math.floor(self:combatTalentLimit(t, 6, 1, 3.1)))) end, --Limit < 6
+	getMax = function(self, t) local _, _, max = checkMaxSummon(self, true) return math.min(max, math.max(1, math.floor(self:combatTalentLimit(t, 6, 1.1, 4.1)))) end, --Limit < 6
 	getChance = function(self, t) return self:combatLimit(self:combatTalentStatDamage(t, "cun", 10, 400), 100, 20, 0, 61, 234) end, -- Limit < 100%
-	getOozeResist = function(self, t) return self:combatTalentLimit(t, 70, 15, 30) end, --Limit < 70%
+	getOozeResist = function(self, t) return self:combatTalentLimit(t, 70, 15, 35) end, --Limit < 70%
 	getSummonTime = function(self, t) return math.floor(self:combatTalentScale(t, 6, 10)) end,
 	-- called in mod.class.Actor.onTakeHit
 	spawn = function(self, t, life)
@@ -252,7 +252,7 @@ newTalent{
 	mode = "passive",
 	--compare to lethality: self:combatTalentScale(t, 7.5, 25, 0.75)
 	critResist = function(self, t) return self:combatTalentScale(t, 15, 50, 0.75) end,
-	immunities = function(self, t) return self:combatTalentLimit(t, 1, 0.2, 0.7) end, -- Limit < 100% immunities
+	immunities = function(self, t) return self:combatTalentLimit(t, 1, 0.25, 0.65) end, -- Limit < 100% immunities
 	passives = function(self, t, p)
 		self:talentTemporaryValue(p, "blind_immune", t.immunities(self, t))
 		self:talentTemporaryValue(p, "poison_immune", t.immunities(self, t))
diff --git a/game/modules/tome/data/talents/gifts/oozing-blades.lua b/game/modules/tome/data/talents/gifts/oozing-blades.lua
index 7b8069790fe3ca88d58cbd5376625508ad82c13e..79d66d418b8f3fab3686f7e93313767dbf714cb9 100644
--- a/game/modules/tome/data/talents/gifts/oozing-blades.lua
+++ b/game/modules/tome/data/talents/gifts/oozing-blades.lua
@@ -96,8 +96,8 @@ newTalent{
 	tactical = { DISABLE = 2 },
 	requires_target = true,
 	getChance = function(self, t) return math.max(0, self:combatLimit(self:combatTalentMindDamage(t, 10, 70), 100, 39, 9, 86, 56)) end, -- Limit < 100%
-	getNb = function(self, t) return math.ceil(self:combatTalentLimit(t, 4, 1, 2)) end,
-	getTurns = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 2, 6)) end,
+	getNb = function(self, t) return math.ceil(self:combatTalentLimit(t, 4, .9, 3.1)) end,
+	getTurns = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 3, 6.5)) end,
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
@@ -135,8 +135,8 @@ newTalent{
 		return main and off
 	end,
 	tactical = { BUFF = 2 },
-	getResistPenalty = function(self, t) return self:combatTalentLimit(t, 100, 15, 50) end, -- Limit < 100%
-	getChance = function(self, t) return math.max(0,self:combatTalentLimit(t, 100, 14, 70)) end, -- Limit < 100%
+	getResistPenalty = function(self, t) return self:combatTalentLimit(t, 100, 20, 50) end, -- Limit < 100%
+	getChance = function(self, t) return math.max(0,self:combatTalentLimit(t, 70, 25, 55)) end, -- Limit < 100%
 	freespit = function(self, t, target)
 		if game.party:hasMember(self) then
 			for act, def in pairs(game.party.members) do
diff --git a/game/modules/tome/data/talents/gifts/sand-drake.lua b/game/modules/tome/data/talents/gifts/sand-drake.lua
index 4b95879ffa0dce2ee652fa305aa609834a900ad5..dcd54e06b78f6ce22f6afe4949c994f76d729b6b 100644
--- a/game/modules/tome/data/talents/gifts/sand-drake.lua
+++ b/game/modules/tome/data/talents/gifts/sand-drake.lua
@@ -23,7 +23,7 @@ newTalent{
 	require = gifts_req1,
 	points = 5,
 	equilibrium = 4,
-	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 4, 10, 7)) end,
+	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 4, 10, 5.9)) end,
 	range = 1,
 	no_message = true,
 	tactical = { ATTACK = { weapon = 1 }, EQUILIBRIUM = 0.5},
diff --git a/game/modules/tome/data/talents/gifts/slime.lua b/game/modules/tome/data/talents/gifts/slime.lua
index 96c369386d274d8b1cbefc540b799c5097cd66db..948164525f311e9e806437a81210984ebe82adf1 100644
--- a/game/modules/tome/data/talents/gifts/slime.lua
+++ b/game/modules/tome/data/talents/gifts/slime.lua
@@ -30,7 +30,7 @@ newTalent{
 	proj_speed = 6,
 	requires_target = true,
 	getTargetCount = function(self, t) return math.floor(self:combatTalentScale(t, 1, 5, "log")) end,
-	bouncePercent = function(self, t) return self:combatTalentLimit(t, 100, 50, 60) end, --Limit < 100%
+	bouncePercent = function(self, t) return self:combatTalentLimit(t, 100, 45, 70) end, --Limit < 100%
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), selffire=false, talent=t, display={particle="bolt_slime"}, name = t.name, speed = t.proj_speed}
 		local x, y = self:getTarget(tg)
@@ -73,9 +73,9 @@ newTalent{
 				local defaults = {target.EFF_SPYDRIC_POISON, target.EFF_INSIDIOUS_POISON, target.EFF_CRIPPLING_POISON, target.EFF_NUMBING_POISON}
 				local poison = rng.table(self.poisonous_spores_list or defaults)
 				target:setEffect(poison, 10, {src=self, power=dam/10, 
-				reduce=self:combatTalentLimit(t, 100, 12, 20), 
-				fail=math.ceil(self:combatTalentLimit(t, 100, 6, 10)),
-				heal_factor=self:combatTalentLimit(t, 100, 24, 40)})
+				reduce=self:combatTalentLimit(t, 100, 12.5, 25), 
+				fail=math.ceil(self:combatTalentLimit(t, 100, 7, 12)),
+				heal_factor=self:combatTalentLimit(t, 100, 25, 40)})
 			end
 		end, 0, {type="slime"})
 
@@ -103,7 +103,7 @@ newTalent{
 	range = 1,
 	requires_target = false,
 	tactical = { DEFEND = 1 },
-	getChance = function(self, t) return self:combatTalentLimit(t, 100, 7, 15) end, -- Limit < 100%
+	getChance = function(self, t) return self:combatTalentLimit(t, 100, 7, 18) end, -- Limit < 100%
 	getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 50) end,
 	activate = function(self, t)
 		game:playSoundNear(self, "talents/slime")
diff --git a/game/modules/tome/data/talents/gifts/summon-advanced.lua b/game/modules/tome/data/talents/gifts/summon-advanced.lua
index 5241a0f9611bad80120f03182bf945a65395fb1a..74094d2d60c4e06667cb1dee0460cc258d43f92b 100644
--- a/game/modules/tome/data/talents/gifts/summon-advanced.lua
+++ b/game/modules/tome/data/talents/gifts/summon-advanced.lua
@@ -94,7 +94,7 @@ newTalent{
 	mode = "passive",
 	points = 5,
 	getChance = function(self, t) return math.min(100, 30 + self:getTalentLevel(t) * 15) end,
-	getReduction = function(self, t) return math.floor(self:combatTalentLimit(t, 5, 1, 3.1)) end, -- Limit < 5
+	getReduction = function(self, t) return math.floor(self:combatTalentLimit(t, 5, 1.5, 4.1)) end, -- Limit < 5
 	info = function(self, t)
 		return ([[While Master Summoner is active, each new summon will reduce the remaining cooldown of Pheromones, Detonate and Wild Summon.
 		%d%% chance to reduce them by %d.]]):tformat(t.getChance(self, t), t.getReduction(self, t))
@@ -114,7 +114,7 @@ newTalent{
 	on_pre_use = function(self, t, silent)
 		return self:isTalentActive(self.T_MASTER_SUMMONER)
 	end,
-	duration = function(self, t) return math.floor(self:combatTalentLimit(t, 15, 1, 6)) end, -- Limit <25
+	duration = function(self, t) return math.floor(self:combatTalentLimit(t, 15, 3, 7)) end, -- Limit <15
 	action = function(self, t)
 		self:setEffect(self.EFF_WILD_SUMMON, t.duration(self,t), {chance=100})
 		game:playSoundNear(self, "talents/teleport")
diff --git a/game/modules/tome/data/talents/gifts/summon-augmentation.lua b/game/modules/tome/data/talents/gifts/summon-augmentation.lua
index 45c927af77daa313a5f49d34f4000bf4e4f007e7..274edf43af38586e48942d7445bca4d59490aa93 100644
--- a/game/modules/tome/data/talents/gifts/summon-augmentation.lua
+++ b/game/modules/tome/data/talents/gifts/summon-augmentation.lua
@@ -73,8 +73,8 @@ newTalent{
 	explodeFire = function(self,t) return self:combatTalentMindDamage(t, 30, 120) end,
 	hydraAffinity = function(self,t) return self:combatTalentLimit(t, 50, 15, 40) end,
 	hydraRegen = function(self,t) return self:combatTalentMindDamage (t, 8, 40) end,
-	jellySlow = function(self,t) return self:combatTalentLimit(t, 0.60, 0.10, 0.35) end,
-	minotaurConfuse = function(self,t) return self:combatTalentLimit(t, 50, 15, 35) end,
+	jellySlow = function(self,t) return self:combatTalentLimit(t, 0.60, 0.25, 0.48) end,
+	minotaurConfuse = function(self,t) return self:combatTalentLimit(t, 50, 20, 35) end,
 	golemArmour = function(self,t) return self:combatTalentScale(t, 15, 33) end,
 	golemHardiness = function(self,t) return 15 + self:getTalentLevelRaw(t)*10 end,
 	shellShielding = function(self,t) return self:combatTalentMindDamage(t, 10, 35) end,
@@ -131,8 +131,8 @@ newTalent{
 	require = gifts_req3,
 	mode = "passive",
 	points = 5,
-	incLife = function(self, t) return self:combatTalentLimit(t, 1, 0.05, 0.20) end,
-	incDur = function(self, t) return math.floor(self:combatTalentLimit(t, 6, 1, 2.8)) end,
+	incLife = function(self, t) return self:combatTalentLimit(t, 1, 0.125, 0.25) end,
+	incDur = function(self, t) return math.floor(self:combatTalentLimit(t, 6, 2, 5)) end,
 	info = function(self, t)
 		return ([[Increases all your summons' max life by %0.1f%% and extends your summons' maximum lifetime by %d turns.]]):tformat(100*t.incLife(self, t), t.incDur(self,t))
 	end,
diff --git a/game/modules/tome/data/talents/gifts/summon-utility.lua b/game/modules/tome/data/talents/gifts/summon-utility.lua
index 668acae23d56d83a5e39ffb68f22e797cf06942d..257b06da5f738160c9eb3816a249067e804a7576 100644
--- a/game/modules/tome/data/talents/gifts/summon-utility.lua
+++ b/game/modules/tome/data/talents/gifts/summon-utility.lua
@@ -339,8 +339,8 @@ newTalent{
 	on_pre_use_ai = aiSummonPreUse,
 	aiSummonGrid = aiSummonGridRanged,
 	tactical = { BUFF = 0.2 },
-	getReduc = function(self, t) return self:combatTalentLimit(t, 85, 25, 70)  end, -- Limit <85%
-	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 25, 2.7, 5.6)) end, -- Limit <25
+	getReduc = function(self, t) return self:combatTalentLimit(t, 85, 35, 65)  end, -- Limit <85%
+	getDuration = function(self, t) return math.floor(self:combatTalentLimit(t, 25, 3.5, 6.5)) end, -- Limit <25
 	action = function(self, t)
 		self:setEffect(self.EFF_FRANTIC_SUMMONING, t.getDuration(self, t), {power=t.getReduc(self, t)})
 		return true
diff --git a/game/modules/tome/data/talents/gifts/venom-drake.lua b/game/modules/tome/data/talents/gifts/venom-drake.lua
index 8def01b0c56ff0ba09b3ce057787c3954d71bfc3..e14eb6e97c8f7ef9ec08c4ae382213bc09bc0849 100644
--- a/game/modules/tome/data/talents/gifts/venom-drake.lua
+++ b/game/modules/tome/data/talents/gifts/venom-drake.lua
@@ -25,7 +25,7 @@ newTalent{
 	random_ego = "attack",
 	message = _t"@Source@ spits acid!",
 	equilibrium = 3,
-	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 3, 6.9, 5.5)) end, -- Limit >=3
+	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 3, 6.9, 4)) end, -- Limit >=3
 	tactical = { ATTACK = { ACID = 2 } },
 	range = function(self, t) return math.floor(self:combatTalentScale(t, 5.5, 7.5)) end,
 	on_learn = function(self, t)