From 360f9b24fb2e0170aa85f76aacfbe6546e256ea5 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Sun, 31 Oct 2010 03:46:20 +0000
Subject: [PATCH] Boss artifacts can be found before the boss is killed, the
 boss will cheat and use it for combat but will drop something else

git-svn-id: http://svn.net-core.org/repos/t-engine4@1725 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/engines/default/engine/Zone.lua          |  14 +-
 game/modules/tome/class/Actor.lua             |   5 +-
 .../data/general/objects/boss-artifacts.lua   | 658 ++++++++++++++++++
 .../tome/data/general/objects/objects.lua     |   1 +
 .../data/general/objects/world-artifacts.lua  |   2 +-
 .../data/zones/ancient-elven-ruins/npcs.lua   |   2 +-
 .../zones/ancient-elven-ruins/objects.lua     |  34 +-
 .../tome/data/zones/blighted-ruins/npcs.lua   |   2 +-
 .../data/zones/blighted-ruins/objects.lua     |  15 -
 .../tome/data/zones/charred-scar/npcs.lua     |   2 +-
 .../tome/data/zones/charred-scar/objects.lua  |  23 -
 game/modules/tome/data/zones/daikara/npcs.lua |   4 +-
 .../tome/data/zones/daikara/objects.lua       |  48 --
 .../tome/data/zones/flooded-cave/npcs.lua     |   2 +-
 .../tome/data/zones/flooded-cave/objects.lua  |  34 -
 .../tome/data/zones/gorbat-pride/npcs.lua     |   2 +-
 .../tome/data/zones/gorbat-pride/objects.lua  |  20 -
 .../tome/data/zones/grushnak-pride/npcs.lua   |   2 +-
 .../data/zones/grushnak-pride/objects.lua     |  27 -
 .../tome/data/zones/high-peak/objects.lua     |   2 +-
 game/modules/tome/data/zones/maze/npcs.lua    |   4 +-
 game/modules/tome/data/zones/maze/objects.lua |  51 --
 .../tome/data/zones/old-forest/npcs.lua       |   5 +-
 .../tome/data/zones/old-forest/objects.lua    |  46 --
 .../tome/data/zones/rak-shor-pride/npcs.lua   |   2 +-
 .../data/zones/rak-shor-pride/objects.lua     |  18 -
 game/modules/tome/data/zones/reknor/npcs.lua  |   2 +-
 .../tome/data/zones/reknor/objects.lua        |  21 -
 .../tome/data/zones/ruins-kor-pul/npcs.lua    |   4 +-
 .../tome/data/zones/ruins-kor-pul/objects.lua |  44 --
 game/modules/tome/data/zones/telmur/npcs.lua  |   2 +-
 .../tome/data/zones/telmur/objects.lua        |  23 -
 .../tome/data/zones/tol-falas/npcs.lua        |   4 +-
 .../tome/data/zones/tol-falas/objects.lua     |  87 ---
 .../zones/town-sunwall-outpost/objects.lua    |  67 --
 .../tome/data/zones/trollshaws/npcs.lua       |   4 +-
 .../tome/data/zones/trollshaws/objects.lua    |  48 --
 .../tome/data/zones/valley-moon/npcs.lua      |   2 +-
 .../tome/data/zones/valley-moon/objects.lua   |  27 -
 .../tome/data/zones/vor-armoury/npcs.lua      |   2 +-
 .../tome/data/zones/vor-armoury/objects.lua   |  27 -
 .../tome/data/zones/vor-pride/npcs.lua        |   2 +-
 .../tome/data/zones/vor-pride/objects.lua     |  27 -
 game/modules/tome/resolvers.lua               |  10 +-
 44 files changed, 707 insertions(+), 721 deletions(-)
 create mode 100644 game/modules/tome/data/general/objects/boss-artifacts.lua

diff --git a/game/engines/default/engine/Zone.lua b/game/engines/default/engine/Zone.lua
index e24a23e1ab..d6d36fc05d 100644
--- a/game/engines/default/engine/Zone.lua
+++ b/game/engines/default/engine/Zone.lua
@@ -256,7 +256,7 @@ end
 
 --- Find a given entity and resolve it
 -- @return the fully resolved entity, ready to be used on a level. Or nil if a filter was given an nothing found
-function _M:makeEntityByName(level, type, name)
+function _M:makeEntityByName(level, type, name, force_unique)
 	resolvers.current_level = self.base_level + level.level - 1
 
 	local e
@@ -267,11 +267,19 @@ function _M:makeEntityByName(level, type, name)
 	end
 	if not e then return nil end
 
-	if e.unique and game.uniques[e.__CLASSNAME.."/"..e.unique] then print("refused unique", e.name, e.__CLASSNAME.."/"..e.unique) return nil end
+	local forced = false
+	if e.unique and game.uniques[e.__CLASSNAME.."/"..e.unique] then
+		if not force_unique then
+			print("refused unique", e.name, e.__CLASSNAME.."/"..e.unique)
+			return nil
+		else
+			forced = true
+		end
+	end
 
 	e = self:finishEntity(level, type, e)
 
-	return e
+	return e, forced
 end
 
 --- Finishes generating an entity
diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 87464626a1..f869c9f804 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -749,7 +749,7 @@ function _M:die(src)
 				for i, o in ipairs(inven) do
 					-- Handle boss wielding artifacts
 					if o.__special_boss_drop and rng.percent(o.__special_boss_drop.chance) then
-						print("Refusing to drop "..self.name.." artifact "..o.name)
+						print("Refusing to drop "..self.name.." artifact "..o.name.." with chance "..o.__special_boss_drop.chance)
 
 						-- Do not drop
 						o.no_drop = true
@@ -757,9 +757,6 @@ function _M:die(src)
 						-- Drop a random artifact instead
 						local ro = game.zone:makeEntity(game.level, "object", {unique=true}, nil, true)
 						if ro then game.zone:addEntity(game.level, ro, "object", self.x, self.y) end
-
-						-- Add to the pool
-						game.state:addWorldArtifact(o.define_as, o.__special_boss_drop)
 					end
 
 					if not o.no_drop then
diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua
new file mode 100644
index 0000000000..b413f88e1c
--- /dev/null
+++ b/game/modules/tome/data/general/objects/boss-artifacts.lua
@@ -0,0 +1,658 @@
+-- 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
+
+local Stats = require "engine.interface.ActorStats"
+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.]],
+	require = { stat = { str=35 }, },
+	level_range = {35, 45},
+	rarity = 280,
+	cost = 2000,
+	material_level = 5,
+	combat = {
+		dam = 45,
+		apr = 10,
+		physcrit = 10,
+		dammod = {str=1},
+		damrange = 1.4,
+	},
+	wielder = {
+		lite = 1,
+		see_invisible = 2,
+		resists={[DamageType.COLD] = 25},
+		inc_damage = { [DamageType.COLD] = 20 },
+		melee_project={[DamageType.ICE] = 15},
+	},
+	max_power = 18, power_regen = 1,
+	use_power = { name = "generate a burst of ice", power = 8,
+		use = function(self, who)
+			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())
+			return true
+		end
+	},
+}
+
+newEntity{ base = "BASE_LITE", define_as = "UNDEATH_PHIAL",
+	unided_name = "phial filled with darkness", unique = true,
+	name = "Phial of Undead", color=colors.DARK_GREY,
+	desc = [[This phial seems filled with darkness, yet it cleanses your thoughts.]],
+	level_range = {1, 10},
+	rarity = 220,
+	encumber = 2,
+	cost = 50,
+	material_level = 2,
+
+	wielder = {
+		lite = 1,
+		infravision = 6,
+	},
+}
+
+newEntity{ base = "BASE_AMULET",
+	define_as = "FIERY_CHOKER", rarity=false,
+	name = "Fiery Choker", unique=true,
+	desc = [[A choker made of pure flame, forever shifting patterns around the neck of its wearer. Its fire seems to not harm the wearer.]],
+	level_range = {32, 42},
+	rarity = 220,
+	cost = 50,
+	wielder = {
+		inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 },
+		combat_spellpower = 7,
+		combat_spellcrit = 8,
+		resists = {
+			[DamageType.FIRE] = 20,
+			[DamageType.COLD] = -20,
+		},
+		inc_damage={
+			[DamageType.FIRE] = 10,
+			[DamageType.COLD] = -5,
+		},
+		blind_immune = 1,
+	},
+}
+
+-- Artifact, droped by Rantha
+newEntity{ base = "BASE_LEATHER_BOOT",
+	define_as = "FROST_TREADS",
+	name = "Frost Treads", unique=true,
+	desc = [[A pair of leather boots. Cold to the touch, they radiate a cold blue light.]],
+	require = { stat = { dex=16 }, },
+	level_range = {10, 18},
+	rarity = 220,
+	cost = 40,
+
+	wielder = {
+		lite = 1,
+		combat_armor = 2,
+		combat_def = 1,
+		fatigue = 14,
+		inc_damage = {
+			[DamageType.COLD] = 5,
+		},
+		resists = {
+			[DamageType.COLD] = 20,
+			[DamageType.NATURE] = 10,
+		},
+		inc_stats = { [Stats.STAT_STR] = 4, [Stats.STAT_DEX] = 4, [Stats.STAT_CUN] = 4, },
+	},
+}
+
+newEntity{ base = "BASE_HELM",
+	define_as = "RUNED_SKULL",
+	name = "Dragonskull Helm", unique=true, unided_name="skull helm",
+	desc = [[Traces of a dragon's power still remain in this bleached and cracked skull.]],
+	require = { stat = { mag=24 }, },
+	level_range = {45, 50},
+	rarity = 280,
+	cost = 200,
+
+	wielder = {
+		resists = {
+			[DamageType.FIRE] = 15,
+			[DamageType.COLD] = 15,
+			[DamageType.LIGHTNING] = 15,
+		},
+		esp = {dragon=1},
+		combat_armor = 2,
+		fatigue = 12,
+		combat_physresist = 12,
+		combat_mentalresist = 12,
+		combat_spellresist = 12,
+	},
+}
+
+newEntity{ base = "BASE_TRIDENT",
+	define_as = "TRIDENT_TIDES",
+	name = "Trident of the Tides", unique=true,
+	desc = [[As you wield this trident you can feel the power of the tides rushing through your arms.
+Tridents require the exotic weapons mastery talent to correctly use.]],
+	require = { stat = { str=35 }, },
+	level_range = {30, 40},
+	rarity = 230,
+	cost = 300,
+	material_level = 4,
+	combat = {
+		dam = 50,
+		atk = 10,
+		apr = 4,
+		physcrit = 15,
+		dammod = {str=1.3},
+		damrange = 1.4,
+	},
+
+	wielder = {
+		combat_spellresist = 18,
+		see_invisible = 2,
+		resists={[DamageType.COLD] = 25},
+		inc_damage = { [DamageType.COLD] = 20 },
+		melee_project={
+			[DamageType.COLD] = 15,
+			[DamageType.NATURE] = 20,
+		},
+	},
+
+	max_power = 150, power_regen = 1,
+	use_talent = { id = Talents.T_WATER_BOLT, level=3, power = 60 },
+}
+
+newEntity{ base = "BASE_LIGHT_ARMOR",
+	define_as = "CHROMATIC_HARNESS", rarity=false,
+	name = "Chromatic Harness", unique=true,
+	unided_name = "multi-hued leather armour", color=colors.VIOLET,
+	desc = [[This leather harness shines of multiple colors, quickly shifting through them in a seemingly chaotic manner.]],
+	level_range = {40, 50},
+	rarity = 280,
+	cost = 500,
+	material_level = 5,
+	wielder = {
+		talent_cd_reduction={[Talents.T_ICE_BREATH]=3, [Talents.T_FIRE_BREATH]=3, [Talents.T_SAND_BREATH]=3, },
+		inc_stats = { [Stats.STAT_WIL] = 6, [Stats.STAT_CUN] = 4, [Stats.STAT_DEX] = 3, [Stats.STAT_LCK] = 10, },
+		poison_immune = 0.7,
+		combat_armor = 10,
+		esp = { dragon = 1 },
+		fatigue = 10,
+	},
+}
+
+newEntity{ base = "BASE_RING",
+	define_as = "PRIDE_GLORY", rarity=false,
+	name = "Glory of the Pride", unique=true,
+	desc = [[The most prized treasure of the Battlemaster of the Pride, Grushnak. This gold ring is incribed in the orc tongue, the black speech.]],
+	unided_name = "deep black ring",
+	level_range = {40, 50},
+	rarity = 280,
+	cost = 500,
+	material_level = 5,
+	wielder = {
+		max_mana = -40,
+		max_stamina = 40,
+		stun_immune = 1,
+		confusion_immune = 1,
+		combat_atk = 10,
+		combat_dam = 10,
+		combat_def = 5,
+		combat_armor = 10,
+		fatigue = -15,
+		talent_cd_reduction={
+			[Talents.T_RUSH]=15,
+		},
+		inc_damage={ [DamageType.PHYSICAL] = 8, },
+	},
+}
+
+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!]],
+	require = { stat = { str=16 }, },
+	level_range = {12, 22},
+	rarity = 200,
+	cost = 20,
+
+	wielder = {
+		combat_armor = 4,
+		fatigue = 8,
+		inc_stats = { [Stats.STAT_STR] = 3, [Stats.STAT_CON] = 3, [Stats.STAT_WIL] = 4 },
+		combat_physresist = 7,
+		combat_mentalresist = 7,
+		combat_spellresist = 7,
+	},
+}
+
+newEntity{ base = "BASE_SHIELD",
+	define_as = "LUNAR_SHIELD",
+	unique = true,
+	name = "Lunar Shield",
+	unided_name = "chitinous shield",
+	desc = [[A large section of chitin removed from Nimisil. It continues to give off a strange white glow.]],
+	color = colors.YELLOW,
+	metallic = false,
+	require = { stat = { str=35 }, },
+	level_range = {40, 50},
+	rarity = 280,
+	cost = 350,
+	material_level = 5,
+	special_combat = {
+		dam = 45,
+		physcrit = 10,
+		dammod = {str=1},
+		damtype = DamageType.ARCANE,
+	},
+	wielder = {
+		resists={[DamageType.DARKNESS] = 25},
+		inc_damage={[DamageType.DARKNESS] = 15},
+
+		combat_armor = 7,
+		combat_def = 12,
+		combat_def_ranged = 5,
+		fatigue = 12,
+
+		lite = 1,
+		talents_types_mastery = {["divine/star-fury"]=0.2,["divine/twilight"]=0.1,},
+	},
+}
+
+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.]],
+	require = { stat = { str=25 }, },
+	level_range = {12, 2},
+	rarity = 200,
+	cost = 20,
+	rarity = false,
+	metallic = false,
+
+	special_combat = {
+		dam = resolvers.rngavg(20,30),
+		physcrit = 2,
+		dammod = {str=1.5},
+	},
+	wielder = {
+		combat_armor = 5,
+		combat_def = 9,
+		fatigue = 14,
+		resists = {
+			[DamageType.FIRE] = -20,
+			[DamageType.COLD] = 20,
+			[DamageType.NATURE] = 20,
+		},
+	},
+}
+
+newEntity{ base = "BASE_GEM",
+	unique = true, define_as = "PETRIFIED_WOOD",
+	unided_name = "burned piece of wood",
+	name = "Petrified Wood", subtype = "black",
+	color = colors.WHITE, image="object/bloodstone.png",
+	level_range = {35, 45},
+	rarity = 280,
+	desc = [[A piece of the scorched wood took from the remains of Snaproot.]],
+	rarity = false,
+	cost = 100,
+	material_level = 5,
+	imbue_powers = {
+		resists = { [DamageType.NATURE] = 25, [DamageType.FIRE] = -10, [DamageType.COLD] = 10 },
+		inc_stats = { [Stats.STAT_CON] = 10, },
+	},
+}
+
+newEntity{ base = "BASE_CLOTH_ARMOR",
+	define_as = "BLACK_ROBE", rarity=false,
+	name = "Black Robe", unique=true,
+	unided_name = "black robe", color=colors.DARK_GREY,
+	desc = [[A silk robe, darker than the darkest night sky, it radiates power.]],
+	level_range = {40, 50},
+	rarity = 280,
+	cost = 500,
+	wielder = {
+		inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 },
+		see_invisible = 10,
+		blind_immune = 1,
+		combat_spellpower = 10,
+		combat_dam = 10,
+		combat_def = 6,
+	},
+}
+
+newEntity{ base = "BASE_WARAXE",
+	define_as = "MALEDICTION", rarity=false,
+	unided_name = "pestilent waraxe",
+	name = "Malediction", unique=true,
+	desc = [[The land withers and crumbles wherever this cursed axe rests.]],
+	require = { stat = { str=55 }, },
+	level_range = {35, 45},
+	rarity = 290,
+	cost = 375,
+	combat = {
+		dam = 55,
+		apr = 15,
+		physcrit = 10,
+		dammod = {str=1},
+		damrange = 1.2,
+	},
+	wielder = {
+		life_regen = -0.3,
+		inc_damage = { [DamageType.BLIGHT] = 20 },
+		melee_project={[DamageType.BLIGHT] = 20},
+	},
+}
+
+newEntity{ base = "BASE_STAFF",
+	define_as = "STAFF_KOR", rarity=false,
+	name = "Kor's Fall", unique=true,
+	desc = [[Made from the bones of of many creatures this staff glows with power. You can feel its evilness as you touch it.]],
+	require = { stat = { mag=25 }, },
+	level_range = {1, 10},
+	rarity = 200,
+	cost = 5,
+	combat = {
+		dam = 10,
+		apr = 0,
+		physcrit = 1.5,
+		dammod = {mag=1.1},
+	},
+	wielder = {
+		see_invisible = 2,
+		combat_spellpower = 7,
+		combat_spellcrit = 8,
+		inc_damage={
+			[DamageType.FIRE] = 4,
+			[DamageType.COLD] = 4,
+			[DamageType.ACID] = 4,
+			[DamageType.LIGHTNING] = 4,
+			[DamageType.BLIGHT] = 4,
+		},
+	},
+}
+
+newEntity{ base = "BASE_AMULET",
+	define_as = "VOX", rarity=false,
+	name = "Vox", unique=true,
+	unided_name = "ringing amulet", color=colors.BLUE,
+	desc = [[No force can hope to silence the wearer of this amulet.]],
+	level_range = {40, 50},
+	rarity = 220,
+	cost = 3000,
+	wielder = {
+		see_invisible = 20,
+		silence_immune = 0.8,
+		combat_spellpower = 9,
+		combat_spellcrit = 4,
+		mana = 50,
+		vim = 50,
+	},
+}
+
+newEntity{ base = "BASE_STAFF",
+	define_as = "TELOS_TOP_HALF", rarity=false,
+	slot_forbid = false,
+	twohanded = false,
+	name = "Telos's Staff (Top Half)", unique=true,
+	desc = [[The top part of Telos's broken staff.]],
+	require = { stat = { mag=35 }, },
+	level_range = {40, 50},
+	rarity = 210,
+	encumberance = 2.5,
+	cost = 500,
+	combat = {
+		dam = 35,
+		apr = 0,
+		physcrit = 1.5,
+		dammod = {mag=1.0},
+	},
+	wielder = {
+		combat_spellpower = 25,
+		combat_spellcrit = 5,
+		combat_mentalresist = 8,
+		inc_stats = { [Stats.STAT_WIL] = 5, },
+	},
+}
+
+newEntity{ base = "BASE_AMULET",
+	define_as = "AMULET_DREAD", rarity=false,
+	name = "Choker of Dread", unique=true,
+	unided_name = "dark amulet", color=colors.LIGHT_DARK,
+	desc = [[The evilness of undeath radiates from this amulet.]],
+	level_range = {20, 28},
+	rarity = 220,
+	cost = 5000,
+	wielder = {
+		see_invisible = 10,
+		blind_immune = 1,
+		combat_spellpower = 5,
+		combat_dam = 5,
+	},
+	max_power = 60, power_regen = 1,
+	use_power = { name = "summon an elder vampire to your side", power = 60, use = function(self, who)
+		if not who:canBe("summon") then game.logPlayer(who, "You can not summon, you are suppressed!") return end
+
+		-- Find space
+		local x, y = util.findFreeGrid(who.x, who.y, 5, true, {[engine.Map.ACTOR]=true})
+		if not x then
+			game.logPlayer(who, "Not enough space to invoke the vampire!")
+			return
+		end
+		print("Invoking guardian on", x, y)
+
+		local NPC = require "mod.class.NPC"
+		local vampire = NPC.new{
+			type = "undead", subtype = "vampire",
+			display = "V",
+			name = "elder vampire", color=colors.RED,
+			desc=[[A terrible robed undead figure, this creature has existed in its unlife for many centuries by stealing the life of others. It can
+			summon the very shades of its victims from beyond the grave to come enslaved to its aid.]],
+
+			combat = { dam=resolvers.rngavg(9,13), atk=10, apr=9, damtype=engine.DamageType.DRAINLIFE, dammod={str=1.9} },
+
+			body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
+
+			autolevel = "warriormage",
+			ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=3, },
+			energy = { mod=1 },
+			stats = { str=12, dex=12, mag=12, con=12 },
+			life_regen = 3,
+			size_category = 3,
+			rank = 3,
+			infravision = 20,
+
+			inc_damage = table.clone(who.inc_damage, true),
+
+			resolvers.tmasteries{ ["technique/other"]=0.5, ["spell/phantasm"]=0.8, },
+
+			resists = { [engine.DamageType.COLD] = 80, [engine.DamageType.NATURE] = 80, [engine.DamageType.LIGHT] = -50,  },
+			blind_immune = 1,
+			confusion_immune = 1,
+			see_invisible = 5,
+			undead = 1,
+
+			level_range = {who.level, who.level}, exp_worth = 0,
+			max_life = resolvers.rngavg(90,100),
+			combat_armor = 12, combat_def = 10,
+			resolvers.talents{ [who.T_STUN]=2, [who.T_BLUR_SIGHT]=3, [who.T_PHANTASMAL_SHIELD]=2, [who.T_ROTTING_DISEASE]=3, },
+
+			faction = who.faction,
+			summoner = who,
+			summon_time = 10,
+		}
+
+		vampire:resolve()
+		game.zone:addEntity(game.level, vampire, "actor", x, y)
+
+		game:playSoundNear(who, "talents/spell_generic")
+	end },
+}
+
+newEntity{ define_as = "RUNED_SKULL",
+	unique = true,
+	type = "gem", subtype="red",
+	unided_name = "human skull",
+	name = "Runed Skull",
+	display = "*", color=colors.RED,
+	level_range = {40, 50},
+	rarity = 390,
+	encumber = 3,
+	desc = [[Dull red runes are etched all over this blackened skull.]],
+
+	carrier = {
+		combat_spellpower = 7,
+		on_melee_hit = {[DamageType.FIREKNOCKBACK]=25},
+	},
+}
+
+newEntity{ base = "BASE_GREATMAUL",
+	define_as = "GREATMAUL_BILL_TRUNK",
+	name = "Bill's Tree Trunk", unique=true,
+	desc = [[This is a big nasty looking tree trunk that Bill was using as a weapon. It could still serve this purpose, should you be strong enough to wield it!]],
+	require = { stat = { str=25 }, },
+	level_range = {1, 10},
+	rarity = 200,
+	metallic = false,
+	cost = 5,
+	combat = {
+		dam = 30,
+		apr = 7,
+		physcrit = 1.5,
+		dammod = {str=1.3},
+		damrange = 1.7,
+	},
+
+	wielder = {
+	},
+}
+
+
+newEntity{ base = "BASE_SHIELD",
+	define_as = "SANGUINE_SHIELD",
+	unided_name = "bloody shield",
+	name = "Sanguine Shield", unique=true,
+	desc = [[Though tarnished and spattered with blood, the emblem of the sun still manages to shine through on this shield.]],
+	require = { stat = { str=39 }, },
+	level_range = {35, 45},
+	rarity = 240,
+	cost = 120,
+
+	special_combat = {
+		dam = 40,
+		physcrit = 9,
+		dammod = {str=1.2},
+	},
+	wielder = {
+		combat_armor = 4,
+		combat_def = 14,
+		combat_def_ranged = 14,
+		inc_stats = { [Stats.STAT_CON] = 5, },
+		fatigue = 19,
+		resists = { [DamageType.BLIGHT] = 25, },
+		life_regen = 5,
+	},
+}
+
+newEntity{ base = "BASE_WHIP",
+	define_as = "WHIP_GOTHMOG",
+	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.]],
+	require = { stat = { dex=48 }, },
+	level_range = {40, 50},
+	rarity = 390,
+	cost = 250,
+	material_level = 5,
+	combat = {
+		dam = resolvers.rngavg(40,45),
+		apr = 0,
+		physcrit = 9,
+		dammod = {dex=1},
+		damtype = DamageType.FIREKNOCKBACK,
+	},
+	wielder = {
+		esp = {["demon/minor"]=1, ["demon/major"]=1},
+		see_invisible = 2,
+	},
+	carrier = {
+		inc_damage={
+			[DamageType.BLIGHT] = 8,
+		},
+	},
+}
+
+newEntity{ base = "BASE_GREATSWORD",
+	define_as = "MURDERBLADE", rarity=false,
+	name = "Warmaster Gnarg's Murderblade", unique=true,
+	unided_name = "blood-etched greatsword", color=colors.CRIMSON,
+	desc = [[A blood etched greatsword, it has seen many foes. From the inside.]],
+	require = { stat = { str=35 }, },
+	level_range = {35, 45},
+	rarity = 230,
+	cost = 300,
+	material_level = 5,
+	combat = {
+		dam = 54,
+		apr = 19,
+		physcrit = 4.5,
+		dammod = {str=1.2},
+	},
+	wielder = {
+		see_invisible = 25,
+		inc_stats = { [Stats.STAT_CON] = 5, [Stats.STAT_STR] = 5, [Stats.STAT_DEX] = 5, },
+		talents_types_mastery = {
+			["technique/2hweapon-cripple"] = 0.2,
+			["technique/2hweapon-offense"] = 0.2,
+		},
+	},
+}
+
+newEntity{ base = "BASE_LEATHER_CAP",
+	define_as = "CROWN_ELEMENTS", rarity=false,
+	name = "Crown of the Elements", unique=true,
+	unided_name = "jeweled crown", color=colors.DARK_GREY,
+	desc = [[Jeweled crown]],
+	level_range = {40, 50},
+	rarity = 280,
+	cost = 500,
+	material_level = 5,
+	wielder = {
+		inc_stats = { [Stats.STAT_CON] = 5, [Stats.STAT_WIL] = 3, },
+		resists={
+			[DamageType.FIRE] = 15,
+			[DamageType.COLD] = 15,
+			[DamageType.ACID] = 15,
+			[DamageType.LIGHTNING] = 15,
+		},
+		melee_project={
+			[DamageType.FIRE] = 10,
+			[DamageType.COLD] = 10,
+			[DamageType.ACID] = 10,
+			[DamageType.LIGHTNING] = 10,
+		},
+		see_invisible = 15,
+		combat_armor = 5,
+		fatigue = 5,
+	},
+}
diff --git a/game/modules/tome/data/general/objects/objects.lua b/game/modules/tome/data/general/objects/objects.lua
index b17183bd62..77ac265709 100644
--- a/game/modules/tome/data/general/objects/objects.lua
+++ b/game/modules/tome/data/general/objects/objects.lua
@@ -86,3 +86,4 @@ loadIfNot("/data/general/objects/lore/spellhunt.lua")
 loadIfNot("/data/general/objects/world-artifacts.lua")
 loadIfNot("/data/general/objects/quest-artifacts.lua")
 loadIfNot("/data/general/objects/special-artifacts.lua")
