diff --git a/game/modules/tome/data/talents/gifts/summon-advanced.lua b/game/modules/tome/data/talents/gifts/summon-advanced.lua
index 8a1b6b31d5cff72c34e77d0f62d0b9ebff202928..7e8af391834d410c3c1f4151a704c440c9dfd582 100644
--- a/game/modules/tome/data/talents/gifts/summon-advanced.lua
+++ b/game/modules/tome/data/talents/gifts/summon-advanced.lua
@@ -125,16 +125,17 @@ newTalent{
 		return ([[For %d turn(s), you have 100%% chance that your summons appear as a wild version.
 		Each turn the chance disminishes.
 		Wild creatures have one more talent/power than the base versions:
-		- Ritch Flamespitter: sends a blast of flames around it, knocking foes away
-		- Hydra: Can disengage from melee range
-		- Rimebark: Becomes more resistant to magic damage
+		- Ritch Flamespitter: Can fly in the air, spitting its Flamespit past creatures in the path of its target
+		- Hydra: Can concentrate its breath into spits when allies would be caught in a breath, instead spitting a bolt
+		- Rimebark: Can better control its icestorm, no longer damaging or freezing allies caught within
 		- Fire Drake: Can emit a powerful roar to silence its foes
-		- War Hound: Can rage, inreasing its critical chance and armour penetration
-		- Jelly: Can swallow foes that are low on life, regenerating your equilibrium
+		- War Hound: Can rage, inreasing its critical chance and gaining armour penetration
+		- Jelly: Can split into an additional jelly upon taking a large hit (jellies formed by splitting do not count against your summon cap)
 		- Minotaur: Can rush toward its target
-		- Stone Golem: Melee blows can deal a small area of effect damage
+		- Stone Golem: Can deal a small area of effect damage with melee blows
 		- Turtle: Can force all foes in a radius into melee range
 		- Spider: Can project an insidious poison at its foes, reducing their healing
-		This talent requires Master Summoner to be active to be used.]]):format(t.duration(self,t))
+		This talent requires Master Summoner to be active to be used.
+		Effects scale with levels in summon talents.]]):format(t.duration(self,t))
 	end,
 }
diff --git a/game/modules/tome/data/talents/gifts/summon-distance.lua b/game/modules/tome/data/talents/gifts/summon-distance.lua
index 3631f4ad0039b908d84a34b3eaaf8b6eb739a686..1accfb3c1902f1a6b2748fb7431d907777bc2e34 100644
--- a/game/modules/tome/data/talents/gifts/summon-distance.lua
+++ b/game/modules/tome/data/talents/gifts/summon-distance.lua
@@ -41,6 +41,32 @@ newTalent{ short_name = "RITCH_FLAMESPITTER_BOLT",
 	end,
 }
 
