diff --git a/game/engine/Entity.lua b/game/engine/Entity.lua
index e02dee690d2b2eefb097c086a086dc39cd211037..ce5f57fbd4402b6498a7b2b30466242b47b24f5f 100644
--- a/game/engine/Entity.lua
+++ b/game/engine/Entity.lua
@@ -363,6 +363,7 @@ function _M:loadList(file, no_default, res, mod, loaded)
 		resolvers = resolvers,
 		DamageType = require "engine.DamageType",
 		entity_mod = mod,
+		rarity = function(add, mult) add = add or 0; mult = mult or 1; return function(e) if e.rarity then e.rarity = math.ceil(e.rarity * mult + add) end end end,
 		newEntity = function(t)
 			-- Do we inherit things ?
 			if t.base then
diff --git a/game/engine/Projectile.lua b/game/engine/Projectile.lua
index 0caf0a7a18fa121ab789ba3c91baf780c1f78adf..6424ef603846ea212e91507f9d10f1183255f1c6 100644
--- a/game/engine/Projectile.lua
+++ b/game/engine/Projectile.lua
@@ -154,6 +154,15 @@ function _M:act()
 	return true
 end
 
+--- Something moved in the same spot as us, hit ?
+function _M:on_move(x, y, target)
+	if self.project and self.project.def.typ.stop_block then
+		self.src:projectDoStop(self.project.def.typ, self.project.def.tg, self.project.def.damtype, self.project.def.dam, self.project.def.particles, self.x, self.y, self.tmp_proj)
+		game.level:removeEntity(self)
+		self.dead = true
+	end
+end
+
 --- Generate a projectile for a project() call
 function _M:makeProject(src, display, def, do_move, do_act, do_stop)
 	display = display or {display='*'}
diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index 4cfb07f2a40199900aefd324a6af41098ea8acf2..6841d28efb2c2805e727fab96e200749db29d008 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -114,7 +114,7 @@ function _M:descAttribute(attr)
 	elseif attr == "ARMOR" then
 		return (self.wielder and self.wielder.combat_def or 0).." def, "..(self.wielder and self.wielder.combat_armor or 0).." armor"
 	elseif attr == "ATTACK" then
-		return (self.wielder and self.wielder.combat_atk or 0).." attack, "..(self.wielder and self.wielder.combat_apr or 0).." apr"..(self.wielder and self.wielder.combat_dam or 0).." power"
+		return (self.wielder and self.wielder.combat_atk or 0).." attack, "..(self.wielder and self.wielder.combat_apr or 0).." apr, "..(self.wielder and self.wielder.combat_dam or 0).." power"
 	elseif attr == "MONEY" then
 		return ("worth %0.2f"):format(self.money_value / 10)
 	elseif attr == "USE_TALENT" then
