diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 525ca8f5cea4798ec08f947141cd959ed720deca..7ddf358eabc003f7b41570f837e492a7d7b647b9 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -329,7 +329,7 @@ function _M:useEnergy(val)
 end
 
 function _M:actBase()
-	-- Solipsism speed effects
+	-- Solipsism speed effects; calculated before the actor gets 
 	local current_psi_percentage = self:getPsi() / self:getMaxPsi()
 	if self:attr("solipsism_threshold") and current_psi_percentage < self:attr("solipsism_threshold") then
 		if self:hasEffect(self.EFF_CLARITY) then
@@ -397,7 +397,11 @@ function _M:actBase()
 			local t = self:getTalentFromId(self.T_BIOFEEDBACK)
 			self:heal(decay * t.getHealRatio(self, t))
 		end
-		self:incFeedback(-decay)
+		if self:hasEffect(self.EFF_FEEDBACK_LOOP) then
+			self:incFeedback(decay)
+		else
+			self:incFeedback(-decay)
+		end
 	end
 
 	-- Compute timed effects
@@ -477,12 +481,13 @@ function _M:actBase()
 				self:forceUseTalent(self.T_DAUNTING_PRESENCE, {ignore_energy=true})
 			end
 		end
-		-- this handles feedback overcharge
-		if self:attr("discharge_overcharge") then
-			local t = self:getTalentFromId(self.T_OVERCHARGE)
-			t.doOvercharge(self, t, self:attr("discharge_overcharge"))
-			self.discharge_overcharge = nil
-		end		
+		-- this handles Mind Storm
+		if self:isTalentActive(self.T_MIND_STORM) then
+			local t, p = self:getTalentFromId(self.T_MIND_STORM), self:isTalentActive(self.T_MIND_STORM)
+			if self:getFeedback() >= 1 or p.overcharge >= 1 then
+				t.doMindStorm(self, t, p)
+			end
+		end
 		
 		self:triggerHook{"Actor:actBase:Effects"}
 	end
@@ -559,6 +564,7 @@ function _M:act()
 	end
 	if self:attr("stoned") then self.energy.value = 0 end
 	if self:attr("dazed") then self.energy.value = 0 end
+	if self:attr("sleep") then self.energy.value = 0 end
 	if self:attr("time_stun") then self.energy.value = 0 end
 	if self:attr("time_prison") then self.energy.value = 0 end
 
@@ -935,6 +941,10 @@ function _M:move(x, y, force)
 	if moved and self:isTalentActive(self.T_BODY_OF_STONE) then
 		self:forceUseTalent(self.T_BODY_OF_STONE, {ignore_energy=true})
 	end
+	
+	if moved then
+		self:breakPsionicChannel()
+	end
 
 	if not forced and moved and ox and oy and (ox ~= self.x or oy ~= self.y) and self:knowTalent(self.T_LIGHT_OF_FOOT) then
 		self:incStamina(self:getTalentLevelRaw(self.T_LIGHT_OF_FOOT) * 0.2)
@@ -1416,7 +1426,7 @@ function _M:onHeal(value, src)
 		self:setEffect(self.EFF_REGENERATION, 6, {power=(value * self.fungal_growth / 100) / 6, no_wild_growth=true})
 	end
 
-	-- Psionic Balance
+	-- Solipsism healing
 	if self:knowTalent(self.T_SOLIPSISM) then
 		local t = self:getTalentFromId(self.T_SOLIPSISM)
 		local ratio = t.getConversionRatio(self, t)
@@ -1463,6 +1473,14 @@ function _M:onTakeHit(value, src)
 	if self:hasEffect(self.EFF_SPACETIME_TUNING) then
 		self:removeEffect(self.EFF_SPACETIME_TUNING)
 	end
+	if self:hasEffect(self.EFF_SLEEP) then
+		local p = self:hasEffect(self.EFF_SLEEP)
+		if p.power * p.dur < value then
+			self:removeEffect(self.EFF_SLEEPING)
+		else
+			p.dur = p.dur - math.ceil(value/p.power)
+		end
+	end
 
 	-- Remove domination hex
 	if self:hasEffect(self.EFF_DOMINATION_HEX) and src and src == self:hasEffect(self.EFF_DOMINATION_HEX).src then
@@ -1667,15 +1685,10 @@ function _M:onTakeHit(value, src)
 		local feedback_gain = value * ratio
 		self:incFeedback(feedback_gain)
 		-- Trigger backlash retribution damage
-		if self:isTalentActive(self.T_BACKLASH) and self:getFeedback() >= 1 then
-			local t = self:getTalentFromId(self.T_BACKLASH)
-			t.doBacklash(self, src, t)
-			if self:knowTalent(self.T_OVERCHARGE) then
-				local t = self:getTalentFromId(self.T_OVERCHARGE)
-				local overcharge = math.floor((feedback_gain + self:getFeedback() - self:getMaxFeedback()) / t.getOverchargeRatio(self, t))
-				if overcharge > 0 then
-					self.discharge_overcharge = math.max(self.discharge_overcharge or 0 + overcharge, t.getTargetCount(self, t))
-				end
+		if self:knowTalent(self.T_BACKLASH) then
+			if src.y and src.x and not src.dead and self:reactionToward(src) < 0 then
+				local t = self:getTalentFromId(self.T_BACKLASH)
+				t.doBacklash(self, src, t)
 			end
 		end
 	end
@@ -1706,7 +1719,7 @@ function _M:onTakeHit(value, src)
 			self:incPsi(-damage_to_psi)
 		end
 		if damage_to_psi > 0 then
-			game.logSeen(self, "%s's mind suffers #BLUE#%d psi#LAST# damage from the attack.", self.name:capitalize(), damage_to_psi)
+			game.logSeen(self, "%s's mind suffers #YELLOW#%d psi#LAST# damage from the attack.", self.name:capitalize(), damage_to_psi)
 		end
 		value = value - damage_to_psi
 	end
@@ -3022,6 +3035,14 @@ end
 
 function _M:incFeedback(v, set)
 	if not set then
+		local p = self:isTalentActive(self.T_MIND_STORM)
+		if p then
+			local t = self:getTalentFromId(self.T_MIND_STORM)
+			local overcharge_gain = math.floor((v + self:getFeedback() - self:getMaxFeedback()) / t.getOverchargeRatio(self, t))
+			if overcharge_gain > 0 then
+				p.overcharge = p.overcharge + overcharge_gain
+			end
+		end
 		self.psionic_feedback = util.bound(self.psionic_feedback + v, 0, self:getMaxFeedback())
 	else
 		self.psionic_feedback = math.min(v, self:getMaxFeedback())
@@ -3341,6 +3362,9 @@ function _M:postUseTalent(ab, ret)
 			if ab.sustain_psi then
 				trigger = true; self:incMaxPsi(-ab.sustain_psi)
 			end
+			if ab.sustain_feedback then
+				trigger = true; self:incMaxFeedback(-ab.sustain_feedback)
+			end
 		else
 			if ab.sustain_mana then
 				self:incMaxMana(ab.sustain_mana)
@@ -3369,6 +3393,9 @@ function _M:postUseTalent(ab, ret)
 			if ab.sustain_psi then
 				self:incMaxPsi(ab.sustain_psi)
 			end
+			if ab.sustain_feedback then
+				self:incMaxFeedback(ab.sustain_feedback)
+			end
 		end
 	elseif not self:attr("force_talent_ignore_ressources") then
 		if ab.mana and not self:attr("zero_resource_cost") then
@@ -3417,6 +3444,7 @@ function _M:postUseTalent(ab, ret)
 	if ab.id ~= self.T_GATHER_THE_THREADS and ab.id ~= self.T_SPACETIME_TUNING and ab.is_spell then self:breakChronoSpells() end
 	if ab.id ~= self.T_RELOAD then self:breakReloading() end
 	self:breakStepUp()
+	if not ab.no_break_channel then self:breakPsionicChannel(ab.id) end
 
 	if ab.id ~= self.T_REDUX and self:hasEffect(self.EFF_REDUX) and ab.type[1]:find("^chronomancy/") and ab.mode == "activated" and self:getTalentLevel(self.T_REDUX) >= self:getTalentLevel(ab.id) then
 		self:removeEffect(self.EFF_REDUX)
@@ -3508,6 +3536,13 @@ function _M:breakChronoSpells()
 	end
 end
 
+--- Break Psionic Channels
+function _M:breakPsionicChannel(talent)
+	if self:isTalentActive(self.T_MIND_STORM) and talent ~= self.T_MIND_STORM then
+		self:forceUseTalent(self.T_MIND_STORM, {ignore_energy=true})
+	end
+end
+
 --- Return the full description of a talent
 -- You may overload it to add more data (like power usage, ...)
 function _M:getTalentFullDescription(t, addlevel, config)
@@ -3840,6 +3875,7 @@ function _M:canBe(what)
 	if what == "disarm" and rng.percent(100 * (self:attr("disarm_immune") or 0)) then return false end
 	if what == "pin" and rng.percent(100 * (self:attr("pin_immune") or 0)) and not self:attr("levitation") then return false end
 	if what == "stun" and rng.percent(100 * (self:attr("stun_immune") or 0)) then return false end
+	if what == "sleep" and rng.percent(100 * (self:attr("sleep_immune") or 0)) then return false end
 	if what == "fear" and rng.percent(100 * (self:attr("fear_immune") or 0)) then return false end
 	if what == "knockback" and (rng.percent(100 * (self:attr("knockback_immune") or 0)) or self:attr("never_move")) then return false end
 	if what == "stone" and rng.percent(100 * (self:attr("stone_immune") or 0)) then return false end
diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index 4486f9a19cb299904554766e528ff96af9a9fa96..8bdad5e15b0db75769ab0661f88029c46610d269 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -1006,6 +1006,7 @@ function _M:playerUseItem(object, item, inven)
 				self:breakStepUp()
 				self:breakStealth()
 				self:breakLightningSpeed()
+				self:breakPsionicChannel()
 				return true
 			end
 
@@ -1013,6 +1014,7 @@ function _M:playerUseItem(object, item, inven)
 			self:breakStealth()
 			self:breakLightningSpeed()
 			self:breakReloading()
+			self:breakPsionicChannel()
 			self.changed = true
 		end)
 		local ok, ret = coroutine.resume(co)
diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua
index ab0111b2f7d1332d237da48b638c24a696660b44..3bbc36461a5607c840903bf24b5c6c4c139abf44 100644
--- a/game/modules/tome/class/interface/Combat.lua
+++ b/game/modules/tome/class/interface/Combat.lua
@@ -79,7 +79,7 @@ function _M:attackTarget(target, damtype, mult, noenergy)
 
 	-- Break before we do the blow, because it might start step up, we dont want to insta-cancel it
 	self:breakStepUp()
-
+	
 	if self:attr("feared") then
 		if not noenergy then
 			self:useEnergy(game.energy_to_act * speed)
@@ -373,6 +373,7 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 		if crit then game.logSeen(self, "#{bold}#%s performs a critical strike!#{normal}#", self.name:capitalize()) end
 
 		-- Phasing, percent of weapon damage bypasses shields
+		-- It's done like this because onTakeHit has no knowledge of the weapon
 		if weapon and weapon.phasing then
 			self:attr("damage_shield_penetrate", weapon.phasing)
 		end
@@ -381,10 +382,12 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam)
 		-- Reduces base damage but converts it into another damage type
 		local conv_dam
 		local conv_damtype
+		local total_conversion = 0
 		if weapon and weapon.convert_damage then
 			for typ, conv in pairs(weapon.convert_damage) do
 				if dam > 0 then
 					conv_dam = math.min(dam, dam * (conv / 100))
+					total_conversion = total_conversion + conv_dam
 					conv_damtype = typ
 					dam = dam - conv_dam
 					if conv_dam > 0 then
@@ -397,11 +400,17 @@ 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
-
+		
+		-- remove phasing
 		if weapon and weapon.phasing then
 			self:attr("damage_shield_penetrate", -weapon.phasing)
 		end
 
+		-- add damage conversion back in so the total damage still gets passed
+		if total_conversion > 0 then
+			dam = dam + total_conversion
+		end
+				
 		hitted = true
 	else
 		local srcname = game.level.map.seens(self.x, self.y) and self.name:capitalize() or "Something"