+loadIfNot("/data/general/objects/boss-artifacts.lua")
diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua
index 560e6c8725..dad6631fba 100644
--- a/game/modules/tome/data/general/objects/world-artifacts.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts.lua
@@ -30,7 +30,7 @@ end
 newEntity{ base = "BASE_STAFF",
 	unique = true,
 	name = "Staff of Destruction",
-	unided_name = "ash staff",
+	unided_name = "darkness infused staff",
 	level_range = {20, 25},
 	color=colors.VIOLET,
 	rarity = 100,
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 6174ba57c7..96826c4a4d 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, rarity=280, level_range={35, 45}}, autoreq=true},
+		{type="weapon", subtype="longsword", defined="LONGSWORD_RINGIL", 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/ancient-elven-ruins/objects.lua b/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua
index 62a9c0307c..b3015b7619 100644
--- a/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua
+++ b/game/modules/tome/data/zones/ancient-elven-ruins/objects.lua
@@ -23,39 +23,6 @@ load("/data/general/objects/mummy-wrappings.lua")
 local Stats = require "engine.interface.ActorStats"
 local Talents = require "engine.interface.ActorTalents"
 
-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.]],
-	require = { stat = { str=35 }, },
-	cost = 2000,
-	material_level = 5,
-	combat = {
-		dam = 45,
-		apr = 10,
-		physcrit = 10,
-		dammod = {str=1},
-		damrange = 1.4,
-	},
-	wielder = {
-		lite = 1,
-		see_invisible = 2,
-		resists={[DamageType.COLD] = 25},
-		inc_damage = { [DamageType.COLD] = 20 },
-		melee_project={[DamageType.ICE] = 15},
-	},
-	max_power = 18, power_regen = 1,
-	use_power = { name = "generate a burst of ice", power = 8,
-		use = function(self, who)
-			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())
-			return true
-		end
-	},
-}
-
 -- Random artifact
 newEntity{ base = "BASE_MUMMY_WRAPPING",
 	unique = true,
@@ -81,3 +48,4 @@ newEntity{ base = "BASE_MUMMY_WRAPPING",
 	max_power = 80, power_regen = 1,
 	use_talent = { id = Talents.T_SPIT_POISON, level = 2, power = 50 },
 }
+
diff --git a/game/modules/tome/data/zones/blighted-ruins/npcs.lua b/game/modules/tome/data/zones/blighted-ruins/npcs.lua
index 74e41a1aa2..d7c356d5a5 100644
--- a/game/modules/tome/data/zones/blighted-ruins/npcs.lua
+++ b/game/modules/tome/data/zones/blighted-ruins/npcs.lua
@@ -83,7 +83,7 @@ This specimen look like it was hastily assembled and is not really complete yet.
 	resolvers.sustains_at_birth(),
 
 	resolvers.drops{chance=100, nb=3, {ego_chance=100} },
-	resolvers.drops{chance=100, nb=1, {defined="UNDEATH_PHIAL", random_art_replace={chance=75, rarity=150, level_range={1, 10}}} },
+	resolvers.drops{chance=100, nb=1, {defined="UNDEATH_PHIAL", random_art_replace={chance=75}}} },
 
 	ai = "dumb_talented_simple", ai_state = { talent_in=4, ai_move="move_astar", },
 
