diff --git a/game/modules/tome/data/birth/races/elf.lua b/game/modules/tome/data/birth/races/elf.lua
index 8ce6d30c1fd4cbb7a02153a4b15eb60181efc99d..fe67e01ac2fffc4ad8619dbfa4d502a99539182b 100644
--- a/game/modules/tome/data/birth/races/elf.lua
+++ b/game/modules/tome/data/birth/races/elf.lua
@@ -33,7 +33,7 @@ newBirthDescriptor{
 		subrace =
 		{
 			Nandor = "allow",
-			Avari = "allow",
+			Noldor = "allow",
 			__ALL__ = "disallow",
 		},
 		subclass =
@@ -75,6 +75,24 @@ newBirthDescriptor
 		life_rating = 9,
 	},
 }
+
+newBirthDescriptor
+{
+	type = "subrace",
+	name = "Noldor",
+	desc = {
+		"Originally the Second Clan of the elves in both order and size, Noldor were exiled in Middle-Earth by the Valar after the first kinslaying.",
+		"Most of the Noldor sailed back to Aman at the end of the First Age; but some, like Galadriel or Celebrimbor, refused the pardon of the Valar and remained.",
+		"In the Third Age, the Noldor dwindled, and by the end of the Third Age the only ones remaining in Middle-Earth were in Rivendell and in Lothlórien.",
+		"They possess the Wrath of the Eldar talent, which allows them a boost to the damage both inflicted and resisted once in a while.",
+	},
+	stats = { str=2, mag=-2, wil=1, cun=0, dex=3, con=1 },
+	experience = 1.3,
+	talents = { [ActorTalents.T_NOLDOR_WRATH]=1 },
+	copy = {
+		life_rating = 11,
+	},
+}
 --[[
 newBirthDescriptor
 {
diff --git a/game/modules/tome/data/talents/misc/misc.lua b/game/modules/tome/data/talents/misc/misc.lua
index 90c08c3abcc3102261a5d6c25fc1c2a7fff38691..6e8dd00bfb1263bfb17eef9be02c73a75ffa0893 100644
--- a/game/modules/tome/data/talents/misc/misc.lua
+++ b/game/modules/tome/data/talents/misc/misc.lua
@@ -221,6 +221,22 @@ newTalent{
 	end,
 }
 
+-- Noldor's power: temporary damage increase and damage reduction
+newTalent{
+	short_name = "NOLDOR_WRATH",
+	name = "Wrath of the Eldar",
+	type = {"base/race", 1},
+	cooldown = 50,
+	action = function(self, t)
+		self:setEffect(self.EFF_NOLDOR_WRATH, 5, {power=7 + self:getWil(10)})
+		return true
+	end,
+	info = function(self)
+		return ([[Call upon the power of the ancient Noldor, increasing all damage by %d%% and reducing all damage taken by %d%% for 5 turns.
+		The bonus will increase with the Willpower stat]]):format(7 + self:getWil(10), 7 + self:getWil(10))
+	end,
+}
+
 -- Orc's power: temporary damage increase
 newTalent{
 	short_name = "ORC_FURY",
@@ -232,7 +248,7 @@ newTalent{
 		return true
 	end,
 	info = function(self)
-		return ([[Summons your lust for blood and destruction, increasing all damage by %d for 5 turns.
+		return ([[Summons your lust for blood and destruction, increasing all damage by %d%% for 5 turns.
 		The bonus will increase with the Willpower stat]]):format(10 + self:getWil(20))
 	end,
 }
diff --git a/game/modules/tome/data/timed_effects.lua b/game/modules/tome/data/timed_effects.lua
index 1898f4ea3e3c2b2812dd67db075095e5f30cacc9..42bad9c2ed313df1b9fb0e226580a2893485ec75 100644
--- a/game/modules/tome/data/timed_effects.lua
+++ b/game/modules/tome/data/timed_effects.lua
@@ -491,6 +491,24 @@ newEffect{
 	end,
 }
 
+newEffect{
+	name = "NOLDOR_WRATH",
+	desc = "Wrath of the Eldar",
+	type = "physical",
+	status = "beneficial",
+	parameters = { power=10 },
+	on_gain = function(self, err) return "#Target# radiates power." end,
+	on_lose = function(self, err) return "#Target# aura of power vanishes." end,
+	activate = function(self, eff)
+		eff.pid1 = self:addTemporaryValue("inc_damage", {all=eff.power})
+		eff.pid2 = self:addTemporaryValue("resists", {all=eff.power})
+	end,
+	deactivate = function(self, eff)
+		self:removeTemporaryValue("inc_damage", eff.pid1)
+		self:removeTemporaryValue("resists", eff.pid2)
+	end,
+}
+
 newEffect{
 	name = "ORC_FURY",
 	desc = "Orcish Fury",
diff --git a/game/modules/tome/dialogs/MapMenu.lua b/game/modules/tome/dialogs/MapMenu.lua
index 3c1b443bf5d1ef9c58405509bda2799533b31318..88f932960f5b1bdf053af97f3e1ab1823aba14b2 100644
--- a/game/modules/tome/dialogs/MapMenu.lua
+++ b/game/modules/tome/dialogs/MapMenu.lua
@@ -71,6 +71,7 @@ function _M:use()
 	elseif act == "quests" then game.key:triggerVirtual("SHOW_QUESTS")
 	elseif act == "levelup" then game.key:triggerVirtual("LEVELUP")
 	elseif act == "inventory" then game.key:triggerVirtual("SHOW_INVENTORY")
+	elseif act == "rest" then game.key:triggerVirtual("REST")
 	elseif act == "talent" then
 		local d = self.list[self.sel]
 		if d.set_target then
@@ -96,6 +97,7 @@ function _M:generateList()
 	if g and g.change_level and self.on_player then list[#list+1] = {name="Change level", action="change_level", color=colors.simple(colors.VIOLET)} end
 	if o and self.on_player then list[#list+1] = {name="Pickup item", action="pickup", color=colors.simple(colors.ANTIQUE_WHITE)} end
 	if g and not self.on_player then list[#list+1] = {name="Move to", action="move_to", color=colors.simple(colors.ANTIQUE_WHITE)} end
+	if self.on_player then list[#list+1] = {name="Rest a while", action="rest", color=colors.simple(colors.ANTIQUE_WHITE)} end
 	if self.on_player then list[#list+1] = {name="Inventory", action="inventory", color=colors.simple(colors.ANTIQUE_WHITE)} end
 	if self.on_player then list[#list+1] = {name="Character Sheet", action="character_sheet", color=colors.simple(colors.ANTIQUE_WHITE)} end
 	if self.on_player then list[#list+1] = {name="Quest Log", action="quests", color=colors.simple(colors.ANTIQUE_WHITE)} end