diff --git a/game/engines/default/engine/HotkeysDisplay.lua b/game/engines/default/engine/HotkeysDisplay.lua
index 93b967469140e198497b3e5301eb0fd2193fb01c..1e7d69ce9010381c28f09b3b50e80bc9b6dfaf50 100644
--- a/game/engines/default/engine/HotkeysDisplay.lua
+++ b/game/engines/default/engine/HotkeysDisplay.lua
@@ -156,7 +156,7 @@ function _M:onMouse(button, mx, my, click, on_over)
 						text:merge(self.actor:getTalentFullDescription(t))
 					elseif a.hotkey[i] and a.hotkey[i][1] == "inventory" then
 						local o = a:findInAllInventories(a.hotkey[i][2])
-						text = o:getDesc()
+						if o then text = o:getDesc() else text = "Missing!" end
 					end
 					on_over(text)
 				end
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 13852d82a538f5d68ee88c16e59b2852e22dddcc..031afc03109641db17c80749100ddb778841d58b 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -963,11 +963,14 @@ function _M:onQuit()
 	end
 end
 
---- Requests the game to save
-function _M:saveGame()
+--- When a save is being made, stop running/resting
+function _M:onSavefilePush()
 	self.player:runStop("saving")
 	self.player:restStop("saving")
+end
 
+--- Requests the game to save
+function _M:saveGame()
 	-- savefile_pipe is created as a global by the engine
 	savefile_pipe:push(self.save_name, "game", self)
 	world:saveWorld()