diff --git a/game/modules/tome/data/zones/blighted-ruins/objects.lua b/game/modules/tome/data/zones/blighted-ruins/objects.lua
index 4a8ae637cd..96c2416da8 100644
--- a/game/modules/tome/data/zones/blighted-ruins/objects.lua
+++ b/game/modules/tome/data/zones/blighted-ruins/objects.lua
@@ -52,18 +52,3 @@ newEntity{ define_as = "CLOAK_DECEPTION",
 		who:setQuestStatus("start-undead", engine.Quest.COMPLETED, "black-cloak")
 	end,
 }
-
-newEntity{ base = "BASE_LITE", define_as = "UNDEATH_PHIAL",
-	unided_name = "phial filled with darkness", unique = true,
-	name = "Phial of Undead", color=colors.DARK_GREY,
-	desc = [[This phial seems filled with darkness, yet it cleanses your thoughts.]],
-	rarity = false,
-	encumber = 2,
-	cost = 50,
-	material_level = 2,
-
-	wielder = {
-		lite = 1,
-		infravision = 6,
-	},
-}
diff --git a/game/modules/tome/data/zones/charred-scar/npcs.lua b/game/modules/tome/data/zones/charred-scar/npcs.lua
index 15fbfd04a3..439b0b9fae 100644
--- a/game/modules/tome/data/zones/charred-scar/npcs.lua
+++ b/game/modules/tome/data/zones/charred-scar/npcs.lua
@@ -276,7 +276,7 @@ This one looks even nastier and looks toward you with what seems to be disdain.
 	ai = "dumb_talented_simple", ai_state = { talent_in=1, ai_move="move_astar" },
 
 	resolvers.equip{
-		{type="jewelry", subtype="amulet", defined="FIERY_CHOKER", random_art_replace={chance=75, rarity=200, level_range={35, 45}}},
+		{type="jewelry", subtype="amulet", defined="FIERY_CHOKER", random_art_replace={chance=75}},
 	},
 	resolvers.drops{chance=20, nb=1, {defined="JEWELER_TOME"} },
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
diff --git a/game/modules/tome/data/zones/charred-scar/objects.lua b/game/modules/tome/data/zones/charred-scar/objects.lua
index e1d2227747..4e7b8c6c64 100644
--- a/game/modules/tome/data/zones/charred-scar/objects.lua
+++ b/game/modules/tome/data/zones/charred-scar/objects.lua
@@ -18,26 +18,3 @@
 -- darkgod@te4.org
 
 load("/data/general/objects/objects.lua")