diff --git a/game/modules/tome/data/birth/classes/psionic.lua b/game/modules/tome/data/birth/classes/psionic.lua
index bcf539cc35625fec96ebefc9ab6b0791655cf3e0..48b9e75ce56eb3b15084cb835f495a7c410fbe9b 100644
--- a/game/modules/tome/data/birth/classes/psionic.lua
+++ b/game/modules/tome/data/birth/classes/psionic.lua
@@ -167,20 +167,19 @@ newBirthDescriptor{
 	stats = { str=0, wil=5, cun=4, },
 	talents_types = {
 		-- class
-		["psionic/discharge"]={true, 0.3},
 		["psionic/distortion"]={true, 0.3},
 		["psionic/slumber"]={true, 0.3},
 		["psionic/solipsism"]={true, 0.3},
 		["psionic/thought-forms"]={true, 0.3},
 		
 		-- generic
+		["psionic/feedback"]={true, 0.3},
 		["psionic/mentalism"]={true, 0.3},
 		["cunning/survival"]={true, 0},
-		["psionic/feedback"]={true, 0.3},
 		
 		-- locked trees
-		["psionic/psychic-assault"]={false, 0},
-		["psionic/nightmare"]={false, 0.3},
+		["psionic/discharge"]={false, 0.3},
+		["psionic/nightmare"]={true, 0.3},
 		-- generic
 		["psionic/trance"]={false, 0.3},
 		
diff --git a/game/modules/tome/data/general/npcs/horror.lua b/game/modules/tome/data/general/npcs/horror.lua
index fb24ca7b99799bd53af59e6b12fc5bbcd481fb07..bb79d34e25fff3dc1ff714b8ce5d8f99bd993640 100644
--- a/game/modules/tome/data/general/npcs/horror.lua
+++ b/game/modules/tome/data/general/npcs/horror.lua
@@ -144,11 +144,11 @@ newEntity{ base = "BASE_NPC_HORROR",
 newEntity{ base = "BASE_NPC_HORROR",
 	name = "nightmare horror", color=colors.DARK_GREY,
 	desc ="A shifting form of darkest night that seems to reflect your deepest fears.",
-	level_range = {30, nil}, exp_worth = 1,
+	level_range = {35, nil}, exp_worth = 1,
 	mana_regen = 10,
 	negative_regen = 10,
 	hate_regen = 10,
-	rarity = 5,
+	rarity = 8,
 	rank = 3,
 	max_life = resolvers.rngavg(150,170),
 	life_rating = 16,
diff --git a/game/modules/tome/data/general/objects/egos/ammo.lua b/game/modules/tome/data/general/objects/egos/ammo.lua
index a1cb05c82f88c58933baa26e668f59294737de9e..fbb8c50c3e520256a37988aba7498be33660cfe7 100644
--- a/game/modules/tome/data/general/objects/egos/ammo.lua
+++ b/game/modules/tome/data/general/objects/egos/ammo.lua
@@ -709,7 +709,7 @@ newEntity{
 	name = "thought-forged ", prefix=true, instant_resolve=true,
 	keywords = {thought=true},
 	level_range = {1, 50},
-	rarity = 5,
+	rarity = 15,
 	cost = 10,
 	combat = {
 		ranged_project={
diff --git a/game/modules/tome/data/general/objects/egos/weapon.lua b/game/modules/tome/data/general/objects/egos/weapon.lua
index 4dddf73f7673efafb1289830933eae44039a4d4f..50c91e56fcd271a4f0e0378dff6b95360c8f208d 100644
--- a/game/modules/tome/data/general/objects/egos/weapon.lua
+++ b/game/modules/tome/data/general/objects/egos/weapon.lua
@@ -801,7 +801,7 @@ newEntity{
 	name = "thought-forged ", prefix=true, instant_resolve=true,
 	keywords = {thought=true},
 	level_range = {1, 50},
-	rarity = 5,
+	rarity = 15,
 	cost = 10,
 	combat = {
 		melee_project={
diff --git a/game/modules/tome/data/general/objects/random-artifacts/ammo.lua b/game/modules/tome/data/general/objects/random-artifacts/ammo.lua
index 209228253ba448c6fd735229bb2fb8b2eeef3f9d..ece3d3b8d89f120bcb8c7741b34073efcb1b7dc1 100644
--- a/game/modules/tome/data/general/objects/random-artifacts/ammo.lua
+++ b/game/modules/tome/data/general/objects/random-artifacts/ammo.lua
@@ -44,7 +44,7 @@ newEntity{ theme={physical=true}, name="travel speed", points = 1, rarity = 10,
 newEntity{ theme={physical=true}, name="physical ranged", points = 1, rarity = 18, level_range = {1, 50},
 	combat = { ranged_project = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind ranged", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind ranged", points = 1, rarity = 24, level_range = {1, 50},
 	combat = { ranged_project = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },
 }
 newEntity{ theme={acid=true}, name="acid ranged", points = 1, rarity = 18, level_range = {1, 50},
@@ -71,10 +71,10 @@ newEntity{ theme={blight=true, spell=true}, name="blight ranged", points = 1, ra
 newEntity{ theme={nature=true}, name="nature ranged", points = 1, rarity = 18, level_range = {1, 50},
 	combat = { ranged_project = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={arcane=true, spell=true}, name="arcane ranged", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={arcane=true, spell=true}, name="arcane ranged", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { ranged_project = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal ranged", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal ranged", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { ranged_project = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },
 }
 ----------------------------------------------------------------
@@ -104,115 +104,115 @@ newEntity{ theme={nature=true}, name="insidious poison ranged", points = 2, rari
 ----------------------------------------------------------------
 -- Melee damage burst
 ----------------------------------------------------------------
-newEntity{ theme={physical=true}, name="physical burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={physical=true}, name="physical burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind burst", points = 2, rarity = 30, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={acid=true}, name="acid burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.ACID] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.LIGHTNING] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={fire=true}, name="fire burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.FIRE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={cold=true}, name="cold burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.COLD] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={light=true}, name="light burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.LIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={dark=true}, name="dark burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.DARKNESS] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={blight=true}, name="blight burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.BLIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={nature=true}, name="nature burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane burst", points = 4, rarity = 30, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal burst", points = 4, rarity = 30, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },
 }
 ----------------------------------------------------------------
 -- Melee damage burst(crit)
 ----------------------------------------------------------------
-newEntity{ theme={physical=true}, name="physical burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={physical=true}, name="physical burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind burst (crit)", points = 3, rarity = 36, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={acid=true}, name="acid burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.ACID] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.LIGHTNING] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={fire=true}, name="fire burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.FIRE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={cold=true}, name="cold burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.COLD] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={light=true}, name="light burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.LIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={dark=true}, name="dark burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.DARKNESS] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={blight=true}, name="blight burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.BLIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={nature=true}, name="nature burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane burst (crit)", points = 6, rarity = 36, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal burst (crit)", points = 6, rarity = 36, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },
 }
 ----------------------------------------------------------------
 -- Melee damage conversion
 ----------------------------------------------------------------
-newEntity{ theme={mind=true, mental=true}, name="mind conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind conversion", points = 1, rarity = 36, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.MIND] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={acid=true}, name="acid conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.ACID] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.LIGHTNING] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={fire=true}, name="fire conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.FIRE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={cold=true}, name="cold conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.COLD] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={light=true}, name="light conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.LIGHT] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={dark=true}, name="dark conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.DARKNESS] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={blight=true}, name="blight conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.BLIGHT] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={nature=true}, name="nature conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.NATURE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane conversion", points = 2, rarity = 36, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.ARCANE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal conversion", points = 2, rarity = 36, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.TEMPORAL] = resolvers.randartmax(10, 50), }, },
 }
 ----------------------------------------------------------------
diff --git a/game/modules/tome/data/general/objects/random-artifacts/generic.lua b/game/modules/tome/data/general/objects/random-artifacts/generic.lua
index 99543d1a3e3ac3d3dd2fcb059cbcc05c52470954..aae3c134066ee58030c6477138d7daccc7f7223d 100644
--- a/game/modules/tome/data/general/objects/random-artifacts/generic.lua
+++ b/game/modules/tome/data/general/objects/random-artifacts/generic.lua
@@ -290,7 +290,7 @@ newEntity{ theme={defense=true, antimagic=true, temporal=true}, name="resist tem
 newEntity{ theme={physical=true}, name="physical melee", points = 2, rarity = 18, level_range = {1, 50},
 	wielder = { melee_project = {[DamageType.PHYSICAL] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind melee", points = 2, rarity = 18, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind melee", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { melee_project = {[DamageType.MIND] = resolvers.randartmax(2, 20), }, },
 }
 newEntity{ theme={acid=true}, name="acid melee", points = 2, rarity = 18, level_range = {1, 50},
@@ -317,10 +317,10 @@ newEntity{ theme={blight=true, spell=true}, name="blight melee", points = 2, rar
 newEntity{ theme={nature=true}, name="nature melee", points = 2, rarity = 18, level_range = {1, 50},
 	wielder = { melee_project = {[DamageType.NATURE] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={arcane=true, spell=true}, name="arcane melee", points = 2, rarity = 18, level_range = {1, 50},
+newEntity{ theme={arcane=true, spell=true}, name="arcane melee", points = 4, rarity = 24, level_range = {1, 50},
 	wielder = { melee_project = {[DamageType.ARCANE] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal melee", points = 2, rarity = 18, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal melee", points = 4, rarity = 24, level_range = {1, 50},
 	wielder = { melee_project = {[DamageType.TEMPORAL] = resolvers.randartmax(2, 20), }, },
 }
 ----------------------------------------------------------------
@@ -329,7 +329,7 @@ newEntity{ theme={temporal=true}, name="temporal melee", points = 2, rarity = 18
 newEntity{ theme={physical=true}, name="physical retribution", points = 1, rarity = 18, level_range = {1, 50},
 	wielder = { on_melee_hit = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 20), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind retribution", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind retribution", points = 1, rarity = 24, level_range = {1, 50},
 	wielder = { on_melee_hit = {[DamageType.MIND] = resolvers.randartmax(4, 20), }, },
 }
 newEntity{ theme={acid=true}, name="acid retribution", points = 1, rarity = 18, level_range = {1, 50},
@@ -356,10 +356,10 @@ newEntity{ theme={blight=true, spell=true}, name="blight retribution", points =
 newEntity{ theme={nature=true}, name="nature retribution", points = 1, rarity = 18, level_range = {1, 50},
 	wielder = { on_melee_hit = {[DamageType.NATURE] = resolvers.randartmax(4, 20), }, },
 }
-newEntity{ theme={arcane=true, spell=true}, name="arcane retribution", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={arcane=true, spell=true}, name="arcane retribution", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { on_melee_hit = {[DamageType.ARCANE] = resolvers.randartmax(4, 20), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal retribution", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal retribution", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { on_melee_hit = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 20), }, },
 }
 
diff --git a/game/modules/tome/data/general/objects/random-artifacts/gloves.lua b/game/modules/tome/data/general/objects/random-artifacts/gloves.lua
index 7e94f2784c5b60c8670b82e5a26228e0f1fb19d1..64ff52a41370bd3475b508216249ea20931db449 100644
--- a/game/modules/tome/data/general/objects/random-artifacts/gloves.lua
+++ b/game/modules/tome/data/general/objects/random-artifacts/gloves.lua
@@ -43,7 +43,7 @@ newEntity{ theme={physical=true, spell=true}, name="phasing", points = 1, rarity
 newEntity{ theme={physical=true}, name="physical melee", points = 1, rarity = 18, level_range = {1, 50},
 	wielder = { combat = { melee_project = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={mind=true, mental=true}, name="mind melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind melee", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { melee_project = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },},
 }
 newEntity{ theme={acid=true}, name="acid melee", points = 1, rarity = 18, level_range = {1, 50},
@@ -70,10 +70,10 @@ newEntity{ theme={blight=true, spell=true}, name="blight melee", points = 1, rar
 newEntity{ theme={nature=true}, name="nature melee", points = 1, rarity = 18, level_range = {1, 50},
 	wielder = { combat = { melee_project = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={arcane=true, spell=true}, name="arcane melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={arcane=true, spell=true}, name="arcane melee", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { melee_project = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={temporal=true}, name="temporal melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal melee", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { melee_project = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },},
 }
 ----------------------------------------------------------------
@@ -103,121 +103,118 @@ newEntity{ theme={nature=true, antimagic=true}, name="slime melee", points = 2,
 newEntity{ theme={nature=true}, name="insidious poison melee", points = 2, rarity = 20, level_range = {1, 50},
 	wielder = { combat = { melee_project = {[DamageType.INSIDIOUS_POISON] = resolvers.randartmax(10, 50), }, },},  -- this gets divided by 7 for damage
 }
-newEntity{ theme={temporal=true}, name="wasting melee", points = 2, rarity = 20, level_range = {1, 50},
-	wielder = { combat = { melee_project = {[DamageType.WASTING] = resolvers.randartmax(4, 40), }, },},
-}
 ----------------------------------------------------------------
 -- Melee damage burst
 ----------------------------------------------------------------
-newEntity{ theme={physical=true}, name="physical burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={physical=true}, name="physical burst", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={mind=true, mental=true}, name="mind burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind burst", points = 2, rarity = 30, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={acid=true}, name="acid burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid burst", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.ACID] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={lightning=true}, name="lightning burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning burst", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.LIGHTNING] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={fire=true}, name="fire burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire burst", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.FIRE] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={cold=true}, name="cold burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold burst", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.COLD] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={light=true}, name="light burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light burst", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.LIGHT] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={dark=true}, name="dark burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark burst", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.DARKNESS] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={blight=true}, name="blight burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight burst", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.BLIGHT] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={nature=true}, name="nature burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature burst", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={arcane=true}, name="arcane burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane burst", points = 4, rarity = 30, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={temporal=true}, name="temporal burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal burst", points = 4, rarity = 30, level_range = {1, 50},
 	wielder = { combat = { burst_on_hit = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },},
 }
 ----------------------------------------------------------------
 -- Melee damage burst(crit)
 ----------------------------------------------------------------
-newEntity{ theme={physical=true}, name="physical burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={physical=true}, name="physical burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={mind=true, mental=true}, name="mind burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind burst (crit)", points = 3, rarity = 36, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={acid=true}, name="acid burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.ACID] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={lightning=true}, name="lightning burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.LIGHTNING] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={fire=true}, name="fire burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.FIRE] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={cold=true}, name="cold burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.COLD] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={light=true}, name="light burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.LIGHT] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={dark=true}, name="dark burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.DARKNESS] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={blight=true}, name="blight burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.BLIGHT] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={nature=true}, name="nature burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={arcane=true}, name="arcane burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane burst (crit)", points = 6, rarity = 36, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },},
 }
-newEntity{ theme={temporal=true}, name="temporal burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal burst (crit)", points = 6, rarity = 36, level_range = {1, 50},
 	wielder = { combat = { burst_on_crit = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },},
 }
 ----------------------------------------------------------------
 -- Melee damage conversion
 ----------------------------------------------------------------
-newEntity{ theme={mind=true, mental=true}, name="mind conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind conversion", points = 1, rarity = 36, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.MIND] = resolvers.randartmax(10, 50), }, },},
 }
-newEntity{ theme={acid=true}, name="acid conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid conversion", points = 1, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.ACID] = resolvers.randartmax(10, 50), }, },},
 }
-newEntity{ theme={lightning=true}, name="lightning conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning conversion", points = 1, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.LIGHTNING] = resolvers.randartmax(10, 50), }, },},
 }
-newEntity{ theme={fire=true}, name="fire conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire conversion", points = 1, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.FIRE] = resolvers.randartmax(10, 50), }, },},
 }
-newEntity{ theme={cold=true}, name="cold conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold conversion", points = 1, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.COLD] = resolvers.randartmax(10, 50), }, },},
 }
