From a784489c5d957fb29e7c7bd9bc41e6be769e0830 Mon Sep 17 00:00:00 2001
From: DarkGod <darkgod@net-core.org>
Date: Sun, 9 Feb 2014 22:15:12 +0100
Subject: [PATCH] Many new artifacts

---
 game/modules/tome/class/Object.lua            |  14 +-
 game/modules/tome/class/interface/Combat.lua  |  10 +-
 game/modules/tome/data/damage_types.lua       |  23 +-
 .../tome/data/general/npcs/horror-undead.lua  |  20 +-
 .../modules/tome/data/general/npcs/horror.lua |   5 +-
 .../objects/boss-artifacts-far-east.lua       |  12 +-
 .../objects/boss-artifacts-maj-eyal.lua       |   9 +-
 .../data/general/objects/boss-artifacts.lua   |   2 +-
 .../general/objects/brotherhood-artifacts.lua |  10 +-
 .../objects/world-artifacts-far-east.lua      |   4 +-
 .../objects/world-artifacts-maj-eyal.lua      |   2 +-
 .../data/general/objects/world-artifacts.lua  | 434 +++++++++++++++++-
 .../object/artifact/fist_of_the_destroyer.png | Bin 0 -> 11058 bytes
 .../shockbolt/object/artifact/masochism.png   | Bin 0 -> 10039 bytes
 .../shockbolt/object/artifact/obliterator.png | Bin 0 -> 7136 bytes
 .../object/artifact/shieldmaiden.png          | Bin 0 -> 9580 bytes
 .../object/artifact/swordbreaker.png          | Bin 0 -> 8728 bytes
 .../object/artifact/tirakais_maul.png         | Bin 0 -> 9220 bytes
 .../object/artifact/yaldan_baoth.png          | Bin 0 -> 11374 bytes
 .../data/gfx/talents/shieldsmaiden_aura.png   | Bin 0 -> 2718 bytes
 .../tome/data/talents/misc/objects.lua        |  88 ++++
 .../tome/data/talents/psionic/absorption.lua  |   6 +-
 .../tome/data/timed_effects/physical.lua      |   5 +-
 .../tome/data/zones/rak-shor-pride/npcs.lua   | 109 +++--
 24 files changed, 648 insertions(+), 105 deletions(-)
 create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/fist_of_the_destroyer.png
 create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/masochism.png
 create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/obliterator.png
 create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/shieldmaiden.png
 create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/swordbreaker.png
 create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/tirakais_maul.png
 create mode 100644 game/modules/tome/data/gfx/shockbolt/object/artifact/yaldan_baoth.png
 create mode 100644 game/modules/tome/data/gfx/talents/shieldsmaiden_aura.png

diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index e7fd2972ed..fb4e07f83b 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -653,6 +653,10 @@ function _M:getTextualDesc(compare_with, use_actor)
 		elseif found then
 			desc:add({"color","RED"}, "When used from stealth a simple attack with it will not break stealth.", {"color","LAST"}, true)
 		end
+		
+		if combat.crushing_blow then
+			desc:add({"color", "YELLOW"}, "Crushing Blows: ", {"color", "LAST"}, "Damage dealt by this weapon is increased by your critical multiplier, if doing so would kill the target.", true)
+		end
 
 		compare_fields(combat, compare_with, field, "travel_speed", "%+d%%", "Travel speed: ", 100, false, false, add_table)
 
@@ -969,6 +973,7 @@ function _M:getTextualDesc(compare_with, use_actor)
 		end
 
 		compare_fields(w, compare_with, field, "combat_critical_power", "%+.2f%%", "Critical mult.: ")
+		compare_fields(w, compare_with, field, "ignore_direct_crits", "%-.2f%%", "Reduces incoming crit damage: ")
 		compare_fields(w, compare_with, field, "combat_crit_reduction", "%-d%%", "Reduces opponents crit chance: ")
 
 		compare_fields(w, compare_with, field, "disarm_bonus", "%+d", "Trap disarming bonus: ")
@@ -1067,6 +1072,7 @@ function _M:getTextualDesc(compare_with, use_actor)
 
 		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, "cancel_damage_chance", "%+d%%", "Chance to avoid any damage: ")
 
 		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: ")
@@ -1081,12 +1087,16 @@ function _M:getTextualDesc(compare_with, use_actor)
 		
 		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, "iceblock_pierce", "%+d%%", "Ice block penetration: ")
 
 		compare_fields(w, compare_with, field, "slow_projectiles", "%+d%%", "Slows Projectiles: ")
 
 		compare_fields(w, compare_with, field, "paradox_reduce_fails", "%+d", "Reduces paradox failures(equivalent to willpower): ")
 
 		compare_fields(w, compare_with, field, "damage_backfire", "%+d%%", "Damage Backlash: ", nil, true)
+		
+		compare_fields(w, compare_with, field, "resist_unseen", "%-d%%", "Reduce all damage from unseen attackers: ")
 
 		if w.undead then
 			desc:add("The wearer is treated as an undead.", true)
@@ -1105,11 +1115,11 @@ function _M:getTextualDesc(compare_with, use_actor)
 		end
 
 		if w.blind_fight then
-			desc:add({"color", "YELLOW"}, "Blind-Fight:", {"color", "LAST"}, "This item allows the wearer to attack unseen targets without any penalties.", true)
+			desc:add({"color", "YELLOW"}, "Blind-Fight: ", {"color", "LAST"}, "This item allows the wearer to attack unseen targets without any penalties.", true)
 		end
 		
 		if w.lucid_dreamer then
-			desc:add({"color", "YELLOW"}, "Lucid-Dreamer:", {"color", "LAST"}, "This item allows the wearer to act while sleeping.", true)
+			desc:add({"color", "YELLOW"}, "Lucid Dreamer: ", {"color", "LAST"}, "This item allows the wearer to act while sleeping.", true)
 		end
 
 		if w.no_breath then
diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua
index 45cab167ed..0a06f94abc 100644
--- a/game/modules/tome/class/interface/Combat.lua
+++ b/game/modules/tome/class/interface/Combat.lua
@@ -468,6 +468,8 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 	
 		local oldproj = DamageType:getProjectingFor(self)
 		if self.__talent_running then DamageType:projectingFor(self, {project_type={talent=self.__talent_running}}) end
+		
+		if weapon and weapon.crushing_blow then self:attr("crushing_blow", 1) end
 
 		-- Damage conversion?
 		-- Reduces base damage but converts it into another damage type
@@ -491,6 +493,8 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 		if dam > 0 then
 			DamageType:get(damtype).projector(self, target.x, target.y, damtype, math.max(0, dam))
 		end
+		
+		if weapon and weapon.crushing_blow then self:attr("crushing_blow", -1) end
 
 		if self.__talent_running then DamageType:projectingFor(self, oldproj) end
 
@@ -752,15 +756,15 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 
 	-- Special effect
 	if hitted and weapon and weapon.special_on_hit and weapon.special_on_hit.fct and (not target.dead or weapon.special_on_hit.on_kill) then
-		weapon.special_on_hit.fct(weapon, self, target)
+		weapon.special_on_hit.fct(weapon, self, target, dam)
 	end
 
 	if hitted and crit and weapon and weapon.special_on_crit and weapon.special_on_crit.fct and (not target.dead or weapon.special_on_crit.on_kill) then
-		weapon.special_on_crit.fct(weapon, self, target)
+		weapon.special_on_crit.fct(weapon, self, target, dam)
 	end
 
 	if hitted and weapon and weapon.special_on_kill and weapon.special_on_kill.fct and target.dead then
-		weapon.special_on_kill.fct(weapon, self, target)
+		weapon.special_on_kill.fct(weapon, self, target, dam)
 	end
 
 	if hitted and crit and not target.dead and self:knowTalent(self.T_BACKSTAB) and not target:attr("stunned") and rng.percent(self:callTalent(self.T_BACKSTAB, "getStunChance")) then
diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua
index 622dfefe23..e8b9d185ee 100644
--- a/game/modules/tome/data/damage_types.lua
+++ b/game/modules/tome/data/damage_types.lua
@@ -337,6 +337,16 @@ setDefaultProjector(function(src, x, y, type, dam, tmp, no_martyr)
 			local def = src.tempeffect_def[src.EFF_CURSE_OF_MISFORTUNE]
 			dam = def.doUnfortunateEnd(src, eff, target, dam)
 		end
+		
+		if src:attr("crushing_blow") and (dam * (1.25 + (src.combat_critical_power or 0)/200)) > target.life then
+			dam = dam * (1.25 + (src.combat_critical_power or 0)/200)
+			game.logPlayer(src, "You end your target with a crushing blow!")
+		end
+		
+		if target:attr("resist_unseen") and not target:canSee(src) then
+			dam = dam * (1 - math.min(target.resist_unseen,100)/100)
+		end
+		
 		-- Sanctuary: reduces damage if it comes from outside of Gloom
 		if target.isTalentActive and target:isTalentActive(target.T_GLOOM) and target:knowTalent(target.T_SANCTUARY) then
 			if tmp and tmp.sanctuaryDamageChange then
@@ -985,6 +995,7 @@ newDamageType{
 newDamageType{
 	name = "flameshock", type = "FLAMESHOCK",
 	projector = function(src, x, y, type, dam)
+		if _G.type(dam) == "number" then dam = {dam=dam, dur=4} end
 		local target = game.level.map(x, y, Map.ACTOR)
 		if target then
 			-- Set on fire!
@@ -1096,7 +1107,7 @@ newDamageType{
 
 -- Light damage + blind chance
 newDamageType{
-	name = "blinding light", type = "LIGHT_BLIND",
+	name = "blinding light", type = "LIGHT_BLIND", text_color = "#YELLOW#",
 	projector = function(src, x, y, type, dam)
 		local realdam = DamageType:get(DamageType.LIGHT).projector(src, x, y, DamageType.LIGHT, dam)
 		local target = game.level.map(x, y, Map.ACTOR)
@@ -1113,7 +1124,7 @@ newDamageType{
 
 -- Lightning damage + daze chance
 newDamageType{
-	name = "lightning", type = "LIGHTNING_DAZE", text_color = "#ROYAL_BLUE#",
+	name = "dazing lightning", 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
 		dam.daze = dam.daze or 25
@@ -1564,7 +1575,7 @@ newDamageType{
 }
 
 newDamageType{
-	name = "gloom", type = "RANDOM_GLOOM",
+	name = "% chance of gloom effects", type = "RANDOM_GLOOM",
 	projector = function(src, x, y, type, dam)
 		local target = game.level.map(x, y, Map.ACTOR)
 		if target and rng.percent(dam) then
@@ -1674,7 +1685,7 @@ newDamageType{
 
 -- Drain Vim
 newDamageType{
-	name = "enervating blight", type = "DRAIN_VIM",
+	name = "vim draining blight", type = "DRAIN_VIM", text_color = "#DARK_GREEN#",
 	projector = function(src, x, y, type, dam)
 		if _G.type(dam) == "number" then dam = {dam=dam, vim=0.2} end
 		local target = game.level.map(x, y, Map.ACTOR)
@@ -1821,7 +1832,7 @@ newDamageType{
 
 -- blood boiled, blight damage + slow
 newDamageType{
-	name = "hindering_blight", type = "BLOOD_BOIL",
+	name = "hindering blight", type = "BLOOD_BOIL", text_color = "#DARK_GREEN#",
 	projector = function(src, x, y, type, dam)
 		DamageType:get(DamageType.BLIGHT).projector(src, x, y, DamageType.BLIGHT, dam)
 		local target = game.level.map(x, y, Map.ACTOR)
@@ -2729,7 +2740,7 @@ newDamageType{
 
 -- Acid damage + Slow
 newDamageType{
-	name = "cautic mire", type = "CAUSTIC_MIRE",
+	name = "caustic mire", type = "CAUSTIC_MIRE",
 	projector = function(src, x, y, type, dam, tmp)
 		if _G.type(dam) == "number" then dam = {dur = 2, slow=20} end
 		local target = game.level.map(x, y, Map.ACTOR)
diff --git a/game/modules/tome/data/general/npcs/horror-undead.lua b/game/modules/tome/data/general/npcs/horror-undead.lua
index ccee4662f0..0843706f06 100644
--- a/game/modules/tome/data/general/npcs/horror-undead.lua
+++ b/game/modules/tome/data/general/npcs/horror-undead.lua
@@ -48,7 +48,7 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD",
 	desc ="This putrid mass of rotting flesh shifts and quivers, but shows no signs of intelligence or mobility.",
 	resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_necrotic_mass.png", display_h=2, display_y=-1}}},
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 3,
+	rarity = 4,
 	rank = 1,
 	size_category = 2, life_rating = 7,
 	combat_armor = 0, combat_def = 0,
@@ -63,17 +63,17 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD",
 	desc ="This monstrous form of putrid, torn flesh and chipped bone drags its mass towards you, spurting blood and viscera along the way.",
 	resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_necrotic_abomination.png", display_h=2, display_y=-1}}},
 	level_range = {30, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 7,
 	rank = 3,
 	size_category = 4,
 	combat_armor = 0, combat_def = 40,
-	max_life=400,
+	max_life=400, life_rating=11,
 	disease_immune = 1,
 	
 	combat = {
 		dam=resolvers.levelup(resolvers.rngavg(40,45), 1, 1.2),
 		atk=resolvers.rngavg(60,80), apr=20,
-		dammod={mag=1.2}, physcrit = 10,
+		dammod={mag=1.3}, physcrit = 10,
 		damtype=engine.DamageType.BLIGHT,
 	},
 	
@@ -106,7 +106,7 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD",
 	desc ="The massive ribcage in the middle beats with loud, audible cracks, as many a skeletal hand protrude forth, entwining, fusing, forming long skeletal appendages to support itself, while others crumble and collapse inward. During all this, somehow, it seems they grasp for you.",
 	resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_bone_horror.png", display_h=2, display_y=-1}}},
 	level_range = {30, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 7,
 	rank = 3,
 	size_category = 4,
 	combat_armor = 30, combat_def = 0,
@@ -124,7 +124,7 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD",
 	autolevel = "warriormage",
 	
 	summon = {
-		{type="undead", subtype = "skeleton", number=4, hasxp=false},
+		{type="undead", subtype = "skeleton", number=5, hasxp=false},
 	},
 	
 	resolvers.talents{
@@ -151,13 +151,15 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD",
 	desc ="This pulsing, quivering form is a deep crimson, and appears to be composed entirely of thick, virulent blood. Waves rhythmically ripple across its surface, indicating a still beating heart somewhere in its body.",
 	resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_sanguine_horror.png", display_h=2, display_y=-1}}},
 	level_range = {30, nil}, exp_worth = 1,
-	rarity = 8,
-	rank = 3,
+	rarity = 7,
+	rank = 3, life_rating = 13,
 	size_category = 4,
 	combat_armor = 30, combat_def = 0,
 	max_life=400,
 	stats = { con=50, },
 	
+	lifesteal=15,
+	
 	combat = {
 		dam=resolvers.levelup(resolvers.rngavg(50,60), 1, 1.2),
 		atk=resolvers.rngavg(60,80), apr=20,
@@ -197,5 +199,5 @@ newEntity{ base = "BASE_NPC_HORROR_UNDEAD",
 	size_category = 2, life_rating = 7,
 	combat_armor = 0, combat_def = 0,
 	max_life=100,
-	combat = {dam=resolvers.levelup(resolvers.mbonus(25, 15), 1, 1.1), apr=0, atk=resolvers.mbonus(30, 15), dammod={str=0.6}},
+	combat = {dam=resolvers.levelup(resolvers.mbonus(25, 15), 1, 1.1), apr=0, atk=resolvers.mbonus(30, 15), dammod={str=0.6}, damtype=engine.DamageType.DRAINLIFE,},
 }
\ No newline at end of file
diff --git a/game/modules/tome/data/general/npcs/horror.lua b/game/modules/tome/data/general/npcs/horror.lua
index 2bdf4f71d8..dea3194762 100644
--- a/game/modules/tome/data/general/npcs/horror.lua
+++ b/game/modules/tome/data/general/npcs/horror.lua
@@ -921,6 +921,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	combat_armor = 30, combat_def = 18,
 	is_akgishil = true,
 	can_spawn = 1,
+	psionic_shield_override = 1,
 	
 	resolvers.drops{chance=100, nb=1, {defined="BLADE_RIFT"} },
 	
@@ -982,7 +983,7 @@ newEntity{ base="BASE_NPC_HORROR", define_as = "ANIMATED_BLADE",
 	no_breath = 1,
 	size_category = 2,
 
-	negative_status_immune = 1,
+	negative_status_effect_immune = 1,
 	body = { INVEN = 10, MAINHAND=1 },
 	
 	resolvers.equip{
@@ -1041,7 +1042,7 @@ newEntity{ base="BASE_NPC_HORROR", define_as = "DISTORTED_BLADE",
 	no_breath = 1,
 	size_category = 2,
 
-	negative_status_immune = 1,
+	negative_status_effect_immune = 1,
 	
 	body = { INVEN = 10, MAINHAND=1 },
 	
diff --git a/game/modules/tome/data/general/objects/boss-artifacts-far-east.lua b/game/modules/tome/data/general/objects/boss-artifacts-far-east.lua
index c97334f737..f762ac48b9 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts-far-east.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts-far-east.lua
@@ -458,14 +458,12 @@ 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% chance to damage nearby creatures", on_kill=1, fct=function(combat, who, target)
-			if rng.percent(25) then
+		special_on_hit = {desc="Damage nearby creatures", on_kill=1, fct=function(combat, who, target)
 			local o, item, inven_id = who:findInAllInventoriesBy("define_as", "ROTTING_MAUL")
-				local dam = rng.avg(1,2) * (70+ who:getStr() * 1.8)
-				game.logSeen(who, "The ground shakes as the %s hits!", o:getName())
-				local tg = {type="ball", range=0, selffire=false, radius=2, no_restrict=true}
-				who:project(tg, target.x, target.y, engine.DamageType.PHYSICAL, dam)
-			end
+			local dam = rng.avg(1,2) * (70+ who:getStr())
+			game.logSeen(who, "The ground shakes as the %s hits!", o:getName())
+			local tg = {type="ball", range=0, selffire=false, radius=2, no_restrict=true}
+			who:project(tg, target.x, target.y, engine.DamageType.PHYSICAL, dam)
 		end},
 	},
 	wielder = {
diff --git a/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua b/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua
index 92a4f7008a..137a51c0d9 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua
@@ -291,9 +291,7 @@ newEntity{ base = "BASE_SHIELD",
 	rarity = 200,
 	cost = 20,
 	material_level = 2,
-	rarity = false,
 	metallic = false,
-
 	special_combat = {
 		dam = resolvers.rngavg(20,30),
 		block = 60,
@@ -318,22 +316,23 @@ newEntity{ base = "BASE_GEM",
 	power_source = {nature=true},
 	unique = true, define_as = "PETRIFIED_WOOD",
 	unided_name = "burned piece of wood",
-	name = "Petrified Wood", subtype = "black",
+	name = "Petrified Wood", subtype = "red", --Visually black, but associate with fire, not acid
 	color = colors.WHITE, image = "object/artifact/petrified_wood.png",
 	level_range = {35, 45},
 	rarity = 280,
-	identified = false,
 	desc = [[A piece of the scorched wood taken from the remains of Snaproot.]],
-	rarity = false,
 	cost = 100,
 	material_level = 4,
+	identified = false,
 	imbue_powers = {
 		resists = { [DamageType.NATURE] = 25, [DamageType.DARKNESS] = 10, [DamageType.COLD] = 10 },
 		inc_stats = { [Stats.STAT_CON] = 25, },
+		ignore_direct_crits = 23,
 	},
 	wielder = {
 		resists = { [DamageType.NATURE] = 25, [DamageType.DARKNESS] = 10, [DamageType.COLD] = 10 },
 		inc_stats = { [Stats.STAT_CON] = 25, },
+		ignore_direct_crits = 23,
 	},
 }
 
diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua
index 9b41a05c08..35f575f2d4 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts.lua
@@ -114,7 +114,7 @@ newEntity{ base = "BASE_LONGSWORD", define_as = "RIFT_SWORD",
 	unided_name = "time-warped sword",
 	desc = [[The remnants of a damaged timeline, this blade shifts and fades at random.]],
 	level_range = {30, 50},
-	rarity = nil, --Not random!
+	rarity = 220,
 	require = { stat = { str=44 }, },
 	cost = 300,
 	material_level = 4,
diff --git a/game/modules/tome/data/general/objects/brotherhood-artifacts.lua b/game/modules/tome/data/general/objects/brotherhood-artifacts.lua
index 5ae99007c4..218725f057 100644
--- a/game/modules/tome/data/general/objects/brotherhood-artifacts.lua
+++ b/game/modules/tome/data/general/objects/brotherhood-artifacts.lua
@@ -315,21 +315,27 @@ newEntity{ base = "BASE_GEM",
 	quest = 1,
 	material_level = 5,
 	wielder = {
-		inc_stats = {[Stats.STAT_CON] = 10, },
+		inc_stats = {[Stats.STAT_CON] = 15, },
 		healing_factor = 0.3,
 		life_regen = 2,
 		resists = {
 			[DamageType.BLIGHT] = 10,
 		},
+		damage_affinity = {
+			[DamageType.NATURE] = 15,
+		},
 	},
 	imbue_powers = {
-		inc_stats = {[Stats.STAT_CON] = 10, },
+		inc_stats = {[Stats.STAT_CON] = 15, },
 		healing_factor = 0.3,
 		life_regen = 2,
 		stun_immune = 0.3,
 		resists = {
 			[DamageType.BLIGHT] = 10,
 		},
+		damage_affinity = {
+			[DamageType.NATURE] = 15,
+		},
 	},
 }
 
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 51190c645b..5664eb9e2b 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
@@ -159,7 +159,7 @@ newEntity{ base = "BASE_GEM",
 	power_source = {arcane=true},
 	unique = true,
 	unided_name = "unearthly black stone",
-	name = "Goedalath Rock", subtype = "black", image = "object/artifact/goedalath_rock.png",
+	name = "Goedalath Rock", subtype = "demonic", image = "object/artifact/goedalath_rock.png",
 	color = colors.PURPLE,
 	level_range = {42, 50},
 	desc = [[A small rock that seems from beyond this world, vibrating with a fierce energy.  It feels warped and terrible and evil... and yet oh so powerful.]],
@@ -280,7 +280,7 @@ Now the broken fragments of Raasul's soul are trapped in this terrible artifact,
 				type = "undead", subtype = "blood",
 				display = "L",
 				name = "animated blood", color=colors.RED,
-				resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_lich_blood_lich.png", display_h=1, display_y=0}}},
+				resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_horror_animated_blood.png", display_h=1, display_y=0}}},
 				desc = "A haze of blood, vibrant and pulsing through the air, possessed by a warped and cracked soul. Every now and then a scream or wail of agony garbles through it, telling of the mindless suffering undergone by its possessor.",
 				body = { INVEN = 10, MAINHAND=1, OFFHAND=1, },
 				rank = 3,
diff --git a/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua b/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua
index 9135abf4e3..a4e9b77194 100644
--- a/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua
@@ -612,7 +612,6 @@ newEntity{ base = "BASE_WARAXE",
 			[DamageType.COLD] = 20,
 		},
 		iceblock_pierce=25,
-		talent_on_hit = { [Talents.T_ICE_BREATH] = {level=2, chance=15} },
 	},
 	combat = {
 		dam = 33,
@@ -622,6 +621,7 @@ newEntity{ base = "BASE_WARAXE",
 		convert_damage = {
 			[DamageType.ICE] = 50,
 		},
+		talent_on_hit = { [Talents.T_ICE_BREATH] = {level=2, chance=15} },
 	},
 }
 
diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua
index fe39eb3c89..9cf2214209 100644
--- a/game/modules/tome/data/general/objects/world-artifacts.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts.lua
@@ -50,15 +50,23 @@ newEntity{ base = "BASE_GEM",
 		movement_speed = 0.2,
 	},
 	imbue_powers = {
-		inc_stats = {[Stats.STAT_DEX] = 10, [Stats.STAT_CUN] = 10 },
+		inc_stats = {[Stats.STAT_DEX] = 8, [Stats.STAT_CUN] = 8 },
 		inc_damage = {[DamageType.LIGHTNING] = 20 },
-		cancel_damage_chance = 10, -- add to tooltip
+		cancel_damage_chance = 8,
 		damage_affinity={
 			[DamageType.LIGHTNING] = 20,
 		},
-		movement_speed = 0.2,
+		movement_speed = 0.15,
+	},
+	wielder = {
+		inc_stats = {[Stats.STAT_DEX] = 8, [Stats.STAT_CUN] = 8 },
+		inc_damage = {[DamageType.LIGHTNING] = 20 },
+		cancel_damage_chance = 8,
+		damage_affinity={
+			[DamageType.LIGHTNING] = 20,
+		},
+		movement_speed = 0.15,
 	},
-	
 }
 
 -- Low base values because you can stack affinity and resist
@@ -3890,7 +3898,7 @@ newEntity{ base = "BASE_TOOL_MISC",
 		combat_mindpower=8,
 	},
 		max_power = 35, power_regen = 1,
-	use_power = { name = "call an antimagic pillar", power = 35,
+	use_power = { name = "call an antimagic pillar, but silence yourself", power = 35,
 		use = function(self, who)
 			local x, y = util.findFreeGrid(who.x, who.y, 5, true, {[engine.Map.ACTOR]=true})
 			if not x then
@@ -3908,10 +3916,11 @@ newEntity{ base = "BASE_TOOL_MISC",
 				blood_color = colors.GREEN,
 				display = "T", color=colors.GREEN,
 				life_rating=18,
+				combat_dam = 40,
 				combat = {
 					dam=resolvers.rngavg(50,60),
 					atk=resolvers.rngavg(50,75), apr=25,
-					dammod={wil=1.1}, physcrit = 10,
+					dammod={wil=1.2}, physcrit = 10,
 					damtype=engine.DamageType.SLIME,
 				},
 				level_range = {1, nil}, exp_worth = 0,
@@ -3925,7 +3934,7 @@ newEntity{ base = "BASE_TOOL_MISC",
 				size_category = 5,
 				blind=1,
 				esp_all=1,
-				resists={[engine.DamageType.BLIGHT] = 40, [engine.DamageType.ARCANE] = 40, [engine.DamageType.NATURE] = 70},
+				resists={all = 15, [engine.DamageType.BLIGHT] = 40, [engine.DamageType.ARCANE] = 40, [engine.DamageType.NATURE] = 70},
 				no_breath = 1,
 				cant_be_moved = 1,
 				stone_immune = 1,
@@ -3937,10 +3946,10 @@ newEntity{ base = "BASE_TOOL_MISC",
 				stun_immune = 1,
 				blind_immune = 1,
 				cut_immune = 1,
-				knockback_resist,
+				knockback_resist=1,
 				combat_mentalresist=50,
 				combat_spellresist=100,
-				on_act = function(self) self:project({type="ball", range=0, radius=5, selffire=false}, self.x, self.y, engine.DamageType.SILENCE, {dur=2, power_check=self:combatMindpower()}) end,
+				on_act = function(self) self:project({type="ball", range=0, radius=5, friendlyfire=false}, self.x, self.y, engine.DamageType.SILENCE, {dur=2, power_check=self:combatMindpower()}) end,
 				resolvers.talents{
 					[Talents.T_RESOLVE]={base=3, every=6},
 					[Talents.T_MANA_CLASH]={base=3, every=5},
@@ -3963,6 +3972,7 @@ newEntity{ base = "BASE_TOOL_MISC",
 				title="Summon",
 				orders = {target=true, leash=true, anchor=true, talents=true},
 			})
+			who:setEffect(who.EFF_SILENCED, 5, {})
 			return {id=true, used=true}
 		end
 	},
@@ -5329,7 +5339,7 @@ newEntity{ base = "BASE_AMULET",
 	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,
+	special_desc = function(self) return "Gives all your cold damage a 20% chance to freeze the target." end,
 	wielder = {
 		combat_spellpower=12,
 		inc_damage={
@@ -5952,7 +5962,7 @@ newEntity{ base = "BASE_SHIELD",
 	special_desc = function(self) return "When you block an attack, there is a 30% chance of petrifying the attacker." end,
 	special_combat = {
 		dam = 40,
-		block = 100,
+		block = 180,
 		physcrit = 5,
 		dammod = {str=1},
 	},
@@ -6039,6 +6049,408 @@ newEntity{ base = "BASE_KNIFE", --Shibari's #1
 		quick_weapon_swap = 1, 
 	},
 }
+
+newEntity{ base = "BASE_KNIFE",
+	power_source = {technique=true},
+	unique = true,
+	name = "Swordbreaker", image = "object/artifact/swordbreaker.png",
+	unided_name = "hooked blade",
+	desc = [[This ordinary blade is made of fine, sturdy voratun and outfitted with jagged hooks along the edge. This simple appearance belies a great power - the hooked maw of this dagger broke many a blade and the stride of many would-be warriors.]],
+	level_range = {20, 30},
+	rarity = 250,
+	require = { stat = { dex=10, cun=10 }, },
+	cost = 300,
+	material_level = 3,
+	special_desc = function(self) return "Can block like a shield, potentially disarming the enemy." end,
+	combat = {
+		dam = 25,
+		apr = 20,
+		physcrit = 15,
+		physspeed = 0.9,
+		dammod = {dex=0.5,cun=0.5},
+		special_on_crit = {desc="Breaks enemy weapon.", fct=function(combat, who, target)
+			target:setEffect(target.EFF_SUNDER_ARMS, 5, {power=5+(who:combatPhysicalpower()*0.33), apply_power=who:combatPhysicalpower()})
+		end},
+	},
+	wielder = {
+		combat_def = 15,
+		disarm_immune=0.5,
+		combat_physresist = 15,
+		inc_stats = { 
+			[Stats.STAT_DEX] = 8, 
+			[Stats.STAT_CUN] = 8, 
+		},
+		combat_armor_hardiness = 20,
+		learn_talent = { [Talents.T_DAGGER_BLOCK] = 1, },
+	},
+}
+
+newEntity{ base = "BASE_SHIELD",
+	power_source = {arcane=true},
+	unique = true,
+	name = "Shieldsmaiden", image = "object/artifact/shieldmaiden.png",
+	unided_name = "icy shield",
+	desc = [["Myths tell of shieldsmaidens, a tribe of warrior women from the northern wastes of Maj'Eyal. Their martial prowess and beauty drew the fascination of swaths of admirers, yet all unrequited. So began the saying, that a shieldsmaidens heart is as cold and unbreakable as her shield."]],
+	color = colors.BROWN,
+	level_range = {36, 48},
+	rarity = 270,
+	require = { stat = { str=28 }, },
+	cost = 400,
+	material_level = 5,
+	metallic = false,
+	special_desc = function(self) return "Granted talent can block up to 1 instance of damage each 10 turns." end,
+	special_combat = {
+		dam = 48,
+		block = 150,
+		physcrit = 8,
+		dammod = {str=1},
+		damtype = DamageType.ICE,
+		talent_on_hit = { [Talents.T_ICE_SHARDS] = {level=3, chance=15} },
+	},
+	wielder = {
+		combat_armor = 20,
+		combat_def = 5,
+		combat_def_ranged = 12,
+		fatigue = 10,
+		learn_talent = { [Talents.T_BLOCK] = 4, [Talents.T_SHIELDSMAIDEN_AURA] = 1,  },
+		resists = { [DamageType.COLD] = 25, [DamageType.FIRE] = 25,},
+	},
+}
+
+-- Thanks to Naghyal's Beholder code for the basic socket skeleton
+newEntity{ base = "BASE_GREATMAUL",
+	power_source = {arcane=true}, -- Should really make this only arcane for some gems
+	unique = true,
+	color = colors.BLUE,
+	name = "Tirakai's Maul",
+	desc = [[This massive hammer is formed from a thick mass of strange crystalline growths. In the side of the hammer itself you see an empty slot; it looks like a gem of your own could easily fit inside it.]],
+	gemDesc = "None", -- Defined by the elemental properties and used by special_desc
+	special_desc = function(self)
+	-- You'll want to color this and such
+		if not self.Gem then return ("No gem") end
+		return ("%s: %s"):format(self.Gem.name:capitalize(), self.gemDesc or ("Write a description for this gem's properties!"))
+	end,	
+	cost = 1000,
+	material_level = 1, -- Changes to gem material level on socket
+	evel_range = {1, 15},
+	rarity = 280,
+	combat = {
+		dam = 10,
+		apr = 7,
+		physcrit = 4,
+		damrange=1.3,
+		dammod = {str=1.2},
+	},
+	max_power = 1, power_regen = 1,
+	use_power = { name = "imbue the hammer with a gem of your choice", power = 0,
+		use = function(self, who)
+			local DamageType = require "engine.DamageType"
+			local Stats = require "engine.interface.ActorStats"
+			local d
+			d = who:showInventory("Use which gem?", who:getInven("INVEN"), function(gem) return gem.type == "gem" and gem.imbue_powers and gem.material_level end, 
+				function(gem, gem_item)
+				who:onTakeoff(self)
+				local name_old=self.name
+				local old_hotkey
+				for i, v in pairs(who.hotkey) do
+					if v[2]==name_old then
+						old_hotkey=i
+					end
+				end
+				
+				-- Recycle the old gem
+				local old_gem=self.Gem
+				if old_gem then
+					who:addObject(who:getInven("INVEN"), old_gem)
+					game.logPlayer(who, "You remove your %s.", old_gem:getName{do_colour=true, no_count=true})
+				end
+				
+				if gem then
+	
+					-- The Blank Slate.  This is a horrible method of changing modes, but it is the easiest to avoid fucking up.  This doesn't do much better than just making a static table for every element but its much easier to work with.
+					self.Gem = nil
+					self.Gem = gem
+					self.gemDesc = "Describe all the goddamn colors.  NOW."
+					
+					self.sentient = false
+					self.act = mod.class.Object.act
+					
+					self.talent_on_spell = nil
+					
+					self.material_level=gem.material_level
+					local scalingFactor = self.material_level 
+					
+					self.combat = {
+						dam = (14 * scalingFactor),
+						apr = (3 * scalingFactor),
+						physcrit = (2.5 * scalingFactor),
+						dammod = {str=1.2},
+						damrange = 1.3,
+					}
+							
+					self.wielder = {
+						inc_stats = {[Stats.STAT_MAG] = (2 * scalingFactor), [Stats.STAT_CUN] = (2 * scalingFactor), [Stats.STAT_DEX] = (2 * scalingFactor),},
+					}
+					
+					who:removeObject(who:getInven("INVEN"), gem_item)
+
+					-- Each element merges its effect into the combat/wielder tables (or anything else) after the base stats are scaled
+					-- You can modify damage and such here too but you should probably make static tables instead of merging
+					if gem.subtype =="black" then -- Acid
+						self.combat.damtype = DamageType.ACID
+						table.mergeAdd(self.wielder, {inc_damage = { [DamageType.ACID] = 4 * scalingFactor} }, true)
+						
+						self.combat.burst_on_crit = {[DamageType.ACID_DISARM] = 12 * scalingFactor,}
+						self.gemDesc = "Acid"
+					end
+					if gem.subtype =="blue" then  -- Lightning
+						self.combat.damtype = DamageType.LIGHTNING
+						table.mergeAdd(self.wielder, {
+							inc_damage = { [DamageType.LIGHTNING] = 4 * scalingFactor} 
+						
+							}, true)
+						self.combat.burst_on_crit = {[DamageType.LIGHTNING_DAZE] = 12 * scalingFactor,}
+						self.gemDesc = "Lightning"
+					end
+					if gem.subtype =="green" then  -- Nature
+						self.combat.damtype = DamageType.NATURE
+						table.mergeAdd(self.wielder, {
+							inc_damage = { [DamageType.NATURE] = 4 * scalingFactor} 
+							
+							}, true)
+						self.combat.burst_on_crit = {[DamageType.SPYDRIC_POISON] = 12 * scalingFactor,}
+						self.gemDesc = "Nature"
+					end
+					if gem.subtype =="red" then  -- Fire					
+						self.combat.damtype = DamageType.FIRE
+						table.mergeAdd(self.wielder, {
+							inc_damage = { [DamageType.FIRE] = 4 * scalingFactor}, 
+						}, true)
+						self.combat.burst_on_crit = {[DamageType.FLAMESHOCK] = 12 * scalingFactor,}
+						self.gemDesc = "Fire"
+					end
+					if gem.subtype =="violet" then -- Arcane
+						self.combat.damtype = DamageType.ARCANE
+						table.mergeAdd(self.wielder, {
+							inc_damage = { [DamageType.ARCANE] = 4 * scalingFactor} 
+							
+						}, true)
+						self.combat.burst_on_crit = {[DamageType.ARCANE_SILENCE] = 12 * scalingFactor,}
+						self.gemDesc = "Arcane"
+					end
+					if gem.subtype =="white" then  -- Cold
+						self.combat.damtype = DamageType.COLD
+						table.mergeAdd(self.wielder, {
+							inc_damage = { [DamageType.COLD] = 4 * scalingFactor} 
+							
+						}, true)
+						self.combat.burst_on_crit = {[DamageType.ICE] = 12 * scalingFactor,}
+						self.gemDesc = "Cold"
+					end
+					if gem.subtype =="yellow" then -- Light
+						self.combat.damtype = DamageType.LIGHT
+						table.mergeAdd(self.wielder, {
+							inc_damage = { [DamageType.LIGHT] = 4 * scalingFactor} 
+							
+						}, true)	
+						self.combat.burst_on_crit = {[DamageType.LIGHT_BLIND] = 12 * scalingFactor,}
+						self.gemDesc = "Light"
+					end
+					if gem.subtype == "multi-hued"  then -- Some but not all artifacts, if you want to do artifact specific effects make conditionals by name, don't use this
+						table.mergeAdd(self.combat, {convert_damage = {[DamageType.COLD] = 25, [DamageType.FIRE] = 25, [DamageType.LIGHTNING] = 25, [DamageType.ARCANE] = 25,} }, true)
+						table.mergeAdd(self.wielder, {
+							inc_damage = { all = 2 * scalingFactor},
+							resists_pen = { all = 2 * scalingFactor},
+							}, true)	
+							self.gemDesc = "Unique"							
+					end
+					if gem.subtype == "demonic"  then -- Goedalath Rock
+						self.combat.damtype = DamageType.SHADOWFLAME
+						table.mergeAdd(self.wielder, {
+							inc_damage = { [DamageType.FIRE] = 3 * scalingFactor, [DamageType.DARKNESS] = 3 * scalingFactor,},
+							resists_pen = { all = 2 * scalingFactor},
+							}, true)	
+							self.gemDesc = "Demonic"							
+					end
+					game.logPlayer(who, "You imbue your %s with %s.", self:getName{do_colour=true, no_count=true}, gem:getName{do_colour=true, no_count=true})
+
+					--self.name = (gem.name .. " of Divinity")
+					
+					table.mergeAdd(self.wielder, gem.imbue_powers, true)
+					
+				end
+				if gem.talent_on_spell then
+					self.talent_on_spell = self.talent_on_spell or {}
+					table.append(self.talent_on_spell, gem.talent_on_spell)
+				end
+				who:onWear(self)
+				for i, v in pairs(who.hotkey) do
+					if v[2]==name_old then
+						v[2]=self.name
+					end
+					if v[2]==self.name and old_hotkey and i~=old_hotkey then
+						who.hotkey[i] = nil
+					end
+				end
+				d.used_talent=true
+				game:unregisterDialog(d)
+				return true
+			end)
+			return {id=true, used=true}
+		end
+	},
+	on_wear = function(self, who)
+
+		return true
+	end,
+	wielder = {
+	-- Stats only from gems
+	},
+}
+
+newEntity{ base = "BASE_GLOVES", define_as = "SET_GLOVE_DESTROYER",
+	power_source = {arcane=true, technique=true},
+	unique = true,
+	name = "Fist of the Destroyer", color = colors.RED, image = "object/artifact/fist_of_the_destroyer.png",
+	unided_name = "vile gauntlets",
+	desc = [[These terrible looking gloves glow with untold power.]],
+	level_range = {40, 50},
+	rarity = 300,
+	cost = 800,
+	material_level = 5,
+	special_desc = function(self)
+		local num=4
+		if self.set_complete then
+			num=6
+		end
+		return ("Increases all damage by %d%% of current vim \nCurrent Bonus: %d%%"):format(num, num*0.01*(game.player:getVim() or 0)) 
+	end,
+	wielder = {
+		inc_stats = { [Stats.STAT_STR] = 9, [Stats.STAT_MAG] = 9, [Stats.STAT_CUN] = 3, },
+		demonblood_dam=0.04,
+		max_vim = 25,
+		combat_def = 8,
+		stun_immune = 0.2,
+		talents_types_mastery = { ["corruption/shadowflame"] = 0.2, ["corruption/vim"] = 0.2,},
+		combat = {
+			dam = 35,
+			apr = 15,
+			physcrit = 10,
+			physspeed = 0,
+			dammod = {dex=0.4, str=-0.6, cun=0.4, mag=0.2,},
+			damrange = 0.3,
+			talent_on_hit = { T_DRAIN = {level=2, chance=8}, T_SOUL_ROT = {level=3, chance=12}, T_BLOOD_GRASP = {level=3, chance=10}},
+		},
+	},
+	max_power = 12, power_regen = 1,
+	use_talent = { id = Talents.T_DARKFIRE, level = 5, power = 12 },
+	set_list = { {"define_as", "SET_ARMOR_MASOCHISM"} },
+	on_set_complete = function(self, who)
+		game.logPlayer(who, "#STEEL_BLUE#The fist and the mangled clothing glow ominously!")
+		self:specialSetAdd({"wielder","demonblood_dam"}, 0.02)
+		self:specialSetAdd({"wielder","inc_damage"}, { [engine.DamageType.FIRE] = 15, [engine.DamageType.DARKNESS] = 15, all = 5 })
+	end,
+	on_set_broken = function(self, who)
+		game.logPlayer(who, "#STEEL_BLUE#The ominous glow dies down.")
+	end,
+}
+
+newEntity{ base = "BASE_LIGHT_ARMOR", define_as = "SET_ARMOR_MASOCHISM",
+	power_source = {arcane=true, technique=true},
+	unique = true,
+	name = "Masochism", color = colors.RED, image = "object/artifact/masochism.png",
+	unided_name = "mangled clothing",
+	desc = [[Stolen flesh,
+	Stolen pain,
+	To give it up,
+	Is to live again.]],
+	level_range = {40, 50},
+	rarity = 300,
+	cost = 800,
+	material_level = 5,
+	special_desc = function(self)
+		local num=7
+		if self.set_complete then
+			num=10
+		end
+		return ("Reduces all damage by %d%% of current vim or 50%% of the damage, whichever is lower; but at the cost of vim equal to 5%% of the damage blocked. \nCurrent Bonus: %d"):format(num, num*0.01*(game.player:getVim() or 0)) 
+	end,
+	wielder = {
+		inc_stats = {[Stats.STAT_MAG] = 9, [Stats.STAT_CUN] = 3, },
+		combat_spellpower = 10,
+		demonblood_def=0.07,
+		max_vim = 25,
+		disease_immune = 1,
+		combat_physresist = 10,
+		combat_mentalresist = 10,
+		combat_spellresist = 10,
+		on_melee_hit={[DamageType.DRAIN_VIM] = 25},
+		melee_project={[DamageType.DRAIN_VIM] = 25},
+		talents_types_mastery = { ["corruption/sanguisuge"] = 0.2, ["corruption/blood"] = 0.2,},
+	},
+	max_power = 12, power_regen = 1,
+	use_talent = { id = Talents.T_BLOOD_GRASP, level = 5, power = 12 },
+	set_list = { {"define_as", "SET_GLOVE_DESTROYER"} },
+	on_set_complete = function(self, who)
+		self:specialSetAdd({"wielder","demonblood_def"}, 0.03)
+		self:specialSetAdd({"wielder","resists"}, { [engine.DamageType.FIRE] = 15, [engine.DamageType.DARKNESS] = 15, all = 5 })
+	end,
+	on_set_broken = function(self, who)
+	end,
+}
+
+newEntity{ base = "BASE_GREATMAUL",
+	power_source = {technique=true},
+	unique = true,
+	name = "Obliterator", color = colors.UMBER, image = "object/artifact/obliterator.png",
+	unided_name = "titanic maul",
+	desc = [[This massive hammer strikes with an impact that could shatter bones.]],
+	level_range = {23, 30},
+	rarity = 270,
+	require = { stat = { str=40 }, },
+	cost = 250,
+	material_level = 3,
+	combat = {
+		dam = 48,
+		apr = 10,
+		physcrit = 0,
+		dammod = {str=1.2},
+		crushing_blow=1,
+	},
+	wielder = {
+		combat_critical_power = 10,
+	},
+}
+
+newEntity{ base = "BASE_HELM",
+	power_source = {technique=true},
+	unique = true,
+	name = "Yaldan Baoth", image = "object/artifact/yaldan_baoth.png",
+	unided_name = "obscuring helm",
+	desc = [[The golden bascinet crown, affiliated to Veluca of Yaldan. King of the mythical city of Yaldan, that was struck from the face of Eyal by the arrogance of its people. Lone survivor of his kin, he spent his last years wandering the early world, teaching man to stand against the darkness. With his dying words, "Fear no evil", the crown was passed onto his successor.]],
+	level_range = {28, 39,},
+	rarity = 240,
+	cost = 700,
+	material_level = 4,
+	wielder = {
+		combat_armor = 6,
+		fatigue = 4,
+		resist_unseen = 25,
+		sight = -2,
+		inc_stats = { [Stats.STAT_WIL] = 10, [Stats.STAT_CON] = 7, },
+		inc_damage={
+			[DamageType.LIGHT] = 10,
+		},
+		resists={
+			[DamageType.LIGHT] = 10,
+			[DamageType.DARKNESS] = 15,
+		},
+		resists_cap={
+			[DamageType.DARKNESS] = 10,
+		},
+		blind_fight = 1,
+	},
+}
 --[=[
 newEntity{
 	unique = true,
diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/fist_of_the_destroyer.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/fist_of_the_destroyer.png
new file mode 100644
index 0000000000000000000000000000000000000000..80870ad911ce63dc57dff257265a7062424aa8ef
GIT binary patch
literal 11058
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

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/masochism.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/masochism.png
new file mode 100644
index 0000000000000000000000000000000000000000..ced22684ca13353fc9c1202997f026673e20112d
GIT binary patch
literal 10039
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
N002ovPDHLkV1o9Nf>;0m

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/obliterator.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/obliterator.png
new file mode 100644
index 0000000000000000000000000000000000000000..cae5836cdba68864f733fba17089a28c6ce0fca9
GIT binary patch
literal 7136
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
Wsz`Y4wS?6G0000<MNUMnLSTYy)U0Fx

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/shieldmaiden.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/shieldmaiden.png
new file mode 100644
index 0000000000000000000000000000000000000000..95a2065f3c0c96a02a331f2f592d094958ed1846
GIT binary patch
literal 9580
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
W*_9|zgCz_A0000<MNUMnLSTYle{J^w

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/swordbreaker.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/swordbreaker.png
new file mode 100644
index 0000000000000000000000000000000000000000..4288b810898c7ad53a3a003f06517343aa427830
GIT binary patch
literal 8728
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
CLDNeB

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/tirakais_maul.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/tirakais_maul.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ef0accf0a0b5c86bdd2c8fb477cf582658b896c
GIT binary patch
literal 9220
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
a{|x{|#S$^6yIOq!0000<MNUMnLSTX=J;ojY

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/gfx/shockbolt/object/artifact/yaldan_baoth.png b/game/modules/tome/data/gfx/shockbolt/object/artifact/yaldan_baoth.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ee4bdf279c2d1646fb86d9679da01e412c3530b
GIT binary patch
literal 11374
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

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/gfx/talents/shieldsmaiden_aura.png b/game/modules/tome/data/gfx/talents/shieldsmaiden_aura.png
new file mode 100644
index 0000000000000000000000000000000000000000..5db2a5eb5e5e04d1a2df84e9206b5c898e08cc43
GIT binary patch
literal 2718
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
Y1vLdEYw^lf1^@s607*qoM6N<$g4;tIIsgCw

literal 0
HcmV?d00001

diff --git a/game/modules/tome/data/talents/misc/objects.lua b/game/modules/tome/data/talents/misc/objects.lua
index 5d45f4d49f..0e852182d4 100644
--- a/game/modules/tome/data/talents/misc/objects.lua
+++ b/game/modules/tome/data/talents/misc/objects.lua
@@ -528,3 +528,91 @@ newTalent{
 		return ([[Reset up to 3 wild gift, psionic or cursed talents.]])
 	end,
 }
+
+newTalent{
+	name = "Dagger Block",
+	image = "talents/block.png",
+	type = {"technique/objects", 1},
+	cooldown = function(self, t)
+		return 8 - util.bound(self:getTalentLevelRaw(t), 1, 5)
+	end,
+	points = 5,
+	hard_cap = 5,
+	range = 1,
+	requires_target = true,
+	tactical = { ATTACK = 3, DEFEND = 3 },
+	
+	getProperties = function(self, t)
+		local p = {
+			sp = false,
+			ref = false,
+			br = false,
+			sb = true
+		}
+		return p
+	end,
+	
+	getBlockedTypes = function(self, t)
+	
+		local bt = {[DamageType.PHYSICAL]=true}
+			bt[DamageType.FIRE] = false
+			bt[DamageType.LIGHTNING] = false
+			bt[DamageType.COLD] = false
+			bt[DamageType.ACID] = false
+			bt[DamageType.NATURE] = false
+			bt[DamageType.BLIGHT] = false
+			bt[DamageType.LIGHT] = false
+			bt[DamageType.DARKNESS] = false
+			bt[DamageType.ARCANE] = false
+			bt[DamageType.MIND] = false
+			bt[DamageType.TEMPORAL] = false
+			
+		local n = 0
+		for t, _ in pairs(bt) do n = n + 1 end
+
+		if n < 1 then return "(error 2)" end
+		local e_string = ""
+		if n == 1 then
+			e_string = DamageType.dam_def[next(bt)].name
+		else
+			local list = table.keys(bt)
+			for i = 1, #list do
+				list[i] = DamageType.dam_def[list[i]].name
+			end
+			e_string = table.concat(list, ", ")
+		end
+		return bt, e_string
+		end,
+	
+	action = function(self, t)
+		local properties = t.getProperties(self, t)
+		local bt, bt_string = t.getBlockedTypes(self, t)
+		self:setEffect(self.EFF_BLOCKING, 1 + (self:knowTalent(self.T_ETERNAL_GUARD) and 1 or 0), {power = 120+self:getCun()+self:getDex(), d_types=bt, properties=properties})
+		return true
+	end,
+	info = function(self, t)
+		return ([[Raise your dagger into blocking position for one turn, reducing the damage of all physical attacks by %d. If you block all of an attack's damage, the attacker will be vulnerable to a deadly counterstrike (a normal attack will instead deal 200%% damage) for one turn and be left disarmed for 3 turns.
+		The blocking value will increase with your Dexterity and Cunning.]]):format(120 + self:getCun() + self:getDex())
+	end,
+}
+
+newTalent{
+	name = "Shieldsmaiden Aura",
+	type = {"misc/objects", 1},
+	points = 1,
+	mode = "passive",
+	cooldown = 10,
+	callbackOnHit = function(self, t, cb)
+		if not self:isTalentCoolingDown(t) then
+			self:startTalentCooldown(t)
+			cb.value=0
+			game.logPlayer(self, "Your shield protects you from the blow!")
+			return true
+		else
+		return false
+		end
+	end,
+	info = function(self, t)
+		return ([[Can block up to 1 hit per 10 turns.]])
+	end,
+}
diff --git a/game/modules/tome/data/talents/psionic/absorption.lua b/game/modules/tome/data/talents/psionic/absorption.lua
index 724a1c9aa4..4a9402e186 100644
--- a/game/modules/tome/data/talents/psionic/absorption.lua
+++ b/game/modules/tome/data/talents/psionic/absorption.lua
@@ -76,7 +76,7 @@ newTalent{
 	no_energy = true,
 	tactical = { DEFEND = 2 },
 	on_pre_use = function(self, t, silent)
-		if self:isTalentActive(self.T_THERMAL_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) then
+		if self:isTalentActive(self.T_THERMAL_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) and not self:attr("psionic_shield_override") then
 			if not silent then game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.") end
 			return false
 		end
@@ -202,7 +202,7 @@ newTalent{
 	no_energy = true,
 	tactical = { DEFEND = 2 },
 	on_pre_use = function(self, t, silent)
-		if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) then
+		if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) and not self:attr("psionic_shield_override") then
 			if not silent then game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.") end
 			return false
 		end
@@ -325,7 +325,7 @@ newTalent{
 	no_energy = true,
 	tactical = { DEFEND = 2 },
 	on_pre_use = function(self, t, silent)
-		if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_THERMAL_SHIELD) then
+		if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_THERMAL_SHIELD) and not self:attr("psionic_shield_override") then
 			if not silent then game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.") end
 			return false
 		end
diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua
index f49de2deff..671d34e158 100644
--- a/game/modules/tome/data/timed_effects/physical.lua
+++ b/game/modules/tome/data/timed_effects/physical.lua
@@ -1838,7 +1838,7 @@ newEffect{
 			game:delayedLogMessage(self, src, "block_heal", "#CRIMSON##Source# heals from blocking with %s shield!", string.his_her(self))
 		end
 		if eff.properties.ref and src.life then DamageType.defaultProjector(src, src.x, src.y, type, blocked, tmp, true) end
-		if (self:knowTalent(self.T_RIPOSTE) or amt == 0) and src.life then src:setEffect(src.EFF_COUNTERSTRIKE, (1 + dur_inc) * (src.global_speed or 1), {power=eff.power, no_ct_effect=true, src=self, crit_inc=crit_inc, nb=nb}) end -- specify duration here to avoid stacking for high speed attackers
+		if (self:knowTalent(self.T_RIPOSTE) or amt == 0) and src.life then src:setEffect(src.EFF_COUNTERSTRIKE, (1 + dur_inc) * (src.global_speed or 1), {power=eff.power, no_ct_effect=true, src=self, crit_inc=crit_inc, nb=nb}) if eff.properties.sb then if src:canBe("disarm") then src:setEffect(src.EFF_DISARMED, 3, {apply_power=self:combatPhysicalpower()}) else game.logSeen(target, "%s resists the disarming attempt!", src.name:capitalize()) end end end-- specify duration here to avoid stacking for high speed attackers
 		return amt
 	end,
 	activate = function(self, eff)
@@ -2011,7 +2011,7 @@ newEffect{
 newEffect{
 	name = "DISABLE", image = "talents/cripple.png",
 	desc = "Disable",
-	long_desc = function(self, eff) return ("The target is disabled, reducing movement speed by %d%% and physical power by %d."):format(eff.speed * 100, eff.atk) end,
+	long_desc = function(self, eff) return ("The target is disabled, reducing movement speed by %d%% and accuracy by %d."):format(eff.speed * 100, eff.atk) end,
 	type = "physical",
 	subtype = { wound=true },
 	status = "detrimental",
@@ -2308,3 +2308,4 @@ newEffect{
 		self:incEquilibrium(-eff.power)
 	end,
 }
+
diff --git a/game/modules/tome/data/zones/rak-shor-pride/npcs.lua b/game/modules/tome/data/zones/rak-shor-pride/npcs.lua
index 84625373d2..96475482bc 100644
--- a/game/modules/tome/data/zones/rak-shor-pride/npcs.lua
+++ b/game/modules/tome/data/zones/rak-shor-pride/npcs.lua
@@ -110,7 +110,7 @@ newEntity{ base = "BASE_NPC_GHOUL", define_as = "ROTTING_TITAN",
 	resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_ghoul_rotting_titan.png", display_h=2, display_y=-1}}},
 	desc = [[This gigantic mass of flesh and stone moves slowly, the ground rumbling with each step it takes. Its body seems to constantly pulsate and reform. Massive stones at the end of each limb form massive blunt weapons.]],
 	level_range = {45, nil}, exp_worth = 2,
-	rarity = 40,
+	rarity = 28,
 	max_life = resolvers.rngavg(150,200), life_rating = 40,
 	combat_armor = 40, combat_def = 10,
 	ai_state = { talent_in=2 },
@@ -138,15 +138,17 @@ newEntity{ base = "BASE_NPC_GHOUL", define_as = "ROTTING_TITAN",
 	combat_atk=40,
 	combat_spellpower=25,
 	
+	inc_damage = { [DamageType.PHYSICAL] = 15 },
+	
 	disarm_immune=1, --Since disarming him would be, well, DISARMING him.
 
 	on_move = function(self)
-			if rng.percent(20) then
-				game.logSeen(self, "The ground shakes as %s steps!", self.name:capitalize())
-				local tg = {type="ball", range=0, selffire=false, radius=3, no_restrict=true}
-				local DamageType = require "engine.DamageType"
-				self:project(tg, self.x, self.y, DamageType.PHYSKNOCKBACK, {dam=24, dist=1})
-				self:doQuake(tg, self.x, self.y)
+		if rng.percent(35) then
+			game.logSeen(self, "The ground shakes as %s steps!", self.name:capitalize())
+			local tg = {type="ball", range=0, selffire=false, radius=4, no_restrict=true}
+			local DamageType = require "engine.DamageType"
+			--self:project(tg, self.x, self.y, DamageType.PHYSKNOCKBACK, {dam=24, dist=5})
+			self:doQuake(tg, self.x, self.y)
 		end
 		self:project({type="ball", range=0, selffire=false, radius=1}, self.x, self.y, engine.DamageType.DIG, 1)
 	end,
@@ -180,7 +182,7 @@ newEntity{ base = "BASE_NPC_GHOST", define_as = "GLACIAL_LEGION",
 	resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_ghost_glacial_legion.png", display_h=2, display_y=-1}}},
 	desc = [[A massive, shifting, ethereal form floats in the air around an orb of frozen blood. Vapor pools on the floor beneath it.]],
 	level_range = {45, nil}, exp_worth = 2,
-	rarity = 40,
+	rarity = 28,
 	size_category=5,
 	rank = 3.5,
 	max_life = resolvers.rngavg(90,100), life_rating = 18,
@@ -188,34 +190,36 @@ newEntity{ base = "BASE_NPC_GHOST", define_as = "GLACIAL_LEGION",
 	ai = "tactical", ai_state = { talent_in=1, },
 	ai_tactic = resolvers.tactic"ranged",
 	stats = { str=13, dex=15, mag=45, con=14 },
-	combat_spellpower=40,
+	combat_spellpower = 100,
 
 	resists = {all = -10, [DamageType.FIRE] = -100, [DamageType.LIGHT] = 30, [DamageType.COLD] = 100},
 	combat_armor = 0, combat_def = resolvers.mbonus(10, 10),
 	--stealth = resolvers.mbonus(40, 10),
 
-	combat = { dam=50, atk=50, apr=100, dammod={mag=1.1} },
+	combat = { dam=50, atk=90, apr=100, dammod={mag=1.1} },
 	melee_project = {[DamageType.COLD]=resolvers.mbonus(15, 25)},
 	on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
+	
+	inc_damage = { [DamageType.COLD] = 25 },
 
 	on_move = function(self)
-			local DamageType = require "engine.DamageType"
-			local duration = 7
-			local radius = 0
-			local dam = 25
-			-- Add a lasting map effect
-			game.level.map:addEffect(self,
-				self.x, self.y, duration,
-				engine.DamageType.ICE, 25,
-				radius,
-				5, nil,
-				engine.Entity.new{alpha=100, display='', color_br=30, color_bg=60, color_bb=200},
-				function(e)
-					e.radius = e.radius
-					return true
-				end,
-				false
-			)
+		local DamageType = require "engine.DamageType"
+		local duration = 9
+		local radius = 0
+		local dam = 100
+		-- Add a lasting map effect
+		game.level.map:addEffect(self,
+			self.x, self.y, duration,
+			engine.DamageType.ICE, dam,
+			radius,
+			5, nil,
+			engine.Entity.new{alpha=100, display='', color_br=30, color_bg=60, color_bb=200},
+			function(e)
+				e.radius = e.radius 
+				return true
+			end,
+			false
+		)
 	end,
 
 	resolvers.talents{
@@ -223,13 +227,12 @@ newEntity{ base = "BASE_NPC_GHOST", define_as = "GLACIAL_LEGION",
 		[Talents.T_FREEZE]={base=5, every=4, max=10},
 		[Talents.T_ICE_STORM]={base=4, every=6, max=8},
 		[Talents.T_ICE_SHARDS]={base=5, every=5, max=9},
-		[Talents.T_ARCANE_POWER]={base=4, every=3, max = 11},
 		[Talents.T_SHATTER]={base=3, every=6, max=8},
 		[Talents.T_UTTERCOLD]={base=3, every=7, max = 5},
 		[Talents.T_FROZEN_GROUND]={base=4, every=6, max = 6},
 		[Talents.T_CHILL_OF_THE_TOMB]={base=5, every=5, max=10},
 		[Talents.T_SPELLCRAFT]={base=3, every=7, max=8},
-		[Talents.T_MANAFLOW]={base=5, every=4, max = 12},
+		--[Talents.T_MANAFLOW]={base=5, every=4, max = 12},
 		[Talents.T_FROST_HANDS]={base=3, every=7, max=8},
 	},
 	resolvers.drops{chance=100, nb=3, {tome_drops="boss"} },
@@ -243,7 +246,7 @@ newEntity{ base = "BASE_NPC_BONE_GIANT", define_as = "HEAVY_SENTINEL",
 	desc = [[A towering creature, made from the bones of countless bodies. An aura of flame bellows from within its chest.]],
 	resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_giant_heavy_sentinel.png", display_h=2, display_y=-1}}},
 	level_range = {45, nil}, exp_worth = 2,
-	rarity = 40,
+	rarity = 28,
 	rank = 3.5,
 	ai = "tactical",
 	size=5,
@@ -251,12 +254,12 @@ newEntity{ base = "BASE_NPC_BONE_GIANT", define_as = "HEAVY_SENTINEL",
 	combat_armor = 20, combat_def = 35,
 	life_rating = 28,
 	
-	combat_atk=30,
-	combat_spellpower=15,
+	combat_atk = 60,
+	combat_spellpower=35,
 	
 	stats = { str=28, dex=60, mag=20, con=20 },
 	
-	combat = { dam=resolvers.levelup(60, 1, 2), atk=resolvers.levelup(70, 1, 1), apr=20, dammod={str=1.2}, damtype=engine.DamageType.FIRE, convert_damage={[engine.DamageType.PHYSICAL]=50}},
+	combat = { dam=resolvers.levelup(60, 1, 2), atk=resolvers.levelup(110, 1, 1), apr=20, dammod={str=1.2}, damtype=engine.DamageType.FIRE, convert_damage={[engine.DamageType.PHYSICAL]=50}},
 	
 	melee_project = {[DamageType.FIRE]=resolvers.mbonus(15, 25)},
 	on_melee_hit = {[DamageType.FIRE]=resolvers.mbonus(15, 5)},
@@ -268,12 +271,10 @@ newEntity{ base = "BASE_NPC_BONE_GIANT", define_as = "HEAVY_SENTINEL",
 		[Talents.T_SKELETON_REASSEMBLE]=5,
 		[Talents.T_ARCANE_POWER]={base=3, every=3, max = 6},
 		[Talents.T_FLAME]={base=3, every=4, max = 8},
-		[Talents.T_FLAMESHOCK]={base=2, every=6, max = 7},
-		[Talents.T_MANAFLOW]={base=5, every=5, max = 10},
+		[Talents.T_FLAMESHOCK]={base=3, every=6, max = 7},
 		[Talents.T_INFERNO]={base=2, every=5, max = 6},
 		[Talents.T_BURNING_WAKE]={base=1, every=4, max = 5},
 		[Talents.T_WILDFIRE]={base=3, every=7, max=5},
-		--[Talents.T_GOLEM_MOLTEN_SKIN]={base=3, every=6, max=6},
 		[Talents.T_CLEANSING_FLAMES]={base=2, every=6, max = 5},
 		[Talents.T_ARCANE_COMBAT]=3,
 		[Talents.T_SPELLCRAFT]={base=3, every=7, max=7},
@@ -291,20 +292,25 @@ newEntity{ base = "BASE_NPC_VAMPIRE", unique=true, define_as="ARCH_ZEPHYR",
 	resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_vampire_arch_zephyr.png", display_h=2, display_y=-1}}},
 	desc=[[The robes of this ancient vampire billow with intense winds. Bolts of lightning arc along its body. In its hand it holds a bow, electricity streaking across it.]],
 	level_range = {45, nil}, exp_worth = 1,
-	rarity = 40,
+	rarity = 28,
 	autolevel="warriormage",
 	stats = { str=24, dex=40, mag=24, con=20 },
 	max_life = resolvers.rngavg(100,120), life_rating=25,
 	combat_armor = 15, combat_def = 15,
 	rank = 3.5,
-	mana_regen=6,
+	mana_regen = 20, --Maintain Thunderstorm
+	
+	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 },
 
-	movement_speed=1.5,
+	movement_speed=1.75,
 	
-	combat_atk = 40,
-	combat_spellpower = 40,
+	combat_atk = 120,
+	combat_spellpower = 60,
+	
+	ranged_project = {[DamageType.LIGHTNING] = resolvers.mbonus(30, 30)},
 
-	ai = "tactical", ai_state = { talent_in=4, },
+	ai = "tactical", ai_state = { talent_in=3, },
+	ai_tactic = resolvers.tactic"ranged",
 	resolvers.equip{ {type="weapon", subtype="longbow", defined="STORM_FURY", random_art_replace={chance=50}, autoreq=true, force_drop=true}, {type="ammo", subtype="arrow", autoreq=true} },
 
 	resists = { [DamageType.LIGHTNING] = 100, [DamageType.PHYSICAL] = -20, [DamageType.LIGHT] = 30,  },
@@ -322,7 +328,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE", unique=true, define_as="ARCH_ZEPHYR",
 
 		[Talents.T_SHOOT]=1, -- If possible, add talent that lets it temporarily fire lightning instead of arrows.
 		[Talents.T_RELOAD]=1,
-		[Talents.T_BOW_MASTERY]={base=3, every=10},
+		[Talents.T_BOW_MASTERY]={base=4, every=10},
 		[Talents.T_DUAL_ARROWS]={base=3, every=6, max=8},
 		[Talents.T_PINNING_SHOT]={base=2, every=6, max=4},
 		[Talents.T_CRIPPLING_SHOT]={base=2, every=6, max=7},
@@ -339,18 +345,23 @@ newEntity{ base = "BASE_NPC_WIGHT",
 	desc=[[Intense Arcane energy whirls in the air around this ethereal form. ]],
 	level_range = {45, nil}, exp_worth = 2,
 	life_rating=16,
-	rarity = 40,
+	rarity = 28,
 	rank = 3.5,
 	max_life = resolvers.rngavg(200,300),
 	max_mana = resolvers.rngavg(800,1200),
-	mana_regen = 5,
+	mana_regen = 100, --RAW ARCANE POWER
 	combat_armor = 12, combat_def = 30, combat_atk=30,
+	combat_spellpower = resolvers.mbonus(90, 30),
 	
-		combat = { dam=resolvers.mbonus(40, 20), atk=20, apr=15, damtype=DamageType.ARCANE },
+	arcane_cooldown_divide = 4, --Aether Avatar ++
+	inc_damage = { [DamageType.ARCANE] = 30 },
 	
-		resists = { [DamageType.COLD] = 30, [DamageType.FIRE] = 30, [DamageType.LIGHTNING] = 30, [DamageType.PHYSICAL] = 0, [DamageType.LIGHT] = 0, [DamageType.ARCANE] = 100},
+	combat = { dam=resolvers.mbonus(40, 20), atk=20, apr=15, damtype=DamageType.ARCANE },
+	
+	resists = { [DamageType.COLD] = 30, [DamageType.FIRE] = 30, [DamageType.LIGHTNING] = 30, [DamageType.PHYSICAL] = 0, [DamageType.LIGHT] = 0, [DamageType.ARCANE] = 100},
 
 	ai = "tactical",
+	ai_tactic = resolvers.tactic"ranged",
 	resolvers.talents{ [Talents.T_FLAMESHOCK]={base=3, every=5, max=7}, [Talents.T_LIGHTNING]={base=4, every=5, max=8}, [Talents.T_GLACIAL_VAPOUR]={base=3, every=5, max=7}, [Talents.T_STRIKE]={base=3, every=5, max=7},
 		[Talents.T_ARCANE_POWER]={base=6, every=2, max=12},
 		[Talents.T_MANATHRUST]={base=6, every=4, max=10},
@@ -358,9 +369,9 @@ newEntity{ base = "BASE_NPC_WIGHT",
 		[Talents.T_SPELLCRAFT]=5,
 		[Talents.T_AETHER_BEAM]={base=6, every=7, max=9},
 		[Talents.T_AETHER_BREACH]={base=3, every=6, max=6},
-		[Talents.T_HEAL]={base=2, every=6, max=6},
+		[Talents.T_HEAL]={base=3, every=6, max=6},
 		[Talents.T_SHIELDING]={base=3, every=6, max=6},
-		[Talents.T_ARCANE_SHIELD]={base=2, every=5, max=5},
+		[Talents.T_ARCANE_SHIELD]={base=3, every=5, max=5},
 		[Talents.T_PURE_AETHER]={base=3, every=7, max=5},
 		[Talents.T_PHASE_DOOR]=10,
 	},
-- 
GitLab