diff --git a/game/engines/default/engine/Object.lua b/game/engines/default/engine/Object.lua
index b82c591b3ec0a65689dab9895af3a42b91645733..2d88d66d2e11ad204b9b07415d7a807c035d593f 100644
--- a/game/engines/default/engine/Object.lua
+++ b/game/engines/default/engine/Object.lua
@@ -118,8 +118,8 @@ end
 
 --- Adds object to the stack
 -- @return true if stacking worked, false if not
-function _M:stack(o)
-	if not self:canStack(o) then return false end
+function _M:stack(o, force)
+	if not force and not self:canStack(o) then return false end
 	self.stacked = self.stacked or {}
 	self.stacked[#self.stacked+1] = o
 
diff --git a/game/engines/default/engine/Zone.lua b/game/engines/default/engine/Zone.lua
index c88a4c0c4f19ae347afb2bbab034a07a224b8078..52f8391059267c806981fe265b8924ec657430d6 100644
--- a/game/engines/default/engine/Zone.lua
+++ b/game/engines/default/engine/Zone.lua
@@ -337,7 +337,7 @@ function _M:finishEntity(level, type, e, ego_chance)
 			s[#s+1] = e:clone()
 			e.generate_stack = e.generate_stack - 1
 		end
-		for i = 1, #s do e:stack(s[i]) end
+		for i = 1, #s do e:stack(s[i], true) end
 	end
 
 	e:resolve(nil, true)
diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 64a6958883f8eef0fb6a677daa4aa6914d9188fe..67807935c5a033c428bf6ed7ea718c4218241dfe 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -89,7 +89,7 @@ function _M:init(t, no_default)
 	self.unused_talents_types = self.unused_talents_types or 0
 
 	t.resource_pool_refs = t.resource_pool_refs or {}
-	
+
 	t.lite = t.lite or 0
 
 	t.size_category = t.size_category or 3
@@ -977,37 +977,37 @@ function _M:learnTalent(t_id, force, nb)
 	local t = _M.talents_def[t_id]
 	if t.type[1]:find("^spell/") and not self:knowTalent(self.T_MANA_POOL) and t.mana or t.sustain_mana then
 		self:learnTalent(self.T_MANA_POOL, true)
-		self.resource_pool_refs[self.T_MANA_POOL] = self.resource_pool_refs[self.T_MANA_POOL] + 1
+		self.resource_pool_refs[self.T_MANA_POOL] = (self.resource_pool_refs[self.T_MANA_POOL] or 0) + 1
 	end
 	if t.type[1]:find("^wild%-gift/") and not self:knowTalent(self.T_EQUILIBRIUM_POOL) and t.equilibrium or t.sustain_equilibrium then
 		self:learnTalent(self.T_EQUILIBRIUM_POOL, true)
-		self.resource_pool_refs[self.T_EQUILIBRIUM_POOL] = self.resource_pool_refs[self.T_EQUILIBRIUM_POOL] + 1
+		self.resource_pool_refs[self.T_EQUILIBRIUM_POOL] = (self.resource_pool_refs[self.T_EQUILIBRIUM_POOL] or 0) + 1
 	end
 	if t.type[1]:find("^technique/") and not self:knowTalent(self.T_STAMINA_POOL) and t.stamina or t.sustain_stamina then
 		self:learnTalent(self.T_STAMINA_POOL, true)
-		self.resource_pool_refs[self.T_STAMINA_POOL] = self.resource_pool_refs[self.T_STAMINA_POOL] + 1
+		self.resource_pool_refs[self.T_STAMINA_POOL] = (self.resource_pool_refs[self.T_STAMINA_POOL] or 0) + 1
 	end
 	if t.type[1]:find("^corruption/") and not self:knowTalent(self.T_VIM_POOL) and t.vim or t.sustain_vim then
 		self:learnTalent(self.T_VIM_POOL, true)
-		self.resource_pool_refs[self.T_VIM_POOL] = self.resource_pool_refs[self.T_VIM_POOL] + 1
+		self.resource_pool_refs[self.T_VIM_POOL] = (self.resource_pool_refs[self.T_VIM_POOL] or 0) + 1
 	end
 	if t.type[1]:find("^divine/") and (t.positive or t.sustain_positive) and not self:knowTalent(self.T_POSITIVE_POOL) then
 		self:learnTalent(self.T_POSITIVE_POOL, true)
-		self.resource_pool_refs[self.T_POSITIVE_POOL] = self.resource_pool_refs[self.T_POSITIVE_POOL] + 1
+		self.resource_pool_refs[self.T_POSITIVE_POOL] = (self.resource_pool_refs[self.T_POSITIVE_POOL] or 0) + 1
 	end
 	if t.type[1]:find("^divine/") and (t.negative or t.sustain_negative) and not self:knowTalent(self.T_NEGATIVE_POOL) then
 		self:learnTalent(self.T_NEGATIVE_POOL, true)
-		self.resource_pool_refs[self.T_NEGATIVE_POOL] = self.resource_pool_refs[self.T_NEGATIVE_POOL] + 1
+		self.resource_pool_refs[self.T_NEGATIVE_POOL] = (self.resource_pool_refs[self.T_NEGATIVE_POOL] or 0) + 1
 	end
 	if t.type[1]:find("^cursed/") and not self:knowTalent(self.T_HATE_POOL) then
 		self:learnTalent(self.T_HATE_POOL, true)
-		self.resource_pool_refs[self.T_HATE_POOL] = self.resource_pool_refs[self.T_HATE_POOL] + 1
+		self.resource_pool_refs[self.T_HATE_POOL] = (self.resource_pool_refs[self.T_HATE_POOL] or 0) + 1
 	end
 
 	-- If we learn an archery talent, also learn to shoot
 	if t.type[1]:find("^technique/archery") and not self:knowTalent(self.T_SHOOT) then
 		self:learnTalent(self.T_SHOOT, true)
-		self.resource_pool_refs[self.T_SHOOT] = self.resource_pool_refs[self.T_SHOOT] + 1
+		self.resource_pool_refs[self.T_SHOOT] = (self.resource_pool_refs[self.T_SHOOT] or 0) + 1
 	end
 
 	return true
diff --git a/game/modules/tome/data/general/objects/egos/boots.lua b/game/modules/tome/data/general/objects/egos/boots.lua
index d152b6850ed8a413aed18762faabee75cf72c7c9..8a195aa0b9f847e197e4e40abc2d2e0f9bd15100 100644
--- a/game/modules/tome/data/general/objects/egos/boots.lua
+++ b/game/modules/tome/data/general/objects/egos/boots.lua
@@ -16,8 +16,9 @@
 --
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
+
 local Stats = require "engine.interface.ActorStats"
-local DamageType = require "engine.DamageType"
+local Talents = require "engine.interface.ActorTalents"
 
 newEntity{
 	name = " of phasing", suffix=true, instant_resolve=true,
diff --git a/game/modules/tome/data/general/objects/gem.lua b/game/modules/tome/data/general/objects/gem.lua
index c97ae572493566dcfdd97d558eb272afdec74d19..b8d32cbd718fa32131afe799038218e4594f6970 100644
--- a/game/modules/tome/data/general/objects/gem.lua
+++ b/game/modules/tome/data/general/objects/gem.lua
@@ -72,7 +72,7 @@ newGem("Bloodstone",	"object/bloodstone.png",5,	18,	"red",		40,	50, 5, 70,
 	{ leech=10 }
 )
 newGem("Ruby",		"object/ruby.png",	4,	16,	"red",		30,	40, 4, 65,
-	{ inc_stats = { [Stats.STAT_STR] = 4, [Stats.STAT_DEX] = 4, [Stats.STAT_MAG] = 4, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 4, [Stats.STAT_CUN] = 4, } },
+	{ inc_stats = { [Stats.STAT_STR] = 4, [Stats.STAT_DEX] = 4, [Stats.STAT_MAG] = 4, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 4, [Stats.STAT_CON] = 4, } },
 	{ power=20 }
 )
 newGem("Amber",		"object/amber.png",	4,	16,	"yellow",	30,	40, 4, 65,
@@ -108,7 +108,7 @@ newGem("Garnets",	"object/garnet.png",3,	12,	"red",		20,	30, 3, 50,
 	{ leech=5 }
 )
 newGem("Onyx",		"object/.png",	3,	12,	"black",	20,	30, 3, 50,
-	{ inc_stats = { [Stats.STAT_STR] = 3, [Stats.STAT_DEX] = 3, [Stats.STAT_MAG] = 3, [Stats.STAT_WIL] = 3, [Stats.STAT_CUN] = 3, [Stats.STAT_CUN] = 3, } },
+	{ inc_stats = { [Stats.STAT_STR] = 3, [Stats.STAT_DEX] = 3, [Stats.STAT_MAG] = 3, [Stats.STAT_WIL] = 3, [Stats.STAT_CUN] = 3, [Stats.STAT_CON] = 3, } },
 	{ power=15 }
 )
 newGem("Amethyst",	"object/.png",2,	10,	"violet",	10,	20, 2, 35,
@@ -116,7 +116,7 @@ newGem("Amethyst",	"object/.png",2,	10,	"violet",	10,	20, 2, 35,
 	{ splash={type="ARCANE", dam=25}}
 )
 newGem("Opal",		"object/.png",	2,	10,	"blue",		10,	20, 2, 35,
-	{ inc_stats = { [Stats.STAT_STR] = 2, [Stats.STAT_DEX] = 2, [Stats.STAT_MAG] = 2, [Stats.STAT_WIL] = 2, [Stats.STAT_CUN] = 2, [Stats.STAT_CUN] = 2, } },
+	{ inc_stats = { [Stats.STAT_STR] = 2, [Stats.STAT_DEX] = 2, [Stats.STAT_MAG] = 2, [Stats.STAT_WIL] = 2, [Stats.STAT_CUN] = 2, [Stats.STAT_CON] = 2, } },
 	{ power=10 }
 )
 newGem("Topaz",		"object/.png",	2,	10,	"blue",		10,	20, 2, 35,
@@ -144,6 +144,6 @@ newGem("Citrine",	"object/.png",1,	8,	"yellow",	1,	10, 1, 20,
 	{ range=1 }
 )
 newGem("Agate",		"object/.png",	1,	8,	"black",	1,	10, 1, 20,
-	{ inc_stats = { [Stats.STAT_STR] = 1, [Stats.STAT_DEX] = 1, [Stats.STAT_MAG] = 1, [Stats.STAT_WIL] = 1, [Stats.STAT_CUN] = 1, [Stats.STAT_CUN] = 1, } },
+	{ inc_stats = { [Stats.STAT_STR] = 1, [Stats.STAT_DEX] = 1, [Stats.STAT_MAG] = 1, [Stats.STAT_WIL] = 1, [Stats.STAT_CUN] = 1, [Stats.STAT_CON] = 1, } },
 	{ power=5 }
 )