-newEntity{ theme={light=true}, name="light conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light conversion", points = 1, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.LIGHT] = resolvers.randartmax(10, 50), }, },},
 }
-newEntity{ theme={dark=true}, name="dark conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark conversion", points = 1, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.DARKNESS] = resolvers.randartmax(10, 50), }, },},
 }
-newEntity{ theme={blight=true}, name="blight conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight conversion", points = 1, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.BLIGHT] = resolvers.randartmax(10, 50), }, },},
 }
-newEntity{ theme={nature=true}, name="nature conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature conversion", points = 1, rarity = 28, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.NATURE] = resolvers.randartmax(10, 50), }, },},
 }
-newEntity{ theme={arcane=true}, name="arcane conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane conversion", points = 2, rarity = 36, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.ARCANE] = resolvers.randartmax(10, 50), }, },},
 }
-newEntity{ theme={temporal=true}, name="temporal conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal conversion", points = 2, rarity = 36, level_range = {1, 50},
 	wielder = { combat = { convert_damage = {[DamageType.TEMPORAL] = resolvers.randartmax(10, 50), }, },},
 }
 ----------------------------------------------------------------
diff --git a/game/modules/tome/data/general/objects/random-artifacts/melee.lua b/game/modules/tome/data/general/objects/random-artifacts/melee.lua
index ab9253112bb56705a382a79dc9618772aa74f515..29de0da320866faac602a41501e9279aac6ca62f 100644
--- a/game/modules/tome/data/general/objects/random-artifacts/melee.lua
+++ b/game/modules/tome/data/general/objects/random-artifacts/melee.lua
@@ -43,7 +43,7 @@ newEntity{ theme={physical=true, spell=true}, name="phasing", points = 1, rarity
 newEntity{ theme={physical=true}, name="physical melee", points = 1, rarity = 18, level_range = {1, 50},
 	combat = { melee_project = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind melee", points = 1, rarity = 24, level_range = {1, 50},
 	combat = { melee_project = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },
 }
 newEntity{ theme={acid=true}, name="acid melee", points = 1, rarity = 18, level_range = {1, 50},
@@ -70,10 +70,10 @@ newEntity{ theme={blight=true, spell=true}, name="blight melee", points = 1, rar
 newEntity{ theme={nature=true}, name="nature melee", points = 1, rarity = 18, level_range = {1, 50},
 	combat = { melee_project = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={arcane=true, spell=true}, name="arcane melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={arcane=true, spell=true}, name="arcane melee", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { melee_project = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal melee", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { melee_project = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },
 }
 ----------------------------------------------------------------
@@ -103,115 +103,115 @@ newEntity{ theme={nature=true}, name="insidious poison melee", points = 2, rarit
 ----------------------------------------------------------------
 -- Melee damage burst
 ----------------------------------------------------------------
-newEntity{ theme={physical=true}, name="physical burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={physical=true}, name="physical burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind burst", points = 2, rarity = 30, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={acid=true}, name="acid burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.ACID] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.LIGHTNING] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={fire=true}, name="fire burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.FIRE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={cold=true}, name="cold burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.COLD] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={light=true}, name="light burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.LIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={dark=true}, name="dark burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.DARKNESS] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={blight=true}, name="blight burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.BLIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={nature=true}, name="nature burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane burst", points = 4, rarity = 30, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal burst", points = 4, rarity = 30, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },
 }
 ----------------------------------------------------------------
 -- Melee damage burst(crit)
 ----------------------------------------------------------------
-newEntity{ theme={physical=true}, name="physical burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={physical=true}, name="physical burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind burst (crit)", points = 3, rarity = 36, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={acid=true}, name="acid burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.ACID] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.LIGHTNING] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={fire=true}, name="fire burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.FIRE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={cold=true}, name="cold burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.COLD] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={light=true}, name="light burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.LIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={dark=true}, name="dark burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.DARKNESS] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={blight=true}, name="blight burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.BLIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={nature=true}, name="nature burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane burst (crit)", points = 6, rarity = 36, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal burst (crit)", points = 6, rarity = 36, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },
 }
 ----------------------------------------------------------------
 -- Melee damage conversion
 ----------------------------------------------------------------
-newEntity{ theme={mind=true, mental=true}, name="mind conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.MIND] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={acid=true}, name="acid conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid conversion", points = 1, rarity = 36, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.ACID] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.LIGHTNING] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={fire=true}, name="fire conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.FIRE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={cold=true}, name="cold conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.COLD] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={light=true}, name="light conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.LIGHT] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={dark=true}, name="dark conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.DARKNESS] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={blight=true}, name="blight conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.BLIGHT] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={nature=true}, name="nature conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.NATURE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane conversion", points = 2, rarity = 36, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.ARCANE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal conversion", points = 2, rarity = 36, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.TEMPORAL] = resolvers.randartmax(10, 50), }, },
 }
 ----------------------------------------------------------------
diff --git a/game/modules/tome/data/general/objects/random-artifacts/ranged.lua b/game/modules/tome/data/general/objects/random-artifacts/ranged.lua
index 515ab9de88b8c89a45c9bb9faf871abe64258874..b0afb970a7c2858cb40466d6c1962f029c39df02 100644
--- a/game/modules/tome/data/general/objects/random-artifacts/ranged.lua
+++ b/game/modules/tome/data/general/objects/random-artifacts/ranged.lua
@@ -288,7 +288,7 @@ newEntity{ theme={defense=true, antimagic=true, temporal=true}, name="resist tem
 newEntity{ theme={physical=true}, name="physical melee", points = 1, rarity = 18, level_range = {1, 50},
 	wielder = { ranged_project = {[DamageType.PHYSICAL] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind melee", points = 1, rarity = 24, level_range = {1, 50},
 	wielder = { ranged_project = {[DamageType.MIND] = resolvers.randartmax(2, 20), }, },
 }
 newEntity{ theme={acid=true}, name="acid melee", points = 1, rarity = 18, level_range = {1, 50},
@@ -315,10 +315,10 @@ newEntity{ theme={blight=true, spell=true}, name="blight melee", points = 1, rar
 newEntity{ theme={nature=true}, name="nature melee", points = 1, rarity = 18, level_range = {1, 50},
 	wielder = { ranged_project = {[DamageType.NATURE] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={arcane=true, spell=true}, name="arcane melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={arcane=true, spell=true}, name="arcane melee", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { ranged_project = {[DamageType.ARCANE] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal melee", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { ranged_project = {[DamageType.TEMPORAL] = resolvers.randartmax(2, 20), }, },
 }
 ----------------------------------------------------------------
@@ -348,115 +348,115 @@ newEntity{ theme={nature=true}, name="insidious poison ranged", points = 2, rari
 ----------------------------------------------------------------
 -- damage burst
 ----------------------------------------------------------------
-newEntity{ theme={physical=true}, name="physical burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={physical=true}, name="physical burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.PHYSICAL] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind burst", points = 2, rarity = 30, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.MIND] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={acid=true}, name="acid burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.ACID] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.LIGHTNING] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={fire=true}, name="fire burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.FIRE] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={cold=true}, name="cold burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.COLD] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={light=true}, name="light burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.LIGHT] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={dark=true}, name="dark burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.DARKNESS] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={blight=true}, name="blight burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.BLIGHT] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={nature=true}, name="nature burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature burst", points = 2, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.NATURE] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane burst", points = 4, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.ARCANE] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal burst", points = 4, rarity = 24, level_range = {1, 50},
 	combat = { burst_on_hit = {[DamageType.TEMPORAL] = resolvers.randartmax(2, 20), }, },
 }
 ----------------------------------------------------------------
 -- damage burst(crit)
 ----------------------------------------------------------------
-newEntity{ theme={physical=true}, name="physical burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={physical=true}, name="physical burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.PHYSICAL] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind burst (crit)", points = 3, rarity = 36, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.MIND] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={acid=true}, name="acid burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.ACID] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.LIGHTNING] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={fire=true}, name="fire burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.FIRE] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={cold=true}, name="cold burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.COLD] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={light=true}, name="light burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.LIGHT] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={dark=true}, name="dark burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.DARKNESS] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={blight=true}, name="blight burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.BLIGHT] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={nature=true}, name="nature burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.NATURE] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane burst (crit)", points = 6, rarity = 36, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.ARCANE] = resolvers.randartmax(2, 20), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal burst (crit)", points = 6, rarity = 36, level_range = {1, 50},
 	combat = { burst_on_crit = {[DamageType.TEMPORAL] = resolvers.randartmax(2, 20), }, },
 }
 ----------------------------------------------------------------
 -- damage conversion
 ----------------------------------------------------------------
-newEntity{ theme={mind=true, mental=true}, name="mind conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind conversion", points = 1, rarity = 36, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.MIND] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={acid=true}, name="acid conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.ACID] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.LIGHTNING] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={fire=true}, name="fire conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.FIRE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={cold=true}, name="cold conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.COLD] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={light=true}, name="light conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.LIGHT] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={dark=true}, name="dark conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.DARKNESS] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={blight=true}, name="blight conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.BLIGHT] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={nature=true}, name="nature conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature conversion", points = 1, rarity = 28, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.NATURE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane conversion", points = 2, rarity = 36, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.ARCANE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal conversion", points = 2, rarity = 36, level_range = {1, 50},
 	combat = { convert_damage = {[DamageType.TEMPORAL] = resolvers.randartmax(10, 50), }, },
 }
 ----------------------------------------------------------------
@@ -465,7 +465,7 @@ newEntity{ theme={temporal=true}, name="temporal conversion", points = 1, rarity
 newEntity{ theme={physical=true}, name="physical retribution", points = 1, rarity = 18, level_range = {1, 50},
 	wielder = { on_melee_hit = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 20), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind retribution", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind retribution", points = 1, rarity = 24, level_range = {1, 50},
 	wielder = { on_melee_hit = {[DamageType.MIND] = resolvers.randartmax(4, 20), }, },
 }
 newEntity{ theme={acid=true}, name="acid retribution", points = 1, rarity = 18, level_range = {1, 50},
@@ -492,10 +492,10 @@ newEntity{ theme={blight=true, spell=true}, name="blight retribution", points =
 newEntity{ theme={nature=true}, name="nature retribution", points = 1, rarity = 18, level_range = {1, 50},
 	wielder = { on_melee_hit = {[DamageType.NATURE] = resolvers.randartmax(4, 20), }, },
 }
-newEntity{ theme={arcane=true, spell=true}, name="arcane retribution", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={arcane=true, spell=true}, name="arcane retribution", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { on_melee_hit = {[DamageType.ARCANE] = resolvers.randartmax(4, 20), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal retribution", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal retribution", points = 2, rarity = 24, level_range = {1, 50},
 	wielder = { on_melee_hit = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 20), }, },
 }
 
diff --git a/game/modules/tome/data/general/objects/random-artifacts/shields.lua b/game/modules/tome/data/general/objects/random-artifacts/shields.lua
index c4267b8e38e181513b60dd495e42ea999847fbfd..5b6a658588fa0af4dd292991fc233a3784b56c37 100644
--- a/game/modules/tome/data/general/objects/random-artifacts/shields.lua
+++ b/game/modules/tome/data/general/objects/random-artifacts/shields.lua
@@ -43,7 +43,7 @@ newEntity{ theme={physical=true, spell=true}, name="phasing", points = 1, rarity
 newEntity{ theme={physical=true}, name="physical melee", points = 1, rarity = 18, level_range = {1, 50},
 	special_combat = { melee_project = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind melee", points = 1, rarity = 24, level_range = {1, 50},
 	special_combat = { melee_project = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },
 }
 newEntity{ theme={acid=true}, name="acid melee", points = 1, rarity = 18, level_range = {1, 50},
@@ -70,10 +70,10 @@ newEntity{ theme={blight=true, spell=true}, name="blight melee", points = 1, rar
 newEntity{ theme={nature=true}, name="nature melee", points = 1, rarity = 18, level_range = {1, 50},
 	special_combat = { melee_project = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={arcane=true, spell=true}, name="arcane melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={arcane=true, spell=true}, name="arcane melee", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { melee_project = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal melee", points = 1, rarity = 18, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal melee", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { melee_project = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },
 }
 ----------------------------------------------------------------
@@ -103,121 +103,118 @@ newEntity{ theme={nature=true, antimagic=true}, name="slime melee", points = 2,
 newEntity{ theme={nature=true}, name="insidious poison melee", points = 2, rarity = 20, level_range = {1, 50},
 	special_combat = { melee_project = {[DamageType.INSIDIOUS_POISON] = resolvers.randartmax(10, 50), }, },  -- this gets divided by 7 for damage
 }
-newEntity{ theme={temporal=true}, name="wasting melee", points = 2, rarity = 20, level_range = {1, 50},
-	special_combat = { melee_project = {[DamageType.WASTING] = resolvers.randartmax(4, 40), }, },
-}
 ----------------------------------------------------------------
 -- Melee damage burst
 ----------------------------------------------------------------
-newEntity{ theme={physical=true}, name="physical burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={physical=true}, name="physical burst", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind burst", points = 2, rarity = 30, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={acid=true}, name="acid burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid burst", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.ACID] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning burst", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.LIGHTNING] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={fire=true}, name="fire burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire burst", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.FIRE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={cold=true}, name="cold burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold burst", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.COLD] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={light=true}, name="light burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light burst", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.LIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={dark=true}, name="dark burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark burst", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.DARKNESS] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={blight=true}, name="blight burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight burst", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.BLIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={nature=true}, name="nature burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature burst", points = 2, rarity = 24, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane burst", points = 4, rarity = 30, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal burst", points = 2, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal burst", points = 4, rarity = 30, level_range = {1, 50},
 	special_combat = { burst_on_hit = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },
 }
 ----------------------------------------------------------------
 -- Melee damage burst(crit)
 ----------------------------------------------------------------
-newEntity{ theme={physical=true}, name="physical burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={physical=true}, name="physical burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.PHYSICAL] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={mind=true, mental=true}, name="mind burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind burst (crit)", points = 3, rarity = 36, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.MIND] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={acid=true}, name="acid burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.ACID] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.LIGHTNING] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={fire=true}, name="fire burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.FIRE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={cold=true}, name="cold burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.COLD] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={light=true}, name="light burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.LIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={dark=true}, name="dark burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.DARKNESS] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={blight=true}, name="blight burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.BLIGHT] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={nature=true}, name="nature burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature burst (crit)", points = 3, rarity = 28, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.NATURE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane burst (crit)", points = 6, rarity = 36, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.ARCANE] = resolvers.randartmax(4, 40), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal burst (crit)", points = 3, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal burst (crit)", points = 6, rarity = 36, level_range = {1, 50},
 	special_combat = { burst_on_crit = {[DamageType.TEMPORAL] = resolvers.randartmax(4, 40), }, },
 }
 ----------------------------------------------------------------
 -- Melee damage conversion
 ----------------------------------------------------------------
-newEntity{ theme={mind=true, mental=true}, name="mind conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={mind=true, mental=true}, name="mind conversion", points = 1, rarity = 36, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.MIND] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={acid=true}, name="acid conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={acid=true}, name="acid conversion", points = 1, rarity = 28, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.ACID] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={lightning=true}, name="lightning conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={lightning=true}, name="lightning conversion", points = 1, rarity = 28, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.LIGHTNING] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={fire=true}, name="fire conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={fire=true}, name="fire conversion", points = 1, rarity = 28, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.FIRE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={cold=true}, name="cold conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={cold=true}, name="cold conversion", points = 1, rarity = 28, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.COLD] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={light=true}, name="light conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={light=true}, name="light conversion", points = 1, rarity = 28, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.LIGHT] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={dark=true}, name="dark conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={dark=true}, name="dark conversion", points = 1, rarity = 28, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.DARKNESS] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={blight=true}, name="blight conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={blight=true}, name="blight conversion", points = 1, rarity = 28, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.BLIGHT] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={nature=true}, name="nature conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={nature=true}, name="nature conversion", points = 1, rarity = 28, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.NATURE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={arcane=true}, name="arcane conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={arcane=true}, name="arcane conversion", points = 2, rarity = 36, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.ARCANE] = resolvers.randartmax(10, 50), }, },
 }