@@ -291,7 +291,7 @@ function _M:getTextualDesc()
 
 	if w.stamina_regen_on_hit then desc[#desc+1] = ("Regenerates %0.2f stamina when hit."):format(w.stamina_regen_on_hit) end
 	if w.mana_regen_on_hit then desc[#desc+1] = ("Regenerates %0.2f mana when hit."):format(w.mana_regen_on_hit) end
-	if w.equilibrium_regen_on_hit then desc[#desc+1] = ("Regenerates %0.2f equilibrium when hit."):format(w.equilibriumregen_on_hit) end
+	if w.equilibrium_regen_on_hit then desc[#desc+1] = ("Regenerates %0.2f equilibrium when hit."):format(w.equilibrium_regen_on_hit) end
 
 	if w.max_life then desc[#desc+1] = ("Maximum life %d"):format(w.max_life) end
 	if w.max_mana then desc[#desc+1] = ("Maximum mana %d"):format(w.max_mana) end
diff --git a/game/modules/tome/data/general/npcs/ant.lua b/game/modules/tome/data/general/npcs/ant.lua
index 219771977f13307c26add941300c98ce44e01870..d94277baf0ff7544b0f33079cb95a8e16fc6605e 100644
--- a/game/modules/tome/data/general/npcs/ant.lua
+++ b/game/modules/tome/data/general/npcs/ant.lua
@@ -42,21 +42,21 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant white ant", color=colors.WHITE, image="npc/white_ant.png",
 	desc = "It's a large white ant.",
 	level_range = {1, 15}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 }
 
 newEntity{ base = "BASE_NPC_ANT",
 	name = "giant brown ant", color=colors.UMBER, image="npc/brown_ant.png",
 	desc = "It's a large brown ant.",
 	level_range = {1, 15}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 }
 
 newEntity{ base = "BASE_NPC_ANT",
 	name = "giant carpenter ant", color=colors.BLACK, image="npc/carpenter_ant.png",
 	desc = "It's a large black ant with huge mandibles.",
 	level_range = {2, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	combat = { dam=6 },
 }
 
@@ -64,7 +64,7 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant green ant", color=colors.GREEN, image="npc/green_ant.png",
 	desc = "It's a large green ant.",
 	level_range = {5, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	combat = { DamageType.POISON },
 }
 
@@ -72,7 +72,7 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant red ant", color=colors.RED, image="npc/red_ant.png",
 	desc = "It's a large red ant.",
 	level_range = {5, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	combat = { damtype=DamageType.FIRE },
 }
 
@@ -80,7 +80,7 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant blue ant", color=colors.BLUE, image="npc/blue_ant.png",
 	desc = "It's a large blue ant.",
 	level_range = {5, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	combat = { damtype=DamageType.COLD },
 }
 
@@ -88,7 +88,7 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant yellow ant", color=colors.YELLOW, image="npc/yellow_ant.png",
 	desc = "It's a large yellow ant.",
 	level_range = {5, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	combat = { damtype=DamageType.LIGHTNING },
 }
 
@@ -96,7 +96,7 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant black ant", color=colors.BLACK, image="npc/black_ant.png",
 	desc = "It's a large black ant.",
 	level_range = {5, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	combat = { damtype=DamageType.ACID },
 }
 
@@ -104,7 +104,7 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant fire ant", color=colors.RED, image="npc/fire_ant.png",
 	desc = "It's a large red ant, wreathed in flames.",
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(20,40),
 	combat = { damtype=DamageType.FIRE },
 	combat_armor = 5, combat_def = 5,
@@ -115,7 +115,7 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant ice ant", color=colors.WHITE, image="npc/ice_ant.png",
 	desc = "It's a large white ant. The air is frigid around this ant.",
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(20,40),
 	combat = { damtype=DamageType.ICE },
 	combat_armor = 5, combat_def = 5,
@@ -126,7 +126,7 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant lightning ant", color=colors.YELLOW, image="npc/lightning_ant.png",
 	desc = "It's a large yellow ant with sparks arcing across its body.",
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(20,40),
 	combat = { damtype=DamageType.LIGHTNING },
 	combat_armor = 5, combat_def = 5,
@@ -137,7 +137,7 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant acid ant", color=colors.DARK_GREY, image="npc/acid_ant.png",
 	desc = "It's a large black ant.  Its porous skin oozes acid.",
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(20,40),
 	combat = { damtype=DamageType.ACID },
 	combat_armor = 5, combat_def = 5,
@@ -148,7 +148,7 @@ newEntity{ base = "BASE_NPC_ANT",
 	name = "giant army ant", color=colors.ORANGE, image="npc/army_ant.png",
 	desc = "It's a large ant with a heavy exoskeleton, geared for war.",
 	level_range = {18, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(50,60),
 	combat_armor = 15, combat_def = 7,
 }
diff --git a/game/modules/tome/data/general/npcs/aquatic_critter.lua b/game/modules/tome/data/general/npcs/aquatic_critter.lua
index bcb30e11ed9b478100294f1f0069f873e11c621a..6999fa25e385786d962d872486b933dfc5ac4d4b 100644
--- a/game/modules/tome/data/general/npcs/aquatic_critter.lua
+++ b/game/modules/tome/data/general/npcs/aquatic_critter.lua
@@ -45,14 +45,14 @@ newEntity{ base = "BASE_NPC_AQUATIC_CRITTER",
 	name = "giant eel", color=colors.CADET_BLUE,
 	desc = "A snake-like being, moving toward you.",
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 }
 
 newEntity{ base = "BASE_NPC_AQUATIC_CRITTER",
 	name = "electric eel", color=colors.STEEL_BLUE,
 	desc = "A snake-like being, radiating electricity.",
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 4,
 	autolevel = "warriormage",
 	combat = {damtype=DamageType.LIGHTNING},
 	resolvers.talents{ [Talents.T_CHAIN_LIGHTNING]=3, [Talents.T_LIGHTNING]=3 },
@@ -83,7 +83,7 @@ newEntity{ base = "BASE_NPC_AQUATIC_CRITTER",
 	name = "squid", color=colors.TEAL,
 	desc = "Darting its many tentacles toward you, it tries to lock you down.",
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	resolvers.talents{ [Talents.T_GRAB]=3, },
 }
 
@@ -91,7 +91,7 @@ newEntity{ base = "BASE_NPC_AQUATIC_CRITTER",
 	name = "ink squid", color=colors.LIGHT_STEEL_BLUE,
 	desc = "Darting its many tentacles toward you, it tries to lock you down.",
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 5,
+	rarity = 2,
 	stats = { mag=30, },
 	resolvers.talents{ [Talents.T_GRAB]=3, [Talents.T_BLINDING_INK]=3, },
 }
diff --git a/game/modules/tome/data/general/npcs/aquatic_demon.lua b/game/modules/tome/data/general/npcs/aquatic_demon.lua
index 52d4a8a17b2f8427036de9c06291a12873726c57..8594906f192a9e5f00bdbb85041e70437f10d63c 100644
--- a/game/modules/tome/data/general/npcs/aquatic_demon.lua
+++ b/game/modules/tome/data/general/npcs/aquatic_demon.lua
@@ -44,7 +44,7 @@ newEntity{ base = "BASE_NPC_AQUATIC_DEMON",
 	name = "water imp", color=colors.YELLOW_GREEN, unique=true,
 	desc = "A small water demon, lobbing spells at you.",
 	level_range = {10, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 1,
 	rank = 2,
 	size_category = 1,
 	autolevel = "caster",
@@ -61,7 +61,7 @@ newEntity{ base = "BASE_NPC_AQUATIC_DEMON",
 	name = "Walrog", color=colors.DARK_SEA_GREEN, unique=true,
 	desc = "Walrog, the lord of Water",
 	level_range = {20, 30}, exp_worth = 1,
-	rarity = 1,
+	rarity = 50,
 	rank = 4,
 	life_rating = 16,
 	autolevel = "warriormage",
diff --git a/game/modules/tome/data/general/npcs/bear.lua b/game/modules/tome/data/general/npcs/bear.lua
index 3028e9a04538ca685a4f3dc2f5692b1b5f9022d1..d9605bad338fd5223e0a6517b96f57c8c5dfcea2 100644
--- a/game/modules/tome/data/general/npcs/bear.lua
+++ b/game/modules/tome/data/general/npcs/bear.lua
@@ -59,7 +59,7 @@ newEntity{ base = "BASE_NPC_BEAR",
 	name = "black bear", color={50,50,50},
 	desc = [[Do you smell like honey? 'cause this bear wants honey.]],
 	level_range = {6, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 2,
 	max_life = resolvers.rngavg(90,100),
 	combat_armor = 8, combat_def = 3,
 	resolvers.talents{ [Talents.T_STUN]=1 },
@@ -69,7 +69,7 @@ newEntity{ base = "BASE_NPC_BEAR",
 	name = "cave bear", color=colors.DARK_SLATE_GRAY,
 	desc = [[It has come down from its cave foraging for food. Unfortunately, it found you.]],
 	level_range = {7, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 3,
 	max_life = resolvers.rngavg(100,110),
 	combat_armor = 9, combat_def = 4,
 	combat = { dam=resolvers.rngavg(13,17), atk=7, apr=2, physspeed=2 },
@@ -80,7 +80,7 @@ newEntity{ base = "BASE_NPC_BEAR",
 	name = "war bear", color=colors.DARK_UMBER,
 	desc = [[Bears with tusks, trained to kill.]],
 	level_range = {7, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 3,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 9, combat_def = 4,
 	combat = { dam=resolvers.rngavg(13,17), atk=10, apr=3, physspeed=2 },
@@ -91,7 +91,7 @@ newEntity{ base = "BASE_NPC_BEAR",
 	name = "grizzly bear", color=colors.LIGHT_UMBER,
 	desc = [[A huge, beastly bear, more savage than most of its kind.]],
 	level_range = {10, nil}, exp_worth = 1,
-	rarity = 9,
+	rarity = 4,
 	max_life = resolvers.rngavg(110,120),
 	combat_armor = 10, combat_def = 5,
 	combat = { dam=resolvers.rngavg(15,20), atk=10, apr=3, physspeed=2 },
@@ -102,7 +102,7 @@ newEntity{ base = "BASE_NPC_BEAR",
 	name = "polar bear", color=colors.WHITE,
 	desc = [[This huge white bear has wandered south in search of food.]],
 	level_range = {12, nil}, exp_worth = 1,
-	rarity = 11,
+	rarity = 6,
 	max_life = resolvers.rngavg(110,120),
 	combat_armor = 10, combat_def = 7,
 	combat = { dam=resolvers.rngavg(15,20), atk=12, apr=3, physspeed=2 },
diff --git a/game/modules/tome/data/general/npcs/bone-giant.lua b/game/modules/tome/data/general/npcs/bone-giant.lua
index 2ad708d1a73f0ca1aa3021a21844f5de081f31bf..6fa4cca011ad34c4e9e64d443008009f27be16b1 100644
--- a/game/modules/tome/data/general/npcs/bone-giant.lua
+++ b/game/modules/tome/data/general/npcs/bone-giant.lua
@@ -56,7 +56,7 @@ newEntity{ base = "BASE_NPC_BONE_GIANT",
 	name = "bone giant", color=colors.WHITE,
 	desc = [[A towering creature, made from the bones of hundreds of dead bodies. It is covered by an unholy aura.]],
 	level_range = {25, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 1,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 20, combat_def = 0,
 	on_melee_hit = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)},
@@ -68,7 +68,7 @@ newEntity{ base = "BASE_NPC_BONE_GIANT",
 	name = "eternal bone giant", color=colors.DARK_GREY,
 	desc = [[A towering creature, made from the bones of hundreds of dead bodies. It is covered by an unholy aura.]],
 	level_range = {33, nil}, exp_worth = 1,
-	rarity = 9,
+	rarity = 3,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 40, combat_def = 20,
 	on_melee_hit = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)},
@@ -82,7 +82,7 @@ newEntity{ base = "BASE_NPC_BONE_GIANT",
 	name = "heavy bone giant", color=colors.LIGHT_UMBER,
 	desc = [[A towering creature, made from the bones of hundreds of dead bodies. It is covered by an unholy aura.]],
 	level_range = {35, nil}, exp_worth = 1,
-	rarity = 10,
+	rarity = 3,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 20, combat_def = 0,
 	on_melee_hit = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)},
diff --git a/game/modules/tome/data/general/npcs/canine.lua b/game/modules/tome/data/general/npcs/canine.lua
index 6ae7ead44b1e26f54963ba9ccb6f4fde7f7fbccd..83c1f23683b53ca080ad48c9fe91c7026e119f4b 100644
--- a/game/modules/tome/data/general/npcs/canine.lua
+++ b/game/modules/tome/data/general/npcs/canine.lua
@@ -44,7 +44,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	name = "wolf", color=colors.UMBER,
 	desc = [[Lean, mean, and shaggy, it stares at you with hungry eyes.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(40,70),
 	combat_armor = 1, combat_def = 3,
 	combat = { dam=5, atk=15, apr=3 },
@@ -54,7 +54,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	name = "great wolf", color=colors.UMBER,
 	desc = [[Larger than a normal wolf, it prowls and snaps at you.]],
 	level_range = {3, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 3,
 	max_life = resolvers.rngavg(60,90),
 	combat_armor =2, combat_def = 4,
 	combat = { dam=6, atk=15, apr=3 },
@@ -65,7 +65,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	name = "dire wolf", color=colors.DARK_UMBER,
 	desc = [[Easily as big as a horse, this wolf menaces you with its claws and fangs.]],
 	level_range = {4, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	max_life = resolvers.rngavg(80,110),
 	combat_armor = 3, combat_def = 5,
 	combat = { dam=9, atk=15, apr=4 },
@@ -76,7 +76,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	name = "white wolf", color=colors.WHITE,
 	desc = [[A large and muscled wolf from the northern wastes. Its breath is cold and icy and its fur coated in frost.]],
 	level_range = {4, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	max_life = resolvers.rngavg(70,100),
 	combat_armor = 3, combat_def = 4,
 	combat = { dam=8, atk=15, apr=3 },
@@ -89,7 +89,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	name = "warg", color=colors.BLACK,
 	desc = [[It is a large wolf with eyes full of cunning.]],
 	level_range = {6, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 4,
 	max_life = resolvers.rngavg(60,100),
 	combat_armor = 5, combat_def = 7,
 	combat = { dam=10, atk=17, apr=5 },
@@ -100,7 +100,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	name = "fox", color=colors.RED,
 	desc = [[The quick brown fox jumps over the lazy dog.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 5,
+	rarity = 3,
 	max_life = resolvers.rngavg(40,50),
 	combat_armor = 1, combat_def = 3,
 	combat = { dam=4, atk=10, apr=3 },
diff --git a/game/modules/tome/data/general/npcs/cold-drake.lua b/game/modules/tome/data/general/npcs/cold-drake.lua
index 8190247ac706b6b2bfa187149653644401f48a37..5d227e3b470d5cc5a09b443e4a51a821635d0622 100644
--- a/game/modules/tome/data/general/npcs/cold-drake.lua
+++ b/game/modules/tome/data/general/npcs/cold-drake.lua
@@ -49,7 +49,7 @@ newEntity{ base = "BASE_NPC_COLD_DRAKE",
 	name = "cold drake hatchling", color=colors.WHITE, display="d",
 	desc = [[A drake hatchling, not too powerful in itself, but it usually comes with its brothers and sisters.]],
 	level_range = {8, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 1,
 	rank = 1, size_category = 2,
 	max_life = resolvers.rngavg(40,60),
 	combat_armor = 5, combat_def = 0,
@@ -65,7 +65,7 @@ newEntity{ base = "BASE_NPC_COLD_DRAKE",
 	name = "cold drake", color=colors.SLATE, display="D",
 	desc = [[A mature cold drake, armed with a deadly breath weapon and nasty claws.]],
 	level_range = {14, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 3,
 	max_life = resolvers.rngavg(100,110),
 	combat_armor = 12, combat_def = 0,
 	on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 10)},
@@ -80,7 +80,7 @@ newEntity{ base = "BASE_NPC_COLD_DRAKE",
 	name = "ice wyrm", color=colors.AQUAMARINE, display="D",
 	desc = [[An old and powerful cold drake, armed with a deadly breath weapon and nasty claws.]],
 	level_range = {25, nil}, exp_worth = 1,
-	rarity = 12,
+	rarity = 5,
 	rank = 3,
 	max_life = resolvers.rngavg(170,190),
 	combat_armor = 30, combat_def = 0,
diff --git a/game/modules/tome/data/general/npcs/faeros.lua b/game/modules/tome/data/general/npcs/faeros.lua
index 87e6a5a812d6ad7deec9d1a86ebc8872490556ea..200a24c55373a5c35d02e6702bb2f283b6996b6e 100644
--- a/game/modules/tome/data/general/npcs/faeros.lua
+++ b/game/modules/tome/data/general/npcs/faeros.lua
@@ -49,7 +49,7 @@ newEntity{ base = "BASE_NPC_FAEROS",
 	name = "faeros", color=colors.ORANGE,
 	desc = [[Faeros are highly intelligent fire elementals, rarely seen outside volcanos they are probably not native to this world.]],
 	level_range = {20, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 1,
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 0, combat_def = 20,
 	on_melee_hit = { [DamageType.FIRE] = resolvers.mbonus(20, 10), },
@@ -63,7 +63,7 @@ newEntity{ base = "BASE_NPC_FAEROS",
 	name = "greater faeros", color=colors.ORANGE,
 	desc = [[Faeros are highly intelligent fire elementals, rarely seen outside volcanos they are probably not native to this world.]],
 	level_range = {25, nil}, exp_worth = 1,
-	rarity = 9,
+	rarity = 3,
 	max_life = resolvers.rngavg(70,80), life_rating = 10,
 	combat_armor = 0, combat_def = 20,
 	on_melee_hit = { [DamageType.FIRE] = resolvers.mbonus(20, 10), },
@@ -79,7 +79,7 @@ newEntity{ base = "BASE_NPC_FAEROS",
 	name = "ultimate faeros", color=colors.ORANGE,
 	desc = [[Faeros are highly intelligent fire elementals, rarely seen outside volcanos they are probably not native to this world.]],
 	level_range = {35, nil}, exp_worth = 1,
-	rarity = 12,
+	rarity = 5,
 	rank = 3,
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 0, combat_def = 20,
diff --git a/game/modules/tome/data/general/npcs/fire-drake.lua b/game/modules/tome/data/general/npcs/fire-drake.lua
index 5f8c29aa5124f8da1e05e9fe79d30cb0fad377bd..d3182a3da9ff4099a47c6971d6c29fd3a9a06960 100644
--- a/game/modules/tome/data/general/npcs/fire-drake.lua
+++ b/game/modules/tome/data/general/npcs/fire-drake.lua
@@ -49,7 +49,7 @@ newEntity{ base = "BASE_NPC_FIRE_DRAKE",
 	name = "fire drake hatchling", color=colors.RED, display="d",
 	desc = [[A drake hatchling, not too powerful in itself, but it usually comes with its brothers and sisters.]],
 	level_range = {8, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 1,
 	rank = 1, size_category = 2,
 	max_life = resolvers.rngavg(40,60),
 	combat_armor = 5, combat_def = 0,
@@ -65,7 +65,7 @@ newEntity{ base = "BASE_NPC_FIRE_DRAKE",
 	name = "fire drake", color=colors.RED, display="D",
 	desc = [[A mature fire drake, armed with a deadly breath weapon and nasty claws.]],
 	level_range = {14, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 3,
 	max_life = resolvers.rngavg(100,110),
 	combat_armor = 12, combat_def = 0,
 	on_melee_hit = {[DamageType.FIRE]=resolvers.mbonus(15, 10)},
@@ -80,7 +80,7 @@ newEntity{ base = "BASE_NPC_FIRE_DRAKE",
 	name = "fire wyrm", color=colors.LIGHT_RED, display="D",
 	desc = [[An old and powerful fire drake, armed with a deadly breath weapon and nasty claws.]],
 	level_range = {25, nil}, exp_worth = 1,
-	rarity = 12,
+	rarity = 5,
 	rank = 3,
 	max_life = resolvers.rngavg(170,190),
 	combat_armor = 30, combat_def = 0,
diff --git a/game/modules/tome/data/general/npcs/ghoul.lua b/game/modules/tome/data/general/npcs/ghoul.lua
index 9d305499fd2e53c7e4a944f50ad9e1ccd015ed30..d6f14a0b65e19f8870c8af003bcc1085b49e1906 100644
--- a/game/modules/tome/data/general/npcs/ghoul.lua
+++ b/game/modules/tome/data/general/npcs/ghoul.lua
@@ -49,7 +49,7 @@ newEntity{ base = "BASE_NPC_GHOUL",
 	name = "ghoul", color=colors.TAN,
 	desc = [[Flesh is falling off in chunks from this decaying abomination.]],
 	level_range = {7, nil}, exp_worth = 1,
-	rarity = 5,
+	rarity = 1,
 	max_life = resolvers.rngavg(90,100),
 	combat_armor = 2, combat_def = 7,
 	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_STUN]=1, [Talents.T_BITE_POISON]=1, [Talents.T_ROTTING_DISEASE]=1, },
@@ -62,7 +62,7 @@ newEntity{ base = "BASE_NPC_GHOUL",
 	name = "ghast", color=colors.UMBER,
 	desc = [[This vile abomination is a relative of ghouls, and often leads packs of them. It smells foul, and its bite carries a rotting disease.]],
 	level_range = {10, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	max_life = resolvers.rngavg(90,100),
 	combat_armor = 2, combat_def = 8,
 	ai_state = { talent_in=3, },
@@ -77,7 +77,7 @@ newEntity{ base = "BASE_NPC_GHOUL",
 	name = "ghoulking", color={0,0,0},
 	desc = [[Stench rises from this rotting abomination, its brow is adorned with gold, and it moves at you with hatred gleaming from its eyes.]],
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 10,
+	rarity = 6,
 	max_life = resolvers.rngavg(90,100),
 	combat_armor = 3, combat_def = 10,
 	ai_state = { talent_in=2, ai_pause=20 },
diff --git a/game/modules/tome/data/general/npcs/jelly.lua b/game/modules/tome/data/general/npcs/jelly.lua
index aed477c045f96ce9d087ff9009cd3974ab713c4e..8bc1eb35a9dcaa9b5290981b28d1937515db43a4 100644
--- a/game/modules/tome/data/general/npcs/jelly.lua
+++ b/game/modules/tome/data/general/npcs/jelly.lua
@@ -46,7 +46,7 @@ newEntity{ base = "BASE_NPC_JELLY",
 	name = "green jelly", color=colors.GREEN,
 	desc = "A strange green blob on the dungeon floor.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5, damtype=DamageType.POISON },
 }
@@ -55,7 +55,7 @@ newEntity{ base = "BASE_NPC_JELLY",
 	name = "red jelly", color=colors.RED,
 	desc = "A strange red blob on the dungeon floor.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5, damtype=DamageType.FIRE },
 }
@@ -64,7 +64,7 @@ newEntity{ base = "BASE_NPC_JELLY",
 	name = "blue jelly", color=colors.BLUE,
 	desc = "A strange blue blob on the dungeon floor.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5, damtype=DamageType.COLD },
 }
@@ -73,7 +73,7 @@ newEntity{ base = "BASE_NPC_JELLY",
 	name = "white jelly", color=colors.WHITE,
 	desc = "A strange white blob on the dungeon floor.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5 },
 }
@@ -82,7 +82,7 @@ newEntity{ base = "BASE_NPC_JELLY",
 	name = "yellow jelly", color=colors.YELLOW,
 	desc = "A strange yellow blob on the dungeon floor.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5, damtype=DamageType.LIGHTNING },
 }
@@ -91,7 +91,7 @@ newEntity{ base = "BASE_NPC_JELLY",
 	name = "black jelly", color=colors.DARK_GREY,
 	desc = "A strange black blob on the dungeon floor.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5, damtype=DamageType.ACID },
 }
diff --git a/game/modules/tome/data/general/npcs/minotaur.lua b/game/modules/tome/data/general/npcs/minotaur.lua
index c6e4af4d3a47f598320d5f81da36e92dec37eb73..9b7183294131fb2ad853fd515a57fa7b700846b2 100644
--- a/game/modules/tome/data/general/npcs/minotaur.lua
+++ b/game/modules/tome/data/general/npcs/minotaur.lua
@@ -53,7 +53,7 @@ newEntity{ base = "BASE_NPC_MINOTAUR",
 	desc = [[It is a cross between a human and a bull.]],
 	resolvers.equip{ {type="weapon", subtype="battleaxe", autoreq=true}, },
 	level_range = {10, nil}, exp_worth = 1,
-	rarity = 9,
+	rarity = 1,
 	combat_armor = 13, combat_def = 8,
 	resolvers.talents{ [Talents.T_WARSHOUT]=3, [Talents.T_STUNNING_BLOW]=3, [Talents.T_SUNDER_ARMOUR]=2, [Talents.T_SUNDER_ARMS]=2, },
 }
@@ -62,7 +62,7 @@ newEntity{ base = "BASE_NPC_MINOTAUR",
 	name = "maulotaur", color=colors.SLATE,
 	desc = [[It is a belligerent minotaur with a destructive magical arsenal, armed with a hammer.]],
 	level_range = {20, nil}, exp_worth = 1,
-	rarity = 15,
+	rarity = 4,
 	combat_armor = 15, combat_def = 7,
 	resolvers.equip{ {type="weapon", subtype="maul", autoreq=true} },
 
diff --git a/game/modules/tome/data/general/npcs/molds.lua b/game/modules/tome/data/general/npcs/molds.lua
index 129fb5c46627154283805476c5e873093b95ed22..5e1440ddfdd2c6b077d4e66d4a422f9344b3cd56 100644
--- a/game/modules/tome/data/general/npcs/molds.lua
+++ b/game/modules/tome/data/general/npcs/molds.lua
@@ -41,7 +41,7 @@ newEntity{ base = "BASE_NPC_MOLD",
 	name = "grey mold", color=colors.SLATE,
 	desc = "A strange grey growth on the dungeon floor.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=10 },
 }
@@ -50,7 +50,7 @@ newEntity{ base = "BASE_NPC_MOLD",
 	name = "brown mold", color=colors.UMBER,
 	desc = "A strange brown growth on the dungeon floor.",
 	level_range = {2, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=10 },
 }
@@ -70,7 +70,7 @@ newEntity{ base = "BASE_NPC_MOLD",
 	name = "green mold", color=colors.GREEN,
 	desc = "A strange sickly green growth on the dungeon floor.",
 	level_range = {5, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=10 },
 	resolvers.talents{ [Talents.T_SPORE_POISON]=1 },
diff --git a/game/modules/tome/data/general/npcs/multihued-drake.lua b/game/modules/tome/data/general/npcs/multihued-drake.lua
index eb6e7072f1025ba06db2fd7b887ac849955b0628..c0259642eddda934ad295b2fd83d5e60094ad869 100644
--- a/game/modules/tome/data/general/npcs/multihued-drake.lua
+++ b/game/modules/tome/data/general/npcs/multihued-drake.lua
@@ -47,7 +47,7 @@ newEntity{ base = "BASE_NPC_MULTIHUED_DRAKE",
 	name = "multi-hued drake hatchling", color=colors.PURPLE, display="d",
 	desc = [[A drake hatchling, not too powerful in itself, but it usually comes with its brothers and sisters.]],
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 1,
 	rank = 1, size_category = 2,
 	max_life = resolvers.rngavg(60,80),
 	combat_armor = 5, combat_def = 0,
@@ -68,7 +68,7 @@ newEntity{ base = "BASE_NPC_MULTIHUED_DRAKE",
 	name = "multi-hued drake", color=colors.PURPLE, display="D",
 	desc = [[A mature multi-hued drake, armed with many deadly breath weapons and nasty claws.]],
 	level_range = {25, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 3,
 	max_life = resolvers.rngavg(150,170),
 	combat_armor = 12, combat_def = 0,
 	on_melee_hit = {[DamageType.FIRE]=resolvers.mbonus(10, 5), [DamageType.COLD]=resolvers.mbonus(10, 5)},
@@ -93,7 +93,7 @@ newEntity{ base = "BASE_NPC_MULTIHUED_DRAKE",
 	name = "greater multi-hued wyrm", color=colors.VIOLET, display="D",
 	desc = [[An old and powerful multi-hued drake, armed with many deadly breath weapons and nasty claws.]],
 	level_range = {35, nil}, exp_worth = 1,
-	rarity = 12,
+	rarity = 8,
 	rank = 3,
 	max_life = resolvers.rngavg(220,250),
 	combat_armor = 30, combat_def = 30,
diff --git a/game/modules/tome/data/general/npcs/ooze.lua b/game/modules/tome/data/general/npcs/ooze.lua
index 04f16ed4705193874e859855ecb7bb6bfcdb13fe..a0af025998e85823f371a82ff80fb842bf848f5f 100644
--- a/game/modules/tome/data/general/npcs/ooze.lua
+++ b/game/modules/tome/data/general/npcs/ooze.lua
@@ -47,7 +47,7 @@ newEntity{ base = "BASE_NPC_OOZE",
 	name = "green ooze", color=colors.GREEN,
 	desc = "It's green and it's oozing.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5, damtype=DamageType.POISON },
 }
@@ -56,7 +56,7 @@ newEntity{ base = "BASE_NPC_OOZE",
 	name = "red ooze", color=colors.RED,
 	desc = "It's red and it's oozing.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5, damtype=DamageType.FIRE },
 }
@@ -65,7 +65,7 @@ newEntity{ base = "BASE_NPC_OOZE",
 	name = "blue ooze", color=colors.BLUE,
 	desc = "It's blue and it's oozing.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5, damtype=DamageType.COLD },
 }
@@ -74,7 +74,7 @@ newEntity{ base = "BASE_NPC_OOZE",
 	name = "white ooze", color=colors.WHITE,
 	desc = "It's white and it's oozing.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5 },
 }
@@ -83,7 +83,7 @@ newEntity{ base = "BASE_NPC_OOZE",
 	name = "yellow ooze", color=colors.YELLOW,
 	desc = "It's yellow and it's oozing.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5, damtype=DamageType.LIGHTNING },
 }
@@ -92,7 +92,7 @@ newEntity{ base = "BASE_NPC_OOZE",
 	name = "black ooze", color=colors.BLACK,
 	desc = "It's black and it's oozing.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=5, damtype=DamageType.ACID },
 }
@@ -102,7 +102,7 @@ newEntity{ base = "BASE_NPC_OOZE",
 	desc = [["It is a strange, vast gelatinous structure that assumes cubic proportions as it lines all four walls of the corridors it patrols.
 Through its transparent jelly structure you can see treasures it has engulfed, and a few corpses as well. "]],
 	level_range = {12, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	max_life = resolvers.rngavg(50,100),
 	combat = { dam=7, atk=15, apr=6, damtype=DamageType.ACID },
 	drops = resolvers.drops{chance=90, nb=3, {} },
diff --git a/game/modules/tome/data/general/npcs/orc-grushnak.lua b/game/modules/tome/data/general/npcs/orc-grushnak.lua
index d82a6fc05f4ab7fea5687bdd8ac07aa8175df9d3..831170c7b739fdd110e8d0321ccffa033bae86f5 100644
--- a/game/modules/tome/data/general/npcs/orc-grushnak.lua
+++ b/game/modules/tome/data/general/npcs/orc-grushnak.lua
@@ -50,7 +50,7 @@ newEntity{ base = "BASE_NPC_ORC_GRUSHNAK",
 	name = "uruk-hai elite figther", color=colors.UMBER,
 	desc = [[An orc clad in a massive armour, wielding a shield and a deadly axe.]],
 	level_range = {35, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 1,
 	rank = 3,
 	max_life = resolvers.rngavg(170,180), life_rating = 14,
 	resolvers.equip{
@@ -61,6 +61,7 @@ newEntity{ base = "BASE_NPC_ORC_GRUSHNAK",
 	combat_armor = 0, combat_def = 5,
 
 	resolvers.talents{
+		[Talents.T_MASSIVE_ARMOUR_TRAINING]=5,
 		[Talents.T_WEAPON_COMBAT]=8,
 		[Talents.T_AXE_MASTERY]=6,
 		[Talents.T_RUSH]=3,
@@ -77,7 +78,7 @@ newEntity{ base = "BASE_NPC_ORC_GRUSHNAK",
 	name = "uruk-hai elite berserker", color=colors.UMBER,
 	desc = [[An orc clad in a massive armour, wielding a huge axe.]],
 	level_range = {35, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 1,
 	rank = 3,
 	max_life = resolvers.rngavg(170,180), life_rating = 14,
 	resolvers.equip{
@@ -88,6 +89,7 @@ newEntity{ base = "BASE_NPC_ORC_GRUSHNAK",
 	combat_armor = 0, combat_def = 5,
 
 	resolvers.talents{
+		[Talents.T_MASSIVE_ARMOUR_TRAINING]=5,
 		[Talents.T_WEAPON_COMBAT]=8,
 		[Talents.T_AXE_MASTERY]=6,
 		[Talents.T_RUSH]=3,
diff --git a/game/modules/tome/data/general/npcs/orc-rak-shor.lua b/game/modules/tome/data/general/npcs/orc-rak-shor.lua
index 9243c01c51b35db84ef915b40d486ee52c2a323f..218d24c77d0a67effa3a7a41163c7034303c8656 100644
--- a/game/modules/tome/data/general/npcs/orc-rak-shor.lua
+++ b/game/modules/tome/data/general/npcs/orc-rak-shor.lua
@@ -49,7 +49,7 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
 	name = "orc necromancer", color=colors.DARK_GREY,
 	desc = [[An orc dressed in black robes. He mumbles is a harsh tongue.]],
 	level_range = {25, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(70,80), life_rating = 7,
 	resolvers.equip{
 		{type="weapon", subtype="staff", autoreq=true},
diff --git a/game/modules/tome/data/general/npcs/orc-vor.lua b/game/modules/tome/data/general/npcs/orc-vor.lua
index e68ba75ec73b48d8fb879a2d08eae385844e5836..ad2174d391912e001bc9d089fe022111941d65d3 100644
--- a/game/modules/tome/data/general/npcs/orc-vor.lua
+++ b/game/modules/tome/data/general/npcs/orc-vor.lua
@@ -50,7 +50,7 @@ newEntity{ base = "BASE_NPC_ORC_VOR",
 	name = "orc pyromancer", color=colors.RED,
 	desc = [[An orc dressed in bright red robes. He mumbles is a harsh tongue.]],
 	level_range = {35, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 1,
 	max_life = resolvers.rngavg(100,110), life_rating = 7,
 	resolvers.equip{
 		{type="weapon", subtype="staff", autoreq=true},
@@ -71,7 +71,7 @@ newEntity{ base = "BASE_NPC_ORC_VOR",
 	name = "orc high pyromancer", color=colors.LIGHT_RED,
 	desc = [[An orc dressed in bright red robes. He mumbles is a harsh tongue.]],
 	level_range = {37, nil}, exp_worth = 1,
-	rarity = 10,
+	rarity = 4,
 	max_life = resolvers.rngavg(100,110), life_rating = 10,
 	resolvers.equip{
 		{type="weapon", subtype="staff", autoreq=true},
@@ -97,7 +97,7 @@ newEntity{ base = "BASE_NPC_ORC_VOR",
 	name = "orc cryomancer", color=colors.BLUE,
 	desc = [[An orc dressed in cold blue robes. He mumbles is a harsh tongue.]],
 	level_range = {35, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 1,
 	max_life = resolvers.rngavg(100,110), life_rating = 10,
 	resolvers.equip{
 		{type="weapon", subtype="staff", autoreq=true},
@@ -118,7 +118,7 @@ newEntity{ base = "BASE_NPC_ORC_VOR",
 	name = "orc high cryomancer", color=colors.LIGHT_BLUE,
 	desc = [[An orc dressed in cold blue robes. He mumbles is a harsh tongue.]],
 	level_range = {37, nil}, exp_worth = 1,
-	rarity = 10,
+	rarity = 4,
 	max_life = resolvers.rngavg(100,110), life_rating = 10,
 	resolvers.equip{
 		{type="weapon", subtype="staff", autoreq=true},
diff --git a/game/modules/tome/data/general/npcs/orc.lua b/game/modules/tome/data/general/npcs/orc.lua
index 633259a7ce8c578f25df6fcdeb0f67eb067ba418..629ce422c065cb097f99b0293b04d90361576572 100644
--- a/game/modules/tome/data/general/npcs/orc.lua
+++ b/game/modules/tome/data/general/npcs/orc.lua
@@ -50,7 +50,7 @@ newEntity{ base = "BASE_NPC_ORC",
 	name = "hill orc warrior", color=colors.LIGHT_UMBER,
 	desc = [[He is a hardy, well-weathered survivor.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(70,80),
 	resolvers.equip{
 		{type="weapon", subtype="waraxe", autoreq=true},
@@ -65,7 +65,7 @@ newEntity{ base = "BASE_NPC_ORC",
 	name = "hill orc archer", color=colors.UMBER,
 	desc = [[He is a hardy, well-weathered survivor.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 5, combat_def = 1,
 	resolvers.talents{ [Talents.T_SHOOT]=1, },
@@ -82,7 +82,7 @@ newEntity{ base = "BASE_NPC_ORC", define_as = "URUK-HAI",
 	name = "uruk-hai", color=colors.DARK_RED,
 	desc = [[A fierce soldier-orc.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 2,
 	max_life = resolvers.rngavg(120,140),
 	life_rating = 11,
 	resolvers.equip{
@@ -96,7 +96,7 @@ newEntity{ base = "BASE_NPC_ORC", define_as = "URUK-HAI_FIRE_WYRMIC",
 	name = "fiery wyrmic uruk-hai", color=colors.RED,
 	desc = [[A fierce soldier-orc trained in the discipline of dragons.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 6,
 	rank = 3,
 	max_life = resolvers.rngavg(100,110),
 	life_rating = 10,
@@ -120,7 +120,7 @@ newEntity{ base = "BASE_NPC_ORC",
 	name = "icy wyrmic uruk-hai", color=colors.BLUE, define_as = "URUK-HAI_ICE_WYRMIC",
 	desc = [[A fierce soldier-orc trained in the discipline of dragons.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 6,
 	rank = 3,
 	max_life = resolvers.rngavg(100,110),
 	life_rating = 10,
diff --git a/game/modules/tome/data/general/npcs/plant.lua b/game/modules/tome/data/general/npcs/plant.lua
index c1de2235fba22bca8b4aaf5a1260b662a6474f4e..8a19079e58154cea0e32f95938b9ddf25136c6ac 100644
--- a/game/modules/tome/data/general/npcs/plant.lua
+++ b/game/modules/tome/data/general/npcs/plant.lua
@@ -43,7 +43,7 @@ newEntity{ base = "BASE_NPC_PLANT",
 	name = "giant venus flytrap", color=colors.GREEN,
 	desc = "This flesh eating plant has grown to enormous proportions and seeks to quell its hunger",
 	level_range = {7, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=10 },
 }
@@ -52,7 +52,7 @@ newEntity{ base = "BASE_NPC_PLANT",
 	name = "huorn", color=colors.GREEN,
 	desc = "A very strong near-sentient tree, which has become hostile to other living things.",
 	level_range = {12, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 2,
 	max_life = resolvers.rngavg(100,130),
 	life_rating = 15,
 	combat = { dam=resolvers.rngavg(8,13), atk=15, apr=5 },
@@ -65,7 +65,7 @@ newEntity{ base = "BASE_NPC_PLANT",
 	name = "poison ivy", color=colors.GREEN,
 	desc = "This harmless little plant makes you all itchy.",
 	level_range = {3, 25}, exp_worth = 1,
-	rarity = 7,
+	rarity = 2,
 	max_life = resolvers.rngavg(1,1),
 	combat = { dam=3, atk=15, apr=3, damtype=DamageType.POISON},
 	can_multiply = 2,
@@ -77,7 +77,7 @@ newEntity{ base = "BASE_NPC_PLANT",
 	name = "honey tree", color=colors.UMBER,
 	desc = "As you approach it, you hear a high pitched buzzing sound.",
 	level_range = {10, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	max_life = resolvers.rngavg(100,130),
 	life_rating = 15,
 	combat = false,
diff --git a/game/modules/tome/data/general/npcs/ritch.lua b/game/modules/tome/data/general/npcs/ritch.lua
index 4b928b7ac437fb6e77c46b0bd4ea0c32b9f81b30..1e2e238a012f4e674a6e9099e66b0db74601745a 100644
--- a/game/modules/tome/data/general/npcs/ritch.lua
+++ b/game/modules/tome/data/general/npcs/ritch.lua
@@ -47,7 +47,7 @@ Vicous predators they inject corrupting diseases in their foes and they sharp cl
 newEntity{ base = "BASE_NPC_RITCH",
 	name = "ritch larva", color=colors.DARK_RED,
 	level_range = {25, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = 50,
 	life_rating = 6,
 
@@ -63,7 +63,7 @@ newEntity{ base = "BASE_NPC_RITCH",
 newEntity{ base = "BASE_NPC_RITCH",
 	name = "ritch hunter", color=colors.RED,
 	level_range = {30, nil}, exp_worth = 1,
-	rarity = 5,
+	rarity = 2,
 	max_life = 120,
 	life_rating = 10,
 
@@ -82,7 +82,7 @@ newEntity{ base = "BASE_NPC_RITCH",
 newEntity{ base = "BASE_NPC_RITCH",
 	name = "ritch hive mother", color=colors.light_RED,
 	level_range = {32, nil}, exp_worth = 1,
-	rarity = 9,
+	rarity = 4,
 	max_life = 250,
 	life_rating = 12,
 
diff --git a/game/modules/tome/data/general/npcs/rodent.lua b/game/modules/tome/data/general/npcs/rodent.lua
index 2fc361e293d177a618a180cb803fe5dd360cff1a..6c015cd923c7f7ec1d2090b6c5bcd403bd66bd0d 100644
--- a/game/modules/tome/data/general/npcs/rodent.lua
+++ b/game/modules/tome/data/general/npcs/rodent.lua
@@ -39,7 +39,7 @@ newEntity{ --rodent base
 newEntity{ base = "BASE_NPC_RODENT",
 	name = "giant white mouse", color=colors.WHITE,
 	level_range = {1, 3}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=10 },
 }
@@ -47,7 +47,7 @@ newEntity{ base = "BASE_NPC_RODENT",
 newEntity{ base = "BASE_NPC_RODENT",
 	name = "giant brown mouse", color=colors.UMBER,
 	level_range = {1, 3}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=10 },
 }
@@ -55,7 +55,7 @@ newEntity{ base = "BASE_NPC_RODENT",
 newEntity{ base = "BASE_NPC_RODENT",
 	name = "giant white rat", color=colors.WHITE,
 	level_range = {1, 4}, exp_worth = 1,
-	rarity = 5,
+	rarity = 2,
 	max_life = resolvers.rngavg(15,20),
 	combat = { dam=7, atk=15, apr=10 },
 }
@@ -63,7 +63,7 @@ newEntity{ base = "BASE_NPC_RODENT",
 newEntity{ base = "BASE_NPC_RODENT",
 	name = "giant brown rat", color=colors.UMBER,
 	level_range = {1, 4}, exp_worth = 1,
-	rarity = 5,
+	rarity = 2,
 	max_life = resolvers.rngavg(15,20),
 	combat = { dam=7, atk=15, apr=10 },
 }
@@ -72,7 +72,7 @@ newEntity{ base = "BASE_NPC_RODENT",
 	name = "giant rabbit", color=colors.UMBER,
 	desc = [[Kill the wabbit, kill the wabbit, kill the wabbbbbiiiiiit.]],
 	level_range = {1, 4}, exp_worth = 1,
-	rarity = 6,
+	rarity = 3,
 	max_life = resolvers.rngavg(20,30),
 	combat = { dam=8, atk=16, apr=10 },
 }
@@ -81,7 +81,7 @@ newEntity{ base = "BASE_NPC_RODENT",
 	name = "giant crystal rat", color=colors.PINK,
 	desc = [[Instead of fur, this rat has crystals growing on its back which provide extra protection.]],
 	level_range = {1, 5}, exp_worth = 1,
-	rarity = 6,
+	rarity = 3,
 	max_life = resolvers.rngavg(35,50),
 	combat = { dam=7, atk=15, apr=10 },
 	combat_armor = 4, combat_def = 2,
@@ -90,7 +90,7 @@ newEntity{ base = "BASE_NPC_RODENT",
 newEntity{ base = "BASE_NPC_RODENT",
 	name = "giant grey mouse", color=colors.SLATE,
 	level_range = {1, 3}, exp_worth = 1,
-	rarity = 6,
+	rarity = 3,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=10 },
 	resolvers.talents{ [Talents.T_CRAWL_POISON]=1 },
@@ -99,7 +99,7 @@ newEntity{ base = "BASE_NPC_RODENT",
 newEntity{ base = "BASE_NPC_RODENT",
 	name = "giant grey rat", color=colors.SLATE,
 	level_range = {1, 4}, exp_worth = 1,
-	rarity = 7,
+	rarity = 4,
 	max_life = resolvers.rngavg(15,20),
 	combat = { dam=7, atk=15, apr=10 },
 	resolvers.talents{ [Talents.T_CRAWL_POISON]=1 },
diff --git a/game/modules/tome/data/general/npcs/sandworm.lua b/game/modules/tome/data/general/npcs/sandworm.lua
index 9f01662d571cc48d6124861bfe323d3cfde358b5..372262144ec97ff366b98883d7e626cfcfd60d62 100644
--- a/game/modules/tome/data/general/npcs/sandworm.lua
+++ b/game/modules/tome/data/general/npcs/sandworm.lua
@@ -23,7 +23,7 @@ newEntity{
 	define_as = "BASE_NPC_SANDWORM",
 	type = "vermin", subtype = "sandworm",
 	display = "w", color=colors.YELLOW,
-	level_range = {15, nil},
+	level_range = {7, nil},
 	body = { INVEN = 10 },
 
 	infravision = 20,
@@ -45,14 +45,14 @@ newEntity{
 newEntity{ base = "BASE_NPC_SANDWORM",
 	name = "sandworm",
 	desc = [[A huge worm coloured as the sand it inhabits. It seems quite unhappy about you being in its lair..]],
-	rarity = 4,
+	rarity = 1,
 }
 
 newEntity{ base = "BASE_NPC_SANDWORM",
 	name = "sandworm destroyer",
 	color={r=169,g=168,b=52},
 	desc = [[A huge worm coloured as the sand it inhabits. This particular sandworm seems to have been bred for one purpose only, the eradication of everything that is non-sandworm, such as ... you.]],
-	rarity = 6,
+	rarity = 3,
 
 	resolvers.talents{
 		[Talents.T_STAMINA_POOL]=1,
@@ -65,7 +65,7 @@ newEntity{ base = "BASE_NPC_SANDWORM",
 	name = "sand-drake", display = 'D',
 	color={r=204,g=255,b=95},
 	desc = [[This unholy creature looks like a wingless dragon in shape, but resembles a sandworm in color.]],
-	rarity = 8,
+	rarity = 5,
 	rank = 3,
 	size_category = 5,
 
diff --git a/game/modules/tome/data/general/npcs/skeleton.lua b/game/modules/tome/data/general/npcs/skeleton.lua
index e042e96ba2ba7f3527893de4ccd71ba88cab74e5..686018b3ce295b6a5c9e99c05d91af2bca2fd0d1 100644
--- a/game/modules/tome/data/general/npcs/skeleton.lua
+++ b/game/modules/tome/data/general/npcs/skeleton.lua
@@ -51,7 +51,7 @@ newEntity{
 newEntity{ base = "BASE_NPC_SKELETON",
 	name = "degenerated skeleton warrior", color=colors.WHITE,
 	level_range = {1, 18}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	resolvers.equip{ {type="weapon", subtype="greatsword", autoreq=true} },
 	max_life = resolvers.rngavg(40,50),
 	combat_armor = 5, combat_def = 1,
@@ -60,7 +60,7 @@ newEntity{ base = "BASE_NPC_SKELETON",
 newEntity{ base = "BASE_NPC_SKELETON",
 	name = "skeleton warrior", color=colors.SLATE,
 	level_range = {3, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(90,100),
 	combat_armor = 5, combat_def = 1,
 	resolvers.equip{ {type="weapon", subtype="greatsword", autoreq=true} },
@@ -71,7 +71,7 @@ newEntity{ base = "BASE_NPC_SKELETON",
 newEntity{ base = "BASE_NPC_SKELETON",
 	name = "skeleton mage", color=colors.LIGHT_RED,
 	level_range = {4, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 3,
 	max_life = resolvers.rngavg(50,60),
 	max_mana = resolvers.rngavg(70,80),
 	combat_armor = 3, combat_def = 1,
@@ -87,7 +87,7 @@ newEntity{ base = "BASE_NPC_SKELETON",
 newEntity{ base = "BASE_NPC_SKELETON",
 	name = "skeleton archer", color=colors.UMBER,
 	level_range = {5, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 3,
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 5, combat_def = 1,
 	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_SHOOT]=1, },
@@ -100,7 +100,7 @@ newEntity{ base = "BASE_NPC_SKELETON",
 newEntity{ base = "BASE_NPC_SKELETON",
 	name = "skeleton master archer", color=colors.LIGHT_UMBER,
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 5,
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 5, combat_def = 1,
 	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_SHOOT]=1, [Talents.T_PINNING_SHOT]=3, [Talents.T_CRIPPLING_SHOT]=3, },
@@ -114,7 +114,7 @@ newEntity{ base = "BASE_NPC_SKELETON",
 newEntity{ base = "BASE_NPC_SKELETON",
 	name = "armoured skeleton warrior", color=colors.STEEL_BLUE,
 	level_range = {10, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 5,
 	max_life = resolvers.rngavg(90,100),
 	combat_armor = 5, combat_def = 1,
 	rank = 3,
diff --git a/game/modules/tome/data/general/npcs/snake.lua b/game/modules/tome/data/general/npcs/snake.lua
index b14eb936cfbb7a2c255f18d381bf81ca82354545..2cb2175dbd0fe82356fc6a74f3ce35e53b2b9c17 100644
--- a/game/modules/tome/data/general/npcs/snake.lua
+++ b/game/modules/tome/data/general/npcs/snake.lua
@@ -41,7 +41,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	name = "large brown snake", color=colors.UMBER,
 	desc = [[This large snake hisses at you, angry at being disturbed.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 3,
+	rarity = 1,
 	max_life = resolvers.rngavg(20,30),
 	combat_armor = 1, combat_def = 3,
 	combat = { dam=2, atk=30, apr=10 },
@@ -51,7 +51,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	name = "large white snake", color=colors.WHITE,
 	desc = [[This large snake hisses at you, angry at being disturbed.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 3,
+	rarity = 1,
 	max_life = resolvers.rngavg(20,30),
 	combat_armor = 1, combat_def = 3,
 	combat = { dam=2, atk=30, apr=10 },
@@ -61,7 +61,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	name = "copperhead snake", color=colors.SALMON,
 	desc = [[It has a copper head and sharp venomous fangs.]],
 	level_range = {2, nil}, exp_worth = 1,
-	rarity = 3,
+	rarity = 1,
 	max_life = resolvers.rngavg(30,40),
 	combat_armor = 2, combat_def = 5,
 	combat = { dam=3, atk=30, apr=10 },
@@ -73,7 +73,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	name = "rattlesnake", color=colors.FIREBRICK,
 	desc = [[As you approach, the snake coils up and rattles its tail threateningly.]],
 	level_range = {4, nil}, exp_worth = 1,
-	rarity = 3,
+	rarity = 1,
 	max_life = resolvers.rngavg(30,50),
 	combat_armor = 2, combat_def = 8,
 	combat = { dam=5, atk=30, apr=10 },
@@ -85,7 +85,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	name = "king cobra", color=colors.GREEN,
 	desc = [[It is a large snake with a hooded face.]],
 	level_range = {5, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 4,
 	max_life = resolvers.rngavg(40,70),
 	combat_armor = 3, combat_def = 11,
 	combat = { dam=7, atk=30, apr=10 },
@@ -97,7 +97,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	name = "black mamba", color=colors.DARK_GREY,
 	desc = [[It has glistening black skin, a sleek body, and highly venomous fangs.]],
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 4,
 	max_life = resolvers.rngavg(50,80),
 	combat_armor = 4, combat_def = 12,
 	combat = { dam=10, atk=30, apr=10 },
@@ -109,7 +109,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	name = "anaconda", color=colors.YELLOW_GREEN,
 	desc = [[You recoil in fear as you notice this huge, 10 meter long snake.  It seeks to crush the life out of you.]],
 	level_range = {20, nil}, exp_worth = 1,
-	rarity = 9,
+	rarity = 5,
 	rank = 3,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 14, combat_def = 5,
diff --git a/game/modules/tome/data/general/npcs/snow-giant.lua b/game/modules/tome/data/general/npcs/snow-giant.lua
index 4ae538587eb17304503f14acb9eb1b542e34ceb4..e3e162e513157ea68565c690a5091436c17685ed 100644
--- a/game/modules/tome/data/general/npcs/snow-giant.lua
+++ b/game/modules/tome/data/general/npcs/snow-giant.lua
@@ -51,7 +51,7 @@ newEntity{ base = "BASE_NPC_SNOW_GIANT",
 	name = "snow giant", color=colors.WHITE,
 	desc = [[A towering creature, humanoid but huge. It wield a giant maul and does not look friendly.]],
 	level_range = {10, nil}, exp_worth = 1,
-	rarity = 5,
+	rarity = 1,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 0, combat_def = 0,
 	on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
@@ -63,7 +63,7 @@ newEntity{ base = "BASE_NPC_SNOW_GIANT",
 	name = "snow giant thunderer", color=colors.LIGHT_BLUE,
 	desc = [[A towering creature, humanoid but huge. It wield a giant maul and does not look friendly. Lightning crackles over its body.]],
 	level_range = {14, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 0, combat_def = 0,
 	on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
@@ -76,7 +76,7 @@ newEntity{ base = "BASE_NPC_SNOW_GIANT",
 	name = "snow giant boulder thrower", color=colors.LIGHT_UMBER,
 	desc = [[A towering creature, humanoid but huge. It wield a giant maul and does not look friendly.]],
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 0, combat_def = 0,
 	on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
@@ -88,7 +88,7 @@ newEntity{ base = "BASE_NPC_SNOW_GIANT",
 	name = "snow giant chieftain", color=colors.AQUAMARINE,
 	desc = [[A towering creature, humanoid but huge. It wield a giant maul and does not look friendly.]],
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 13,
+	rarity = 7,
 	rank = 3,
 	max_life = resolvers.rngavg(150,170),
 	combat_armor = 12, combat_def = 12,
diff --git a/game/modules/tome/data/general/npcs/spider.lua b/game/modules/tome/data/general/npcs/spider.lua
index 11f4c3f248197f2747ba06ebf31d3d10fc8c4175..f2500e0a5ab51c8e9b6589ae209dff899ee9aaed 100644
--- a/game/modules/tome/data/general/npcs/spider.lua
+++ b/game/modules/tome/data/general/npcs/spider.lua
@@ -49,7 +49,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	name = "giant spider", color=colors.LIGHT_DARK,
 	desc = [[]],
 	level_range = {5, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = 50,
 	life_rating = 10,
 
@@ -66,7 +66,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	name = "spitting spider", color=colors.DARK_UMBER,
 	desc = [[]],
 	level_range = {7, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = 60,
 	life_rating = 10,
 
@@ -84,7 +84,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	name = "chitinous spider", color=colors.LIGHT_GREEN,
 	desc = [[]],
 	level_range = {12, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = 70,
 	life_rating = 10,
 
@@ -101,7 +101,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	name = "gaeramarth", color=colors.LIGHT_DARK,  -- dreadful fate
 	desc = [[These cunning spiders terrorize those who enter their ever-growing borders.  Those who encounter them rarely return.]],
 	level_range = {27, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 3,
 	max_life = 120,
 	life_rating = 13,
 
@@ -126,7 +126,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	name = "ninurlhing", color=colors.DARK_GREEN,  -- water burn spider (acidic)
 	desc = [[The air reeks with noxious fumes and the ground around it decays.]],
 	level_range = {27, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 3,
 	max_life = 120,
 	life_rating = 13,
 	rank = 2,
@@ -151,7 +151,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	name = "faerlhing", color=colors.PURPLE,  -- spirit spider (arcane)
 	desc = [[This spider seems to command the flow of mana, which pulses freely through its body.]],
 	level_range = {27, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 4,
 	max_life = 120,
 	life_rating = 12,
 	rank = 3,
@@ -178,7 +178,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	name = "ungolmor", color={0,0,0},  -- spider night, don't change the color
 	desc = [[Largest of all the spiderkin, it's folds of skin seem nigh impenetrable.]],
 	level_range = {38, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 4,
 	max_life = 120,
 	life_rating = 16,
 	rank = 3,
@@ -203,7 +203,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	name = "losselhing", color=colors.LIGHT_BLUE,  -- snow star spider
 	desc = [[The air seems to freeze solid around this frigid spider]],
 	level_range = {27, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 4,
 	max_life = 120,
 	life_rating = 14,
 	rank = 3,
diff --git a/game/modules/tome/data/general/npcs/sunwall-town.lua b/game/modules/tome/data/general/npcs/sunwall-town.lua
index da3cb1e8fdeef45256f8d929df4658f7f39f443b..4ee6d90426ca586d2896ef919e4af94db0bc820c 100644
--- a/game/modules/tome/data/general/npcs/sunwall-town.lua
+++ b/game/modules/tome/data/general/npcs/sunwall-town.lua
@@ -47,7 +47,7 @@ newEntity{ base = "BASE_NPC_SUNWALL_TOWN",
 	name = "human guard", color=colors.LIGHT_UMBER,
 	desc = [[A stern looking guard, he will not let you disturb the town.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(70,80),
 	resolvers.equip{
 		{type="weapon", subtype="longsword", autoreq=true},
@@ -61,7 +61,7 @@ newEntity{ base = "BASE_NPC_SUNWALL_TOWN",
 	name = "elven archer", color=colors.UMBER,
 	desc = [[A stern looking guard, he will not let you disturb the town.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	max_life = resolvers.rngavg(50,60),
 	resolvers.talents{ [Talents.T_SHOOT]=1, },
 	ai_state = { talent_in=2, },
@@ -73,7 +73,7 @@ newEntity{ base = "BASE_NPC_SUNWALL_TOWN",
 	name = "human sun-paladin", color=colors.GOLD,
 	desc = [[A human in a shiny plate armour.]],
 	level_range = {5, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	rank = 3,
 	max_life = resolvers.rngavg(80,90),
 	resolvers.equip{
@@ -93,7 +93,7 @@ newEntity{ base = "BASE_NPC_SUNWALL_TOWN",
 	name = "elven sun-mage", color=colors.YELLOW,
 	desc = [[An elf dressed in glowing robes.]],
 	level_range = {3, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	rank = 3,
 	max_life = resolvers.rngavg(70,80),
 	resolvers.equip{
diff --git a/game/modules/tome/data/general/npcs/swarm.lua b/game/modules/tome/data/general/npcs/swarm.lua
index a8100386cedb93d0126af67ddfed60ed6f22ae11..cd9a1103f2b5c2591c609e526690d92e82cd2afc 100644
--- a/game/modules/tome/data/general/npcs/swarm.lua
+++ b/game/modules/tome/data/general/npcs/swarm.lua
@@ -42,7 +42,7 @@ newEntity{ base = "BASE_NPC_INSECT",
 	name = "midge swarm", color=colors.UMBER, image="npc/midge_swarm.png",
 	desc = "A swarm of midges, they want blood.",
 	level_range = {1, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(1,2),
 	combat = { dam=1, atk=15, apr=20 },
 }
@@ -51,7 +51,7 @@ newEntity{ base = "BASE_NPC_INSECT",
 	name = "bee swarm", color=colors.GOLD, image="npc/bee_swarm.png",
 	desc = "They buzz at you threateningly, as you have gotten too close to their hive.",
 	level_range = {2, 25}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(1,3),
 	combat = { dam=2, atk=15, apr=20 },
 
@@ -62,7 +62,7 @@ newEntity{ base = "BASE_NPC_INSECT",
 	name = "hornet swarm", color=colors.YELLOW, image="npc/hornet_swarm.png",
 	desc = "You have intruded on their grounds, they will defend it at all costs.",
 	level_range = {3, 25}, exp_worth = 1,
-	rarity = 7,
+	rarity = 1,
 	max_life = resolvers.rngavg(3,5),
 	combat = { dam=5, atk=15, apr=20 },
 
@@ -73,7 +73,7 @@ newEntity{ base = "BASE_NPC_INSECT",
 	name = "hummerhorn", color=colors.YELLOW, image="npc/hommerhorn.png",
 	desc = "A giant buzzing wasp, its stinger drips venom. ",
 	level_range = {16, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 4,
 	max_life = resolvers.rngavg(5,7),
 	combat = { dam=10, atk=15, apr=20 },
 	can_multiply = 4,
diff --git a/game/modules/tome/data/general/npcs/thieve.lua b/game/modules/tome/data/general/npcs/thieve.lua
index a59ffefda0176cfa27bc13ea8f0023165d255a1c..971acdce209b0b06c58721a8cc3ede8da5d60a1e 100644
--- a/game/modules/tome/data/general/npcs/thieve.lua
+++ b/game/modules/tome/data/general/npcs/thieve.lua
@@ -57,7 +57,7 @@ newEntity{ base = "BASE_NPC_THIEF",
 	name = "cutpurse", color_r=0, color_g=0, color_b=resolvers.rngrange(235, 255),
 	desc = [[The lowest of the thieves, they are just learning the tricks of the trade.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 5,
+	rarity = 1,
 	combat_armor = 1, combat_def = 5,
 	max_life = resolvers.rngavg(60,80),
 	resolvers.talents{  },
@@ -67,7 +67,7 @@ newEntity{ base = "BASE_NPC_THIEF",
 	name = "rogue", color_r=0, color_g=0, color_b=resolvers.rngrange(215, 235),
 	desc = [[Stronger than a cutpurse, this thief has been promoted.]],
 	level_range = {2, nil}, exp_worth = 1,
-	rarity = 5,
+	rarity = 1,
 	combat_armor = 2, combat_def = 5,
 	resolvers.talents{ [Talents.T_STEALTH]=1,  },
 	max_life = resolvers.rngavg(70,90),
@@ -77,7 +77,7 @@ newEntity{ base = "BASE_NPC_THIEF",
 	name = "thief", color_r=0, color_g=0, color_b=resolvers.rngrange(195, 215),
 	desc = [[He eyes you and your belongings, then suddenly vanishes... strange, why is your pack lighter?]],
 	level_range = {3, nil}, exp_worth = 1,
-	rarity = 5,
+	rarity = 1,
 	combat_armor = 3, combat_def = 5,
 	resolvers.talents{ [Talents.T_STEALTH]=2,  },
 	max_life = resolvers.rngavg(70,90),
@@ -87,7 +87,7 @@ newEntity{ base = "BASE_NPC_THIEF", define_as = "THIEF_BANDIT",
 	name = "bandit", color_r=0, color_g=0, color_b=resolvers.rngrange(175, 195),
 	desc = [[These ruffians often employ brute force over thievery, but they are capable of stealing as well.]],
 	level_range = {5, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 2,
 	combat_armor = 4, combat_def = 6,
 	resolvers.talents{ [Talents.T_STEALTH]=3, [Talents.T_LETHALITY]=2, },
 	max_life = resolvers.rngavg(80,100),
@@ -97,7 +97,7 @@ newEntity{ base = "BASE_NPC_THIEF",
 	name = "bandit lord", color_r=resolvers.rngrange(75, 85), color_g=0, color_b=resolvers.rngrange(235, 255),
 	desc = [[He is the leader of a gang of bandits, watch out for his men.]],
 	level_range = {8, nil}, exp_worth = 1,
-	rarity = 12,
+	rarity = 5,
 	combat_armor = 5, combat_def = 7,
 	max_life = resolvers.rngavg(90,100),
 	combat = { dam=resolvers.rngavg(6,7), atk=10, apr=4},
@@ -119,7 +119,7 @@ newEntity{ base = "BASE_NPC_THIEF", define_as = "THIEF_ASSASSIN",
 	name = "assassin", color_r=resolvers.rngrange(0, 10), color_g=resolvers.rngrange(0, 10), color_b=resolvers.rngrange(0, 10),
 	desc = [[Before you looms a pair of eyes... A glint of steel... death.]],
 	level_range = {12, nil}, exp_worth = 1,
-	rarity = 12,
+	rarity = 3,
 	combat_armor = 3, combat_def = 10,
 	resolvers.talents{ [Talents.T_STEALTH]=3, [Talents.T_PRECISION]=3, [Talents.T_DUAL_WEAPON_TRAINING]=2, [Talents.T_DUAL_WEAPON_DEFENSE]=2, [Talents.T_DUAL_STRIKE]=1, [Talents.T_SWEEP]=1, [Talents.T_SHADOWSTRIKE]=2, [Talents.T_LETHALITY]=5, },
 	max_life = resolvers.rngavg(70,90),
diff --git a/game/modules/tome/data/general/npcs/troll.lua b/game/modules/tome/data/general/npcs/troll.lua
index e0f2ec388b3074b89537ed56bd72d7c79b9a59f6..9d7a20b80f0902df5b785a2e640f8c7d583e79ef 100644
--- a/game/modules/tome/data/general/npcs/troll.lua
+++ b/game/modules/tome/data/general/npcs/troll.lua
@@ -54,7 +54,7 @@ newEntity{ base = "BASE_NPC_TROLL",
 	name = "forest troll", color=colors.YELLOW_GREEN,
 	desc = [[Green-skinned and ugly, this massive humanoid glares at you, clenching wart-covered green fists.]],
 	level_range = {1, nil}, exp_worth = 1,
-	rarity = 6,
+	rarity = 1,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 4, combat_def = 0,
 }
@@ -63,7 +63,7 @@ newEntity{ base = "BASE_NPC_TROLL",
 	name = "stone troll", color=colors.DARK_SLATE_GRAY,
 	desc = [[A giant troll with scabrous black skin. With a shudder, you notice the belt of dwarf skulls around his massive waist.]],
 	level_range = {3, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 1,
 	max_life = resolvers.rngavg(120,140),
 	combat_armor = 7, combat_def = 0,
 	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_STUN]=1, [Talents.T_KNOCKBACK]=1, },
@@ -73,7 +73,7 @@ newEntity{ base = "BASE_NPC_TROLL",
 	name = "cave troll", color=colors.SLATE,
 	desc = [[This huge troll wields a massive spear and has a disturbingly intelligent look in its piggy eyes.]],
 	level_range = {7, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 2,
 	max_life = resolvers.rngavg(120,140),
 	combat_armor = 9, combat_def = 3,
 	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_STUN]=1, [Talents.T_KNOCKBACK]=1, [Talents.T_KNOCKBACK]=2, },
@@ -83,7 +83,7 @@ newEntity{ base = "BASE_NPC_TROLL",
 	name = "mountain troll", color=colors.UMBER,
 	desc = [[A large and athletic troll with an extremely tough and warty hide.]],
 	level_range = {12, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 3,
 	max_life = resolvers.rngavg(120,140),
 	combat_armor = 12, combat_def = 4,
 	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_STUN]=3, [Talents.T_KNOCKBACK]=3, [Talents.T_RUSH]=3, },
@@ -93,7 +93,7 @@ newEntity{ base = "BASE_NPC_TROLL",
 	name = "mountain troll thunderer", color=colors.AQUAMARINE,
 	desc = [[A large and athletic troll with an extremely tough and warty hide.]],
 	level_range = {20, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 5,
 	rank = 3,
 	max_life = resolvers.rngavg(120,140),
 	mana_regen = 20,
diff --git a/game/modules/tome/data/general/npcs/vampire.lua b/game/modules/tome/data/general/npcs/vampire.lua
index 013758138116a1984becc856b0e8d006c0652a0d..952272e128e92a5bf1911eea043f58d8a168c99b 100644
--- a/game/modules/tome/data/general/npcs/vampire.lua
+++ b/game/modules/tome/data/general/npcs/vampire.lua
@@ -74,7 +74,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	name = "lesser vampire", color=colors.SLATE,
 	desc=[[This vampire has only just begun it's new life, it has not yet fathomed its newfound power.  Yet it still has its thirst for blood.]],
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(40,50),
 	combat_armor = 7, combat_def = 6,
 
@@ -85,7 +85,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	name = "vampire", color=colors.SLATE,
 	desc=[[It is a humanoid with an aura of power. You notice a sharp set of front teeth.]],
 	level_range = {20, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 9, combat_def = 6,
 
@@ -96,7 +96,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	name = "master vampire", color=colors.GREEN,
 	desc=[[It is a humanoid form dressed in robes. Power emanates from its chilling frame.]],
 	level_range = {23, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(80,90),
 	combat_armor = 10, combat_def = 8,
 	ai = "dumb_talented_simple", ai_state = { talent_in=6, },
@@ -108,7 +108,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	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.]],
 	level_range = {26, nil}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(90,100),
 	combat_armor = 12, combat_def = 10,
 	rank = 3,
@@ -121,7 +121,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	name = "vampire lord", color=colors.BLUE,
 	desc=[[A foul wind chills your bones as this ghastly figure approaches.]],
 	level_range = {30, nil}, exp_worth = 1,
-	rarity = 9,
+	rarity = 4,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 15, combat_def = 15,
 	rank = 3,
diff --git a/game/modules/tome/data/general/npcs/vermin.lua b/game/modules/tome/data/general/npcs/vermin.lua
index 462957e35decdb17b0ecac6ad98a0229f1d75ffc..9ae0e1597f879818977e48a2ecdf490fa602bc96 100644
--- a/game/modules/tome/data/general/npcs/vermin.lua
+++ b/game/modules/tome/data/general/npcs/vermin.lua
@@ -39,7 +39,7 @@ newEntity{
 newEntity{ base = "BASE_NPC_WORM",
 	name = "white worm mass", color=colors.WHITE,
 	level_range = {1, 15}, exp_worth = 1,
-	rarity = 4,
+	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=1, atk=15, apr=100 },
 
@@ -49,7 +49,7 @@ newEntity{ base = "BASE_NPC_WORM",
 newEntity{ base = "BASE_NPC_WORM",
 	name = "green worm mass", color=colors.GREEN,
 	level_range = {2, 15}, exp_worth = 1,
-	rarity = 5,
+	rarity = 2,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=1, atk=15, apr=100 },
 
diff --git a/game/modules/tome/data/general/npcs/wight.lua b/game/modules/tome/data/general/npcs/wight.lua
index d73895971ddbce673036e719b202415a489ade67..208a341aad154442f62a558aa7c58245537a17a5 100644
--- a/game/modules/tome/data/general/npcs/wight.lua
+++ b/game/modules/tome/data/general/npcs/wight.lua
@@ -64,7 +64,7 @@ newEntity{ base = "BASE_NPC_WIGHT",
 	name = "forest wight", color=colors.GREEN,
 	desc=[[It is a ghostly apparition with a humanoid form.]],
 	level_range = {16, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 1,
 	max_life = resolvers.rngavg(40,50),
 	combat_armor = 7, combat_def = 6,
 
@@ -78,7 +78,7 @@ newEntity{ base = "BASE_NPC_WIGHT",
 	name = "grave wight", color=colors.SLATE,
 	desc=[[It is a ghostly form with eyes that haunt you.]],
 	level_range = {22, nil}, exp_worth = 1,
-	rarity = 7,
+	rarity = 1,
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 9, combat_def = 6,
 
@@ -91,7 +91,7 @@ newEntity{ base = "BASE_NPC_WIGHT",
 	name = "barrow wight", color=colors.LIGHT_RED,
 	desc=[[It is a ghostly nightmare of an entity.]],
 	level_range = {25, nil}, exp_worth = 1,
-	rarity = 8,
+	rarity = 2,
 	max_life = resolvers.rngavg(80,90),
 	combat_armor = 10, combat_def = 8,
 
@@ -104,7 +104,7 @@ newEntity{ base = "BASE_NPC_WIGHT",
 	name = "emperor wight", color=colors.RED,
 	desc=[[Your life force is torn from your body as this powerful unearthly being approaches.]],
 	level_range = {30, nil}, exp_worth = 1,
-	rarity = 9,
+	rarity = 5,
 	rank = 3,
 	max_life = resolvers.rngavg(100,150),
 	max_mana = resolvers.rngavg(300,350),
diff --git a/game/modules/tome/data/general/npcs/xorn.lua b/game/modules/tome/data/general/npcs/xorn.lua
index b2880e9b18e91e5acbd36e4790ccc4a3d92313ea..e6e694e83b0559a62873515230817ce05f56ddad 100644
--- a/game/modules/tome/data/general/npcs/xorn.lua
+++ b/game/modules/tome/data/general/npcs/xorn.lua
@@ -56,7 +56,7 @@ newEntity{ base = "BASE_NPC_XORN",
 	name = "umber hulk", color=colors.LIGHT_UMBER,
 	desc = [[This bizarre creature has glaring eyes and large mandibles capable of slicing through rock.]],
 	level_range = {10, nil}, exp_worth = 1,
-	rarity = 12,
+	rarity = 1,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 12, combat_def = 0,
 	move_project = {[DamageType.DIG]=1},
@@ -67,7 +67,7 @@ newEntity{ base = "BASE_NPC_XORN",
 	name = "xorn", color=colors.UMBER,
 	desc = [[A huge creature of the element Earth. Able to merge with its element, it has four huge arms protruding from its enormous torso.]],
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 12,
+	rarity = 1,
 	max_life = resolvers.rngavg(130,140),
 	combat_armor = 15, combat_def = 10,
 	combat = { damtype=DamageType.ACID },
@@ -78,7 +78,7 @@ newEntity{ base = "BASE_NPC_XORN",
 	name = "xaren", color=colors.SLATE,
 	desc = [[It is a tougher relative of the Xorn. Its hide glitters with metal ores.]],
 	level_range = {15, nil}, exp_worth = 1,
-	rarity = 12,
+	rarity = 3,
 	max_life = resolvers.rngavg(130,140),
 	combat_armor = 15, combat_def = 10,
 	combat = { damtype=DamageType.ACID },
diff --git a/game/modules/tome/data/general/objects/egos/wizard-hat.lua b/game/modules/tome/data/general/objects/egos/wizard-hat.lua
index 28cecec7903a7ee9aac36653828e38a7f490702e..dc3cc9016be36ed36a3458149f04a89a3ae20d6d 100644
--- a/game/modules/tome/data/general/objects/egos/wizard-hat.lua
+++ b/game/modules/tome/data/general/objects/egos/wizard-hat.lua
@@ -97,7 +97,7 @@ newEntity{
 	},
 }
 newEntity{
-	name = "of seeing ", prefix=true,
+	name = "of seeing ", suffix=true,
 	level_range = {1, 50},
 	rarity = 5,
 	cost = 6,
diff --git a/game/modules/tome/data/talents/techniques/combat-techniques.lua b/game/modules/tome/data/talents/techniques/combat-techniques.lua
index 8f47be914eb166e49818489097696ce9d5338069..1a0404bb5d555b45783f55c73647c3c6d07c997a 100644
--- a/game/modules/tome/data/talents/techniques/combat-techniques.lua
+++ b/game/modules/tome/data/talents/techniques/combat-techniques.lua
@@ -55,7 +55,7 @@ newTalent{
 	points = 5,
 	random_ego = "attack",
 	stamina = 45,
-	cooldown = 50,
+	cooldown = 40,
 	tactical = {
 		ATTACK = 4,
 	},
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 1f57dae6ecc71403ea93b012bc82f71d5a219f92..2b51f4a105500de788c547d83666a4d86d2fe425 100644
--- a/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua
+++ b/game/modules/tome/data/zones/ancient-elven-ruins/npcs.lua
@@ -17,13 +17,13 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/rodent.lua")
-load("/data/general/npcs/vermin.lua")
-load("/data/general/npcs/molds.lua")
-load("/data/general/npcs/mummy.lua")
-load("/data/general/npcs/skeleton.lua")
+load("/data/general/npcs/rodent.lua", rarity(4))
+load("/data/general/npcs/vermin.lua", rarity(4))
+load("/data/general/npcs/molds.lua", rarity(3))
+load("/data/general/npcs/mummy.lua", rarity(0))
+load("/data/general/npcs/skeleton.lua", rarity(3))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
@@ -81,7 +81,7 @@ newEntity{ base = "BASE_NPC_MUMMY",
 	name = "ancient elven mummy", color=colors.ANTIQUE_WHITE,
 	desc = [[An animated corpse in mummy wrappings.]],
 	level_range = {7, 50}, exp_worth = 1,
-	rarity = 2,
+	rarity = 1,
 	max_life = resolvers.rngavg(120,140),
 	ai_state = { talent_in=4, },
 	stats = { mag=25, wil=20, },
@@ -103,7 +103,7 @@ newEntity{ base = "BASE_NPC_MUMMY",
 	name = "animated mummy wrappings", color=colors.SLATE, display='[',
 	desc = [[An animated mummy wrappings, without a corpse inside... It seems like it can not move.]],
 	level_range = {7, 50}, exp_worth = 1,
-	rarity = 7,
+	rarity = 4,
 	max_life = resolvers.rngavg(20,40), life_rating=4,
 	ai_state = { talent_in=2, },
 	never_move = 1,
@@ -125,7 +125,7 @@ newEntity{ base = "BASE_NPC_MUMMY",
 	name = "rotting mummy", color=colors.TAN,
 	desc = [[An rotting animated corpse in mummy wrappings.]],
 	level_range = {7, 50}, exp_worth = 1,
-	rarity = 3,
+	rarity = 2,
 	max_life = resolvers.rngavg(60,80), life_rating=7,
 	ai_state = { talent_in=4, },
 	infravision = 20,
diff --git a/game/modules/tome/data/zones/ardhungol/npcs.lua b/game/modules/tome/data/zones/ardhungol/npcs.lua
index 67ca520d52aa61ae07826791246bbcc1abb0ba2f..7353be740c6af78f78252c14f3b34ada8912392a 100644
--- a/game/modules/tome/data/zones/ardhungol/npcs.lua
+++ b/game/modules/tome/data/zones/ardhungol/npcs.lua
@@ -17,9 +17,9 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/spider.lua")
+load("/data/general/npcs/spider.lua", rarity(0))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 10 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/carn-dum/npcs.lua b/game/modules/tome/data/zones/carn-dum/npcs.lua
index 1e8825283ae7a25ea230ab02eedec1436bab4b85..881fd9b7f0c71d98bb4c9dae2b979c23d2b43b67 100644
--- a/game/modules/tome/data/zones/carn-dum/npcs.lua
+++ b/game/modules/tome/data/zones/carn-dum/npcs.lua
@@ -17,12 +17,12 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/xorn.lua")
-load("/data/general/npcs/canine.lua", function(e) if e.rarity then e.rarity = e.rarity * 2 end end)
-load("/data/general/npcs/snow-giant.lua")
-load("/data/general/npcs/cold-drake.lua")
+load("/data/general/npcs/xorn.lua", rarity(4))
+load("/data/general/npcs/canine.lua", rarity(2))
+load("/data/general/npcs/snow-giant.lua", rarity(0))
+load("/data/general/npcs/cold-drake.lua", rarity(2))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/eruan/npcs.lua b/game/modules/tome/data/zones/eruan/npcs.lua
index 65d79d60a68a87d3bd06fe8c087dc276bea640d7..3b6a17ef97c27d1f0c55b1dcf714a066467a3fbb 100644
--- a/game/modules/tome/data/zones/eruan/npcs.lua
+++ b/game/modules/tome/data/zones/eruan/npcs.lua
@@ -17,11 +17,11 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/sandworm.lua")
-load("/data/general/npcs/ritch.lua")
-load("/data/general/npcs/orc.lua")
+load("/data/general/npcs/sandworm.lua", rarity(0))
+load("/data/general/npcs/ritch.lua", rarity(0))
+load("/data/general/npcs/orc.lua", rarity(6))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/flooded-cave/npcs.lua b/game/modules/tome/data/zones/flooded-cave/npcs.lua
index 581903a1f86acc3678a16198b1e3e5c580831033..f0c9cc1b13aeea96655552144b8ea8c1b153fecf 100644
--- a/game/modules/tome/data/zones/flooded-cave/npcs.lua
+++ b/game/modules/tome/data/zones/flooded-cave/npcs.lua
@@ -17,8 +17,8 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/aquatic_critter.lua")
-load("/data/general/npcs/aquatic_demon.lua")
+load("/data/general/npcs/aquatic_critter.lua", rarity(0))
+load("/data/general/npcs/aquatic_demon.lua", rarity(0))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/grushnak-pride/npcs.lua b/game/modules/tome/data/zones/grushnak-pride/npcs.lua
index 8000d951d04c914252268c59d1e13829c81604a5..4cdca147e803c8f262d36738d0cd8bba833da617 100644
--- a/game/modules/tome/data/zones/grushnak-pride/npcs.lua
+++ b/game/modules/tome/data/zones/grushnak-pride/npcs.lua
@@ -17,10 +17,10 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/orc.lua", function(e) if e.rarity then e.rarity = e.rarity * 3 end e.make_escort = nil end)
-load("/data/general/npcs/orc-grushnak.lua")
+load("/data/general/npcs/orc.lua", rarity(3))
+load("/data/general/npcs/orc-grushnak.lua", rarity(0))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
@@ -43,7 +43,7 @@ newEntity{ base="BASE_NPC_ORC_GRUSHNAK", define_as = "GRUSHNAK",
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { talent_in=1, ai_move="move_astar", },
 
-	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1, FEET=1 },
+	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, HEAD=1, FEET=1, FINGER=2, NECK=1 },
 
 	resolvers.equip{
 		{type="weapon", subtype="waraxe", ego_change=100, autoreq=true},
@@ -51,6 +51,9 @@ newEntity{ base="BASE_NPC_ORC_GRUSHNAK", define_as = "GRUSHNAK",
 		{type="armor", subtype="massive", ego_chance=100, autoreq=true},
 		{type="armor", subtype="head", ego_chance=100, autoreq=true},
 		{type="armor", subtype="feet", ego_chance=100, autoreq=true},
+		{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", autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
 
@@ -60,6 +63,7 @@ newEntity{ base="BASE_NPC_ORC_GRUSHNAK", define_as = "GRUSHNAK",
 
 	resolvers.talents{
 		[Talents.T_WEAPON_COMBAT]=10,
+		[Talents.T_MASSIVE_ARMOUR_TRAINING]=10,
 		[Talents.T_AXE_MASTERY]=10,
 		[Talents.T_RUSH]=5,
 		[Talents.T_BATTLE_CALL]=5,
diff --git a/game/modules/tome/data/zones/grushnak-pride/objects.lua b/game/modules/tome/data/zones/grushnak-pride/objects.lua
index 887f9dbf9e239af16b9478322ad79ade0e156264..acfe1cd05034d9a5c2ed781259c3ea0074eb7557 100644
--- a/game/modules/tome/data/zones/grushnak-pride/objects.lua
+++ b/game/modules/tome/data/zones/grushnak-pride/objects.lua
@@ -19,18 +19,28 @@
 
 load("/data/general/objects/objects.lua")
 
+local Talents = require"engine.interface.ActorTalents"
 local Stats = require"engine.interface.ActorStats"
 
-newEntity{ base = "BASE_MASSIVE_ARMOR",
-	define_as = "BLACK_ROBE", rarity=false,
-	name = "mithril plate armour", unique=true,
-	unided_name = "massive armour",
-	require = { stat = { str=60 }, },
-	cost = 50,
+newEntity{ base = "BASE_RING",
+	define_as = "PRIDE_GLORY", rarity=false,
+	name = "Glory of the Pride", unique=true,
+	unided_name = "deep black ring",
+	cost = 500,
 	material_level = 5,
 	wielder = {
-		combat_def = 9,
-		combat_armor = 16,
-		fatigue = 26,
+		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/illusory-castle/npcs.lua b/game/modules/tome/data/zones/illusory-castle/npcs.lua
index 3196dffbe5c1eeb38df6e14a503a26462776677f..afa3b7ff86dd8f9d566fd62538f00299fbe3aa3a 100644
--- a/game/modules/tome/data/zones/illusory-castle/npcs.lua
+++ b/game/modules/tome/data/zones/illusory-castle/npcs.lua
@@ -17,12 +17,12 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/rodent.lua")
-load("/data/general/npcs/vermin.lua")
-load("/data/general/npcs/molds.lua")
-load("/data/general/npcs/skeleton.lua")
-load("/data/general/npcs/snake.lua")
+load("/data/general/npcs/rodent.lua", rarity(0))
+load("/data/general/npcs/vermin.lua", rarity(0))
+load("/data/general/npcs/molds.lua", rarity(0))
+load("/data/general/npcs/skeleton.lua", rarity(0))
+load("/data/general/npcs/snake.lua", rarity(0))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
diff --git a/game/modules/tome/data/zones/maze/npcs.lua b/game/modules/tome/data/zones/maze/npcs.lua
index f0eba7f57238a81fba14e2b0804e965dd9d04a3f..672d40eda3f3390e387f32b3477c6fe2f5452008 100644
--- a/game/modules/tome/data/zones/maze/npcs.lua
+++ b/game/modules/tome/data/zones/maze/npcs.lua
@@ -17,17 +17,17 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/vermin.lua")
-load("/data/general/npcs/rodent.lua")
-load("/data/general/npcs/canine.lua")
-load("/data/general/npcs/snake.lua")
-load("/data/general/npcs/ooze.lua")
-load("/data/general/npcs/jelly.lua")
-load("/data/general/npcs/ant.lua")
-load("/data/general/npcs/thieve.lua")
-load("/data/general/npcs/minotaur.lua")
+load("/data/general/npcs/vermin.lua", rarity(5))
+load("/data/general/npcs/rodent.lua", rarity(5))
+load("/data/general/npcs/canine.lua", rarity(6))
+load("/data/general/npcs/snake.lua", rarity(4))
+load("/data/general/npcs/ooze.lua", rarity(3))
+load("/data/general/npcs/jelly.lua", rarity(3))
+load("/data/general/npcs/ant.lua", rarity(4))
+load("/data/general/npcs/thieve.lua", rarity(0))
+load("/data/general/npcs/minotaur.lua", rarity(0))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/moria/npcs.lua b/game/modules/tome/data/zones/moria/npcs.lua
index 9b86a513dba74a15436cbed9f6776f8870cc8b83..ceb15eb65d92b95d26c4b3d6f8a33a006eb30526 100644
--- a/game/modules/tome/data/zones/moria/npcs.lua
+++ b/game/modules/tome/data/zones/moria/npcs.lua
@@ -17,10 +17,10 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/orc.lua")
-load("/data/general/npcs/troll.lua")
+load("/data/general/npcs/orc.lua", rarity(0))
+load("/data/general/npcs/troll.lua", rarity(0))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/mount-doom/npcs.lua b/game/modules/tome/data/zones/mount-doom/npcs.lua
index 39c0bfcdf879a59a7bf4668fe1fb8158ce2c75a3..121c05ed4564038f8c96ce8e1d0a2204c72664f1 100644
--- a/game/modules/tome/data/zones/mount-doom/npcs.lua
+++ b/game/modules/tome/data/zones/mount-doom/npcs.lua
@@ -17,10 +17,10 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/faeros.lua")
-load("/data/general/npcs/fire_elemental.lua")
-load("/data/general/npcs/molten_golem.lua")
-load("/data/general/npcs/fire-drake.lua")
+load("/data/general/npcs/faeros.lua", rarity(0))
+load("/data/general/npcs/fire_elemental.lua", rarity(0))
+load("/data/general/npcs/molten_golem.lua", rarity(0))
+load("/data/general/npcs/fire-drake.lua", rarity(0))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/old-forest/npcs.lua b/game/modules/tome/data/zones/old-forest/npcs.lua
index 55efa6a7f1803158feb820af84b3a564d1229a0d..f574601722549c5530065a20eaa0cffa2ca81895 100644
--- a/game/modules/tome/data/zones/old-forest/npcs.lua
+++ b/game/modules/tome/data/zones/old-forest/npcs.lua
@@ -17,15 +17,15 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/bear.lua")
-load("/data/general/npcs/vermin.lua")
-load("/data/general/npcs/canine.lua")
-load("/data/general/npcs/snake.lua")
-load("/data/general/npcs/swarm.lua")
-load("/data/general/npcs/plant.lua")
-load("/data/general/npcs/ant.lua")
+load("/data/general/npcs/bear.lua", rarity(1))
+load("/data/general/npcs/vermin.lua", rarity(3))
+load("/data/general/npcs/canine.lua", rarity(0))
+load("/data/general/npcs/snake.lua", rarity(0))
+load("/data/general/npcs/swarm.lua", rarity(1))
+load("/data/general/npcs/plant.lua", rarity(0))
+load("/data/general/npcs/ant.lua", rarity(2))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
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 63d50869fd2b66b8db10faa996ce75d11125f87e..1c5fee5d9b794f2142cfc07523a683a54dfbb6af 100644
--- a/game/modules/tome/data/zones/rak-shor-pride/npcs.lua
+++ b/game/modules/tome/data/zones/rak-shor-pride/npcs.lua
@@ -17,13 +17,13 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/bone-giant.lua")
-load("/data/general/npcs/ghoul.lua", function(e) if e.rarity then e.rarity = e.rarity * 3 end end)
-load("/data/general/npcs/skeleton.lua", function(e) if e.rarity then e.rarity = e.rarity * 3 end end)
-load("/data/general/npcs/orc.lua", function(e) if e.rarity then e.rarity = e.rarity * 3 end e.make_escort = nil end)
-load("/data/general/npcs/orc-rak-shor.lua")
+load("/data/general/npcs/bone-giant.lua", rarity(0))
+load("/data/general/npcs/ghoul.lua", rarity(5))
+load("/data/general/npcs/skeleton.lua", rarity(5))
+load("/data/general/npcs/orc.lua", rarity(2))
+load("/data/general/npcs/orc-rak-shor.lua", rarity(0))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/sandworm-lair/npcs.lua b/game/modules/tome/data/zones/sandworm-lair/npcs.lua
index 54234356deb9cd89f92758913997ca60f84bf135..8f62e9c2109468cfcdde0bb1527167eb2088a1e9 100644
--- a/game/modules/tome/data/zones/sandworm-lair/npcs.lua
+++ b/game/modules/tome/data/zones/sandworm-lair/npcs.lua
@@ -18,12 +18,12 @@
 -- darkgod@te4.org
 
 -- Load some various npc types but up their rarity to make some sandworms are the norm
-load("/data/general/npcs/vermin.lua", function(e) if e.rarity then e.rarity = e.rarity * 6 end end)
-load("/data/general/npcs/ooze.lua", function(e) if e.rarity then e.rarity = e.rarity * 6 end end)
-load("/data/general/npcs/jelly.lua", function(e) if e.rarity then e.rarity = e.rarity * 6 end end)
-load("/data/general/npcs/sandworm.lua")
+load("/data/general/npcs/vermin.lua", rarity(7))
+load("/data/general/npcs/ooze.lua", rarity(5))
+load("/data/general/npcs/jelly.lua", rarity(7))
+load("/data/general/npcs/sandworm.lua", rarity(0))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+--load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/test/npcs.lua b/game/modules/tome/data/zones/test/npcs.lua
index 532c0a19c6cea11cc033211fe4f6d2de6b8b5040..5e3d833d237cce7f47c9e2c2000c3736b21eefd6 100644
--- a/game/modules/tome/data/zones/test/npcs.lua
+++ b/game/modules/tome/data/zones/test/npcs.lua
@@ -17,4 +17,4 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/spider.lua")
+load("/data/general/npcs/spider.lua", rarity(0))
diff --git a/game/modules/tome/data/zones/tol-falas-ambush/npcs.lua b/game/modules/tome/data/zones/tol-falas-ambush/npcs.lua
index 883f96bf8fef3160979b489889fa4635357e19be..872b6bd9ece198abd96197a6d6cc745e070e581a 100644
--- a/game/modules/tome/data/zones/tol-falas-ambush/npcs.lua
+++ b/game/modules/tome/data/zones/tol-falas-ambush/npcs.lua
@@ -17,7 +17,7 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/orc.lua")
+load("/data/general/npcs/orc.lua", rarity(0))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/tol-falas/npcs.lua b/game/modules/tome/data/zones/tol-falas/npcs.lua
index fbeff1594c83eef09498d86c230f7108b375ac42..d016595abaac03ab735f640e90ef5010bdc49559 100644
--- a/game/modules/tome/data/zones/tol-falas/npcs.lua
+++ b/game/modules/tome/data/zones/tol-falas/npcs.lua
@@ -17,12 +17,12 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/skeleton.lua")
-load("/data/general/npcs/ghoul.lua")
-load("/data/general/npcs/wight.lua")
-load("/data/general/npcs/vampire.lua")
+load("/data/general/npcs/skeleton.lua", rarity(0))
+load("/data/general/npcs/ghoul.lua", rarity(1))
+load("/data/general/npcs/wight.lua", rarity(3))
+load("/data/general/npcs/vampire.lua", rarity(3))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/tower-amon-sul/npcs.lua b/game/modules/tome/data/zones/tower-amon-sul/npcs.lua
index 02228758e81e7e88c5c18a39566f42a9904246ac..cbf577224456e6c7082183d6160ffcaa45e07343 100644
--- a/game/modules/tome/data/zones/tower-amon-sul/npcs.lua
+++ b/game/modules/tome/data/zones/tower-amon-sul/npcs.lua
@@ -17,13 +17,13 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/rodent.lua")
-load("/data/general/npcs/vermin.lua")
-load("/data/general/npcs/molds.lua")
-load("/data/general/npcs/skeleton.lua")
-load("/data/general/npcs/snake.lua")
+load("/data/general/npcs/rodent.lua", rarity(0))
+load("/data/general/npcs/vermin.lua", rarity(2))
+load("/data/general/npcs/molds.lua", rarity(1))
+load("/data/general/npcs/skeleton.lua", rarity(0))
+load("/data/general/npcs/snake.lua", rarity(2))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/town-gates-of-morning/npcs.lua b/game/modules/tome/data/zones/town-gates-of-morning/npcs.lua
index 8d830f515caabeaeb2328a67db21eefef1593aaa..ebc0492b74956dfeaf78739424bd81ff468ea433 100644
--- a/game/modules/tome/data/zones/town-gates-of-morning/npcs.lua
+++ b/game/modules/tome/data/zones/town-gates-of-morning/npcs.lua
@@ -17,7 +17,7 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/sunwall-town.lua")
+load("/data/general/npcs/sunwall-town.lua", rarity(0))
 --load("/data/general/npcs/.lua", function(e) e.faction = "sunwall" end)
 
 local Talents = require("engine.interface.ActorTalents")
diff --git a/game/modules/tome/data/zones/town-sunwall-outpost/npcs.lua b/game/modules/tome/data/zones/town-sunwall-outpost/npcs.lua
index 93b7eda0e6c13dd33788e3f8d98b78b3348329f8..c02524dc6d5b7acc6a1ea58ea6123ca34d8e8947 100644
--- a/game/modules/tome/data/zones/town-sunwall-outpost/npcs.lua
+++ b/game/modules/tome/data/zones/town-sunwall-outpost/npcs.lua
@@ -17,7 +17,7 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/sunwall-town.lua")
+load("/data/general/npcs/sunwall-town.lua", rarity(0))
 load("/data/general/npcs/.lua", function(e) e.faction = "sunwall" end)
 
 local Talents = require("engine.interface.ActorTalents")
diff --git a/game/modules/tome/data/zones/trollshaws/npcs.lua b/game/modules/tome/data/zones/trollshaws/npcs.lua
index 0151406893515ea126d03c3a1ceb2a9de60d3797..380f5b26a79f652df00e685831197902755c84fb 100644
--- a/game/modules/tome/data/zones/trollshaws/npcs.lua
+++ b/game/modules/tome/data/zones/trollshaws/npcs.lua
@@ -17,16 +17,16 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/rodent.lua")
-load("/data/general/npcs/vermin.lua")
-load("/data/general/npcs/canine.lua")
-load("/data/general/npcs/troll.lua")
-load("/data/general/npcs/snake.lua")
-load("/data/general/npcs/plant.lua")
-load("/data/general/npcs/swarm.lua")
-load("/data/general/npcs/bear.lua")
+load("/data/general/npcs/rodent.lua", rarity(5))
+load("/data/general/npcs/vermin.lua", rarity(2))
+load("/data/general/npcs/canine.lua", rarity(0))
+load("/data/general/npcs/troll.lua", rarity(0))
+load("/data/general/npcs/snake.lua", rarity(3))
+load("/data/general/npcs/plant.lua", rarity(0))
+load("/data/general/npcs/swarm.lua", rarity(3))
+load("/data/general/npcs/bear.lua", rarity(2))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/tutorial/npcs.lua b/game/modules/tome/data/zones/tutorial/npcs.lua
index 9e4caa55d57ad8b621c8a9bb5824f8de0e4d4eb5..8dee175f7de756658e604b91ac5eedd1c097293d 100644
--- a/game/modules/tome/data/zones/tutorial/npcs.lua
+++ b/game/modules/tome/data/zones/tutorial/npcs.lua
@@ -17,13 +17,13 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/bear.lua")
-load("/data/general/npcs/vermin.lua")
-load("/data/general/npcs/canine.lua")
-load("/data/general/npcs/snake.lua")
-load("/data/general/npcs/swarm.lua")
-load("/data/general/npcs/plant.lua")
-load("/data/general/npcs/ant.lua")
+load("/data/general/npcs/bear.lua", rarity(0))
+load("/data/general/npcs/vermin.lua", rarity(0))
+load("/data/general/npcs/canine.lua", rarity(0))
+load("/data/general/npcs/snake.lua", rarity(0))
+load("/data/general/npcs/swarm.lua", rarity(0))
+load("/data/general/npcs/plant.lua", rarity(0))
+load("/data/general/npcs/ant.lua", rarity(0))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/unremarkable-cave/npcs.lua b/game/modules/tome/data/zones/unremarkable-cave/npcs.lua
index 649b430cbe8b1b6cc5051e4f9085b4434934c111..8d330661f31e3b2c70dc311af94f240e86739b5f 100644
--- a/game/modules/tome/data/zones/unremarkable-cave/npcs.lua
+++ b/game/modules/tome/data/zones/unremarkable-cave/npcs.lua
@@ -17,13 +17,13 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/rodent.lua")
-load("/data/general/npcs/vermin.lua")
-load("/data/general/npcs/molds.lua")
-load("/data/general/npcs/skeleton.lua")
-load("/data/general/npcs/snake.lua")
+load("/data/general/npcs/rodent.lua", rarity(0))
+load("/data/general/npcs/vermin.lua", rarity(0))
+load("/data/general/npcs/molds.lua", rarity(0))
+load("/data/general/npcs/skeleton.lua", rarity(0))
+load("/data/general/npcs/snake.lua", rarity(0))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 10 end end)
+load("/data/general/npcs/all.lua", rarity(0, 10))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/data/zones/vor-pride/npcs.lua b/game/modules/tome/data/zones/vor-pride/npcs.lua
index dd2f85bf1baf8d0c7f9a35cb7ecca24fb11054a5..66df50d324de96f9fd6126f9be7226e174fe32cd 100644
--- a/game/modules/tome/data/zones/vor-pride/npcs.lua
+++ b/game/modules/tome/data/zones/vor-pride/npcs.lua
@@ -17,10 +17,10 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-load("/data/general/npcs/orc.lua", function(e) if e.rarity then e.rarity = e.rarity * 3 end e.make_escort = nil end)
-load("/data/general/npcs/orc-vor.lua")
+load("/data/general/npcs/orc.lua", rarity(3))
+load("/data/general/npcs/orc-vor.lua", rarity(0))
 
-load("/data/general/npcs/all.lua", function(e) if e.rarity then e.rarity = e.rarity * 20 end end)
+load("/data/general/npcs/all.lua", rarity(4, 20))
 
 local Talents = require("engine.interface.ActorTalents")
 
diff --git a/game/modules/tome/dialogs/LevelupStatsDialog.lua b/game/modules/tome/dialogs/LevelupStatsDialog.lua
index c3872053b50e11609c08d5cd6ad6892da684867c..8ddf9a200b2123082e8329e6d52aa0bab3577e16 100644
--- a/game/modules/tome/dialogs/LevelupStatsDialog.lua
+++ b/game/modules/tome/dialogs/LevelupStatsDialog.lua
@@ -93,7 +93,7 @@ function _M:incStat(v)
 			self:simplePopup("Stat is at the maximum for your level", "You can not increase this stat further until next level!")
 			return
 		end
-		if self.actor:isStatMax(self.sel) or self.actor:getStat(self.sel) >= 60 then
+		if self.actor:isStatMax(self.sel) or self.actor:getStat(self.sel, nil, nil, true) >= 60 then
 			self:simplePopup("Stat is at the maximum", "You can not increase this stat further!")
 			return
 		end
diff --git a/ideas/zones.ods b/ideas/zones.ods
index 2864ca623ab89350c9169134930f458fe0c4f454..db56b63b5693b1a272fa4e52b963d50df078d6c5 100644
Binary files a/ideas/zones.ods and b/ideas/zones.ods differ