diff --git a/game/modules/tome/data/chats/gates-of-morning-welcome.lua b/game/modules/tome/data/chats/gates-of-morning-welcome.lua
index 9575dcebd1e9ddfecaf44007a535285cdb0af018..786840141644d66e35f6f36304da69295b1ea50d 100644
--- a/game/modules/tome/data/chats/gates-of-morning-welcome.lua
+++ b/game/modules/tome/data/chats/gates-of-morning-welcome.lua
@@ -65,7 +65,7 @@ You may now enter the Gates of Morning.]],
 		{"Thank you, my lady.", action=function(npc, player)
 			world:gainAchievement("SPYDRIC_INFESTATION", game.player)
 			player:setQuestStatus("spydric-infestation", engine.Quest.DONE)
-			npc:move(162, 28, true)
+			npc:move(46, 27, true)
 			npc.can_talk = "gates-of-morning-main"
 			game:setAllowedBuild("divine")
 			game:setAllowedBuild("divine_sun_paladin", true)
diff --git a/game/modules/tome/data/chats/zemekkys.lua b/game/modules/tome/data/chats/zemekkys.lua
index 83a999448c183ddfbc53b1ec77bf49ea33ac594a..66a368aba37b235531ce79d1320b95cd50233b2f 100644
--- a/game/modules/tome/data/chats/zemekkys.lua
+++ b/game/modules/tome/data/chats/zemekkys.lua
@@ -82,14 +82,14 @@ I blow myself up quite enough already without that thing in the house, thank you
 Besides, I still can't help you unless you have a Blood-Runed Athame to etch a portal.
 Er, and that portal must be etched on a piece of prepared Resonating Marble.
 The Gates of the Morning has a slab of Marble that once could have served, but a number of, uh, incidents have taken their toll.
-It'll require a Resonating Diamond to get it properly prepared. Oh, and I want 200 gold.]],
+It'll require a Resonating Diamond to get it properly prepared. Oh, and I want 100 gold.]],
 	answers = {
 		{"Where can I find all that?", jump="quest"},
 	}
 }
 
 newChat{ id="quest",
-	text = [[Try your purse for the 200 gold. As for an Athame and a Resonating Diamond, I assume the orcs have some if they're cooking up portals to use that Orb on. Try the Vor Armory. It so happens that I know a back way in. Never mind why.]],
+	text = [[Try your purse for the 100 gold. As for an Athame and a Resonating Diamond, I assume the orcs have some if they're cooking up portals to use that Orb on. Try the Vor Armory. It so happens that I know a back way in. Never mind why.]],
 	answers = {
 		{"Thank you.", action=function(npc, player)
 			player:grantQuest("west-portal")
@@ -124,9 +124,9 @@ newChat{ id="athame3",
 -- Return gem
 -----------------------------------------------------------------
 newChat{ id="complete",
-	text = [[[Yes? You got the athame, the gem and 200 gold?]],
+	text = [[[Yes? You got the athame, the gem and 100 gold?]],
 	answers = {
-		{"[Give him the gem, the athame and 200 gold]", jump="complete2", cond=check_materials, action=remove_materials},
+		{"[Give him the gem, the athame and 100 gold]", jump="complete2", cond=check_materials, action=remove_materials},
 		{"Sorry it seems I miss some stuff. I will be back."},
 	}
 }
diff --git a/game/modules/tome/data/general/npcs/major-demon.lua b/game/modules/tome/data/general/npcs/major-demon.lua
index b5cf517bf36df426ea91628b51f5c486e1004073..cb24ef6af627743417dc68f479c69fd28401da91 100644
--- a/game/modules/tome/data/general/npcs/major-demon.lua
+++ b/game/modules/tome/data/general/npcs/major-demon.lua
@@ -142,3 +142,39 @@ newEntity{ base = "BASE_NPC_MAJOR_DEMON",
 	},
 	resolvers.sustains_at_birth(),
 }
+
+newEntity{ base = "BASE_NPC_MAJOR_DEMON",
+	name = "daelach", color=colors.PURPLE, -- Shadow flame
+	desc = [[You can only discern the real shape of this demon, its body is surrounded by a cloud of fiery darkness.
+It moves switftly toward you, casting terrible spells and swinging its weapons at you.]],
+	level_range = {39, nil}, exp_worth = 1,
+	rarity = 6,
+	rank = 3,
+	energy = {mod=1.3},
+	size_category = 4,
+	autolevel = "warriormage",
+	life_rating = 25,
+	combat_armor = 12, combat_def = 20,
+	mana_regen = 100, positive_regen = 100, negative_regen = 100, equilibrium_regen = -100, vim_regen = 100,
+
+	resolvers.equip{ {type="weapon", subtype="longsword", autoreq=true}, },
+	resolvers.equip{ {type="weapon", subtype="waraxe", autoreq=true}, },
+
+	resists={all = resolvers.mbonus(25, 20)},
+
+	stun_immune = 1,
+	blind_immune = 1,
+	knockback_immune = 1,
+
+	resolvers.talents{
+		[Talents.T_CORRUPTED_STRENGTH]=5,
+		[Talents.T_DISARM]=5,
+		[Talents.T_RUSH]=8,
+		[Talents.T_WEAPON_COMBAT]=8,
+		[Talents.T_WEAPONS_MASTERY]=7,
+		[Talents.T_FIRE_STORM]=5,
+		[Talents.T_FIREBEAM]=5,
+		[Talents.T_SHADOW_BLAST]=5,
+		[Talents.T_TWILIGHT_SURGE]=5,
+	},
+}
diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua
index ed82bd829c1db4884c4c5e3ea5d688b6c59e4750..386b29ddb529f83cd320b154d2707191fde80ebf 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts.lua
@@ -23,9 +23,10 @@ local Talents = require "engine.interface.ActorTalents"
 -- This file describes artifacts associated with a boss of the game, they have a high chance of dropping their respective ones, but they can still be found elsewhere
 
 newEntity{ base = "BASE_LONGSWORD",
-	define_as = "LONGSWORD_RINGIL", rarity=false, unided_name = "glittering longsword",
-	name = "Ringil, the glittering sword of Fingolfin", unique=true,
-	desc = [[The sword of Fingolfin, said to have glittered like ice. With it he wounded Morgoth in single combat after the Dagor Bragollach.]],
+	define_as = "LONGSWORD_WINTERTIDE", rarity=false, unided_name = "glittering longsword",
+	name = "Wintertide", unique=true,
+	desc = [[The air seems to freeze around the blade of this sword, draining all heat from the area.
+It is said the Conclave created this weapon for their warmaster during the dark times of the first allure war.]],
 	require = { stat = { str=35 }, },
 	level_range = {35, 45},
 	rarity = 280,
@@ -51,7 +52,7 @@ newEntity{ base = "BASE_LONGSWORD",
 			local tg = {type="ball", range=0, radius=4, friendlyfire=false}
 			who:project(tg, who.x, who.y, engine.DamageType.ICE, 10 + (who:getMag() + who:getWil()) / 2, {type="freeze"})
 			game:playSoundNear(who, "talents/ice")
-			game.logSeen(who, "%s invokes the power of Ringil!", who.name:capitalize())
+			game.logSeen(who, "%s invokes the power of %s!", who.name:capitalize(), self.name)
 			return true
 		end
 	},
@@ -226,9 +227,9 @@ newEntity{ base = "BASE_RING",
 }
 
 newEntity{ base = "BASE_HELM",
-	define_as = "HELM_OF_HAMMERHAND",
-	name = "Steel Helm of Hammerhand", unique=true,
-	desc = [[A great helm as steady as the heroes of the Westdike. Mighty were the blows of Helm, the Hammerhand!]],
+	define_as = "HELM_OF_GARKUL",
+	name = "Steel Helm of Garkul", unique=true,
+	desc = [[A great helm that belonged to Garkul the Devourer, one of the greatest orcs to live.]],
 	require = { stat = { str=16 }, },
 	level_range = {12, 22},
 	rarity = 200,
@@ -278,9 +279,9 @@ newEntity{ base = "BASE_SHIELD",
 }
 
 newEntity{ base = "BASE_SHIELD",
-	define_as = "OLD_MAN_WILLOW_SHIELD",
-	name = "Old Man Willow's Barkwood", unique=true,
-	desc = [[The barkwood of the Old Man's Willow, made into roughly the shape of a shield.]],
+	define_as = "WILLOWRATH_SHIELD",
+	name = "Willowrath's Barkwood", unique=true,
+	desc = [[The barkwood of the Willowrath, made into roughly the shape of a shield.]],
 	require = { stat = { str=25 }, },
 	level_range = {12, 2},
 	rarity = 200,
@@ -575,11 +576,10 @@ newEntity{ base = "BASE_SHIELD",
 }
 
 newEntity{ base = "BASE_WHIP",
-	define_as = "WHIP_GOTHMOG",
+	define_as = "WHIP_URH_ROK",
 	unided_name = "fiery whip",
-	name = "Whip of Gothmog, High Captain of the Balrogs", color=colors.PURPLE, unique = true,
-	desc = [[With this unbearably bright whip of flame, the Balrog Gothmog has become known for never having lost in combat.
-But nothing lasts forever and he was finally defeated by Echtelion in the First Age. His whip must have been taken by the other balrogs from his corpse.]],
+	name = "Whip of Urh'Rok", color=colors.PURPLE, unique = true,
+	desc = [[With this unbearably bright whip of flame, the demon master Urh'Rok has become known for never having lost in combat.]],
 	require = { stat = { dex=48 }, },
 	level_range = {40, 50},
 	rarity = 390,
diff --git a/game/modules/tome/data/quests/orc-hunt.lua b/game/modules/tome/data/quests/orc-hunt.lua
index 53b75beb83e2aa8543ead33c61713cdec30930bd..56b51c78d8deb4ba66c4fbd7f8618987e0ec9dbe 100644
--- a/game/modules/tome/data/quests/orc-hunt.lua
+++ b/game/modules/tome/data/quests/orc-hunt.lua
@@ -21,7 +21,7 @@
 name = "Let's hunt some Orc"
 desc = function(self, who)
 	local desc = {}
-	desc[#desc+1] = "The elder in Last Hope sent you to the old dwarven kingdom of Reknor, deep under the misty mountains, to investigate the orc presence."
+	desc[#desc+1] = "The elder in Last Hope sent you to the old dwarven kingdom of Reknor, deep under the Iron Throne, to investigate the orc presence."
 	desc[#desc+1] = "Find out if they are in any way linked to the lost staff."
 	desc[#desc+1] = "But be careful, even the dwarves did not venture in the old halls for many years."
 	return table.concat(desc, "\n")
diff --git a/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua b/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua
index 087529df423c465444e0594045ce05a91c305783..774b57d50fbc7f1867a1317835fbebf4ee5e7b2a 100644
--- a/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua
+++ b/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua
@@ -46,7 +46,7 @@ newEntity{ define_as = "GREATER_MUMMY_LORD",
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1, },
 	equipment = resolvers.equip{
-		{type="weapon", subtype="longsword", defined="LONGSWORD_RINGIL", random_art_replace={chance=75}, autoreq=true},
+		{type="weapon", subtype="longsword", defined="LONGSWORD_WINTERTIDE", random_art_replace={chance=75}, autoreq=true},
 		{type="armor", subtype="shield", ego_chance=100, autoreq=true},
 		{type="armor", subtype="mummy", ego_chance=100, autoreq=true},
 	},
diff --git a/game/modules/tome/data/zones/maze/npcs.lua b/game/modules/tome/data/zones/maze/npcs.lua
index c87425d0241fc303078fa3682c08be1226874faf..b08eae6449821e32c504c343404cb7fe86848ade 100644
--- a/game/modules/tome/data/zones/maze/npcs.lua
+++ b/game/modules/tome/data/zones/maze/npcs.lua
@@ -50,7 +50,7 @@ newEntity{ define_as = "MINOTAUR_MAZE",
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1, },
 	resolvers.equip{
 		{type="weapon", subtype="battleaxe", autoreq=true},
-		{type="armor", subtype="head", defined="HELM_OF_HAMMERHAND", random_art_replace={chance=75}, autoreq=true},
+		{type="armor", subtype="head", defined="HELM_OF_GARKUL", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
 
diff --git a/game/modules/tome/data/zones/old-forest/npcs.lua b/game/modules/tome/data/zones/old-forest/npcs.lua
index f598f41df4a1006ad952c07d32c130cd70b7ef46..10d58d74a14768be27ee4b0c36221f9b2a6b9da7 100644
--- a/game/modules/tome/data/zones/old-forest/npcs.lua
+++ b/game/modules/tome/data/zones/old-forest/npcs.lua
@@ -30,15 +30,12 @@ load("/data/general/npcs/all.lua", rarity(4, 35))
 local Talents = require("engine.interface.ActorTalents")
 
 -- The boss of trollshaws, no "rarity" field means it will not be randomly generated
-newEntity{ define_as = "OLD_MAN_WILLOW",
+newEntity{ define_as = "WILLOWRATH",
 	type = "giant", subtype = "huorn", unique = true,
-	name = "Old Man Willow",
+	name = "Willowrath",
 	display = "#", color=colors.OLIVE_DRAB,
 	desc = [[The ancient grey willow tree, ruler of the Old Forest. He despises
-	trespassers in his territory.  "...a huge willow-tree, old and hoary
-	Enormous it looked, its sprawling branches going up like racing arms
-	with may long-fingered hands, its knotted and twisted trunk gaping in
-	wide fissures that creaked faintly as the boughs moved."]],
+	trespassers in his territory.]],
 	level_range = {12, 35}, exp_worth = 2,
 	max_life = 200, life_rating = 17, fixed_rating = true,
 	max_stamina = 85,
@@ -55,7 +52,7 @@ newEntity{ define_as = "OLD_MAN_WILLOW",
 	resists = { [DamageType.FIRE] = -50 },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
-	equipment = resolvers.equip{ {type="armor", subtype="shield", defined="OLD_MAN_WILLOW_SHIELD", random_art_replace={chance=75}, autoreq=true}, },
+	equipment = resolvers.equip{ {type="armor", subtype="shield", defined="WILLOWRATH_SHIELD", random_art_replace={chance=75}, autoreq=true}, },
 	drops = resolvers.drops{chance=100, nb=5, {ego_chance=100} },
 
 	resolvers.talents{
@@ -91,7 +88,7 @@ newEntity{ define_as = "SNAPROOT", -- backup guardian
 	type = "giant", subtype = "ent", unique = true,
 	name = "Snaproot",
 	display = "#", color=VIOLET,
-	desc = [[This ancient Ent's bark is scorched almost black. It sees humanity as a scourge, to be purged.]],
+	desc = [[This ancient Treant's bark is scorched almost black. It sees humanity as a scourge, to be purged.]],
 	level_range = {50, 75}, exp_worth = 3,
 
 	max_life = 1000, life_rating = 40, fixed_rating = true,
diff --git a/game/modules/tome/data/zones/old-forest/zone.lua b/game/modules/tome/data/zones/old-forest/zone.lua
index 810d02016384cc85ca9078767f4de2b0689e53fd..92018e96427e11b489a036017daf3813fe956a21 100644
--- a/game/modules/tome/data/zones/old-forest/zone.lua
+++ b/game/modules/tome/data/zones/old-forest/zone.lua
@@ -48,7 +48,7 @@ return {
 		actor = {
 			class = "engine.generator.actor.Random",
 			nb_npc = {20, 30},
-			guardian = "OLD_MAN_WILLOW",
+			guardian = "WILLOWRATH",
 		},
 		object = {
 			class = "engine.generator.object.Random",
diff --git a/game/modules/tome/data/zones/valley-moon/npcs.lua b/game/modules/tome/data/zones/valley-moon/npcs.lua
index e7c19673bcbf6d8bccaa98f9ffeee1d4f70444db..ee1d54bd91f834d681e38dc3ba80373ee08472fa 100644
--- a/game/modules/tome/data/zones/valley-moon/npcs.lua
+++ b/game/modules/tome/data/zones/valley-moon/npcs.lua
@@ -45,7 +45,7 @@ newEntity{ define_as = "CORRUPTED_BALROG",
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	resolvers.equip{
-		{type="weapon", subtype="whip", defined="WHIP_GOTHMOG", random_art_replace={chance=75}, autoreq=true},
+		{type="weapon", subtype="whip", defined="WHIP_URH_ROK", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=3, {ego_chance=100} },
 
diff --git a/ideas/setting.ods b/ideas/setting.ods
index 49f0d1a480d4a726963d7d072c7d7094d52f06af..40bc7f9dfd8ae2f61f1ab0523c71c16abb69970c 100644
Binary files a/ideas/setting.ods and b/ideas/setting.ods differ