diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 93969e12147ec95889ca85b6ad780646d27c39d2..f69c3441f3a76d3d68cd8ae48a8e75feecfdea26 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -1249,14 +1249,28 @@ function _M:onTakeHit(value, src)
 	end
 
 	if self:attr("damage_shield") then
-		-- Absorb damage into the shield
-		self.damage_shield_absorb = self.damage_shield_absorb or 0
-		if value <= self.damage_shield_absorb then
-			self.damage_shield_absorb = self.damage_shield_absorb - value
-			value = 0
+		-- Phased attack?
+		if src and src:attr("damage_shield_penetrate") then
+			local adjusted_value = value * (1 - (util.bound(src.damage_shield_penetrate, 0, 100) / 100))
+			self.damage_shield_absorb = self.damage_shield_absorb or 0
+			if adjusted_value <= self.damage_shield_absorb then
+				self.damage_shield_absorb = self.damage_shield_absorb - adjusted_value
+				value = value - adjusted_value
+			else
+				adjusted_value = adjusted_value - self.damage_shield_absorb
+				value = value + adjusted_value
+				self.damage_shield_absorb = 0
+			end
 		else
-			value = value - self.damage_shield_absorb
-			self.damage_shield_absorb = 0
+			-- Absorb damage into the shield
+			self.damage_shield_absorb = self.damage_shield_absorb or 0
+			if value <= self.damage_shield_absorb then
+				self.damage_shield_absorb = self.damage_shield_absorb - value
+				value = 0
+			else
+				value = value - self.damage_shield_absorb
+				self.damage_shield_absorb = 0
+			end
 		end
 
 		-- If we are at the end of the capacity, release the time shield damage
@@ -2595,7 +2609,7 @@ function _M:preUseTalent(ab, silent, fake)
 	-- Spells can fail
 	if (ab.is_spell and not self:isTalentActive(ab.id)) and not fake and self:attr("spell_failure") then
 		if rng.percent(self:attr("spell_failure")) then
-			if not silent then game.logPlayer(self, "You fail to cast %s!", ab.name) end
+			if not silent then game.logSeen(self, "%s's %s has been disrupted by anti-magic forces!", self.name:capitalize(), ab.name) end
 			self:useEnergy()
 			return false
 		end
diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index b1769b29862d49056f0a39e65ce96108d282963f..2e25cc5e75621068d75690566bf4419f37c657ab 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -128,7 +128,7 @@ function _M:descAttribute(attr)
 		local stat, i = next(self.wielder.resists)
 		return (i and i > 0 and "+"..i or tostring(i)).."%"
 	elseif attr == "REGEN" then
-		local i = self.wielder.mana_regen or self.wielder.stamina_regen or self.wielder.life_regen or self.wielder.hate_regen
+		local i = self.wielder.mana_regen or self.wielder.stamina_regen or self.wielder.life_regen or self.wielder.hate_regen or self.wielder.positive_regen
 		return ("%s%0.2f/turn"):format(i > 0 and "+" or "-", math.abs(i))
 	elseif attr == "COMBAT" then
 		local c = self.combat
@@ -475,6 +475,24 @@ function _M:getTextualDesc(compare_with)
 		if special ~= "" then
 			desc:add(found and {"color","WHITE"} or {"color","GREEN"}, "Special effect when this weapon hits: "..special, {"color","LAST"}, true)
 		end
+		
+		special = ""
+		if combat.special_on_crit then
+			special = combat.special_on_crit.desc
+		end
+		found = false
+		for i, v in ipairs(compare_with or {}) do
+			if v[field] and v[field].special_on_crit then
+				if special ~= v[field].special_on_crit.desc then
+					desc:add({"color","RED"}, "Special effect when this weapon crits: "..v[field].special_on_crit.desc, {"color","LAST"}, true)
+				else
+					found = true
+				end
+			end
+		end
+		if special ~= "" then
+			desc:add(found and {"color","WHITE"} or {"color","GREEN"}, "Special effect when this weapon crits: "..special, {"color","LAST"}, true)
+		end
 
 		found = false
 		for i, v in ipairs(compare_with or {}) do
@@ -490,6 +508,8 @@ function _M:getTextualDesc(compare_with)
 		end
 
 		compare_fields(combat, compare_with, field, "travel_speed", "%+d%%", "Travel speed: ", 1, false, false, add_table)
+		
+		compare_fields(combat, compare_with, field, "phase_power", "%+d%%", "Damage Shield penetration: ", 1, false, false, add_table)
 
 		if combat.tg_type and combat.tg_type == "beam" then
 			desc:add({"color","YELLOW"}, ("Shots beam through all targets."), {"color","LAST"}, true)
@@ -504,8 +524,23 @@ function _M:getTextualDesc(compare_with)
 				local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
 				return col[2], (" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
 			end)
