diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 811aaef28f850e62eca0ac064253facf029ce39e..39a9eb9ada68c4e2963435b9fd0c51d288a5cbb3 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -475,10 +475,10 @@ function _M:setupCommands()
 				self.player.esp.range = 50
 				self.player.inc_damage.all = 100000
 --				self:changeLevel(15, "high-peak")
-				self:changeLevel(1, "town-gates-of-morning")
---				self:changeLevel(1, "wilderness-arda-fareast")
---				game.memory_levels["wilderness-arda-fareast-1"] = game.level
---				self.player:grantQuest("orc-pride")
+--				self:changeLevel(1, "town-gates-of-morning")
+				self:changeLevel(1, "wilderness-arda-fareast")
+				game.memory_levels["wilderness-arda-fareast-1"] = game.level
+				self.player:grantQuest("orc-pride")
 --				self.player:grantQuest("escort-duty")
 			end
 		end,
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 218d24c77d0a67effa3a7a41163c7034303c8656..1e8f474d595631d84d7ba815ebf3a43eb4685abf 100644
--- a/game/modules/tome/data/general/npcs/orc-rak-shor.lua
+++ b/game/modules/tome/data/general/npcs/orc-rak-shor.lua
@@ -39,8 +39,8 @@ newEntity{
 
 	open_door = true,
 
-	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { talent_in=3, },
+	autolevel = "caster",
+	ai = "dumb_talented_simple", ai_state = { talent_in=1, },
 	energy = { mod=1 },
 	stats = { str=20, dex=8, mag=6, con=16 },
 }
@@ -67,6 +67,28 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
 
 	resolvers.talents{
 		[Talents.T_SUMMON]=1,
---		[Talents.T_]=3,
+		[Talents.T_SOUL_ROT]=5,
+	},
+}
+
+newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
+	name = "orc blood mage", color=colors.CRIMSON,
+	desc = [[An orc dressed in black robes. He mumbles is a harsh tongue.]],
+	level_range = {27, nil}, exp_worth = 1,
+	rarity = 2,
+	max_life = resolvers.rngavg(110,120), life_rating = 12,
+	resolvers.equip{
+		{type="weapon", subtype="staff", autoreq=true},
+		{type="armor", subtype="cloth", autoreq=true},
+	},
+	combat_armor = 0, combat_def = 5,
+
+	-- Nullify their cooldowns
+	talent_cd_reduction={[Talents.T_SOUL_ROT]=2, [Talents.T_BLOOD_GRASP]=4, },
+
+	resolvers.talents{
+		[Talents.T_SOUL_ROT]=5,
+		[Talents.T_BLOOD_GRASP]=5,
+		[Talents.T_CURSE_OF_VULNERABILITY]=5,
 	},
 }
