diff --git a/game/engines/default/engine/resolvers.lua b/game/engines/default/engine/resolvers.lua
index 34845d74f4d806b1d279da1c9767f28eb0b65828..a94bc81cfbe247b61fabe8ad0b7803014001f8f9 100644
--- a/game/engines/default/engine/resolvers.lua
+++ b/game/engines/default/engine/resolvers.lua
@@ -93,6 +93,28 @@ function resolvers.calc.talents(t, e)
 	return nil
 end
 
+--- Talents resolver, random choice of one
+function resolvers.rngtalent(list)
+	return {__resolver="rngtalent", list}
+end
+function resolvers.calc.rngtalent(t, e)
+	local lvls = false
+	local levelup_talents = e._levelup_talents or {}
+	local tid = rng.table(table.keys(t[1]))
+	local level = t[1][tid]
+
+	if type(level) == "table" then
+		levelup_talents[tid] = level
+		level = level.base
+		lvls = true
+	end
+	print("RNG Talent resolver for", e.name, ":", tid, "=>", level)
+	e:learnTalent(tid, true, level)
+
+	if lvls then e._levelup_talents = levelup_talents end
+	return nil
+end
+
 --- Talents masteries
 function resolvers.tmasteries(list)
 	return {__resolver="tmasteries", list}
diff --git a/game/modules/tome/data/general/npcs/orc-rak-shor.lua b/game/modules/tome/data/general/npcs/orc-rak-shor.lua
index 7f535edfa78ed9dc7a65ad274f1c086be5206c71..f5e70c1fea4ea223c217aa7eedecc843a7736586 100644
--- a/game/modules/tome/data/general/npcs/orc-rak-shor.lua
+++ b/game/modules/tome/data/general/npcs/orc-rak-shor.lua
@@ -64,19 +64,25 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
 		{type="armor", subtype="cloth", autoreq=true},
 	},
 	combat_armor = 0, combat_def = 5,
-	summon = {
-		{type="undead", subtype="skeleton", number=1, hasxp=false},
-		{type="humanoid", subtype="ghoul", number=1, hasxp=false},
-	},
-	make_escort = {
-		{type="undead", subtype="ghoul", no_subescort=true, chance=50, number=resolvers.mbonus(3, 2)},
-		{type="undead", subtype="skeleton", no_subescort=true, chance=50, number=resolvers.mbonus(3, 2)},
-	},
+
+	necrotic_aura_base_souls = resolvers.rngavg(5, 10),
 
 	resolvers.talents{
-		[Talents.T_SUMMON]=1,
-		[Talents.T_SOUL_ROT]={base=5, every=10, max=8},
+		[Talents.T_NECROTIC_AURA] = 1,
+		[Talents.T_AURA_MASTERY] = 5,
+		[Talents.T_CREATE_MINIONS]={base=4, every=5, max=7},
+		[Talents.T_RIGOR_MORTIS]={base=3, every=5, max=7},
+		[Talents.T_INVOKE_DARKNESS]={base=5, every=5, max=9},
+		[Talents.T_VAMPIRIC_GIFT]={base=2, every=7, max=7},
 	},
+	resolvers.rngtalent{
+		[Talents.T_CIRCLE_OF_DEATH]={base=3, every=5, max=7},
+		[Talents.T_SURGE_OF_UNDEATH]={base=3, every=5, max=7},
+		[Talents.T_WILL_O__THE_WISP]={base=3, every=5, max=7},
+		[Talents.T_FORGERY_OF_HAZE]={base=3, every=5, max=7},
+		[Talents.T_FROSTDUSK]={base=3, every=5, max=7},
+	},
+	resolvers.sustains_at_birth(),
 }
 
 newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
@@ -128,4 +134,5 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
 		[Talents.T_BONE_SHIELD]={base=5, every=150, max=8},
 		[Talents.T_BLOOD_SPRAY]={base=4, every=10, max=8},
 	},
+	resolvers.sustains_at_birth(),
 }
diff --git a/game/modules/tome/data/general/npcs/vampire.lua b/game/modules/tome/data/general/npcs/vampire.lua
index dc95e31fc356ba5572a49fd6dfa774cd933b483c..16334ba26b14e92cd22293c0fdfbc5e431a37b9f 100644
--- a/game/modules/tome/data/general/npcs/vampire.lua
+++ b/game/modules/tome/data/general/npcs/vampire.lua
@@ -51,7 +51,7 @@ newEntity{
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=9, },
 	stats = { str=12, dex=12, mag=12, con=12 },
 	infravision = 10,
-	life_regen = 3,
+	life_regen = 3, life_rating = 14,
 	size_category = 3,
 	rank = 2,
 