+newTalent{ short_name = "WILD_RITCH_FLAMESPITTER_BOLT",
+	name = "Flamespit",
+	type = {"wild-gift/other",1},
+	points = 5,
+	equilibrium = 2,
+	message = "@Source@ spits flames!",
+	range = 10,
+	reflectable = true,
+	requires_target = true,
+	direct_hit = true,
+	tactical = { ATTACK = { FIRE = 2 } },
+	action = function(self, t)
+		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
+		local x, y = self:getTarget(tg)
+		if not x or not y then return nil end
+		self:project(tg, x, y, DamageType.FIRE, self:mindCrit(self:combatTalentMindDamage(t, 8, 120)), {type="flame"})
+		game:playSoundNear(self, "talents/fire")
+		return true
+	end,
+	info = function(self, t)
+		return ([[Spits a bolt of fire, doing %0.2f fire damage.
+		The damage will increase with your Mindpower.]]):format(damDesc(self, DamageType.FIRE, self:combatTalentMindDamage(t, 8, 120)))
+	end,
+}
+
+--No longer on summons but is still used by ants
 newTalent{
 	name = "Flame Fury", image = "talents/blastwave.png",
 	type = {"wild-gift/other",1},
@@ -93,6 +119,8 @@ newTalent{
 		self:project(tg, x, y, DamageType.ACID, self:mindCrit(self:combatTalentStatDamage(t, "wil", 30, 430)))
 		game.level.map:particleEmitter(self.x, self.y, tg.radius, "breath_acid", {radius=tg.radius, tx=x-self.x, ty=y-self.y})
 		game:playSoundNear(self, "talents/breath")
+		
+		self:startTalentCooldown(self.T_ACID_SPIT_HYDRA, 8)
 		return true
 	end,
 	info = function(self, t)
@@ -101,6 +129,36 @@ newTalent{
 	end,
 }
 
+newTalent{
+	name = "Acid Spit", short_name = "ACID_SPIT_HYDRA",
+	type = {"wild-gift/other",1},
+	require = gifts_req1,
+	points = 5,
+	equilibrium = 10,
+	cooldown = 8,
+	message = "@Source@ spits acid!",
+	tactical = { ATTACK = { ACID = 2 } },
+	range = 5,
+	requires_target = true,
+	target = function(self, t)
+		return {type="bolt", range=self:getTalentRange(t), talent=t}
+	end,
+	action = function(self, t)
+		local tg = self:getTalentTarget(t)
+		local x, y = self:getTarget(tg)
+		if not x or not y then return nil end
+		self:project(tg, x, y, DamageType.ACID, self:mindCrit(self:combatTalentStatDamage(t, "wil", 30, 430)), {type="acid"})
+		game:playSoundNear(self, "talents/breath")
+		
+		self:startTalentCooldown(self.T_ACID_BREATH, 8)
+		return true
+	end,
+	info = function(self, t)
+		return ([[Spit acid on a foe, doing %0.2f damage.
+		The damage will increase with your Willpower.]]):format(damDesc(self, DamageType.ACID, self:combatTalentStatDamage(t, "wil", 30, 430)))
+	end,
+}
+
 newTalent{
 	name = "Lightning Breath", short_name = "LIGHTNING_BREATH_HYDRA", image = "talents/lightning_breath.png",
 	type = {"wild-gift/other",1},
@@ -126,6 +184,8 @@ newTalent{
 		else game.level.map:particleEmitter(self.x, self.y, tg.radius, "breath_lightning", {radius=tg.radius, tx=x-self.x, ty=y-self.y})
 		end
 		game:playSoundNear(self, "talents/lightning")
+		
+		self:startTalentCooldown(self.T_LIGHTNING_SPIT_HYDRA, 8)
 		return true
 	end,
 	info = function(self, t)
@@ -138,6 +198,41 @@ newTalent{
 	end,
 }
 
+newTalent{
+	name = "Lightning Spit", short_name = "LIGHTNING_SPIT_HYDRA", image = "talents/lightning_breath.png",
+	type = {"wild-gift/other",1},
+	require = gifts_req1,
+	points = 5,
+	equilibrium = 10,
+	cooldown = 8,
+	message = "@Source@ spits lightning!",
+	tactical = { ATTACK = { LIGHTNING = 2 } },
+	range = 5,
+	requires_target = true,
+	target = function(self, t)
+		return {type="bolt", range=self:getTalentRange(t), talent=t}
+	end,
+	action = function(self, t)
+		local tg = self:getTalentTarget(t)
+		local x, y = self:getTarget(tg)
+		if not x or not y then return nil end
+		local dam = self:combatTalentStatDamage(t, "wil", 30, 500)
+		self:project(tg, x, y, DamageType.LIGHTNING, self:mindCrit(rng.avg(dam / 3, dam, 3)), {type="lightning_explosion"})
+		game:playSoundNear(self, "talents/lightning")
+		
+		self:startTalentCooldown(self.T_LIGHTNING_BREATH_HYDRA, 8)
+		return true
+	end,
+	info = function(self, t)
+		return ([[Spit lightning on your foe, doing %d to %d damage.
+		The damage will increase with your Willpower.]]):
+		format(
+			damDesc(self, DamageType.LIGHTNING, (self:combatTalentStatDamage(t, "wil", 30, 500)) / 3),
+			damDesc(self, DamageType.LIGHTNING, self:combatTalentStatDamage(t, "wil", 30, 500))
+		)
+	end,
+}
+
 newTalent{
 	name = "Poison Breath",
 	type = {"wild-gift/other",1},
@@ -160,6 +255,8 @@ newTalent{
 		self:project(tg, x, y, DamageType.POISON, {dam=self:mindCrit(self:combatTalentStatDamage(t, "wil", 30, 460)), apply_power=self:combatMindpower()})
 		game.level.map:particleEmitter(self.x, self.y, tg.radius, "breath_slime", {radius=tg.radius, tx=x-self.x, ty=y-self.y})
 		game:playSoundNear(self, "talents/breath")
+		
+		self:startTalentCooldown(self.T_POISON_SPIT_HYDRA, 8)
 		return true
 	end,
 	info = function(self, t)
@@ -168,6 +265,36 @@ newTalent{
 	end,
 }
 
+newTalent{
+	name = "Poison Spit", short_name = "POISON_SPIT_HYDRA",
+	type = {"wild-gift/other",1},
+	require = gifts_req1,
+	points = 5,
+	equilibrium = 10,
+	cooldown = 8,
+	message = "@Source@ spits poison!",
+	tactical = { ATTACK = { NATURE = 1, poison = 1 } },
+	range = 5,
+	requires_target = true,
+	target = function(self, t)
+		return {type="bolt", range=self:getTalentRange(t), talent=t}
+	end,
+	action = function(self, t)
+		local tg = self:getTalentTarget(t)
+		local x, y = self:getTarget(tg)
+		if not x or not y then return nil end
+		self:project(tg, x, y, DamageType.POISON, {dam=self:mindCrit(self:combatTalentStatDamage(t, "wil", 30, 460)), apply_power=self:combatMindpower(), {type="slime"}})
+		game:playSoundNear(self, "talents/breath")
+		
+		self:startTalentCooldown(self.T_POISON_BREATH, 8)
+		return true
+	end,
+	info = function(self, t)
+		return ([[Spit poison on your foes, doing %d damage over a few turns.
+		The damage will increase with your Willpower.]]):format(damDesc(self, DamageType.NATURE, self:combatTalentStatDamage(t, "wil", 30, 460)))
+	end,
+}
+
 newTalent{
 	name = "Winter's Fury",
 	type = {"wild-gift/other",1},
@@ -210,6 +337,49 @@ newTalent{
 	end,
 }
 
+newTalent{
+	name = "Winter's Fury", short_name="WILD_WINTER_S_FURY",
+	type = {"wild-gift/other",1},
+	require = gifts_req4,
+	points = 5,
+	equilibrium = 10,
+	cooldown = 4,
+	tactical = { ATTACKAREA = { COLD = 2 }, DISABLE = { stun = 1 } },
+	range = 0,
+	radius = 3,
+	target = function(self, t)
+		return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false}
+	end,
+	getDamage = function(self, t) return self:combatTalentStatDamage(t, "wil", 30, 120) end,
+	getDuration = function(self, t) return 4 end,
+	action = function(self, t)
+		-- Add a lasting map effect
+		game.level.map:addEffect(self,
+			self.x, self.y, t.getDuration(self, t),
+			DamageType.ICE, t.getDamage(self,t),
+			3,
+			5, nil,
+			{type="icestorm", only_one=true},
+			function(e)
+				e.x = e.src.x
+				e.y = e.src.y
+				return true
+			end,
+			false,
+			false --param for friendlyfire 
+		)
+		game:playSoundNear(self, "talents/ice")
+		return true
+	end,
+	info = function(self, t)
+		local damage = t.getDamage(self, t)
+		local duration = t.getDuration(self, t)
+		return ([[A furious yet well controlled ice storm rages around the user doing %0.2f cold damage in a radius of 3 to hostile targets each turn for %d turns.
+		It has 25%% chance to freeze damaged targets.
+		The damage and duration will increase with your Willpower.]]):format(damDesc(self, DamageType.COLD, damage), duration)
+	end,
+}
+
 newTalent{
 	name = "Ritch Flamespitter",
 	type = {"wild-gift/summon-distance", 1},
@@ -240,8 +410,7 @@ newTalent{
 	on_arrival = function(self, t, m)
 		local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y}
 		local duration = self:callTalent(self.T_GRAND_ARRIVAL, "effectDuration")
-		local reduction = self:callTalent(self.T_GRAND_ARRIVAL, "resReduction")
-		self:project(tg, m.x, m.y, DamageType.TEMP_EFFECT, {foes=true, eff=self.EFF_LOWER_FIRE_RESIST, dur=duration, p={power=reduction}})
+		self:project(tg, m.x, m.y, DamageType.TEMP_EFFECT, {foes=true, eff=self.EFF_LOWER_FIRE_RESIST, dur=duration, p={power=self:combatTalentMindDamage(t, 15, 70)}})
 		game.level.map:particleEmitter(m.x, m.y, tg.radius, "ball_fire", {radius=tg.radius})
 	end,
 	incStats = function(self, t, fake)
@@ -301,7 +470,7 @@ newTalent{
 		}
 		if self:attr("wild_summon") and rng.percent(self:attr("wild_summon")) then
 			m.name = m.name.." (wild summon)"
-			m[#m+1] = resolvers.talents{ [self.T_FLAME_FURY]=self:getTalentLevelRaw(t) }
+			m[#m] = resolvers.talents{ [self.T_WILD_RITCH_FLAMESPITTER_BOLT]=self:getTalentLevelRaw(t) }
 		end
 		setupSummon(self, m, x, y)
 		game:playSoundNear(self, "talents/spell_generic")
@@ -345,10 +514,9 @@ newTalent{
 	end,
 	on_arrival = function(self, t, m)
 		local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y}
-		local poisonDmg = self:callTalent(self.T_GRAND_ARRIVAL, "poisonDamage")
 		game.level.map:addEffect(self,
 			m.x, m.y, self:callTalent(self.T_GRAND_ARRIVAL,"effectDuration"),
-			DamageType.POISON, {dam=poisonDmg, apply_power=self:combatMindpower()},
+			DamageType.POISON, {dam=self:combatTalentMindDamage(t, 10, 60), apply_power=self:combatMindpower()},
 			self:getTalentRadius(t),
 			5, nil,
 			MapEffect.new{color_br=255, color_bg=255, color_bb=255, effect_shader="shader_images/poison_effect.png"},
@@ -413,7 +581,9 @@ newTalent{
 		}
 		if self:attr("wild_summon") and rng.percent(self:attr("wild_summon")) then
 			m.name = m.name.." (wild summon)"
-			m[#m+1] = resolvers.talents{ [self.T_DISENGAGE]=self:getTalentLevelRaw(t) }
+			m[#m+1] = resolvers.talents{ [self.T_LIGHTNING_SPIT_HYDRA]=self:getTalentLevelRaw(t) }
+			m[#m+1] = resolvers.talents{ [self.T_ACID_SPIT_HYDRA]=self:getTalentLevelRaw(t) }
+			m[#m+1] = resolvers.talents{ [self.T_POISON_SPIT_HYDRA]=self:getTalentLevelRaw(t) }
 		end
 		setupSummon(self, m, x, y)
 		game:playSoundNear(self, "talents/spell_generic")
@@ -458,8 +628,7 @@ newTalent{
 	on_arrival = function(self, t, m)
 		local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y}
 		local duration = self:callTalent(self.T_GRAND_ARRIVAL,"effectDuration")
-		local reduction = self:callTalent(self.T_GRAND_ARRIVAL,"resReduction")
-		self:project(tg, m.x, m.y, DamageType.TEMP_EFFECT, {foes=true, eff=self.EFF_LOWER_COLD_RESIST, dur=duration, p={power=reduction}}, {type="flame"})
+		self:project(tg, m.x, m.y, DamageType.TEMP_EFFECT, {foes=true, eff=self.EFF_LOWER_COLD_RESIST, dur=duration, p={power=self:combatTalentMindDamage(t, 15, 70)}}, {type="flame"})
 	end,
 	summonTime = function(self, t) return math.floor(self:combatScale(self:getTalentLevel(t) + self:getTalentLevel(self.T_RESILIENCE), 5, 0, 10, 5)) end,
 	incStats = function(self, t,fake)
@@ -520,7 +689,7 @@ newTalent{
 		}
 		if self:attr("wild_summon") and rng.percent(self:attr("wild_summon")) then
 			m.name = m.name.." (wild summon)"
-			m[#m+1] = resolvers.talents{ [self.T_RESOLVE]=self:getTalentLevelRaw(t) }
+			m[#m] = resolvers.talents{ [self.T_WILD_WINTER_S_FURY]=self:getTalentLevelRaw(t) }
 		end
 		setupSummon(self, m, x, y)
 		game:playSoundNear(self, "talents/spell_generic")
diff --git a/game/modules/tome/data/talents/gifts/summon-melee.lua b/game/modules/tome/data/talents/gifts/summon-melee.lua
index 2d19dafa441deaf290f3fcb06ae1bf1152431c2f..521997d37a5ec4e29222893e30dddcbf0cb068f8 100644
--- a/game/modules/tome/data/talents/gifts/summon-melee.lua
+++ b/game/modules/tome/data/talents/gifts/summon-melee.lua
@@ -17,6 +17,61 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
+newTalent{
+	name = "Jelly Spread", short_name = "JELLY_PBAOE",
+	type = {"wild-gift/other",1},
+	points = 5,
+	equilibrium = 10,
+	message = "@source@ oozes over the ground!!",
+	cooldown = 15,
+	tactical = { ATTACKAREA = { SLIME = 4} },
+	range = 0,
+	radius = 1,
+	target = function(self, t)
+		return {type="ball", range=0, radius=1, selffire=false}
+	end,
+	getDamage = function(self, t) return self:combatTalentStatDamage(t, "con", 40, 140) end,
+	getDuration = function(self, t) return 4 end,
+	action = function(self, t)
+		-- Add a lasting map effect
+		game.level.map:addEffect(self,
+			self.x, self.y, t.getDuration(self, t),
+			DamageType.NATURE, t.getDamage(self, t),
+			1,
+			5, nil,
+			MapEffect.new{color_br=25, color_bg=140, color_bb=40, effect_shader="shader_images/retch_effect.png"},
+				function(e, update_shape_only)
+					if not update_shape_only then e.radius = e.radius end
+					return true
+				end,
+			false,
+			false
+		)
+		game:playSoundNear(self, "talents/slime")
+		return true
+	end,
+	info = function(self, t)
+		local damage = t.getDamage(self, t)
+		local duration = t.getDuration(self, t)
+		return ([[Ooze over the floor, spreading caustic jelly in a radius of 1 lasting %d turns and dealing %d nature damage per turn to hostile creatures caught within.]]):format(duration, damDesc(self, DamageType.NATURE, damage))
+	end,
+}
+
+newTalent{
+	name = "Mitotic Split", short_name = "JELLY_MITOTIC_SPLIT",
+	type = {"wild-gift/other",1},
+	mode = "passive",
+	points = 5,
+	getDamage = function(self,t) return self:combatTalentLimit(t, 5, 20, 8) end,
+	getChance = function(self,t) return self:combatTalentLimit(t, 85, 50, 75) end,
+	passives = function(self, t, p)
+		self:talentTemporaryValue(p, "clone_on_hit", {min_dam_pct=t.getDamage(self,t), chance=t.getChance(self,t)})
+	end,
+	info = function(self, t)
+		return ([[%d%% chance to split upon taking a single hit dealing at least %d%% of your maximum life.]]):format(t.getChance(self, t), t.getDamage(self, t))
+	end,
+}
+	
 newTalent{
 	name = "War Hound",
 	type = {"wild-gift/summon-melee", 1},
@@ -192,8 +247,9 @@ newTalent{
 
 			combat_armor = 1, combat_def = 1,
 			never_move = 1,
+			resolvers.talents{ [Talents.T_JELLY_PBAOE]=self:getTalentLevelRaw(t) },
 
-			combat = { dam=8, atk=15, apr=5, damtype=DamageType.ACID, dammod={str=0.7} },
+			combat = { dam=8, atk=15, apr=5, damtype=DamageType.NATURE, dammod={str=0.7} },
 
 			wild_gift_detonate = t.id,
 
@@ -212,7 +268,7 @@ newTalent{
 		}
 		if self:attr("wild_summon") and rng.percent(self:attr("wild_summon")) then
 			m.name = m.name.." (wild summon)"
-			m[#m+1] = resolvers.talents{ [self.T_SWALLOW]=self:getTalentLevelRaw(t) }
+			m[#m+1] = resolvers.talents{ [self.T_JELLY_MITOTIC_SPLIT]=self:getTalentLevelRaw(t) }
 		end
 		setupSummon(self, m, x, y)
 		game:playSoundNear(self, "talents/spell_generic")