diff --git a/game/modules/tome/data/gfx/particles/blood.lua b/game/modules/tome/data/gfx/particles/blood.lua
new file mode 100644
index 0000000000000000000000000000000000000000..44959daddadf47f3552ef76ab4a581ab838d7eec
--- /dev/null
+++ b/game/modules/tome/data/gfx/particles/blood.lua
@@ -0,0 +1,38 @@
+-- ToME - Tales of Middle-Earth
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+return {
+	base = 1000,
+
+	angle = { 0, 360 }, anglev = { 2000, 4000 }, anglea = { 200, 600 },
+
+	life = { 5, 10 },
+	size = { 2, 5 }, sizev = {0, 0}, sizea = {0, 0},
+
+	r = {80, 200}, rv = {0, 10}, ra = {0, 0},
+	g = {0, 0}, gv = {0, 0}, ga = {0, 0},
+	b = {0, 0}, bv = {0, 0}, ba = {0, 0},
+	a = {255, 255}, av = {0, 0}, aa = {0, 0},
+
+}, function(self)
+	self.nb = (self.nb or 0) + 1
+	if self.nb < 4 then
+		self.ps:emit(100)
+	end
+end
diff --git a/game/modules/tome/data/gfx/particles/bolt_blood.lua b/game/modules/tome/data/gfx/particles/bolt_blood.lua
new file mode 100644
index 0000000000000000000000000000000000000000..b71c3cf4c594e3d674eb6dde5297cb324dab7bd6
--- /dev/null
+++ b/game/modules/tome/data/gfx/particles/bolt_blood.lua
@@ -0,0 +1,51 @@
+-- ToME - Tales of Middle-Earth
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+return { generator = function()
+	local radius = 0
+	local sradius = (radius + 0.5) * (engine.Map.tile_w + engine.Map.tile_h) / 2
+	local ad = rng.float(0, 360)
+	local a = math.rad(ad)
+	local r = rng.float(0, sradius / 6)
+	local x = r * math.cos(a)
+	local y = r * math.sin(a)
+	local bx = math.floor(x / engine.Map.tile_w)
+	local by = math.floor(y / engine.Map.tile_h)
+	local static = rng.percent(40)
+
+	return {
+		trail = 1,
+		life = 6,
+		size = 3, sizev = 0, sizea = 0,
+
+		x = x, xv = 0, xa = 0,
+		y = y, yv = 0, ya = 0,
+		dir = a, dirv = 0, dira = 0,
+		vel = sradius / 2 / 6, velv = 0, vela = 0,
+
+		r = rng.range(180, 220)/255,  rv = 0, ra = 0,
+		g = 0,      gv = 0, ga = 0,
+		b = 0,      bv = 0, ba = 0,
+		a = rng.range(80, 220)/255,   av = 0, aa = 0,
+	}
+end, },
+function(self)
+	self.ps:emit(30)
+end,
+30*6
diff --git a/game/modules/tome/data/gfx/particles/bolt_slime.lua b/game/modules/tome/data/gfx/particles/bolt_slime.lua
new file mode 100644
index 0000000000000000000000000000000000000000..78127f36e84c7fd35f8036b0a6c450e75d80cdb1
--- /dev/null
+++ b/game/modules/tome/data/gfx/particles/bolt_slime.lua
@@ -0,0 +1,51 @@
+-- ToME - Tales of Middle-Earth
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+return { generator = function()
+	local radius = 0
+	local sradius = (radius + 0.5) * (engine.Map.tile_w + engine.Map.tile_h) / 2
+	local ad = rng.float(0, 360)
+	local a = math.rad(ad)
+	local r = rng.float(0, sradius / 6)
+	local x = r * math.cos(a)
+	local y = r * math.sin(a)
+	local bx = math.floor(x / engine.Map.tile_w)
+	local by = math.floor(y / engine.Map.tile_h)
+	local static = rng.percent(40)
+
+	return {
+		trail = 1,
+		life = 6,
+		size = 3, sizev = 0, sizea = 0,
+
+		x = x, xv = 0, xa = 0,
+		y = y, yv = 0, ya = 0,
+		dir = a, dirv = 0, dira = 0,
+		vel = sradius / 2 / 6, velv = 0, vela = 0,
+
+		r = 0,  rv = 0, ra = 0,
+		g = rng.range(80, 200)/255,      gv = 0, ga = 0,
+		b = 0,      bv = 0, ba = 0,
+		a = rng.range(80, 220)/255,   av = 0, aa = 0,
+	}
+end, },
+function(self)
+	self.ps:emit(30)
+end,
+30*6
diff --git a/game/modules/tome/data/talents/misc/npcs.lua b/game/modules/tome/data/talents/misc/npcs.lua
index cdc7fe1d99118b60bc7e2999864e765885294a63..949e75a6a1cc0cafb95733d20b6e71bdc07a18bd 100644
--- a/game/modules/tome/data/talents/misc/npcs.lua
+++ b/game/modules/tome/data/talents/misc/npcs.lua
@@ -20,6 +20,7 @@
 -- race & classes
 newTalentType{ type="technique/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
 newTalentType{ no_silence=true, type="spell/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
+newTalentType{ no_silence=true, type="corruption/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
 newTalentType{ type="wild-gift/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
 newTalentType{ type="other/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
 newTalentType{ type="undead/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
@@ -843,3 +844,74 @@ newTalent{
 		The damage will increase with Willpower and Cunning stats.]]):format(self:combatTalentMindDamage(t, 10, 170))
 	end,
 }
+
+newTalent{
+	name = "Soul Rot",
+	type = {"corruption/other", 1},
+	points = 5,
+	cooldown = 3,
+	vim = 10,
+	range = 20,
+	proj_speed = 10,
+	action = function(self, t)
+		local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_slime"}}
+		local x, y = self:getTarget(tg)
+		if not x or not y then return nil end
+		self:projectile(tg, x, y, DamageType.BLIGHT, self:spellCrit(self:combatTalentSpellDamage(t, 20, 250)), {type="slime"})
+		game:playSoundNear(self, "talents/slime")
+		return true
+	end,
+	info = function(self)
+		return ([[Projects a bolt of pure blight, doing %0.2f blight damage.
+		The damage will increase with Magic stat.]]):format(self:combatTalentSpellDamage(t, 20, 250))
+	end,
+}
+
+newTalent{
+	name = "Blood Grasp",
+	type = {"corruption/other", 1},
+	points = 5,
+	cooldown = 5,
+	vim = 20,
+	range = 20,
+	proj_speed = 20,
+	action = function(self, t)
+		local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_blood"}}
+		local x, y = self:getTarget(tg)
+		if not x or not y then return nil end
+		self:projectile(tg, x, y, DamageType.DRAINLIFE, {dam=self:spellCrit(self:combatTalentSpellDamage(t, 10, 220)), healfactor=0.5}, {type="blood"})
+		game:playSoundNear(self, "talents/slime")
+		return true
+	end,
+	info = function(self)
+		return ([[Projects a bolt of corrupted blood doing %0.2f blight damage and healing the caster for half the damage done.
+		The damage will increase with Magic stat.]]):format(self:combatTalentSpellDamage(t, 10, 220))
+	end,
+}
+
+newTalent{
+	name = "Curse of Vulnerability",
+	type = {"corruption/other", 1},
+	points = 5,
+	cooldown = 20,
+	vim = 20,
+	range = 20,
+	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
+		self:project(tg, x, y, function(tx, ty)
+			local target = game.level.map(tx, ty, Map.ACTOR)
+			if not target then return end
+			if target:checkHit(self:combatSpellpower(), target:combatSpellResist(), 0, 95, 15) then
+				target:setEffect(target.EFF_CURSE_VULNERABILITY, 10, {power=self:combatTalentSpellDamage(t, 10, 85)})
+			end
+		end)
+		game:playSoundNear(self, "talents/slime")
+		return true
+	end,
+	info = function(self)
+		return ([[Curses your target,
+		The resistances will decrease with Magic stat.]]):format(self:combatTalentSpellDamage(t, 10, 85))
+	end,
+}
diff --git a/game/modules/tome/data/timed_effects.lua b/game/modules/tome/data/timed_effects.lua
index 21aef45e33bc47972dc5bca4ec02c260c57f7a37..73a0d6407948f09708147b3ef021a67264043eeb 100644
--- a/game/modules/tome/data/timed_effects.lua
+++ b/game/modules/tome/data/timed_effects.lua
@@ -943,3 +943,21 @@ newEffect{
 		end
 	end,
 }
+
+newEffect{
+	name = "CURSE_VULNERABILITY",
+	desc = "Curse of Vulnerability",
+	type = "curse",
+	status = "detrimental",
+	parameters = { power=10 },
+	on_gain = function(self, err) return "#Target# is cursed.", "+Curse" end,
+	on_lose = function(self, err) return "#Target# is no longer cursed.", "-Curse" end,
+	activate = function(self, eff)
+		eff.tmpid = self:addTemporaryValue("resists", {
+			all = -eff.power,
+		})
+	end,
+	deactivate = function(self, eff)
+		self:removeTemporaryValue("resists", eff.tmpid)
+	end,
+}
diff --git a/game/modules/tome/data/zones/eruan/zone.lua b/game/modules/tome/data/zones/eruan/zone.lua
index 166bb171665d5b406a3106f6d24a0b350689a4ae..7695e69820df3ddc34b35d7939aaa1a609ba6a45 100644
--- a/game/modules/tome/data/zones/eruan/zone.lua
+++ b/game/modules/tome/data/zones/eruan/zone.lua
@@ -64,7 +64,7 @@ return {
 	{
 		[1] = {
 			generator = { map = {
-				up = "UP_WILDERNESS",
+				up = "UP_WILDERNESS_FAR_EAST",
 			}, },
 		},
 		[5] = {
diff --git a/game/modules/tome/data/zones/flooded-cave/zone.lua b/game/modules/tome/data/zones/flooded-cave/zone.lua
index a3277fb2b7c85a3be17e0af5ae48d6cef328b3a7..c647deafc64f5854c9871d4c000b4ca9cf3dd7df 100644
--- a/game/modules/tome/data/zones/flooded-cave/zone.lua
+++ b/game/modules/tome/data/zones/flooded-cave/zone.lua
@@ -62,7 +62,7 @@ return {
 	{
 		[1] = {
 			generator = { map = {
-				up = "UP_WILDERNESS",
+				up = "UP_WILDERNESS_FAR_EAST",
 			}, },
 		},
 		[2] = {