@@ -61,7 +61,10 @@ newEntity{
 
 	resolvers.sustains_at_birth(),
 
-	resolvers.talents{ [Talents.T_BLURRED_MORTALITY]={base=1, every=7, max=6} },
+	resolvers.talents{
+		[Talents.T_BLURRED_MORTALITY]={base=1, every=7, max=6},
+		[Talents.T_VAMPIRIC_GIFT]={base=1, every=7, max=6},
+	},
 
 	resists = { [DamageType.COLD] = 80, [DamageType.NATURE] = 80, [DamageType.LIGHT] = -50,  },
 	blind_immune = 1,
@@ -80,7 +83,10 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	max_life = resolvers.rngavg(40,50),
 	combat_armor = 7, combat_def = 6,
 
-	resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5} },
+	resolvers.talents{
+		[Talents.T_STUN]={base=1, every=7, max=5},
+		[Talents.T_INVOKE_DARKNESS]={base=3, every=7, max=5},
+	},
 }
 
 newEntity{ base = "BASE_NPC_VAMPIRE",
@@ -91,7 +97,12 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 9, combat_def = 6,
 
-	resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5}, [Talents.T_BLUR_SIGHT]={base=1, every=7, max=5}, [Talents.T_ROTTING_DISEASE]={base=1, every=7, max=5}, },
+	resolvers.talents{
+		[Talents.T_STUN]={base=1, every=7, max=5},
+		[Talents.T_BLUR_SIGHT]={base=1, every=7, max=5},
+		[Talents.T_ROTTING_DISEASE]={base=1, every=7, max=5},
+		[Talents.T_CIRCLE_OF_DEATH]={base=1, every=7, max=6},
+	},
 }
 
 newEntity{ base = "BASE_NPC_VAMPIRE",
@@ -102,7 +113,13 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	max_life = resolvers.rngavg(80,90),
 	combat_armor = 10, combat_def = 8,
 	ai = "dumb_talented_simple", ai_state = { talent_in=6, },
-	resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5}, [Talents.T_BLUR_SIGHT]={base=2, every=7, max=5}, [Talents.T_PHANTASMAL_SHIELD]={base=1, every=7, max=5}, [Talents.T_ROTTING_DISEASE]={base=2, every=7, max=5}, },
+	resolvers.talents{
+		[Talents.T_STUN]={base=1, every=7, max=5},
+		[Talents.T_BLUR_SIGHT]={base=2, every=7, max=5},
+		[Talents.T_PHANTASMAL_SHIELD]={base=1, every=7, max=5},
+		[Talents.T_ROTTING_DISEASE]={base=2, every=7, max=5},
+		[Talents.T_COLD_FLAMES]={base=1, every=7, max=6},
+	},
 }
 
 newEntity{ base = "BASE_NPC_VAMPIRE",
@@ -117,7 +134,14 @@ It can summon the very shades of its victims from beyond the grave to come ensla
 	ai = "tactical", ai_state = { talent_in=4, },
 	resolvers.inscriptions(1, "rune"),
 	summon = {{type="undead", number=1, hasxp=false}, },
-	resolvers.talents{ [Talents.T_STUN]={base=2, every=7, max=6}, [Talents.T_SUMMON]=1, [Talents.T_BLUR_SIGHT]={base=3, every=7, max=7}, [Talents.T_PHANTASMAL_SHIELD]={base=2, every=7, max=6}, [Talents.T_ROTTING_DISEASE]={base=3, every=7, max=7}, },
+	resolvers.talents{
+		[Talents.T_STUN]={base=2, every=7, max=6},
+		[Talents.T_SUMMON]=1,
+		[Talents.T_BLUR_SIGHT]={base=3, every=7, max=7},
+		[Talents.T_PHANTASMAL_SHIELD]={base=2, every=7, max=6},
+		[Talents.T_ROTTING_DISEASE]={base=3, every=7, max=7},
+		[Talents.T_FORGERY_OF_HAZE]={base=2, every=7, max=5},
+	},
 	on_die = function(self, who)
 		local part = "ELDER_VAMPIRE_BLOOD"
 		if game.player:hasQuest("brotherhood-of-alchemists") then
@@ -137,7 +161,15 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	ai = "tactical", ai_state = { talent_in=3, },
 	resolvers.inscriptions(1, "rune"),
 	summon = {{type="undead", number=1, hasxp=false}, },
-	resolvers.talents{ [Talents.T_STUN]={base=4, every=7, max=8}, [Talents.T_SUMMON]=1, [Talents.T_BLUR_SIGHT]={base=4, every=7, max=8}, [Talents.T_PHANTASMAL_SHIELD]={base=5, every=7, max=8}, [Talents.T_ROTTING_DISEASE]={base=5, every=7, max=8}, },
+	resolvers.talents{
+		[Talents.T_FORGERY_OF_HAZE]={base=2, every=7, max=6},
+		[Talents.T_IMPENDING_DOOM]={base=2, every=7, max=6},
+		[Talents.T_STUN]={base=4, every=7, max=8},
+		[Talents.T_SUMMON]=1,
+		[Talents.T_BLUR_SIGHT]={base=4, every=7, max=8},
+		[Talents.T_PHANTASMAL_SHIELD]={base=5, every=7, max=8},
+		[Talents.T_ROTTING_DISEASE]={base=5, every=7, max=8},
+	},
 	make_escort = {
 		{type="undead", number=resolvers.mbonus(2, 2)},
 	},
diff --git a/game/modules/tome/data/zones/dreadfell/npcs.lua b/game/modules/tome/data/zones/dreadfell/npcs.lua
index 86ad9a39538ab364b9bbf276d5b9f3a7ebf67e1d..cb4194d09ad367e74c64ed85db606b41a6d38ce1 100644
--- a/game/modules/tome/data/zones/dreadfell/npcs.lua
+++ b/game/modules/tome/data/zones/dreadfell/npcs.lua
@@ -79,6 +79,7 @@ newEntity{ define_as = "THE_MASTER",
 		[Talents.T_CIRCLE_OF_DEATH]={base=3, every=5, max=5},
 		[Talents.T_SURGE_OF_UNDEATH]={base=3, every=5, max=5},
 		[Talents.T_WILL_O__THE_WISP]={base=3, every=5, max=5},
+		[Talents.T_VAMPIRIC_GIFT]={base=2, every=7, max=5},
 
 		[Talents.T_CONGEAL_TIME]={base=2, every=5, max=5},
 		[Talents.T_MANATHRUST]={base=4, every=5, max=8},
diff --git a/ideas/spells.ods b/ideas/spells.ods
index fd13033547cca4982c5a8a1c675a155d3453e272..dde454d624abd42d0c34b801b9896dd4faa89f60 100644
Binary files a/ideas/spells.ods and b/ideas/spells.ods differ