+		
+		compare_table_fields(combat, compare_with, field, "burst_on_hit", "%+d", "Burst (radius 1) on hit: ", function(item)
+				local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
+				return col[2], (" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
+			end)
+			
+		compare_table_fields(combat, compare_with, field, "burst_on_crit", "%+d", "Burst (radius 2) on crit: ", function(item)
+				local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
+				return col[2], (" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
+			end)
+		
+		compare_table_fields(combat, compare_with, field, "convert_damage", "%d%%", "Damage conversion: ", function(item)
+				local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
+				return col[2], (" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
+			end)
 
-		compare_table_fields(combat, compare_with, field, "inc_damage_type", "%+d%%", "Damage against: ", function(item)
+		compare_table_fields(combat, compare_with, field, "inc_damage_type", "%+d%% ", "Damage against: ", function(item)
 				local _, _, t, st = item:find("^([^/]+)/?(.*)$")
 				if st and st ~= "" then
 					return st:capitalize()
@@ -760,6 +795,7 @@ function _M:getTextualDesc(compare_with)
 		compare_fields(w, compare_with, field, "stamina_regen", "%+.2f", "Stamina each turn: ")
 		compare_fields(w, compare_with, field, "mana_regen", "%+.2f", "Mana each turn: ")
 		compare_fields(w, compare_with, field, "hate_regen", "%+.2f", "Hate each turn: ")
+		compare_fields(w, compare_with, field, "positive_regen", "%+.2f", "P.Energy each turn: ")
 
 		compare_fields(w, compare_with, field, "stamina_regen_on_hit", "%+.2f", "Stamina when hit: ")
 		compare_fields(w, compare_with, field, "mana_regen_on_hit", "%+.2f", "Mana when hit: ")
@@ -943,6 +979,8 @@ function _M:getTextualDesc(compare_with)
 		end
 	end
 
+
+	
 	local use_desc = self:getUseDesc()
 	if use_desc then desc:merge(use_desc:toTString()) end
 	return desc
@@ -1010,6 +1048,10 @@ function _M:getDesc(name_param, compare_with, never_compare)
 	if self.encumber then
 		desc:add({"color",0x67,0xAD,0x00}, ("%0.2f Encumbrance."):format(self.encumber), {"color", "LAST"})
 	end
+	if self.ego_bonus_mult then
+		desc:add(true)
+		desc:add({"color",0x67,0xAD,0x00}, ("%0.2f Ego Multiplier."):format(1 + self.ego_bonus_mult), {"color", "LAST"})
+	end
 
 	desc:add(true, true)
 
diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index b08987a28fb6b89c950466b98c7768748562dfd3..80439c461a06de07bc70a4a903e597e12e89f5c2 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -406,9 +406,10 @@ function _M:playerFOV()
 
 		-- Handle infravision/heightened_senses which allow to see outside of lite radius but with LOS
 		if self:attr("infravision") or self:attr("heightened_senses") then
-			local rad = (self.heightened_senses or 0) + (self.infravision or 0)
-			local rad2 = math.max(1, math.floor(rad / 4))
-			self:computeFOV(rad, "block_sight", function(x, y, dx, dy, sqdist) if game.level.map(x, y, game.level.map.ACTOR) then game.level.map.seens(x, y, fovdist[sqdist]) end end, true, true, true)
+			local rad1 = math.max((self.heightened_senses or 0), (self.infravision or 0))
+			rad1 = math.min(rad, self.sight)
+			local rad2 = math.max(1, math.floor(rad1 / 4))
+			self:computeFOV(rad1, "block_sight", function(x, y, dx, dy, sqdist) if game.level.map(x, y, game.level.map.ACTOR) then game.level.map.seens(x, y, fovdist[sqdist]) end end, true, true, true)
 			self:computeFOV(rad2, "block_sight", function(x, y, dx, dy, sqdist) game.level.map:applyLite(x, y, fovdist[sqdist]) end, true, true, true)
 		end
 
diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua
index 52d8e622e12a56b4d4ae6fad690d82c36f0ed4d5..7ecf23027c40833af7d0bb565d2732b817c1e324 100644
--- a/game/modules/tome/class/interface/Combat.lua
+++ b/game/modules/tome/class/interface/Combat.lua
@@ -364,7 +364,35 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 		end
 
 		if crit then game.logSeen(self, "#{bold}#%s performs a critical strike!#{normal}#", self.name:capitalize()) end
-		DamageType:get(damtype).projector(self, target.x, target.y, damtype, math.max(0, dam))
+
+		-- Phasing, percent of weapon damage bypasses shields
+		if weapon and weapon.phasing then
+			self:attr("damage_shield_penetrate", weapon.phasing)
+		end
+
+		-- Damage conversion?
+		-- Reduces base damage but converts it into another damage type
+		local conv_dam
+		local conv_damtype
+		if weapon and weapon.convert_damage then
+			for typ, conv in pairs(weapon.convert_damage) do
+				if dam > 0 then
+					conv_dam = math.min(dam, dam * (conv / 100))
+					conv_damtype = typ
+					dam = dam - conv_dam
+					DamageType:get(conv_damtype).projector(self, target.x, target.y, conv_damtype, math.max(0, conv_dam))
+				end
+			end
+		end
+
+		if dam > 0 then
+			DamageType:get(damtype).projector(self, target.x, target.y, damtype, math.max(0, dam))
+		end
+
+		if weapon and weapon.phasing then
+			self:attr("damage_shield_penetrate", -weapon.phasing)
+		end
+
 		hitted = true
 	else
 		local srcname = game.level.map.seens(self.x, self.y) and self.name:capitalize() or "Something"
@@ -481,6 +509,20 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 		self.shattering_impact_last_turn = game.turn
 	end
 
+	-- Burst on Hit
+	if hitted and crit and weapon.burst_on_hit then
+		for typ, dam in pairs(weapon.burst_on_hit) do
+			self:project({type="ball", radius=1, friendlyfire=false}, target.x, target.y, typ, dam)
+		end
+	end
+
+	-- Critical Burst (generally more damage then burst on hit and larger radius)
+	if hitted and crit and weapon.burst_on_crit then
+		for typ, dam in pairs(weapon.burst_on_crit) do
+			self:project({type="ball", radius=2, friendlyfire=false}, target.x, target.y, typ, dam)
+		end
+	end
+
 	-- Onslaught
 	if hitted and self:attr("onslaught") then
 		local dir = util.getDir(target.x, target.y, self.x, self.y) or 6
@@ -549,6 +591,11 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 		weapon.special_on_hit.fct(weapon, self, target)
 	end
 
+	if hitted and crit and not target.dead and weapon and weapon.special_on_crit and weapon.special_on_crit.fct then
+		weapon.special_on_crit.fct(weapon, self, target)
+	end
+
+
 	-- Poison coating
 	if hitted and not target.dead and self.vile_poisons and next(self.vile_poisons) and target:canBe("poison") then
 		local tid = rng.table(table.keys(self.vile_poisons))
diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua
index b55f95dd1d262b8fab16cb85456637c5e0978446..df251839c7157100a49b90ead4ecffb50a0ce067 100644
--- a/game/modules/tome/data/damage_types.lua
+++ b/game/modules/tome/data/damage_types.lua
@@ -595,7 +595,7 @@ newDamageType{
 
 -- Fire damage + DOT
 newDamageType{
-	name = "fireburn", type = "FIREBURN",
+	name = "fire burn", type = "FIREBURN", text_color = "#LIGHT_RED#",
 	projector = function(src, x, y, type, dam)
 		local dur = 3
 		local perc = 50
@@ -705,7 +705,7 @@ newDamageType{
 
 -- Cold damage + freeze chance
 newDamageType{
-	name = "ice", type = "ICE",
+	name = "ice", type = "ICE", text_color = "#1133F3#",
 	projector = function(src, x, y, type, dam)
 		local realdam = DamageType:get(DamageType.COLD).projector(src, x, y, DamageType.COLD, dam)
 		if rng.percent(25) then
@@ -765,7 +765,7 @@ newDamageType{
 
 -- Acid damage + blind chance
 newDamageType{
-	name = "acid blind", type = "ACID_BLIND",
+	name = "acid blind", type = "ACID_BLIND", text_color = "#GREEN#",
 	projector = function(src, x, y, type, dam)
 		local realdam = DamageType:get(DamageType.ACID).projector(src, x, y, DamageType.ACID, dam)
 		local target = game.level.map(x, y, Map.ACTOR)
@@ -799,7 +799,7 @@ newDamageType{
 
 -- Lightning damage + daze chance
 newDamageType{
-	name = "lightning daze", type = "LIGHTNING_DAZE",
+	name = "lightning daze", type = "LIGHTNING_DAZE", text_color = "#ROYAL_BLUE#",
 	projector = function(src, x, y, type, dam)
 		if _G.type(dam) == "number" then dam = {dam=dam, daze=25} end
 		local realdam = DamageType:get(DamageType.LIGHTNING).projector(src, x, y, DamageType.LIGHTNING, dam.dam)
@@ -987,7 +987,7 @@ newDamageType{
 
 -- Poisoning damage
 newDamageType{
-	name = "poison", type = "POISON",
+	name = "poison", type = "POISON", text_color = "#LIGHT_GREEN#",
 	projector = function(src, x, y, t, dam)
 		local power
 		if type(dam) == "table" then
@@ -1041,8 +1041,9 @@ newDamageType{
 
 -- Insidious poison: prevents healing
 newDamageType{
-	name = "insidious poison", type = "INSIDIOUS_POISON",
+	name = "insidious poison", type = "INSIDIOUS_POISON", text_color = "#LIGHT_GREEN#",
 	projector = function(src, x, y, type, dam)
+		if _G.type(dam) == "number" then dam = {dam=dam, dur=7, heal_factor=dam} end
 		DamageType:get(DamageType.NATURE).projector(src, x, y, DamageType.NATURE, dam.dam / dam.dur)
 		local target = game.level.map(x, y, Map.ACTOR)
 		if target and target:canBe("poison") then
@@ -1079,12 +1080,13 @@ newDamageType{
 
 -- Slime damage
 newDamageType{
-	name = "slime", type = "SLIME",
+	name = "slime", type = "SLIME", text_color = "#LIGHT_GREEN#",
 	projector = function(src, x, y, type, dam)
-		DamageType:get(DamageType.NATURE).projector(src, x, y, DamageType.NATURE, dam)
+		if _G.type(dam) == "number" then dam = {dam=dam, power=0.15} end
+		DamageType:get(DamageType.NATURE).projector(src, x, y, DamageType.NATURE, dam.dam)
 		local target = game.level.map(x, y, Map.ACTOR)
 		if target then
-			target:setEffect(target.EFF_SLOW, 3, {power=0.15, no_ct_effect=true})
+			target:setEffect(target.EFF_SLOW, 3, {power=dam.power, no_ct_effect=true})
 		end
 	end,
 }
@@ -1613,7 +1615,7 @@ newDamageType{
 
 -- Temporal + Stat damage
 newDamageType{
-	name = "clock", type = "CLOCK",
+	name = "reverse aging", type = "CLOCK",
 	projector = function(src, x, y, type, dam)
 		local target = game.level.map(x, y, Map.ACTOR)
 		if target then
@@ -1627,7 +1629,7 @@ newDamageType{
 
 -- Temporal Over Time
 newDamageType{
-	name = "wasting", type = "WASTING",
+	name = "wasting", type = "WASTING", text_color = "#LIGHT_STEEL_BLUE#",
 	projector = function(src, x, y, type, dam)
 		local target = game.level.map(x, y, Map.ACTOR)
 		local dur = 3
@@ -1670,7 +1672,7 @@ newDamageType{
 				if target:canBe("stun") then
 					target:setEffect(target.EFF_STUNNED, 3, {apply_power=src:combatSpellpower()})
 				else
-					game.logSeen(target, "%s resists the daze!", target.name:capitalize())
+					game.logSeen(target, "%s resists the stun!", target.name:capitalize())
 				end
 			elseif chance == 2 then
 				if target:canBe("blind") then
@@ -1966,7 +1968,7 @@ newDamageType{
 }
 
 newDamageType{
-	name = "manaburn", type = "MANABURN",
+	name = "manaburn", type = "MANABURN", text_color = "#PURPLE#",
 	projector = function(src, x, y, type, dam)
 		local target = game.level.map(x, y, Map.ACTOR)
 		if target then
diff --git a/game/modules/tome/data/general/objects/2haxes.lua b/game/modules/tome/data/general/objects/2haxes.lua
index 8c926212fe8a93f84c4d931c68048820e3d42c36..511b19dcc4754fa125a44b096d0ad5c0483b90b9 100644
--- a/game/modules/tome/data/general/objects/2haxes.lua
+++ b/game/modules/tome/data/general/objects/2haxes.lua
@@ -31,6 +31,7 @@ newEntity{
 	combat = { talented = "axe", damrange = 1.5, physspeed = 1, sound = {"actions/melee", pitch=0.6, vol=1.2}, sound_miss = {"actions/melee", pitch=0.6, vol=1.2} },
 	desc = [[Massive two-handed battleaxes.]],
 	twohanded = true,
+	ego_bonus_mult = 0.2,
 	randart_able = { attack=40, physical=80, spell=20, def=10, misc=10 },
 	egos = "/data/general/objects/egos/weapon.lua", egos_chance = { prefix=resolvers.mbonus(40, 5), suffix=resolvers.mbonus(40, 5) },
 }
diff --git a/game/modules/tome/data/general/objects/2hmaces.lua b/game/modules/tome/data/general/objects/2hmaces.lua
index caa4e8eccc872a5522e527ba2ca03503a99d4cfe..36b32394600e4a055ebfaa100b991ac73ff78c76 100644
--- a/game/modules/tome/data/general/objects/2hmaces.lua
+++ b/game/modules/tome/data/general/objects/2hmaces.lua
@@ -31,6 +31,7 @@ newEntity{
 	combat = { talented = "mace", damrange = 1.5, physspeed = 1, sound = {"actions/melee", pitch=0.6, vol=1.2}, sound_miss = {"actions/melee", pitch=0.6, vol=1.2} },
 	desc = [[Massive two-handed maul.]],
 	twohanded = true,
+	ego_bonus_mult = 0.2,
 	randart_able = { attack=40, physical=80, spell=20, def=10, misc=10 },
 	egos = "/data/general/objects/egos/weapon.lua", egos_chance = { prefix=resolvers.mbonus(40, 5), suffix=resolvers.mbonus(40, 5) },
 }
diff --git a/game/modules/tome/data/general/objects/2hswords.lua b/game/modules/tome/data/general/objects/2hswords.lua
index 1697ce0369bcc6b2d5713672bc168a20aeac8c69..5eb6082d5c8d5b2e2745354a7fb3ed677bc1f1c4 100644
--- a/game/modules/tome/data/general/objects/2hswords.lua
+++ b/game/modules/tome/data/general/objects/2hswords.lua
@@ -31,6 +31,7 @@ newEntity{
 	desc = [[Massive two-handed swords.]],
 	twohanded = true,
 	metallic = true,
+	ego_bonus_mult = 0.2,
 	randart_able = { attack=40, physical=80, spell=20, def=10, misc=10 },
 	egos = "/data/general/objects/egos/weapon.lua", egos_chance = { prefix=resolvers.mbonus(40, 5), suffix=resolvers.mbonus(40, 5) },
 }
diff --git a/game/modules/tome/data/general/objects/2htridents.lua b/game/modules/tome/data/general/objects/2htridents.lua
index 51c58e9b6f9f709b66f820d6019bc2dc353c74b8..0143b12bb38a78451a345c11a739faa597b829ca 100644
--- a/game/modules/tome/data/general/objects/2htridents.lua
+++ b/game/modules/tome/data/general/objects/2htridents.lua
@@ -33,6 +33,7 @@ newEntity{
 	desc = [[A two-handed massive trident.
 Tridents require the exotic weapons mastery talent to use correctly.]],
 	twohanded = true,
+	ego_bonus_mult = 0.2,
 	randart_able = { attack=40, physical=80, spell=20, def=10, misc=10 },
 	egos = "/data/general/objects/egos/weapon.lua", egos_chance = { prefix=resolvers.mbonus(40, 5), suffix=resolvers.mbonus(40, 5) },
 }
diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua
index 159483ce986b20bf2fec6ff3e50424b7a8be8a50..68fec8024ac1e96326feb84b67ac0cc6a42b0861 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts.lua
@@ -68,7 +68,7 @@ newEntity{ base = "BASE_LITE", define_as = "WINTERTIDE_PHIAL",
 	rarity = 200,
 	encumber = 2,
 	cost = 50,
-	material_level = 2,
+	material_level = 1,
 
 	wielder = {
 		lite = 1,
@@ -114,6 +114,7 @@ newEntity{ base = "BASE_AMULET",
 	level_range = {32, 42},
 	rarity = 220,
 	cost = 190,
+	material_level = 3,
 	wielder = {
 		inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 },
 		combat_spellpower = 7,
@@ -143,6 +144,7 @@ newEntity{ base = "BASE_LEATHER_BOOT",
 	desc = [[A pair of leather boots. Cold to the touch, they radiate a cold blue light.]],
 	require = { stat = { dex=16 }, },
 	level_range = {10, 18},
+	material_level = 2,
 	rarity = 220,
 	cost = 40,
 
@@ -169,6 +171,7 @@ newEntity{ base = "BASE_HELM",
 	desc = [[Traces of a dragon's power still remain in this bleached and cracked skull.]],
 	require = { stat = { wil=24 }, },
 	level_range = {45, 50},
+	material_level = 5,
 	rarity = 280,
 	cost = 200,
 
@@ -311,7 +314,7 @@ newEntity{ base = "BASE_RING",
 	level_range = {15, 23},
 	rarity = 250,
 	cost = 500,
-	material_level = 4,
+	material_level = 2,
 	wielder = {
 		max_stamina = 25,
 		combat_def = 6,
@@ -338,7 +341,7 @@ newEntity{ base = "BASE_HELM",
 	level_range = {12, 22},
 	rarity = 200,
 	cost = 20,
-	material_level = 3,
+	material_level = 2,
 	skullcracker_mult = 5,
 
 	wielder = {
@@ -454,6 +457,7 @@ newEntity{ base = "BASE_CLOTH_ARMOR",
 	level_range = {40, 50},
 	rarity = 280,
 	cost = 500,
+	material_level = 5,
 	wielder = {
 		inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 },
 		see_invisible = 10,
@@ -480,6 +484,7 @@ newEntity{ base = "BASE_WARAXE",
 	level_range = {35, 45},
 	rarity = 290,
 	cost = 375,
+	material_level = 4,
 	combat = {
 		dam = 55,
 		apr = 15,
@@ -504,6 +509,7 @@ newEntity{ base = "BASE_STAFF",
 	level_range = {1, 10},
 	rarity = 200,
 	cost = 60,
+	material_level = 1,
 	combat = {
 		dam = 10,
 		apr = 0,
@@ -533,6 +539,7 @@ newEntity{ base = "BASE_AMULET",
 	level_range = {40, 50},
 	rarity = 220,
 	cost = 3000,
+	material_level = 5,
 	wielder = {
 		see_invisible = 20,
 		silence_immune = 0.8,
@@ -555,6 +562,7 @@ newEntity{ base = "BASE_STAFF",
 	level_range = {40, 50},
 	rarity = 210,
 	encumber = 2.5,
+	material_level = 5,
 	cost = 500,
 	combat = {
 		dam = 35,
@@ -579,6 +587,7 @@ newEntity{ base = "BASE_AMULET",
 	level_range = {20, 28},
 	rarity = 220,
 	cost = 5000,
+	material_level = 3,
 	wielder = {
 		see_invisible = 10,
 		blind_immune = 1,
@@ -671,6 +680,7 @@ newEntity{ base = "BASE_GREATMAUL",
 	desc = [[This is a big, nasty-looking tree trunk that Bill the Troll used as a weapon. It could still serve this purpose, should you be strong enough to wield it!]],
 	require = { stat = { str=25 }, },
 	level_range = {1, 10},
+	material_level = 1,
 	rarity = 200,
 	metallic = false,
 	cost = 70,
@@ -695,6 +705,7 @@ newEntity{ base = "BASE_SHIELD",
 	desc = [[Though tarnished and spattered with blood, the emblem of the Sun still manages to shine through on this shield.]],
 	require = { stat = { str=39 }, },
 	level_range = {35, 45},
+	material_level = 4,
 	rarity = 240,
 	cost = 120,
 
@@ -1001,6 +1012,7 @@ newEntity{ base = "BASE_WARAXE",
 	desc = [[A small but sharp axe, with a handle made of polished bone.  The blade has chopped through the skulls of many, and has been stained a deep crimson.]],
 	require = { stat = { str=18 }, },
 	level_range = {5, 12},
+	material_level = 1,
 	rarity = 220,
 	cost = 50,
 	combat = {
@@ -1024,7 +1036,7 @@ newEntity{ base = "BASE_DIGGER",
 	desc = [[A huge tooth taken from the Mouth, in the Deep Bellow.]],
 	level_range = {5, 12},
 	cost = 50,
-	material_level = 3,
+	material_level = 1,
 	digspeed = 12,
 	wielder = {
 		inc_damage = { [DamageType.BLIGHT] = 4 },
@@ -1060,7 +1072,7 @@ newEntity{ base = "BASE_HEAVY_BOOTS",
 }
 
 newEntity{ base = "BASE_BATTLEAXE",
-	power_source = {nature=true,},
+	power_source = {nature=true, antimagic=true},
 	define_as = "GAPING_MAW",
 	name = "The Gaping Maw", color = colors.SLATE, image = "object/artifact/battleaxe_the_gaping_maw.png",
 	unided_name = "huge granite battleaxe", unique = true,
@@ -1069,7 +1081,7 @@ newEntity{ base = "BASE_BATTLEAXE",
 	rarity = 300,
 	require = { stat = { str=60 }, },
 	cost = 650,
-	material_level = 4,
+	material_level = 5,
 	combat = {
 		dam = 72,
 		apr = 4,
@@ -1078,20 +1090,26 @@ newEntity{ base = "BASE_BATTLEAXE",
 		melee_project={[DamageType.SLIME] = 50, [DamageType.ACID] = 50},
 	},
 	wielder = {
-		inc_stats = { [Stats.STAT_STR] = 6, [Stats.STAT_WIL] = 6, },
-		inc_damage={
-			[DamageType.NATURE] = 15,
-		},
 		talent_cd_reduction= {
 			[Talents.T_SWALLOW] = 2,
 			[Talents.T_MANA_CLASH] = 2,
 			[Talents.T_ICE_CLAW] = 1,
 		},
 	},
+	on_wear = function(self, who)
+		if who:attr("forbid_arcane") then
+			local Stats = require "engine.interface.ActorStats"
+			local DamageType = require "engine.DamageType"
+	
+			self:specialWearAdd({"wielder","inc_damage"}, {[DamageType.NATURE]=15})
+			self:specialWearAdd({"wielder","inc_stats"}, { [Stats.STAT_STR] = 6, [Stats.STAT_WIL] = 6, })
+			game.logPlayer(who, "#DARK_GREEN#You feel like Nature's Wrath incarnate!")
+		end
+	end,
 }
 
 newEntity{ base = "BASE_AMULET",
-	power_source = {nature=true},
+	power_source = {psionic=true},
 	define_as = "WITHERING_ORBS",
 	unique = true,
 	name = "Withering Orbs", color = colors.WHITE, image = "object/artifact/artifact_jewelry_withering_orbs.png",
@@ -1127,7 +1145,7 @@ Though clearly a powerful piece, it must once have been much greater.]],
 	rarity = 200,
 	require = { stat = { str=35 }, },
 	cost = 500,
-	material_level = 5,
+	material_level = 3,
 	wielder = {
 		combat_def = 10,
 		combat_armor = 15,
@@ -1150,7 +1168,7 @@ Though clearly a powerful piece, it must once have been much greater.]],
 }
 
 newEntity{ base = "BASE_LEATHER_CAP", -- No armor training requirement
-	power_source = {nature=true},
+	power_source = {psionic=true},
 	define_as = "ALETTA_DIADEM",
 	name = "Aletta's Diadem", unique=true, unided_name="jeweled diadem", image = "object/artifact/diadem_alettas_diadem.png",
 	desc = [[A filigree of silver set with many small jewels, this diadem seems radiant - ethereal almost. But its touch seems to freeze your skin and brings wild thoughts to your mind. You want to drop it, throw it away, and yet you cannot resist thinking of what powers it might bring you.
@@ -1173,7 +1191,7 @@ Is this temptation a weak will on your part, or some domination from the artifac
 }
 
 newEntity{ base = "BASE_SLING",
-	power_source = {technique=true},
+	power_source = {nature=true},
 	define_as = "HARESKIN_SLING",
 	name = "Hare-Skin Sling", unique=true, unided_name = "hare-skin sling", image = "object/artifact/sling_hareskin_sling.png",
 	desc = [[This well-tended sling is made from the leather and sinews of a large hare. It feels smooth to the touch yet very durable. Some say that the skin of a hare brings luck and fortune.
@@ -1182,7 +1200,7 @@ Hard to tell if that really helped its former owner, but it's clear that the ski
 	rarity = 200,
 	require = { stat = { dex=35 }, },
 	cost = 50,
-	material_level = 4,
+	material_level = 3,
 	use_no_energy = true,
 	combat = {
 		range = 10,
@@ -1200,7 +1218,7 @@ Hard to tell if that really helped its former owner, but it's clear that the ski
 }
 
 newEntity{ base = "BASE_TOOL_MISC",
-	power_source = {nature=true},
+	power_source = {arcane=true},
 	define_as = "LUCKY_FOOT",
 	unique = true,
 	name = "Prox's Lucky Halfling Foot", color = colors.WHITE,
diff --git a/game/modules/tome/data/general/objects/bows.lua b/game/modules/tome/data/general/objects/bows.lua
index 43b95d1f7d9d5e4759849d09b176656124373a3f..c604aefa9457969f4b7f9df119dfc0ca3ec8fb4f 100644
--- a/game/modules/tome/data/general/objects/bows.lua
+++ b/game/modules/tome/data/general/objects/bows.lua
@@ -105,7 +105,7 @@ newEntity{
 	type = "ammo", subtype="arrow",
 	add_name = " (#COMBAT_AMMO#)",
 	display = "{", color=colors.UMBER, image = resolvers.image_material("arrow", "wood"),
-	encumber = 5,
+	encumber = 3,
 	rarity = 11,
 	combat = {
 		talented = "bow",
diff --git a/game/modules/tome/data/general/objects/egos/ammo.lua b/game/modules/tome/data/general/objects/egos/ammo.lua
index 77f431b0cdf46f7d4264dbad2ecf272af695c16d..b206d2304e8bf3f7854a122f8c23f9876367f93d 100644
--- a/game/modules/tome/data/general/objects/egos/ammo.lua
+++ b/game/modules/tome/data/general/objects/egos/ammo.lua
@@ -25,6 +25,7 @@ newEntity{
 	keywords = {quick=true},
 	level_range = {1, 50},
 	rarity = 5,
+	cost = 6,
 	wielder = {
 		ammo_reload_speed = resolvers.mbonus_material(4, 1),
 	},
@@ -36,6 +37,7 @@ newEntity{
 	keywords = {capacity=true},
 	level_range = {1, 50},
 	rarity = 5,
+	cost = 6,
 	combat = {
 		capacity = resolvers.generic(function(e) return e.combat.capacity * rng.float(1.3, 1.6) end),
 	},
@@ -47,6 +49,7 @@ newEntity{
 	keywords = {self=true},
 	level_range = {1, 50},
 	rarity = 5,
+	cost = 6,
 	combat = {
 		ammo_regen = resolvers.mbonus_material(3, 1),
 	},
@@ -62,6 +65,7 @@ newEntity{
 	level_range = {1, 50},
 	rarity = 7,
 	greater_ego = 1,
+	cost = 6,
 	combat = {
 		capacity = resolvers.generic(function(e) return e.combat.capacity * rng.float(1.2, 1.5) end),
 	},
@@ -77,6 +81,7 @@ newEntity{
 	level_range = {1, 50},
 	rarity = 7,
 	greater_ego = 1,
+	cost = 6,
 	combat = {
 		ammo_regen = resolvers.mbonus_material(3, 1),
 	},
@@ -95,6 +100,7 @@ newEntity{
 	level_range = {1, 50},
 	rarity = 7,
 	greater_ego = 1,
+	cost = 6,
 	combat = {
 		ammo_regen = resolvers.mbonus_material(3, 1),
 		capacity = resolvers.generic(function(e) return e.combat.capacity * rng.float(1.2, 1.5) end),
@@ -110,6 +116,7 @@ newEntity{
 	keywords = {fire=true},
 	level_range = {1, 50},
 	rarity = 5,
+	cost = 6,
 	combat = {
 		ranged_project={[DamageType.FIRE] = resolvers.mbonus_material(20, 5)},
 	},
@@ -120,6 +127,7 @@ newEntity{
 	keywords = {ice=true},
 	level_range = {15, 50},
 	rarity = 5,
+	cost = 6,
 	combat = {
 		ranged_project={[DamageType.ICE] = resolvers.mbonus_material(10, 4)},
 	},
@@ -130,6 +138,7 @@ newEntity{
 	keywords = {cunning=true},
 	level_range = {1, 50},
 	rarity = 5,
+	cost = 6,
 	combat = {
 		ranged_project={[DamageType.ACID] = resolvers.mbonus_material(20, 5)},
 	},
@@ -140,6 +149,7 @@ newEntity{
 	keywords = {lightning=true},
 	level_range = {1, 50},
 	rarity = 5,
+	cost = 6,
 	combat = {
 		ranged_project={[DamageType.LIGHTNING] = resolvers.mbonus_material(20, 5)},
 	},
@@ -151,6 +161,7 @@ newEntity{
 	keywords = {slime=true},
 	level_range = {10, 50},
 	rarity = 5,
+	cost = 6,
 	combat = {
 		ranged_project={[DamageType.SLIME] = resolvers.mbonus_material(10, 4)},
 	},
@@ -163,6 +174,7 @@ newEntity{
 	level_range = {1, 50},
 	rarity = 3,
 	cost = 4,
+	cost = 6,
 	combat = {
 		atk = resolvers.mbonus_material(20, 5),
 	},
@@ -192,6 +204,7 @@ newEntity{
 	keywords = {wind=true},
 	level_range = {10, 50},
 	rarity = 7,
+	cost = 6,
 	combat = {
 		travel_speed = 200,
 	},
@@ -203,7 +216,7 @@ newEntity{
 	keywords = {annihilation=true},
 	level_range = {30, 50},
 	greater_ego = 1,
-	cost = 1,
+	cost = 6,
 	rarity = 15,
 	combat = {
 		dam = resolvers.mbonus_material(10, 2),
diff --git a/game/modules/tome/data/general/objects/egos/mindstars.lua b/game/modules/tome/data/general/objects/egos/mindstars.lua
index 30c54b95fdcc7512c6e5b84a84117466d4af317b..b0b353ca6946f9c00142ba2c5268e942ac2d63d3 100644
--- a/game/modules/tome/data/general/objects/egos/mindstars.lua
+++ b/game/modules/tome/data/general/objects/egos/mindstars.lua
@@ -31,3 +31,257 @@ newEntity{
 		combat_mindpower = resolvers.mbonus_material(16, 3),
 	},
 }
+
+-------------------------------------------------------
+--Nature and Antimagic---------------------------------
+-------------------------------------------------------
+ newEntity{
+	power_source = {arcane=true},
+	power_source = {nature=true},
+	name = "summoner's	", prefix=true, instant_resolve=true,
+	keywords = {summoners=true},
+	level_range = {1, 50},
+	rarity = 4,
+	cost = 8,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = "druid's ", prefix=true, instant_resolve=true,
+	keywords = {druid=true},
+	level_range = {1, 50},
+	rarity = 4,
+	cost = 8,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = "nature's ", prefix=true, instant_resolve=true,
+	keywords = {nature=true},
+	level_range = {1, 50},
+	rarity = 4,
+	cost = 8,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = "wyrmic's ", prefix=true, instant_resolve=true,
+	keywords = {wyrmic=true},
+	level_range = {1, 50},
+	rarity = 4,
+	cost = 8,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = " of harmony", suffix=true, instant_resolve=true,
+	keywords = {harmony=true},
+	level_range = {1, 50},
+	rarity = 4,
+	cost = 8,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = "fire-drake's ", prefix=true, instant_resolve=true,
+	keywords = {fire=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 40,
+	cost = 40,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = "cold-drake's ", prefix=true, instant_resolve=true,
+	keywords = {cold=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 40,
+	cost = 40,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = "storm-drake's ", prefix=true, instant_resolve=true,
+	keywords = {storm=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 40,
+	cost = 40,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = "sand-drake's ", prefix=true, instant_resolve=true,
+	keywords = {storm=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 40,
+	cost = 40,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = " of calling", suffix=true, instant_resolve=true,
+	keywords = {calling=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 40,
+	cost = 40,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = " of the arch-druid", suffix=true, instant_resolve=true,
+	keywords = {archdruid=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 40,
+	cost = 40,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {nature=true},
+	name = " of the great-wyrm", suffix=true, instant_resolve=true,
+	keywords = {wyrm=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 40,
+	cost = 40,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+-------------------------------------------------------
+--Psionic----------------------------------------------
+-------------------------------------------------------
+newEntity{
+	power_source = {psionic=true},
+	name = "gifted ", prefix=true, instant_resolve=true,
+	keywords = {gifted=true},
+	level_range = {1, 50},
+	rarity = 4,
+	cost = 8,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {psionic=true},
+	name = "psychic's ", prefix=true, instant_resolve=true,
+	keywords = {psychic=true},
+	level_range = {1, 50},
+	rarity = 4,
+	cost = 8,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {psionic=true},
+	name = " of clarity", suffix=true, instant_resolve=true,
+	keywords = {power=true},
+	level_range = {1, 50},
+	rarity = 4,
+	cost = 8,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {psionic=true},
+	name = " of nightmares", suffix=true, instant_resolve=true,
+	keywords = {night=true},
+	level_range = {1, 50},
+	rarity = 4,
+	cost = 8,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {psionic=true},
+ 	name = " of power", suffix=true, instant_resolve=true,
+ 	keywords = {power=true},
+ 	level_range = {1, 50},
+	wielder = {
+ 		combat_mindpower = resolvers.mbonus_material(16, 3),
+ 	},
+ }
+
+newEntity{
+	power_source = {psionic=true},
+	name = " of shrouds", suffix=true, instant_resolve=true,
+	keywords = {shrouds=true},
+	level_range = {1, 50},
+	rarity = 4,
+	cost = 8,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {psionic=true},
+	name = "spire dragon's ", prefix=true, instant_resolve=true,
+	keywords = {spire=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 40,
+	cost = 40,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
+
+newEntity{
+	power_source = {psionic=true},
+	name = " of convergence", suffix=true, instant_resolve=true,
+	keywords = {conv=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 40,
+	cost = 40,
+	wielder = {
+		combat_mindpower = resolvers.mbonus_material(16, 3),
+	},
+}
\ No newline at end of file
diff --git a/game/modules/tome/data/general/objects/egos/weapon.lua b/game/modules/tome/data/general/objects/egos/weapon.lua
index 22d8fd0e5983f88ea75e3edba7992a7eca342004..a81e7674a3cbe017bee33a2fc1a2368a8a1a5fa8 100644
--- a/game/modules/tome/data/general/objects/egos/weapon.lua
+++ b/game/modules/tome/data/general/objects/egos/weapon.lua
@@ -22,140 +22,172 @@
 local Stats = require "engine.interface.ActorStats"
 local Talents = require "engine.interface.ActorTalents"
 
-newEntity{
-	power_source = {arcane=true},
-	name = "flaming ", prefix=true, instant_resolve=true,
-	keywords = {flaming=true},
+-- Idea: Giant(technique, chance to stun on hit and increased weight), Sharp, Jagged, Deft  (of deftness-quick swap),
+-- Wolf, Bear, Snake based nature egos (maybe wolf could summon wolves),
+-- TODO: Talk to Darkgod about instant_resolve
+-------------------------------------------------------
+-- Techniques------------------------------------------
+-------------------------------------------------------
+-- Craftsmanship based egos multiply the bonuses on any other ego applied and may have other minor bonuses based on item type
+--[[newEntity{
+	power_source = {technique=true},
+	name = "fine ", prefix=true, instant_resolve=true,
+	keywords = {fine=true},
 	level_range = {1, 50},
-	rarity = 5,
-	combat = {
-		melee_project={[DamageType.FIRE] = resolvers.mbonus_material(25, 4)},
-	},
-}
-newEntity{
-	power_source = {arcane=true},
-	name = "icy ", prefix=true, instant_resolve=true,
-	keywords = {icy=true},
-	level_range = {15, 50},
-	rarity = 5,
+	rarity = 60,
+	cost = 30,
+	ego_bonus_mult = 0.2,
 	combat = {
-		melee_project={[DamageType.ICE] = resolvers.mbonus_material(15, 4)},
+		dam = 2,
+		apr = 2,
+		physcrit = 2,
 	},
 }
+
 newEntity{
-	power_source = {nature=true},
-	name = "acidic ", prefix=true, instant_resolve=true,
-	keywords = {acidic=true},
+	power_source = {technique=true},
+	name = " of quality", suffix=true, instant_resolve=true,
+	keywords = {quality=true},
 	level_range = {1, 50},
-	rarity = 5,
+	rarity = 60,
+	cost = 30,
+	ego_bonus_mult = 0.2,
 	combat = {
-		melee_project={[DamageType.ACID] = resolvers.mbonus_material(25, 4)},
+		dam = 2,
+		apr = 2,
+		physcrit = 2,
 	},
 }
+
 newEntity{
-	power_source = {arcane=true},
-	name = "shocking ", prefix=true, instant_resolve=true,
-	keywords = {shocking=true},
-	level_range = {1, 50},
-	rarity = 5,
+	power_source = {technique=true},
+	name = "exceptional ", prefix=true, instant_resolve=true,
+	keywords = {except=true},
+	greater_ego = 1,
+	level_range = {25, 50},
+	rarity = 60,
+	cost = 60,
+	ego_bonus_mult = 0.4,
 	combat = {
-		melee_project={[DamageType.LIGHTNING] = resolvers.mbonus_material(25, 4)},
+		dam = 4,
+		apr = 4,
+		physcrit = 4,
 	},
 }
 
 newEntity{
-	power_source = {nature=true},
-	name = "poisonous ", prefix=true, instant_resolve=true,
-	keywords = {poisonous=true},
-	level_range = {1, 50},
-	rarity = 5,
+	power_source = {technique=true},
+	name = " of the master", suffix=true, instant_resolve=true,
+	keywords = {master=true},
+	greater_ego = 1,
+	level_range = {25, 50},
+	rarity = 60,
+	cost = 60,
+	ego_bonus_mult = 0.4,
 	combat = {
-		melee_project={[DamageType.POISON] = resolvers.mbonus_material(45, 6)},
+		dam = 4,
+		apr = 4,
+		physcrit = 4,
 	},
-}
-
+}]]--
+-- Lesser
 newEntity{
-	power_source = {nature=true},
-	name = "slime-covered ", prefix=true, instant_resolve=true,
-	keywords = {slime=true},
-	level_range = {10, 50},
+	power_source = {technique=true},
+	name = "balanced ", prefix=true, instant_resolve=true,
+	keywords = {balanced=true},
+	level_range = {1, 50},
 	rarity = 5,
-	combat = {
-		melee_project={[DamageType.SLIME] = resolvers.mbonus_material(45, 6)},
+	cost = 15,
+	wielder={
+		combat_atk = resolvers.mbonus_material(10, 2),
+		combat_def = resolvers.mbonus_material(10, 2),
 	},
 }
 
 newEntity{
 	power_source = {technique=true},
-	name = " of accuracy", suffix=true, instant_resolve=true,
-	keywords = {accuracy=true},
+	name = " of crippling", suffix=true, instant_resolve=true,
+	keywords = {crippling=true},
 	level_range = {1, 50},
 	rarity = 3,
 	cost = 4,
-	wielder={combat_atk = resolvers.mbonus_material(20, 5)},
+	wielder = {
+		combat_physcrit = resolvers.mbonus_material(10, 2),
+	},
+	combat = {
+		special_on_crit = {desc="cripple the target", fct=function(combat, who, target)
+			local power = 5 + (who:combatPhysicalpower()/5)
+			target:setEffect(target.EFF_CRIPPLE, 4, {src=who, atk=power, dam=power, apply_power=who:combatAttack(combat)})
+		end},
+	},
 }
 
 newEntity{
-	power_source = {arcane=true},
-	name = "phase ", prefix=true, instant_resolve=true,
-	keywords = {phase=true},
+	power_source = {technique=true},
+	name = " of massacre", suffix=true, instant_resolve=true,
+	keywords = {massacre=true},
 	level_range = {1, 50},
 	rarity = 3,
-	cost = 6,
-	combat={apr = resolvers.mbonus_material(20, 5)},
+	cost = 4,
+	combat = {
+		dam = resolvers.mbonus_material(10, 2),
+	},
 }
 
+-- Greater 
 newEntity{
-	power_source = {arcane=true},
-	name = "elemental ", prefix=true, instant_resolve=true,
-	keywords = {elemental=true},
-	level_range = {35, 50},
+	power_source = {technique=true},
+	name = "quick ", prefix=true, instant_resolve=true,
+	keywords = {quick=true},
+	level_range = {30, 50},
 	greater_ego = 1,
 	rarity = 25,
-	cost = 35,
-	combat = {
-		melee_project={
-			[DamageType.FIRE] = resolvers.mbonus_material(25, 4),
-			[DamageType.ICE] = resolvers.mbonus_material(15, 4),
-			[DamageType.ACID] = resolvers.mbonus_material(25, 4),
-			[DamageType.LIGHTNING] = resolvers.mbonus_material(25, 4),
+	cost = 30,
+	combat = { physspeed = -0.1 },
+	wielder = {
+		combat_atk = resolvers.mbonus_material(10, 2),
+		inc_stats = {
+			[Stats.STAT_DEX] = resolvers.mbonus_material(6, 1),
 		},
 	},
 }
 
 newEntity{
 	power_source = {technique=true},
-	name = " of massacre", suffix=true, instant_resolve=true,
-	keywords = {massacre=true},
-	level_range = {1, 50},
-	rarity = 3,
-	cost = 4,
-	combat = {
-		dam = resolvers.mbonus_material(15, 5),
+	name = "warbringer's ", prefix=true, instant_resolve=true,
+	keywords = {warbringer=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 30,
+	cost = 40,
+	wielder = {
+		inc_stats = {
+			[Stats.STAT_CON] = resolvers.mbonus_material(6, 1),
+		},
+		disarm_immune = resolvers.mbonus_material(25, 5, function(e, v) v=v/100 return 0, v end),
+		combat_dam = resolvers.mbonus_material(10, 2),
+		resists_pen = {
+			[DamageType.PHYSICAL] = resolvers.mbonus_material(10, 2),
+		},
 	},
 }
 
 newEntity{
-	power_source = {arcane=true},
-	name = " of torment", suffix=true, instant_resolve=true,
-	keywords = {torment=true},
-	level_range = {15, 50},
-	rarity = 18,
-	cost = 22,
-	combat = {
-		special_on_hit = {desc="10% chance to torment the target", fct=function(combat, who, target)
-			if not rng.percent(10) then return end
-			local eff = rng.table{"stun", "blind", "pin", "teleport", "stone", "confusion", "silence", "knockback"}
-			if not target:canBe(eff) then return end
-			if not target:checkHit(who:combatAttack(combat), target:combatPhysicalResist(), 15) then return end
-			if eff == "stun" then target:setEffect(target.EFF_STUNNED, 3, {})
-			elseif eff == "blind" then target:setEffect(target.EFF_BLINDED, 3, {})
-			elseif eff == "pin" then target:setEffect(target.EFF_PINNED, 3, {})
-			elseif eff == "confusion" then target:setEffect(target.EFF_CONFUSED, 3, {power=60})
-			elseif eff == "silence" then target:setEffect(target.EFF_SILENCED, 3, {})
-			elseif eff == "knockback" then target:knockback(who.x, who.y, 3)
-			elseif eff == "teleport" then target:teleportRandom(target.x, target.y, 10)
-			end
+	power_source = {technique=true},
+	name = " of evisceration", suffix=true, instant_resolve=true ,
+	keywords = {evisc=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 20,
+	cost = 40,
+	wielder = {
+		combat_physcrit = resolvers.mbonus_material(10, 2),
+		combat_dam = resolvers.mbonus_material(10, 2),
+	},
+	combat = { 
+		special_on_crit = {desc="wounds the target", fct=function(combat, who, target)
+			local dam = 5 + (who:combatPhysicalpower()/5)
+			target:setEffect(target.EFF_DEEP_WOUND, 7, {src=who, heal_factor=dam * 2, power=dam, apply_power=who:combatAttack()})
 		end},
 	},
 }
@@ -171,369 +203,781 @@ newEntity{
 	wielder = {
 		combat_atk = resolvers.mbonus_material(10, 2),
 		inc_damage = {
-			[DamageType.PHYSICAL] = resolvers.mbonus_material(15, 4),
+			[DamageType.PHYSICAL] = resolvers.mbonus_material(10, 2),
 		},
 		inc_stats = {
-			[Stats.STAT_DEX] = resolvers.mbonus_material(4, 3),
-			[Stats.STAT_STR] = resolvers.mbonus_material(4, 3),
+			[Stats.STAT_STR] = resolvers.mbonus_material(6, 1),
 		},
-		stamina_regen_on_hit = resolvers.mbonus_material(23, 7, function(e, v) v=v/10 return 0, v end),
+		stamina_regen_on_hit = resolvers.mbonus_material(20, 5, function(e, v) v=v/10 return 0, v end),
 	},
-	combat = {
-		apr = resolvers.mbonus_material(8, 1),
+}
+
+newEntity{
+	power_source = {technique=true},
+	name = " of ruin", suffix=true, instant_resolve=true,
+	keywords = {ruin=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 20,
+	cost = 25,
+	wielder = {
+		combat_physcrit = resolvers.mbonus_material(10, 2),
+		combat_critical_power = resolvers.mbonus_material(10, 10),
+		combat_apr = resolvers.mbonus_material(10, 2),
 	},
 }
 
 newEntity{
-	power_source = {arcane=true},
-	name = " of corruption", suffix=true, instant_resolve=true,
-	keywords = {corruption=true},
-	level_range = {35, 50},
+	power_source = {technique=true},
+	name = " of shearing", suffix=true, instant_resolve=true,
+	keywords = {shearing=true},
+	level_range = {30, 50},
 	greater_ego = 1,
 	rarity = 20,
-	cost = 35,
+	cost = 40,
+	wielder = {
+		combat_apr = resolvers.mbonus_material(10, 2),
+		inc_damage = {
+			[DamageType.PHYSICAL] = resolvers.mbonus_material(10, 2),
+		},
+		resists_pen = {
+			[DamageType.PHYSICAL] = resolvers.mbonus_material(10, 2),
+		},
+	},
+}
+
+-------------------------------------------------------
+-- Arcane Egos-----------------------------------------
+-------------------------------------------------------
+newEntity{
+	power_source = {arcane=true},
+	name = "acidic ", prefix=true, instant_resolve=true,
+	keywords = {acidic=true},
+	level_range = {1, 50},
+	rarity = 5,
+	cost = 10,
 	combat = {
 		melee_project={
-			[DamageType.BLIGHT] = resolvers.mbonus_material(25, 4),
-			[DamageType.DARKNESS] = resolvers.mbonus_material(25, 4),
+			[DamageType.ACID] = resolvers.mbonus_material(15, 4)
 		},
+		special_on_crit = {desc="splashes the target", fct=function(combat, who, target)
+			local power = 5 + (who:combatSpellpower()/10)
+			target:setEffect(target.EFF_ACID_SPLASH, 5, {src=who, dam=power, atk=power, armor=power})
+		end},
 	},
-	wielder = {
-		see_invisible = resolvers.mbonus_material(20, 5),
-		combat_physcrit = resolvers.mbonus_material(10, 4),
+}
+
+newEntity{
+	power_source = {arcane=true},
+	name = "flaming ", prefix=true, instant_resolve=true,
+	keywords = {flaming=true},
+	level_range = {1, 50},
+	rarity = 5,
+	cost = 10,
+	combat = {
+		burst_on_hit={
+			[DamageType.FIRE] = resolvers.mbonus_material(15, 4)
+		},
 	},
 }
 
 newEntity{
-	power_source = {technique=true},
-	name = " of crippling", suffix=true, instant_resolve=true,
-	keywords = {crippling=true},
+	power_source = {arcane=true},
+	name = "icy ", prefix=true, instant_resolve=true,
+	keywords = {icy=true},
+	level_range = {15, 50},
+	rarity = 5,
+	cost = 10,
+	combat = {
+		melee_project={
+			[DamageType.ICE] = resolvers.mbonus_material(15, 4)
+		},
+	},
+}
+
+newEntity{
+	power_source = {arcane=true},
+	name = "arcing ", prefix=true, instant_resolve=true,
+	keywords = {shocking=true},
 	level_range = {1, 50},
-	rarity = 3,
-	cost = 4,
-	wielder = {
-		combat_physcrit = resolvers.mbonus_material(7, 3),
+	rarity = 5,
+	cost = 10,
+	combat = {
+		melee_project={
+			[DamageType.LIGHTNING] = resolvers.mbonus_material(15, 4),
+		},
+		special_on_hit = {desc="25% chance for lightning to arc to a second target", fct=function(combat, who, target)
+			if not rng.percent(25) then return end
+			local tgts = {}
+			local x, y = target.x, target.y
+			local grids = core.fov.circle_grids(x, y, 5, true)
+			for x, yy in pairs(grids) do for y, _ in pairs(grids[x]) do
+				local a = game.level.map(x, y, engine.Map.ACTOR)
+				if a and a ~= target and who:reactionToward(a) < 0 then
+					tgts[#tgts+1] = a
+				end
+			end end
+
+			-- Randomly take targets
+			local tg = {type="beam", range=5, friendlyfire=false}
+			if #tgts <= 0 then return end
+			local a, id = rng.table(tgts)
+			table.remove(tgts, id)
+			local dam = 30 + (who:combatSpellpower())
+			
+			who:project(tg, a.x, a.y, engine.DamageType.LIGHTNING, rng.avg(1, dam, 3))
+			game.level.map:particleEmitter(x, y, math.max(math.abs(a.x-x), math.abs(a.y-y)), "lightning", {tx=a.x-x, ty=a.y-y})
+			game:playSoundNear(who, "talents/lightning")
+		end},
 	},
 }
 
 newEntity{
-	power_source = {nature=true},
+	power_source = {arcane=true},
 	name = " of daylight", suffix=true, instant_resolve=true,
 	keywords = {daylight=true},
 	level_range = {1, 50},
-	rarity = 3,
-	cost = 4,
+	rarity = 10,
+	cost = 20,
 	combat = {
-		melee_project={[DamageType.LIGHT] = resolvers.mbonus_material(45, 6)},
+		melee_project={[DamageType.LIGHT] = resolvers.mbonus_material(15, 4)},
+		inc_damage_type = {undead=resolvers.mbonus_material(25, 5)},
 	},
 }
 
 newEntity{
-	power_source = {technique=true},
-	name = " of defense", suffix=true, instant_resolve=true,
-	keywords = {defense=true},
+	power_source = {arcane=true},
+	name = " of phasing", suffix=true, instant_resolve=true,
+	keywords = {phase=true},
 	level_range = {1, 50},
-	rarity = 3,
-	cost = 4,
+	rarity = 15,
+	cost = 30,
+	combat={
+		apr = resolvers.mbonus_material(10, 2),
+		phasing = resolvers.mbonus_material(50, 10)
+	},
+}
+
+newEntity{
+	power_source = {arcane=true},
+	name = " of vileness", suffix=true, instant_resolve=true,
+	keywords = {vile=true},
+	level_range = {1, 50},
+	rarity = 15,
+	cost = 30,
+	combat={
+		melee_project = {
+			[DamageType.BLIGHT] = resolvers.mbonus_material(15, 4)
+		},
+		burst_on_crit = {
+			[DamageType.CORRUPTED_BLOOD] = resolvers.mbonus_material(25, 5),
+		},
+	},
+}
+
+newEntity{
+	power_source = {arcane=true},
+	name = " of paradox", suffix=true, instant_resolve=true,
+	keywords = {paradox=true},
+	level_range = {1, 50},
+	rarity = 15,
+	cost = 30,
 	wielder = {
-		combat_def = resolvers.mbonus_material(7, 3),
+		resists={
+			[DamageType.TEMPORAL] = resolvers.mbonus_material(15, 5),
+		},
+		on_melee_hit = {
+			[DamageType.TEMPORAL] = resolvers.mbonus_material(10, 2),
+		},
+	},
+	combat = {
+		melee_project = {
+			[DamageType.TEMPORAL] = resolvers.mbonus_material(15, 4)
+		},
 	},
 }
 
+-- Greater Egos
 newEntity{
-	power_source = {technique=true},
-	name = " of ruin", suffix=true, instant_resolve=true,
-	keywords = {ruin=true},
-	level_range = {15, 50},
+	power_source = {arcane=true},
+	name = "elemental ", prefix=true, instant_resolve=true,
+	keywords = {elemental=true},
+	level_range = {35, 50},
+	greater_ego = 1,
+	rarity = 25,
+	cost = 35,
+	combat = {
+		convert_damage ={
+			[DamageType.FIRE] = resolvers.mbonus_material(25, 10),
+			[DamageType.COLD] = resolvers.mbonus_material(25, 10),
+			[DamageType.ACID] = resolvers.mbonus_material(25, 10),
+			[DamageType.LIGHTNING] = resolvers.mbonus_material(25, 10),
+		},
+		special_on_hit = {desc="random elemental effect", fct=function(combat, who, target)
+			local dam = 20 + (who:combatSpellpower()/5)
+			local tg = {type="hit", range=1}
+			local elem = rng.table{
+				{engine.DamageType.FIREBURN, "flame"},
+				{engine.DamageType.ICE, "freeze"},
+				{engine.DamageType.LIGHTNING_DAZE, "lightning_explosion"},
+				{engine.DamageType.ACID_BLIND, "acid"},
+			}
+			who:project(tg, target.x, target.y, elem[1], rng.avg(dam / 2, dam, 3), {type=elem[2]})		
+		end},
+	},
+}
+
+newEntity{
+	power_source = {arcane=true},
+	name = "plaguebringer's ", prefix=true, instant_resolve=true,
+	keywords = {plague=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 30,
+	cost = 60,
+	wielder = {
+		disease_immune = resolvers.mbonus_material(25, 10, function(e, v) v=v/100 return 0, v end),
+	},
+	combat = {
+		melee_project = {
+			[DamageType.BLIGHT] = resolvers.mbonus_material(15, 4),
+		},
+		talent_on_hit = { [Talents.T_EPIDEMIC] = {level=1, chance=10} },
+	},
+}
+
+newEntity{
+	power_source = {arcane=true},
+	name = " of corruption", suffix=true, instant_resolve=true,
+	keywords = {corruption=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 35,
+	cost = 40,
+	combat = {
+		melee_project={
+			[DamageType.BLIGHT] = resolvers.mbonus_material(15, 4),
+			[DamageType.DARKNESS] = resolvers.mbonus_material(15, 4),
+		},
+		special_on_hit = {desc="20% chance to curse the target", fct=function(combat, who, target)
+			if not rng.percent(20) then return end
+			local eff = rng.table{"vuln", "defenseless", "impotence", "death", }
+			if not target:checkHit(who:combatSpellpower(), target:combatSpellResist()) then return end
+			if eff == "vuln" then target:setEffect(target.EFF_CURSE_VULNERABILITY, 2, {power=20})
+			elseif eff == "defenseless" then target:setEffect(target.EFF_CURSE_DEFENSELESSNESS, 2, {power=20})
+			elseif eff == "impotence" then target:setEffect(target.EFF_CURSE_IMPOTENCE, 2, {power=20})
+			elseif eff == "death" then target:setEffect(target.EFF_CURSE_DEATH, 2, {src=who, power=20})
+			end
+		end},
+	},
+}
+
+newEntity{
+	power_source = {arcane=true},
+	name = " of the mystic", suffix=true, instant_resolve=true,
+	keywords = {mystic=true},
+	level_range = {30, 50},
 	greater_ego = 1,
-	rarity = 20,
-	cost = 25,
+	rarity = 30,
+	cost = 30,
 	wielder = {
+		combat_spellcrit = resolvers.mbonus_material(10, 2),
 		inc_stats = {
-			[Stats.STAT_STR] = resolvers.mbonus_material(4, 3),
+			[Stats.STAT_MAG] = resolvers.mbonus_material(6, 1),
+			[Stats.STAT_WIL] = resolvers.mbonus_material(6, 1),
 		},
-		combat_physcrit = resolvers.mbonus_material(7, 3),
-		combat_critical_power = resolvers.mbonus_material(10, 10),
-		combat_apr = resolvers.mbonus_material(7, 3),
 	},
+}
 
+-------------------------------------------------------
+-- Nature/Antimagic Egos:------------------------------
+-------------------------------------------------------
+newEntity{
+	power_source = {nature=true},
+	name = "huntsmen's ", prefix=true, instant_resolve=true,
+	keywords = {hunt=true},
+	level_range = {1, 50},
+	rarity = 10,
+	cost = 20,
+	combat = {
+		melee_project={[DamageType.NATURE] = resolvers.mbonus_material(15, 4)},
+		inc_damage_type = {animal=resolvers.mbonus_material(25, 5)},
+	},
 }
 
 newEntity{
-	power_source = {technique=true},
-	name = "quick ", prefix=true, instant_resolve=true,
-	keywords = {quick=true},
-	level_range = {20, 50},
-	greater_ego = 1,
-	rarity = 25,
-	cost = 30,
-	combat = { physspeed = -0.1 },
-	wielder = {
-		combat_atk = resolvers.mbonus_material(20, 2),
-		inc_stats = {
-			[Stats.STAT_DEX] = resolvers.mbonus_material(4, 3),
-			[Stats.STAT_CUN] = resolvers.mbonus_material(4, 3),
+	power_source = {nature=true},
+	name = "insidious ", prefix=true, instant_resolve=true,
+	keywords = {insid=true},
+	level_range = {10, 50},
+	rarity = 5,
+	cost = 15,
+	combat = {
+		melee_project={
+			[DamageType.INSIDIOUS_POISON] = resolvers.mbonus_material(48, 8), -- this gets divided by 7 for damage
 		},
 	},
 }
 
 newEntity{
-	power_source = {arcane=true},
-	name = "mystic ", prefix=true, instant_resolve=true,
-	keywords = {mystic=true},
-	level_range = {20, 50},
-	greater_ego = 1,
-	rarity = 20,
-	cost = 30,
-	wielder = {
-		combat_spellcrit = resolvers.mbonus_material(7, 3),
-		inc_stats = {
-			[Stats.STAT_MAG] = resolvers.mbonus_material(4, 3),
-			[Stats.STAT_WIL] = resolvers.mbonus_material(4, 3),
+	power_source = {nature=true},
+	name = " of erosion", suffix=true, instant_resolve=true,
+	keywords = {erosion=true},
+	level_range = {1, 50},
+	rarity = 5,
+	cost = 15,
+	combat = {
+		melee_project={
+			[DamageType.NATURE] = resolvers.mbonus_material(15, 4),
+			[DamageType.WASTING] = resolvers.mbonus_material(15, 4),
 		},
 	},
 }
 
 newEntity{
-	power_source = {technique=true},
+	power_source = {nature=true},
 	name = "blazebringer's ", prefix=true, instant_resolve=true,
 	keywords = {blaze=true},
-	level_range = {10, 50},
+	level_range = {30, 50},
 	greater_ego = 1,
-	rarity = 35,
+	rarity = 45,
 	cost = 40,
 	wielder = {
-		on_melee_hit = {
-			[DamageType.FIRE] = resolvers.mbonus_material(20, 5),
-		},
+		global_speed_add = resolvers.mbonus_material(10, 5, function(e, v) v=v/100 return 0, v end),
 		resists_pen = {
-			[DamageType.FIRE] = resolvers.mbonus_material(20, 5),
+			[DamageType.FIRE] = resolvers.mbonus_material(10, 2),
 		},
 	},
 	combat = {
-		melee_project = {
-			[DamageType.FIRE] = resolvers.mbonus_material(46, 5),
+		convert_damage = { 
+			[DamageType.FIREBURN] = resolvers.mbonus_material(25, 5, function(e, v) v=math.min(50, v) return 0, v end),
 		},
 	},
 }
 
 newEntity{
-	power_source = {technique=true},
-	name = "glacial ", prefix=true, instant_resolve=true,
-	keywords = {glacial=true},
+	power_source = {nature=true},
+	name = "caustic ", prefix=true, instant_resolve=true,
+	keywords = {caustic=true},
 	level_range = {30, 50},
 	greater_ego = 1,
 	rarity = 45,
 	cost = 40,
 	wielder = {
-		on_melee_hit = {
-			[DamageType.ICE] = resolvers.mbonus_material(20, 5),
-		},
+		life_regen = resolvers.mbonus_material(20, 5, function(e, v) v=v/10 return 0, v end),
 		resists_pen = {
-			[DamageType.COLD] = resolvers.mbonus_material(20, 5),
+			[DamageType.ACID] = resolvers.mbonus_material(10, 2),
 		},
 	},
 	combat = {
-		melee_project = {
-			[DamageType.COLD] = resolvers.mbonus_material(46, 5),
+		convert_damage = { 
+			[DamageType.ACID_BLIND] = resolvers.mbonus_material(25, 5, function(e, v) v=math.min(50, v) return 0, v end),
 		},
 	},
 }
 
 newEntity{
-	power_source = {technique=true},
+	power_source = {nature=true},
 	name = "thunderous ", prefix=true, instant_resolve=true,
 	keywords = {thunder=true},
-	level_range = {10, 50},
+	level_range = {30, 50},
 	greater_ego = 1,
-	rarity = 35,
+	rarity = 45,
 	cost = 40,
 	wielder = {
-		on_melee_hit = {
-			[DamageType.LIGHTNING] = resolvers.mbonus_material(20, 5),
+		inc_stats = {
+			[Stats.STAT_STR] = resolvers.mbonus_material(3, 1),
+			[Stats.STAT_DEX] = resolvers.mbonus_material(3, 1),
+			[Stats.STAT_MAG] = resolvers.mbonus_material(3, 1),
+			[Stats.STAT_WIL] = resolvers.mbonus_material(3, 1),
+			[Stats.STAT_CUN] = resolvers.mbonus_material(3, 1),
+			[Stats.STAT_CON] = resolvers.mbonus_material(3, 1),
 		},
 		resists_pen = {
-			[DamageType.LIGHTNING] = resolvers.mbonus_material(20, 5),
+			[DamageType.LIGHTNING] = resolvers.mbonus_material(10, 2),
 		},
 	},
 	combat = {
-		melee_project = {
-			[DamageType.LIGHTNING] = resolvers.mbonus_material(46, 5),
+		convert_damage = { 
+			[DamageType.LIGHTNING_DAZE] = resolvers.mbonus_material(25, 5, function(e, v) v=math.min(50, v) return 0, v end),
 		},
 	},
 }
 
 newEntity{
-	power_source = {technique=true},
-	name = "caustic ", prefix=true, instant_resolve=true,
-	keywords = {caustic=true},
-	level_range = {10, 50},
+	power_source = {nature=true},
+	name = "glacial ", prefix=true, instant_resolve=true,
+	keywords = {glacial=true},
+	level_range = {30, 50},
 	greater_ego = 1,
-	rarity = 35,
+	rarity = 45,
 	cost = 40,
 	wielder = {
-		on_melee_hit = {
-			[DamageType.ACID] = resolvers.mbonus_material(20, 5),
-		},
+		combat_armor = resolvers.mbonus_material(10, 2),
 		resists_pen = {
-			[DamageType.ACID] = resolvers.mbonus_material(20, 5),
+			[DamageType.COLD] = resolvers.mbonus_material(10, 2),
 		},
 	},
 	combat = {
-		melee_project = {
-			[DamageType.ACID] = resolvers.mbonus_material(46, 5),
+		convert_damage = { 
+			[DamageType.ICE] = resolvers.mbonus_material(25, 5, function(e, v) v=math.min(50, v) return 0, v end),
 		},
 	},
 }
 
 newEntity{
 	power_source = {nature=true},
-	name = "vile ", prefix=true, instant_resolve=true,
-	keywords = {vile=true},
+	name = " of gravity", suffix=true, instant_resolve=true,
+	keywords = {gravity=true},
 	level_range = {30, 50},
 	greater_ego = 1,
-	rarity = 45,
-	cost = 40,
+	rarity = 30,
+	cost = 30,
 	wielder = {
-		on_melee_hit = {
-			[DamageType.SLIME] = resolvers.mbonus_material(20, 5),
-		},
-		resists_pen = {
-			[DamageType.NATURE] = resolvers.mbonus_material(20, 5),
+		inc_damage = {
+			[DamageType.PHYSICAL] = resolvers.mbonus_material(10, 2),
 		},
 	},
 	combat = {
-		melee_project = {
-			[DamageType.SLIME] = resolvers.mbonus_material(46, 5),
-		},
+		melee_project={
+			[DamageType.GRAVITY] = resolvers.mbonus_material(15, 4),
+		},
+		special_on_hit = {desc="25% chance to crush the target", fct=function(combat, who, target)
+			if not rng.percent(25) then return end
+			if target:attr("never_move") then
+				local tg = {type="hit", range=1}
+				who:project(tg, target.x, target.y, engine.DamageType.IMPLOSION, 10 + who:combatMindpower()/4)
+			elseif target:canBe("pin") then
+				target:setEffect(target.EFF_PINNED, 3, {src=who, apply_power=who:combatAttack(combat)})
+			else
+				game.logSeen(target, "%s resists the pin!", target.name:capitalize())
+			end
+		end},
 	},
 }
 
 newEntity{
-	power_source = {technique=true},
-	name = "warbringer's ", prefix=true, instant_resolve=true,
-	keywords = {warbringer=true},
+	power_source = {nature=true},
+	name = " of nature", suffix=true, instant_resolve=true,
+	keywords = {nature=true},
 	level_range = {30, 50},
 	greater_ego = 1,
-	rarity = 30,
+	rarity = 45,
 	cost = 40,
 	wielder = {
-		inc_stats = {
-			[Stats.STAT_CON] = resolvers.mbonus_material(9, 1),
-		},
-		disarm_immune = resolvers.mbonus_material(25, 10, function(e, v) v=v/100 return 0, v end),
-		combat_dam = resolvers.mbonus_material(15, 5),
+		resists = { all = resolvers.mbonus_material(10, 2) },
 		resists_pen = {
-			[DamageType.PHYSICAL] = resolvers.mbonus_material(15, 5),
+			[DamageType.NATURE] = resolvers.mbonus_material(10, 2),
+		},
+	},
+	combat = {
+		convert_damage = { 
+			[DamageType.POISON] = resolvers.mbonus_material(25, 4),
 		},
 	},
 }
 
+-- Antimagic
 newEntity{
-	power_source = {technique=true},
-	name = " of shearing", suffix=true, instant_resolve=true,
-	keywords = {shearing=true},
-	level_range = {20, 50},
-	greater_ego = 1,
+	power_source = {antimagic=true},
+	name = "manaburning ", prefix=true, instant_resolve=true,
+	keywords = {manaburning=true},
+	level_range = {1, 50},
 	rarity = 20,
 	cost = 40,
-	wielder = {
-		combat_apr = resolvers.mbonus_material(15, 5),
-		inc_damage = {
-			[DamageType.PHYSICAL] = resolvers.mbonus_material(10, 5),
-		},
-		resists_pen = {
-			[DamageType.PHYSICAL] = resolvers.mbonus_material(15, 5),
+	combat = {
+		melee_project = {
+			[DamageType.MANABURN] = resolvers.mbonus_material(25, 8),
 		},
 	},
 }
 
 newEntity{
-	power_source = {arcane=true},
-	name = " of plague", suffix=true, instant_resolve=true,
-	keywords = {plague=true},
-	level_range = {20, 50},
-	greater_ego = 1,
-	rarity = 30,
-	cost = 60,
-	max_power = 80, power_regen = 1,
-	use_talent = { id = Talents.T_EPIDEMIC, level = 4, power = 80 },
-	wielder = {
-		inc_stats = {
-			[Stats.STAT_CON] = resolvers.mbonus_material(10, 5, function(e, v) return 0, -v end),
-			[Stats.STAT_MAG] = resolvers.mbonus_material(5, 1),
-		},
-		disease_immune = resolvers.mbonus_material(55, 10, function(e, v) v=v/100 return 0, v end),
+	power_source = {antimagic=true},
+	name = "slime-covered ", prefix=true, instant_resolve=true,
+	keywords = {slime=true},
+	level_range = {1, 50},
+	rarity = 20,
+	cost = 15,
+	combat = {
+		melee_project={[DamageType.SLIME] = resolvers.mbonus_material(15, 4)},
 	},
+}
+
+newEntity{
+	power_source = {antimagic=true},
+	name = " of banishment", suffix=true, instant_resolve=true,
+	keywords = {banishment=true},
+	level_range = {1, 50},
+	rarity = 20,
+	cost = 20,
 	combat = {
-		melee_project = {
-			[DamageType.BLIGHT] = resolvers.mbonus_material(46, 5),
-		},
+		inc_stats = { [Stats.STAT_WIL] = resolvers.mbonus_material(6, 1), },
+		inc_damage_type = {demon=resolvers.mbonus_material(25, 5)},
 	},
 }
 
 newEntity{
-	power_source = {technique=true},
-	name = " of projection", suffix=true, instant_resolve=true,
-	keywords = {projection=true},
+	power_source = {antimagic=true},
+	name = " of purging", suffix=true, instant_resolve=true,
+	keywords = {purging=true},
+	level_range = {1, 50},
+	rarity = 20,
+	cost = 20,
+	combat = {
+		melee_project={[DamageType.NATURE] = resolvers.mbonus_material(15, 4)},
+		special_on_hit = {desc="25% chance to remove a magical effect", fct=function(combat, who, target)
+			if not rng.percent(25) then return end
+			-- Go through all spell effects
+			for eff_id, p in pairs(target.tmp) do
+				local e = target.tempeffect_def[eff_id]
+				if e.type == "magical" then
+					effs[#effs+1] = {"effect", eff_id}
+				end
+			end
+
+			-- Go through all sustained spells
+			for tid, act in pairs(target.sustain_talents) do
+				if act then
+					local talent = target:getTalentFromId(tid)
+					if talent.is_spell then effs[#effs+1] = {"talent", tid} end
+				end
+			end
+			
+			local eff = rng.tableRemove(effs)
+
+			if eff[1] == "effect" then
+				target:removeEffect(eff[2])
+			else
+				target:forceUseTalent(eff[2], {ignore_energy=true})
+			end
+		end},
+	},
+}
+
+newEntity{
+	power_source = {antimagic=true},
+	name = "inquisitor's ", prefix=true, instant_resolve=true,
+	keywords = {inquisitors=true},
 	level_range = {30, 50},
+	rarity = 45,
 	greater_ego = 1,
-	rarity = 30,
-	cost = 60,
-	max_power = 20, power_regen = 1,
-	use_talent = { id = Talents.T_WAVE_OF_POWER, level = 4, power = 12 },
+	cost = 40,
+	combat = {
+		melee_project = {
+			[DamageType.MANABURN] = resolvers.mbonus_material(25, 8),
+		},
+		special_on_crit = {desc="burns latenet spell energy", fct=function(combat, who, target)
+			local turns = 1 + math.ceil(who:combatMindpower() / 20)
+			if not who:checkHit(who:combatMindpower(), target:combatMentalResist()) then game.logSeen(target, "%s resists!", target.name:capitalize()) return nil end
+			
+			local tids = {}
+			for tid, lev in pairs(target.talents) do
+				local t = target:getTalentFromId(tid)
+				if t and not target.talents_cd[tid] and t.mode == "activated" and t.is_spell and not t.innate then tids[#tids+1] = t end
+			end
+			
+			local t = rng.tableRemove(tids)
+			if not t then return nil end
+			local damage = t.mana or t.vim or t.positive or t.negative or t.paradox or 0
+			target.talents_cd[t.id] = turns
+			
+			local tg = {type="hit", range=1}
+			who:project(tg, target.x, target.y, engine.DamageType.ARCANE, damage)
+			
+			game.logSeen(target, "%s's %s has been burned!", target.name:capitalize(), t.name)
+		end},
+	},
 }
 
 newEntity{
-	power_source = {technique=true},
-	name = " of sacrifice", suffix=true, instant_resolve=true,
-	keywords = {sacrifice=true},
-	level_range = {20, 50},
+	power_source = {antimagic=true},
+	name = " of disruption", suffix=true, instant_resolve=true,
+	keywords = {disruption=true},
+	level_range = {30, 50},
 	greater_ego = 1,
-	rarity = 20,
+	rarity = 50,
 	cost = 40,
-	max_power = 80, power_regen = 1,
-	use_talent = { id = Talents.T_LIFE_TAP, level = 3, power = 80 },
 	wielder = {
-		combat_physcrit = resolvers.mbonus_material(4, 3),
-		combat_dam = resolvers.mbonus_material(12, 3),
+		},
+	combat = {
+		inc_damage_type = {
+			undead=resolvers.mbonus_material(25, 5), 
+			construct=resolvers.mbonus_material(25, 5),
+		},
+		special_on_hit = {desc="disrupts spell-casting", fct=function(combat, who, target)
+			target:setEffect(target.EFF_SPELL_DISRUPTION, 10, {src=who, power = 10, max = 50, apply_power=who:combatMindpower()})
+		end},
 	},
 }
 
 newEntity{
-	power_source = {arcane=true},
-	name = " of paradox", suffix=true, instant_resolve=true,
-	keywords = {paradox=true},
-	level_range = {1, 50},
+	power_source = {antimagic=true},
+	name = " of the leech", suffix=true, instant_resolve=true,
+	keywords = {leech=true},
+	level_range = {30, 50},
 	greater_ego = 1,
-	rarity = 15,
-	cost = 30,
+	rarity = 50,
+	cost = 40,
 	wielder = {
-		resists={
-			[DamageType.TEMPORAL] = resolvers.mbonus_material(15, 5),
-		},
 		on_melee_hit = {
-			[DamageType.TEMPORAL] = resolvers.mbonus_material(10, 5),
+			[DamageType.SLIME] = resolvers.mbonus_material(15, 4),
 		},
 	},
 	combat = {
-		melee_project = {
-			[DamageType.TEMPORAL] = resolvers.mbonus_material(46, 5),
+		melee_project={[DamageType.SLIME] = resolvers.mbonus_material(15, 4)},
+		special_on_hit = {desc="leeches stamina from the target", fct=function(combat, who, target)
+			if target and target:getStamina() > 0 then
+				local leech = who:combatMindpower() / 50
+				local leeched = math.min(leech, target:getStamina())
+				who:incStamina(leeched)
+				target:incStamina(-leeched)
+			end				
+		end},
+	},
+}
+
+-------------------------------------------------------
+-- Psionic Egos: --------------------------------------
+-------------------------------------------------------
+newEntity{
+	power_source = {psionic=true},
+	name = "hateful ", prefix=true, instant_resolve=true,
+	keywords = {hateful=true},
+	level_range = {1, 50},
+	rarity = 10,
+	cost = 20,
+	combat = {
+		melee_project={[DamageType.DARKNESS] = resolvers.mbonus_material(15, 4)},
+		inc_damage_type = {humanoid=resolvers.mbonus_material(25, 5)},
+	},
+}
+
+newEntity{
+	power_source = {psionic=true},
+	name = "thought-forged ", prefix=true, instant_resolve=true,
+	keywords = {thought=true},
+	level_range = {1, 50},
+	rarity = 5,
+	cost = 10,
+	combat = {
+		melee_project={
+			[DamageType.MIND] = resolvers.mbonus_material(15, 4),
+		},
+		convert_damage = { 
+			[DamageType.MIND] = resolvers.mbonus_material(25, 5),
 		},
 	},
 }
 
 newEntity{
-	power_source = {nature=true, antimagic=true},
-	name = "manaburning ", prefix=true, instant_resolve=true,
-	keywords = {manaburning=true},
+	power_source = {psionic=true},
+	name = " of amnesia", suffix=true, instant_resolve=true,
+	keywords = {forgotten=true},
 	level_range = {10, 50},
-	greater_ego = 1,
-	rarity = 25,
-	cost = 40,
+	rarity = 25, -- very rare because no one can remember how to make them...  haha
+	cost = 15,
+	wielder = {
+		on_melee_hit = {
+			[DamageType.MIND] = resolvers.mbonus_material(15, 4),
+		},
+	},
 	combat = {
-		melee_project = {
-			[DamageType.MANABURN] = resolvers.mbonus_material(50, 15),
+		special_on_hit = {desc="25% chance to put talents on cooldown", fct=function(combat, who, target)
+			if not rng.percent(25) then return nil end
+			local turns = 1 + math.ceil(who:combatMindpower() / 20)
+			local number = 2 + math.ceil(who:combatMindpower() / 50)
+			if not who:checkHit(who:combatMindpower(), target:combatMentalResist()) then game.logSeen(target, "%s resists!", target.name:capitalize()) return nil end
+			
+			local tids = {}
+			for tid, lev in pairs(target.talents) do
+				local t = target:getTalentFromId(tid)
+				if t and not target.talents_cd[tid] and t.mode == "activated" and not t.innate then tids[#tids+1] = t end
+			end
+			
+			for i = 1, number do
+				local t = rng.tableRemove(tids)
+				if not t then break end
+				target.talents_cd[t.id] = turns
+				game.logSeen(target, "%s has temporarily forgotten %s!", target.name:capitalize(), t.name)
+			end
+		end},
+	},
+}
+
+newEntity{
+	power_source = {psionic=true},
+	name = " of projection", suffix=true, instant_resolve=true,
+	keywords = {projection=true},
+	level_range = {1, 50},
+	rarity = 5,
+	cost = 15,
+	max_power = 6, power_regen = 1,
+	use_power = { name = "project an attack as mind damage", power = 6,
+		use = function(self, who)
+			local tg = {type="bolt", range=5}
+			local x, y = who:getTarget(tg)
+			if not x or not y then return nil end
+			local _ _, x, y = who:canProject(tg, x, y)
+			local target = game.level.map(x, y, engine.Map.ACTOR)
+			if target then
+				who:attackTarget(target, engine.DamageType.MIND, 1, true)
+			else
+				return
+			end
+			return {id=true, used=true}
+		end
+	},
+	combat = {	
+		melee_project={
+			[DamageType.MIND] = resolvers.mbonus_material(15, 4),
+		},
+	},
+}
+
+newEntity{
+	power_source = {psionic=true},
+	name = "psychic's ", prefix=true, instant_resolve=true,
+	keywords = {psychic=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 30,
+	cost = 30,
+	wielder = {
+		combat_mindcrit = resolvers.mbonus_material(10, 2),
+		inc_stats = {
+			[Stats.STAT_CUN] = resolvers.mbonus_material(6, 1),
+			[Stats.STAT_WIL] = resolvers.mbonus_material(6, 1),
+		},
+	},
+}
+
+newEntity{
+	power_source = {psionic=true},
+	name = " of torment", suffix=true, instant_resolve=true,
+	keywords = {torment=true},
+	level_range = {30, 50},
+	greater_ego = 1,
+	rarity = 30,
+	cost = 30,
+	wielder = {
+		resists_pen = {
+			[DamageType.MIND] = resolvers.mbonus_material(10, 2),
+			[DamageType.DARKNESS] = resolvers.mbonus_material(10, 2),
 		},
 	},
+	combat = {
+		special_on_hit = {desc="20% chance to torment the target", fct=function(combat, who, target)
+			if not rng.percent(20) then return end
+			local eff = rng.table{"stun", "blind", "pin", "confusion", "silence",}
+			if not target:canBe(eff) then return end
+			if not target:checkHit(who:combatMindpower(), target:combatMentalResist()) then return end
+			if eff == "stun" then target:setEffect(target.EFF_STUNNED, 3, {})
+			elseif eff == "blind" then target:setEffect(target.EFF_BLINDED, 3, {})
+			elseif eff == "pin" then target:setEffect(target.EFF_PINNED, 3, {})
+			elseif eff == "confusion" then target:setEffect(target.EFF_CONFUSED, 3, {power=60})
+			elseif eff == "silence" then target:setEffect(target.EFF_SILENCED, 3, {})
+			end
+		end},
+	},
 }
diff --git a/game/modules/tome/data/general/objects/knifes.lua b/game/modules/tome/data/general/objects/knifes.lua
index da79b57621c08cc44f0c2d08c96213eed77d1767..99d67f1359ffb30a8fe228dc6957a5d772ffa585 100644
--- a/game/modules/tome/data/general/objects/knifes.lua
+++ b/game/modules/tome/data/general/objects/knifes.lua
@@ -29,6 +29,7 @@ newEntity{
 	metallic = true,
 	combat = { talented = "knife", damrange = 1.3, physspeed = 1, sound = {"actions/melee", pitch=1.2, vol=1.2}, sound_miss = {"actions/melee", pitch=1.2, vol=1.2} },
 	desc = [[Sharp, short and deadly.]],
+	ego_bonus_mult = -0.2,
 	randart_able = { attack=40, physical=80, spell=20, def=10, misc=10 },
 	egos = "/data/general/objects/egos/weapon.lua", egos_chance = { prefix=resolvers.mbonus(40, 5), suffix=resolvers.mbonus(40, 5) },
 }
diff --git a/game/modules/tome/data/general/objects/mindstars.lua b/game/modules/tome/data/general/objects/mindstars.lua
index 8be411ed38032577b0ba5586af43653275476341..c055ecb4c8449dbe88c67c941d127464a44fcbe3 100644
--- a/game/modules/tome/data/general/objects/mindstars.lua
+++ b/game/modules/tome/data/general/objects/mindstars.lua
@@ -25,7 +25,7 @@ newEntity{
 	display = "!", color=colors.LIGHT_RED, image = resolvers.image_material("mindstar", "wood"),
 	moddable_tile = resolvers.moddable_tile("mindstar"),
 	randart_able = { attack=10, physical=40, spell=1, def=10, misc=10 },
-	encumber = 5,
+	encumber = 3,
 	rarity = 4,
 	power_source = {nature=true},
 	combat = {
diff --git a/game/modules/tome/data/general/objects/slings.lua b/game/modules/tome/data/general/objects/slings.lua
index 8a2397cc8613115906fc0726432e0ef82858d6c1..4d0fe6ec711e61ea466c8636cb686c055e02be14 100644
--- a/game/modules/tome/data/general/objects/slings.lua
+++ b/game/modules/tome/data/general/objects/slings.lua
@@ -104,7 +104,7 @@ newEntity{
 	type = "ammo", subtype="shot",
 	add_name = " (#COMBAT_AMMO#)",
 	display = "{", color=colors.UMBER, image = resolvers.image_material("shot", "metal"),
-	encumber = 5,
+	encumber = 3,
 	rarity = 11,
 	combat = { talented = "sling", damrange = 1.2},
 	proj_image = resolvers.image_material("shot_s", "metal"),
diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua
index 1f03c8bb4771c6ffb28e23084c784cd7ec617414..5b11009326b8d710fa153ff4ab2a96733b5882c6 100644
--- a/game/modules/tome/data/general/objects/world-artifacts.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts.lua
@@ -37,7 +37,7 @@ newEntity{ base = "BASE_STAFF",
 	rarity = 170,
 	desc = [[This unique-looking staff is carved with runes of destruction.]],
 	cost = 200,
-	material_level = 3,
+	material_level = 2,
 
 	require = { stat = { mag=24 }, },
 	combat = {
@@ -66,7 +66,7 @@ newEntity{ base = "BASE_STAFF",
 	rarity = 200,
 	desc = [[A powerful staff sent in secret to Angolwen by the Shaloren, to aid their fighting of the plagues following the Spellblaze.]],
 	cost = 200,
-	material_level = 2,
+	material_level = 1,
 
 	require = { stat = { mag=24 }, },
 	combat = {
@@ -157,7 +157,7 @@ newEntity{ base = "BASE_STAFF",
 	rarity = 220,
 	desc = [[A thick staff with a heavy knob on the end.  It was said to be used by the grand alchemist Bolbum in the Age of Allure.  Much renowned is the fear of his students for their master, and the high rate of cranial injuries amongst them.  Bolbum died with seven daggers in his back and his much-cursed staff went missing after.]],
 	cost = 300,
-	material_level = 4,
+	material_level = 3,
 
 	require = { stat = { mag=38 }, },
 	combat = {
@@ -305,10 +305,10 @@ newEntity{ base = "BASE_AMULET",
 	rarity = 200,
 	cost = 90,
 	material_level = 2,
-
 	wielder = {
 		max_encumber = 20,
 		fatigue = -20,
+		avoid_pressure_traps = 1,
 	},
 }
 
@@ -333,6 +333,16 @@ newEntity{ base = "BASE_AMULET",
 	},
 	max_power = 60, power_regen = 1,
 	use_talent = { id = Talents.T_JUGGERNAUT, level = 2, power = 30 },
+	on_wear = function(self, who)
+		if who.descriptor and who.descriptor.race == "Halfling" then
+			local Talents = require "engine.interface.ActorStats"
+		
+			self:specialWearAdd({"wielder", "talents_types_mastery"}, { ["technique/battle-tactics"] = 0.2 })
+			self:specialWearAdd({"wielder","combat_armor"}, 5)
+			self:specialWearAdd({"wielder","combat_crit_reduction"}, 10)
+			game.logPlayer(who, "#LIGHT_BLUE#You feel invincible!")
+		end
+	end,
 }
 
 newEntity{ base = "BASE_AMULET", define_as = "SET_GARKUL_TEETH",
@@ -344,7 +354,7 @@ newEntity{ base = "BASE_AMULET", define_as = "SET_GARKUL_TEETH",
 	level_range = {40, 50},
 	rarity = 300,
 	cost = 1000,
-	material_level = 4,
+	material_level = 5,
 	wielder = {
 		inc_stats = {
 			[Stats.STAT_STR] = 10,
@@ -395,7 +405,20 @@ newEntity{ base = "BASE_LITE",
 	},
 	wielder = {
 		lite = 4,
+		healing_factor = 0.1,
+		talent_cd_reduction= {
+			[Talents.T_HEALING_LIGHT] = 1,
+			[Talents.T_BATHE_IN_LIGHT] = 1,
+			[Talents.T_BARRIER] = 2,
+			[Talents.T_PROVIDENCE] = 5,
+		},
 	},
+	on_wear = function(self, who)
+		if who.descriptor and who.descriptor.subclass == "Sun Paladin" then
+			self:specialWearAdd({"wielder", "positive_regen"}, 0.2)
+			game.logPlayer(who, "#GOLD#You feel a swell of positive energy!")
+		end
+	end,
 }
 
 newEntity{ base = "BASE_LITE",
@@ -407,6 +430,7 @@ newEntity{ base = "BASE_LITE",
 	color=colors.YELLOW,
 	encumber = 1,
 	rarity = 250,
+	material_level = 3,
 	desc = [[The first Halfling mages during the Age of Allure discovered how to capture the Sunlight and infuse gems with it.
 This star is the culmination of their craft. Light radiates from its ever-shifting yellow surface.]],
 	cost = 400,
@@ -433,12 +457,13 @@ newEntity{ base = "BASE_LITE",
 	color = colors.RED,
 	encumber = 1,
 	rarity = 300,
+	material_level = 4,
 	desc = [[This dark red heart still beats despite being seperated from its owner.  It also snuffs out any light source that comes near it.]],
 	cost = 100,
 
 	wielder = {
 		lite = -1000,
-		infravision = 7,
+		infravision = 6,
 		resists_cap = { [DamageType.LIGHT] = 10 },
 		resists = { [DamageType.LIGHT] = 30 },
 	},
@@ -459,7 +484,7 @@ newEntity{ base = "BASE_LITE",
 	desc = [[Said to have once belonged to Inquisitor Marcus Dunn during the Spellhunt this fist sized quartz crystal glows constantly with a soft white light and was rumoured to be a great aid in meditation, helping focus the mind, body, and soul of the owner as well as protecting them from the foulest of magics.
 It seems somebody well versed in antimagic could use it to its fullest potential.]],
 	cost = 100,
-	material_level = 4,
+	material_level = 5,
 
 	wielder = {
 		lite = 4,
@@ -617,7 +642,7 @@ newEntity{ base = "BASE_GREATSWORD",
 	desc = [[Farian was King Toknor's captain, and fought by his side in the great Battle of Last Hope.  However, when he returned after the battle to find his hometown burnt in an orcish pyre, a madness overtook him.  The desire for vengeance made him quit the army and strike out on his own, lightly armoured and carrying nought but his sword.  Most thought him dead until the reports came back of a fell figure tearing through the orcish encampments, slaughtering all before him and mercilessly butchering the corpses after.  It is said his blade drank the blood of 100 orcs each day until finally all of Maj'Eyal was cleared of their presence.  When the final orc was slain and no more were to be found, Farian at the last turned the blade on himself and stuck it through his chest.  Those nearby said his body shook with convulsions as he did so, though they could not tell whether he was laughing or crying.]],
 	cost = 400,
 	require = { stat = { str=40, wil=20 }, },
-	material_level = 5,
+	material_level = 3,
 	combat = {
 		dam = 42,
 		apr = 4,
@@ -633,7 +658,7 @@ newEntity{ base = "BASE_GREATSWORD",
 }
 
 newEntity{ base = "BASE_KNIFE",
-	power_source = {technique=true},
+	power_source = {arcane=true},
 	unique = true,
 	name = "Unerring Scalpel", image = "object/artifact/unerring_scalpel.png",
 	unided_name = "long sharp scalpel",
@@ -642,12 +667,13 @@ newEntity{ base = "BASE_KNIFE",
 	rarity = 200,
 	require = { stat = { cun=16 }, },
 	cost = 80,
-	material_level = 3,
+	material_level = 1,
 	combat = {
 		dam = 15,
-		apr = 10,
+		apr = 25,
 		physcrit = 0,
 		dammod = {dex=0.55, str=0.45},
+		phasing = 50,
 	},
 	wielder = {combat_atk=20},
 }
@@ -663,7 +689,7 @@ newEntity{ base = "BASE_LEATHER_BOOT",
 	level_range = {1, 20},
 	rarity = 200,
 	cost = 100,
-	material_level = 3,
+	material_level = 2,
 	wielder = {
 		combat_armor = 1,
 		combat_def = 2,
@@ -693,7 +719,7 @@ newEntity{ base = "BASE_SHIELD",
 	rarity = 300,
 	require = { stat = { str=28 }, },
 	cost = 350,
-	material_level = 5,
+	material_level = 4,
 	special_combat = {
 		dam = 58,
 		physcrit = 4.5,
@@ -721,7 +747,7 @@ newEntity{ base = "BASE_SHIELD",
 	rarity = 270,
 	require = { stat = { str=37 }, },
 	cost = 300,
-	material_level = 4,
+	material_level = 3,
 	special_combat = {
 		dam = 48,
 		physcrit = 4.5,
@@ -746,7 +772,7 @@ newEntity{ base = "BASE_LIGHT_ARMOR",
 	rarity = 270,
 	cost = 200,
 	require = { stat = { str=22 }, },
-	material_level = 4,
+	material_level = 3,
 	wielder = {
 		combat_def = 6,
 		combat_armor = 7,
@@ -817,7 +843,7 @@ newEntity{ base = "BASE_HELM",
 	level_range = {20, 28},
 	rarity = 240,
 	cost = 700,
-	material_level = 3,
+	material_level = 2,
 	wielder = {
 		lite = 1,
 		combat_armor = 6,
@@ -825,6 +851,9 @@ newEntity{ base = "BASE_HELM",
 		blind_immune = 0.3,
 		confusion_immune = 0.3,
 		inc_stats = { [Stats.STAT_WIL] = 3, [Stats.STAT_MAG] = 4, },
+		inc_damage={
+			[DamageType.LIGHT] = 8,
+		},
 	},
 	max_power = 30, power_regen = 1,
 	use_talent = { id = Talents.T_SUN_FLARE, level = 3, power = 30 },
@@ -869,7 +898,7 @@ newEntity{ base = "BASE_KNIFE",
 	rarity = 200,
 	require = { stat = { cun=25 }, },
 	cost = 250,
-	material_level = 3,
+	material_level = 2,
 	combat = {
 		dam = 25,
 		apr = 10,
@@ -956,7 +985,7 @@ newEntity{ base = "BASE_RING",
 	name = "Ring of the War Master", color = colors.DARK_GREY, image = "object/artifact/ring_of_war_master.png",
 	unided_name = "blade-edged ring",
 	desc = [[A blade-edged ring that radiates power. As you put it on, strange thoughts of pain and destruction come to your mind.]],
-	level_range = {15, 30},
+	level_range = {40, 50},
 	rarity = 200,
 	cost = 500,
 	material_level = 5,
@@ -1041,7 +1070,7 @@ newEntity{ base = "BASE_MACE",
 	name = "Crooked Club", color = colors.GREEN, image = "object/artifact/weapon_crooked_club.png",
 	unided_name = "weird club",
 	desc = [[An oddly twisted club with a hefty weight on the end.]],
-	level_range = {3, 12},
+	level_range = {12, 20},
 	rarity = 192,
 	require = { stat = { str=20 }, },
 	cost = 250,
@@ -1066,7 +1095,7 @@ newEntity{ base = "BASE_MACE",
 	rarity = 340,
 	require = { stat = { str=42 } },
 	cost = 350,
-	material_level = 4,
+	material_level = 3,
 	combat = {
 		dam = 40,
 		apr = 4,
@@ -1111,7 +1140,7 @@ newEntity{ base = "BASE_HELM",
 	level_range = {37, 45},
 	rarity = 280,
 	cost = 400,
-	material_level = 5,
+	material_level = 4,
 	wielder = {
 		inc_stats = { [Stats.STAT_STR] = 5, [Stats.STAT_CON] = 5, [Stats.STAT_LCK] = -4, },
 		combat_def = 5,
@@ -1132,7 +1161,7 @@ newEntity{ base = "BASE_HELM",
 	level_range = {20, 35},
 	rarity = 280,
 	cost = 300,
-	material_level = 5,
+	material_level = 3,
 	wielder = {
 		inc_stats = { [Stats.STAT_CON] = 3, [Stats.STAT_WIL] = 10, },
 		combat_def = 3,
@@ -1178,7 +1207,7 @@ newEntity{ base = "BASE_GAUNTLETS",
 	level_range = {40, 50},
 	rarity = 300,
 	cost = 2000,
-	material_level = 3,
+	material_level = 5,
 	wielder = {
 		inc_stats = { [Stats.STAT_STR] = 6, [Stats.STAT_MAG] = 6 },
 		inc_damage = { [DamageType.PHYSICAL] = 10 },
@@ -1233,7 +1262,7 @@ Finally The Scorpion was defeated by the alchemist Nessylia, who went to face th
 }
 
 newEntity{ base = "BASE_GLOVES",
-	power_source = {nature=true},
+	power_source = {nature=true}, define_as = "SET_GIANT_WRAPS",
 	unique = true,
 	name = "Snow Giant Wraps", color = colors.SANDY_BROWN, image = "object/artifact/snow_giant_arm_wraps.png",
 	unided_name = "fur-lined leather wraps",
@@ -1241,7 +1270,7 @@ newEntity{ base = "BASE_GLOVES",
 	level_range = {15, 25},
 	rarity = 200,
 	cost = 500,
-	material_level = 1,
+	material_level = 3,
 	wielder = {
 		inc_stats = { [Stats.STAT_STR] = 4, },
 		resists = { [DamageType.COLD]= 10, [DamageType.LIGHTNING] = 10, },
@@ -1259,6 +1288,40 @@ newEntity{ base = "BASE_GLOVES",
 	},
 	max_power = 6, power_regen = 1,
 	use_talent = { id = Talents.T_THROW_BOULDER, level = 2, power = 6 },
+	
+	set_list = { {"define_as", "SET_MIGHTY_GIRDLE"} },
+	on_set_complete = function(self, who)
+		self:specialSetAdd({"wielder","combat_dam"}, 10)
+		self:specialSetAdd({"wielder","combat_physresist"}, 10)
+	end,
+}
+
+newEntity{ base = "BASE_LEATHER_BELT",
+	power_source = {technique=true}, define_as = "SET_MIGHTY_GIRDLE",
+	unique = true,
+	name = "Mighty Girdle", image = "object/artifact/belt_mighty_girdle.png",
+	unided_name = "massive, stained girdle",
+	desc = [[This girdle is enchanted with mighty wards against expanding girth. Whatever the source of its wondrous strength, it will prove of great aid in the transport of awkward burdens.]],
+	color = colors.LIGHT_RED,
+	level_range = {1, 25},
+	rarity = 170,
+	cost = 350,
+	material_level = 2,
+	wielder = {
+		knockback_immune = 0.4,
+		max_encumber = 70,
+		combat_armor = 4,
+	},
+	
+	set_list = { {"define_as", "SET_GIANT_WRAPS"} },
+	on_set_complete = function(self, who)
+		self:specialSetAdd({"wielder","max_life"}, 100)
+		self:specialSetAdd({"wielder","size_category"}, 2)
+		game.logPlayer(who, "#GOLD#You grow to immense size!")
+	end,
+	on_set_broken = function(self, who)
+		game.logPlayer(who, "#LIGHT_BLUE#You feel a lot smaller...")
+	end,
 }
 
 newEntity{ base = "BASE_GAUNTLETS",
@@ -1270,7 +1333,7 @@ newEntity{ base = "BASE_GAUNTLETS",
 	level_range = {25, 35},
 	rarity = 250,
 	cost = 1000,
-	material_level = 5,
+	material_level = 3,
 	require = nil,
 	wielder = {
 		inc_stats = { [Stats.STAT_MAG] = 4, },
@@ -1345,7 +1408,7 @@ It was made by Humans for Humans; only they can harness the true power of the ro
 	level_range = {12, 22},
 	rarity = 220,
 	cost = 150,
-	material_level = 3,
+	material_level = 2,
 	wielder = {
 		inc_damage = {[DamageType.ARCANE]=10},
 		inc_stats = { [Stats.STAT_MAG] = 6 },
@@ -1373,7 +1436,7 @@ newEntity{ base = "BASE_CLOTH_ARMOR",
 	level_range = {20, 30},
 	rarity = 300,
 	cost = 280,
-	material_level = 4,
+	material_level = 3,
 	wielder = {
 		inc_damage = {[DamageType.FIRE]=20},
 		combat_def = 8,
@@ -1394,7 +1457,7 @@ newEntity{ base = "BASE_CLOTH_ARMOR",
 	level_range = {30, 40},
 	rarity = 290,
 	cost = 550,
-	material_level = 5,
+	material_level = 4,
 	moddable_tile = "special/robe_of_the_archmage",
 	moddable_tile_big = true,
 	wielder = {
@@ -1422,7 +1485,7 @@ newEntity{ base = "BASE_CLOTH_ARMOR",
 	level_range = {30, 40},
 	rarity = 310,
 	cost = 540,
-	material_level = 5,
+	material_level = 4,
 	wielder = {
 		inc_damage = {[DamageType.TEMPORAL]=20},
 		combat_def = 9,
@@ -1531,7 +1594,7 @@ newEntity{ base = "BASE_WAND",
 	elec_proof = true,
 	add_name = false,
 
-	material_level = 5,
+	material_level = 2,
 
 	max_power = 75, power_regen = 1,
 	use_power = { name = "shoot a cone of fire", power = 20,
@@ -1591,7 +1654,7 @@ newEntity{ base = "BASE_BATTLEAXE",
 	rarity = 300,
 	cost = 400,
 	level_range = {20, 35},
-	material_level = 4,
+	material_level = 3,
 	combat = {
 		dam = 52,
 		apr = 21,
@@ -1617,19 +1680,26 @@ newEntity{ base = "BASE_WARAXE",
 	rarity = 235,
 	require = { stat = { str=40, dex=24 }, },
 	cost = 330,
-	material_level = 4,
+	material_level = 3,
+	wielder = {
+		combat_armor = 20,
+		resists_pen = {
+			[DamageType.COLD] = 20,
+		},
+	},
 	combat = {
 		dam = 33,
 		apr = 4.5,
 		physcrit = 7,
 		dammod = {str=1},
-		melee_project={[DamageType.COLD] = 25},
-	},
-	wielder = {
-		combat_atk = 15,
+		convert_damage = { 
+			[DamageType.ICE] = 50,
+		},
 	},
+	talent_on_hit = { [Talents.T_ICE_BREATH] = {level=2, chance=15} },
 }
 
+
 newEntity{ base = "BASE_WHIP",
 	power_source = {nature=true},
 	unided_name = "metal whip",
@@ -1637,39 +1707,24 @@ newEntity{ base = "BASE_WHIP",
 	desc = [[A long whip of linked metal joints finished with a viciously sharp barb leaking venomous poison.]],
 	require = { stat = { dex=28 }, },
 	cost = 150,
+	rarity = 340,
+	level_range = {20, 30},
 	material_level = 3,
 	combat = {
 		dam = 28,
 		apr = 8,
 		physcrit = 5,
 		dammod = {dex=1},
-		melee_project={[DamageType.POISON] = 22},
+		melee_project={[DamageType.POISON] = 22, [DamageType.BLEED] = 22},
+		talent_on_hit = { T_DISARM = {level=3, chance=10} },
 	},
 	wielder = {
 		combat_atk = 10,
 		see_invisible = 9,
+		see_stealth = 9,
 	},
 }
 
-newEntity{ base = "BASE_LEATHER_BELT",
-	power_source = {technique=true},
-	unique = true,
-	name = "Mighty Girdle", image = "object/artifact/belt_mighty_girdle.png",
-	unided_name = "massive, stained girdle",
-	desc = [[This girdle is enchanted with mighty wards against expanding girth. Whatever the source of its wondrous strength, it will prove of great aid in the transport of awkward burdens.]],
-	color = colors.LIGHT_RED,
-	level_range = {1, 25},
-	rarity = 170,
-	cost = 350,
-	material_level = 5,
-	wielder = {
-		knockback_immune = 0.4,
-		max_encumber = 70,
-		combat_armor = 4,
-	},
-}
-
-
 newEntity{ base = "BASE_LEATHER_BELT",
 	power_source = {nature=true},
 	unique = true,
@@ -1680,7 +1735,7 @@ newEntity{ base = "BASE_LEATHER_BELT",
 	level_range = {20, 30},
 	rarity = 200,
 	cost = 450,
-	material_level = 5,
+	material_level = 2,
 	wielder = {
 		inc_stats = { [Stats.STAT_CUN] = 7, [Stats.STAT_WIL] = 8, },
 		combat_mindpower = 12,
@@ -1730,7 +1785,7 @@ newEntity{ base = "BASE_LEATHER_BELT",
 	level_range = {5, 14},
 	rarity = 120,
 	cost = 75,
-	material_level = 3,
+	material_level = 1,
 	wielder = {
 		inc_stats = { [Stats.STAT_WIL] = 3,  },
 		resists = {
@@ -1753,7 +1808,7 @@ newEntity{ base = "BASE_LIGHT_ARMOR",
 	rarity = 230,
 	require = { stat = { str=22 }, },
 	cost = 250,
-	material_level = 3,
+	material_level = 2,
 	wielder = {
 		inc_stats = { [Stats.STAT_STR] = 2, [Stats.STAT_CON] = 2 },
 
@@ -1790,7 +1845,7 @@ newEntity{ base = "BASE_LIGHT_ARMOR",
 		combat_def = 12,
 		fatigue = 7,
 		max_life = 40,
-		infravision = 6,
+		infravision = 3,
 		talents_types_mastery = { ["cunning/stealth"] = -0.2, },
 	},
 }
@@ -1806,7 +1861,7 @@ newEntity{ base = "BASE_LIGHT_ARMOR",
 	rarity = 350,
 	require = { stat = { str=20 }, {wil=20} },
 	cost = 350,
-	material_level = 4,
+	material_level = 2,
 	wielder = {
 		inc_stats = { [Stats.STAT_WIL] = 3, [Stats.STAT_CON] = 4 },
 
@@ -1840,7 +1895,7 @@ newEntity{ base = "BASE_HEAVY_ARMOR",
 	rarity = 190,
 	require = { stat = { str=14 }, },
 	cost = 200,
-	material_level = 1,
+	material_level = 2,
 	wielder = {
 		inc_stats = { [Stats.STAT_CON] = 2, [Stats.STAT_STR] = 2 },
 		resists = {
@@ -1960,12 +2015,12 @@ newEntity{ base = "BASE_GREATSWORD",
 	unided_name = "three-edged sword",
 	desc = [[The wise ones say that truth is a three-edged sword. And sometimes, the truth hurts.]],
 	level_range = {25, 32},
-	require = { stat = { str=26, wil=26, cun=26 }, },
+	require = { stat = { str=18, wil=18, cun=18 }, },
 	color = colors.GOLD,
 	encumber = 12,
 	cost = 350,
 	rarity = 240,
-	material_level = 4,
+	material_level = 3,
 	moddable_tile = "special/golden_sword_right",
 	moddable_tile_big = true,
 	combat = {
@@ -2263,7 +2318,7 @@ newEntity{ base = "BASE_AMULET",
 	material_level = 4,
 	metallic = false,
 	wielder = {
-		infravision = 5,
+		infravision = 3,
 		resists = { [DamageType.LIGHT] = -25 },
 		resists_cap = { [DamageType.LIGHT] = -25 },
 		blind_immune = 1,
@@ -2283,7 +2338,7 @@ newEntity{ base = "BASE_CLOAK",
 	level_range = {40, 50},
 	rarity = 400,
 	cost = 300,
-	material_level = 3,
+	material_level = 5,
 	wielder = {
 		resists_cap = {
 			[DamageType.FIRE] = 5,
@@ -2310,10 +2365,10 @@ newEntity{ base = "BASE_DIGGER",
 	name = "Pick of Dwarven Emperors", color = colors.GREY, image = "object/artifact/pick_of_dwarven_emperors.png",
 	unided_name = "crude iron pickaxe",
 	desc = [[This ancient pickaxe was used to pass down dwarven legends from one generation to the next.  Every bit of the head and shaft are covered in runes that recount the stories of the dwarven people.]],
-	level_range = {26, 35},
+	level_range = {40, 50},
 	rarity = 290,
 	cost = 150,
-	material_level = 3,
+	material_level = 5,
 	digspeed = 12,
 	wielder = {
 		resists_pen = { [DamageType.PHYSICAL] = 10, },
@@ -2406,7 +2461,7 @@ Touching the cloth you feel a sense of knowledge and power from bygone ages, yet
 	max_power = 40, power_regen = 1,
 	set_list = { {"define_as", "SET_STAFF_CHANNELERS"} },
 	on_set_complete = function(self, who)
-local Talents = require "engine.interface.ActorTalents"
+		local Talents = require "engine.interface.ActorTalents"
 		self.use_talent = { id = Talents.T_METAFLOW, level = 3, power = 40 }
 		game.player:learnLore("channelers-set")
 	end,
@@ -2426,7 +2481,7 @@ newEntity{ base = "BASE_ARROW",
 	level_range = {20, 40},
 	rarity = 300,
 	cost = 100,
-	material_level = 3,
+	material_level = 4,
 	require = { stat = { dex=24 }, },
 	combat = {
 		capacity = 6,
diff --git a/game/modules/tome/data/talents/chronomancy/paradox.lua b/game/modules/tome/data/talents/chronomancy/paradox.lua
index fe420b5acde0914ce63c8526521e342aff0a6b3f..1e1ca1685189d34ed7dcd1c9894769cb5da074ec 100644
--- a/game/modules/tome/data/talents/chronomancy/paradox.lua
+++ b/game/modules/tome/data/talents/chronomancy/paradox.lua
@@ -91,10 +91,9 @@ newTalent{
 			return true
 		end
 	
-		-- Manualy start cooldown and spend paradox before the chronoworld is made
+		-- Manualy start cooldown before the chronoworld is made
 		game.player:startTalentCooldown(t)
-		game.player:incParadox(t.paradox * (1 + (game.player.paradox / 300)))
-	
+		
 		-- set up chronoworld next, we'll load it when the target dies in class\actor
 		game:onTickEnd(function()
 			game:chronoClone("cease_to_exist")
diff --git a/game/modules/tome/data/talents/chronomancy/speed-control.lua b/game/modules/tome/data/talents/chronomancy/speed-control.lua
index d8bb4cbf1cffc61eca18e3e2045c79f9240dd894..52321a0036b2bd02d214b1780bb1ce84f2de60ac 100644
--- a/game/modules/tome/data/talents/chronomancy/speed-control.lua
+++ b/game/modules/tome/data/talents/chronomancy/speed-control.lua
@@ -54,7 +54,7 @@ newTalent{
 		return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=self:spellFriendlyFire(), talent=t}
 	end,
 	getDuration = function(self, t) return 2 + math.ceil(((self:getTalentLevel(t) / 2)) * getParadoxModifier(self, pm)) end,
-	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 20, 170) end,
+	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 20, 170)  * getParadoxModifier(self, pm) end,
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
diff --git a/game/modules/tome/data/talents/gifts/antimagic.lua b/game/modules/tome/data/talents/gifts/antimagic.lua
index 853c2b180dd93481f1678f030a0ec3ebd0a8838b..b91a24d441f268c9c4f7d21d6c2178d12fa64c9d 100644
--- a/game/modules/tome/data/talents/gifts/antimagic.lua
+++ b/game/modules/tome/data/talents/gifts/antimagic.lua
@@ -23,28 +23,26 @@ newTalent{
 	require = gifts_req1,
 	mode = "passive",
 	points = 5,
+	getRegen = function(self, t) return 1 + (self:combatTalentMindDamage(t, 1, 10) /10) end,
+	getResist = function(self, t) return self:combatTalentMindDamage(t, 10, 40) end,
 	on_absorb = function(self, t, damtype)
 		if not DamageType:get(damtype).antimagic_resolve then return end
 
 		if not self:isTalentActive(self.T_ANTIMAGIC_SHIELD) then
-			local equi = 1 + self:combatTalentMindDamage(t, 10, 5)
-			local stamina = 1 + self:combatTalentMindDamage(t, 10, 10)
-			self:incEquilibrium(-equi)
-			self:incStamina(stamina)
+			self:incEquilibrium(-t.getRegen(self, t))
+			self:incStamina(t.getRegen(self, t))
 		end
-		self:setEffect(self.EFF_RESOLVE, 7, {damtype=damtype, res=self:combatTalentMindDamage(t, 10, 40)})
+		self:setEffect(self.EFF_RESOLVE, 7, {damtype=damtype, res=t.getResist(self, t)})
 		game.logSeen(self, "%s is invigorated by the attack!", self.name:capitalize())
 	end,
 	info = function(self, t)
+		local resist = t.getResist(self, t)
+		local regen = t.getRegen(self, t)
 		return ([[You stand in the way of magical damage. That which does not kill you makes you stronger.
 		Each time you are hit by a magical damage you get a %d%% resistance to this elemental for 7 turns.
-		If antimagic shield is not active you also absorb part of the impact and use it to fuel your own powers, decreasing your equilibrium by %d and increasing your stamina by %d.
+		If antimagic shield is not active you also absorb part of the impact and use it to fuel your own powers, decreasing your equilibrium and increasing your stamina by %0.2f.
 		The effects will increase with your Mindpower.]]):
-		format(
-			self:combatTalentMindDamage(t, 10, 40),
-			1 + self:combatTalentMindDamage(t, 10, 5),
-			1 + self:combatTalentMindDamage(t, 10, 10)
-		)
+		format(	resist, regen )
 	end,
 }
 
@@ -124,7 +122,7 @@ newTalent{
 	require = gifts_req4,
 	points = 5,
 	equilibrium = 10,
-	cooldown = 6,
+	cooldown = 8,
 	range = 10,
 	tactical = { ATTACK = { ARCANE = 3 } },
 	direct_hit = true,
diff --git a/game/modules/tome/data/timed_effects/other.lua b/game/modules/tome/data/timed_effects/other.lua
index aa342820c3e22a07a428a53c2ed1efc387abaa14..4c1d708475c942ff5663c62b51bca1c00a43fd09 100644
--- a/game/modules/tome/data/timed_effects/other.lua
+++ b/game/modules/tome/data/timed_effects/other.lua
@@ -336,7 +336,7 @@ newEffect{
 			if game._chronoworlds then game._chronoworlds = nil end
 			if game.player:knowTalent(game.player.T_FORESIGHT) then
 				local t = game.player:getTalentFromId(game.player.T_FORESIGHT)
-				t.do_precog_foresight(self, t)
+				t.do_precog_foresight(game.player, t)
 			end
 			game.player.energy.value = game.energy_to_act
 			game.paused = true
diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua
index 932992d6e471490994dbf25568c260d34694ba57..53c9ff9008415aa468c4f5defef4af107f4cd6e4 100644
--- a/game/modules/tome/data/timed_effects/physical.lua
+++ b/game/modules/tome/data/timed_effects/physical.lua
@@ -1615,3 +1615,28 @@ newEffect{
 	end,
 }
 
+newEffect{
+	name = "SPELL_DISRUPTION", image = "talents/mana_clash.png",
+	desc = "Spell Disruption",
+	--display_desc = function(self, eff) return eff.cur_power.."% Spell Disruption" end,
+	long_desc = function(self, eff) return ("The target has a %d%% chance to fail any spell it casts and a chance each turn to lose spell sustains."):format(eff.cur_power) end,
+	type = "physical",
+	subtype = { antimagic=true },
+	status = "beneficial",
+	parameters = { power=10, max=50 },
+	on_merge = function(self, old_eff, new_eff)
+		self:removeTemporaryValue("spell_failure", old_eff.tmpid)
+		old_eff.cur_power = math.min(old_eff.cur_power + new_eff.power, new_eff.max)
+		old_eff.tmpid = self:addTemporaryValue("spell_failure", old_eff.cur_power)
+
+		old_eff.dur = new_eff.dur
+		return old_eff
+	end,
+	activate = function(self, eff)
+		eff.cur_power = eff.power
+		eff.tmpid = self:addTemporaryValue("spell_failure", eff.power)
+	end,
+	deactivate = function(self, eff)
+		self:removeTemporaryValue("spell_failure", eff.tmpid)
+	end,
+}
diff --git a/game/modules/tome/dialogs/CharacterSheet.lua b/game/modules/tome/dialogs/CharacterSheet.lua
index bb9a91936f50af4d63c4df4e85d10019de333db1..bc00a89c492ab5173796881b4247290fd5e8e818 100644
--- a/game/modules/tome/dialogs/CharacterSheet.lua
+++ b/game/modules/tome/dialogs/CharacterSheet.lua
@@ -409,7 +409,7 @@ function _M:drawDialog(kind, actor_to_compare)
 		if text then
 			self:mouseTooltip(self.TOOLTIP_VISION_SIGHT,  s:drawColorStringBlended(self.font, ("Vision range   : #00ff00#%s"):format(text), w, h, 255, 255, 255, true)) h = h + self.font_h
 		end
-		text = compare_fields(player, actor_to_compare, function(actor) return (actor:attr("infravision") or actor:attr("heightened_senses")) and (actor.heightened_senses or 0) + (actor.infravision or 0) end, "%d", "%+.0f")
+		text = compare_fields(player, actor_to_compare, function(actor) return (actor:attr("infravision") or actor:attr("heightened_senses")) and math.max((actor.heightened_senses or 0), (actor.infravision or 0)) end, "%d", "%+.0f")
 		if text then
 			self:mouseTooltip(self.TOOLTIP_VISION_INFRA,  s:drawColorStringBlended(self.font, ("Infravision    : #00ff00#%s"):format(text), w, h, 255, 255, 255, true)) h = h + self.font_h
 		end
diff --git a/game/modules/tome/resolvers.lua b/game/modules/tome/resolvers.lua
index d0428067e2ce892179c7140d5af97bc71c51b2e8..2f5b2db4496fe5fba71fc17dc93729d31cd79fbb 100644
--- a/game/modules/tome/resolvers.lua
+++ b/game/modules/tome/resolvers.lua
@@ -260,6 +260,10 @@ function resolvers.calc.mbonus_material(t, e)
 		e.cost = e.cost + ap
 		v = nv or v
 	end
+	
+	if e.ego_bonus_mult then
+		v = math.ceil(v * (1 + e.ego_bonus_mult))
+	end
 
 	return v
 end