diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index b7545e080b57ab863f7e9bece2eda8ec9dcbaa27..1d672fec623dba477d62bbfe162e854b7c22e81b 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -2224,6 +2224,15 @@ function _M:onTakeHit(value, src, death_note)
 			game:delayedLogMessage(src, self, "life_leech"..self.uid, "#CRIMSON##Source# leeches life from #Target#!")
 		end
 	end
+	
+	-- Life steal from weapon
+	if value > 0 and src and not src.dead and src.attr and src:attr("lifesteal") then
+		local leech = math.min(value, self.life) * src.lifesteal / 100
+		if leech > 0 then
+			src:heal(leech, self)
+			game:delayedLogMessage(src, self, "life_leech"..self.uid, "#CRIMSON##Source# steals life from #Target#!")
+		end
+	end
 
 	-- Flat damage cap
 	if self.flat_damage_cap and self.max_life and death_note and death_note.damtype then
@@ -4369,6 +4378,9 @@ function _M:breakStepUp()
 	if self:hasEffect(self.EFF_WILD_SPEED) then
 		self:removeEffect(self.EFF_WILD_SPEED)
 	end
+	if self:hasEffect(self.EFF_HUNTER_SPEED) then
+		self:removeEffect(self.EFF_HUNTER_SPEED)
+	end
 	if self:hasEffect(self.EFF_REFLEXIVE_DODGING) then
 		self:removeEffect(self.EFF_REFLEXIVE_DODGING)
 	end
diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index 8c0292f5b6033b6ca60fceb621ff71e4b758ced6..0d04bb7aa763b03027cdd5116522785c2464d417 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -657,6 +657,8 @@ function _M:getTextualDesc(compare_with, use_actor)
 		compare_fields(combat, compare_with, field, "travel_speed", "%+d%%", "Travel speed: ", 100, false, false, add_table)
 
 		compare_fields(combat, compare_with, field, "phasing", "%+d%%", "Damage Shield penetration (this weapon only): ", 1, false, false, add_table)
+		
+		compare_fields(combat, compare_with, field, "lifesteal", "%+d%%", "Lifesteal (this weapon only): ", 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)
@@ -1022,6 +1024,7 @@ function _M:getTextualDesc(compare_with, use_actor)
 		compare_fields(w, compare_with, field, "die_at", "%+.2f life", "Only die when reaching: ", 1, true, true)
 		compare_fields(w, compare_with, field, "max_life", "%+.2f", "Maximum life: ")
 		compare_fields(w, compare_with, field, "max_mana", "%+.2f", "Maximum mana: ")
+		compare_fields(w, compare_with, field, "max_soul", "%+.2f", "Maximum souls: ")
 		compare_fields(w, compare_with, field, "max_stamina", "%+.2f", "Maximum stamina: ")
 		compare_fields(w, compare_with, field, "max_hate", "%+.2f", "Maximum hate: ")
 		compare_fields(w, compare_with, field, "max_psi", "%+.2f", "Maximum psi: ")
@@ -1063,6 +1066,7 @@ function _M:getTextualDesc(compare_with, use_actor)
 		compare_fields(w, compare_with, field, "damage_shield_penetrate", "%+d%%", "Damage Shield penetration: ")
 
 		compare_fields(w, compare_with, field, "projectile_evasion", "%+d%%", "Deflect projectiles away: ")
+		compare_fields(w, compare_with, field, "evasion", "%+d%%", "Chance to avoid attacks: ")
 
 		compare_fields(w, compare_with, field, "defense_on_teleport", "%+d", "Defense after a teleport: ")
 		compare_fields(w, compare_with, field, "resist_all_on_teleport", "%+d%%", "Resist all after a teleport: ")
@@ -1074,6 +1078,9 @@ function _M:getTextualDesc(compare_with, use_actor)
 
 		compare_fields(w, compare_with, field, "nature_summon_max", "%+d", "Max wilder summons: ")
 		compare_fields(w, compare_with, field, "nature_summon_regen", "%+.2f", "Life regen bonus (wilder-summons): ")
+		
+		compare_fields(w, compare_with, field, "shield_dur", "%+d", "Damage Shield Duration: ")
+		compare_fields(w, compare_with, field, "shield_factor", "%+d%%", "Damage Shield Power: ")
 
 		compare_fields(w, compare_with, field, "slow_projectiles", "%+d%%", "Slows Projectiles: ")
 
@@ -1316,7 +1323,7 @@ function _M:getUseDesc(use_actor)
 	local ret = tstring{}
 	local reduce = 100 - util.bound(use_actor:attr("use_object_cooldown_reduce") or 0, 0, 100)
 	local usepower = function(power) return math.ceil(power * reduce / 100) end
-	if self.use_power then
+	if self.use_power and not self.use_power.hidden then
 		if self.show_charges then
 			ret = tstring{{"color","YELLOW"}, ("It can be used to %s, with %d charges out of %d."):format(util.getval(self.use_power.name, self), math.floor(self.power / usepower(self.use_power.power)), math.floor(self.max_power / usepower(self.use_power.power))), {"color","LAST"}}
 		elseif self.talent_cooldown then
diff --git a/game/modules/tome/class/interface/Archery.lua b/game/modules/tome/class/interface/Archery.lua
index 3694de3ca212d601deb7d702c359e4148f83a0a4..9bc8b56b282578dd4220ba7591f6b1ea77420809 100644
--- a/game/modules/tome/class/interface/Archery.lua
+++ b/game/modules/tome/class/interface/Archery.lua
@@ -403,6 +403,17 @@ local function archery_projectile(tx, ty, tg, self, tmp)
 	if hitted and ammo and ammo.special_on_kill and ammo.special_on_kill.fct and target.dead then
 		ammo.special_on_kill.fct(ammo, self, target)
 	end
+	
+	-- Siege Arrows
+	if hitted and ammo and ammo.siege_impact and (not self.shattering_impact_last_turn or self.shattering_impact_last_turn < game.turn) then
+		local dam = dam * ammo.siege_impact
+		local invuln = target.invulnerable
+		game.logSeen(target, "The shattering blow creates a shockwave!")
+		target.invulnerable = 1 -- Target already hit, don't damage it twice
+		self:project({type="ball", radius=1, friendlyfire=false}, target.x, target.y, DamageType.PHYSICAL, dam)
+		target.invulnerable = invuln
+		self.shattering_impact_last_turn = game.turn
+	end
 
 	-- Temporal cast
 	if hitted and not target.dead and self:knowTalent(self.T_WEAPON_FOLDING) and self:isTalentActive(self.T_WEAPON_FOLDING) then
diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua
index 4ce7903e570f7f87a0ea32f7abff2f9832dd7a57..326e5b92b7b874f430753c42845ed7eeca049494 100644
--- a/game/modules/tome/class/interface/Combat.lua
+++ b/game/modules/tome/class/interface/Combat.lua
@@ -340,6 +340,12 @@ end
 function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 	damtype = damtype or (weapon and weapon.damtype) or DamageType.PHYSICAL
 	mult = mult or 1
+	
+	--Life Steal
+	if weapon and weapon.lifesteal then
+		self:attr("lifesteal", weapon.lifesteal)
+		self:attr("silent_heal", 1)
+	end
 
 	local mode = "other"
 	if self:hasShield() then mode = "shield"
@@ -925,6 +931,12 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 
 	self.turn_procs.weapon_type = nil
 	self.__global_accuracy_damage_bonus = nil
+	
+	--Life Steal
+	if weapon and weapon.lifesteal then
+		self:attr("lifesteal", -weapon.lifesteal)
+		self:attr("silent_heal", -1)
+	end
 
 	return self:combatSpeed(weapon), hitted
 end
diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua
index 858661a3dfda075900727eb070afcdce1e7caa4c..08f869895a19b784ef95f69d8f14bb3fd500cb16 100644
--- a/game/modules/tome/data/damage_types.lua
+++ b/game/modules/tome/data/damage_types.lua
@@ -607,6 +607,9 @@ newDamageType{
 			local a = game.level.map(x, y, Map.ACTOR)
 			if src.player and a and not a.training_dummy then world:gainAchievement("CRYOMANCER", src, realdam) end
 		end
+		if realdam > 0 and src:attr("cold_freezes") and rng.percent(src.cold_freezes) then
+			DamageType:get(DamageType.FREEZE).projector(src, x, y, DamageType.FREEZE, {dur=2, hp=70+dam*1.5})
+		end
 		return realdam
 	end,
 	death_message = {"frozen", "chilled", "iced", "cooled", "frozen and shattered into a million little shards"},
@@ -1507,7 +1510,7 @@ newDamageType{
 
 -- Confusion
 newDamageType{
-	name = "confusion", type = "RANDOM_CONFUSION",
+	name = "% chance of confusion", type = "RANDOM_CONFUSION",
 	projector = function(src, x, y, type, dam)
 		if _G.type(dam) == "number" then dam = {dam=dam} end
 		local target = game.level.map(x, y, Map.ACTOR)
@@ -1521,6 +1524,22 @@ newDamageType{
 	end,
 }
 
+-- Confusion
+newDamageType{
+	name = "% chance of confusion", type = "RANDOM_CONFUSION_PHYS",
+	projector = function(src, x, y, type, dam)
+		if _G.type(dam) == "number" then dam = {dam=dam} end
+		local target = game.level.map(x, y, Map.ACTOR)
+		if target and rng.percent(dam.dam) then
+			if target:canBe("confusion") then
+				target:setEffect(target.EFF_CONFUSED, 4, {power=75, apply_power=src:combatPhysicalpower(), no_ct_effect=true})
+			else
+				game.logSeen(target, "%s resists!", target.name:capitalize())
+			end
+		end
+	end,
+}
+
 newDamageType{
 	name = "gloom", type = "RANDOM_GLOOM",
 	projector = function(src, x, y, type, dam)
@@ -2641,6 +2660,7 @@ newDamageType{
 newDamageType{
 	name = "corrosive acid", type = "ACID_CORRODE",
 	projector = function(src, x, y, type, dam, tmp)
+		if _G.type(dam) == "number" then dam = {dur = 4, armor = dam/2, defense = dam/2, dam = dam, atk=dam/2} end
 		local target = game.level.map(x, y, Map.ACTOR)
 		if target then
 			DamageType:get(DamageType.ACID).projector(src, x, y, DamageType.ACID, dam.dam)
diff --git a/game/modules/tome/data/general/npcs/horror.lua b/game/modules/tome/data/general/npcs/horror.lua
index b4f6bf5cc1a9e7126dabaf6fb06841ad6cd44426..7f6f86bed46bae503375aaa3c7c3780d71f03d93 100644
--- a/game/modules/tome/data/general/npcs/horror.lua
+++ b/game/modules/tome/data/general/npcs/horror.lua
@@ -905,7 +905,7 @@ newEntity{ base="BASE_NPC_HORROR", define_as = "GRGGLCK_TENTACLE",
 --MUHUHAHAHAHAHAHA
 newEntity{ base = "BASE_NPC_HORROR",
 	name = "Ak'Gishil", color=colors.GREY, unique = true,
-	desc = "This blade horror has grown in power dramatically, and become a nexus of temporal energy. Rifts in space open around it constantly, summoning and banishing blades before vanishing as quickly as they appear.",
+	desc = "This Blade Horror has been infused with intense temporal magic, causing its power to increase dramatically. Rifts in space open around it constantly, summoning and banishing blades before vanishing as quickly as they appear.",
 	resolvers.nice_tile{tall=1},
 	level_range = {30, nil}, exp_worth = 2,
 	rarity = 50,
@@ -961,6 +961,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 }
 
 newEntity{ base="BASE_NPC_HORROR", define_as = "ANIMATED_BLADE",
+	resolvers.nice_tile{tall=1},
 	type = "construct", subtype = "weapon", image="object/magical_animated_sword.png",
 	name = "Animated Sword",
 	color = colors.GREY,
diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua
index 535585cdf97c189be5a6f064d039963d933d96a5..a69d51cb9e90b1f2990be64fbd3c8388860f25e6 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts.lua
@@ -542,7 +542,8 @@ newEntity{ base = "BASE_WARAXE",
 		physcrit = 10,
 		dammod = {str=1},
 		damrange = 1.2,
-		melee_project={[DamageType.BLIGHT] = 20},
+		burst_on_hit={[DamageType.BLIGHT] = 25},
+		lifesteal=5, --You can counter the life regen by fighting, muhuhahah
 	},
 	wielder = {
 		life_regen = -0.3,
@@ -755,6 +756,8 @@ newEntity{ base = "BASE_GREATMAUL",
 
 	wielder = {
 	},
+	max_power = 20, power_regen = 1,
+	use_talent = { id = Talents.T_SUNDER_ARMOR, level = 2, power = 20 },
 }
 
 
@@ -825,7 +828,7 @@ newEntity{ base = "BASE_WHIP",
 
 newEntity{ base = "BASE_GREATSWORD",
 	power_source = {technique=true},
-	define_as = "MURDERBLADE", rarity=false,
+	define_as = "MURDERBLADE",
 	name = "Warmaster Gnarg's Murderblade", unique=true, image="object/artifact/warmaster_gnargs_murderblade.png",
 	unided_name = "blood-etched greatsword", color=colors.CRIMSON,
 	desc = [[A blood-etched greatsword, it has seen many foes. From the inside.]],
@@ -839,7 +842,7 @@ newEntity{ base = "BASE_GREATSWORD",
 		apr = 19,
 		physcrit = 10,
 		dammod = {str=1.2},
-		special_on_hit = {desc="10% chance to send the wielder into a killing frenzy", fct=function(combat, who)
+		special_on_hit = {desc="10% chance to send the wielder into a killing frenzy", on_kill=1, fct=function(combat, who)
 			if not rng.percent(10) then return end
 			who:setEffect(who.EFF_FRENZY, 3, {crit=12, power=0.3, dieat=0.25})
 		end},
@@ -903,9 +906,10 @@ newEntity{ base = "BASE_GLOVES", define_as = "FLAMEWROUGHT",
 	cost = 50,
 	material_level = 1,
 	wielder = {
-		inc_stats = { [Stats.STAT_WIL] = 3, },
+		inc_stats = { [Stats.STAT_WIL] = 3, [Stats.STAT_CUN] = 2,},
 		resists = { [DamageType.FIRE]= 10, },
 		inc_damage = { [DamageType.FIRE]= 5, },
+		combat_mindpower=2,
 		combat_armor = 2,
 		combat = {
 			dam = 5,
@@ -918,7 +922,7 @@ newEntity{ base = "BASE_GLOVES", define_as = "FLAMEWROUGHT",
 		},
 	},
 	max_power = 24, power_regen = 1,
-	use_talent = { id = Talents.T_RITCH_FLAMESPITTER_BOLT, level = 2, power = 6 },
+	use_talent = { id = Talents.T_RITCH_FLAMESPITTER_BOLT, level = 3, power = 8 },
 }
 
 -- The crystal set
@@ -1109,12 +1113,13 @@ newEntity{ base = "BASE_WARAXE",
 	rarity = 220,
 	cost = 50,
 	combat = {
-		dam = 16,
+		dam = 18,
 		apr = 3,
 		physcrit = 12,
 		dammod = {str=1},
 		talent_on_hit = { [Talents.T_GREATER_WEAPON_FOCUS] = {level=2, chance=10} },
-		melee_project={[DamageType.DRAINLIFE] = 10},
+		lifesteal = 10,
+		convert_damage = {[DamageType.BLIGHT] = 25},
 	},
 	wielder = {
 		inc_damage = { [DamageType.BLIGHT] = 8 },
@@ -1560,7 +1565,7 @@ newEntity{ base = "BASE_GREATMAUL", define_as="ROTTING_MAUL",
 		dammod = {str=1.4},
 		convert_damage = {[DamageType.BLIGHT] = 20},
 		melee_project={[DamageType.CORRUPTED_BLOOD] = 30},
-		special_on_hit = {desc="25% to damage nearby creatures", on_kill=true, fct=function(combat, who, target)
+		special_on_hit = {desc="25% chance to damage nearby creatures", on_kill=1, fct=function(combat, who, target)
 			if rng.percent(25) then
 			local o, item, inven_id = who:findInAllInventoriesBy("define_as", "ROTTING_MAUL")
 				local dam = rng.avg(1,2) * (70+ who:getStr() * 1.8)
diff --git a/game/modules/tome/data/general/objects/world-artifacts-far-east.lua b/game/modules/tome/data/general/objects/world-artifacts-far-east.lua
index 70733cf26b46581a76ae1dbc9e6cc73809747eed..1e3bf0aedc5359c5a23bc608a7e6b104891d8082 100644
--- a/game/modules/tome/data/general/objects/world-artifacts-far-east.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts-far-east.lua
@@ -228,9 +228,9 @@ newEntity{ base = "BASE_LONGSWORD", define_as = "BLOODEDGE",
 	unique = true,
 	name = "Blood-Edge", image = "object/artifact/sword_blood_edge.png",
 	unided_name = "red crystalline sword",
-	level_range = {35, 42},
+	level_range = {36, 48},
 	color=colors.RED,
-	rarity = 270,
+	rarity = 260,
 	desc = [[This deep red sword weeps blood continuously. It was born in the labs of the orcish corrupter Hurik, who sought to make a crystal that would house his soul after death. But his plans were disrupted by a band of sun paladins, and though most died purging his keep of dread minions, their leader Raasul fought through to Hurik's lab, sword in hand. There the two did battle, blade against blood magic, till both fell to the floor with weeping wounds. The orc with his last strength crawled towards his fashioned phylactery, hoping to save himself, but Raasul saw his plans and struck the crystal with his light-bathed sword. It shattered, and in the sudden impulse of energies the steel, crystal and blood were fused into one.
 Now the broken fragments of Raasul's soul are trapped in this terrible artifact, his mind warped beyond all sanity by decades of imprisonment. Only the taste of blood calls him forth, his soul stealing the lifeblood of others to take on physical form again, that he may thrash and wail against the living.]],
 	cost = 1000,
@@ -248,15 +248,15 @@ Now the broken fragments of Raasul's soul are trapped in this terrible artifact,
 		max_vim = 25,
 	},
 
-	max_power = 28, power_regen = 1,
-	use_talent = { id = Talents.T_BLEEDING_EDGE, level = 4, power = 28 },
+	max_power = 20, power_regen = 1,
+	use_talent = { id = Talents.T_BLEEDING_EDGE, level = 4, power = 20 },
 	combat = {
-		dam = 44,
-		apr = 4,
-		physcrit = 5,
-		dammod = {str=0.55, mag=0.5},
+		dam = 46,
+		apr = 7,
+		physcrit = 6,
+		dammod = {str=1, mag=0.1},
 		convert_damage = {[DamageType.BLIGHT] = 50},
-
+		lifesteal=5,
 		special_on_hit = {desc="15% chance to animate a bleeding foe's blood", fct=function(combat, who, target)
 			if not rng.percent(15) then return end
 			local cut = false
diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua
index 407a034836aeda6bc2dd182c2c45aa52c4ca37bd..7284f007ffda35a0a9b0871b696cc1b71b816d4b 100644
--- a/game/modules/tome/data/general/objects/world-artifacts.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts.lua
@@ -192,6 +192,7 @@ newEntity{ base = "BASE_STAFF",
 		apr = 10,
 		dammod = {mag=1.4},
 		damtype = DamageType.PHYSICAL,
+		melee_project={[DamageType.RANDOM_CONFUSION] = 10},
 	},
 	wielder = {
 		combat_atk = 7,
@@ -204,6 +205,8 @@ newEntity{ base = "BASE_STAFF",
 			["spell/staff-combat"] = 0.2,
 		}
 	},
+	max_power = 20, power_regen = 1,
+	use_talent = { id = Talents.T_CHANNEL_STAFF, level = 2, power = 9 },
 }
 
 newEntity{ base = "BASE_RING",
@@ -263,9 +266,13 @@ newEntity{ base = "BASE_RING",
 	rarity = 250,
 	cost = 500,
 	material_level = 4,
-
+	special_desc = function(self) return "Will bring you back from death, but only once!" end,
 	wielder = {
 		inc_stats = { [Stats.STAT_LCK] = 10, },
+		die_at = -100,
+		combat_physresist = 10,
+		combat_mentalresist = 10,
+		combat_spellresist = 10,
 	},
 	one_shot_life_saving = true,
 }
@@ -1078,9 +1085,11 @@ newEntity{ base = "BASE_RING",
 	rarity = 200,
 	cost = 500,
 	material_level = 5,
-
 	wielder = {
 		inc_stats = { [Stats.STAT_STR] = 3, [Stats.STAT_DEX] = 3, [Stats.STAT_CON] = 3, },
+		combat_apr = 15,
+		combat_dam = 10,
+		combat_physcrit = 5,
 		talents_types_mastery = {
 			["technique/2hweapon-cripple"] = 0.3,
 			["technique/2hweapon-offense"] = 0.3,
@@ -1088,6 +1097,7 @@ newEntity{ base = "BASE_RING",
 			["technique/archery-sling"] = 0.3,
 			["technique/archery-training"] = 0.3,
 			["technique/archery-utility"] = 0.3,
+			["technique/archery-excellence"] = 0.3,
 			["technique/combat-techniques-active"] = 0.3,
 			["technique/combat-techniques-passive"] = 0.3,
 			["technique/combat-training"] = 0.3,
@@ -1098,6 +1108,11 @@ newEntity{ base = "BASE_RING",
 			["technique/warcries"] = 0.3,
 			["technique/superiority"] = 0.3,
 			["technique/thuggery"] = 0.3,
+			["technique/pugilism"] = 0.3,
+			["technique/unarmed-discipline"] = 0.3,
+			["technique/unarmed-training"] = 0.3,
+			["technique/grappling"] = 0.3,
+			["technique/finishing-moves"] = 0.3,
 		},
 	},
 }
@@ -1158,7 +1173,7 @@ newEntity{ base = "BASE_MACE",
 	unique = true,
 	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.]],
+	desc = [[An oddly twisted club with a hefty weight on the end. There's something very strange about it.]],
 	level_range = {12, 20},
 	rarity = 192,
 	require = { stat = { str=20 }, },
@@ -1169,7 +1184,11 @@ newEntity{ base = "BASE_MACE",
 		apr = 4,
 		physcrit = 10,
 		dammod = {str=1},
-		melee_project={[DamageType.RANDOM_CONFUSION] = 14},
+		melee_project={[DamageType.RANDOM_CONFUSION_PHYS] = 14},
+		talent_on_hit = { T_BATTLE_CALL = {level=1, chance=10},},
+		burst_on_crit = {
+			[DamageType.PHYSKNOCKBACK] = 20,
+		},
 	},
 	wielder = {combat_atk=12,},
 }
@@ -1490,6 +1509,7 @@ newEntity{ base = "BASE_CLOAK",
 		combat_def = 4,
 		combat_ranged_def = 12,
 		silence_immune = 0.3,
+		slow_projectiles = 20,
 		projectile_evasion = 25,
 	},
 	max_power = 50, power_regen = 1,
@@ -1841,6 +1861,7 @@ newEntity{ base = "BASE_WARAXE",
 		resists_pen = {
 			[DamageType.COLD] = 20,
 		},
+		iceblock_pierce=25,
 		talent_on_hit = { [Talents.T_ICE_BREATH] = {level=2, chance=15} },
 	},
 	combat = {
@@ -2288,7 +2309,7 @@ newEntity{ base = "BASE_MACE",
 		apr = 5,
 		physcrit = 2.5,
 		dammod = {str=1},
-		special_on_hit = {desc="10% chance to shimer to a different hue and gain powers", fct=function(combat, who, target)
+		special_on_hit = {desc="10% chance to shimer to a different hue and gain powers", on_kill=1, fct=function(combat, who, target)
 			if not rng.percent(10) then return end
 			local o, item, inven_id = who:findInAllInventoriesBy("define_as", "URESLAK_FEMUR")
 			if not o or not who:getInven(inven_id).worn then return end
@@ -2448,7 +2469,7 @@ newEntity{ base = "BASE_KNIFE", define_as = "ART_PAIR_TWDAG",
 	},
 	set_list = { {"define_as","ART_PAIR_TWSWORD"} },
 	on_set_complete = function(self, who)
-		self.combat.special_on_hit = {desc="10% chance to return the target to a much youger state", fct=function(combat, who, target)
+		self.combat.special_on_hit = {desc="10% chance to return the target to a much younger state", fct=function(combat, who, target)
 			if not rng.percent(10) then return end
 			target:setEffect(target.EFF_TURN_BACK_THE_CLOCK, 3, {power=10})
 		end}
@@ -2854,7 +2875,7 @@ newEntity{ base = "BASE_SHOT",
 		physcrit = 10,
 		dammod = {dex=0.7, cun=0.5},
 		damtype = DamageType.FIRE,
-		special_on_hit = {desc="sets off a powerful explosion", fct=function(combat, who, target)
+		special_on_hit = {desc="sets off a powerful explosion", on_kill=1, fct=function(combat, who, target)
 			local tg = {type="ball", range=0, radius=3, selffire=false}
 			local grids = who:project(tg, target.x, target.y, engine.DamageType.FIREKNOCKBACK, {dist=3, dam=40 + who:getMag()*0.6 + who:getCun()*0.6})
 			game.level.map:particleEmitter(target.x, target.y, tg.radius, "ball_fire", {radius=tg.radius})
@@ -3035,7 +3056,7 @@ newEntity{ base = "BASE_MINDSTAR",
 	},
 }
 
-newEntity{ base = "BASE_STAFF",
+newEntity{ base = "BASE_STAFF", define_as = "SET_SCEPTRE_LICH",
 	power_source = {arcane=true},
 	unique = true,
 	name = "Sceptre of the Archlich",
@@ -3079,6 +3100,11 @@ newEntity{ base = "BASE_STAFF",
 			game.logPlayer(who, "#LIGHT_BLUE#You feel the power of the sceptre flow over your undead form!")
 		end
 	end,
+	set_list = { {"define_as", "SET_LICH_RING"} },
+	on_set_complete = function(self, who)
+	end,
+	on_set_broken = function(self, who)
+	end,
 }
 
 newEntity{ base = "BASE_MINDSTAR",
@@ -3089,7 +3115,7 @@ newEntity{ base = "BASE_MINDSTAR",
 	level_range = {27, 34},
 	color=colors.GREEN, image = "object/artifact/oozing_heart.png",
 	rarity = 250,
-	desc = [[This mindstar oozes a thick, sticky liquid. Magic seems to die around it.]],
+	desc = [[This mindstar oozes a thick, caustic liquid. Magic seems to die around it.]],
 	cost = 85,
 	require = { stat = { wil=36 }, },
 	material_level = 4,
@@ -3106,6 +3132,7 @@ newEntity{ base = "BASE_MINDSTAR",
 		combat_spellresist=15,
 		inc_damage={
 			[DamageType.NATURE] = 18,
+			[DamageType.ACID] = 15,
 		},
 		resists={
 			[DamageType.ARCANE] = 12,
@@ -3398,6 +3425,7 @@ newEntity{ base = "BASE_LEATHER_BELT",
 		inc_stats = { [Stats.STAT_LCK] = 8, [Stats.STAT_DEX] = 12, [Stats.STAT_CUN] = 10,},
 		slow_projectiles = 30,
 		combat_def_ranged = 20,
+		projectile_evasion = 15,
 	},
 	max_power = 30, power_regen = 1,
 	use_talent = { id = Talents.T_EVASION, level = 4, power = 30 },
@@ -3564,17 +3592,17 @@ newEntity{ base = "BASE_GREATSWORD",
 	level_range = {32, 40},
 	color=colors.DARKRED,
 	rarity = 300,
-	desc = [[This massive, flame coated greatsword was stolen from a mighty demon countless years ago, by the hero Kestin Highfin. It constantly seeks to drain and incinerate.]],
+	desc = [[This massive, flame coated greatsword was stolen by the adventurer Kestin Highfin, during the Age of Dusk. It originally belonged to a demon named Frond'Ral the Red.  It roars with vile flames and its very existence seems to be a blight upon the lands.]],
 	cost = 400,
 	require = { stat = { str=40 }, },
 	material_level = 4,
 	combat = {
-		dam = 64,
+		dam = 68,
 		apr = 5,
 		physcrit = 10,
-		dammod = {str=1.2},
-		convert_damage={[DamageType.FIREBURN] = 50,},
-		melee_project={[DamageType.DRAINLIFE] = 25},
+		dammod = {str=1.25},
+		convert_damage={[DamageType.FIREBURN] = 50, [DamageType.BLIGHT] = 10,},
+		lifesteal = 8, --Won't affect the burn damage, so it gets to have a bit more
 	},
 	wielder = {
 		resists = {
@@ -3751,7 +3779,7 @@ newEntity{ base = "BASE_LONGSWORD", define_as="CORPUS",
 			if not rng.percent(o.combat.physcrit*0.8) or o.combat.physcrit < 30 then return end
 			o.summon(o, who)
 		end},
-		special_on_crit = {desc="grows in power", fct=function(combat, who, target)
+		special_on_crit = {desc="grows in power", on_kill=1, fct=function(combat, who, target)
 			local o, item, inven_id = who:findInAllInventoriesBy("define_as", "CORPUS")
 			if not o or not who:getInven(inven_id).worn then return end
 			who:onTakeoff(o, true)
@@ -3926,7 +3954,7 @@ newEntity{ base = "BASE_LONGSWORD", define_as="MORRIGOR",
 			who:project(tg, target.x, target.y, engine.DamageType.ARCANE, who:getMag()*0.5)
 			who:project(tg, target.x, target.y, engine.DamageType.DARKNESS, who:getMag()*0.5)
 		end},
-		special_on_kill = {desc="swallows the victim's soul, gaining a new power until unequipped", fct=function(combat, who, target)
+		special_on_kill = {desc="swallows the victim's soul, gaining a new power", fct=function(combat, who, target)
 			local o, item, inven_id = who:findInAllInventoriesBy("define_as", "MORRIGOR")
 			if o.use_talent then return end
 			local got_talent = false
@@ -4023,7 +4051,7 @@ newEntity{ base = "BASE_GAUNTLETS",
 	name = "Spellhunt Remnants", color = colors.GREY, image = "object/artifact/spellhunt_remnants.png",
 	unided_name = "rusted voratun gauntlets",
 	desc = [[These once brilliant voratun gauntlets have fallen into a deep decay. Originally used in the spellhunt, they were often used to destroy arcane artifacts, curing the world of their influence.]],
-	level_range = {1, 25}, --Relevent at all levels, though of course mat level 1 limits it to early game.
+	level_range = {1, 25}, --Relevant at all levels, though of course mat level 1 limits it to early game.
 	rarity = 450, -- But rare to make it not ALWAYS appear.
 	cost = 1000,
 	material_level = 1,
@@ -4264,7 +4292,7 @@ newEntity{ base = "BASE_SHIELD",
 		physcrit = 4.5,
 		dammod = {str=1},
 		damtype = DamageType.LIGHT,
-		special_on_hit = {desc="releases a burst of light", fct=function(combat, who, target)
+		special_on_hit = {desc="releases a burst of light", on_kill=1, fct=function(combat, who, target)
 			local tg = {type="ball", range=0, radius=1, selffire=false}
 			local grids = who:project(tg, target.x, target.y, engine.DamageType.LITE_LIGHT, 30 + who:getWil()*0.5)
 			game.level.map:particleEmitter(target.x, target.y, tg.radius, "ball_light", {radius=tg.radius})
@@ -4339,8 +4367,8 @@ newEntity{ base = "BASE_LEATHER_BOOT",
 			[DamageType.PHYSICAL] = 5,
 		},
 	},
-	max_power = 18, power_regen = 1,
-	use_talent = { id = Talents.T_TELEKINETIC_LEAP, level = 4, power = 15 },
+	max_power = 20, power_regen = 1,
+	use_talent = { id = Talents.T_TELEKINETIC_LEAP, level = 3, power = 20 },
 }
 
 newEntity{ base = "BASE_CLOTH_ARMOR", --Thanks Grayswandir!
@@ -4707,7 +4735,8 @@ newEntity{ base = "BASE_KNIFE", -- Thanks Grayswandir!
 		apr = 10,
 		physcrit = 12,
 		dammod = {dex=0.45,str=0.45,},
-		melee_project={[DamageType.FIREBURN] = 10, [DamageType.DRAINLIFE] = 10,},
+		melee_project={[DamageType.FIREBURN] = 10, [DamageType.BLIGHT] = 10,},
+		lifesteal = 6,
 		burst_on_crit = {
 			[DamageType.CORRUPTED_BLOOD] = 20,
 			[DamageType.FIRE] = 20,
@@ -4776,7 +4805,7 @@ newEntity{ base = "BASE_LITE", --Thanks Grayswandir!
 				cut_immune = 1,
 				see_invisible = 80,
 				undead = 1,
-				will_o_wisp_dam = 100,
+				will_o_wisp_dam = 100 + who:getMag() * 2,
 				resolvers.talents{[Talents.T_WILL_O__THE_WISP_EXPLODE] = 1,},
 				
 				faction = who.faction,
@@ -5071,7 +5100,7 @@ newEntity{ base = "BASE_SHOT", --Thanks Grayswandir!
 	name = "Pouch of the Subconscious", image = "object/artifact/pouch_of_the_subconscious.png",
 	unided_name = "familiar pouch",
 	desc = [[You find yourself constantly fighting an urge to handle this strange pouch of shot.]],
-	color = colors.RED, image = "object/artifact/star_shot.png",
+	color = colors.RED,
 	level_range = {25, 40},
 	rarity = 300,
 	cost = 110,
@@ -5084,7 +5113,8 @@ newEntity{ base = "BASE_SHOT", --Thanks Grayswandir!
 		physcrit = 10,
 		dammod = {dex=0.7, cun=0.5, wil=0.1},
 		ranged_project={
-			[DamageType.MIND] = 20,
+			[DamageType.MIND] = 25,
+			[DamageType.MINDSLOW] = 30,
 		},
 		talent_on_hit = { [Talents.T_RELOAD] = {level=1, chance=50} },
 	},
@@ -5096,7 +5126,7 @@ newEntity{ base = "BASE_SHOT", --Thanks Grayswandir!
 	name = "Wind Worn Shot", image = "object/artifact/wind_worn_shot.png",
 	unided_name = "perfectly smooth shot",
 	desc = [[These perfectly white spheres appear to have been worn down by years of exposure to strong winds.]],
-	color = colors.RED, image = "object/artifact/star_shot.png",
+	color = colors.RED,
 	level_range = {25, 40},
 	rarity = 300,
 	cost = 110,
@@ -5109,10 +5139,30 @@ newEntity{ base = "BASE_SHOT", --Thanks Grayswandir!
 		physcrit = 10,
 		travel_speed = 1,
 		dammod = {dex=0.7, cun=0.5},
-		ranged_project={
-			[DamageType.LIGHTNING] = 20,
-		},
-		talent_on_hit = { [Talents.T_TORNADO] = {level=2, chance=8} },
+		talent_on_hit = { [Talents.T_TORNADO] = {level=2, chance=10} },
+		special_on_hit = {desc="35% chance for lightning to arc to a second target", fct=function(combat, who, target)
+			if not rng.percent(35) 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, x=target.x, y=target.y}
+			if #tgts <= 0 then return end
+			local a, id = rng.table(tgts)
+			table.remove(tgts, id)
+			local dam = 30 + (who:combatMindpower())
+
+			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},
 	},
 }
 
@@ -5248,6 +5298,7 @@ newEntity{ base = "BASE_GLOVES", --Thanks SageAcrin /AND/ Edge2054!
 		inc_damage={[DamageType.DARKNESS] = 8, [DamageType.TEMPORAL] = 8},
 		resists_pen={[DamageType.DARKNESS] = 10, [DamageType.TEMPORAL] = 10},
 		negative_regen=0.2,
+		negative_regen_ref_mod=0.2,
 		combat = {
 			dam = 13,
 			apr = 3,
@@ -5667,8 +5718,8 @@ newEntity{ base = "BASE_LEATHER_CAP",
 		},
 		talents_types_mastery = { ["wild-gift/moss"] = 0.1,},
 	},
-	max_power = 50, power_regen = 1,
-	use_talent = { id = Talents.T_EARTH_S_EYES, level = 2, power = 50 },
+	max_power = 35, power_regen = 1,
+	use_talent = { id = Talents.T_EARTH_S_EYES, level = 2, power = 35 },
 }
 
 
@@ -5968,18 +6019,19 @@ newEntity{ base = "BASE_HEAVY_BOOTS",
 	cost = 200,
 	material_level = 5,
 	wielder = {
-		combat_armor = 15,
+		combat_armor = 20,
 		combat_def = 8,
 		fatigue = 12,
-		combat_physicalpower = 10,
+		combat_dam = 10,
 		inc_stats = { 
-			[Stats.STAT_STR] = 15, 
+			[Stats.STAT_STR] = 20, 
 			[Stats.STAT_CON] = 10, 
-			[Stats.STAT_DEX] = -4, 
+			[Stats.STAT_DEX] = -6, 
 		},
 		knockback_immune=1,
-		inc_damage = { [DamageType.PHYSICAL] = 10 },
-		resists = { [DamageType.PHYSICAL] = 10,  [DamageType.ACID] = 10,},
+		combat_armor_hardiness = 20,
+		inc_damage = { [DamageType.PHYSICAL] = 15 },
+		resists = { [DamageType.PHYSICAL] = 15,  [DamageType.ACID] = 15,},
 	},
 }
 
@@ -6019,7 +6071,7 @@ All manner of shady gamblers have since claimed to have worn it at one point or
 		local hp_diff = (self.wearer_hp - self.worn_by.life/self.worn_by.max_life)
 		
 		if hp_diff >= 0.2 and not self.worn_by:hasEffect(self.worn_by.EFF_DAMAGE_SHIELD) then
-			self.worn_by:setEffect(self.worn_by.EFF_DAMAGE_SHIELD, 4, {power = (hp_diff * self.worn_by.life)*2})
+			self.worn_by:setEffect(self.worn_by.EFF_DAMAGE_SHIELD, 4, {power = (hp_diff * self.worn_by.max_life)*2})
 			game.logPlayer(self.worn_by, "#LIGHT_BLUE#A barrier bursts from the leather jacket!")
 		end		
 		
@@ -6049,6 +6101,800 @@ newEntity{ base = "BASE_TOOL_MISC",
 		learn_talent = {[Talents.T_BATTLE_TRANCE] = 1},
 	},
 }
+
+newEntity{ base = "BASE_CLOTH_ARMOR",
+	power_source = {arcane=true},
+	unique = true,
+	name = "The Calm", color = colors.GREEN, 
+	unided_name = "ornate green robe",
+	desc = [[This green robe is engraved with icons showing clouds and swirling winds. Its original owner, a powerful mage named Proccala, was often revered for both his great benevolence and his intense power when it proved necessary.]],
+	level_range = {30, 40},
+	rarity = 250,
+	cost = 500,
+	material_level = 4,
+	special_desc = function(self) return "Your Lightning and Chain Lightning spells gain a 24% chance to daze, and your Thunderstorm spell gains a 12% chance to daze." end,
+	wielder = {
+		combat_spellpower = 20,
+		inc_damage = {[DamageType.LIGHTNING]=25},
+		combat_def = 15,
+		inc_stats = { [Stats.STAT_MAG] = 10, [Stats.STAT_WIL] = 8, [Stats.STAT_CUN] = 6,},
+		resists={[DamageType.LIGHTNING] = 20},
+		resists_pen = { [DamageType.LIGHTNING] = 15 },
+		slow_projectiles = 15,
+		movement_speed = 0.1,
+		lightning_daze_tempest=24,
+	},
+}
+
+newEntity{ base = "BASE_LEATHER_CAP",
+	power_source = {psionic=true},
+	unique = true,
+	name = "Omniscience",
+	unided_name = "very plain leather cap",
+	level_range = {40, 50},
+	color=colors.WHITE,
+	encumber = 1,
+	rarity = 300,
+	desc = [[This white cap is plain and dull, but as the light reflects off of its surface, you see images of faraway corners of the world in the sheen."]],
+	cost = 200,
+	material_level=5,
+	wielder = {
+		combat_def=7,
+		combat_mindpower=20,
+		combat_mindcrit=9,
+		combat_mentalresist = 25,
+		infravision=5,
+		confusion_immune=0.4,
+		resists = {[DamageType.MIND] = 15,},
+		resists_cap = {[DamageType.MIND] = 10,},
+		resists_pen = {[DamageType.MIND] = 10,},
+		max_psi=50,
+		psi_on_crit=6,
+	},
+	max_power = 30, power_regen = 1,
+	use_power = { name = "reveal the surrounding area", power = 30,
+		use = function(self, who)
+			who:magicMap(20)
+			game.logSeen(who, "%s has a sudden vision!", who.name:capitalize())
+			return {id=true, used=true}
+		end
+	},
+}
+
+newEntity{ base = "BASE_AMULET",
+	power_source = {nature=true},
+	unique = true,
+	name = "Earthen Beads", color = colors.BROWN, image = "object/artifact/artifact_jewelry_withering_orbs.png",
+	unided_name = "strung clay beads",
+	desc = [[This is a string of ancient, hardened clay beads, cracked and faded with age. It was used by Wilders in the Age of Dusk, in an attempt to enhance their connection with Nature.]],
+	level_range = {10, 20},
+	rarity = 200,
+	cost = 100,
+	material_level = 2,
+	metallic = false,
+	special_desc = function(self) return "Enhances the effectiveness of Meditation by 20%" end,
+	wielder = {
+		combat_mindpower = 5,
+		enhance_meditate=0.2,
+		inc_stats = { [Stats.STAT_WIL] = 4,},
+		life_regen=0.2,
+		damage_affinity={
+			[DamageType.NATURE] = 15,
+		},
+	},
+	max_power = 40, power_regen = 1,
+	use_talent = { id = Talents.T_NATURE_TOUCH, level = 2, power = 40 },
+}
+
+newEntity{ base = "BASE_GAUNTLETS",
+	power_source = {arcane=true, nature=true}, --Perhaps it is of Dwarven make :)
+	unique = true,
+	name = "Hand of the World-Shaper", color = colors.BROWN, image = "object/artifact/dakhtuns_gauntlets.png",
+	unided_name = "otherworldly stone gauntlets",
+	desc = [[These heavy stone gauntlets make the very ground beneath you bend and warp as they move.]],
+	level_range = {40, 50},
+	rarity = 300,
+	cost = 800,
+	material_level = 5,
+	wielder = {
+		inc_stats = { [Stats.STAT_STR] = 6, [Stats.STAT_MAG] = 6 },
+		inc_damage = { [DamageType.PHYSICAL] = 12 },
+		resists = { [DamageType.PHYSICAL] = 10 },
+		resists_pen = { [DamageType.PHYSICAL] = 15 },
+		combat_spellpower=10,
+		combat_spellcrit = 10,
+		combat_armor = 12,
+		talents_types_mastery = {
+			["spell/earth"] = 0.1,
+			["spell/stone"] = 0.2,
+			["wild-gift/sand-drake"] = 0.1,
+		},
+		combat = {
+			dam = 38,
+			apr = 10,
+			physcrit = 7,
+			physspeed = 0.2,
+			dammod = {dex=0.4, str=-0.6, cun=0.4, mag=0.1 },
+			talent_on_hit = { T_EARTHEN_MISSILES = {level=5, chance=15},},
+			damrange = 0.3,
+			burst_on_hit = {
+			[DamageType.GRAVITY] = 50,
+			},
+			burst_on_crit = {
+			[DamageType.GRAVITYPIN] = 30,
+			},
+		},
+	},
+	max_power = 30, power_regen = 1,
+	use_talent = { id = Talents.T_EARTHQUAKE, level = 4, power = 30 },
+}
+
+newEntity{ base = "BASE_KNIFE", --Razakai's idea, slightly modified
+	power_source = {psionic=true},
+	unique = true,
+	name = "Mercy", image = "object/artifact/dagger_silent_blade.png",
+	unided_name = "wickedly sharp dagger",
+	desc = [[This dagger was used by a nameless healer during the Age of Dusk. The plagues that ravaged his town were beyond the ability of mortal man to treat, so he took to using his dagger to as an act of mercy when faced with hopeless patients. Despite his good intentions, it is now cursed with dark power, letting it kill in a single stroke against those already weakened.]],
+	level_range = {30, 40},
+	rarity = 250,
+	require = { stat = { dex=42 }, },
+	cost = 500,
+	material_level = 4,
+	combat = {
+		dam = 35,
+		apr = 9,
+		physcrit = 20,
+		dammod = {str=0.45, dex=0.55},
+		special_on_hit = {desc="deals physical damage up to 15% of foe's missing health, based on enemy rank", fct=function(combat, who, target)
+			local tg = {type="ball", range=10, radius=0, selffire=false}
+			who:project(tg, target.x, target.y, engine.DamageType.PHYSICAL, (target.max_life - target.life)*(0.15/target.rank))
+		end},
+	},
+	wielder = {
+		inc_stats = {[Stats.STAT_STR] = 6, [Stats.STAT_DEX] = 6,},
+		combat_critical_power = 25,
+	},
+}
+
+newEntity{ base = "BASE_CLOAK",
+	power_source = {psionic=true},
+	unique = true,
+	name = "Guise of the Hated", image = "object/artifact/black_cloak.png",
+	unided_name = "gloomy black cloak",
+	desc = [[Forget the moons, the starry sky,
+The warm and greeting sheen of sun,
+The rays of light will never reach inside,
+The heart which wishes that it be unseen.]],
+	level_range = {40, 50},
+	color = colors.BLACK,
+	rarity = 370,
+	cost = 300,
+	material_level = 5,
+	wielder = {
+		combat_def = 14,
+		combat_mindpower = 8,
+		combat_mindcrit = 4,
+		combat_physcrit = 4,
+		inc_stealth=12,
+		combat_mentalresist = 10,
+		hate_per_kill = 5,
+		hate_per_crit = 5,
+		inc_stats = { 
+			[Stats.STAT_WIL] = 8, 
+			[Stats.STAT_CUN] = 6, 
+			[Stats.STAT_DEX] = 4, 
+		},
+		inc_damage = { all = 4 },
+		resists = {[DamageType.DARKNESS] = 10, [DamageType.MIND] = 10,},
+		talents_types_mastery = {
+			["cursed/gloom"] = 0.1,
+			["cursed/darkness"] = 0.1,
+		},
+		on_melee_hit={[DamageType.MIND] = 30},
+	},
+	max_power = 18, power_regen = 1,
+	use_talent = { id = Talents.T_CREEPING_DARKNESS, level = 4, power = 18 },
+}
+
+newEntity{ base = "BASE_KNIFE", --Thanks FearCatalyst/FlarePusher!
+	power_source = {arcane=true},
+	unique = true,
+	name = "Spelldrinker", image = "object/artifact/dagger_silent_blade.png",
+	unided_name = "eerie black dagger",
+	desc = [[Countless mages have fallen victim to the sharp sting of this blade, betrayed by those among them with greed for ever greater power.
+Passed on and on, this blade has developed a thirst of its own.]],
+	level_range = {20, 30},
+	rarity = 250,
+	require = { stat = { dex=30 }, },
+	cost = 300,
+	material_level = 3,
+	combat = {
+		dam = 28,
+		apr = 9,
+		physcrit = 10,
+		dammod = {str=0.45, dex=0.55, mag=0.05},
+		talent_on_hit = { T_DISPERSE_MAGIC = {level=1, chance=15},},
+		special_on_hit = {desc="steals up to 50 mana from the target", fct=function(combat, who, target)
+			local manadrain = util.bound(target:getMana(), 0, 50)
+			target:incMana(-manadrain)
+			who:incMana(manadrain)
+			local tg = {type="ball", range=10, radius=0, selffire=false}
+			who:project(tg, target.x, target.y, engine.DamageType.ARCANE, manadrain)
+		end},
+	},
+	wielder = {
+		inc_stats = {[Stats.STAT_MAG] = 6, [Stats.STAT_CUN] = 6,},
+		combat_spellresist=12,
+		resists={
+			[DamageType.ARCANE] = 12,
+		},
+	},
+}
+
+newEntity{ base = "BASE_AMULET",
+	power_source = {arcane=true},
+	unique = true,
+	name = "Frost Lord's Chain",
+	unided_name = "ice coated chain", image = "object/artifact/mirror_shards.png",
+	desc = [[This impossibly cold chain of frost coated metal radiates a strange and imposing aura.]],
+	color = colors.LIGHT_RED,
+	level_range = {40, 50},
+	rarity = 220,
+	cost = 350,
+	material_level = 5,
+	special_desc = function(self) return "Gives all your cold damage a 20% chance to freeze the target, and allows 20% of your damage to ignore ice blocks." end,
+	wielder = {
+		combat_spellpower=12,
+		inc_damage={
+			[DamageType.COLD] = 12,
+		},
+		resists={
+			[DamageType.COLD] = 25,
+		},
+		stun_immune = 0.3,
+		on_melee_hit = {[DamageType.COLD]=10},
+		cold_freezes = 20,
+		iceblock_pierce=20,
+		learn_talent = {[Talents.T_SHIV_LORD] = 2},
+	},
+}
+
+newEntity{ base = "BASE_LONGSWORD", --Thanks BadBadger?
+	power_source = {arcane=true},
+	unique = true,
+	name = "Twilight's Edge", image = "object/artifact/weapon_spellblade.png",
+	unided_name = "shining long sword",
+	level_range = {32, 42},
+	color=colors.GREY,
+	rarity = 250,
+	desc = [[The blade of this sword seems to have been forged of a mixture of voratun and stralite, resulting in a blend of swirling light and darkness.]],
+	cost = 800,
+	require = { stat = { str=35,}, },
+	material_level = 4,
+	combat = {
+		dam = 47,
+		apr = 7,
+		physcrit = 12,
+		dammod = {str=1},
+		special_on_crit = {desc="release a burst of light and dark damage (scales with Magic)", on_kill=1, fct=function(combat, who, target)
+			local tg = {type="ball", range=10, radius=2, selffire=false}
+			who:project(tg, target.x, target.y, engine.DamageType.LIGHT, 40 + who:getMag()*0.6)
+			who:project(tg, target.x, target.y, engine.DamageType.DARKNESS, 40 + who:getMag()*0.6)
+			game.level.map:particleEmitter(target.x, target.y, tg.radius, "shadow_flash", {radius=tg.radius})
+		end},
+	},
+	wielder = {
+		lite = 1,
+		combat_spellpower = 12,
+		combat_spellcrit = 4,
+		inc_damage={
+			[DamageType.DARKNESS] = 18,
+			[DamageType.LIGHT] = 18,
+		},
+		inc_stats = { [Stats.STAT_MAG] = 4, [Stats.STAT_STR] = 4, [Stats.STAT_CUN] = 4, },
+	},
+}
+
+newEntity{ base = "BASE_RING",
+	power_source = {psionic=true},
+	name = "Mnemonic", unique=true,
+	desc = [[As long as you wear this ring, you will never forget who you are.]],
+	unided_name = "familiar ring",
+	level_range = {40, 50},
+	rarity = 250,
+	cost = 300,
+	material_level = 5,
+	special_desc = function(self) return "When using a mental talent, gives a 10% chance to lower the current cooldowns of up to three of your wild gift, psionic, or cursed talents by three turns." end,
+	wielder = {
+		combat_mentalresist = 20,
+		combat_mindpower = 12,
+		inc_stats = {[Stats.STAT_WIL] = 8,},
+		resists={[DamageType.MIND] = 25,},
+		confusion_immune=0.4,
+		talents_types_mastery = {
+			["psionic/mentalism"]=0.2,
+		},
+		psi_regen=0.5,	
+	},
+	max_power = 30, power_regen = 1,
+	use_talent = { id = Talents.T_MENTAL_SHIELDING, level = 2, power = 30 },
+	talent_on_mind = { {chance=10, talent=Talents.T_MENTAL_REFRESH, level=1}},
+}
+
+newEntity{ base = "BASE_LONGSWORD",
+	power_source = {arcane=true, technique=true},
+	unique = true,
+	name = "Acera",
+	unided_name = "corroded sword", image = "object/artifact/weapon_sword_genocide.png",
+	level_range = {25, 35},
+	color=colors.GREEN,
+	rarity = 300,
+	desc = [[This warped, blackened sword drips acid from its countless pores.]],
+	cost = 400,
+	require = { stat = { str=40 }, },
+	material_level = 3,
+	combat = {
+		dam = 33,
+		apr = 4,
+		physcrit = 10,
+		dammod = {str=1},
+		burst_on_crit = {
+			[DamageType.ACID_CORRODE] = 40,
+		},
+		melee_project={[DamageType.ACID] = 12},
+	},
+	wielder = {
+		inc_damage={ [DamageType.ACID] = 15,},
+		resists={[DamageType.ACID] = 15,},
+		resists_pen={[DamageType.PHYSICAL] = 10,}, --Burns right through your pathetic physical resists
+		combat_physcrit = 10,
+		combat_spellcrit = 10,
+	},
+	max_power = 30, power_regen = 1,
+	use_talent = { id = Talents.T_CORROSIVE_WORM, level = 4, power = 30 },
+}
+
+newEntity{ base = "BASE_GREATSWORD",
+	power_source = {technique=true},
+	define_as = "DOUBLESWORD",
+	name = "Borosk's Hate", unique=true, image="object/artifact/warmaster_gnargs_murderblade.png",
+	unided_name = "double-bladed sword", color=colors.GREY,
+	desc = [[This impressive looking sword features two massive blades aligned in parallel. They seem weighted remarkably well.]],
+	require = { stat = { str=35 }, },
+	level_range = {40, 50},
+	rarity = 240,
+	cost = 280,
+	material_level = 5,
+	running=false,
+	combat = {
+		dam = 60,
+		apr = 22,
+		physcrit = 10,
+		dammod = {str=1.2},
+		special_on_hit = {desc="25% chance to strike the target again", fct=function(combat, who, target)
+			local o, item, inven_id = who:findInAllInventoriesBy("define_as", "DOUBLESWORD")
+			if not o or not who:getInven(inven_id).worn then return end
+			if o.running == true then return end
+			if not rng.percent(25) then return end
+			o.running=true
+			who:attackTarget(target, engine.DamageType.PHYSICAL, 1,  true)
+			o.running=false
+		end},
+	},
+	wielder = {
+		inc_stats = { [Stats.STAT_STR] = 10, [Stats.STAT_DEX] = 5, },
+		talents_types_mastery = {
+			["technique/2hweapon-cripple"] = 0.2,
+		},
+	},
+}
+
+newEntity{ base = "BASE_LONGSWORD",
+	power_source = {technique=true, psionic=true}, define_as = "BUTCHER",
+	name = "Butcher", unique=true, image="object/artifact/warmaster_gnargs_murderblade.png",
+	unided_name = "blood drenched shortsword", color=colors.CRIMSON,
+	desc = [["Be it corruption, madness or eccentric boredom, the halfling butcher by the name of Caleb once took up to eating his kin instead of cattle. His spree was never ended and nobody knows where he disappeared. Only the blade remained, stuck fast in bloodied block. Beneath, a carving said "This was fun, let's do it again some time.".]],
+	require = { stat = { str=40 }, },
+	level_range = {36, 48},
+	rarity = 250,
+	cost = 300,
+	material_level = 5,
+	sentient=true,
+	running=false,
+	special_desc = function(self) return ("Enter Rampage if HP falls under 20%% (Shared 30 turn cooldown) \nCurrent Cooldown: %d"):format(self.power) end,
+	combat = {
+		dam = 48,
+		apr = 12,
+		physcrit = 10,
+		dammod = {str=1},
+		special_on_hit = {desc="Attempt to devour a low HP enemy, striking again and possibly killing instantly.", fct=function(combat, who, target)
+			local o, item, inven_id = who:findInAllInventoriesBy("define_as", "BUTCHER")
+			if not o or not who:getInven(inven_id).worn then return end
+			if target.life / target.max_life > 0.15 or o.running==true then return end
+			local Talents = require "engine.interface.ActorTalents"
+			o.running=true
+			if target:canBe("instakill") then
+				who:forceUseTalent(Talents.T_DEVOUR, {ignore_cd=true, ignore_energy=true, force_target=target, force_level=4, ignore_ressources=true})
+			end
+			o.running=false
+		end},
+		special_on_kill = {desc="Enter a Rampage(Shared 30 turn cooldown).", fct=function(combat, who, target)
+			local Talents = require "engine.interface.ActorTalents"
+			local o, item, inven_id = who:findInAllInventoriesBy("define_as", "BUTCHER")
+			if not o or not who:getInven(inven_id).worn then return end
+			if o.power < o.max_power then return end
+			who:forceUseTalent(Talents.T_RAMPAGE, {ignore_cd=true, ignore_energy=true, force_level=2, ignore_ressources=true})
+			o.power = 0
+		end},
+	},
+	wielder = {
+		inc_stats = { [Stats.STAT_CUN] = 7, [Stats.STAT_STR] = 10, [Stats.STAT_WIL] = 10, },
+		talents_types_mastery = {
+			["cursed/rampage"] = 0.2,
+			["cursed/slaughter"] = 0.2,
+		},
+		combat_atk = 18,
+	},
+	max_power = 30, power_regen = 1,
+	use_power = { name = "", power = 30, hidden = true, use = function(self, who) return end},
+	on_wear = function(self, who)
+		self.worn_by = who
+	end,
+	on_takeoff = function(self)
+		self.worn_by = nil
+	end,
+	act = function(self)
+		self:useEnergy()
+		if self.power < self.max_power then
+			self.power=self.power + 1
+		end
+		if not self.worn_by then return end
+		local who=self.worn_by
+		if game.level and not game.level:hasEntity(who) and not who.player then self.worn_by = nil return end
+		if who.life/who.max_life < 0.2 and self.power == self.max_power then
+			local Talents = require "engine.interface.ActorTalents"
+			who:forceUseTalent(Talents.T_RAMPAGE, {ignore_cd=true, ignore_energy=true, force_level=2, ignore_ressources=true})
+			self.power=0
+		end
+	end,
+}
+
+newEntity{ base = "BASE_CLOAK",
+	power_source = {arcane=true},
+	unique = true,
+	name = "Ethereal Embrace",
+	unided_name = "wispy purple cloak",
+	desc = [[This cloak waves and bends with shimmering light, reflecting the depths of space and the heart of the Aether.]],
+	level_range = {30, 40},
+	rarity = 400,
+	cost = 250,
+	material_level = 4,
+	wielder = {
+		combat_spellcrit = 6,
+		combat_def = 10,
+		inc_stats = { 
+			[Stats.STAT_MAG] = 8, 
+		},
+		talents_types_mastery = {
+			["spell/arcane"] = 0.2,
+			["celestial/nightfall"] = 0.2,
+			["spell/aether"] = 0.1,
+		},
+		spellsurge_on_crit = 5,
+		inc_damage={ [DamageType.ARCANE] = 15, [DamageType.DARKNESS] = 15, },
+		resists={ [DamageType.ARCANE] = 12, [DamageType.DARKNESS] = 12,},
+		shield_factor=15,
+		shield_dur=1,
+	},
+	max_power = 28, power_regen = 1,
+	use_talent = { id = Talents.T_AETHER_BREACH, level = 2, power = 28 },
+}
+
+newEntity{ base = "BASE_HEAVY_BOOTS",
+	power_source = {psionic=true},
+	unique = true,
+	name = "Boots of the Hunter", image = "object/artifact/the_warped_boots.png",
+	unided_name = "well-worn boots",
+	desc = [[These cracked boots are caked with a thick layer of mud. It isn't clear who they previously belonged to, but they've clearly seen extensive use.]],
+	color = colors.BLACK,
+	level_range = {30, 40},
+	rarity = 240,
+	cost = 280,
+	material_level = 4,
+	use_no_energy = true,
+	wielder = {
+		combat_armor = 12,
+		combat_def = 2,
+		combat_dam = 12,
+		combat_apr = 15,
+		fatigue = 8,
+		combat_mentalresist = 10,
+		combat_spellresist = 10,
+		max_life = 80,
+		stun_immune=0.4,
+		talents_types_mastery = {
+			["cursed/predator"] = 0.2,
+			["cursed/endless-hunt"] = 0.2,
+			["cunning/trapping"] = 0.2,
+		},
+	},
+	max_power = 32, power_regen = 1,
+	use_power = { name = "boost movement speed by 300% for 4 turns (does not use a turn)", power = 32,
+	use = function(self, who)
+		game:onTickEnd(function() who:setEffect(who.EFF_HUNTER_SPEED, 5, {power=300}) end)
+		return {id=true, used=true}
+	end
+	},
+}
+
+newEntity{ base = "BASE_GLOVES",
+	power_source = {nature=true},
+	unique = true,
+	name = "Sludgegrip", color = colors.GREEN,
+	unided_name = "slimy gloves",
+	desc = [[These gloves are coated with a thick, green liquid.]],
+	level_range = {1, 10},
+	rarity = 190,
+	cost = 70,
+	material_level = 1,
+	wielder = {
+		inc_stats = { [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 4,},
+		resists = { [DamageType.NATURE]= 10, },
+		inc_damage = { [DamageType.NATURE]= 5, },
+		combat_mindpower=2,
+		poison_immune=0.2,
+		talents_types_mastery = {
+			["wild-gift/slime"] = 0.2,
+		},		
+		combat = {
+			dam = 6,
+			apr = 7,
+			physcrit = 4,
+			dammod = {dex=0.4, str=-0.6, cun=0.4 },
+			talent_on_hit = { T_SLIME_SPIT = {level=1, chance=35} },
+			convert_damage = { [DamageType.SLIME] = 40,},
+		},
+	},
+}
+
+newEntity{ base = "BASE_RING", define_as = "SET_LICH_RING",
+	power_source = {arcane=true},
+	unique = true,
+	name = "Ring of the Archlich",
+	unided_name = "dusty, cracked ring",
+	desc = [[This ring is filled with an overwhelming power, yet restrained. It lashes, grasps from its metal prison, seatching for life to snuff out. You alone are unharmed.
+Perhaps it feels all the death you will bring to others in the near future.]],
+	color = colors.DARK_GREY,
+	level_range = {30, 40},
+	cost = 170,
+	rarity = 280,
+	material_level = 4,
+	wielder = {
+		max_soul = 3,
+		combat_spellpower=8,
+		combat_spellresist=8,
+		inc_damage={[DamageType.DARKNESS] = 10, [DamageType.COLD] = 10, },
+		poison_immune=0.25,
+		cut_immune=0.25,
+		resists={ [DamageType.COLD] = 10, [DamageType.DARKNESS] = 10,},
+	},
+	max_power = 40, power_regen = 1,
+	set_list = { {"define_as", "SET_SCEPTRE_LICH"} },
+	on_set_complete = function(self, who)
+		game.logPlayer(who, "#DARK_GREY#Your ring releases a burst of necromantic energy!")
+		self:specialSetAdd({"wielder","combat_spellpower"}, 10)
+		self.use_talent = { id = "T_IMPENDING_DOOM", level = 2, power = 40 }
+		self:specialSetAdd({"wielder","inc_damage"}, { [engine.DamageType.DARKNESS] = 14 })
+		self:specialSetAdd({"wielder","resists"}, { [engine.DamageType.DARKNESS] = 5 })
+	end,
+	on_set_broken = function(self, who)
+		game.logPlayer(who, "#DARK_GREY#Your ring's power fades away.")
+		self.use_talent = nil
+	end,
+}
+
+newEntity{ base = "BASE_TOOL_MISC",
+	power_source = {arcane = true},
+	unique=true, rarity=240,
+	type = "charm", subtype="wand",
+	name = "Lightbringer's Rod",
+	unided_name = "bright wand",
+	color = colors.GOLD,
+	level_range = {20, 30},
+	desc = [[This gold-tipped wand shines with an unnatural sheen.]],
+	cost = 320,
+	material_level = 3,
+	wielder = {
+		resists={[DamageType.DARKNESS] = 12, [DamageType.LIGHT] = 12},
+		inc_damage={[DamageType.LIGHT] = 10},
+		on_melee_hit={[DamageType.LIGHT] = 18},
+		combat_spellresist = 15,
+		lite=2,
+	},
+		max_power = 35, power_regen = 1,
+	use_power = { name = "summon a shining orb", power = 35,
+		use = function(self, who)
+			local tg = {type="bolt", nowarning=true, range=5, nolock=true}
+			local tx, ty, target = who:getTarget(tg)
+			if not tx or not ty then return nil end
+			local _ _, _, _, tx, ty = who:canProject(tg, tx, ty)
+			target = game.level.map(tx, ty, engine.Map.ACTOR)
+			if target == who then target = nil end
+			local x, y = util.findFreeGrid(tx, ty, 5, true, {[engine.Map.ACTOR]=true})
+			if not x then
+				game.logPlayer(self, "Not enough space to invoke!")
+				return
+			end
+			local Talents = require "engine.interface.ActorTalents"
+			local NPC = require "mod.class.NPC"
+			local m = NPC.new{
+				resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_ghost_will_o__the_wisp.png", display_h=1, display_y=0}}},
+				name = "Lightbringer",
+				type = "orb", subtype = "light",
+				desc = "A shining orb.",
+				rank = 1,
+				blood_color = colors.YELLOW,
+				display = "T", color=colors.YELLOW,
+				life_rating=10,
+				combat = {
+					dam=resolvers.rngavg(50,60),
+					atk=resolvers.rngavg(50,75), apr=25,
+					dammod={mag=1}, physcrit = 10,
+					damtype=engine.DamageType.LIGHT,
+				},
+				level_range = {1, nil}, exp_worth = 0,
+				silent_levelup = true,
+				combat_armor=30,
+				combat_armor_hardiness=30,
+				autolevel = "caster",
+				ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=1, },
+				never_move=1,
+				stats = { str=14, dex=18, mag=20, con=12, wil=20, cun=20, },
+				size_category = 2,
+				lite=10,
+				blind=1,
+				esp_all=1,
+				resists={[engine.DamageType.LIGHT] = 100, [engine.DamageType.DARKNESS] = 100},
+				no_breath = 1,
+				cant_be_moved = 1,
+				stone_immune = 1,
+				confusion_immune = 1,
+				fear_immune = 1,
+				teleport_immune = 1,
+				disease_immune = 1,
+				poison_immune = 1,
+				stun_immune = 1,
+				blind_immune = 1,
+				cut_immune = 1,
+				knockback_resist=1,
+				combat_physresist=50,
+				combat_spellresist=100,
+				on_act = function(self) self:project({type="ball", range=0, radius=5, friendlyfire=false}, self.x, self.y, engine.DamageType.LITE_LIGHT, self:getMag()) end,
+				
+				faction = who.faction,
+				summoner = who, summoner_gain_exp=true,
+				summon_time=15,
+			}
+
+			m:resolve()
+			game.zone:addEntity(game.level, m, "actor", x, y)
+			m.remove_from_party_on_death = true,
+			game.party:addMember(m, {
+				control=false,
+				type="summon",
+				title="Summon",
+				orders = {target=true, leash=true, anchor=true, talents=true},
+			})
+			return {id=true, used=true}
+		end
+	},
+}
+
+newEntity{ base = "BASE_CLOAK",
+	power_source = {nature=true},
+	unique = true,
+	name = "Destala's Scales", image = "object/artifact/serpentine_cloak.png",
+	unided_name = "green dragon-scale cloak",
+	desc = [[This cloak is made from the scales of an infamous Venom Drake that terrorized the country side towards the end of the Age of Dusk. It was slain by a party led by Kestin Highfin, who had this cloak fashioned personally.]],
+	level_range = {20, 30},
+	rarity = 240,
+	cost = 200,
+	material_level = 3,
+	wielder = {
+		combat_def = 10,
+		inc_stats = { [Stats.STAT_CUN] = 6,},
+		inc_damage = { [DamageType.ACID] = 15 },
+		resists_pen = { [DamageType.ACID] = 10 },
+		talents_types_mastery = { ["wild-gift/venom-drake"] = 0.2, },
+		combat_mindpower=6,
+	},
+	max_power = 20, power_regen = 1,
+	use_talent = { id = Talents.T_DISSOLVE, level = 2, power = 20 },
+	talent_on_wild_gift = { {chance=10, talent=Talents.T_ACIDIC_SPRAY, level=2} },
+}
+
+newEntity{ base = "BASE_SHIELD",
+	power_source = {arcane=true},
+	unique = true,
+	unided_name = "handled hole in space",
+	name = "Temporal Rift", image = "object/artifact/shield_lunar_shield.png",
+	desc = [[Some mad Chronomancer appears to have affixed a handle to this hole in spacetime. It looks highly effective, in its own strange way.]],
+	color = colors.LIGHT_GREY,
+	rarity = 300,
+	level_range = {35, 45},
+	require = { stat = { str=40 }, },
+	cost = 400,
+	material_level = 5,
+	special_combat = {
+		dam = 50,
+		block = 300,
+		physcrit = 4.5,
+		dammod = {str=1, mag=0.2},
+		damtype = DamageType.TEMPORAL,
+		talent_on_hit = { [Talents.T_TURN_BACK_THE_CLOCK] = {level=3, chance=25} },
+	},
+	wielder = {
+		combat_armor = 4,
+		combat_def = 8,
+		combat_def_ranged = 10,
+		fatigue = 0,
+		combat_spellpower=12,
+		combat_spellresist = 20,
+		resists = {[DamageType.TEMPORAL] = 30},
+		learn_talent = { [Talents.T_BLOCK] = 5, },
+		flat_damage_armor = {all=20},
+		slow_projectiles = 50,
+	},
+}
+
+newEntity{ base = "BASE_ARROW",
+	power_source = {technique=true},
+	unique = true,
+	name = "Arkul's Seige Arrows", image = "object/artifact/hornet_stingers.png",
+	unided_name = "gigantic spiral arrows",
+	desc = [[These titanic double-helical arrows seem to have been designed more for knocking down towers than for use in regular combat. They'll no doubt make short work of most foes.]],
+	color = colors.GREY,
+	level_range = {42, 50},
+	rarity = 400,
+	cost = 400,
+	material_level = 5,
+	require = { stat = { dex=20, str=30 }, },
+	special_desc = function(self) return "25% of all damage splashes in a radius of 1 around the target." end,
+	combat = {
+		capacity = 14,
+		dam = 68,
+		apr = 100,
+		physcrit = 10,
+		dammod = {dex=0.5, str=0.7},
+		siege_impact=0.25,		
+	},
+}
+
+newEntity{ base = "BASE_LONGSWORD", --For whatever artists draws this: it's a rapier.
+	power_source = {technique=true},
+	unique = true,
+	name = "Punae's Blade",
+	unided_name = "thin blade", image = "object/artifact/weapon_spellblade.png",
+	level_range = {28, 38},
+	color=colors.GREY,
+	rarity = 300,
+	desc = [[This very thin sword cuts through the air with ease, allowing remarkably quick movement.]],
+	cost = 400,
+	require = { stat = { str=30 }, },
+	material_level = 4,
+	combat = {
+		dam = 46,
+		apr = 4,
+		physcrit = 10,
+		dammod = {str=1},
+	},
+	wielder = {
+		evasion=10,
+		combat_physcrit = 10,
+		combat_physspeed = 0.1,
+	},
+}
+
 --[=[
 newEntity{
 	unique = true,
diff --git a/game/modules/tome/data/talents/gifts/call.lua b/game/modules/tome/data/talents/gifts/call.lua
index 51f099a812fe3ee690c58df7ea959596dbf1d3ec..ffc8dad4aebb99682410bb2c7c21564d4fad6b16 100644
--- a/game/modules/tome/data/talents/gifts/call.lua
+++ b/game/modules/tome/data/talents/gifts/call.lua
@@ -36,10 +36,12 @@ newTalent{
 	end,
 	activate = function(self, t)
 		local ret = {}
+		
+		local boost = 1 + (self.enhance_meditate or 0)
 
-		local pt = 2 + self:combatTalentMindDamage(t, 20, 120) / 10
-		local save = 5 + self:combatTalentMindDamage(t, 10, 40)
-		local heal = 5 + self:combatTalentMindDamage(t, 12, 30)
+		local pt = (2 + self:combatTalentMindDamage(t, 20, 120) / 10) * boost
+		local save = (5 + self:combatTalentMindDamage(t, 10, 40)) * boost
+		local heal = (5 + self:combatTalentMindDamage(t, 12, 30)) * boost
 		
 		if self:knowTalent(self.T_EARTH_S_EYES) then
 			local te = self:getTalentFromId(self.T_EARTH_S_EYES)
@@ -58,9 +60,11 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		local pt = 2 + self:combatTalentMindDamage(t, 20, 120) / 10
-		local save = 5 + self:combatTalentMindDamage(t, 10, 40)
-		local heal = 5 + self:combatTalentMindDamage(t, 12, 30)
+		local boost = 1 + (self.enhance_meditate or 0)
+		
+		local pt = (2 + self:combatTalentMindDamage(t, 20, 120) / 10) * boost
+		local save = (5 + self:combatTalentMindDamage(t, 10, 40)) * boost
+		local heal = (5 + self:combatTalentMindDamage(t, 12, 30)) * boost
 		local rest = 0.5 * self:getTalentLevelRaw(t)
 		return ([[Meditate on your link with Nature.
 		While meditating, you regenerate %d equilibrium per turn, your Mental Save is increased by %d, and your healing factor increases by %d%%.
diff --git a/game/modules/tome/data/talents/misc/objects.lua b/game/modules/tome/data/talents/misc/objects.lua
index 6e4038a3d5668d3deaac77429af649e71b73c803..f988b0f1ca1b4ed299922e31d6337a35ac2ab05b 100644
--- a/game/modules/tome/data/talents/misc/objects.lua
+++ b/game/modules/tome/data/talents/misc/objects.lua
@@ -464,3 +464,64 @@ newTalent{
 		Digging takes %d turns (based on your currently best digger available).]]):format(best.digspeed)
 	end,
 }
+
+newTalent{
+	name = "Shivgoroth Form", short_name = "SHIV_LORD", image = "talents/shivgoroth_form.png",
+	type = {"spell/objects",1},
+	points = 5,
+	random_ego = "attack",
+	cooldown = 20,
+	tactical = { BUFF = 3, ATTACKAREA = { COLD = 0.5, PHYSICAL = 0.5 }, DISABLE = { knockback = 1 } },
+	direct_hit = true,
+	range = 10,
+	no_energy = true,
+	is_spell=true,
+	requires_target = true,
+	getDuration = function(self, t) return 4 + math.ceil(self:getTalentLevel(t)) end,
+	getPower = function(self, t) return util.bound(50 + self:combatTalentSpellDamage(t, 50, 450), 0, 500) / 500 end,
+	on_pre_use = function(self, t, silent) if self:attr("is_shivgoroth") then if not silent then game.logPlayer(self, "You are already a Shivgoroth!") end return false end return true end,
+	action = function(self, t)
+		self:setEffect(self.EFF_SHIVGOROTH_FORM_LORD, t.getDuration(self, t), {power=t.getPower(self, t), lvl=self:getTalentLevelRaw(t)})
+		game:playSoundNear(self, "talents/tidalwave")
+		return true
+	end,
+	info = function(self, t)
+		local power = t.getPower(self, t)
+		local dur = t.getDuration(self, t)
+		return ([[You absorb latent cold around you, turning into an ice elemental - a shivgoroth - for %d turns.
+		While transformed, you do not need to breathe, gain access to the Ice Storm talent at level %d, gain %d%% resistance to cuts and stuns, gain %d%% cold resistance, and all cold damage heals you for %d%% of the damage done.
+		The power will increase with your Spellpower.]]):
+		format(dur, self:getTalentLevelRaw(t), power * 100, power * 100 / 2, 50 + power * 100)
+	end,
+}
+
+newTalent{
+	name = "Mental Refresh",
+	type = {"misc/objects", 1},
+	points = 5,
+	equilibrium = 20,
+	cooldown = 50,
+	range = 10,
+	tactical = { BUFF = 2 },
+	action = function(self, t)
+		local nb = 3
+		local tids = {}
+		for tid, _ in pairs(self.talents_cd) do
+			local tt = self:getTalentFromId(tid)
+			if tt.type[1]:find("^wild%-gift/") or tt.type[1]:find("psionic/") or tt.type[1]:find("cursed/") then
+				tids[#tids+1] = tid
+			end
+		end
+		for i = 1, nb do
+			if #tids == 0 then break end
+			local tid = rng.tableRemove(tids)
+			self.talents_cd[tid] = self.talents_cd[tid] - 3
+		end
+		self.changed = true
+		game:playSoundNear(self, "talents/spell_generic2")
+		return true
+	end,
+	info = function(self, t)
+		return ([[Reset up to 3 wild gift, psionic or cursed talents.]])
+	end,
+}
diff --git a/game/modules/tome/data/talents/spells/water.lua b/game/modules/tome/data/talents/spells/water.lua
index 1178c4c58eabd8f1e961183e30f2e5e0152437d0..421dab7aedc2a899fb041796e490d2281b09027b 100644
--- a/game/modules/tome/data/talents/spells/water.lua
+++ b/game/modules/tome/data/talents/spells/water.lua
@@ -156,6 +156,7 @@ newTalent{
 	requires_target = true,
 	getDuration = function(self, t) return 4 + math.ceil(self:getTalentLevel(t)) end,
 	getPower = function(self, t) return util.bound(50 + self:combatTalentSpellDamage(t, 50, 450), 0, 500) / 500 end,
+	on_pre_use = function(self, t, silent) if self:attr("is_shivgoroth") then if not silent then game.logPlayer(self, "You are already a Shivgoroth!") end return false end return true end,
 	action = function(self, t)
 		self:setEffect(self.EFF_SHIVGOROTH_FORM, t.getDuration(self, t), {power=t.getPower(self, t), lvl=self:getTalentLevelRaw(t)})
 		game:playSoundNear(self, "talents/tidalwave")
diff --git a/game/modules/tome/data/timed_effects/magical.lua b/game/modules/tome/data/timed_effects/magical.lua
index def955e80d53952817faaf969240f5927e6572af..fe3eeb61abd40bb7ced965c97830e8da1a8081b3 100644
--- a/game/modules/tome/data/timed_effects/magical.lua
+++ b/game/modules/tome/data/timed_effects/magical.lua
@@ -2244,6 +2244,7 @@ newEffect{
 		self:effectTemporaryValue(eff, "no_breath", 1)
 		self:effectTemporaryValue(eff, "cut_immune", eff.power)
 		self:effectTemporaryValue(eff, "stun_immune", eff.power)
+		self:effectTemporaryValue(eff, "is_shivgoroth", 1)
 
 		if self.hotkey and self.isHotkeyBound then
 			local pos = self:isHotkeyBound("talent", self.T_SHIVGOROTH_FORM)
@@ -2278,6 +2279,58 @@ newEffect{
 	end,
 }
 
+--Duplicate for Frost Lord's Chain
+newEffect{
+	name = "SHIVGOROTH_FORM_LORD", image = "talents/shivgoroth_form.png",
+	desc = "Shivgoroth Form",
+	long_desc = function(self, eff) return ("The target assumes the form of a shivgoroth."):format() end,
+	type = "magical",
+	subtype = { ice=true },
+	status = "beneficial",
+	parameters = {},
+	on_gain = function(self, err) return "#Target# turns into a shivgoroth!", "+Shivgoroth Form" end,
+	on_lose = function(self, err) return "#Target# is no longer transformed.", "-Shivgoroth Form" end,
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "damage_affinity", {[DamageType.COLD]=50 + 100 * eff.power})
+		self:effectTemporaryValue(eff, "resists", {[DamageType.COLD]=100 * eff.power / 2})
+		self:effectTemporaryValue(eff, "no_breath", 1)
+		self:effectTemporaryValue(eff, "cut_immune", eff.power)
+		self:effectTemporaryValue(eff, "stun_immune", eff.power)
+		self:effectTemporaryValue(eff, "is_shivgoroth", 1)
+
+		if self.hotkey and self.isHotkeyBound then
+			local pos = self:isHotkeyBound("talent", self.T_SHIV_LORD)
+			if pos then
+				self.hotkey[pos] = {"talent", self.T_ICE_STORM}
+			end
+		end
+
+		local ohk = self.hotkey
+		self.hotkey = nil -- Prevent assigning hotkey, we just did
+		self:learnTalent(self.T_ICE_STORM, true, eff.lvl, {no_unlearn=true})
+		self.hotkey = ohk
+
+		self.replace_display = mod.class.Actor.new{
+			image="invis.png", add_mos = {{image = "npc/elemental_ice_greater_shivgoroth.png", display_y = -1, display_h = 2}},
+		}
+		self:removeAllMOs()
+		game.level.map:updateMap(self.x, self.y)
+	end,
+	deactivate = function(self, eff)
+		if self.hotkey and self.isHotkeyBound then
+			local pos = self:isHotkeyBound("talent", self.T_ICE_STORM)
+			if pos then
+				self.hotkey[pos] = {"talent", self.T_SHIV_LORD}
+			end
+		end
+
+		self:unlearnTalent(self.T_ICE_STORM, eff.lvl, nil, {no_unlearn=true})
+		self.replace_display = nil
+		self:removeAllMOs()
+		game.level.map:updateMap(self.x, self.y)
+	end,
+}
+
 newEffect{
 	name = "KEEPER_OF_REALITY", image = "effects/continuum_destabilization.png",
 	desc = "Keepers of Reality Rally Call",
diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua
index 8a643823e9d6c4d500481b0f36dceb95358ec0c7..d13f55d8fb41c09978a362256cee3456adb15032 100644
--- a/game/modules/tome/data/timed_effects/physical.lua
+++ b/game/modules/tome/data/timed_effects/physical.lua
@@ -914,6 +914,28 @@ newEffect{
 	end,
 }
 
+newEffect{
+	name = "HUNTER_SPEED", image = "talents/infusion__movement.png",
+	desc = "Hunter",
+	long_desc = function(self, eff) return ("You are searching for a new target. Any other action other than movement will cancel it. Movement is %d%% faster."):format(eff.power) end,
+	type = "physical",
+	subtype = { nature=true, speed=true },
+	status = "beneficial",
+	parameters = {power=1000},
+	on_gain = function(self, err) return "#Target# prepares for the next kill!.", "+Hunter" end,
+	on_lose = function(self, err) return "#Target# slows down.", "-Hunter" end,
+	activate = function(self, eff)
+		eff.tmpid = self:addTemporaryValue("wild_speed", 1)
+		eff.moveid = self:addTemporaryValue("movement_speed", eff.power/100)
+		if self.ai_state then eff.aiid = self:addTemporaryValue("ai_state", {no_talents=1}) end -- Make AI not use talents while using it
+	end,
+	deactivate = function(self, eff)
+		self:removeTemporaryValue("wild_speed", eff.tmpid)
+		if eff.aiid then self:removeTemporaryValue("ai_state", eff.aiid) end
+		self:removeTemporaryValue("movement_speed", eff.moveid)
+	end,
+}
+
 newEffect{
 	name = "STEP_UP", image = "talents/step_up.png",
 	desc = "Step Up",
diff --git a/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua b/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua
index 0251964bc5679f0d3a9093a13affdfce0324a7d7..e3a378d1a18ab6da5165ade1522c0a651c9b461a 100644
--- a/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua
+++ b/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua
@@ -106,10 +106,10 @@ newEntity{ base = "BASE_LEATHER_CAP", define_as = "CROWN_ETERNAL_NIGHT",
 		self:specialSetAdd({"wielder","inc_damage"}, {[engine.DamageType.DARKNESS]=20})
 		self:specialSetAdd({"wielder","talents_types_mastery"}, {["cunning/stealth"] = 0.1,})
 		self.use_talent = { id = "T_RETCH", level = 2, power = 47 }
-		game.logSeen(who, "#ANTIQUE_WHITE#The Crown of Eternal Night seems to react with the Bindings, you feel tremounduous dark power.")
+		game.logSeen(who, "#ANTIQUE_WHITE#The Crown of Eternal Night seems to react with the Bindings, you feel tremendous dark power.")
 	end,
 	on_set_broken = function(self, who)
-		game.logPlayer(who, "#ANTIQUE_WHITE#The powerful darkness aura you felt vanes away.")
+		game.logPlayer(who, "#ANTIQUE_WHITE#The powerful darkness aura you felt wanes away.")
 		self.use_talent = nil
 	end,
 }