-
-local Stats = require"engine.interface.ActorStats"
-
-newEntity{ base = "BASE_AMULET",
-	define_as = "FIERY_CHOKER", rarity=false,
-	name = "Fiery Choker", unique=true,
-	desc = [[A choker made of pure flame, forever shifting patterns around the neck of its wearer. Its fire seems to not harm the wearer.]],
-	cost = 50,
-	wielder = {
-		inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 },
-		combat_spellpower = 7,
-		combat_spellcrit = 8,
-		resists = {
-			[DamageType.FIRE] = 20,
-			[DamageType.COLD] = -20,
-		},
-		inc_damage={
-			[DamageType.FIRE] = 10,
-			[DamageType.COLD] = -5,
-		},
-		blind_immune = 1,
-	},
-}
diff --git a/game/modules/tome/data/zones/daikara/npcs.lua b/game/modules/tome/data/zones/daikara/npcs.lua
index 2e5c5f8842..925bb31095 100644
--- a/game/modules/tome/data/zones/daikara/npcs.lua
+++ b/game/modules/tome/data/zones/daikara/npcs.lua
@@ -47,7 +47,7 @@ newEntity{ define_as = "RANTHA_THE_WORM",
 	resists = { [DamageType.FIRE] = -20, [DamageType.COLD] = 100 },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
-	resolvers.drops{chance=100, nb=1, {defined="FROST_TREADS", random_art_replace={chance=75, rarity=150, level_range={12, 22}}}, },
+	resolvers.drops{chance=100, nb=1, {defined="FROST_TREADS", random_art_replace={chance=75}}, },
 	resolvers.drops{chance=100, nb=3, {ego_chance=100} },
 	resolvers.drops{chance=100, nb=10, {type="money"} },
 
@@ -101,7 +101,7 @@ newEntity{ base="BASE_NPC_ORC_GRUSHNAK", define_as = "MASSOK",
 	resolvers.equip{
 		{type="weapon", subtype="battleaxe", ego_change=100, autoreq=true},
 		{type="armor", subtype="massive", ego_chance=100, autoreq=true},
-		{type="armor", subtype="head", defined="RUNED_SKULL", random_art_replace={chance=75, rarity=250, level_range={45, 50}}, autoreq=true},
+		{type="armor", subtype="head", defined="RUNED_SKULL", random_art_replace={chance=75}, autoreq=true},
 		{type="armor", subtype="feet", ego_chance=100, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
diff --git a/game/modules/tome/data/zones/daikara/objects.lua b/game/modules/tome/data/zones/daikara/objects.lua
index 98dcc59189..4e7b8c6c64 100644
--- a/game/modules/tome/data/zones/daikara/objects.lua
+++ b/game/modules/tome/data/zones/daikara/objects.lua
@@ -18,51 +18,3 @@
 -- darkgod@te4.org
 
 load("/data/general/objects/objects.lua")
-
-local Stats = require "engine.interface.ActorStats"
-
--- Artifact, droped by Rantha
-newEntity{ base = "BASE_LEATHER_BOOT",
-	define_as = "FROST_TREADS",
-	name = "Frost Treads", unique=true,
-	desc = [[A pair of leather boots. Cold to the touch, they radiate a cold blue light.]],
-	require = { stat = { dex=16 }, },
-	cost = 40,
-
-	wielder = {
-		lite = 1,
-		combat_armor = 2,
-		combat_def = 1,
-		fatigue = 14,
-		inc_damage = {
-			[DamageType.COLD] = 5,
-		},
-		resists = {
-			[DamageType.COLD] = 20,
-			[DamageType.NATURE] = 10,
-		},
-		inc_stats = { [Stats.STAT_STR] = 4, [Stats.STAT_DEX] = 4, [Stats.STAT_CUN] = 4, },
-	},
-}
-
-newEntity{ base = "BASE_HELM",
-	define_as = "RUNED_SKULL",
-	name = "Dragonskull Helm", unique=true, unided_name="skull helm",
-	desc = [[Traces of a dragon's power still remain in this bleached and cracked skull.]],
-	require = { stat = { mag=24 }, },
-	cost = 200,
-
-	wielder = {
-		resists = {
-			[DamageType.FIRE] = 15,
-			[DamageType.COLD] = 15,
-			[DamageType.LIGHTNING] = 15,
-		},
-		esp = {dragon=1},
-		combat_armor = 2,
-		fatigue = 12,
-		combat_physresist = 12,
-		combat_mentalresist = 12,
-		combat_spellresist = 12,
-	},
-}
diff --git a/game/modules/tome/data/zones/flooded-cave/npcs.lua b/game/modules/tome/data/zones/flooded-cave/npcs.lua
index 3d6538f4ff..dff19dfc85 100644
--- a/game/modules/tome/data/zones/flooded-cave/npcs.lua
+++ b/game/modules/tome/data/zones/flooded-cave/npcs.lua
@@ -50,7 +50,7 @@ newEntity{ define_as = "UKLLMSWWIK",
 	resists = { [DamageType.COLD] = 60, [DamageType.LIGHTNING] = 20, },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
-	resolvers.drops{chance=100, nb=1, {defined="TRIDENT_TIDES", random_art_replace={chance=50, rarity=250, level_range={30, 40}}, autoreq=true} },
+	resolvers.drops{chance=100, nb=1, {defined="TRIDENT_TIDES", random_art_replace={chance=50}, autoreq=true} },
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
 	resolvers.drops{chance=100, nb=10, {type="money"} },
 
diff --git a/game/modules/tome/data/zones/flooded-cave/objects.lua b/game/modules/tome/data/zones/flooded-cave/objects.lua
index ac8051ff27..844b155d24 100644
--- a/game/modules/tome/data/zones/flooded-cave/objects.lua
+++ b/game/modules/tome/data/zones/flooded-cave/objects.lua
@@ -23,37 +23,3 @@ local DamageType = require "engine.DamageType"
 
 load("/data/general/objects/2htridents.lua", function(e) e.rarity = e.trident_rarity end)
 load("/data/general/objects/objects.lua")
-
--- Artifact, droped (and used!) by Bill the Stone Troll
-
-newEntity{ base = "BASE_TRIDENT",
-	define_as = "TRIDENT_TIDES",
-	name = "Trident of the Tides", unique=true,
-	desc = [[As you wield this trident you can feel the power of the tides rushing through your arms.
-Tridents require the exotic weapons mastery talent to correctly use.]],
-	require = { stat = { str=35 }, },
-	cost = 300,
-	material_level = 4,
-	combat = {
-		dam = 50,
-		atk = 10,
-		apr = 4,
-		physcrit = 15,
-		dammod = {str=1.3},
-		damrange = 1.4,
-	},
-
-	wielder = {
-		combat_spellresist = 18,
-		see_invisible = 2,
-		resists={[DamageType.COLD] = 25},
-		inc_damage = { [DamageType.COLD] = 20 },
-		melee_project={
-			[DamageType.COLD] = 15,
-			[DamageType.NATURE] = 20,
-		},
-	},
-
-	max_power = 150, power_regen = 1,
-	use_talent = { id = Talents.T_WATER_BOLT, level=3, power = 60 },
-}
diff --git a/game/modules/tome/data/zones/gorbat-pride/npcs.lua b/game/modules/tome/data/zones/gorbat-pride/npcs.lua
index fcfb5484c8..85cb02b3f9 100644
--- a/game/modules/tome/data/zones/gorbat-pride/npcs.lua
+++ b/game/modules/tome/data/zones/gorbat-pride/npcs.lua
@@ -49,7 +49,7 @@ newEntity{ base="BASE_NPC_ORC_GORBAT", define_as = "GORBAT",
 
 	resolvers.equip{
 		{type="weapon", subtype="greatmaul", ego_change=100, autoreq=true},
-		{type="armor", subtype="light", defined="CHROMATIC_HARNESS", random_art_replace={chance=75, rarity=250, level_range={40, 50}}, autoreq=true},
+		{type="armor", subtype="light", defined="CHROMATIC_HARNESS", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=1, {defined="ORB_DRAGON"} },
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
diff --git a/game/modules/tome/data/zones/gorbat-pride/objects.lua b/game/modules/tome/data/zones/gorbat-pride/objects.lua
index 1b705e2c92..c8bcaaefa0 100644
--- a/game/modules/tome/data/zones/gorbat-pride/objects.lua
+++ b/game/modules/tome/data/zones/gorbat-pride/objects.lua
@@ -19,23 +19,3 @@
 
 load("/data/general/objects/objects-far-east.lua")
 load("/data/general/objects/lore/sunwall.lua")
-
-local Talents = require("engine.interface.ActorTalents")
-local Stats = require"engine.interface.ActorStats"
-
-newEntity{ base = "BASE_LIGHT_ARMOR",
-	define_as = "CHROMATIC_HARNESS", rarity=false,
-	name = "Chromatic Harness", unique=true,
-	unided_name = "multi-hued leather armour", color=colors.VIOLET,
-	desc = [[This leather harness shines of multiple colors, quickly shifting through them in a seemingly chaotic manner.]],
-	cost = 500,
-	material_level = 5,
-	wielder = {
-		talent_cd_reduction={[Talents.T_ICE_BREATH]=3, [Talents.T_FIRE_BREATH]=3, [Talents.T_SAND_BREATH]=3, },
-		inc_stats = { [Stats.STAT_WIL] = 6, [Stats.STAT_CUN] = 4, [Stats.STAT_DEX] = 3, [Stats.STAT_LCK] = 10, },
-		poison_immune = 0.7,
-		combat_armor = 10,
-		esp = { dragon = 1 },
-		fatigue = 10,
-	},
-}
diff --git a/game/modules/tome/data/zones/grushnak-pride/npcs.lua b/game/modules/tome/data/zones/grushnak-pride/npcs.lua
index 5fa18ef828..abd1b04c2c 100644
--- a/game/modules/tome/data/zones/grushnak-pride/npcs.lua
+++ b/game/modules/tome/data/zones/grushnak-pride/npcs.lua
@@ -55,7 +55,7 @@ newEntity{ base="BASE_NPC_ORC_GRUSHNAK", define_as = "GRUSHNAK",
 --		Commented because this can generate rings of invis or amulets of telepathy and drain the life of the boss
 --		{type="jewelry", subtype="amulet", ego_chance=100, autoreq=true},
 --		{type="jewelry", subtype="ring", ego_chance=100, autoreq=true},
-		{type="jewelry", subtype="ring", defined="PRIDE_GLORY", random_art_replace={chance=75, rarity=250, level_range={40, 50}}, autoreq=true},
+		{type="jewelry", subtype="ring", defined="PRIDE_GLORY", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=1, {defined="ORB_DESTRUCTION"} },
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
diff --git a/game/modules/tome/data/zones/grushnak-pride/objects.lua b/game/modules/tome/data/zones/grushnak-pride/objects.lua
index 021a682375..c8bcaaefa0 100644
--- a/game/modules/tome/data/zones/grushnak-pride/objects.lua
+++ b/game/modules/tome/data/zones/grushnak-pride/objects.lua
@@ -19,30 +19,3 @@
 
 load("/data/general/objects/objects-far-east.lua")
 load("/data/general/objects/lore/sunwall.lua")
-
-local Talents = require"engine.interface.ActorTalents"
-local Stats = require"engine.interface.ActorStats"
-
-newEntity{ base = "BASE_RING",
-	define_as = "PRIDE_GLORY", rarity=false,
-	name = "Glory of the Pride", unique=true,
-	desc = [[The most prized treasure of the Battlemaster of the Pride, Grushnak. This gold ring is incribed in the orc tongue, the black speech.]],
-	unided_name = "deep black ring",
-	cost = 500,
-	material_level = 5,
-	wielder = {
-		max_mana = -40,
-		max_stamina = 40,
-		stun_immune = 1,
-		confusion_immune = 1,
-		combat_atk = 10,
-		combat_dam = 10,
-		combat_def = 5,
-		combat_armor = 10,
-		fatigue = -15,
-		talent_cd_reduction={
-			[Talents.T_RUSH]=15,
-		},
-		inc_damage={ [DamageType.PHYSICAL] = 8, },
-	},
-}
diff --git a/game/modules/tome/data/zones/high-peak/objects.lua b/game/modules/tome/data/zones/high-peak/objects.lua
index f1d423a8ca..18fe3bba18 100644
--- a/game/modules/tome/data/zones/high-peak/objects.lua
+++ b/game/modules/tome/data/zones/high-peak/objects.lua
@@ -85,4 +85,4 @@ newEntity{ define_as = "PEARL_LIFE_DEATH",
 		resists = {all = 7},
 		stun_immune = 1,
 	},
-}
\ No newline at end of file
+}
diff --git a/game/modules/tome/data/zones/maze/npcs.lua b/game/modules/tome/data/zones/maze/npcs.lua
index e69167929f..c87425d024 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, rarity=200, level_range={12, 22}}, autoreq=true},
+		{type="armor", subtype="head", defined="HELM_OF_HAMMERHAND", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
 
@@ -87,7 +87,7 @@ newEntity{ base = "BASE_NPC_SPIDER", define_as = "NIMISIL",
 	instakill_immune = 1,
 
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
-	resolvers.drops{chance=100, nb=1, {defined="LUNAR_SHIELD", random_art_replace={chance=75, rarity=220, level_range={40, 50}}} },
+	resolvers.drops{chance=100, nb=1, {defined="LUNAR_SHIELD", random_art_replace={chance=75}} },
 
 	combat_armor = 25, combat_def = 33,
 
diff --git a/game/modules/tome/data/zones/maze/objects.lua b/game/modules/tome/data/zones/maze/objects.lua
index fd04a496a1..4e7b8c6c64 100644
--- a/game/modules/tome/data/zones/maze/objects.lua
+++ b/game/modules/tome/data/zones/maze/objects.lua
@@ -18,54 +18,3 @@
 -- darkgod@te4.org
 
 load("/data/general/objects/objects.lua")
-
-local Stats = require"engine.interface.ActorStats"
-
--- Artifact, droped (and used!) by the Minautaur
-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!]],
-	require = { stat = { str=16 }, },
-	cost = 20,
-
-	wielder = {
-		combat_armor = 4,
-		fatigue = 8,
-		inc_stats = { [Stats.STAT_STR] = 3, [Stats.STAT_CON] = 3, [Stats.STAT_WIL] = 4 },
-		combat_physresist = 7,
-		combat_mentalresist = 7,
-		combat_spellresist = 7,
-	},
-}
-
-newEntity{ base = "BASE_SHIELD",
-	define_as = "LUNAR_SHIELD",
-	unique = true,
-	name = "Lunar Shield",
-	unided_name = "chitinous shield",
-	desc = [[A large section of chitin removed from Nimisil. It continues to give off a strange white glow.]],
-	color = colors.YELLOW,
-	metallic = false,
-	require = { stat = { str=35 }, },
-	cost = 350,
-	material_level = 5,
-	special_combat = {
-		dam = 45,
-		physcrit = 10,
-		dammod = {str=1},
-		damtype = DamageType.ARCANE,
-	},
-	wielder = {
-		resists={[DamageType.DARKNESS] = 25},
-		inc_damage={[DamageType.DARKNESS] = 15},
-
-		combat_armor = 7,
-		combat_def = 12,
-		combat_def_ranged = 5,
-		fatigue = 12,
-
-		lite = 1,
-		talents_types_mastery = {["divine/star-fury"]=0.2,["divine/twilight"]=0.1,},
-	},
-}
diff --git a/game/modules/tome/data/zones/old-forest/npcs.lua b/game/modules/tome/data/zones/old-forest/npcs.lua
index 6f28db77d8..f598f41df4 100644
--- a/game/modules/tome/data/zones/old-forest/npcs.lua
+++ b/game/modules/tome/data/zones/old-forest/npcs.lua
@@ -55,7 +55,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, rarity=200, level_range={10, 20}}, autoreq=true}, },
+	equipment = resolvers.equip{ {type="armor", subtype="shield", defined="OLD_MAN_WILLOW_SHIELD", random_art_replace={chance=75}, autoreq=true}, },
 	drops = resolvers.drops{chance=100, nb=5, {ego_chance=100} },
 
 	resolvers.talents{
@@ -110,7 +110,8 @@ newEntity{ define_as = "SNAPROOT", -- backup guardian
 
 	resists = { [DamageType.FIRE] = -20, [DamageType.PHYSICAL] = 50, [DamageType.COLD] = 50, [DamageType.NATURE] = 25 },
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
-	drops = resolvers.drops{chance=100, nb=5, {ego_chance=100} },
+	resolvers.drops{chance=100, nb=1, {defined="PETRIFIED_WOOD", random_art_replace={chance=75}}},
+	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
 	resolvers.talents{
 		[Talents.T_STUN]=5,
 		[Talents.T_GRAB]=5,
diff --git a/game/modules/tome/data/zones/old-forest/objects.lua b/game/modules/tome/data/zones/old-forest/objects.lua
index b88418361e..4e7b8c6c64 100644
--- a/game/modules/tome/data/zones/old-forest/objects.lua
+++ b/game/modules/tome/data/zones/old-forest/objects.lua
@@ -18,49 +18,3 @@
 -- darkgod@te4.org
 
 load("/data/general/objects/objects.lua")
-
-local Stats = require "engine.interface.ActorStats"
-
--- Artifact, droped (and used!) by Bill the Stone Troll
-
-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.]],
-	require = { stat = { str=25 }, },
-	cost = 20,
-	rarity = false,
-	metallic = false,
-
-	special_combat = {
-		dam = resolvers.rngavg(20,30),
-		physcrit = 2,
-		dammod = {str=1.5},
-	},
-	wielder = {
-		combat_armor = 5,
-		combat_def = 9,
-		fatigue = 14,
-		resists = {
-			[DamageType.FIRE] = -20,
-			[DamageType.COLD] = 20,
-			[DamageType.NATURE] = 20,
-		},
-	},
-}
-
-newEntity{ base = "BASE_GEM",
-	unique = true,
-	unided_name = "burned piece of wood",
-	name = "Petrified Wood", subtype = "black",
-	color = colors.WHITE, image="object/bloodstone.png",
-	level_range = {35, 45},
-	desc = [[A piece of the scorched wood took from the remains of Snaproot.]],
-	rarity = false,
-	cost = 100,
-	material_level = 5,
-	imbue_powers = {
-		resists = { [DamageType.NATURE] = 25, [DamageType.FIRE] = -10, [DamageType.COLD] = 10 },
-		inc_stats = { [Stats.STAT_CON] = 10, },
-	},
-}
diff --git a/game/modules/tome/data/zones/rak-shor-pride/npcs.lua b/game/modules/tome/data/zones/rak-shor-pride/npcs.lua
index c164698cf6..459408e749 100644
--- a/game/modules/tome/data/zones/rak-shor-pride/npcs.lua
+++ b/game/modules/tome/data/zones/rak-shor-pride/npcs.lua
@@ -52,7 +52,7 @@ newEntity{ base="BASE_NPC_ORC_RAK_SHOR", define_as = "RAK_SHOR",
 
 	resolvers.equip{
 		{type="weapon", subtype="staff", ego_change=100, autoreq=true},
-		{type="armor", subtype="cloth", defined="BLACK_ROBE", random_art_replace={chance=75, rarity=250, level_range={40, 50}}, autoreq=true},
+		{type="armor", subtype="cloth", defined="BLACK_ROBE", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=20, nb=1, {defined="JEWELER_TOME"} },
 	resolvers.drops{chance=100, nb=1, {defined="ORB_UNDEATH"} },
diff --git a/game/modules/tome/data/zones/rak-shor-pride/objects.lua b/game/modules/tome/data/zones/rak-shor-pride/objects.lua
index cc9153fd36..c8bcaaefa0 100644
--- a/game/modules/tome/data/zones/rak-shor-pride/objects.lua
+++ b/game/modules/tome/data/zones/rak-shor-pride/objects.lua
@@ -19,21 +19,3 @@
 
 load("/data/general/objects/objects-far-east.lua")
 load("/data/general/objects/lore/sunwall.lua")
-
-local Stats = require"engine.interface.ActorStats"
-
-newEntity{ base = "BASE_CLOTH_ARMOR",
-	define_as = "BLACK_ROBE", rarity=false,
-	name = "Black Robe", unique=true,
-	unided_name = "black robe", color=colors.DARK_GREY,
-	desc = [[A silk robe, darker than the darkest night sky, it radiates power.]],
-	cost = 500,
-	wielder = {
-		inc_stats = { [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 3 },
-		see_invisible = 10,
-		blind_immune = 1,
-		combat_spellpower = 10,
-		combat_dam = 10,
-		combat_def = 6,
-	},
-}
diff --git a/game/modules/tome/data/zones/reknor/npcs.lua b/game/modules/tome/data/zones/reknor/npcs.lua
index cdcab34dd6..4989c8e7ec 100644
--- a/game/modules/tome/data/zones/reknor/npcs.lua
+++ b/game/modules/tome/data/zones/reknor/npcs.lua
@@ -167,7 +167,7 @@ newEntity{ define_as = "LITHFENGEL", -- Lord of Ash; backup guardian
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	resolvers.equip{
-		{type="weapon", subtype="waraxe", defined="MALEDICTION", random_art_replace={chance=75, rarity=200, level_range={35, 45}}, autoreq=true},
+		{type="weapon", subtype="waraxe", defined="MALEDICTION", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=4, {ego_chance=100} },
 	resolvers.drops{chance=100, nb=1, {defined="ATHAME_WEST"} },
diff --git a/game/modules/tome/data/zones/reknor/objects.lua b/game/modules/tome/data/zones/reknor/objects.lua
index 6ced2f0277..df77035cab 100644
--- a/game/modules/tome/data/zones/reknor/objects.lua
+++ b/game/modules/tome/data/zones/reknor/objects.lua
@@ -28,27 +28,6 @@ newEntity{ base = "BASE_SCROLL", define_as = "NOTE_FROM_LAST_HOPE",
 	end}
 }
 
-newEntity{ base = "BASE_WARAXE",
-	define_as = "MALEDICTION", rarity=false,
-	unided_name = "pestilent waraxe",
-	name = "Malediction", unique=true,
-	desc = [[The land withers and crumbles wherever this cursed axe rests.]],
-	require = { stat = { str=55 }, },
-	cost = 375,
-	combat = {
-		dam = 55,
-		apr = 15,
-		physcrit = 10,
-		dammod = {str=1},
-		damrange = 1.2,
-	},
-	wielder = {
-		life_regen = -0.3,
-		inc_damage = { [DamageType.BLIGHT] = 20 },
-		melee_project={[DamageType.BLIGHT] = 20},
-	},
-}
-
 newEntity{ base = "BASE_GEM",
 	define_as = "RESONATING_DIAMOND_WEST",
 	name = "Resonating Diamond", color=colors.VIOLET, quest=true, unique="Resonating Diamond West", identified=true, no_unique_lore=true,
diff --git a/game/modules/tome/data/zones/ruins-kor-pul/npcs.lua b/game/modules/tome/data/zones/ruins-kor-pul/npcs.lua
index 6b7a905760..2165dcdb80 100644
--- a/game/modules/tome/data/zones/ruins-kor-pul/npcs.lua
+++ b/game/modules/tome/data/zones/ruins-kor-pul/npcs.lua
@@ -48,7 +48,7 @@ newEntity{ define_as = "SHADE",
 	move_others=true,
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
-	equipment = resolvers.equip{ {type="weapon", subtype="staff", defined="STAFF_KOR", random_art_replace={chance=75, rarity=150, level_range={1, 10}}, autoreq=true}, {type="armor", subtype="light", autoreq=true}, },
+	equipment = resolvers.equip{ {type="weapon", subtype="staff", defined="STAFF_KOR", random_art_replace={chance=75}, autoreq=true}, {type="armor", subtype="light", autoreq=true}, },
 	drops = resolvers.drops{chance=100, nb=3, {ego_chance=100} },
 
 	resolvers.talents{
@@ -98,7 +98,7 @@ newEntity{ define_as = "KOR_FURY",
 	resolvers.equip{
 		{type="weapon", subtype="staff", ego_chance=100, autoreq=true},
 		{type="armor", subtype="light", autoreq=true},
-		{type="jewelry", subtype="amulet", defined="VOX", random_art_replace={chance=75, rarity=220, level_range={40, 50}}, autoreq=true},
+		{type="jewelry", subtype="amulet", defined="VOX", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=3, {ego_chance=100} },
 
diff --git a/game/modules/tome/data/zones/ruins-kor-pul/objects.lua b/game/modules/tome/data/zones/ruins-kor-pul/objects.lua
index 011289877f..4e7b8c6c64 100644
--- a/game/modules/tome/data/zones/ruins-kor-pul/objects.lua
+++ b/game/modules/tome/data/zones/ruins-kor-pul/objects.lua
@@ -18,47 +18,3 @@
 -- darkgod@te4.org
 
 load("/data/general/objects/objects.lua")
-
--- Artifact, droped (and used!) by the Shade
-newEntity{ base = "BASE_STAFF",
-	define_as = "STAFF_KOR", rarity=false,
-	name = "Kor's Fall", unique=true,
-	desc = [[Made from the bones of of many creatures this staff glows with power. You can feel its evilness as you touch it.]],
-	require = { stat = { mag=25 }, },
-	cost = 5,
-	combat = {
-		dam = 10,
-		apr = 0,
-		physcrit = 1.5,
-		dammod = {mag=1.1},
-	},
-	wielder = {
-		see_invisible = 2,
-		combat_spellpower = 7,
-		combat_spellcrit = 8,
-		inc_damage={
-			[DamageType.FIRE] = 4,
-			[DamageType.COLD] = 4,
-			[DamageType.ACID] = 4,
-			[DamageType.LIGHTNING] = 4,
-			[DamageType.BLIGHT] = 4,
-		},
-	},
-}
-
-newEntity{ base = "BASE_AMULET",
-	define_as = "VOX", rarity=false,
-	name = "Vox", unique=true,
-	unided_name = "ringing amulet", color=colors.BLUE,
-	desc = [[No force can hope to silence the wearer of this amulet.]],
-	cost = 3000,
-	wielder = {
-		see_invisible = 20,
-		silence_immune = 0.8,
-		combat_spellpower = 9,
-		combat_spellcrit = 4,
-		mana = 50,
-		vim = 50,
-	},
-
-}
diff --git a/game/modules/tome/data/zones/telmur/npcs.lua b/game/modules/tome/data/zones/telmur/npcs.lua
index 24a2bff5e5..8795b21df9 100644
--- a/game/modules/tome/data/zones/telmur/npcs.lua
+++ b/game/modules/tome/data/zones/telmur/npcs.lua
@@ -58,7 +58,7 @@ newEntity{ define_as = "SHADE_OF_TELOS",
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, },
 	resolvers.equip{
-		{type="weapon", subtype="staff", defined="TELOS_TOP_HALF", random_art_replace={chance=75, rarity=190, level_range={40, 50}}, autoreq=true},
+		{type="weapon", subtype="staff", defined="TELOS_TOP_HALF", random_art_replace={chance=75}, autoreq=true},
 		{type="weapon", subtype="staff", defined="TELOS_BOTTOM_HALF", autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=2, {type="wand"} },
diff --git a/game/modules/tome/data/zones/telmur/objects.lua b/game/modules/tome/data/zones/telmur/objects.lua
index b6812b426d..cd94e44171 100644
--- a/game/modules/tome/data/zones/telmur/objects.lua
+++ b/game/modules/tome/data/zones/telmur/objects.lua
@@ -21,29 +21,6 @@ load("/data/general/objects/objects.lua")
 
 local Stats = require "engine.interface.ActorStats"
 
-newEntity{ base = "BASE_STAFF",
-	define_as = "TELOS_TOP_HALF", rarity=false,
-	slot_forbid = false,
-	twohanded = false,
-	name = "Telos's Staff (Top Half)", unique=true,
-	desc = [[The top part of Telos's broken staff.]],
-	require = { stat = { mag=35 }, },
-	encumberance = 2.5,
-	cost = 500,
-	combat = {
-		dam = 35,
-		apr = 0,
-		physcrit = 1.5,
-		dammod = {mag=1.0},
-	},
-	wielder = {
-		combat_spellpower = 25,
-		combat_spellcrit = 5,
-		combat_mentalresist = 8,
-		inc_stats = { [Stats.STAT_WIL] = 5, },
-	},
-}
-
 newEntity{ base = "BASE_STAFF",
 	slot = "OFFHAND", slot_forbid = false,
 	twohanded = false, add_name=false,
diff --git a/game/modules/tome/data/zones/tol-falas/npcs.lua b/game/modules/tome/data/zones/tol-falas/npcs.lua
index 52d8cd8e5a..e5d7c5dee7 100644
--- a/game/modules/tome/data/zones/tol-falas/npcs.lua
+++ b/game/modules/tome/data/zones/tol-falas/npcs.lua
@@ -51,7 +51,7 @@ newEntity{ define_as = "THE_MASTER",
 	equipment = resolvers.equip{
 		{type="weapon", subtype="greatsword", ego_chance=100, autoreq=true},
 		{type="armor", subtype="heavy", ego_chance=50, autoreq=true},
-		{type="jewelry", subtype="amulet", defined="AMULET_DREAD", random_art_replace={chance=75, rarity=210, level_range={25, 35}}, autoreq=true},
+		{type="jewelry", subtype="amulet", defined="AMULET_DREAD", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
 	resolvers.drops{chance=100, nb=1, {type="weapon", subtype="staff", defined="STAFF_ABSORPTION"} },
@@ -127,7 +127,7 @@ newEntity{ define_as = "PALE_DRAKE",
 		{type="armor", subtype="cloth", ego_chance=50, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
-	resolvers.drops{chance=100, nb=1, {defined="RUNED_SKULL", random_art_replace={chance=75, rarity=250, level_range={40, 50}}} },
+	resolvers.drops{chance=100, nb=1, {defined="RUNED_SKULL", random_art_replace={chance=75}} },
 
 	summon = {
 		{type="undead", subtype="bone giant", special_rarity="bonegiant_rarity", number=2, hasxp=true},
diff --git a/game/modules/tome/data/zones/tol-falas/objects.lua b/game/modules/tome/data/zones/tol-falas/objects.lua
index 69a55fc753..4e7b8c6c64 100644
--- a/game/modules/tome/data/zones/tol-falas/objects.lua
+++ b/game/modules/tome/data/zones/tol-falas/objects.lua
@@ -18,90 +18,3 @@
 -- darkgod@te4.org
 
 load("/data/general/objects/objects.lua")
-
-newEntity{ base = "BASE_AMULET",
-	define_as = "AMULET_DREAD", rarity=false,
-	name = "Choker of Dread", unique=true,
-	unided_name = "dark amulet", color=colors.LIGHT_DARK,
-	desc = [[The evilness of undeath radiates from this amulet.]],
-	cost = 5000,
-	wielder = {
-		see_invisible = 10,
-		blind_immune = 1,
-		combat_spellpower = 5,
-		combat_dam = 5,
-	},
-	max_power = 60, power_regen = 1,
-	use_power = { name = "summon an elder vampire to your side", power = 60, use = function(self, who)
-		if not who:canBe("summon") then game.logPlayer(who, "You can not summon, you are suppressed!") return end
-
-		-- Find space
-		local x, y = util.findFreeGrid(who.x, who.y, 5, true, {[engine.Map.ACTOR]=true})
-		if not x then
-			game.logPlayer(who, "Not enough space to invoke the vampire!")
-			return
-		end
-		print("Invoking guardian on", x, y)
-
-		local NPC = require "mod.class.NPC"
-		local vampire = NPC.new{
-			type = "undead", subtype = "vampire",
-			display = "V",
-			name = "elder vampire", color=colors.RED,
-			desc=[[A terrible robed undead figure, this creature has existed in its unlife for many centuries by stealing the life of others. It can
-			summon the very shades of its victims from beyond the grave to come enslaved to its aid.]],
-
-			combat = { dam=resolvers.rngavg(9,13), atk=10, apr=9, damtype=engine.DamageType.DRAINLIFE, dammod={str=1.9} },
-
-			body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
-
-			autolevel = "warriormage",
-			ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=3, },
-			energy = { mod=1 },
-			stats = { str=12, dex=12, mag=12, con=12 },
-			life_regen = 3,
-			size_category = 3,
-			rank = 3,
-			infravision = 20,
-
-			inc_damage = table.clone(who.inc_damage, true),
-
-			resolvers.tmasteries{ ["technique/other"]=0.5, ["spell/phantasm"]=0.8, },
-
-			resists = { [engine.DamageType.COLD] = 80, [engine.DamageType.NATURE] = 80, [engine.DamageType.LIGHT] = -50,  },
-			blind_immune = 1,
-			confusion_immune = 1,
-			see_invisible = 5,
-			undead = 1,
-
-			level_range = {who.level, who.level}, exp_worth = 0,
-			max_life = resolvers.rngavg(90,100),
-			combat_armor = 12, combat_def = 10,
-			resolvers.talents{ [who.T_STUN]=2, [who.T_BLUR_SIGHT]=3, [who.T_PHANTASMAL_SHIELD]=2, [who.T_ROTTING_DISEASE]=3, },
-
-			faction = who.faction,
-			summoner = who,
-			summon_time = 10,
-		}
-
-		vampire:resolve()
-		game.zone:addEntity(game.level, vampire, "actor", x, y)
-
-		game:playSoundNear(who, "talents/spell_generic")
-	end },
-}
-
-newEntity{ define_as = "RUNED_SKULL",
-	unique = true,
-	type = "gem", subtype="red",
-	unided_name = "human skull",
-	name = "Runed Skull",
-	display = "*", color=colors.RED,
-	encumber = 3,
-	desc = [[Dull red runes are etched all over this blackened skull.]],
-
-	carrier = {
-		combat_spellpower = 7,
-		on_melee_hit = {[DamageType.FIREKNOCKBACK]=25},
-	},
-}
diff --git a/game/modules/tome/data/zones/town-sunwall-outpost/objects.lua b/game/modules/tome/data/zones/town-sunwall-outpost/objects.lua
index cdffd619b5..65f98bf33c 100644
--- a/game/modules/tome/data/zones/town-sunwall-outpost/objects.lua
+++ b/game/modules/tome/data/zones/town-sunwall-outpost/objects.lua
@@ -18,70 +18,3 @@
 -- darkgod@te4.org
 
 load("/data/general/objects/objects-far-east.lua")
-
-newEntity{ base = "BASE_RING",
-	define_as = "RING_LOST_LOVE", rarity=false,
-	name = "Ring of Lost Love", unique=true,
-	unided_name = "wedding ring", color=colors.LIGHT_BLUE,
-	desc = [[Letters are engraved in it: "Crichton my love".]],
-	cost = 500,
-	wielder = {
-		see_invisible = 10,
-		blind_immune = 1,
-		combat_spellpower = 5,
-		combat_dam = 5,
-	},
-	max_power = 60, power_regen = 1,
-	use_power = { name = "summon an elder vampire to your side", power = 60, use = function(self, who)
-		-- Find space
-		local x, y = util.findFreeGrid(who.x, who.y, 5, true, {[engine.Map.ACTOR]=true})
-		if not x then
-			game.logPlayer(who, "Not enough space to invoke the vampire!")
-			return
-		end
-		print("Invoking guardian on", x, y)
-
-		local NPC = require "mod.class.NPC"
-		local vampire = NPC.new{
-			type = "undead", subtype = "vampires",
-			display = "V",
-			name = "elder vampire", color=colors.RED,
-			desc=[[A terrible robed undead figure, this creature has existed in its unlife for many centuries by stealing the life of others. It can
-			summon the very shades of its victims from beyond the grave to come enslaved to its aid.]],
-
-			combat = { dam=resolvers.rngavg(9,13), atk=10, apr=9, damtype=DamageType.DRAINLIFE, dammod={str=1.9} },
-
-			body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
-
-			autolevel = "warriormage",
-			ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=3, },
-			energy = { mod=1 },
-			stats = { str=12, dex=12, mag=12, con=12 },
-			life_regen = 3,
-			size_category = 3,
-			rank = 3,
-
-			resolvers.tmasteries{ ["technique/other"]=0.5, ["spell/phantasm"]=0.8, },
-
-			resists = { [DamageType.COLD] = 80, [DamageType.NATURE] = 80, [DamageType.LIGHT] = -50,  },
-			blind_immune = 1,
-			confusion_immune = 1,
-			see_invisible = 5,
-			undead = 1,
-
-			level_range = {who.level, who.level}, exp_worth = 0,
-			max_life = resolvers.rngavg(90,100),
-			combat_armor = 12, combat_def = 10,
-			resolvers.talents{ [who.T_STUN]=2, [who.T_BLUR_SIGHT]=3, [who.T_PHANTASMAL_SHIELD]=2, [who.T_ROTTING_DISEASE]=3, },
-
-			faction = who.faction,
-			summoner = who,
-			summon_time = 10,
-		}
-
-		vampire:resolve()
-		game.zone:addEntity(game.level, vampire, "actor", x, y)
-
-		game:playSoundNear(who, "talents/spell_generic")
-	end },
-}
diff --git a/game/modules/tome/data/zones/trollshaws/npcs.lua b/game/modules/tome/data/zones/trollshaws/npcs.lua
index 4bcb402075..4ce132ea5c 100644
--- a/game/modules/tome/data/zones/trollshaws/npcs.lua
+++ b/game/modules/tome/data/zones/trollshaws/npcs.lua
@@ -49,7 +49,7 @@ newEntity{ define_as = "TROLL_BILL",
 	move_others=true,
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
-	resolvers.equip{ {type="weapon", subtype="greatmaul", defined="GREATMAUL_BILL_TRUNK", random_art_replace={chance=75, rarity=150, level_range={1, 10}}, autoreq=true}, },
+	resolvers.equip{ {type="weapon", subtype="greatmaul", defined="GREATMAUL_BILL_TRUNK", random_art_replace={chance=75}, autoreq=true}, },
 	resolvers.drops{chance=100, nb=3, {ego_chance=100} },
 
 	resolvers.talents{
@@ -87,7 +87,7 @@ newEntity{ define_as = "ALUIN",
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	resolvers.equip{
 		{type="weapon", subtype="waraxe", ego_chance=100, autoreq=true},
-		{type="armor", subtype="shield", defined="SANGUINE_SHIELD", random_art_replace={chance=65, rarity=220, level_range={35, 45}}, autoreq=true},
+		{type="armor", subtype="shield", defined="SANGUINE_SHIELD", random_art_replace={chance=65}, autoreq=true},
 		{type="armor", subtype="massive", ego_chance=100, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=3, {ego_chance=100} },
diff --git a/game/modules/tome/data/zones/trollshaws/objects.lua b/game/modules/tome/data/zones/trollshaws/objects.lua
index 8a7fd4922f..f3741edc09 100644
--- a/game/modules/tome/data/zones/trollshaws/objects.lua
+++ b/game/modules/tome/data/zones/trollshaws/objects.lua
@@ -19,30 +19,6 @@
 
 load("/data/general/objects/objects.lua")
 
-local Stats = require "engine.interface.ActorStats"
-
--- Artifact, droped (and used!) by Bill the Stone Troll
-
-newEntity{ base = "BASE_GREATMAUL",
-	define_as = "GREATMAUL_BILL_TRUNK",
-	name = "Bill's Tree Trunk", unique=true,
-	desc = [[This is a big nasty looking tree trunk that Bill was using as a weapon. It could still serve this purpose, should you be strong enough to wield it!]],
-	require = { stat = { str=25 }, },
-	rarity = false,
-	metallic = false,
-	cost = 5,
-	combat = {
-		dam = 30,
-		apr = 7,
-		physcrit = 1.5,
-		dammod = {str=1.3},
-		damrange = 1.7,
-	},
-
-	wielder = {
-	},
-}
-
 for i = 1, 5 do
 newEntity{ base = "BASE_SCROLL",
 	define_as = "NOTE"..i,
@@ -53,27 +29,3 @@ newEntity{ base = "BASE_SCROLL",
 	encumberance = 0,
 }
 end
-
-newEntity{ base = "BASE_SHIELD",
-	define_as = "SANGUINE_SHIELD",
-	unided_name = "bloody shield",
-	name = "Sanguine Shield", unique=true,
-	desc = [[Though tarnished and spattered with blood, the emblem of the sun still manages to shine through on this shield.]],
-	require = { stat = { str=39 }, },
-	cost = 120,
-
-	special_combat = {
-		dam = 40,
-		physcrit = 9,
-		dammod = {str=1.2},
-	},
-	wielder = {
-		combat_armor = 4,
-		combat_def = 14,
-		combat_def_ranged = 14,
-		inc_stats = { [Stats.STAT_CON] = 5, },
-		fatigue = 19,
-		resists = { [DamageType.BLIGHT] = 25, },
-		life_regen = 5,
-	},
-}
diff --git a/game/modules/tome/data/zones/valley-moon/npcs.lua b/game/modules/tome/data/zones/valley-moon/npcs.lua
index 853c5b4ef7..e7c19673bc 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, rarity=290, level_range={40, 50}}, autoreq=true},
+		{type="weapon", subtype="whip", defined="WHIP_GOTHMOG", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=3, {ego_chance=100} },
 
diff --git a/game/modules/tome/data/zones/valley-moon/objects.lua b/game/modules/tome/data/zones/valley-moon/objects.lua
index 930ed6fdc0..65f98bf33c 100644
--- a/game/modules/tome/data/zones/valley-moon/objects.lua
+++ b/game/modules/tome/data/zones/valley-moon/objects.lua
@@ -18,30 +18,3 @@
 -- darkgod@te4.org
 
 load("/data/general/objects/objects-far-east.lua")
-
-newEntity{ base = "BASE_WHIP",
-	define_as = "WHIP_GOTHMOG",
-	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.]],
-	require = { stat = { dex=48 }, },
-	cost = 250,
-	material_level = 5,
-	combat = {
-		dam = resolvers.rngavg(40,45),
-		apr = 0,
-		physcrit = 9,
-		dammod = {dex=1},
-		damtype = DamageType.FIREKNOCKBACK,
-	},
-	wielder = {
-		esp = {["demon/minor"]=1, ["demon/major"]=1},
-		see_invisible = 2,
-	},
-	carrier = {
-		inc_damage={
-			[DamageType.BLIGHT] = 8,
-		},
-	},
-}
diff --git a/game/modules/tome/data/zones/vor-armoury/npcs.lua b/game/modules/tome/data/zones/vor-armoury/npcs.lua
index 808e49afc8..2c35f65289 100644
--- a/game/modules/tome/data/zones/vor-armoury/npcs.lua
+++ b/game/modules/tome/data/zones/vor-armoury/npcs.lua
@@ -52,7 +52,7 @@ newEntity{ base="BASE_NPC_ORC_GRUSHNAK", define_as = "GNARG",
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1 },
 
 	resolvers.equip{
-		{type="weapon", subtype="greatsword", defined="MURDERBLADE", random_art_replace={chance=75, rarity=250, level_range={35, 45}}, autoreq=true},
+		{type="weapon", subtype="greatsword", defined="MURDERBLADE", random_art_replace={chance=75}, autoreq=true},
 		{type="armor", subtype="massive", ego_change=100, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
diff --git a/game/modules/tome/data/zones/vor-armoury/objects.lua b/game/modules/tome/data/zones/vor-armoury/objects.lua
index 8087b04f7c..82b327ef5b 100644
--- a/game/modules/tome/data/zones/vor-armoury/objects.lua
+++ b/game/modules/tome/data/zones/vor-armoury/objects.lua
@@ -19,33 +19,6 @@
 
 load("/data/general/objects/objects-far-east.lua")
 
-local Stats = require"engine.interface.ActorStats"
-
-newEntity{ base = "BASE_GREATSWORD",
-	define_as = "MURDERBLADE", rarity=false,
-	name = "Warmaster Gnarg's Murderblade", unique=true,
-	unided_name = "blood-etched greatsword", color=colors.CRIMSON,
-	desc = [[A blood etched greatsword, it has seen many foes. From the inside.]],
-
-	require = { stat = { str=35 }, },
-	cost = 300,
-	material_level = 5,
-	combat = {
-		dam = 54,
-		apr = 19,
-		physcrit = 4.5,
-		dammod = {str=1.2},
-	},
-	wielder = {
-		see_invisible = 25,
-		inc_stats = { [Stats.STAT_CON] = 5, [Stats.STAT_STR] = 5, [Stats.STAT_DEX] = 5, },
-		talents_types_mastery = {
-			["technique/2hweapon-cripple"] = 0.2,
-			["technique/2hweapon-offense"] = 0.2,
-		},
-	},
-}
-
 newEntity{ define_as = "ATHAME",
 	quest=true, unique=true, identified=true, no_unique_lore=true,
 	type = "misc", subtype="misc",
diff --git a/game/modules/tome/data/zones/vor-pride/npcs.lua b/game/modules/tome/data/zones/vor-pride/npcs.lua
index b888b232ef..b415fab5b7 100644
--- a/game/modules/tome/data/zones/vor-pride/npcs.lua
+++ b/game/modules/tome/data/zones/vor-pride/npcs.lua
@@ -47,7 +47,7 @@ newEntity{ base="BASE_NPC_ORC_VOR", define_as = "VOR",
 	resolvers.equip{
 		{type="weapon", subtype="staff", ego_change=100, autoreq=true},
 		{type="armor", subtype="cloth", ego_change=100, autoreq=true},
-		{type="armor", subtype="head", defined="CROWN_ELEMENTS", random_art_replace={chance=75, rarity=250, level_range={40, 50}}, autoreq=true},
+		{type="armor", subtype="head", defined="CROWN_ELEMENTS", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=1, {defined="ORB_ELEMENTS"} },
 	resolvers.drops{chance=20, nb=1, {defined="JEWELER_TOME"} },
diff --git a/game/modules/tome/data/zones/vor-pride/objects.lua b/game/modules/tome/data/zones/vor-pride/objects.lua
index 827607db2b..2126bb620e 100644
--- a/game/modules/tome/data/zones/vor-pride/objects.lua
+++ b/game/modules/tome/data/zones/vor-pride/objects.lua
@@ -22,33 +22,6 @@ load("/data/general/objects/lore/sunwall.lua")
 
 local Stats = require"engine.interface.ActorStats"
 
-newEntity{ base = "BASE_LEATHER_CAP",
-	define_as = "CROWN_ELEMENTS", rarity=false,
-	name = "Crown of the Elements", unique=true,
-	unided_name = "jeweled crown", color=colors.DARK_GREY,
-	desc = [[Jeweled crown]],
-	cost = 500,
-	material_level = 5,
-	wielder = {
-		inc_stats = { [Stats.STAT_CON] = 5, [Stats.STAT_WIL] = 3, },
-		resists={
-			[DamageType.FIRE] = 15,
-			[DamageType.COLD] = 15,
-			[DamageType.ACID] = 15,
-			[DamageType.LIGHTNING] = 15,
-		},
-		melee_project={
-			[DamageType.FIRE] = 10,
-			[DamageType.COLD] = 10,
-			[DamageType.ACID] = 10,
-			[DamageType.LIGHTNING] = 10,
-		},
-		see_invisible = 15,
-		combat_armor = 5,
-		fatigue = 5,
-	},
-}
-
 -- Artifact, randomly dropped in Vor Pride, and only there
 newEntity{ base = "BASE_SCROLL", subtype="tome",
 	name = "Tome of Wildfire", unided_name = "burning book", unique=true, no_unique_lore=true,
diff --git a/game/modules/tome/resolvers.lua b/game/modules/tome/resolvers.lua
index 9e81fe55df..aa256ca788 100644
--- a/game/modules/tome/resolvers.lua
+++ b/game/modules/tome/resolvers.lua
@@ -26,12 +26,18 @@ function resolvers.calc.equip(t, e)
 	print("Equipment resolver for", e.name)
 	-- Iterate of object requests, try to create them and equip them
 	for i, filter in ipairs(t[1]) do
-		print("Equipment resolver", e.name, filter.type, filter.subtype)
+		print("Equipment resolver", e.name, filter.type, filter.subtype, filter.defined)
 		local o
 		if not filter.defined then
 			o = game.zone:makeEntity(game.level, "object", filter, nil, true)
 		else
-			o = game.zone:makeEntityByName(game.level, "object", filter.defined)
+			local forced
+			o, forced = game.zone:makeEntityByName(game.level, "object", filter.defined, filter.random_art_replace and true or false)
+			-- If we forced the generation this means it was already found
+			if forced then
+				print("Serving unique "..o.name.." but forcing replacement drop")
+				filter.random_art_replace.chance = 100
+			end
 		end
 		if o then
 			print("Zone made us an equipment according to filter!", o:getName())
-- 
GitLab