-newEntity{ theme={temporal=true}, name="temporal conversion", points = 1, rarity = 20, level_range = {1, 50},
+newEntity{ theme={temporal=true}, name="temporal conversion", points = 2, rarity = 36, level_range = {1, 50},
 	special_combat = { convert_damage = {[DamageType.TEMPORAL] = resolvers.randartmax(10, 50), }, },
 }
 ----------------------------------------------------------------
diff --git a/game/modules/tome/data/talents/celestial/sun.lua b/game/modules/tome/data/talents/celestial/sun.lua
index e0568a3fbead176f02ea5b6eeb95f600474e446c..ddd240f53ce0756e7ac9d424f1645cb5f495c024 100644
--- a/game/modules/tome/data/talents/celestial/sun.lua
+++ b/game/modules/tome/data/talents/celestial/sun.lua
@@ -73,7 +73,7 @@ newTalent{
 	direct_hit = true,
 	range = 0,
 	radius = function(self, t)
-		return 2 + self:getTalentLevel(t) / 2
+		return 2 + math.ceil(self:getTalentLevel(t) / 2)
 	end,
 	target = function(self, t)
 		return {type="ball", range=self:getTalentRange(t), selffire=false, radius=self:getTalentRadius(t), talent=t}
diff --git a/game/modules/tome/data/talents/misc/horrors.lua b/game/modules/tome/data/talents/misc/horrors.lua
index 50247e01bdeafc055ea290f280e1326aabd304f6..769a19432f81260a59cd352b2d1d00ae69dd99b9 100644
--- a/game/modules/tome/data/talents/misc/horrors.lua
+++ b/game/modules/tome/data/talents/misc/horrors.lua
@@ -170,159 +170,6 @@ newTalent{
 }
 
 -- Nightmare Horror Powers
-newTalent{
-	name = "Inner Demons",
-	type = {"spell/horror", 1},
-	points = 5,
-	cooldown = 10,
-	mana = 16,
-	range = 10,
-	direct_hit = true,
-	requires_target = true,
-	tactical = { ATTACK = 3 },
-	getChance = function(self, t) return self:combatTalentSpellDamage(t, 5, 50) end,
-	getDuration = function(self, t) return 8 + math.ceil(self:getTalentLevel(t) * 4) end,
-	summon_inner_demons = function(self, target, t)
-		-- Find space
-		local x, y = util.findFreeGrid(target.x, target.y, 1, true, {[Map.ACTOR]=true})
-		if not x then
-			return
-		end
-
-		local m = target:clone{
-			shader = "shadow_simulacrum",
-			no_drops = true,
-			faction = self.faction,
-			summoner = self, summoner_gain_exp=true,
-			summon_time = 10,
-			ai_target = {actor=target},
-			ai = "summoned", ai_real = "tactical",
-			name = ""..target.name.."'s Inner Demon",
-			desc = [[A hideous, demonic entity that resembles the creature it came from.]],
-		}
-		m:removeAllMOs()
-		m.make_escort = nil
-		m.on_added_to_level = nil
-
-		mod.class.NPC.castAs(m)
-		engine.interface.ActorAI.init(m, m)
-
-		m.energy.value = 0
-		m.player = nil
-		m.max_life = m.max_life / 4
-		m.life = util.bound(m.life, 0, m.max_life)
-		m.inc_damage.all = (m.inc_damage.all or 0) - 50
-		m.forceLevelup = function() end
-		m.on_die = nil
-		m.puuid = nil
-		m.on_acquire_target = nil
-		m.no_inventory_access = true
-		m.on_takehit = nil
-		m.seen_by = nil
-		m.can_talk = nil
-		m.clone_on_hit = nil
-
-		-- Remove some talents
-		local tids = {}
-		for tid, _ in pairs(m.talents) do
-			local t = m:getTalentFromId(tid)
-			if t.no_npc_use then tids[#tids+1] = t end
-		end
-		for i, t in ipairs(tids) do
-			if t.mode == "sustained" and m:isTalentActive(t.id) then m:forceUseTalent(t.id, {ignore_energy=true}) end
-			m.talents[t.id] = nil
-		end
-
-		-- nil the Inner Demons effect to squelch combat log spam
-		m.tmp[m.EFF_INNER_DEMONS] = nil
-
-		-- remove detrimental timed effects
-		local effs = {}
-		for eff_id, p in pairs(m.tmp) do
-			local e = m.tempeffect_def[eff_id]
-			if e.status == "detrimental" then
-				effs[#effs+1] = {"effect", eff_id}
-			end
-		end
-
-		while #effs > 0 do
-			local eff = rng.tableRemove(effs)
-			if eff[1] == "effect" then
-				m:removeEffect(eff[2])
-			end
-		end
-
-
-		game.zone:addEntity(game.level, m, "actor", x, y)
-		game.level.map:particleEmitter(x, y, 1, "shadow")
-
-		game.logSeen(target, "%s's Inner Demon manifests!", target.name:capitalize())
-
-	end,
-	action = function(self, t)
-		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
-		local x, y = self:getTarget(tg)
-		if not x or not y then return nil end
-		local _ _, x, y = self:canProject(tg, x, y)
-		if not x or not y then return nil end
-		local target = game.level.map(x, y, Map.ACTOR)
-		if not target then return nil end
-
-		if target:canBe("fear") then
-			target:setEffect(target.EFF_INNER_DEMONS, t.getDuration(self, t), {src = self, chance=t.getChance(self, t), apply_power=self:combatSpellpower()})
-		else
-			game.logSeen(target, "%s resists the demons!", target.name:capitalize())
-		end
-
-		return true
-	end,
-	info = function(self, t)
-		local duration = t.getDuration(self, t)
-		local chance = t.getChance(self, t)
-		return ([[Brings the target's inner demons to the surface.  Each turn for %d turns there's a %d%% chance that one will be summoned.
-		If the summoning is resisted the effect will end early.]]):format(duration, chance)
-	end,
-}
-
-newTalent{
-	name = "Waking Nightmare",
-	type = {"spell/horror", 1},
-	points = 5,
-	cooldown = 10,
-	mana = 16,
-	range = 10,
-	direct_hit = true,
-	requires_target = true,
-	tactical = { ATTACK = { DARKNESS = 2 }, DISABLE = { confusion = 1, stun = 1, blind = 1 } },
-	getChance = function(self, t) return 10 + self:combatTalentSpellDamage(t, 5, 50) end,
-	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 5, 50) end,
-	getDuration = function(self, t) return 4 + math.ceil(self:getTalentLevel(t)) end,
-	action = function(self, t)
-		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
-		local x, y = self:getTarget(tg)
-		if not x or not y then return nil end
-		local _ _, x, y = self:canProject(tg, x, y)
-		if not x or not y then return nil end
-		local target = game.level.map(x, y, Map.ACTOR)
-		if not target then return nil end
-
-		if target:canBe("fear") then
-			target:setEffect(target.EFF_WAKING_NIGHTMARE, t.getDuration(self, t), {src = self, chance=t.getChance(self, t), dam=t.getDamage(self, t), apply_power=self:combatSpellpower()})
-		else
-			game.logSeen(target, "%s resists the nightmare!", target.name:capitalize())
-		end
-
-		return true
-	end,
-	info = function(self, t)
-		local damage = t.getDamage(self, t)
-		local duration = t.getDuration(self, t)
-		local chance = t.getChance(self, t)
-		return ([[Inflicts %0.2f darkness damage each turn for %d turns and has a %d%% chance to randomly cause blindness, stun, or confusion (lasting 3 turns).]]):
-		format(damDesc(self, DamageType.DARKNESS, (damage)), duration, chance)
-	end,
-}
-
 newTalent{
 	name = "Abyssal Shroud",
 	type = {"spell/horror", 1},
@@ -365,7 +212,7 @@ newTalent{
 		local damage = t.getDamage(self, t)
 		local light_reduction = t.getLiteReduction(self, t)
 		local darkness_resistance = t.getDarknessPower(self, t)
-		return ([[Creates a shroud of darkness over a radius 3 area that lasts %d turns.  The shroud causes %0.2f darkness damage each turn and reduces light radius by %d and darkness resistance by %d%% of those within.]]):
+		return ([[Creates a shroud of darkness over a radius 3 area that lasts %d turns.  The shroud causes %0.2f darkness damage each turn, reduces light radius by %d, and darkness resistance by %d%% of those within.]]):
 		format(duration, damDesc(self, DamageType.DARKNESS, (damage)), light_reduction, darkness_resistance)
 	end,
 }
diff --git a/game/modules/tome/data/talents/psionic/discharge.lua b/game/modules/tome/data/talents/psionic/discharge.lua
index 478a5e471c1efc0706d9cda598d0fb7ca9086713..9fb8efafe24601f14e88ad80d0a1747c3d120060 100644
--- a/game/modules/tome/data/talents/psionic/discharge.lua
+++ b/game/modules/tome/data/talents/psionic/discharge.lua
@@ -17,5 +17,183 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
--- Edge TODO: Sounds, Particles, Talent Icons; All Talents
+-- Edge TODO: Sounds, Particles
 
+newTalent{
+	name = "Backlash",
+	type = {"psionic/discharge", 1},
+	points = 5, 
+	require = psi_wil_req1,
+	mode = "passive",
+	range = function(self, t) return 5 + math.min(5, (self:isTalentActive(self.T_MIND_STORM) and self:getTalentLevelRaw(self.T_MIND_STORM)) or 0) end,
+	getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 75) end,
+	target = function(self, t)
+		return {type="hit", range=self:getTalentRange(t), talent=t}
+	end,
+	doBacklash = function(self, target, t)
+		if core.fov.distance(self.x, self.y,target.x, target.y) > self:getTalentRange(t) then return nil end
+		local tg = self:getTalentTarget(t)
+		-- Divert the Backlash?
+		local wrath = self:hasEffect(self.EFF_FOCUSED_WRATH)
+		if wrath then
+			self:project(tg, wrath.target.x, wrath.target.y, DamageType.MIND, self:mindCrit(t.getDamage(self, t), nil, wrath.power), {type="mind", true}) -- No Martyr loops
+		else
+			self:project(tg, target.x, target.y, DamageType.MIND, self:mindCrit(t.getDamage(self, t)), {type="mind"}, true) -- No Martyr loops
+		end
+	end,
+	info = function(self, t)
+		local damage = t.getDamage(self, t)
+		local range = self:getTalentRange(t)
+		return ([[Your subconscious now retaliates when you're attacked, inflicting %0.2f mind damage to any creature within a radius of %d when the damage it deals to you results in you gaining at least one Feedback.
+		The damage will scale with your mindpower.]]):format(damDesc(self, DamageType.MIND, damage), range)
+	end,
+}
+
+newTalent{
+	name = "Feedback Loop",
+	type = {"psionic/discharge", 2},
+	points = 5, 
+	require = psi_wil_req2,
+	cooldown = 24,
+	tactical = { FEEDBACK = 2 },
+	no_break_channel = true,
+	getDuration = function(self, t) return math.ceil(self:getTalentLevel(t) * 1.5) end,
+	on_pre_use = function(self, t, silent) if self:getFeedback() <= 0 then if not silent then game.logPlayer(self, "You have no feedback to start a feedback loop!") end return false end return true end,
+	action = function(self, t)
+		local wrath = self:hasEffect(self.EFF_FOCUSED_WRATH)
+		self:setEffect(self.EFF_FEEDBACK_LOOP, self:mindCrit(t.getDuration(self, t), nil, wrath and wrath.power or 0), {})
+		
+		return true
+	end,
+	info = function(self, t)
+		local duration = t.getDuration(self, t)
+		return ([[Activate to invert your Feedback decay for %d turns.  This effect can be a critical hit, increasing the duration even further.
+		Using this talent will not break psionic channels (such as Mind Storm).  You must have some Feedback in order to start the loop.
+		The maximum Feedback gain will scale with your mindpower.]]):format(duration)
+	end,
+}
+
+newTalent{
+	name = "Mind Storm",
+	type = {"psionic/discharge", 3},
+	points = 5, 
+	require = psi_wil_req3,
+	sustain_feedback = 50,
+	mode = "sustained",
+	cooldown = 12,
+	tactical = { ATTACKAREA = {MIND = 2}},
+	requires_target = true,
+	proj_speed = 20,
+	range = function(self, t) return 5 + math.min(5, (self:isTalentActive(self.T_MIND_STORM) and self:getTalentLevelRaw(self.T_MIND_STORM)) or 0) end,
+	target = function(self, t)
+		return {type="bolt", range=self:getTalentRange(t), talent=t, friendlyfire=false, display={particle="bolt_void", trail="dust_trail"}}
+	end,
+	getDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 140) end,
+	getTargetCount = function(self, t) return self:getTalentLevelRaw(t) end,
+	getOverchargeRatio = function(self, t) return 20 - math.ceil(self:getTalentLevel(t)) end,
+	doMindStorm = function(self, t, p)
+		local tgts = {}
+		local tgts_oc = {}
+		local grids = core.fov.circle_grids(self.x, self.y, self:getTalentRange(t), true)
+		for x, yy in pairs(grids) do for y, _ in pairs(grids[x]) do
+			local a = game.level.map(x, y, Map.ACTOR)
+			if a and self:reactionToward(a) < 0 then
+				tgts[#tgts+1] = a
+				tgts_oc[#tgts_oc+1] = a
+			end
+		end end	
+		
+		local wrath = self:hasEffect(self.EFF_FOCUSED_WRATH)
+		
+		-- Randomly take targets
+		local tg = self:getTalentTarget(t)
+		for i = 1, t.getTargetCount(self, t) do
+			if #tgts <= 0 or self:getFeedback() < 1 then break end
+			local a, id = rng.table(tgts)
+			table.remove(tgts, id)
+			-- Divert the Bolt?
+			if wrath then
+				self:projectile(tg, wrath.target.x, wrath.target.y, DamageType.MIND, self:mindCrit(t.getDamage(self, t), nil, wrath.power))
+			else
+				self:projectile(tg, a.x, a.y, DamageType.MIND, self:mindCrit(t.getDamage(self, t)))
+			end
+			self:incFeedback(-1)
+		end
+		
+		-- Randomly take overcharge targets
+		local tg = self:getTalentTarget(t)
+		if p.overcharge >= 1 then
+			for i = 1, math.min(p.overcharge, t.getTargetCount(self, t)) do
+				if #tgts_oc <= 0 then break end
+				local a, id = rng.table(tgts_oc)
+				table.remove(tgts_oc, id)
+				-- Divert the Bolt?
+				if wrath then
+					self:projectile(tg, wrath.target.x, wrath.target.y, DamageType.MIND, self:mindCrit(t.getDamage(self, t), nil, wrath.power))
+				else
+					self:projectile(tg, a.x, a.y, DamageType.MIND, self:mindCrit(t.getDamage(self, t)))
+				end
+			end
+		end
+			
+		p.overcharge = 0
+		
+	end,
+	activate = function(self, t)
+		local ret = {
+			overcharge = 0
+		}
+		return ret
+	end,
+	deactivate = function(self, t, p)
+		return true
+	end,
+	info = function(self, t)
+		local range_increase = math.min(self:getTalentLevelRaw(t))
+		local targets = t.getTargetCount(self, t)
+		local damage = t.getDamage(self, t)
+		local charge_ratio = t.getOverchargeRatio(self, t)
+		return ([[Unleash your subconscious on the world around you.  While active the range of all Discharge talents will be increased by %d and you'll fire up to %d bolts each turn (one per hostile target) that deal %0.2f mind damage.  Each bolt consumes 1 Feedback.
+		Feedback gains beyond your maximum allowed amount may generate extra bolts (one bolt per %d excess Feedback), but no more then %d extra bolts per turn.
+		This effect is a psionic channel and will break if you move, use a talent, or activate an item.
+		The damage will scale with your mindpower.]]):format(range_increase, targets, damDesc(self, DamageType.MIND, damage), charge_ratio, targets)
+	end,
+}
+
+newTalent{
+	name = "Focused Wrath",   
+	type = {"psionic/discharge", 4},
+	points = 5, 
+	require = psi_wil_req4,
+	feedback = 25,
+	cooldown = 12,
+	tactical = { ATTACK = {MIND = 2}},
+	range = function(self, t) return 5 + math.min(5, (self:isTalentActive(self.T_MIND_STORM) and self:getTalentLevelRaw(self.T_MIND_STORM)) or 0) end,
+	getCritBonus = function(self, t) return self:combatTalentMindDamage(t, 10, 50) end,
+	target = function(self, t)
+		return {type="hit", range=self:getTalentRange(t)}
+	end,
+	getDuration = function(self, t) return 2 + math.ceil(self:getTalentLevel(t)) end,
+	direct_hit = true,
+	requires_target = true,
+	no_break_channel = true,
+	action = function(self, t)
+		local tg = self:getTalentTarget(t)
+		local x, y = self:getTarget(tg)
+		if not x or not y then return nil end
+		_, x, y = self:canProject(tg, x, y)
+		local target = x and game.level.map(x, y, engine.Map.ACTOR) or nil
+		if not target or target == self then return nil end
+		
+		self:setEffect(self.EFF_FOCUSED_WRATH, t.getDuration(self, t), {target=target, power=t.getCritBonus(self, t)/100})
+
+		return true
+	end,
+	info = function(self, t)
+		local duration = t.getDuration(self, t)
+		local crit_bonus = t.getCritBonus(self, t)
+		return ([[Focus your mind on a single target, diverting all offensive Discharge talent effects to it for %d turns.  While this effect is active all Discharge talents gain %d%% critical power.
+		Using this talent will not break psionic channels (such as Mind Storm).  If the target is killed the effect will end early.
+		The damage bonus will scale with your mindpower.]]):format(duration, damDesc(self, DamageType.MIND, crit_bonus))
+	end,
+}
\ No newline at end of file
diff --git a/game/modules/tome/data/talents/psionic/distortion.lua b/game/modules/tome/data/talents/psionic/distortion.lua
index 589ddcb1e639c79c6d7dd54063d66a67570dca31..51b9cc102ec2461dc20465ab66260d995c80e587 100644
--- a/game/modules/tome/data/talents/psionic/distortion.lua
+++ b/game/modules/tome/data/talents/psionic/distortion.lua
@@ -18,6 +18,7 @@
 -- darkgod@te4.org
 
 -- Edge TODO: Sounds, Particles, Talent Icons; All Talents
+-- Fade from Reality?  (better name would be good, sounds to much like fade from time..  but yeah, same principal, only targeted so it reduces the enemies damage and what not)
 
 newTalent{
 	name = "Distortion",
diff --git a/game/modules/tome/data/talents/psionic/feedback.lua b/game/modules/tome/data/talents/psionic/feedback.lua
index d750972a08142e8a33ffa27b35e9743cea1a8bcd..af03654e57d0139dc5bab517cfd712be2cc89cfa 100644
--- a/game/modules/tome/data/talents/psionic/feedback.lua
+++ b/game/modules/tome/data/talents/psionic/feedback.lua
@@ -17,7 +17,8 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
--- Edge TODO: Sounds, Particles, Talent Icons
+-- Edge TODO: Sounds, Particles,
+
 newTalent{
 	name = "Biofeedback",
 	type = {"psionic/feedback", 1},
@@ -27,48 +28,54 @@ newTalent{
 	getHealRatio = function(self, t) return 0.5 + self:combatTalentMindDamage(t, 0.1, 1)end,
 	info = function(self, t)
 		local heal = t.getHealRatio(self, t)
-		return ([[Your natural Feedback decay now heals you for %d%% of the loss.
+		return ([[Your Feedback decay now heals you for %d%% of the loss.
 		The healing effect will scale with your mindpower.]]):format(heal*100)
 	end,
 }
 
 newTalent{
-	name = "Amplification",
+	name = "Resonance Field",
 	type = {"psionic/feedback", 2},
 	points = 5,
+	feedback = 25,
 	require = psi_wil_req2,
 	cooldown = 15,
-	tactical = { FEEDBACK = 2},
-	getFeedbackGain = function(self, t) return 0.5 + self:combatTalentMindDamage(t, 0.1, 0.5) end,
+	tactical = { DEFEND = 2},
+	no_break_channel = true,
+	getShieldPower = function(self, t) return self:combatTalentMindDamage(t, 30, 470) end,
 	action = function(self, t)
-		local feedback_gain = t.getFeedbackGain(self, t) * self:getFeedback()
-		self:incFeedback(self:mindCrit(feedback_gain))
+		self:setEffect(self.EFF_RESONANCE_FIELD, 10, {power = self:mindCrit(t.getShieldPower(self, t))})
 		return true
 	end,
 	info = function(self, t)
-		local gain = t.getFeedbackGain(self, t)
-		return ([[Activate to increase your current feedback by %d%% (cannot trigger Overchrage.)  Learning this talent also increases your base Feedback gain ratio to %d%%.
-		The Feedback gain will scale with your mindpower.]]):format(gain * 100, gain * 100)
+		local shield_power = t.getShieldPower(self, t)
+		return ([[Activate to create a resonance field that will absorb 50%% of all damage you take (%d max absorption).  The field will not interfere with Feedback gain.
+		Using this talent will not break psionic channels (such as Mind Storm).
+		The max absorption value will scale with your mindpower and the effect lasts up to ten turns.]]):format(shield_power)
 	end,
 }
 
 newTalent{
-	name = "Resonance Field",
-	type = {"psionic/feedback", 4},
+	name = "Amplification",
+	type = {"psionic/feedback", 3},
 	points = 5,
-	feedback = 20,
-	require = psi_wil_req4,
-	cooldown = 15,
-	tactical = { DEFEND = 2},
-	getShieldPower = function(self, t) return self:combatTalentMindDamage(t, 30, 470) end,
-	action = function(self, t)
-		self:setEffect(self.EFF_RESONANCE_FIELD, 10, {power = self:mindCrit(power)})
+	require = psi_wil_req3,
+	mode = "passive",
+	getFeedbackGain = function(self, t) return 0.5 + self:combatTalentMindDamage(t, 0.1, 0.5) end,
+	getMaxFeedback = function(self, t) return self:getTalentLevelRaw(t) * 10 end,
+	on_learn = function(self, t)
+		self:incMaxFeedback(10)
+		return true
+	end,
+	on_unlearn = function(self, t)
+		self:incMaxFeedback(-10)
 		return true
 	end,
 	info = function(self, t)
-		local shield_power = t.getShieldPower(self, t)
-		return ([[Activate to create a resonance field that will absorb 50%% of all damage you take (%d max absorption).  The field will not interfere with Feedback gain.
-		The max absorption value will scale with your mindpower and the effect lasts up to ten turns.]]):format(shield_power)
+		local max_feedback = t.getMaxFeedback(self, t)
+		local gain = t.getFeedbackGain(self, t)
+		return ([[Increases your maximum Feedback by %d and increases your base Feedback gain ratio to %d%%.
+		The Feedback gain will scale with your mindpower.]]):format(max_feedback, gain * 100)
 	end,
 }
 
@@ -76,15 +83,17 @@ newTalent{
 	name = "Conversion",
 	type = {"psionic/feedback", 4},
 	points = 5,
-	feedback = 50,
+	feedback = 25,
 	require = psi_wil_req4,
 	cooldown = 24,
+	no_break_channel = true,
 	tactical = { MANA = 2, VIM = 2, EQUILIBRIUM = 2, STAMINA = 2, POSITIVE = 2, NEGATIVE = 2, PSI = 2, HATE = 2 },
 	dont_provide_pool = true,
-	getConversion = function(self, t) return 50 * self:combatTalentMindDamage(t, 0.5, 2) end,
+	getConversion = function(self, t) return self:combatTalentMindDamage(t, 10, 50) end,
 	getData = function(self, t)
-		local base = self:mindCrit(t.getConversion(self, t))
+		local base = t.getConversion(self, t)
 		return {
+			heal = base * 10,
 			stamina = base,
 			mana = base * 1.8,
 			equilibrium = -base * 1.5,
@@ -99,13 +108,18 @@ newTalent{
 		local data = t.getData(self, t)
 		for name, v in pairs(data) do
 			local inc = "inc"..name:capitalize()
-			if self[inc] then self[inc](self, v) end
+			if name == "heal" then
+				self:heal(self:mindCrit(v))
+			elseif
+				self[inc] then self[inc](self, v) 
+			end
 		end
 		return true
 	end,
 	info = function(self, t)
 		local data = t.getData(self, t)
-		return ([[Convert Feedback into other resources.  Restores %d stamina, %d mana, %d equilibrium, %d vim, %d positive and negative energies, %d psi energy, and %d hate.
-		The resource gain will improve with your mindpower.]]):format(data.stamina, data.mana, data.equilibrium, data.vim, data.positive, data.psi, data.hate)
+		return ([[Use Feedback to replinish yourself.  Heals you for %d life and restores %d stamina, %d mana, %d equilibrium, %d vim, %d positive and negative energies, %d psi energy, and %d hate.
+		Using this talent will not break psionic channels (such as Mind Storm).
+		The heal and resource gain will improve with your mindpower.]]):format(data.heal, data.stamina, data.mana, -data.equilibrium, data.vim, data.positive, data.psi, data.hate)
 	end,
 }
diff --git a/game/modules/tome/data/talents/psionic/mentalism.lua b/game/modules/tome/data/talents/psionic/mentalism.lua
index 73c378e7d11babe96a71e1a8a7d9b8fee9f4cc46..0c58d7cf88cc33f26e0cb88a916f8d4cea64c5ae 100644
--- a/game/modules/tome/data/talents/psionic/mentalism.lua
+++ b/game/modules/tome/data/talents/psionic/mentalism.lua
@@ -17,7 +17,7 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
--- Edge TODO: Sounds, Particles, Talent Icons
+-- Edge TODO: Sounds, Particles
 
 local Map = require "engine.Map"
 
@@ -217,7 +217,7 @@ newTalent{
 	end,
 	info = function(self, t)
 		local damage = t.getBonusDamage(self, t)
-		return ([[Link minds with the targe.  While your minds are linked you'll inflict %d%% more mind damage to the target and gain telepathy to it's creature type.
+		return ([[Link minds with the target.  While your minds are linked you'll inflict %d%% more mind damage to the target and gain telepathy to it's creature type.
 		Only one mindlink can be maintained at a time and the mind damage bonus will scale with your mindpower.]]):format(damage)
 	end,
 }
diff --git a/game/modules/tome/data/talents/psionic/nightmare.lua b/game/modules/tome/data/talents/psionic/nightmare.lua
index fecd74638880d243a1aea4cffc87d7f83252bb8e..9c6838f87c77d7f0c83794f9fcddd6c19b6d043a 100644
--- a/game/modules/tome/data/talents/psionic/nightmare.lua
+++ b/game/modules/tome/data/talents/psionic/nightmare.lua
@@ -18,212 +18,162 @@
 -- darkgod@te4.org
 
 -- Edge TODO: Sounds, Particles, Talent Icons; All Talents
+-- Idea: Nightmare effects gain a bonus to mindpower applications on slept targets, increasing chances of landing as well as brain-locks
+-- Idea Night Terror: Sustain, increases mind damage by x% and increases darkness damage by X% of your +mind damage (up to 100).  Increases power of all nightmare effects on sleeping targets by X%
 
 newTalent{
-	name = "Nightmare 1",
+	name = "Nightmare/Waking Nightmare",
+	short_name = "WAKING_NIGHTMARE",
 	type = {"psionic/nightmare", 1},
-	points = 5, 
+	points = 5,
 	require = psi_wil_req1,
-	cooldown = 5,
-	tactical = { DISABLE = 2},
-	range = 0,
+	cooldown = 10,
+	psi = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
-	getDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 150) end,
-	radius = function(self, t) return 1 + math.ceil(self:getTalentLevel(t)) end,
-	target = function(self, t)
-		return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false}
-	end,
-	on_pre_use = function(self, t, silent) if self.psionic_feedback <= 0 then if not silent then game.logPlayer(self, "You have no feedback to power this talent.") end return false end return true end,
-	on_learn = function(self, t)
-		if self:getTalentLevelRaw(t) == 1 then
-			if not self.psionic_feedback then
-				self.psionic_feedback = 0
-			end
-			self.psionic_feedback_max = (self.psionic_feedback_max or 0) + 100
-		end
-		return true
-	end,
-	on_unlearn = function(self, t)
-		if not self:knowTalent(t) then
-			self.psionic_feedback_max = self.psionic_feedback_max - 100
-			if self.psionic_feedback_max <= 0 then
-				self.psionic_feedback_max = nil
-				self.psionic_feedback = nil
-			end
-		end
-		return true
-	end,
+	tactical = { ATTACK = { DARKNESS = 2 }, DISABLE = { confusion = 1, stun = 1, blind = 1 } },
+	getChance = function(self, t) return self:combatTalentMindDamage(t, 15, 50) end,
+	getDamage = function(self, t) return self:combatTalentMindDamage(t, 5, 50) end,
+	getDuration = function(self, t) return 4 + math.ceil(self:getTalentLevel(t)) end,
 	action = function(self, t)
-		local tg = self:getTalentTarget(t)
+		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
 		local x, y = self:getTarget(tg)
-		
-		local damage = math.min(self.psionic_feedback, t.getDamage(self, t))
-		self:project(tg, x, y, DamageType.MIND, {dam=self:mindCrit(damage), crossTierChance=math.max(100, damage)})
-		
-		self.psionic_feedback = self.psionic_feedback - damage
-							
+		if not x or not y then return nil end
+		local _ _, x, y = self:canProject(tg, x, y)
+		if not x or not y then return nil end
+		local target = game.level.map(x, y, Map.ACTOR)
+		if not target then return nil end
+
+		if target:canBe("fear") then
+			target:setEffect(target.EFF_WAKING_NIGHTMARE, t.getDuration(self, t), {src = self, chance=t.getChance(self, t), dam=self:mindCrit(t.getDamage(self, t)), apply_power=self:combatMindpower()})
+		else
+			game.logSeen(target, "%s resists the nightmare!", target.name:capitalize())
+		end
+
 		return true
 	end,
 	info = function(self, t)
 		local damage = t.getDamage(self, t)
-		local radius = self:getTalentRadius(t)
-		return ([[You now store damage you take from outside sources as psionic feedback.  Activate to nightmare up to %0.2f feedback in a %d radius cone.  Targets in the area will suffer mind damage and may be brain locked by this attack.
-		Learning this talent will increase the amount of feedback you can store by 100 (first talent point only).
-		The damage will scale with your mindpower.]]):format(damage, radius)
+		local duration = t.getDuration(self, t)
+		local chance = t.getChance(self, t)
+		return ([[Inflicts %0.2f darkness damage each turn for %d turns and has a %d%% chance to randomly cause blindness, stun, or confusion (lasting 3 turns).]]):
+		format(damDesc(self, DamageType.DARKNESS, (damage)), duration, chance)
 	end,
 }
 
 newTalent{
-	name = "Nightmare 2",
+	name = "Inner Demons",
 	type = {"psionic/nightmare", 2},
-	points = 5, 
+	points = 5,
 	require = psi_wil_req2,
-	mode = "sustained",
-	sustain_psi = 20,
 	cooldown = 18,
-	tactical = { BUFF = 2 },
-	getMaxOverflow = function(self, t) return self.psionic_feedback_max * (self:combatTalentMindDamage(t, 20, 100)/100) end,
-	radius = function(self, t) return math.ceil(self:getTalentLevel(t)/2) end,
-	on_learn = function(self, t)
-		if self:getTalentLevelRaw(t) == 1 then
-			if not self.psionic_feedback then
-				self.psionic_feedback = 0
-			end
-			self.psionic_feedback_max = (self.psionic_feedback_max or 0) + 50
-		end
-		return true
-	end,
-	on_unlearn = function(self, t)
-		if not self:knowTalent(t) then
-			self.psionic_feedback_max = self.psionic_feedback_max - 50
-			if self.psionic_feedback_max <= 0 then
-				self.psionic_feedback_max = nil
-				self.psionic_feedback = nil
-			end
+	psi = 20,
+	range = 10,
+	direct_hit = true,
+	requires_target = true,
+	tactical = { ATTACK = 3 },
+	getChance = function(self, t) return self:combatTalentMindDamage(t, 15, 50) end,
+	getDuration = function(self, t) return 2 + math.ceil(self:getTalentLevel(t) * 2) end,
+	summon_inner_demons = function(self, target, t)
+		-- Find space
+		local x, y = util.findFreeGrid(target.x, target.y, 1, true, {[Map.ACTOR]=true})
+		if not x then
+			return
 		end
-		return true
-	end,
-	doOverflownightmare = function(self, t)
-		local tg = {type="ball", range=0, radius=self:getTalentRadius(t), selffire=false, friendlyfire=false}
-		local damage = self.psionic_overflow
-		self:project(tg, self.x, self.y, DamageType.MIND, self:mindCrit(damage))
-		-- Lose remaining overflow
-		self.psionic_overflow = nil
-	end,
-	activate = function(self, t)
-		game:playSoundNear(self, "talents/flame")
-		return {
-			ov = self:addTemporaryValue("psionic_overflow_max", t.getMaxOverflow(self, t)),
+
+		local m = target:clone{
+			shader = "shadow_simulacrum",
+			no_drops = true,
+			faction = self.faction,
+			summoner = self, summoner_gain_exp=true,
+			summon_time = 10,
+			ai_target = {actor=target},
+			ai = "summoned", ai_real = "tactical",
+			name = ""..target.name.."'s Inner Demon",
+			desc = [[A hideous, demonic entity that resembles the creature it came from.]],
 		}
-	end,
-	deactivate = function(self, t, p)
-		self:removeTemporaryValue("psionic_overflow_max", p.ov)
-		return true
-	end,
-	info = function(self, t)
-		local overflow = t.getMaxOverflow(self, t)
-		local radius = self:getTalentRadius(t)
-		return ([[While active you store up to %d excess feedback as overflow.  At the start of your turn the overflow will be unleased as mind damage in a radius of %d.
-		Learning this talent will increase the amount of feedback you can store by 50 (first talent point only).
-		The max excess you can store will improve with your mindpower and max feedback.]]):format(overflow, radius)
-	end,
-}
+		m:removeAllMOs()
+		m.make_escort = nil
+		m.on_added_to_level = nil
 
-newTalent{
-	name = "Nightmare 3",
-	type = {"psionic/nightmare", 3},
-	points = 5,
-	require = psi_wil_req3,
-	cooldown = 10,
-	tactical = { ATTACKAREA = {PHYSICAL = 2}, DISABLE = { knockback = 2 }, },
-	range = 0,
-	radius = function(self, t) return 1 + math.ceil(self:getTalentLevel(t)) end,
-	direct_hit = true,
-	requires_target = true,
-	target = function(self, t)
-		return {type="ball", range=self:getTalentRange(t), talent=t}
-	end,
-	getDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 230) end,
-	on_pre_use = function(self, t, silent) if self.psionic_feedback <= 0 then if not silent then game.logPlayer(self, "You have no feedback to power this talent.") end return false end return not self:hasEffect(self.EFF_REGENERATION) end,
-	on_learn = function(self, t)
-		if self:getTalentLevelRaw(t) == 1 then
-			if not self.psionic_feedback then
-				self.psionic_feedback = 0
-			end
-			self.psionic_feedback_max = (self.psionic_feedback_max or 0) + 50
+		mod.class.NPC.castAs(m)
+		engine.interface.ActorAI.init(m, m)
+
+		m.exp_worth = 0
+		m.energy.value = 0
+		m.player = nil
+		m.max_life = m.max_life / 4
+		m.life = util.bound(m.life, 0, m.max_life)
+		m.inc_damage.all = (m.inc_damage.all or 0) - 50
+		m.forceLevelup = function() end
+		m.on_die = nil
+		m.puuid = nil
+		m.on_acquire_target = nil
+		m.no_inventory_access = true
+		m.on_takehit = nil
+		m.seen_by = nil
+		m.can_talk = nil
+		m.clone_on_hit = nil
+
+		-- Remove some talents
+		local tids = {}
+		for tid, _ in pairs(m.talents) do
+			local t = m:getTalentFromId(tid)
+			if t.no_npc_use then tids[#tids+1] = t end
 		end
-		return true
-	end,
-	on_unlearn = function(self, t)
-		if not self:knowTalent(t) then
-			self.psionic_feedback_max = self.psionic_feedback_max - 50
-			if self.psionic_feedback_max <= 0 then
-				self.psionic_feedback_max = nil
-				self.psionic_feedback = nil
-			end
+		for i, t in ipairs(tids) do
+			if t.mode == "sustained" and m:isTalentActive(t.id) then m:forceUseTalent(t.id, {ignore_energy=true}) end
+			m.talents[t.id] = nil
 		end
-		return true
-	end,
-	action = function(self, t)
-		local tg = self:getTalentTarget(t)
-		if not x or not y then return nil end
-		
-		local damage = math.min(self.psionic_feedback, t.getDamage(self, t))
-		self:project(tg, x, y, DamageType.MINDKNOCKBACK, self:mindCrit(damage))
-		self.psionic_feedback = self.psionic_feedback - damage
-		
-		return true
-	end,
-	info = function(self, t)
-		local damage = t.getDamage(self, t)
-		local radius = self:getTalentRadius(t)
-		return ([[Activate to convert up to %0.2f of stored feedback into a blast of kinetic energy.  Targets out to a radius of %d will suffer physical damage and may be knocked back.
-		Learning this talent will increase the amount of feedback you can store by 50 (first talent point only).
-		The damage will scale with your mindpower.]]):format(damDesc(self, DamageType.PHYSICAL, damage), radius)
-	end,
-}
 
-newTalent{
-	name = "Nightmare 4",
-	type = {"psionic/nightmare", 4},
-	points = 5, 
-	require = psi_wil_req4,
-	cooldown = 15,
-	tactical = { DEFEND = 2, ATTACK = {MIND = 2}},
-	on_pre_use = function(self, t, silent) if self.psionic_feedback <= 0 then if not silent then game.logPlayer(self, "You have no feedback to power this talent.") end return false end return true end,
-	getShieldPower = function(self, t) return self:combatTalentMindDamage(t, 20, 300) end,
-	getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 50) end,
-	on_learn = function(self, t)
-		if self:getTalentLevelRaw(t) == 1 then
-			if not self.psionic_feedback then
-				self.psionic_feedback = 0
+		-- nil the Inner Demons effect to squelch combat log spam
+		m.tmp[m.EFF_INNER_DEMONS] = nil
+
+		-- remove detrimental timed effects
+		local effs = {}
+		for eff_id, p in pairs(m.tmp) do
+			local e = m.tempeffect_def[eff_id]
+			if e.status == "detrimental" then
+				effs[#effs+1] = {"effect", eff_id}
 			end
-			self.psionic_feedback_max = (self.psionic_feedback_max or 0) + 100
 		end
-		return true
-	end,
-	on_unlearn = function(self, t)
-		if not self:knowTalent(t) then
-			self.psionic_feedback_max = self.psionic_feedback_max - 100
-			if self.psionic_feedback_max <= 0 then
-				self.psionic_feedback_max = nil
-				self.psionic_feedback = nil
+
+		while #effs > 0 do
+			local eff = rng.tableRemove(effs)
+			if eff[1] == "effect" then
+				m:removeEffect(eff[2])
 			end
 		end
-		return true
+
+
+		game.zone:addEntity(game.level, m, "actor", x, y)
+		game.level.map:particleEmitter(x, y, 1, "shadow")
+
+		game.logSeen(target, "#F53CBE#%s's Inner Demon manifests!", target.name:capitalize())
+
 	end,
 	action = function(self, t)
-		local power = math.min(self.psionic_feedback, t.getShieldPower(self, t))
-		self:setEffect(self.EFF_RESONANCE_SHIELD, 10, {power = self:mindCrit(power), dam = t.getDamage(self, t)})
-		self.psionic_feedback = self.psionic_feedback - power
+		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
+		local x, y = self:getTarget(tg)
+		if not x or not y then return nil end
+		local _ _, x, y = self:canProject(tg, x, y)
+		if not x or not y then return nil end
+		local target = game.level.map(x, y, Map.ACTOR)
+		if not target then return nil end
+
+		if target:canBe("fear") then
+			target:setEffect(target.EFF_INNER_DEMONS, t.getDuration(self, t), {src = self, chance=self:mindCrit(t.getChance(self, t)), apply_power=self:combatMindpower()})
+		else
+			game.logSeen(target, "%s resists the demons!", target.name:capitalize())
+		end
+
 		return true
 	end,
 	info = function(self, t)
-		local shield_power = t.getShieldPower(self, t)
-		local damage = t.getDamage(self, t)
-		return ([[Activate to conver up to %0.2f feedback into a resonance shield that will absorb 50%% of all damage you take and inflict %0.2f mind damage to melee attackers.
-		Learning this talent will increase the amount of feedback you can store by 100 (first talent point only).
-		The conversion ratio will scale with your mindpower and the effect lasts up to ten turns.]]):format(shield_power, damDesc(self, DamageType.MIND, damage))
+		local duration = t.getDuration(self, t)
+		local chance = t.getChance(self, t)
+		return ([[Brings the target's inner demons to the surface.  Each turn for %d turns there's a %d%% chance that one will be summoned.
+		If the summoning is resisted the effect will end early.]]):format(duration, chance)
 	end,
 }
\ No newline at end of file
diff --git a/game/modules/tome/data/talents/psionic/slumber.lua b/game/modules/tome/data/talents/psionic/slumber.lua
index fd9c7a95a685e5b5672c969f84cc8a48afd43b57..8c7a2406d542973aee9a028556f25884548b19ab 100644
--- a/game/modules/tome/data/talents/psionic/slumber.lua
+++ b/game/modules/tome/data/talents/psionic/slumber.lua
@@ -24,112 +24,91 @@ newTalent{
 	type = {"psionic/slumber", 1},
 	points = 5, 
 	require = psi_wil_req1,
-	cooldown = 5,
+	cooldown = 8,
+	psi = 5,
 	tactical = { DISABLE = 2},
-	range = 0,
 	direct_hit = true,
 	requires_target = true,
-	getDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 150) end,
-	radius = function(self, t) return 1 + math.ceil(self:getTalentLevel(t)) end,
-	target = function(self, t)
-		return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false}
-	end,
-	on_pre_use = function(self, t, silent) if self.psionic_feedback <= 0 then if not silent then game.logPlayer(self, "You have no feedback to power this talent.") end return false end return true end,
-	on_learn = function(self, t)
-		if self:getTalentLevelRaw(t) == 1 then
-			if not self.psionic_feedback then
-				self.psionic_feedback = 0
-			end
-			self.psionic_feedback_max = (self.psionic_feedback_max or 0) + 100
+	range = function(self, t) return 5 + math.min(5, self:getTalentLevelRaw(t)) end,
+	radius = function(self, t) return 1 + math.floor(self:getTalentLevel(t)/4) end,
+	target = function(self, t) return {type="ball", radius=self:getTalentRadius(t), range=self:getTalentRange(t), talent=t} end,
+	getDuration = function(self, t) return 2 + math.ceil(self:getTalentLevel(t)/2) end,
+	getInsomniaDuration = function(self, t)
+		local t = self:getTalentFromId(self.T_SANDMAN)
+		local reduction = t.getInsomniaReduction(self, t)
+		return 10 - reduction
+	end,
+	getSleepPower = function(self, t) 
+		local power = self:combatTalentMindDamage(t, 10, 50)
+		if self:knowTalent(self.T_SANDMAN) then
+			local t = self:getTalentFromId(self.T_SANDMAN)
+			power = power + t.getSleepPowerBonus(self, t)
 		end
-		return true
-	end,
-	on_unlearn = function(self, t)
-		if not self:knowTalent(t) then
-			self.psionic_feedback_max = self.psionic_feedback_max - 100
-			if self.psionic_feedback_max <= 0 then
-				self.psionic_feedback_max = nil
-				self.psionic_feedback = nil
+		return power
+	end,
+	doContagiousSlumber = function(self, target, p, t)
+		local tg = {type="ball", radius=self:getTalentRadius(t), talent=t}
+		self:project(tg, target.x, target.y, function(tx, ty)
+			local target = game.level.map(tx, ty, Map.ACTOR)
+			if target and self:reactionToward(target) < 0 and rng.percent(p.contagious) and target:canBe("sleep") and not target:attr("sleep") then
+				target:setEffect(target.EFF_SLEEP, math.floor(p.dur/2), {src=self, power=p.power, contagious=p.contagious/2, insomnia=math.ceil(p.insomnia/2), no_ct_effect=true, apply_power=self:combatMindpower()})
 			end
-		end
-		return true
+		end)
 	end,
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
-		
-		local damage = math.min(self.psionic_feedback, t.getDamage(self, t))
-		self:project(tg, x, y, DamageType.MIND, {dam=self:mindCrit(damage), crossTierChance=math.max(100, damage)})
-		
-		self.psionic_feedback = self.psionic_feedback - damage
-							
+		if not x or not y then return nil end
+
+		--Contagious?
+		local is_contagious = 0
+		if self:getTalentLevel(self.T_SANDMAN) > 5 then
+			is_contagious = 25
+		end
+		--Sandman?
+		local power = self:mindCrit(t.getSleepPower(self, t))
+		self:project(tg, x, y, function(tx, ty)
+			local target = game.level.map(tx, ty, Map.ACTOR)
+			if target and not target:attr("sleep") then
+				if target:canBe("sleep") then
+					target:setEffect(target.EFF_SLEEP, t.getDuration(self, t), {src=self, power=power, contagious=is_contagious, insomnia=t.getInsomniaDuration(self, t), no_ct_effect=true, apply_power=self:combatMindpower()})
+				else
+					game.logSeen(self, "%s resists the sleep!", target.name:capitalize())
+				end
+			end
+		end)
 		return true
 	end,
 	info = function(self, t)
-		local damage = t.getDamage(self, t)
 		local radius = self:getTalentRadius(t)
-		return ([[You now store damage you take from outside sources as psionic feedback.  Activate to slumber up to %0.2f feedback in a %d radius cone.  Targets in the area will suffer mind damage and may be brain locked by this attack.
-		Learning this talent will increase the amount of feedback you can store by 100 (first talent point only).
-		The damage will scale with your mindpower.]]):format(damage, radius)
+		local duration = t.getDuration(self, t)
+		local power = t.getSleepPower(self, t)
+		local insomnia = t.getInsomniaDuration(self, t)
+		return([[Puts targets in a radius of %d to sleep for %d turns, rendering them unable to act.  Every %d points of damage the target suffers will reduce the effect duration by one turn.
+		When Sleep ends the target will suffer from Insomnia for %d turns, rendering them resistant to Sleep effects.
+		The damage threshold will scale with your mindpower.]]):format(radius, duration, power, insomnia)
 	end,
 }
 
 newTalent{
-	name = "Fitful Slumber",
+	name = "Sandman",
 	type = {"psionic/slumber", 2},
 	points = 5, 
 	require = psi_wil_req2,
-	mode = "sustained",
-	sustain_psi = 20,
-	cooldown = 18,
-	tactical = { BUFF = 2 },
-	getMaxOverflow = function(self, t) return self.psionic_feedback_max * (self:combatTalentMindDamage(t, 20, 100)/100) end,
-	radius = function(self, t) return math.ceil(self:getTalentLevel(t)/2) end,
-	on_learn = function(self, t)
-		if self:getTalentLevelRaw(t) == 1 then
-			if not self.psionic_feedback then
-				self.psionic_feedback = 0
-			end
-			self.psionic_feedback_max = (self.psionic_feedback_max or 0) + 50
-		end
-		return true
-	end,
-	on_unlearn = function(self, t)
-		if not self:knowTalent(t) then
-			self.psionic_feedback_max = self.psionic_feedback_max - 50
-			if self.psionic_feedback_max <= 0 then
-				self.psionic_feedback_max = nil
-				self.psionic_feedback = nil
-			end
-		end
-		return true
-	end,
-	doOverflowslumber = function(self, t)
-		local tg = {type="ball", range=0, radius=self:getTalentRadius(t), selffire=false, friendlyfire=false}
-		local damage = self.psionic_overflow
-		self:project(tg, self.x, self.y, DamageType.MIND, self:mindCrit(damage))
-		-- Lose remaining overflow
-		self.psionic_overflow = nil
-	end,
-	activate = function(self, t)
-		game:playSoundNear(self, "talents/flame")
-		return {
-			ov = self:addTemporaryValue("psionic_overflow_max", t.getMaxOverflow(self, t)),
-		}
-	end,
-	deactivate = function(self, t, p)
-		self:removeTemporaryValue("psionic_overflow_max", p.ov)
-		return true
-	end,
+	mode = "passive",
+	getSleepPowerBonus = function(self, t) return self:combatTalentMindDamage(t, 10, 50) end,
+	getInsomniaReduction = function(self, t) return math.min(8, math.floor(self:getTalentLevel(self.T_SANDMAN))) end,
 	info = function(self, t)
-		local overflow = t.getMaxOverflow(self, t)
-		local radius = self:getTalentRadius(t)
-		return ([[While active you store up to %d excess feedback as overflow.  At the start of your turn the overflow will be unleased as mind damage in a radius of %d.
-		Learning this talent will increase the amount of feedback you can store by 50 (first talent point only).
-		The max excess you can store will improve with your mindpower and max feedback.]]):format(overflow, radius)
+		local power_bonus = t.getSleepPowerBonus(self, t)
+		local reduction = t.getInsomniaReduction(self, t)
+		return([[Increases the amount of damage you can deal to sleeping targets before rousing them by %d and reduces the duration of the Insomnia effect by %d turns.
+		At talent level 5 the Sleep will become contagious and has a 25%% chance to spread to nearby targets each turn.
+		These effects will be directly reflected in the Sleep talent description.
+		The damage threshold bonus will scale with your mindpower.]]):format(power_bonus, reduction)
 	end,
 }
 
+
 newTalent{
 	name = "Contagious Slumber",
 	type = {"psionic/slumber", 3},
@@ -185,7 +164,7 @@ newTalent{
 }
 
 newTalent{
-	name = "Sandman",
+	name = "Sleep4",
 	type = {"psionic/slumber", 4},
 	points = 5, 
 	require = psi_wil_req4,
diff --git a/game/modules/tome/data/talents/psionic/solipsism.lua b/game/modules/tome/data/talents/psionic/solipsism.lua
index 19f4661d278923edd8295d1f970586ef61a32ab4..20b62e8f39fbc577d6dd1e9070bf1c25e1501086 100644
--- a/game/modules/tome/data/talents/psionic/solipsism.lua
+++ b/game/modules/tome/data/talents/psionic/solipsism.lua
@@ -134,7 +134,7 @@ newTalent{
 		return true
 	end,
 	doDismissalOnHit = function(self, value, src, t)
-		local saving_throw = self:combatMindCrit(t.getSavePercentage(self, t))
+		local saving_throw = self:mindCrit(t.getSavePercentage(self, t))
 		print("[Dismissal] ", self.name:capitalize(), " attempting to ignore ", value, "damage from ", src.name:capitalize(), "using", saving_throw,  "mental save.")
 		if self:checkHit(math.floor(saving_throw), value) then
 			game.logSeen(self, "%s dismisses %s's attack!", self.name:capitalize(), src.name:capitalize())
diff --git a/game/modules/tome/data/timed_effects/mental.lua b/game/modules/tome/data/timed_effects/mental.lua
index 27b459cfda7d4f381a33ac14f28e6f72a08844fa..0d04ce4bd60f4ca56ed52aa9499d48c88079de57 100644
--- a/game/modules/tome/data/timed_effects/mental.lua
+++ b/game/modules/tome/data/timed_effects/mental.lua
@@ -1468,13 +1468,13 @@ newEffect{
 newEffect{
 	name = "WAKING_NIGHTMARE", image = "talents/waking_nightmare.png",
 	desc = "Waking Nightmare",
-	long_desc = function(self, eff) return ("The target is lost in a waking nightmare that deals %0.2f darkness damage each turn and has a %d%% chance to cause a random detrimental effect."):format(eff.dam, eff.chance) end,
+	long_desc = function(self, eff) return ("The target is lost in a nightmare that deals %0.2f darkness damage each turn and has a %d%% chance to cause a random detrimental effect."):format(eff.dam, eff.chance) end,
 	type = "mental",
-	subtype = { madness=true, darkness=true },
+	subtype = { nightmare=true, darkness=true },
 	status = "detrimental",
 	parameters = { chance=10, dam = 10 },
-	on_gain = function(self, err) return "#Target# is lost in a waking nightmare.", "+Waking Nightmare" end,
-	on_lose = function(self, err) return "#Target# is free from the nightmare.", "-Waking Nightmare" end,
+	on_gain = function(self, err) return "#F53CBE##Target# is lost in a nightmare.", "+Night Terrors" end,
+	on_lose = function(self, err) return "#Target# is free from the nightmare.", "-Night Terrors" end,
 	on_timeout = function(self, eff)
 		DamageType:get(DamageType.DARKNESS).projector(eff.src or self, self.x, self.y, DamageType.DARKNESS, eff.dam)
 		if rng.percent(eff.chance or 0) then
@@ -1503,15 +1503,15 @@ newEffect{
 	desc = "Inner Demons",
 	long_desc = function(self, eff) return ("The target is plagued by inner demons and each turn there's a %d%% chance that one will appear.  If the caster is killed or the target resists setting his demons loose the effect will end early."):format(eff.chance) end,
 	type = "mental",
-	subtype = { madness=true },
+	subtype = { nightmare=true },
 	status = "detrimental",
 	parameters = {},
-	on_gain = function(self, err) return "#Target# is plagued by inner demons!", "+Inner Demons" end,
+	on_gain = function(self, err) return "#F53CBE##Target# is plagued by inner demons!", "+Inner Demons" end,
 	on_lose = function(self, err) return "#Target# is freed from the demons.", "-Inner Demons" end,
 	on_timeout = function(self, eff)
 		if eff.src.dead or not game.level:hasEntity(eff.src) then eff.dur = 0 return true end
 		if rng.percent(eff.chance or 0) then
-			if self:checkHit(eff.src:combatSpellpower(), self:combatMentalResist(), 0, 95, 5) then
+			if self:checkHit(eff.src:combatMindpower(), self:combatMentalResist(), 0, 95, 5) then
 				local t = eff.src:getTalentFromId(eff.src.T_INNER_DEMONS)
 				t.summon_inner_demons(eff.src, self, t)
 			else
@@ -2323,24 +2323,22 @@ newEffect{
 newEffect{
 	name = "RESONANCE_FIELD", image = "talents/resonance_field.png",
 	desc = "Resonance Field",
-	long_desc = function(self, eff) return ("The target is surrounded by a psychic field, absorbing 50%% of all damage (up to %d/%d).  Additionally melee attackers will suffer %0.2f mind damage on contact."):format(self.resonance_field_absorb, eff.power, eff.dam) end,
+	long_desc = function(self, eff) return ("The target is surrounded by a psychic field, absorbing 50%% of all damage (up to %d/%d)."):format(self.resonance_field_absorb, eff.power) end,
 	type = "mental",
 	subtype = { psionic=true, shield=true },
 	status = "beneficial",
-	parameters = { power=100, dam = 1 },
+	parameters = { power=100 },
 	on_gain = function(self, err) return "A psychic field forms around #target#.", "+Resonance Shield" end,
 	on_lose = function(self, err) return "The psychic field around #target# crumbles.", "-Resonance Shield" end,
 	activate = function(self, eff)
 		self.resonance_field_absorb = eff.power
 		eff.particle = self:addParticles(Particles.new("damage_shield", 1))
 		eff.sid = self:addTemporaryValue("resonance_field", eff.power)
-		eff.did = self:addTemporaryValue("on_melee_hit", {[DamageType.MIND]=eff.dam})
 	end,
 	deactivate = function(self, eff)
 		self.resonance_field_absorb = nil
 		self:removeParticles(eff.particle)
 		self:removeTemporaryValue("resonance_field", eff.sid)
-		self:removeTemporaryValue("on_melee_hit", eff.did)
 	end,
 }
 
@@ -2363,3 +2361,90 @@ newEffect{
 		end
 	end,
 }
+
+newEffect{
+	name = "FEEDBACK_LOOP", image = "talents/feedback_loop.png",
+	desc = "Feedback Loop",
+	long_desc = function(self, eff) return "The target is gaining feedback." end,
+	type = "mental",
+	subtype = { psionic=true },
+	status = "beneficial",
+	parameters = { power = 1 },
+	on_gain = function(self, err) return "#Target# is gaining feedback.", "+Feedback Loop" end,
+	on_lose = function(self, err) return "#Target# is no longer gaining feedback.", "-Feedback Loop" end,
+}
+
+newEffect{
+	name = "FOCUSED_WRATH", image = "talents/focused_wrath.png",
+	desc = "Focused Wrath",
+	long_desc = function(self, eff) return ("The target's subconscious has focused it's attention on %s."):format(eff.target.name:capitalize()) end,
+	type = "mental",
+	subtype = { psionic=true },
+	status = "beneficial",
+	parameters = { power = 1 },
+	on_gain = function(self, err) return "#Target#'s subconscious has been focused.", "+Focused Wrath" end,
+	on_lose = function(self, err) return "#Target#'s subconscious has returned to normal.", "-Focused Wrath" end,
+	on_timeout = function(self, eff)
+		if not eff.target or eff.target.dead or not game.level:hasEntity(eff.target) then
+			self:removeEffect(self.EFF_FOCUSED_WRATH)
+		end
+	end,
+}
+
+newEffect{
+	name = "SLEEP", image = "talents/sleep.png",
+	desc = "Sleep",
+	long_desc = function(self, eff) return ("The target is in a deep sleep and unable to act.  Every %d damage it takes will reduce the duration of the effect by one turn."):format(eff.power) end,
+	type = "mental",
+	subtype = { sleep=true },
+	status = "detrimental",
+	parameters = { power=1, contagious=0, insomnia=1 },
+	on_gain = function(self, err) return "#Target# has been put to sleep.", "+Sleep" end,
+	on_lose = function(self, err) return "#Target# is no longer sleeping.", "-Sleep" end,
+	on_timeout = function(self, eff)
+		if eff.contagious > 0 and eff.dur > 1 then
+			local t = eff.src:getTalentFromId(eff.src.T_SLEEP)
+			t.doContagiousSlumber(eff.src, self, eff, t)
+		end
+	end,
+	activate = function(self, eff)
+		eff.sid = self:addTemporaryValue("sleep", eff.power)
+	end,
+	deactivate = function(self, eff)
+		self:removeTemporaryValue("sleep", eff.sid)
+		self:setEffect(self.EFF_INSOMNIA, eff.insomnia, {power=eff.insomnia/10})
+	end,
+}
+
+newEffect{
+	name = "INSOMNIA", image = "talents/sleep.png",
+	desc = "Insomnia",
+	long_desc = function(self, eff) return ("The target is wide awake and has %d%% resistance to sleep effects."):format(eff.power) end,
+	type = "mental",
+	subtype = { sleep=true },
+	status = "beneficial",
+	parameters = { power=0 },
+	on_merge = function(self, old_eff, new_eff)
+		-- Merge the effect
+		local dur = math.ceil((old_eff.dur + new_eff.dur) / 2)
+		old_eff.dur = dur
+		old_eff.power = dur/10
+		-- Need to remove and re-add the effect
+		self:removeTemporaryValue("sleep_immune", old_eff.sid)
+		old_eff.effsid = self:addTemporaryValue("sleep_immune", old_eff.power)
+		return old_eff
+	end,
+	on_timeout = function(self, eff)
+		-- Deincrement the power
+		eff.power = eff.dur/10
+		self:removeTemporaryValue("sleep_immune", eff.sid)
+		eff.sid = self:addTemporaryValue("sleep_immune", eff.power)
+	end,
+	activate = function(self, eff)
+		eff.sid = self:addTemporaryValue("sleep_immune", eff.power)
+	end,
+	deactivate = function(self, eff)
+		self:removeTemporaryValue("sleep_immune", eff.sid)
+	end,
+}
+
diff --git a/game/modules/tome/dialogs/CharacterSheet.lua b/game/modules/tome/dialogs/CharacterSheet.lua
index b7d752707101d3e00f36b26b87c219ff003f041a..7cae364b84eba84c01d26ac8e4c173ea98269f2a 100644
--- a/game/modules/tome/dialogs/CharacterSheet.lua
+++ b/game/modules/tome/dialogs/CharacterSheet.lua
@@ -855,6 +855,7 @@ function _M:drawDialog(kind, actor_to_compare)
 		immune_type = "disarm_immune" immune_name =    "Disarm     " if player:attr(immune_type) then text = compare_fields(player, actor_to_compare, function(actor, ...) return util.bound((actor:attr(...) or 0) * 100, 0, 100) end, "%3d%%", "%+.0f%%", 1, false, false, immune_type) self:mouseTooltip(self.TOOLTIP_SPECIFIC_IMMUNE, s:drawColorStringBlended(self.font, ("%s: #00ff00#%s"):format(immune_name, text), w, h, 255, 255, 255, true)) h = h + self.font_h end
 		immune_type = "pin_immune" immune_name =       "Pinning    " if player:attr(immune_type) then text = compare_fields(player, actor_to_compare, function(actor, ...) return util.bound((actor:attr(...) or 0) * 100, 0, 100) end, "%3d%%", "%+.0f%%", 1, false, false, immune_type) self:mouseTooltip(self.TOOLTIP_SPECIFIC_IMMUNE, s:drawColorStringBlended(self.font, ("%s: #00ff00#%s"):format(immune_name, text), w, h, 255, 255, 255, true)) h = h + self.font_h end
 		immune_type = "stun_immune" immune_name =      "Stun/Freeze" if player:attr(immune_type) then text = compare_fields(player, actor_to_compare, function(actor, ...) return util.bound((actor:attr(...) or 0) * 100, 0, 100) end, "%3d%%", "%+.0f%%", 1, false, false, immune_type) self:mouseTooltip(self.TOOLTIP_SPECIFIC_IMMUNE, s:drawColorStringBlended(self.font, ("%s: #00ff00#%s"):format(immune_name, text), w, h, 255, 255, 255, true)) h = h + self.font_h end
+		immune_type = "sleep_immune" immune_name =     "Sleep      " if player:attr(immune_type) then text = compare_fields(player, actor_to_compare, function(actor, ...) return util.bound((actor:attr(...) or 0) * 100, 0, 100) end, "%3d%%", "%+.0f%%", 1, false, false, immune_type) self:mouseTooltip(self.TOOLTIP_SPECIFIC_IMMUNE, s:drawColorStringBlended(self.font, ("%s: #00ff00#%s"):format(immune_name, text), w, h, 255, 255, 255, true)) h = h + self.font_h end
 		immune_type = "fear_immune" immune_name =      "Fear       " if player:attr(immune_type) then text = compare_fields(player, actor_to_compare, function(actor, ...) return util.bound((actor:attr(...) or 0) * 100, 0, 100) end, "%3d%%", "%+.0f%%", 1, false, false, immune_type) self:mouseTooltip(self.TOOLTIP_SPECIFIC_IMMUNE, s:drawColorStringBlended(self.font, ("%s: #00ff00#%s"):format(immune_name, text), w, h, 255, 255, 255, true)) h = h + self.font_h end
 		immune_type = "knockback_immune" immune_name = "Knockback  " if player:attr(immune_type) then text = compare_fields(player, actor_to_compare, function(actor, ...) return util.bound((actor:attr(...) or 0) * 100, 0, 100) end, "%3d%%", "%+.0f%%", 1, false, false, immune_type) self:mouseTooltip(self.TOOLTIP_SPECIFIC_IMMUNE, s:drawColorStringBlended(self.font, ("%s: #00ff00#%s"):format(immune_name, text), w, h, 255, 255, 255, true)) h = h + self.font_h end
 		immune_type = "stone_immune" immune_name =     "Stoning    " if player:attr(immune_type) then text = compare_fields(player, actor_to_compare, function(actor, ...) return util.bound((actor:attr(...) or 0) * 100, 0, 100) end, "%3d%%", "%+.0f%%", 1, false, false, immune_type) self:mouseTooltip(self.TOOLTIP_SPECIFIC_IMMUNE, s:drawColorStringBlended(self.font, ("%s: #00ff00#%s"):format(immune_name, text), w, h, 255, 255, 255, true)) h = h + self.font_h end
@@ -1085,6 +1086,7 @@ function _M:dump()
 	immune_type = "disarm_immune" immune_name = "Disarm Resistance" if player:attr(immune_type) then nl(("%s: %3d%%"):format(immune_name, util.bound(player:attr(immune_type) * 100, 0, 100))) end
 	immune_type = "pin_immune" immune_name = "Pinning Resistance" if player:attr(immune_type) then nl(("%s: %3d%%"):format(immune_name, util.bound(player:attr(immune_type) * 100, 0, 100))) end
 	immune_type = "stun_immune" immune_name = "Stun Resistance" if player:attr(immune_type) then nl(("%s: %3d%%"):format(immune_name, util.bound(player:attr(immune_type) * 100, 0, 100))) end
+	immune_type = "sleep_immune" immune_name = "Sleep Resistance" if player:attr(immune_type) then nl(("%s: %3d%%"):format(immune_name, util.bound(player:attr(immune_type) * 100, 0, 100))) end
 	immune_type = "fear_immune" immune_name = "Fear Resistance" if player:attr(immune_type) then nl(("%s: %3d%%"):format(immune_name, util.bound(player:attr(immune_type) * 100, 0, 100))) end
 	immune_type = "knockback_immune" immune_name = "Knockback Resistance" if player:attr(immune_type) then nl(("%s: %3d%%"):format(immune_name, util.bound(player:attr(immune_type) * 100, 0, 100))) end
 	immune_type = "stone_immune" immune_name = "Stoning Resistance" if player:attr(immune_type) then nl(("%s: %3d%%"):format(immune_name, util.bound(player:attr(immune_type) * 100, 0, 100))) end