From 8687e21bc6fff050d07e53007c0a17bdf1acf905 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Tue, 22 Mar 2011 00:51:25 +0000
Subject: [PATCH] Most NPCs now scale better with level, they levelup their
 innate melee damage if they dont use a weapon and they levelup their talents

git-svn-id: http://svn.net-core.org/repos/t-engine4@3039 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/data/general/npcs/ant.lua   |   2 +-
 .../data/general/npcs/aquatic_critter.lua     |   2 +-
 .../tome/data/general/npcs/aquatic_demon.lua  |   2 +-
 game/modules/tome/data/general/npcs/bear.lua  |  10 +-
 game/modules/tome/data/general/npcs/bird.lua  |   2 +-
 .../tome/data/general/npcs/bone-giant.lua     |   8 +-
 .../modules/tome/data/general/npcs/canine.lua |  14 +-
 .../tome/data/general/npcs/crystal.lua        |  12 +-
 .../tome/data/general/npcs/elven-caster.lua   |  38 ++---
 .../tome/data/general/npcs/elven-warrior.lua  |  12 +-
 .../modules/tome/data/general/npcs/faeros.lua |  16 +--
 game/modules/tome/data/general/npcs/ghost.lua |  20 +--
 game/modules/tome/data/general/npcs/ghoul.lua |  28 +++-
 .../tome/data/general/npcs/gwelgoroth.lua     |  16 +--
 .../data/general/npcs/horror-corrupted.lua    |  35 +++--
 .../modules/tome/data/general/npcs/horror.lua | 133 +++++++++---------
 game/modules/tome/data/general/npcs/lich.lua  |   2 +-
 .../tome/data/general/npcs/major-demon.lua    |  54 +++----
 .../tome/data/general/npcs/minor-demon.lua    |  14 +-
 .../tome/data/general/npcs/minotaur.lua       |  12 +-
 game/modules/tome/data/general/npcs/naga.lua  |  28 ++--
 .../tome/data/general/npcs/orc-grushnak.lua   |  66 ++++-----
 .../tome/data/general/npcs/orc-rak-shor.lua   |  20 +--
 .../tome/data/general/npcs/orc-vor.lua        |  51 +++----
 game/modules/tome/data/general/npcs/orc.lua   |  44 ++++--
 game/modules/tome/data/general/npcs/plant.lua |   6 +-
 game/modules/tome/data/general/npcs/ritch.lua |  12 +-
 .../tome/data/general/npcs/sandworm.lua       |  30 ++--
 .../tome/data/general/npcs/skeleton.lua       |  20 +--
 game/modules/tome/data/general/npcs/snake.lua |  14 +-
 .../tome/data/general/npcs/snow-giant.lua     |  10 +-
 .../modules/tome/data/general/npcs/spider.lua |  86 +++++------
 game/modules/tome/data/general/npcs/swarm.lua |   2 +-
 .../tome/data/general/npcs/telugoroth.lua     |  28 ++--
 .../modules/tome/data/general/npcs/thieve.lua |  22 ++-
 game/modules/tome/data/general/npcs/troll.lua |  15 +-
 .../tome/data/general/npcs/vampire.lua        |  12 +-
 game/modules/tome/data/general/npcs/wight.lua |  16 +--
 game/modules/tome/data/general/npcs/xorn.lua  |  22 +--
 game/modules/tome/data/general/npcs/yaech.lua |  18 +--
 .../tome/data/general/npcs/ziguranth.lua      |  46 +++---
 game/modules/tome/resolvers.lua               |   2 +-
 42 files changed, 523 insertions(+), 479 deletions(-)

diff --git a/game/modules/tome/data/general/npcs/ant.lua b/game/modules/tome/data/general/npcs/ant.lua
index f5233c13d6..d5e39e230e 100644
--- a/game/modules/tome/data/general/npcs/ant.lua
+++ b/game/modules/tome/data/general/npcs/ant.lua
@@ -32,7 +32,7 @@ newEntity{
 	stats = { str=12, dex=10, mag=3, con=13 },
 	energy = { mod=1 },
 	combat_armor = 1, combat_def = 1,
-	combat = { dam=5, atk=15, apr=7, dammod={str=0.6} },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(5,5), 1, 1), atk=15, apr=7, dammod={str=0.6} },
 	infravision = 20,
 	max_life = resolvers.rngavg(10,20),
 	rank = 1,
diff --git a/game/modules/tome/data/general/npcs/aquatic_critter.lua b/game/modules/tome/data/general/npcs/aquatic_critter.lua
index 2aabc60bbe..9cf38c93e7 100644
--- a/game/modules/tome/data/general/npcs/aquatic_critter.lua
+++ b/game/modules/tome/data/general/npcs/aquatic_critter.lua
@@ -31,7 +31,7 @@ newEntity{
 	stats = { str=12, dex=10, mag=3, con=13 },
 	energy = { mod=1 },
 	combat_armor = 1, combat_def = 1,
-	combat = { dam=resolvers.mbonus(36, 10), atk=15, apr=7, dammod={str=0.6} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(36, 10), 1, 1), atk=15, apr=7, dammod={str=0.6} },
 	max_life = resolvers.rngavg(10,20), life_rating = 6,
 	infravision = 20,
 	rank = 1,
diff --git a/game/modules/tome/data/general/npcs/aquatic_demon.lua b/game/modules/tome/data/general/npcs/aquatic_demon.lua
index 7d517eb29e..bb56c898da 100644
--- a/game/modules/tome/data/general/npcs/aquatic_demon.lua
+++ b/game/modules/tome/data/general/npcs/aquatic_demon.lua
@@ -32,7 +32,7 @@ newEntity{
 	stats = { str=12, dex=10, mag=3, con=13 },
 	energy = { mod=1 },
 	combat_armor = 1, combat_def = 1,
-	combat = { dam=resolvers.mbonus(46, 20), atk=15, apr=7, dammod={str=0.7} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(46, 20), 1, 1), atk=15, apr=7, dammod={str=0.7} },
 	max_life = resolvers.rngavg(100,120),
 	infravision = 20,
 	demon = 1,
diff --git a/game/modules/tome/data/general/npcs/bear.lua b/game/modules/tome/data/general/npcs/bear.lua
index 055b1b2a0a..9e05479620 100644
--- a/game/modules/tome/data/general/npcs/bear.lua
+++ b/game/modules/tome/data/general/npcs/bear.lua
@@ -38,7 +38,7 @@ newEntity{
 	size_category = 4,
 
 	combat_armor = 1, combat_def = 1,
-	combat = { dam=resolvers.rngavg(12,25), atk=10, apr=3, physspeed=2, dammod={str=0.8} },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(12, 25), 1, 1), atk=10, apr=3, physspeed=2, dammod={str=0.8} },
 	life_rating = 12,
 	resolvers.tmasteries{ ["technique/other"]=0.25 },
 
@@ -72,7 +72,7 @@ newEntity{ base = "BASE_NPC_BEAR",
 	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 },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(13, 17), 1, 1), atk=7, apr=2, physspeed=2 },
 	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_STUN]=2, [Talents.T_KNOCKBACK]=1,},
 }
 
@@ -83,7 +83,7 @@ newEntity{ base = "BASE_NPC_BEAR",
 	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 },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(13, 17), 1, 1), atk=10, apr=3, physspeed=2 },
 	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_STUN]=2, [Talents.T_KNOCKBACK]=1, [Talents.T_DISARM]=3,},
 }
 
@@ -94,7 +94,7 @@ newEntity{ base = "BASE_NPC_BEAR",
 	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 },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(15, 20), 1, 1), atk=10, apr=3, physspeed=2 },
 	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_STUN]=3, [Talents.T_KNOCKBACK]=2, [Talents.T_DISARM]=3,},
 }
 
@@ -105,7 +105,7 @@ newEntity{ base = "BASE_NPC_BEAR",
 	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 },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(15, 20), 1, 1), atk=12, apr=3, physspeed=2 },
 	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_STUN]=3, [Talents.T_KNOCKBACK]=2, [Talents.T_DISARM]=3,},
 	resists = { [DamageType.COLD] = 100, },
 }
diff --git a/game/modules/tome/data/general/npcs/bird.lua b/game/modules/tome/data/general/npcs/bird.lua
index 6f48f26af9..40018d008c 100644
--- a/game/modules/tome/data/general/npcs/bird.lua
+++ b/game/modules/tome/data/general/npcs/bird.lua
@@ -59,7 +59,7 @@ newEntity{ base="BASE_NPC_BIRD", define_as = "NPC_PHOENIX",
 	ai = "tactical",
 
 	stats = { str=20, dex=60, cun=60, mag=30, con=40, wil=40 },
-	combat = { dam=50, atk=50, apr=12, dammod={mag=1.3} },
+	combat = { dam=resolvers.levelup(50, 1, 1), atk=50, apr=12, dammod={mag=1.3} },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
         resolvers.drops{chance=100, nb=1, {unique=true} },
diff --git a/game/modules/tome/data/general/npcs/bone-giant.lua b/game/modules/tome/data/general/npcs/bone-giant.lua
index 31e62e32b8..223fd9838e 100644
--- a/game/modules/tome/data/general/npcs/bone-giant.lua
+++ b/game/modules/tome/data/general/npcs/bone-giant.lua
@@ -25,7 +25,7 @@ newEntity{
 	blood_color = colors.GREY,
 	display = "K", color=colors.WHITE,
 
-	combat = { dam=resolvers.mbonus(45, 20), atk=15, apr=10, dammod={str=0.8} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(45, 20), 1, 1), atk=15, apr=10, dammod={str=0.8} },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 
@@ -62,7 +62,7 @@ newEntity{ base = "BASE_NPC_BONE_GIANT",
 	combat_armor = 20, combat_def = 0,
 	on_melee_hit = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)},
 	melee_project = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)},
-	resolvers.talents{ [Talents.T_BONE_ARMOUR]=3, [Talents.T_STUN]=3, },
+	resolvers.talents{ [Talents.T_BONE_ARMOUR]={base=3, every=10, max=5}, [Talents.T_STUN]={base=3, every=10, max=5}, },
 }
 
 newEntity{ base = "BASE_NPC_BONE_GIANT",
@@ -76,7 +76,7 @@ newEntity{ base = "BASE_NPC_BONE_GIANT",
 	melee_project = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)},
 	autolevel = "warriormage",
 	resists = {all = 50},
-	resolvers.talents{ [Talents.T_BONE_ARMOUR]=5, [Talents.T_STUN]=3, [Talents.T_SKELETON_REASSEMBLE]=5, },
+	resolvers.talents{ [Talents.T_BONE_ARMOUR]={base=5, every=10, max=7}, [Talents.T_STUN]={base=3, every=10, max=5}, [Talents.T_SKELETON_REASSEMBLE]=5, },
 }
 
 newEntity{ base = "BASE_NPC_BONE_GIANT",
@@ -88,5 +88,5 @@ newEntity{ base = "BASE_NPC_BONE_GIANT",
 	combat_armor = 20, combat_def = 0,
 	on_melee_hit = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)},
 	melee_project = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)},
-	resolvers.talents{ [Talents.T_BONE_ARMOUR]=3, [Talents.T_THROW_BONES]=4, [Talents.T_STUN]=3, },
+	resolvers.talents{ [Talents.T_BONE_ARMOUR]={base=3, every=10, max=5}, [Talents.T_THROW_BONES]={base=4, every=10, max=7}, [Talents.T_STUN]={base=3, every=10, max=5}, },
 }
diff --git a/game/modules/tome/data/general/npcs/canine.lua b/game/modules/tome/data/general/npcs/canine.lua
index 0c9331d40c..5b455c1bcb 100644
--- a/game/modules/tome/data/general/npcs/canine.lua
+++ b/game/modules/tome/data/general/npcs/canine.lua
@@ -47,7 +47,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	rarity = 1,
 	max_life = resolvers.rngavg(40,70),
 	combat_armor = 1, combat_def = 3,
-	combat = { dam=5, atk=15, apr=3 },
+	combat = { dam=resolvers.levelup(5, 1, 0.7), atk=15, apr=3 },
 }
 
 newEntity{ base = "BASE_NPC_CANINE",
@@ -57,7 +57,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	rarity = 3,
 	max_life = resolvers.rngavg(60,90),
 	combat_armor =2, combat_def = 4,
-	combat = { dam=6, atk=15, apr=3 },
+	combat = { dam=resolvers.levelup(6, 1, 0.8), atk=15, apr=3 },
 	resolvers.talents{ [Talents.T_HOWL]=1, },
 }
 
@@ -68,7 +68,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	rarity = 3,
 	max_life = resolvers.rngavg(80,110),
 	combat_armor = 3, combat_def = 5,
-	combat = { dam=9, atk=15, apr=4 },
+	combat = { dam=resolvers.levelup(9, 1, 0.9), atk=15, apr=4 },
 	resolvers.talents{ [Talents.T_HOWL]=1, },
 }
 
@@ -79,7 +79,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	rarity = 3,
 	max_life = resolvers.rngavg(70,100),
 	combat_armor = 3, combat_def = 4,
-	combat = { dam=8, atk=15, apr=3 },
+	combat = { dam=resolvers.levelup(8, 1, 0.9), atk=15, apr=3 },
 	resolvers.talents{ [Talents.T_HOWL]=2, },
 
 	resists = { [DamageType.FIRE] = -50, [DamageType.COLD] = 100 },
@@ -92,7 +92,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	rarity = 4,
 	max_life = resolvers.rngavg(60,100),
 	combat_armor = 5, combat_def = 7,
-	combat = { dam=10, atk=17, apr=5 },
+	combat = { dam=resolvers.levelup(10, 1, 1), atk=17, apr=5 },
 	resolvers.talents{ [Talents.T_HOWL]=3, },
 }
 
@@ -103,7 +103,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	rarity = 3,
 	max_life = resolvers.rngavg(40,50),
 	combat_armor = 1, combat_def = 3,
-	combat = { dam=4, atk=10, apr=3 },
+	combat = { dam=resolvers.levelup(4, 1, 0.7), atk=10, apr=3 },
 }
 
 newEntity{ base = "BASE_NPC_CANINE",
@@ -115,7 +115,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	rarity = 50,
 	max_life = 220,
 	combat_armor = 25, combat_def = 0,
-	combat = { dam=20, atk=20, apr=16 },
+	combat = { dam=resolvers.levelup(20, 1, 1.3), atk=20, apr=16 },
 
 	ai = "tactical",
 
diff --git a/game/modules/tome/data/general/npcs/crystal.lua b/game/modules/tome/data/general/npcs/crystal.lua
index 1671d31b35..5ddaf9c2e4 100644
--- a/game/modules/tome/data/general/npcs/crystal.lua
+++ b/game/modules/tome/data/general/npcs/crystal.lua
@@ -77,7 +77,7 @@ newEntity{ base = "BASE_NPC_CRYSTAL",
 	rarity = 1,
 	resists = { [DamageType.FIRE] = 100, [DamageType.ICE] = -100 },
 	resolvers.talents{
-		[Talents.T_FLAME]=1,
+		[Talents.T_FLAME]={base=1, every=7, max=5},
 	}
 }
 
@@ -88,7 +88,7 @@ newEntity{ base = "BASE_NPC_CRYSTAL",
 	rarity = 1,
 	resists = { [DamageType.ICE] = 100, [DamageType.FIRE] = -100 },
 	resolvers.talents{
-		[Talents.T_ICE_SHARDS]=1,
+		[Talents.T_ICE_SHARDS]={base=1, every=7, max=5},
 	}
 }
 
@@ -99,7 +99,7 @@ newEntity{ base = "BASE_NPC_CRYSTAL",
 	rarity = 2,
 	resists = { [DamageType.LIGHT] = 100 ,[DamageType.DARKNESS] = -100 },
 	resolvers.talents{
-		[Talents.T_SOUL_ROT]=1,
+		[Talents.T_SOUL_ROT]={base=1, every=7, max=5},
 	}
 }
 
@@ -110,7 +110,7 @@ newEntity{ base = "BASE_NPC_CRYSTAL",
 	rarity = 3,
 	resists = { [DamageType.LIGHT] = -100 },
 	resolvers.talents{
-		[Talents.T_BLOOD_GRASP]=1,
+		[Talents.T_BLOOD_GRASP]={base=1, every=7, max=5},
 	}
 }
 
@@ -121,7 +121,7 @@ newEntity{ base = "BASE_NPC_CRYSTAL",
 	rarity = 4,
 	resists = { [DamageType.ICE] = -100 },
 	resolvers.talents{
-		[Talents.T_TIDAL_WAVE]=3,
+		[Talents.T_TIDAL_WAVE]={base=3, every=9, max=5},
 	}
 }
 
@@ -133,7 +133,7 @@ newEntity{ base = "BASE_NPC_CRYSTAL",
 	rarity = 4,
 	resists = { [DamageType.LIGHT] = 100 },
 	resolvers.talents{
-		[Talents.T_ELEMENTAL_BOLT]=1,
+		[Talents.T_ELEMENTAL_BOLT]={base=1, every=7, max=5},
 	},
 	talent_cd_reduction={
 		[Talents.T_ELEMENTAL_BOLT]=2,
diff --git a/game/modules/tome/data/general/npcs/elven-caster.lua b/game/modules/tome/data/general/npcs/elven-caster.lua
index 5fc5136e81..41eb3c71fd 100644
--- a/game/modules/tome/data/general/npcs/elven-caster.lua
+++ b/game/modules/tome/data/general/npcs/elven-caster.lua
@@ -62,8 +62,8 @@ newEntity{ base = "BASE_NPC_ELVEN_CASTER",
 	},
 	combat_armor = 0, combat_def = 0,
 	resolvers.talents{
-		[Talents.T_EARTHEN_MISSILES]=2,
-		[Talents.T_SHOCK]=1,
+		[Talents.T_EARTHEN_MISSILES]={base=2, every=8, max=6},
+		[Talents.T_SHOCK]={base=1, every=8, max=5},
 	},
 }
 
@@ -79,8 +79,8 @@ newEntity{ base = "BASE_NPC_ELVEN_CASTER",
 	},
 	combat_armor = 0, combat_def = 0,
 	resolvers.talents{
-		[Talents.T_LIGHTNING]=2,
-		[Talents.T_THUNDERSTORM]=1,
+		[Talents.T_LIGHTNING]={base=2, every=8, max=6},
+		[Talents.T_THUNDERSTORM]={base=1, every=8, max=5},
 	},
 	resolvers.sustains_at_birth(),
 }
@@ -99,11 +99,11 @@ newEntity{ base = "BASE_NPC_ELVEN_CASTER",
 	},
 	combat_armor = 0, combat_def = 0,
 	resolvers.talents{
-		[Talents.T_DARK_PORTAL]=3,
-		[Talents.T_SOUL_ROT]=4,
-		[Talents.T_VIRULENT_DISEASE]=4,
-		[Talents.T_FLAME_OF_URH_ROK]=3,
-		[Talents.T_DARK_RITUAL]=3,
+		[Talents.T_DARK_PORTAL]={base=3, every=7, max=6},
+		[Talents.T_SOUL_ROT]={base=4, every=8, max=6},
+		[Talents.T_VIRULENT_DISEASE]={base=4, every=8, max=6},
+		[Talents.T_FLAME_OF_URH_ROK]={base=3, every=8, max=6},
+		[Talents.T_DARK_RITUAL]={base=3, every=8, max=6},
 	},
 	resolvers.sustains_at_birth(),
 	resolvers.inscriptions(1, "rune"),
@@ -122,11 +122,11 @@ newEntity{ base = "BASE_NPC_ELVEN_CASTER",
 	},
 	combat_armor = 0, combat_def = 0,
 	resolvers.talents{
-		[Talents.T_BLOOD_SPRAY]=4,
-		[Talents.T_BLOOD_GRASP]=4,
-		[Talents.T_BLOOD_BOIL]=3,
-		[Talents.T_BLOOD_FURY]=3,
-		[Talents.T_BONE_SPEAR]=5,
+		[Talents.T_BLOOD_SPRAY]={base=4, every=8, max=7},
+		[Talents.T_BLOOD_GRASP]={base=4, every=8, max=7},
+		[Talents.T_BLOOD_BOIL]={base=3, every=8, max=7},
+		[Talents.T_BLOOD_FURY]={base=3, every=8, max=7},
+		[Talents.T_BONE_SPEAR]={base=5, every=8, max=8},
 	},
 	resolvers.sustains_at_birth(),
 	resolvers.inscriptions(1, "rune"),
@@ -148,11 +148,11 @@ newEntity{ base = "BASE_NPC_ELVEN_CASTER",
 	},
 	combat_armor = 0, combat_def = 0,
 	resolvers.talents{
-		[Talents.T_BONE_SHIELD]=2,
-		[Talents.T_BLOOD_SPRAY]=5,
-		[Talents.T_SOUL_ROT]=5,
-		[Talents.T_BLOOD_GRASP]=4,
-		[Talents.T_BONE_SPEAR]=5,
+		[Talents.T_BONE_SHIELD]={base=2, every=10, max=5},
+		[Talents.T_BLOOD_SPRAY]={base=5, every=10, max=7},
+		[Talents.T_SOUL_ROT]={base=5, every=10, max=7},
+		[Talents.T_BLOOD_GRASP]={base=4, every=10, max=6},
+		[Talents.T_BONE_SPEAR]={base=5, every=10, max=7},
 	},
 	resolvers.sustains_at_birth(),
 	resolvers.inscriptions(1, "rune"),
diff --git a/game/modules/tome/data/general/npcs/elven-warrior.lua b/game/modules/tome/data/general/npcs/elven-warrior.lua
index 9689b58680..d42e9aac4d 100644
--- a/game/modules/tome/data/general/npcs/elven-warrior.lua
+++ b/game/modules/tome/data/general/npcs/elven-warrior.lua
@@ -42,7 +42,7 @@ newEntity{
 	open_door = true,
 
 	resolvers.racial(),
-	resolvers.talents{ [Talents.T_HEAVY_ARMOUR_TRAINING]=1, },
+	resolvers.talents{ [Talents.T_HEAVY_ARMOUR_TRAINING]=1, [Talents.T_WEAPON_COMBAT]={base=1, every=5, max=10}, [Talents.T_WEAPONS_MASTERY]={base=1, every=5, max=10} },
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
@@ -61,7 +61,7 @@ newEntity{ base = "BASE_NPC_ELVEN_WARRIOR",
 		{type="armor", subtype="shield", autoreq=true},
 	},
 	combat_armor = 0, combat_def = 6,
-	resolvers.talents{ [Talents.T_SHIELD_PUMMEL]=1, },
+	resolvers.talents{ [Talents.T_SHIELD_PUMMEL]={base=1, every=10, max=5}, },
 }
 
 newEntity{ base = "BASE_NPC_ELVEN_WARRIOR",
@@ -75,7 +75,7 @@ newEntity{ base = "BASE_NPC_ELVEN_WARRIOR",
 		{type="armor", subtype="shield", autoreq=true},
 	},
 	combat_armor = 0, combat_def = 6,
-	resolvers.talents{ [Talents.T_BLEEDING_EDGE]=1, },
+	resolvers.talents{ [Talents.T_BLEEDING_EDGE]={base=1, every=10, max=5}, },
 }
 
 newEntity{ base = "BASE_NPC_ELVEN_WARRIOR",
@@ -90,7 +90,7 @@ newEntity{ base = "BASE_NPC_ELVEN_WARRIOR",
 		{type="armor", subtype="heavy", autoreq=true},
 	},
 	combat_armor = 0, combat_def = 6,
-	resolvers.talents{ [Talents.T_SHIELD_PUMMEL]=2, },
+	resolvers.talents{ [Talents.T_SHIELD_PUMMEL]={base=2, every=10, max=6}, },
 	resolvers.inscriptions(1, "rune"),
 }
 
@@ -110,8 +110,8 @@ newEntity{ base = "BASE_NPC_ELVEN_WARRIOR",
 	},
 	combat_armor = 0, combat_def = 6,
 	resolvers.talents{
-		[Talents.T_SHIELD_PUMMEL]=2,
-		[Talents.T_ASSAULT]=3,
+		[Talents.T_SHIELD_PUMMEL]={base=2, every=10, max=7},
+		[Talents.T_ASSAULT]={base=3, every=7, max=7},
 	},
 	resolvers.inscriptions(1, "rune"),
 }
diff --git a/game/modules/tome/data/general/npcs/faeros.lua b/game/modules/tome/data/general/npcs/faeros.lua
index 315b64b5d3..0bc89774ba 100644
--- a/game/modules/tome/data/general/npcs/faeros.lua
+++ b/game/modules/tome/data/general/npcs/faeros.lua
@@ -25,7 +25,7 @@ newEntity{
 	blood_color = colors.ORANGE,
 	display = "E", color=colors.ORANGE,
 
-	combat = { dam=resolvers.mbonus(40, 15), atk=15, apr=15, dammod={mag=0.8}, damtype=DamageType.FIRE },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(40, 15), 1, 1.2), atk=15, apr=15, dammod={mag=0.8}, damtype=DamageType.FIRE },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	lite = 1,
@@ -57,7 +57,7 @@ newEntity{ base = "BASE_NPC_FAEROS",
 	on_melee_hit = { [DamageType.FIRE] = resolvers.mbonus(20, 10), },
 
 	resolvers.talents{
-		[Talents.T_FLAME]=3,
+		[Talents.T_FLAME]={base=3, every=10, max=7},
 	},
 }
 
@@ -71,8 +71,8 @@ newEntity{ base = "BASE_NPC_FAEROS",
 	on_melee_hit = { [DamageType.FIRE] = resolvers.mbonus(20, 10), },
 
 	resolvers.talents{
-		[Talents.T_FLAME]=4,
-		[Talents.T_FIERY_HANDS]=3,
+		[Talents.T_FLAME]={base=4, every=10, max=8},
+		[Talents.T_FIERY_HANDS]={base=3, every=10, max=7},
 	},
 	resolvers.sustains_at_birth(),
 }
@@ -90,10 +90,10 @@ newEntity{ base = "BASE_NPC_FAEROS",
 	ai = "tactical",
 
 	resolvers.talents{
-		[Talents.T_FLAME]=4,
-		[Talents.T_FIERY_HANDS]=3,
-		[Talents.T_FLAMESHOCK]=3,
-		[Talents.T_INFERNO]=3,
+		[Talents.T_FLAME]={base=4, every=7},
+		[Talents.T_FIERY_HANDS]={base=3, every=7},
+		[Talents.T_FLAMESHOCK]={base=3, every=7},
+		[Talents.T_INFERNO]={base=3, every=7},
 	},
 	resolvers.sustains_at_birth(),
 }
diff --git a/game/modules/tome/data/general/npcs/ghost.lua b/game/modules/tome/data/general/npcs/ghost.lua
index 39149cf76c..ebeb06101f 100644
--- a/game/modules/tome/data/general/npcs/ghost.lua
+++ b/game/modules/tome/data/general/npcs/ghost.lua
@@ -67,8 +67,8 @@ newEntity{ base = "BASE_NPC_GHOST",
 	combat = { dam=resolvers.mbonus(45, 45), atk=resolvers.mbonus(25, 45), apr=100, dammod={str=0.5, mag=0.5} },
 
 	resolvers.talents{
-		[Talents.T_BURNING_HEX]=3,
-		[Talents.T_BLUR_SIGHT]=4,
+		[Talents.T_BURNING_HEX]={base=3, every=5, max=7},
+		[Talents.T_BLUR_SIGHT]={base=4, every=6, max=8},
 	},
 }
 
@@ -91,11 +91,11 @@ newEntity{ base = "BASE_NPC_GHOST",
 	resolvers.talents{
 		[Talents.T_SUMMON]=1,
 		[Talents.T_PHASE_DOOR]=2,
-		[Talents.T_BLUR_SIGHT]=4,
-		[Talents.T_DISPERSE_MAGIC]=3,
-		[Talents.T_SILENCE]=2,
-		[Talents.T_MIND_DISRUPTION]=3,
-		[Talents.T_BURNING_HEX]=5,
+		[Talents.T_BLUR_SIGHT]={base=4, every=6, max=8},
+		[Talents.T_DISPERSE_MAGIC]={base=3, every=7, max=6},
+		[Talents.T_SILENCE]={base=2, every=10, max=6},
+		[Talents.T_MIND_DISRUPTION]={base=3, every=7, max=8},
+		[Talents.T_BURNING_HEX]={base=5, every=6, max=8},
 	},
 }
 
@@ -114,8 +114,8 @@ newEntity{ base = "BASE_NPC_GHOST",
 	resolvers.talents{
 		[Talents.T_SHRIEK]=4,
 		[Talents.T_PHASE_DOOR]=2,
-		[Talents.T_BLUR_SIGHT]=3,
-		[Talents.T_SILENCE]=2,
-		[Talents.T_MIND_DISRUPTION]=3,
+		[Talents.T_BLUR_SIGHT]={base=3, every=6, max=6},
+		[Talents.T_SILENCE]={base=2, every=10, max=5},
+		[Talents.T_MIND_DISRUPTION]={base=3, every=7, max=6},
 	},
 }
diff --git a/game/modules/tome/data/general/npcs/ghoul.lua b/game/modules/tome/data/general/npcs/ghoul.lua
index 7bcaa544b6..b19c8e3b39 100644
--- a/game/modules/tome/data/general/npcs/ghoul.lua
+++ b/game/modules/tome/data/general/npcs/ghoul.lua
@@ -53,10 +53,14 @@ newEntity{ base = "BASE_NPC_GHOUL",
 	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, },
+	resolvers.talents{
+		[Talents.T_STUN]={base=1, every=10, max=5},
+		[Talents.T_BITE_POISON]={base=1, every=10, max=5},
+		[Talents.T_ROTTING_DISEASE]={base=1, every=10, max=5},
+	},
 	ai_state = { talent_in=4, },
 
-	combat = { dam=10, atk=5, apr=3, dammod={str=0.6} },
+	combat = { dam=resolvers.levelup(10, 1, 1), atk=resolvers.levelup(5, 1, 1), apr=3, dammod={str=0.6} },
 }
 
 newEntity{ base = "BASE_NPC_GHOUL",
@@ -68,10 +72,16 @@ newEntity{ base = "BASE_NPC_GHOUL",
 	combat_armor = 2, combat_def = 8,
 	ai_state = { talent_in=3, },
 
-	combat = { dam=17, atk=6, apr=3, dammod={str=0.6} },
+	combat = { dam=resolvers.levelup(17, 1, 1.1), atk=resolvers.levelup(6, 1, 1), apr=3, dammod={str=0.6} },
 
 	summon = {{type="undead", subtype="ghoul", name="ghoul", number=1, hasxp=false}, },
-	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_STUN]=2, [Talents.T_BITE_POISON]=2,  [Talents.T_SUMMON]=1, [Talents.T_ROTTING_DISEASE]=2, [Talents.T_DECREPITUDE_DISEASE]=2, },
+	resolvers.talents{
+		[Talents.T_STUN]={base=2, every=9, max=5},
+		[Talents.T_BITE_POISON]={base=2, every=9, max=5},
+		[Talents.T_SUMMON]=1,
+		[Talents.T_ROTTING_DISEASE]={base=2, every=9, max=5},
+		[Talents.T_DECREPITUDE_DISEASE]={base=2, every=9, max=5},
+	},
 }
 
 newEntity{ base = "BASE_NPC_GHOUL",
@@ -88,7 +98,7 @@ newEntity{ base = "BASE_NPC_GHOUL",
 	ai = "tactical",
 	ai_tactic = resolvers.tactic"melee",
 
-	combat = { dam=30, atk=8, apr=4, dammod={str=0.6} },
+	combat = { dam=resolvers.levelup(30, 1, 1.2), atk=resolvers.levelup(8, 1, 1), apr=4, dammod={str=0.6} },
 
 	summon = {
 		{type="undead", subtype="ghoul", name="ghoul", number=1, hasxp=false},
@@ -96,7 +106,11 @@ newEntity{ base = "BASE_NPC_GHOUL",
 	},
 
 	resolvers.talents{
-		[Talents.T_STAMINA_POOL]=1, [Talents.T_STUN]=3, [Talents.T_BITE_POISON]=3,  [Talents.T_SUMMON]=1,
-		[Talents.T_ROTTING_DISEASE]=4, [Talents.T_DECREPITUDE_DISEASE]=3, [Talents.T_WEAKNESS_DISEASE]=3,
+		[Talents.T_STUN]={base=3, every=9, max=7},
+		[Talents.T_BITE_POISON]={base=3, every=9, max=7},
+		[Talents.T_SUMMON]=1,
+		[Talents.T_ROTTING_DISEASE]={base=4, every=9, max=7},
+		[Talents.T_DECREPITUDE_DISEASE]={base=3, every=9, max=7},
+		[Talents.T_WEAKNESS_DISEASE]={base=3, every=9, max=7},
 	},
 }
diff --git a/game/modules/tome/data/general/npcs/gwelgoroth.lua b/game/modules/tome/data/general/npcs/gwelgoroth.lua
index a413f0f9f7..bd259407b8 100644
--- a/game/modules/tome/data/general/npcs/gwelgoroth.lua
+++ b/game/modules/tome/data/general/npcs/gwelgoroth.lua
@@ -25,7 +25,7 @@ newEntity{
 	blood_color = colors.AQUAMARINE,
 	display = "E", color=colors.AQUAMARINE,
 
-	combat = { dam=resolvers.mbonus(40, 15), atk=15, apr=15, dammod={mag=0.8}, damtype=DamageType.LIGHTNING },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(40, 15), 1, 1.2), atk=15, apr=15, dammod={mag=0.8}, damtype=DamageType.LIGHTNING },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 
@@ -56,7 +56,7 @@ newEntity{ base = "BASE_NPC_GWELGOROTH",
 	on_melee_hit = { [DamageType.LIGHTNING] = resolvers.mbonus(20, 10), },
 
 	resolvers.talents{
-		[Talents.T_LIGHTNING]=3,
+		[Talents.T_LIGHTNING]={base=3, every=10, max=7},
 	},
 }
 
@@ -70,8 +70,8 @@ newEntity{ base = "BASE_NPC_GWELGOROTH",
 	on_melee_hit = { [DamageType.LIGHTNING] = resolvers.mbonus(20, 10), },
 
 	resolvers.talents{
-		[Talents.T_LIGHTNING]=4,
-		[Talents.T_SHOCK]=3,
+		[Talents.T_LIGHTNING]={base=4, every=10, max=8},
+		[Talents.T_SHOCK]={base=3, every=10, max=7},
 	},
 	resolvers.sustains_at_birth(),
 }
@@ -89,10 +89,10 @@ newEntity{ base = "BASE_NPC_GWELGOROTH",
 	ai = "tactical",
 
 	resolvers.talents{
-		[Talents.T_LIGHTNING]=5,
-		[Talents.T_SHOCK]=4,
-		[Talents.T_HURRICANE]=3,
-		[Talents.T_CHAIN_LIGHTNING]=4,
+		[Talents.T_LIGHTNING]={base=4, every=7},
+		[Talents.T_SHOCK]={base=4, every=7},
+		[Talents.T_HURRICANE]={base=3, every=7},
+		[Talents.T_CHAIN_LIGHTNING]={base=3, every=7},
 	},
 	resolvers.sustains_at_birth(),
 }
diff --git a/game/modules/tome/data/general/npcs/horror-corrupted.lua b/game/modules/tome/data/general/npcs/horror-corrupted.lua
index 5dc0deef0b..79c14edd30 100644
--- a/game/modules/tome/data/general/npcs/horror-corrupted.lua
+++ b/game/modules/tome/data/general/npcs/horror-corrupted.lua
@@ -69,7 +69,7 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	},
 
 	resolvers.talents{
-		[Talents.T_DWARF_RESILIENCE]=1,
+		[Talents.T_DWARF_RESILIENCE]={base=1, every=5, max=5},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -104,9 +104,8 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	resolvers.drops{chance=60, nb=1, {type="money"} },
 
 	resolvers.talents{
-		[Talents.T_CARBON_SPIKES]=3,
-		[Talents.T_STAMINA_POOL]=1,
-		[Talents.T_STUN]=1,
+		[Talents.T_CARBON_SPIKES]={base=3, every=7, max=6},
+		[Talents.T_STUN]={base=1, every=10, max=5},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -148,9 +147,9 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	},
 
 	resolvers.talents{
-		[Talents.T_DWARF_RESILIENCE]=1,
-		[Talents.T_DREDGE_FRENZY]=3,
-		[Talents.T_DOMINATE]=1,
+		[Talents.T_DWARF_RESILIENCE]={base=1, every=5, max=5},
+		[Talents.T_DREDGE_FRENZY]={base=3, every=10, max=5},
+		[Talents.T_DOMINATE]={base=1, every=5, max=5},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -178,9 +177,9 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	resists = { [DamageType.BLIGHT] = 50, [DamageType.DARKNESS] = 20,  [DamageType.LIGHT] = - 20 },
 
 	resolvers.talents{
-		[Talents.T_SPIT_BLIGHT]=1,
-		[Talents.T_SHRIEK]=1,
-		[Talents.T_GLOOM]=1,
+		[Talents.T_SPIT_BLIGHT]={base=1, every=5, max=5},
+		[Talents.T_SHRIEK]={base=1, every=5, max=5},
+		[Talents.T_GLOOM]={base=1, every=5, max=5},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -191,7 +190,7 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	desc = "A large sluglike creature that moves slowly, leaving a trail of acid in its wake.  Its head has strangely humanoid features.",
 	level_range = {2, nil}, exp_worth = 1,
 
-	combat = { dam=5, atk=15, apr=5, damtype=DamageType.ACID },
+	combat = { dam=resolvers.levelup(5, 1, 0.6), atk=15, apr=5, damtype=DamageType.ACID },
 	combat_armor = 6, combat_def = 0,
 	max_life = resolvers.rngavg(40, 60),
 
@@ -203,12 +202,12 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	energy = { mod=0.8 },
 
 	resists = { [DamageType.ACID] = 50, [DamageType.DARKNESS] = 20,  [DamageType.LIGHT] = - 20 },
-	
+
 	clone_on_hit = {min_dam_pct=15, chance=30},
 
 	resolvers.talents{
-		[Talents.T_CRAWL_ACID]=2,
-		[Talents.T_ACID_BLOOD]=1,
+		[Talents.T_CRAWL_ACID]={base=2, every=5, max=5},
+		[Talents.T_ACID_BLOOD]={base=1, every=5, max=5},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -235,10 +234,10 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	resists = { [DamageType.DARKNESS] = 50,  [DamageType.LIGHT] = - 20 },
 
 	resolvers.talents{
-		[Talents.T_CALL_SHADOWS]=3,
-		[Talents.T_CREEPING_DARKNESS]=2,
-		[Talents.T_DARK_TORRENT]=1,
+		[Talents.T_CALL_SHADOWS]={base=3, every=6, max=7},
+		[Talents.T_CREEPING_DARKNESS]={base=2, every=5, max=5},
+		[Talents.T_DARK_TORRENT]={base=1, every=5, max=5},
 	},
 
 	resolvers.sustains_at_birth(),
-}
\ No newline at end of file
+}
diff --git a/game/modules/tome/data/general/npcs/horror.lua b/game/modules/tome/data/general/npcs/horror.lua
index e01399cc82..7195236248 100644
--- a/game/modules/tome/data/general/npcs/horror.lua
+++ b/game/modules/tome/data/general/npcs/horror.lua
@@ -70,17 +70,17 @@ newEntity{ base = "BASE_NPC_HORROR",
 	},
 
 	resolvers.talents{
-		[Talents.T_BONE_GRAB]=4,
-		[Talents.T_DRAIN]=5,
-		[Talents.T_CORRUPTED_STRENGTH]=3,
-		[Talents.T_VIRULENT_DISEASE]=3,
-		[Talents.T_CURSE_OF_DEATH]=5,
-		[Talents.T_REND]=4,
-		[Talents.T_BLOODLUST]=3,
-		[Talents.T_RUIN]=2,
-
-		[Talents.T_WEAPON_COMBAT]=5,
-		[Talents.T_WEAPONS_MASTERY]=3,
+		[Talents.T_BONE_GRAB]={base=4, every=10},
+		[Talents.T_DRAIN]={base=5, every=12},
+		[Talents.T_CORRUPTED_STRENGTH]={base=3, every=15},
+		[Talents.T_VIRULENT_DISEASE]={base=3, every=12},
+		[Talents.T_CURSE_OF_DEATH]={base=5, every=15},
+		[Talents.T_REND]={base=4, every=12},
+		[Talents.T_BLOODLUST]={base=3, every=12},
+		[Talents.T_RUIN]={base=2, every=12},
+
+		[Talents.T_WEAPON_COMBAT]={base=5, every=10, max=10},
+		[Talents.T_WEAPONS_MASTERY]={base=3, every=10, max=10},
 	},
 	resolvers.sustains_at_birth(),
 
@@ -101,18 +101,18 @@ newEntity{ base = "BASE_NPC_HORROR",
 	size_category = 4,
 	autolevel = "caster",
 	combat_armor = 1, combat_def = 0,
-	combat = {dam=resolvers.mbonus(25, 15), apr=0, atk=resolvers.mbonus(30, 15), dammod={mag=0.6}},
+	combat = {dam=resolvers.levelup(resolvers.mbonus(25, 15), 1, 1.1), apr=0, atk=resolvers.mbonus(30, 15), dammod={mag=0.6}},
 
 	never_move = 1,
 
 	resists = {all = 35, [DamageType.LIGHT] = -30},
 
 	resolvers.talents{
-		[Talents.T_FEATHER_WIND]=5,
+		[Talents.T_FEATHER_WIND]={base=5, every=10, max=10},
 		[Talents.T_PHASE_DOOR]=2,
-		[Talents.T_MIND_DISRUPTION]=4,
-		[Talents.T_MIND_SEAR]=4,
-		[Talents.T_TELEKINETIC_BLAST]=4,
+		[Talents.T_MIND_DISRUPTION]={base=4, every=14, max=7},
+		[Talents.T_MIND_SEAR]={base=4, every=14, max=7},
+		[Talents.T_TELEKINETIC_BLAST]={base=4, every=14, max=7},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -129,7 +129,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	autolevel = "warriormage",
 	stats = { str=15, dex=20, mag=20, wil=20, con=15 },
 	combat_armor = 1, combat_def = 10,
-	combat = { dam=20, atk=20, apr=50, dammod={str=0.6}, damtype=DamageType.DARKNESS},
+	combat = { dam=resolvers.levelup(20, 1, 1.1), atk=20, apr=50, dammod={str=0.6}, damtype=DamageType.DARKNESS},
 
 	ai = "tactical", ai_state = { ai_target="target_player_radius", sense_radius=40, talent_in=2, },
 
@@ -141,15 +141,15 @@ newEntity{ base = "BASE_NPC_HORROR",
 	no_breath = 1,
 
 	resolvers.talents{
-		[Talents.T_STALK]=5,
-		[Talents.T_GLOOM]=3,
-		[Talents.T_WEAKNESS]=3,
-		[Talents.T_TORMENT]=3,
-		[Talents.T_DOMINATE]=3,
-		[Talents.T_BLINDSIDE]=3,
-		[Talents.T_LIFE_LEECH]=5,
-		[Talents.T_SHADOW_BLAST]=4,
-		[Talents.T_HYMN_OF_SHADOWS]=3,
+		[Talents.T_STALK]={base=5, every=12, max=8},
+		[Talents.T_GLOOM]={base=3, every=12, max=8},
+		[Talents.T_WEAKNESS]={base=3, every=12, max=8},
+		[Talents.T_TORMENT]={base=3, every=12, max=8},
+		[Talents.T_DOMINATE]={base=3, every=12, max=8},
+		[Talents.T_BLINDSIDE]={base=3, every=12, max=8},
+		[Talents.T_LIFE_LEECH]={base=5, every=12, max=9},
+		[Talents.T_SHADOW_BLAST]={base=4, every=8, max=8},
+		[Talents.T_HYMN_OF_SHADOWS]={base=3, every=9, max=8},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -177,8 +177,8 @@ newEntity{ base = "BASE_NPC_HORROR",
 	--blind= 1,
 
 	resolvers.talents{
-		[Talents.T_MANA_CLASH]=5,
-		[Talents.T_GRAB]=5,
+		[Talents.T_MANA_CLASH]={base=4, every=5, max=8},
+		[Talents.T_GRAB]={base=4, every=6, max=8},
 	},
 
 	-- Add eyes
@@ -376,12 +376,12 @@ newEntity{ base = "BASE_NPC_HORROR",
 	see_invisible = 10,
 
 	resolvers.talents{
-		[Talents.T_CHANT_OF_FORTITUDE]=3,
-		[Talents.T_SEARING_LIGHT]=3,
-		[Talents.T_FIREBEAM]=3,
-		[Talents.T_PROVIDENCE]=3,
-		[Talents.T_HEALING_LIGHT]=3,
-		[Talents.T_BARRIER]=3,
+		[Talents.T_CHANT_OF_FORTITUDE]={base=3, every=10, max=6},
+		[Talents.T_SEARING_LIGHT]={base=3, every=10, max=6},
+		[Talents.T_FIREBEAM]={base=3, every=10, max=6},
+		[Talents.T_PROVIDENCE]={base=3, every=10, max=6},
+		[Talents.T_HEALING_LIGHT]={base=3, every=10, max=6},
+		[Talents.T_BARRIER]={base=3, every=10, max=6},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -410,15 +410,15 @@ newEntity{ base = "BASE_NPC_HORROR",
 	see_invisible = 20,
 
 	resolvers.talents{
-		[Talents.T_CHANT_OF_FORTITUDE]=10,
-		[Talents.T_CIRCLE_OF_BLAZING_LIGHT]=10,
-		[Talents.T_SEARING_LIGHT]=10,
-		[Talents.T_FIREBEAM]=10,
-		[Talents.T_SUNBURST]=10,
-		[Talents.T_SUN_FLARE]=10,
-		[Talents.T_PROVIDENCE]=10,
-		[Talents.T_HEALING_LIGHT]=10,
-		[Talents.T_BARRIER]=10,
+		[Talents.T_CHANT_OF_FORTITUDE]={base=10, every=15},
+		[Talents.T_CIRCLE_OF_BLAZING_LIGHT]={base=10, every=15},
+		[Talents.T_SEARING_LIGHT]={base=10, every=15},
+		[Talents.T_FIREBEAM]={base=10, every=15},
+		[Talents.T_SUNBURST]={base=10, every=15},
+		[Talents.T_SUN_FLARE]={base=10, every=15},
+		[Talents.T_PROVIDENCE]={base=10, every=15},
+		[Talents.T_HEALING_LIGHT]={base=10, every=15},
+		[Talents.T_BARRIER]={base=10, every=15},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -441,14 +441,9 @@ newEntity{ base = "BASE_NPC_HORROR",
 	autolevel = "warrior",
 	max_life = resolvers.rngavg(50, 80),
 	combat_armor = 1, combat_def = 10,
-	combat = { dam=resolvers.rngavg(20,30), atk=resolvers.rngavg(10,20), apr=5, dammod={str=1} },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(20,30), 1, 1.2), atk=resolvers.rngavg(10,20), apr=5, dammod={str=1} },
 
 	resists = { [DamageType.TEMPORAL] = 5},
-
-	resolvers.talents{
-	},
-
-	resolvers.sustains_at_birth(),
 }
 
 newEntity{ base = "BASE_NPC_HORROR",
@@ -463,12 +458,12 @@ newEntity{ base = "BASE_NPC_HORROR",
 	autolevel = "warriormage",
 	max_life = resolvers.rngavg(50, 80),
 	combat_armor = 1, combat_def = 10,
-	combat = { dam=resolvers.rngavg(15,20), atk=resolvers.rngavg(5,15), apr=5, dammod={str=1} },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(15,20), 1, 1.1), atk=resolvers.rngavg(5,15), apr=5, dammod={str=1} },
 
 	resists = { [DamageType.TEMPORAL] = 5},
 
 	resolvers.talents{
-		[Talents.T_DUST_TO_DUST]=1,
+		[Talents.T_DUST_TO_DUST]={base=1, every=7, max=5},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -487,13 +482,13 @@ newEntity{ base = "BASE_NPC_HORROR",
 	max_life = resolvers.rngavg(120, 150),
 	energy = { mod=0.7 },
 	combat_armor = 1, combat_def = 0,
-	combat = { dam=resolvers.rngavg(25,150), atk=resolvers.rngavg(25,130), apr=1, dammod={str=1.1} },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(25,150), 1, 1.2), atk=resolvers.rngavg(25,130), apr=1, dammod={str=1.1} },
 
 	resists = {all = 10, [DamageType.TEMPORAL] = 50, [DamageType.PHYSICAL] = 25},
 
 	resolvers.talents{
-		[Talents.T_STUN]=3,
-		[Talents.T_SPEED_SAP]=2,
+		[Talents.T_STUN]={base=3, every=7, max=7},
+		[Talents.T_SPEED_SAP]={base=2, every=7, max=6},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -520,8 +515,8 @@ newEntity{ base = "BASE_NPC_HORROR",
 	},
 
 	resolvers.talents{
-		[Talents.T_DREDGE_FRENZY]=5,
-		[Talents.T_SPEED_SAP]=3,
+		[Talents.T_DREDGE_FRENZY]={base=5, every=7, max=9},
+		[Talents.T_SPEED_SAP]={base=3, every=7, max=9},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -539,16 +534,16 @@ newEntity{ base = "BASE_NPC_HORROR",
 	autolevel = "rogue",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
 	combat_armor = 10, combat_def = 10,
-	combat = { dam=resolvers.rngavg(25,100), atk=resolvers.rngavg(25,100), apr=25, dammod={dex=1.1} },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(25,100), 1, 1.2), atk=resolvers.rngavg(25,100), apr=25, dammod={dex=1.1} },
 
 	resists = {all = 10, [DamageType.TEMPORAL] = 50},
 
 	resolvers.talents{
-		[Talents.T_PERFECT_AIM]=3,
-		[Talents.T_FORESIGHT]=5,
-		[Talents.T_STEALTH]=3,
-		[Talents.T_SHADOWSTRIKE]=3,
-		[Talents.T_UNSEEN_ACTIONS]=3,
+		[Talents.T_PERFECT_AIM]={base=3, every=7, max=5},
+		[Talents.T_FORESIGHT]={base=5, every=7, max=8},
+		[Talents.T_STEALTH]={base=3, every=7, max=5},
+		[Talents.T_SHADOWSTRIKE]={base=3, every=7, max=5},
+		[Talents.T_UNSEEN_ACTIONS]={base=3, every=7, max=5},
 	},
 
 	resolvers.sustains_at_birth(),
@@ -571,8 +566,8 @@ newEntity{ base = "BASE_NPC_HORROR",
 	resists = {[DamageType.TEMPORAL] = 50},
 
 	resolvers.talents{
-		[Talents.T_DISPERSE_MAGIC]=3,
-		[Talents.T_ENTROPIC_FIELD]=3,
+		[Talents.T_DISPERSE_MAGIC]={base=3, every=7, max=5},
+		[Talents.T_ENTROPIC_FIELD]={base=3, every=7, max=5},
 	},
 	-- Random Anomaly on Death
 	on_die = function(self, who)
@@ -608,7 +603,7 @@ You can discern a huge round mouth covered in razor-sharp teeth.]],
 	stun_immune = 1,
 	knockback_immune = 1,
 
-	combat = { dam=resolvers.mbonus(100, 15), atk=500, apr=0, dammod={str=1.2} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(100, 15), 1, 1), atk=500, apr=0, dammod={str=1.2} },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 		  resolvers.drops{chance=100, nb=1, {unique=true} },
@@ -617,10 +612,10 @@ You can discern a huge round mouth covered in razor-sharp teeth.]],
 	resists = { all=500 },
 
 	resolvers.talents{
-		[Talents.T_STARFALL]=4,
-		[Talents.T_MOONLIGHT_RAY]=4,
-		[Talents.T_PACIFICATION_HEX]=4,
-		[Talents.T_BURNING_HEX]=4,
+		[Talents.T_STARFALL]={base=4, every=7},
+		[Talents.T_MOONLIGHT_RAY]={base=4, every=7},
+		[Talents.T_PACIFICATION_HEX]={base=4, every=7},
+		[Talents.T_BURNING_HEX]={base=4, every=7},
 	},
 	resolvers.sustains_at_birth(),
 
diff --git a/game/modules/tome/data/general/npcs/lich.lua b/game/modules/tome/data/general/npcs/lich.lua
index b4af9141dc..30b9c8ecca 100644
--- a/game/modules/tome/data/general/npcs/lich.lua
+++ b/game/modules/tome/data/general/npcs/lich.lua
@@ -28,7 +28,7 @@ newEntity{
 
 	combat = { dam=resolvers.rngavg(16,27), atk=16, apr=9, damtype=DamageType.DARKSTUN, dammod={mag=0.9} },
 
-	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
+	body = { INVEN = 10, MAINHAND = 1, OFFHAND = 1, FINGER = 2, NECK = 1, LITE = 1, BODY = 1, HEAD = 1, CLOAK = 1, HANDS = 1, BELT = 1, FEET = 1},
 	equipment = resolvers.equip{
 		{type="armor", subtype="cloth", ego_chance=75, autoreq=true},
 		{type="armor", subtype="head", ego_chance=75, autoreq=true},
diff --git a/game/modules/tome/data/general/npcs/major-demon.lua b/game/modules/tome/data/general/npcs/major-demon.lua
index 2d0b5afbe9..be0dd34510 100644
--- a/game/modules/tome/data/general/npcs/major-demon.lua
+++ b/game/modules/tome/data/general/npcs/major-demon.lua
@@ -53,7 +53,7 @@ newEntity{ base = "BASE_NPC_MAJOR_DEMON",
 	rank = 2,
 	autolevel = "warrior",
 	combat_armor = 26, combat_def = 0,
-	combat = { dam=resolvers.mbonus(56, 30), atk=35, apr=18, dammod={str=1}, damtype=DamageType.ACID },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(56, 30), 1, 1), atk=35, apr=18, dammod={str=1}, damtype=DamageType.ACID },
 
 	resists={[DamageType.ACID] = resolvers.mbonus(30, 20)},
 
@@ -61,8 +61,8 @@ newEntity{ base = "BASE_NPC_MAJOR_DEMON",
 	stun_immune = 1,
 
 	resolvers.talents{
-		[Talents.T_ACIDIC_SKIN]=5,
-		[Talents.T_SLIME_SPIT]=4,
+		[Talents.T_ACIDIC_SKIN]={base=5, every=5, max=10},
+		[Talents.T_SLIME_SPIT]={base=4, every=5, max=8},
 	},
 }
 
@@ -75,7 +75,7 @@ newEntity{ base = "BASE_NPC_MAJOR_DEMON",
 	rank = 2,
 	autolevel = "warrior",
 	combat_armor = 0, combat_def = 26,
-	combat = { dam=resolvers.mbonus(46, 30), atk=35, apr=18, dammod={str=1}, damtype=DamageType.DARKNESS },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(46, 30), 1, 1), atk=35, apr=18, dammod={str=1}, damtype=DamageType.DARKNESS },
 
 	resists={[DamageType.DARKNESS] = resolvers.mbonus(30, 20)},
 
@@ -83,8 +83,8 @@ newEntity{ base = "BASE_NPC_MAJOR_DEMON",
 	disease_immune = 1,
 
 	resolvers.talents{
-		[Talents.T_DARKNESS]=3,
-		[Talents.T_BLOOD_GRASP]=5,
+		[Talents.T_DARKNESS]={base=3, every=5, max=8},
+		[Talents.T_BLOOD_GRASP]={base=5, every=5, max=10},
 	},
 }
 
@@ -111,12 +111,12 @@ Oh, and it is twice as big, too.]],
 	stun_immune = 1,
 
 	resolvers.talents{
-		[Talents.T_DISARM]=3,
-		[Talents.T_RUSH]=5,
+		[Talents.T_DISARM]={base=3, every=7, max=6},
+		[Talents.T_RUSH]={base=5, every=15, max=7},
 		[Talents.T_BATTLE_CALL]=5,
-		[Talents.T_WEAPON_COMBAT]=8,
-		[Talents.T_WEAPONS_MASTERY]=10,
-		[Talents.T_FIRE_STORM]=5,
+		[Talents.T_WEAPON_COMBAT]={base=8, every=8},
+		[Talents.T_WEAPONS_MASTERY]={base=10, every=7},
+		[Talents.T_FIRE_STORM]={base=5, every=6, max=10},
 	},
 }
 
@@ -140,13 +140,13 @@ newEntity{ base = "BASE_NPC_MAJOR_DEMON",
 	blind_immune = 1,
 
 	resolvers.talents{
-		[Talents.T_MANATHRUST]=5,
-		[Talents.T_ICE_STORM]=5,
-		[Talents.T_BLOOD_GRASP]=5,
-		[Talents.T_SOUL_ROT]=5,
-		[Talents.T_SHRIEK]=5,
-		[Talents.T_SILENCE]=2,
-		[Talents.T_BONE_SHIELD]=4,
+		[Talents.T_MANATHRUST]={base=5, every=8, max=8},
+		[Talents.T_ICE_STORM]={base=5, every=8, max=8},
+		[Talents.T_BLOOD_GRASP]={base=5, every=8, max=8},
+		[Talents.T_SOUL_ROT]={base=5, every=8, max=8},
+		[Talents.T_SHRIEK]={base=5, every=8, max=8},
+		[Talents.T_SILENCE]={base=2, every=12, max=5},
+		[Talents.T_BONE_SHIELD]={base=4, every=8, max=8},
 	},
 	resolvers.sustains_at_birth(),
 }
@@ -177,14 +177,14 @@ It moves swiftly toward you, casting terrible spells and swinging its weapons at
 	knockback_immune = 1,
 
 	resolvers.talents{
-		[Talents.T_CORRUPTED_STRENGTH]=5,
-		[Talents.T_DISARM]=5,
-		[Talents.T_RUSH]=8,
-		[Talents.T_WEAPON_COMBAT]=8,
-		[Talents.T_WEAPONS_MASTERY]=7,
-		[Talents.T_FIRE_STORM]=5,
-		[Talents.T_FIREBEAM]=5,
-		[Talents.T_SHADOW_BLAST]=5,
-		[Talents.T_TWILIGHT_SURGE]=5,
+		[Talents.T_CORRUPTED_STRENGTH]={base=5, every=8, max=8},
+		[Talents.T_DISARM]={base=5, every=8, max=8},
+		[Talents.T_RUSH]={base=8, every=8, max=12},
+		[Talents.T_WEAPON_COMBAT]={base=8, every=5, max=12},
+		[Talents.T_WEAPONS_MASTERY]={base=7, every=8, max=14},
+		[Talents.T_FIRE_STORM]={base=5, every=8, max=8},
+		[Talents.T_FIREBEAM]={base=5, every=8, max=8},
+		[Talents.T_SHADOW_BLAST]={base=5, every=8, max=8},
+		[Talents.T_TWILIGHT_SURGE]={base=5, every=8, max=8},
 	},
 }
diff --git a/game/modules/tome/data/general/npcs/minor-demon.lua b/game/modules/tome/data/general/npcs/minor-demon.lua
index 91dde6ade1..0726cb0e26 100644
--- a/game/modules/tome/data/general/npcs/minor-demon.lua
+++ b/game/modules/tome/data/general/npcs/minor-demon.lua
@@ -57,7 +57,7 @@ newEntity{ base = "BASE_NPC_DEMON",
 	resists={[DamageType.FIRE] = resolvers.mbonus(12, 5)},
 
 	resolvers.talents{
-		[Talents.T_RITCH_FLAMESPITTER_BOLT]=4,
+		[Talents.T_RITCH_FLAMESPITTER_BOLT]={base=4, every=8, max=8},
 		[Talents.T_PHASE_DOOR]=2,
 	},
 }
@@ -77,8 +77,8 @@ newEntity{ base = "BASE_NPC_DEMON",
 
 	resolvers.talents{
 		[Talents.T_RUSH]=6,
-		[Talents.T_ACID_BLOOD]=3,
-		[Talents.T_CORROSIVE_VAPOUR]=3,
+		[Talents.T_ACID_BLOOD]={base=3, every=10, max=6},
+		[Talents.T_CORROSIVE_VAPOUR]={base=3, every=10, max=6},
 	},
 
 	make_escort = {
@@ -98,10 +98,10 @@ newEntity{ base = "BASE_NPC_DEMON",
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 
 	resolvers.talents{
-		[Talents.T_HEAVY_ARMOUR_TRAINING]=1,
-		[Talents.T_SHIELD_PUMMEL]=2,
-		[Talents.T_RIPOSTE]=3,
-		[Talents.T_OVERPOWER]=1,
+		[Talents.T_HEAVY_ARMOUR_TRAINING]={base=1, every=6, max=5},
+		[Talents.T_SHIELD_PUMMEL]={base=2, every=6, max=5},
+		[Talents.T_RIPOSTE]={base=3, every=6, max=6},
+		[Talents.T_OVERPOWER]={base=1, every=6, max=5},
 		[Talents.T_RUSH]=6,
 	},
 	resolvers.equip{
diff --git a/game/modules/tome/data/general/npcs/minotaur.lua b/game/modules/tome/data/general/npcs/minotaur.lua
index 0199729fc4..b2f78f16ee 100644
--- a/game/modules/tome/data/general/npcs/minotaur.lua
+++ b/game/modules/tome/data/general/npcs/minotaur.lua
@@ -58,7 +58,12 @@ newEntity{ base = "BASE_NPC_MINOTAUR",
 	level_range = {10, nil}, exp_worth = 1,
 	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, },
+	resolvers.talents{
+		[Talents.T_WARSHOUT]={base=3, every=10, max=6},
+		[Talents.T_STUNNING_BLOW]={base=3, every=10, max=6},
+		[Talents.T_SUNDER_ARMOUR]={base=2, every=10, max=5},
+		[Talents.T_SUNDER_ARMS]={base=2, every=10, max=5},
+	},
 }
 
 newEntity{ base = "BASE_NPC_MINOTAUR",
@@ -72,5 +77,8 @@ newEntity{ base = "BASE_NPC_MINOTAUR",
 	autolevel = "caster",
 	resists = { [DamageType.FIRE] = 100 },
 	max_mana = 100,
-	resolvers.talents{ [Talents.T_MANA_POOL]=1, [Talents.T_FLAME]=3, [Talents.T_FIREFLASH]=2 },
+	resolvers.talents{
+		[Talents.T_FLAME]={base=3, every=8, max=6},
+		[Talents.T_FIREFLASH]={base=2, every=10, max=6}
+	},
 }
diff --git a/game/modules/tome/data/general/npcs/naga.lua b/game/modules/tome/data/general/npcs/naga.lua
index db7a493c8e..a13e2da826 100644
--- a/game/modules/tome/data/general/npcs/naga.lua
+++ b/game/modules/tome/data/general/npcs/naga.lua
@@ -60,12 +60,12 @@ Myrmidons are the most devoted warriors of the nagas.]],
 	},
 	combat_armor = 20, combat_def = 10,
 	resolvers.talents{
-		[Talents.T_SPIT_POISON]=5,
-		[Talents.T_SUNDER_ARMOUR]=4,
-		[Talents.T_STUNNING_BLOW]=3,
+		[Talents.T_SPIT_POISON]={base=5, every=10, max=9},
+		[Talents.T_SUNDER_ARMOUR]={base=4, every=10, max=8},
+		[Talents.T_STUNNING_BLOW]={base=3, every=10, max=7},
 		[Talents.T_RUSH]=8,
-		[Talents.T_WEAPON_COMBAT]=6,
-		[Talents.T_EXOTIC_WEAPONS_MASTERY]=6,
+		[Talents.T_WEAPON_COMBAT]={base=6, every=6, max=13},
+		[Talents.T_EXOTIC_WEAPONS_MASTERY]={base=6, every=6, max=13},
 	},
 }
 
@@ -87,12 +87,12 @@ Tide huntresses wield both magic and hunting skills, making them terrible foes.]
 	ai = "tactical",
 	ai_tactic = resolvers.tactic"ranged",
 	resolvers.talents{
-		[Talents.T_SPIT_POISON]=5,
-		[Talents.T_WATER_JET]=6,
-		[Talents.T_WATER_BOLT]=7,
+		[Talents.T_SPIT_POISON]={base=5, every=10, max=10},
+		[Talents.T_WATER_JET]={base=6, every=10, max=11},
+		[Talents.T_WATER_BOLT]={base=7, every=10, max=12},
 		[Talents.T_SHOOT]=1,
-		[Talents.T_WEAPON_COMBAT]=6,
-		[Talents.T_BOW_MASTERY]=6,
+		[Talents.T_WEAPON_COMBAT]={base=6, every=6, max=13},
+		[Talents.T_BOW_MASTERY]={base=6, every=6, max=13},
 	},
 }
 
@@ -113,9 +113,9 @@ Psyrens are dangerous nagas that can directly assault your mind.]],
 	ai = "tactical",
 	ai_tactic = resolvers.tactic"ranged",
 	resolvers.talents{
-		[Talents.T_MIND_DISRUPTION]=4,
-		[Talents.T_MIND_SEAR]=5,
-		[Talents.T_SILENCE]=4,
-		[Talents.T_TELEKINETIC_BLAST]=4,
+		[Talents.T_MIND_DISRUPTION]={base=4, every=10, max=7},
+		[Talents.T_MIND_SEAR]={base=5, every=10, max=8},
+		[Talents.T_SILENCE]={base=4, every=10, max=7},
+		[Talents.T_TELEKINETIC_BLAST]={base=4, every=10, max=7},
 	},
 }
diff --git a/game/modules/tome/data/general/npcs/orc-grushnak.lua b/game/modules/tome/data/general/npcs/orc-grushnak.lua
index 480b7e369a..8f5db01199 100644
--- a/game/modules/tome/data/general/npcs/orc-grushnak.lua
+++ b/game/modules/tome/data/general/npcs/orc-grushnak.lua
@@ -63,13 +63,13 @@ newEntity{ base = "BASE_NPC_ORC_GRUSHNAK",
 	combat_armor = 0, combat_def = 5,
 
 	resolvers.talents{
-		[Talents.T_MASSIVE_ARMOUR_TRAINING]=1,
-		[Talents.T_WEAPON_COMBAT]=4,
-		[Talents.T_WEAPONS_MASTERY]=4,
-		[Talents.T_RUSH]=3,
-		[Talents.T_SHIELD_PUMMEL]=3,
-		[Talents.T_OVERPOWER]=3,
-		[Talents.T_DISARM]=3,
+		[Talents.T_MASSIVE_ARMOUR_TRAINING]={base=1, every=5, max=5},
+		[Talents.T_WEAPON_COMBAT]={base=4, every=5, max=8},
+		[Talents.T_WEAPONS_MASTERY]={base=4, every=5, max=8},
+		[Talents.T_RUSH]={base=3, every=9, max=5},
+		[Talents.T_SHIELD_PUMMEL]={base=3, every=7, max=6},
+		[Talents.T_OVERPOWER]={base=3, every=7, max=6},
+		[Talents.T_DISARM]={base=3, every=7, max=6},
 	},
 }
 
@@ -91,16 +91,16 @@ newEntity{ base = "BASE_NPC_ORC_GRUSHNAK",
 	ai_tactic = resolvers.tactic"melee",
 
 	resolvers.talents{
-		[Talents.T_MASSIVE_ARMOUR_TRAINING]=5,
-		[Talents.T_WEAPON_COMBAT]=8,
-		[Talents.T_WEAPONS_MASTERY]=6,
-		[Talents.T_RUSH]=3,
-		[Talents.T_BATTLE_CALL]=3,
-		[Talents.T_SHIELD_PUMMEL]=4,
-		[Talents.T_OVERPOWER]=5,
-		[Talents.T_ASSAULT]=3,
-		[Talents.T_BATTLE_SHOUT]=3,
-		[Talents.T_SHIELD_WALL]=5,
+		[Talents.T_MASSIVE_ARMOUR_TRAINING]={base=5, every=5, max=8},
+		[Talents.T_WEAPON_COMBAT]={base=8, every=5, max=12},
+		[Talents.T_WEAPONS_MASTERY]={base=6, every=5, max=12},
+		[Talents.T_RUSH]={base=3, every=7, max=6},
+		[Talents.T_BATTLE_CALL]={base=3, every=7, max=6},
+		[Talents.T_SHIELD_PUMMEL]={base=4, every=7, max=7},
+		[Talents.T_OVERPOWER]={base=5, every=7, max=8},
+		[Talents.T_ASSAULT]={base=3, every=7, max=6},
+		[Talents.T_BATTLE_SHOUT]={base=3, every=7, max=6},
+		[Talents.T_SHIELD_WALL]={base=5, every=6, max=8},
 	},
 }
 
@@ -117,12 +117,12 @@ newEntity{ base = "BASE_NPC_ORC_GRUSHNAK",
 	combat_armor = 0, combat_def = 5,
 
 	resolvers.talents{
-		[Talents.T_MASSIVE_ARMOUR_TRAINING]=1,
-		[Talents.T_WEAPON_COMBAT]=4,
-		[Talents.T_WEAPONS_MASTERY]=4,
-		[Talents.T_RUSH]=3,
-		[Talents.T_STUNNING_BLOW]=3,
-		[Talents.T_BERSERKER]=3,
+		[Talents.T_MASSIVE_ARMOUR_TRAINING]={base=1, every=5, max=5},
+		[Talents.T_WEAPON_COMBAT]={base=4, every=5, max=8},
+		[Talents.T_WEAPONS_MASTERY]={base=4, every=5, max=8},
+		[Talents.T_RUSH]={base=3, every=7, max=6},
+		[Talents.T_STUNNING_BLOW]={base=3, every=7, max=6},
+		[Talents.T_BERSERKER]={base=3, every=7, max=6},
 	},
 }
 
@@ -143,15 +143,15 @@ newEntity{ base = "BASE_NPC_ORC_GRUSHNAK",
 	ai_tactic = resolvers.tactic"melee",
 
 	resolvers.talents{
-		[Talents.T_MASSIVE_ARMOUR_TRAINING]=5,
-		[Talents.T_WEAPON_COMBAT]=8,
-		[Talents.T_WEAPONS_MASTERY]=6,
-		[Talents.T_RUSH]=3,
-		[Talents.T_BATTLE_CALL]=3,
-		[Talents.T_STUNNING_BLOW]=4,
-		[Talents.T_JUGGERNAUT]=5,
-		[Talents.T_SHATTERING_IMPACT]=5,
-		[Talents.T_BATTLE_SHOUT]=3,
-		[Talents.T_BERSERKER]=5,
+		[Talents.T_MASSIVE_ARMOUR_TRAINING]={base=5, every=5, max=8},
+		[Talents.T_WEAPON_COMBAT]={base=8, every=5, max=12},
+		[Talents.T_WEAPONS_MASTERY]={base=6, every=5, max=12},
+		[Talents.T_RUSH]={base=3, every=7, max=6},
+		[Talents.T_BATTLE_CALL]={base=3, every=7, max=6},
+		[Talents.T_STUNNING_BLOW]={base=4, every=7, max=7},
+		[Talents.T_JUGGERNAUT]={base=5, every=6, max=8},
+		[Talents.T_SHATTERING_IMPACT]={base=5, every=6, max=8},
+		[Talents.T_BATTLE_SHOUT]={base=3, every=7, max=6},
+		[Talents.T_BERSERKER]={base=5, every=6, max=8},
 	},
 }
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 80783d77f4..5c2e3eed52 100644
--- a/game/modules/tome/data/general/npcs/orc-rak-shor.lua
+++ b/game/modules/tome/data/general/npcs/orc-rak-shor.lua
@@ -70,7 +70,7 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
 
 	resolvers.talents{
 		[Talents.T_SUMMON]=1,
-		[Talents.T_SOUL_ROT]=5,
+		[Talents.T_SOUL_ROT]={base=5, every=10, max=8},
 	},
 }
 
@@ -90,9 +90,9 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
 	talent_cd_reduction={[Talents.T_SOUL_ROT]=2, [Talents.T_BLOOD_GRASP]=4, },
 
 	resolvers.talents{
-		[Talents.T_SOUL_ROT]=5,
-		[Talents.T_BLOOD_GRASP]=5,
-		[Talents.T_CURSE_OF_VULNERABILITY]=5,
+		[Talents.T_SOUL_ROT]={base=5, every=10, max=8},
+		[Talents.T_BLOOD_GRASP]={base=5, every=10, max=8},
+		[Talents.T_CURSE_OF_VULNERABILITY]={base=5, every=10, max=8},
 	},
 	resolvers.sustains_at_birth(),
 }
@@ -116,11 +116,11 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
 	inc_damage = { [DamageType.BLIGHT] = resolvers.mbonus(20, 10) },
 
 	resolvers.talents{
-		[Talents.T_SOUL_ROT]=5,
-		[Talents.T_BLOOD_GRASP]=5,
-		[Talents.T_CURSE_OF_VULNERABILITY]=5,
-		[Talents.T_BLIGHTZONE]=3,
-		[Talents.T_BONE_SHIELD]=5,
-		[Talents.T_BLOOD_SPRAY]=4,
+		[Talents.T_SOUL_ROT]={base=5, every=10, max=8},
+		[Talents.T_BLOOD_GRASP]={base=5, every=10, max=8},
+		[Talents.T_CURSE_OF_VULNERABILITY]={base=5, every=10, max=8},
+		[Talents.T_BLIGHTZONE]={base=3, every=10, max=6},
+		[Talents.T_BONE_SHIELD]={base=5, every=150, max=8},
+		[Talents.T_BLOOD_SPRAY]={base=4, every=10, max=8},
 	},
 }
diff --git a/game/modules/tome/data/general/npcs/orc-vor.lua b/game/modules/tome/data/general/npcs/orc-vor.lua
index 767b8d71b6..a46248ba4a 100644
--- a/game/modules/tome/data/general/npcs/orc-vor.lua
+++ b/game/modules/tome/data/general/npcs/orc-vor.lua
@@ -63,11 +63,11 @@ newEntity{ base = "BASE_NPC_ORC_VOR",
 	combat_armor = 0, combat_def = 5,
 
 	resolvers.talents{
-		[Talents.T_FLAME]=4,
-		[Talents.T_FLAMESHOCK]=3,
-		[Talents.T_FIREFLASH]=3,
-		[Talents.T_SPELL_SHAPING]=3,
-		[Talents.T_PHASE_DOOR]=1,
+		[Talents.T_FLAME]={base=4, every=10, max=8},
+		[Talents.T_FLAMESHOCK]={base=3, every=10, max=7},
+		[Talents.T_FIREFLASH]={base=3, every=10, max=7},
+		[Talents.T_SPELL_SHAPING]={base=3, every=10, max=7},
+		[Talents.T_PHASE_DOOR]=2,
 	},
 }
 
@@ -87,14 +87,15 @@ newEntity{ base = "BASE_NPC_ORC_VOR",
 	rank = 3,
 
 	resolvers.talents{
-		[Talents.T_FLAME]=5,
-		[Talents.T_FLAMESHOCK]=5,
-		[Talents.T_FIREFLASH]=5,
-		[Talents.T_INFERNO]=5,
-		[Talents.T_BLASTWAVE]=5,
-		[Talents.T_BURNING_WAKE]=5,
+		[Talents.T_FLAME]={base=5, every=10, max=9},
+		[Talents.T_FLAMESHOCK]={base=5, every=10, max=9},
+		[Talents.T_FIREFLASH]={base=5, every=10, max=9},
+		[Talents.T_INFERNO]={base=5, every=10, max=9},
+		[Talents.T_BLASTWAVE]={base=5, every=10, max=9},
+		[Talents.T_BURNING_WAKE]={base=5, every=10, max=9},
 		[Talents.T_SPELL_SHAPING]=5,
-		[Talents.T_ESSENCE_OF_SPEED]=1,
+		[Talents.T_PHASE_DOOR]=2,
+		[Talents.T_ESSENCE_OF_SPEED]={base=1, every=10, max=5},
 	},
 }
 
@@ -111,11 +112,11 @@ newEntity{ base = "BASE_NPC_ORC_VOR",
 	combat_armor = 0, combat_def = 5,
 
 	resolvers.talents{
-		[Talents.T_FREEZE]=4,
-		[Talents.T_ICE_STORM]=5,
-		[Talents.T_TIDAL_WAVE]=3,
-		[Talents.T_SPELL_SHAPING]=3,
-		[Talents.T_PHASE_DOOR]=1,
+		[Talents.T_FREEZE]={base=4, every=10, max=8},
+		[Talents.T_ICE_STORM]={base=5, every=10, max=9},
+		[Talents.T_TIDAL_WAVE]={base=3, every=10, max=7},
+		[Talents.T_SPELL_SHAPING]={base=3, every=10, max=7},
+		[Talents.T_PHASE_DOOR]=2,
 	},
 }
 
@@ -136,13 +137,13 @@ newEntity{ base = "BASE_NPC_ORC_VOR",
 	ai_tactic = resolvers.tactic"ranged",
 
 	resolvers.talents{
-		[Talents.T_FREEZE]=5,
-		[Talents.T_ICE_STORM]=5,
-		[Talents.T_TIDAL_WAVE]=5,
-		[Talents.T_ICE_SHARDS]=5,
-		[Talents.T_FROZEN_GROUND]=5,
-		[Talents.T_SPELL_SHAPING]=5,
-		[Talents.T_PHASE_DOOR]=1,
-		[Talents.T_ESSENCE_OF_SPEED]=1,
+		[Talents.T_FREEZE]={base=5, every=10, max=9},
+		[Talents.T_ICE_STORM]={base=5, every=10, max=9},
+		[Talents.T_TIDAL_WAVE]={base=5, every=10, max=9},
+		[Talents.T_ICE_SHARDS]={base=5, every=10, max=9},
+		[Talents.T_FROZEN_GROUND]={base=5, every=10, max=9},
+		[Talents.T_SPELL_SHAPING]={base=5, every=10, max=9},
+		[Talents.T_PHASE_DOOR]=2,
+		[Talents.T_ESSENCE_OF_SPEED]={base=1, every=10, max=5},
 	},
 }
diff --git a/game/modules/tome/data/general/npcs/orc.lua b/game/modules/tome/data/general/npcs/orc.lua
index 84f624effb..99757e3f32 100644
--- a/game/modules/tome/data/general/npcs/orc.lua
+++ b/game/modules/tome/data/general/npcs/orc.lua
@@ -43,6 +43,7 @@ newEntity{
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
 	energy = { mod=1 },
 	stats = { str=20, dex=8, mag=6, con=16 },
+	resolvers.talents{ [Talents.T_WEAPON_COMBAT]={base=1, every=5, max=10}, },
 }
 
 newEntity{ base = "BASE_NPC_ORC",
@@ -58,7 +59,10 @@ newEntity{ base = "BASE_NPC_ORC",
 	},
 	resolvers.inscriptions(1, "infusion"),
 	combat_armor = 2, combat_def = 0,
-	resolvers.talents{ [Talents.T_SHIELD_PUMMEL]=1, },
+	resolvers.talents{
+		[Talents.T_WEAPONS_MASTERY]={base=1, every=5, max=10},
+		[Talents.T_SHIELD_PUMMEL]={base=1, every=6, max=5},
+	},
 	resolvers.racial(),
 }
 
@@ -70,7 +74,10 @@ newEntity{ base = "BASE_NPC_ORC",
 	rarity = 3,
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 5, combat_def = 1,
-	resolvers.talents{ [Talents.T_SHOOT]=1, },
+	resolvers.talents{
+		[Talents.T_BOW_MASTERY]={base=1, every=5, max=10},
+		[Talents.T_SHOOT]=1,
+	},
 	ai_state = { talent_in=1, },
 
 	autolevel = "archer",
@@ -94,7 +101,11 @@ newEntity{ base = "BASE_NPC_ORC", define_as = "ORC",
 	},
 	combat_armor = 2, combat_def = 0,
 	resolvers.inscriptions(1, "infusion"),
-	resolvers.talents{ [Talents.T_SUNDER_ARMOUR]=2, [Talents.T_CRUSH]=2, },
+	resolvers.talents{
+		[Talents.T_WEAPONS_MASTERY]={base=1, every=5, max=10},
+		[Talents.T_SUNDER_ARMOUR]={base=1, every=7, max=5},
+		[Talents.T_CRUSH]={base=1, every=4, max=5},
+	},
 	resolvers.racial(),
 }
 
@@ -119,9 +130,10 @@ newEntity{ base = "BASE_NPC_ORC", define_as = "ORC_FIRE_WYRMIC",
 	},
 
 	resolvers.talents{
-		[Talents.T_BELLOWING_ROAR]=2,
-		[Talents.T_WING_BUFFET]=2,
-		[Talents.T_FIRE_BREATH]=2,
+		[Talents.T_WEAPONS_MASTERY]={base=3, every=5, max=10},
+		[Talents.T_BELLOWING_ROAR]={base=2, every=6, max=5},
+		[Talents.T_WING_BUFFET]={base=2, every=5, max=5},
+		[Talents.T_FIRE_BREATH]={base=2, every=5, max=5},
 	},
 	resolvers.racial(),
 }
@@ -147,9 +159,10 @@ newEntity{ base = "BASE_NPC_ORC",
 	},
 
 	resolvers.talents{
-		[Talents.T_ICE_CLAW]=2,
-		[Talents.T_ICY_SKIN]=2,
-		[Talents.T_ICE_BREATH]=2,
+		[Talents.T_WEAPONS_MASTERY]={base=3, every=5, max=10},
+		[Talents.T_ICE_CLAW]={base=2, every=6, max=5},
+		[Talents.T_ICY_SKIN]={base=2, every=5, max=5},
+		[Talents.T_ICE_BREATH]={base=2, every=5, max=5},
 	},
 	resolvers.racial(),
 }
@@ -167,9 +180,10 @@ newEntity{ base = "BASE_NPC_ORC",
 		{type="armor", subtype="light", autoreq=true}
 	},
 	resolvers.talents{
+		[Talents.T_KNIFE_MASTERY]={base=3, every=5, max=10},
 		[Talents.T_STEALTH]=5,
 		[Talents.T_LETHALITY]=4,
-		[Talents.T_SHADOWSTRIKE]=3,
+		[Talents.T_SHADOWSTRIKE]={base=3, every=6, max=5},
 	},
 	max_life = resolvers.rngavg(80,100),
 	resolvers.inscriptions(1, "infusion"),
@@ -197,10 +211,11 @@ newEntity{ base = "BASE_NPC_ORC",
 	ai_tactic = resolvers.tactic"melee",
 	resolvers.inscriptions(1, "infusion"),
 	resolvers.talents{
+		[Talents.T_KNIFE_MASTERY]={base=3, every=5, max=10},
 		[Talents.T_STEALTH]=5,
 		[Talents.T_LETHALITY]=4,
 		[Talents.T_SHADOWSTRIKE]=5,
-		[Talents.T_HIDE_IN_PLAIN_SIGHT]=2,
+		[Talents.T_HIDE_IN_PLAIN_SIGHT]={base=2, every=6, max=5},
 	},
 	max_life = resolvers.rngavg(80,100),
 
@@ -227,11 +242,12 @@ newEntity{ base = "BASE_NPC_ORC",
 	ai_tactic = resolvers.tactic"melee",
 	resolvers.inscriptions(3, "infusion"),
 	resolvers.talents{
+		[Talents.T_KNIFE_MASTERY]={base=3, every=5, max=10},
 		[Talents.T_STEALTH]=5,
-		[Talents.T_LETHALITY]=4,
+		[Talents.T_LETHALITY]={base=4, every=5, max=6},
 		[Talents.T_SHADOWSTRIKE]=5,
-		[Talents.T_HIDE_IN_PLAIN_SIGHT]=3,
-		[Talents.T_UNSEEN_ACTIONS]=3,
+		[Talents.T_HIDE_IN_PLAIN_SIGHT]={base=3, every=5, max=5},
+		[Talents.T_UNSEEN_ACTIONS]={base=3, every=5, max=5},
 	},
 	max_life = resolvers.rngavg(80,100),
 
diff --git a/game/modules/tome/data/general/npcs/plant.lua b/game/modules/tome/data/general/npcs/plant.lua
index 24e4440004..57f870952e 100644
--- a/game/modules/tome/data/general/npcs/plant.lua
+++ b/game/modules/tome/data/general/npcs/plant.lua
@@ -43,7 +43,7 @@ newEntity{
 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,
+	level_range = {7, 17}, exp_worth = 1,
 	rarity = 1,
 	max_life = resolvers.rngavg(5,9),
 	combat = { dam=5, atk=15, apr=10 },
@@ -56,7 +56,7 @@ newEntity{ base = "BASE_NPC_PLANT",
 	rarity = 2,
 	max_life = resolvers.rngavg(100,130),
 	life_rating = 15,
-	combat = { dam=resolvers.rngavg(8,13), atk=15, apr=5 },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(8,13), 1, 1.2), atk=15, apr=5 },
 	never_move = 0,
 	rank = 2,
 	size_category = 5,
@@ -77,7 +77,7 @@ newEntity{ base = "BASE_NPC_PLANT",
 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,
+	level_range = {10, 24}, exp_worth = 1,
 	rarity = 3,
 	max_life = resolvers.rngavg(100,130),
 	life_rating = 15,
diff --git a/game/modules/tome/data/general/npcs/ritch.lua b/game/modules/tome/data/general/npcs/ritch.lua
index 2c74cd8e6f..473b1051fa 100644
--- a/game/modules/tome/data/general/npcs/ritch.lua
+++ b/game/modules/tome/data/general/npcs/ritch.lua
@@ -27,7 +27,7 @@ newEntity{
 	desc = [[Ritchs are giant insects native to the arid wastes of the southern parts of the Far East.
 Vicious predators, they inject corrupting diseases into their foes, and their sharp claws cut through most armours.]],
 
-	combat = { dam=resolvers.rngavg(30,35), atk=16, apr=70, damtype=DamageType.BLIGHT, dammod={dex=1.2} },
+	combat = { dam=resolvers.levelup(resolvers.rngavg(30,35), 1, 1), atk=16, apr=70, damtype=DamageType.BLIGHT, dammod={dex=1.2} },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 
@@ -56,7 +56,7 @@ newEntity{ base = "BASE_NPC_RITCH",
 	combat_armor = 5, combat_def = 5,
 
 	resolvers.talents{
-		[Talents.T_ROTTING_DISEASE]=3,
+		[Talents.T_ROTTING_DISEASE]={base=3, every=7, max=6},
 		[Talents.T_SHRIEK]=1,
 	},
 }
@@ -72,9 +72,9 @@ newEntity{ base = "BASE_NPC_RITCH",
 	combat_armor = 12, combat_def = 5,
 
 	resolvers.talents{
-		[Talents.T_ROTTING_DISEASE]=4,
+		[Talents.T_ROTTING_DISEASE]={base=4, every=7, max=8},
 		[Talents.T_RUSH]=5,
-		[Talents.T_FLAME]=5,
+		[Talents.T_FLAME]={base=5, every=7, max=9},
 		[Talents.T_SHRIEK]=3,
 	},
 
@@ -102,8 +102,8 @@ newEntity{ base = "BASE_NPC_RITCH",
 	},
 
 	resolvers.talents{
-		[Talents.T_ROTTING_DISEASE]=5,
-		[Talents.T_FLAME]=5,
+		[Talents.T_ROTTING_DISEASE]={base=5, every=7, max=9},
+		[Talents.T_FLAME]={base=5, every=7, max=9},
 		[Talents.T_SUMMON]=1,
 		[Talents.T_SHRIEK]=4,
 	},
diff --git a/game/modules/tome/data/general/npcs/sandworm.lua b/game/modules/tome/data/general/npcs/sandworm.lua
index 794aff1456..b4ce747434 100644
--- a/game/modules/tome/data/general/npcs/sandworm.lua
+++ b/game/modules/tome/data/general/npcs/sandworm.lua
@@ -26,7 +26,7 @@ newEntity{
 	level_range = {7, nil},
 	body = { INVEN = 10 },
 
-	combat = { dam=resolvers.mbonus(25, 15), atk=15, apr=0, dammod={str=0.7} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(25, 15), 1, 1), atk=15, apr=0, dammod={str=0.7} },
 
 	infravision = 20,
 	max_life = 40, life_rating = 5,
@@ -58,9 +58,8 @@ newEntity{ base = "BASE_NPC_SANDWORM",
 	rarity = 3,
 
 	resolvers.talents{
-		[Talents.T_STAMINA_POOL]=1,
-		[Talents.T_STUN]=2,
-		[Talents.T_KNOCKBACK]=2,
+		[Talents.T_STUN]={base=2, every=10, max=5},
+		[Talents.T_KNOCKBACK]={base=2, every=10, max=5},
 	},
 }
 
@@ -76,9 +75,8 @@ newEntity{ base = "BASE_NPC_SANDWORM",
 	ai_tactic = resolvers.tactic"melee",
 
 	resolvers.talents{
-		[Talents.T_STAMINA_POOL]=1,
-		[Talents.T_SAND_BREATH]=3,
-		[Talents.T_KNOCKBACK]=2,
+		[Talents.T_SAND_BREATH]={base=3, every=5, max=7},
+		[Talents.T_KNOCKBACK]={base=2, every=10, max=5},
 	},
 }
 
@@ -90,7 +88,7 @@ newEntity{ base = "BASE_NPC_SANDWORM",
 	size_category = 4,
 	max_life = 120, life_rating = 13,
 	combat_armor = 1, combat_def = 0,
-	combat = { dam=resolvers.mbonus(55, 15), atk=15, apr=0, dammod={str=1} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(55, 15), 1, 1), atk=15, apr=0, dammod={str=1} },
 
 	ai = "dumb_talented_simple", ai_state = { ai_target="target_player_radius", sense_radius=40, talent_in=2, },
 	stats = { str=30, dex=7, mag=3, con=3 },
@@ -101,8 +99,8 @@ newEntity{ base = "BASE_NPC_SANDWORM",
 	move_project = {[DamageType.DIG]=1},
 
 	resolvers.talents{
-		[Talents.T_RUSH]=5,
-		[Talents.T_GRAB]=5,
+		[Talents.T_RUSH]={base=5, every=10, max=8},
+		[Talents.T_GRAB]={base=5, every=10, max=8},
 	},
 }
 
@@ -114,15 +112,15 @@ newEntity{ base = "BASE_NPC_SANDWORM",
 	size_category = 4,
 	max_life = 100, life_rating = 14,
 	combat_armor = 1, combat_def = 0,
-	combat = { dam=resolvers.mbonus(45, 15), atk=15, apr=0, dammod={str=1} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(45, 15), 1, 0.9), atk=15, apr=0, dammod={str=1} },
 
 	stats = { str=20, dex=7, mag=30, con=3 },
 	autolevel = "warriormage",
 
 	resolvers.talents{
-		[Talents.T_GRAVITY_WELL]=3,
-		[Talents.T_GRAVITY_SPIKE]=5,
-		[Talents.T_DAMAGE_SMEARING]=5,
+		[Talents.T_GRAVITY_WELL]={base=3, every=10, max=6},
+		[Talents.T_GRAVITY_SPIKE]={base=5, every=10, max=8},
+		[Talents.T_DAMAGE_SMEARING]={base=5, every=10, max=8},
 	},
 }
 
@@ -134,7 +132,7 @@ newEntity{ base = "BASE_NPC_SANDWORM",
 	size_category = 4,
 	max_life = 80, life_rating = 10,
 	combat_armor = 1, combat_def = 0,
-	combat = { dam=resolvers.mbonus(55, 15), atk=15, apr=50, damtype=DamageType.ACID, dammod={str=1} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(55, 15), 1, 1), atk=15, apr=50, damtype=DamageType.ACID, dammod={str=1} },
 	resists={[DamageType.ACID] = 100},
 
 	stats = { str=30, dex=7, mag=3, con=3 },
@@ -145,7 +143,7 @@ newEntity{ base = "BASE_NPC_SANDWORM",
 	move_project = {[DamageType.DIG]=1},
 
 	resolvers.talents{
-		[Talents.T_ACID_BLOOD]=3,
+		[Talents.T_ACID_BLOOD]={base=3, every=10, max=6},
 	},
 
 	on_die = function(self, src)
diff --git a/game/modules/tome/data/general/npcs/skeleton.lua b/game/modules/tome/data/general/npcs/skeleton.lua
index 48fc50aabb..615a589a21 100644
--- a/game/modules/tome/data/general/npcs/skeleton.lua
+++ b/game/modules/tome/data/general/npcs/skeleton.lua
@@ -67,7 +67,7 @@ newEntity{ base = "BASE_NPC_SKELETON",
 	max_life = resolvers.rngavg(90,100),
 	combat_armor = 5, combat_def = 1,
 	resolvers.equip{ {type="weapon", subtype="greatsword", autoreq=true} },
-	resolvers.talents{ [Talents.T_STAMINA_POOL]=1, [Talents.T_STUNNING_BLOW]=1, },
+	resolvers.talents{ [Talents.T_STUNNING_BLOW]={base=1, every=7, max=5}, [Talents.T_WEAPON_COMBAT]={base=1, every=7, max=10}, [Talents.T_WEAPONS_MASTERY]={base=1, every=7, max=10}, },
 	ai_state = { talent_in=1, },
 }
 
@@ -79,7 +79,7 @@ newEntity{ base = "BASE_NPC_SKELETON",
 	max_mana = resolvers.rngavg(70,80),
 	combat_armor = 3, combat_def = 1,
 	stats = { str=10, dex=12, cun=14, mag=14, con=10 },
-	resolvers.talents{ [Talents.T_MANA_POOL]=1, [Talents.T_FLAME]=2, [Talents.T_MANATHRUST]=3 },
+	resolvers.talents{ [Talents.T_FLAME]={base=1, every=7, max=5}, [Talents.T_MANATHRUST]={base=2, every=7, max=5} },
 
 	resolvers.equip{ {type="weapon", subtype="staff", autoreq=true} },
 
@@ -93,7 +93,7 @@ newEntity{ base = "BASE_NPC_SKELETON",
 	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, },
+	resolvers.talents{ [Talents.T_BOW_MASTERY]={base=1, every=7, max=10}, [Talents.T_WEAPON_COMBAT]={base=1, every=7, max=10}, [Talents.T_SHOOT]=1, },
 	ai_state = { talent_in=1, },
 
 	autolevel = "archer",
@@ -106,7 +106,7 @@ newEntity{ base = "BASE_NPC_SKELETON",
 	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, },
+	resolvers.talents{ [Talents.T_BOW_MASTERY]={base=1, every=7, max=10}, [Talents.T_WEAPON_COMBAT]={base=1, every=7, max=10}, [Talents.T_SHOOT]=1, [Talents.T_PINNING_SHOT]=3, [Talents.T_CRIPPLING_SHOT]=3, },
 	ai_state = { talent_in=1, },
 	rank = 3,
 
@@ -130,11 +130,13 @@ newEntity{ base = "BASE_NPC_SKELETON",
 
 	resolvers.inscriptions(1, "rune"),
 	resolvers.talents{
-		[Talents.T_HEAVY_ARMOUR_TRAINING]=1,
-		[Talents.T_SHIELD_PUMMEL]=1,
-		[Talents.T_RIPOSTE]=3,
-		[Talents.T_OVERPOWER]=1,
-		[Talents.T_DISARM]=3,
+		[Talents.T_WEAPON_COMBAT]={base=1, every=7, max=10},
+		[Talents.T_WEAPONS_MASTERY]={base=1, every=7, max=10},
+		[Talents.T_HEAVY_ARMOUR_TRAINING]={base=1, every=7, max=5},
+		[Talents.T_SHIELD_PUMMEL]={base=1, every=7, max=5},
+		[Talents.T_RIPOSTE]={base=3, every=7, max=7},
+		[Talents.T_OVERPOWER]={base=1, every=7, max=5},
+		[Talents.T_DISARM]={base=3, every=7, max=7},
 	},
 	resolvers.equip{ {type="weapon", subtype="longsword", autoreq=true}, {type="armor", subtype="shield", autoreq=true}, {type="armor", subtype="heavy", autoreq=true} },
 	ai_state = { talent_in=1, },
diff --git a/game/modules/tome/data/general/npcs/snake.lua b/game/modules/tome/data/general/npcs/snake.lua
index 234c68402e..1be5e5b087 100644
--- a/game/modules/tome/data/general/npcs/snake.lua
+++ b/game/modules/tome/data/general/npcs/snake.lua
@@ -45,7 +45,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	rarity = 1,
 	max_life = resolvers.rngavg(20,30),
 	combat_armor = 1, combat_def = 3,
-	combat = { dam=2, atk=30, apr=10 },
+	combat = { dam=resolvers.levelup(2, 1, 0.7), atk=30, apr=10 },
 }
 
 newEntity{ base = "BASE_NPC_SNAKE",
@@ -55,7 +55,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	rarity = 1,
 	max_life = resolvers.rngavg(20,30),
 	combat_armor = 1, combat_def = 3,
-	combat = { dam=2, atk=30, apr=10 },
+	combat = { dam=resolvers.levelup(2, 1, 0.7), atk=30, apr=10 },
 }
 
 newEntity{ base = "BASE_NPC_SNAKE",
@@ -65,7 +65,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	rarity = 1,
 	max_life = resolvers.rngavg(30,40),
 	combat_armor = 2, combat_def = 5,
-	combat = { dam=3, atk=30, apr=10 },
+	combat = { dam=resolvers.levelup(3, 1, 0.7), atk=30, apr=10 },
 
 	resolvers.talents{ [Talents.T_BITE_POISON]=1 },
 }
@@ -77,7 +77,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	rarity = 1,
 	max_life = resolvers.rngavg(30,50),
 	combat_armor = 2, combat_def = 8,
-	combat = { dam=5, atk=30, apr=10 },
+	combat = { dam=resolvers.levelup(5, 1, 0.7), atk=30, apr=10 },
 
 	resolvers.talents{ [Talents.T_BITE_POISON]=1 },
 }
@@ -89,7 +89,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	rarity = 4,
 	max_life = resolvers.rngavg(40,70),
 	combat_armor = 3, combat_def = 11,
-	combat = { dam=7, atk=30, apr=10 },
+	combat = { dam=resolvers.levelup(7, 1, 0.7), atk=30, apr=10 },
 
 	resolvers.talents{ [Talents.T_BITE_POISON]=2 },
 }
@@ -101,7 +101,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	rarity = 4,
 	max_life = resolvers.rngavg(50,80),
 	combat_armor = 4, combat_def = 12,
-	combat = { dam=10, atk=30, apr=10 },
+	combat = { dam=resolvers.levelup(10, 1, 0.7), atk=30, apr=10 },
 
 	resolvers.talents{ [Talents.T_BITE_POISON]=3 },
 }
@@ -114,7 +114,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	rank = 3,
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 14, combat_def = 5,
-	combat = { dam=12, atk=10, apr=10 },
+	combat = { dam=resolvers.levelup(12, 1, 0.7), atk=10, apr=10 },
 	energy = { mod=0.8 },
 
 	resolvers.talents{ [Talents.T_CONSTRICT]=5 },
diff --git a/game/modules/tome/data/general/npcs/snow-giant.lua b/game/modules/tome/data/general/npcs/snow-giant.lua
index f9d0a35d07..b2c1db06d5 100644
--- a/game/modules/tome/data/general/npcs/snow-giant.lua
+++ b/game/modules/tome/data/general/npcs/snow-giant.lua
@@ -24,7 +24,7 @@ newEntity{
 	type = "giant", subtype = "ice",
 	display = "P", color=colors.WHITE,
 
-	combat = { dam=resolvers.mbonus(50, 10), atk=15, apr=15, dammod={str=0.8} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(50, 10), 1, 1), atk=15, apr=15, dammod={str=0.8} },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	resolvers.drops{chance=100, nb=1, {type="money"} },
@@ -58,7 +58,7 @@ newEntity{ base = "BASE_NPC_SNOW_GIANT",
 	combat_armor = 0, combat_def = 0,
 	on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
 	melee_project = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
-	resolvers.talents{ [Talents.T_MIND_DISRUPTION]=2, },
+	resolvers.talents{ [Talents.T_MIND_DISRUPTION]={base=2, every=10, max=5}, },
 }
 
 newEntity{ base = "BASE_NPC_SNOW_GIANT",
@@ -71,7 +71,7 @@ newEntity{ base = "BASE_NPC_SNOW_GIANT",
 	on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
 	melee_project = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
 	autolevel = "warriormage",
-	resolvers.talents{ [Talents.T_LIGHTNING]=3, [Talents.T_CHAIN_LIGHTNING]=3, },
+	resolvers.talents{ [Talents.T_LIGHTNING]={base=3, every=6, max=6}, [Talents.T_CHAIN_LIGHTNING]={base=3, every=6, max=6}, },
 }
 
 newEntity{ base = "BASE_NPC_SNOW_GIANT",
@@ -83,7 +83,7 @@ newEntity{ base = "BASE_NPC_SNOW_GIANT",
 	combat_armor = 0, combat_def = 0,
 	on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
 	melee_project = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
-	resolvers.talents{ [Talents.T_THROW_BOULDER]=3, },
+	resolvers.talents{ [Talents.T_THROW_BOULDER]={base=3, every=6, max=6}, },
 }
 
 newEntity{ base = "BASE_NPC_SNOW_GIANT",
@@ -96,7 +96,7 @@ newEntity{ base = "BASE_NPC_SNOW_GIANT",
 	combat_armor = 12, combat_def = 12,
 	on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 10)},
 	melee_project = {[DamageType.COLD]=resolvers.mbonus(15, 10)},
-	resolvers.talents{ [Talents.T_KNOCKBACK]=3, [Talents.T_STUN]=3, },
+	resolvers.talents{ [Talents.T_KNOCKBACK]={base=3, every=6, max=6}, [Talents.T_STUN]={base=3, every=6, max=6}, },
 	make_escort = {
 		{type="giant", subtype="ice", number=3},
 	},
diff --git a/game/modules/tome/data/general/npcs/spider.lua b/game/modules/tome/data/general/npcs/spider.lua
index 3e5d1b32d0..8d89e82a86 100644
--- a/game/modules/tome/data/general/npcs/spider.lua
+++ b/game/modules/tome/data/general/npcs/spider.lua
@@ -25,7 +25,7 @@ newEntity{
 	display = "S", color=colors.WHITE,
 	desc = [[Arachnophobia...]],
 
-	combat = { dam=resolvers.mbonus(40, 70), atk=16, apr=9, damtype=DamageType.NATURE, dammod={dex=1.2} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(40, 70), 1, 0.9), atk=16, apr=9, damtype=DamageType.NATURE, dammod={dex=1.2} },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 
@@ -58,8 +58,8 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	combat_armor = 5, combat_def = 5,
 
 	resolvers.talents{
-		[Talents.T_SPIDER_WEB]=1,
-		[Talents.T_LAY_WEB]=1,
+		[Talents.T_SPIDER_WEB]={base=1, every=10, max=5},
+		[Talents.T_LAY_WEB]={base=1, every=10, max=5},
 	},
 
 }
@@ -75,9 +75,9 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	combat_armor = 5, combat_def = 10,
 
 	resolvers.talents{
-		[Talents.T_SPIDER_WEB]=3,
-		[Talents.T_SPIT_POISON]=3,
-		[Talents.T_LAY_WEB]=3,
+		[Talents.T_SPIDER_WEB]={base=3, every=10, max=6},
+		[Talents.T_SPIT_POISON]={base=3, every=10, max=6},
+		[Talents.T_LAY_WEB]={base=3, every=10, max=6},
 	},
 
 }
@@ -93,8 +93,8 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	combat_armor = 10, combat_def = 14,
 
 	resolvers.talents{
-		[Talents.T_SPIDER_WEB]=3,
-		[Talents.T_LAY_WEB]=3,
+		[Talents.T_SPIDER_WEB]={base=3, every=10, max=6},
+		[Talents.T_LAY_WEB]={base=3, every=10, max=6},
 	},
 
 }
@@ -114,12 +114,12 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	resolvers.tmasteries{ ["cunning/stealth"]=0.3},
 
 	resolvers.talents{
-		[Talents.T_RUSH]=5,
-		[Talents.T_SPIDER_WEB]=5,
-		[Talents.T_LAY_WEB]=5,
-		[Talents.T_STEALTH]=5,
-		[Talents.T_SHADOWSTRIKE]=4,
-		[Talents.T_STUN]=2,
+		[Talents.T_RUSH]={base=4, every=6, max=7},
+		[Talents.T_SPIDER_WEB]={base=4, every=6, max=7},
+		[Talents.T_LAY_WEB]={base=4, every=6, max=7},
+		[Talents.T_STEALTH]={base=4, every=6, max=7},
+		[Talents.T_SHADOWSTRIKE]={base=4, every=6, max=7},
+		[Talents.T_STUN]={base=2, every=6, max=5},
 	},
 
 }
@@ -138,13 +138,13 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	resolvers.tmasteries{ ["wild-gift/slime"]=0.3, ["spell/water"]=0.3 },
 
 	resolvers.talents{
-		[Talents.T_RUSH]=5,
-		[Talents.T_SPIDER_WEB]=5,
-		[Talents.T_LAY_WEB]=5,
-		[Talents.T_ACIDIC_SKIN]=5,
-		[Talents.T_CORROSIVE_VAPOUR]=5,
-		[Talents.T_CRAWL_ACID]=3,
-		[Talents.T_STUN]=2,
+		[Talents.T_RUSH]={base=5, every=6, max=8},
+		[Talents.T_SPIDER_WEB]={base=5, every=6, max=8},
+		[Talents.T_LAY_WEB]={base=5, every=6, max=8},
+		[Talents.T_ACIDIC_SKIN]={base=5, every=6, max=8},
+		[Talents.T_CORROSIVE_VAPOUR]={base=5, every=6, max=8},
+		[Talents.T_CRAWL_ACID]={base=3, every=6, max=6},
+		[Talents.T_STUN]={base=2, every=6, max=7},
 	},
 
 }
@@ -167,14 +167,14 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	resolvers.tmasteries{ ["spell/phantasm"]=0.3, ["spell/water"]=0.3, ["spell/arcane"]=0.3 },
 
 	resolvers.talents{
-		[Talents.T_SPIDER_WEB]=5,
-		[Talents.T_LAY_WEB]=5,
-		[Talents.T_PHANTASMAL_SHIELD]=5,
-		[Talents.T_PHASE_DOOR]=5,
-		[Talents.T_MANATHRUST]=5,
-		[Talents.T_MANAFLOW]=5,
-		[Talents.T_DISRUPTION_SHIELD]=3,
-		[Talents.T_ARCANE_POWER]=3,
+		[Talents.T_SPIDER_WEB]={base=5, every=6, max=8},
+		[Talents.T_LAY_WEB]={base=5, every=6, max=8},
+		[Talents.T_PHANTASMAL_SHIELD]={base=5, every=6, max=8},
+		[Talents.T_PHASE_DOOR]={base=5, every=6, max=8},
+		[Talents.T_MANATHRUST]={base=5, every=6, max=8},
+		[Talents.T_MANAFLOW]={base=5, every=6, max=8},
+		[Talents.T_DISRUPTION_SHIELD]={base=3, every=6, max=6},
+		[Talents.T_ARCANE_POWER]={base=3, every=6, max=6},
 	},
 
 }
@@ -197,13 +197,13 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	resolvers.tmasteries{ ["spell/nature"]=0.9 },
 
 	resolvers.talents{
-		[Talents.T_SPIDER_WEB]=5,
-		[Talents.T_LAY_WEB]=5,
-		[Talents.T_REGENERATION]=5,
-		[Talents.T_BITE_POISON]=5,
-		[Talents.T_DARKNESS]=5, -- new spell, will create a zone of darkness that not even a lantern can penetrate (only the phial of Galadrial can), also turns lit squares dark in its radius.
+		[Talents.T_SPIDER_WEB]={base=5, every=6, max=8},
+		[Talents.T_LAY_WEB]={base=5, every=6, max=8},
+		[Talents.T_REGENERATION]={base=5, every=6, max=8},
+		[Talents.T_BITE_POISON]={base=5, every=6, max=8},
+		[Talents.T_DARKNESS]={base=5, every=6, max=8},
 		[Talents.T_RUSH]=5,
-		[Talents.T_STUN]=3,
+		[Talents.T_STUN]={base=3, every=6, max=6},
 	},
 
 }
@@ -225,14 +225,14 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	resolvers.tmasteries{ ["spell/enhancement"]=0.7, ["wild-gift/cold-drake"]=0.7, ["spell/water"]=0.7 },
 
 	resolvers.talents{
-		[Talents.T_RUSH]=5,
-		[Talents.T_SPIDER_WEB]=5,
-		[Talents.T_LAY_WEB]=5,
-		[Talents.T_FREEZE]=5,
-		[Talents.T_ICY_SKIN]=5,
-		[Talents.T_TIDAL_WAVE]=3,
-		[Talents.T_ICE_STORM]=2,
-		[Talents.T_FROST_HANDS]=5,
+		[Talents.T_RUSH]={base=5, every=6, max=8},
+		[Talents.T_SPIDER_WEB]={base=5, every=6, max=8},
+		[Talents.T_LAY_WEB]={base=5, every=6, max=8},
+		[Talents.T_FREEZE]={base=5, every=6, max=8},
+		[Talents.T_ICY_SKIN]={base=5, every=6, max=8},
+		[Talents.T_TIDAL_WAVE]={base=3, every=6, max=6},
+		[Talents.T_ICE_STORM]={base=2, every=6, max=6},
+		[Talents.T_FROST_HANDS]={base=5, every=6, max=8},
 	},
 
 }
diff --git a/game/modules/tome/data/general/npcs/swarm.lua b/game/modules/tome/data/general/npcs/swarm.lua
index 83464917e8..67956dda37 100644
--- a/game/modules/tome/data/general/npcs/swarm.lua
+++ b/game/modules/tome/data/general/npcs/swarm.lua
@@ -78,5 +78,5 @@ newEntity{ base = "BASE_NPC_INSECT",
 	combat = { dam=10, atk=15, apr=20 },
 	can_multiply = 4,
 
-	resolvers.talents{ [Talents.T_BITE_POISON]=3 },
+	resolvers.talents{ [Talents.T_BITE_POISON]={base=3, every=10, max=8} },
 }
diff --git a/game/modules/tome/data/general/npcs/telugoroth.lua b/game/modules/tome/data/general/npcs/telugoroth.lua
index 360db81851..f38276dbca 100644
--- a/game/modules/tome/data/general/npcs/telugoroth.lua
+++ b/game/modules/tome/data/general/npcs/telugoroth.lua
@@ -25,7 +25,7 @@ newEntity{
 	blood_color = colors.PURPLE,
 	display = "E", color=colors.YELLOW,
 
-	combat = { dam=resolvers.mbonus(40, 15), atk=15, apr=15, dammod={mag=0.8}, damtype=DamageType.TEMPORAL },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(40, 15), 1, 1.2), atk=15, apr=15, dammod={mag=0.8}, damtype=DamageType.TEMPORAL },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 
@@ -56,7 +56,7 @@ newEntity{ base = "BASE_NPC_TELUGOROTH",
 	on_melee_hit = { [DamageType.TEMPORAL] = resolvers.mbonus(20, 10), },
 
 	resolvers.talents{
-		[Talents.T_TURN_BACK_THE_CLOCK]=3,
+		[Talents.T_TURN_BACK_THE_CLOCK]={base=3, every=10, max=7},
 	},
 }
 
@@ -70,8 +70,8 @@ newEntity{ base = "BASE_NPC_TELUGOROTH",
 	on_melee_hit = { [DamageType.TEMPORAL] = resolvers.mbonus(20, 10), },
 
 	resolvers.talents{
-		[Talents.T_TURN_BACK_THE_CLOCK]=4,
-		[Talents.T_ECHOES_FROM_THE_PAST]=3,
+		[Talents.T_TURN_BACK_THE_CLOCK]={base=4, every=10, max=8},
+		[Talents.T_ECHOES_FROM_THE_PAST]={base=3, every=10, max=7},
 	},
 	resolvers.sustains_at_birth(),
 }
@@ -89,10 +89,10 @@ newEntity{ base = "BASE_NPC_TELUGOROTH",
 	ai = "tactical",
 
 	resolvers.talents{
-		[Talents.T_TURN_BACK_THE_CLOCK]=5,
-		[Talents.T_ECHOES_FROM_THE_PAST]=4,
-		[Talents.T_RETHREAD]=3,
-		[Talents.T_STOP]=4,
+		[Talents.T_TURN_BACK_THE_CLOCK]={base=5, every=7},
+		[Talents.T_ECHOES_FROM_THE_PAST]={base=4, every=7},
+		[Talents.T_RETHREAD]={base=3, every=7},
+		[Talents.T_STOP]={base=4, every=7},
 	},
 	resolvers.sustains_at_birth(),
 }
@@ -114,7 +114,7 @@ newEntity{ base = "BASE_NPC_TELUGOROTH",
 
 	resolvers.talents{
 		[Talents.T_ANOMALY_REARRANGE]=1,
-		[Talents.T_TEMPORAL_WAKE]=3,
+		[Talents.T_TEMPORAL_WAKE]={base=3, every=10, max=7},
 	},
 	resolvers.sustains_at_birth(),
 }
@@ -135,9 +135,9 @@ newEntity{ base = "BASE_NPC_TELUGOROTH",
 	pin_immune = 1,
 
 	resolvers.talents{
-		[Talents.T_DIMENSIONAL_STEP]=5,
+		[Talents.T_DIMENSIONAL_STEP]={base=5, every=10, max=9},
 		[Talents.T_ANOMALY_REARRANGE]=1,
-		[Talents.T_TEMPORAL_WAKE]=4,
+		[Talents.T_TEMPORAL_WAKE]={base=4, every=10, max=8},
 	},
 	resolvers.sustains_at_birth(),
 }
@@ -161,10 +161,10 @@ newEntity{ base = "BASE_NPC_TELUGOROTH",
 
 	resolvers.talents{
 		[Talents.T_ANOMALY_TEMPORAL_STORM]=1,
-		[Talents.T_QUANTUM_SPIKE]=5,
-		[Talents.T_DIMENSIONAL_STEP]=5,
+		[Talents.T_QUANTUM_SPIKE]={base=5, every=7},
+		[Talents.T_DIMENSIONAL_STEP]={base=5, every=7},
 		[Talents.T_ANOMALY_REARRANGE]=1,
-		[Talents.T_TEMPORAL_WAKE]=4,
+		[Talents.T_TEMPORAL_WAKE]={base=4, every=7},
 	},
 	resolvers.sustains_at_birth(),
 }
diff --git a/game/modules/tome/data/general/npcs/thieve.lua b/game/modules/tome/data/general/npcs/thieve.lua
index da806ba4b8..a4c94b1909 100644
--- a/game/modules/tome/data/general/npcs/thieve.lua
+++ b/game/modules/tome/data/general/npcs/thieve.lua
@@ -53,7 +53,7 @@ newEntity{
 	stats = { str=8, dex=15, mag=6, cun=15, con=7 },
 
 	resolvers.tmasteries{ ["technique/other"]=0.3, ["cunning/stealth"]=1, ["cunning/dirty"]=0.3, ["technique/dualweapon-training"]=0.3 },
-	resolvers.talents{ [Talents.T_LETHALITY]=1, },
+	resolvers.talents{ [Talents.T_LETHALITY]={base=1, every=6, max=5}, },
 }
 
 newEntity{ base = "BASE_NPC_THIEF",
@@ -72,7 +72,7 @@ newEntity{ base = "BASE_NPC_THIEF",
 	level_range = {2, nil}, exp_worth = 1,
 	rarity = 1,
 	combat_armor = 2, combat_def = 5,
-	resolvers.talents{ [Talents.T_STEALTH]=1,  },
+	resolvers.talents{ [Talents.T_STEALTH]={base=1, every=6, max=5},  },
 	max_life = resolvers.rngavg(70,90),
 }
 
@@ -82,7 +82,7 @@ newEntity{ base = "BASE_NPC_THIEF",
 	level_range = {3, nil}, exp_worth = 1,
 	rarity = 1,
 	combat_armor = 3, combat_def = 5,
-	resolvers.talents{ [Talents.T_STEALTH]=2, [Talents.T_DISARM]=2, },
+	resolvers.talents{ [Talents.T_STEALTH]={base=2, every=6, max=6}, [Talents.T_DISARM]={base=2, every=6, max=6}, },
 	max_life = resolvers.rngavg(70,90),
 }
 
@@ -92,7 +92,7 @@ newEntity{ base = "BASE_NPC_THIEF", define_as = "THIEF_BANDIT",
 	level_range = {5, nil}, exp_worth = 1,
 	rarity = 2,
 	combat_armor = 4, combat_def = 6,
-	resolvers.talents{ [Talents.T_STEALTH]=3, [Talents.T_LETHALITY]=2, },
+	resolvers.talents{ [Talents.T_STEALTH]={base=3, every=6, max=7}, [Talents.T_LETHALITY]={base=2, every=6, max=6}, },
 	max_life = resolvers.rngavg(80,100),
 }
 
@@ -115,7 +115,7 @@ newEntity{ base = "BASE_NPC_THIEF",
 		{type="humanoid", subtype="human", name="thief", number=1, hasxp=false},
 		{type="humanoid", subtype="human", name="rogue", number=2, hasxp=false},
 	},
-	resolvers.talents{ [Talents.T_STEALTH]=3, [Talents.T_SUMMON]=1, [Talents.T_LETHALITY]=3, },
+	resolvers.talents{ [Talents.T_STEALTH]={base=3, every=6, max=7}, [Talents.T_SUMMON]=1, [Talents.T_LETHALITY]={base=3, every=6, max=6}, },
 }
 
 newEntity{ base = "BASE_NPC_THIEF", define_as = "THIEF_ASSASSIN",
@@ -124,7 +124,17 @@ newEntity{ base = "BASE_NPC_THIEF", define_as = "THIEF_ASSASSIN",
 	level_range = {12, nil}, exp_worth = 1,
 	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, [Talents.T_DISARM]=3, },
+	resolvers.talents{
+		[Talents.T_STEALTH]={base=3, every=6, max=7},
+		[Talents.T_PRECISION]={base=3, every=6, max=7},
+		[Talents.T_DUAL_WEAPON_TRAINING]={base=2, every=6, max=6},
+		[Talents.T_DUAL_WEAPON_DEFENSE]={base=2, every=6, max=6},
+		[Talents.T_DUAL_STRIKE]={base=1, every=6, max=6},
+		[Talents.T_SWEEP]={base=1, every=6, max=6},
+		[Talents.T_SHADOWSTRIKE]={base=2, every=6, max=6},
+		[Talents.T_LETHALITY]={base=5, every=6, max=8},
+		[Talents.T_DISARM]={base=3, every=6, max=6},
+	},
 	max_life = resolvers.rngavg(70,90),
 
 	resolvers.sustains_at_birth(),
diff --git a/game/modules/tome/data/general/npcs/troll.lua b/game/modules/tome/data/general/npcs/troll.lua
index 4c7b022595..92af49e4d9 100644
--- a/game/modules/tome/data/general/npcs/troll.lua
+++ b/game/modules/tome/data/general/npcs/troll.lua
@@ -24,7 +24,7 @@ newEntity{
 	type = "giant", subtype = "troll",
 	display = "T", color=colors.UMBER,
 
-	combat = { dam=resolvers.mbonus(45, 10), atk=2, apr=6, physspeed=2, dammod={str=0.8} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(45, 10), 1, 1), atk=2, apr=6, physspeed=2, dammod={str=0.8} },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	resolvers.drops{chance=20, nb=1, {} },
@@ -67,7 +67,7 @@ newEntity{ base = "BASE_NPC_TROLL",
 	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, },
+	resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5}, [Talents.T_KNOCKBACK]={base=1, every=7, max=5}, },
 }
 
 newEntity{ base = "BASE_NPC_TROLL",
@@ -77,7 +77,7 @@ newEntity{ base = "BASE_NPC_TROLL",
 	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, },
+	resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5}, [Talents.T_KNOCKBACK]={base=1, every=7, max=5}, [Talents.T_KNOCKBACK]={base=2, every=7, max=5}, },
 }
 
 newEntity{ base = "BASE_NPC_TROLL",
@@ -87,7 +87,7 @@ newEntity{ base = "BASE_NPC_TROLL",
 	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, [Talents.T_DISARM]=3, },
+	resolvers.talents{ [Talents.T_STUN]={base=3, every=7, max=8}, [Talents.T_KNOCKBACK]={base=3, every=7, max=8}, [Talents.T_RUSH]={base=3, every=7, max=8}, [Talents.T_DISARM]={base=3, every=7, max=8}, },
 }
 
 newEntity{ base = "BASE_NPC_TROLL",
@@ -103,8 +103,9 @@ newEntity{ base = "BASE_NPC_TROLL",
 	ai = "tactical",
 	resolvers.inscriptions(1, "rune"),
 	resolvers.talents{
-		[Talents.T_STUN]=4, [Talents.T_KNOCKBACK]=3,
-		[Talents.T_LIGHTNING]=4,
-		[Talents.T_THUNDERSTORM]=3,
+		[Talents.T_STUN]={base=4, every=6, max=8},
+		[Talents.T_KNOCKBACK]={base=3, every=7, max=8},
+		[Talents.T_LIGHTNING]={base=4, every=7, max=8},
+		[Talents.T_THUNDERSTORM]={base=3, every=7, max=8},
 	},
 }
diff --git a/game/modules/tome/data/general/npcs/vampire.lua b/game/modules/tome/data/general/npcs/vampire.lua
index 5d8c6bfafe..02afa9e6aa 100644
--- a/game/modules/tome/data/general/npcs/vampire.lua
+++ b/game/modules/tome/data/general/npcs/vampire.lua
@@ -42,7 +42,7 @@ newEntity{
 	display = "V", color=colors.WHITE,
 	desc = [[These ancient cursed beings often take the form of a bat and attack their prey.]],
 
-	combat = { dam=resolvers.mbonus(30, 10), atk=10, apr=9, damtype=DamageType.DRAINLIFE, dammod={str=1.9} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(30, 10), 1, 0.8), atk=10, apr=9, damtype=DamageType.DRAINLIFE, dammod={str=1.9} },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	drops = resolvers.drops{chance=20, nb=1, {} },
@@ -80,7 +80,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	max_life = resolvers.rngavg(40,50),
 	combat_armor = 7, combat_def = 6,
 
-	resolvers.talents{ [Talents.T_STUN]=1 },
+	resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5} },
 }
 
 newEntity{ base = "BASE_NPC_VAMPIRE",
@@ -91,7 +91,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 9, combat_def = 6,
 
-	resolvers.talents{ [Talents.T_STUN]=1, [Talents.T_BLUR_SIGHT]=1, [Talents.T_ROTTING_DISEASE]=1, },
+	resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5}, [Talents.T_BLUR_SIGHT]={base=1, every=7, max=5}, [Talents.T_ROTTING_DISEASE]={base=1, every=7, max=5}, },
 }
 
 newEntity{ base = "BASE_NPC_VAMPIRE",
@@ -102,7 +102,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	max_life = resolvers.rngavg(80,90),
 	combat_armor = 10, combat_def = 8,
 	ai = "dumb_talented_simple", ai_state = { talent_in=6, },
-	resolvers.talents{ [Talents.T_STUN]=1, [Talents.T_BLUR_SIGHT]=2, [Talents.T_PHANTASMAL_SHIELD]=1, [Talents.T_ROTTING_DISEASE]=2, },
+	resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5}, [Talents.T_BLUR_SIGHT]={base=2, every=7, max=5}, [Talents.T_PHANTASMAL_SHIELD]={base=1, every=7, max=5}, [Talents.T_ROTTING_DISEASE]={base=2, every=7, max=5}, },
 }
 
 newEntity{ base = "BASE_NPC_VAMPIRE",
@@ -117,7 +117,7 @@ It can summon the very shades of its victims from beyond the grave to come ensla
 	ai = "tactical", ai_state = { talent_in=4, },
 	resolvers.inscriptions(1, "rune"),
 	summon = {{type="undead", number=1, hasxp=false}, },
-	resolvers.talents{ [Talents.T_STUN]=2, [Talents.T_SUMMON]=1, [Talents.T_BLUR_SIGHT]=3, [Talents.T_PHANTASMAL_SHIELD]=2, [Talents.T_ROTTING_DISEASE]=3, },
+	resolvers.talents{ [Talents.T_STUN]={base=2, every=7, max=6}, [Talents.T_SUMMON]=1, [Talents.T_BLUR_SIGHT]={base=3, every=7, max=7}, [Talents.T_PHANTASMAL_SHIELD]={base=2, every=7, max=6}, [Talents.T_ROTTING_DISEASE]={base=3, every=7, max=7}, },
 }
 
 newEntity{ base = "BASE_NPC_VAMPIRE",
@@ -131,7 +131,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	ai = "tactical", ai_state = { talent_in=3, },
 	resolvers.inscriptions(1, "rune"),
 	summon = {{type="undead", number=1, hasxp=false}, },
-	resolvers.talents{ [Talents.T_STUN]=4, [Talents.T_SUMMON]=1, [Talents.T_BLUR_SIGHT]=4, [Talents.T_PHANTASMAL_SHIELD]=5, [Talents.T_ROTTING_DISEASE]=5, },
+	resolvers.talents{ [Talents.T_STUN]={base=4, every=7, max=8}, [Talents.T_SUMMON]=1, [Talents.T_BLUR_SIGHT]={base=4, every=7, max=8}, [Talents.T_PHANTASMAL_SHIELD]={base=5, every=7, max=8}, [Talents.T_ROTTING_DISEASE]={base=5, every=7, max=8}, },
 	make_escort = {
 		{type="undead", number=resolvers.mbonus(2, 2)},
 	},
diff --git a/game/modules/tome/data/general/npcs/wight.lua b/game/modules/tome/data/general/npcs/wight.lua
index cb265a1d44..6b8f904963 100644
--- a/game/modules/tome/data/general/npcs/wight.lua
+++ b/game/modules/tome/data/general/npcs/wight.lua
@@ -69,8 +69,8 @@ newEntity{ base = "BASE_NPC_WIGHT",
 	combat_armor = 7, combat_def = 6,
 
 	resolvers.talents{
-		[Talents.T_FLAMESHOCK]=1, [Talents.T_LIGHTNING]=1, [Talents.T_CORROSIVE_VAPOUR]=1,
-		[Talents.T_MIND_DISRUPTION]=1,
+		[Talents.T_FLAMESHOCK]={base=1, every=5, max=5}, [Talents.T_LIGHTNING]={base=1, every=5, max=5}, [Talents.T_CORROSIVE_VAPOUR]={base=1, every=5, max=5},
+		[Talents.T_MIND_DISRUPTION]={base=1, every=5, max=5},
 	},
 }
 
@@ -82,8 +82,8 @@ newEntity{ base = "BASE_NPC_WIGHT",
 	max_life = resolvers.rngavg(70,80),
 	combat_armor = 9, combat_def = 6,
 
-	resolvers.talents{ [Talents.T_MANA_POOL]=1, [Talents.T_FLAMESHOCK]=2, [Talents.T_LIGHTNING]=2, [Talents.T_CORROSIVE_VAPOUR]=2,
-		[Talents.T_MIND_DISRUPTION]=2,
+	resolvers.talents{ [Talents.T_FLAMESHOCK]={base=2, every=5, max=6}, [Talents.T_LIGHTNING]={base=2, every=5, max=6}, [Talents.T_CORROSIVE_VAPOUR]={base=2, every=5, max=6},
+		[Talents.T_MIND_DISRUPTION]={base=2, every=5, max=6},
 	},
 }
 
@@ -95,8 +95,8 @@ newEntity{ base = "BASE_NPC_WIGHT",
 	max_life = resolvers.rngavg(80,90),
 	combat_armor = 10, combat_def = 8,
 
-	resolvers.talents{ [Talents.T_MANA_POOL]=1, [Talents.T_FLAMESHOCK]=3, [Talents.T_LIGHTNING]=3, [Talents.T_CORROSIVE_VAPOUR]=3,
-		[Talents.T_MIND_DISRUPTION]=3,
+	resolvers.talents{ [Talents.T_FLAMESHOCK]={base=3, every=5, max=7}, [Talents.T_LIGHTNING]={base=3, every=5, max=7}, [Talents.T_CORROSIVE_VAPOUR]={base=3, every=5, max=7},
+		[Talents.T_MIND_DISRUPTION]={base=3, every=5, max=7},
 	},
 }
 
@@ -115,7 +115,7 @@ newEntity{ base = "BASE_NPC_WIGHT",
 	make_escort = {
 		{type="undead", subtype="wight", number=resolvers.mbonus(2, 2)},
 	},
-	resolvers.talents{ [Talents.T_MANA_POOL]=3, [Talents.T_FLAMESHOCK]=3, [Talents.T_LIGHTNING]=4, [Talents.T_CORROSIVE_VAPOUR]=3, [Talents.T_THUNDERSTORM]=2,
-		[Talents.T_MIND_DISRUPTION]=4,
+	resolvers.talents{ [Talents.T_FLAMESHOCK]={base=3, every=5, max=7}, [Talents.T_LIGHTNING]={base=4, every=5, max=8}, [Talents.T_CORROSIVE_VAPOUR]={base=3, every=5, max=7}, [Talents.T_THUNDERSTORM]={base=2, every=5, max=7},
+		[Talents.T_MIND_DISRUPTION]={base=4, every=5, max=8},
 	},
 }
diff --git a/game/modules/tome/data/general/npcs/xorn.lua b/game/modules/tome/data/general/npcs/xorn.lua
index a8c4924769..54f6206757 100644
--- a/game/modules/tome/data/general/npcs/xorn.lua
+++ b/game/modules/tome/data/general/npcs/xorn.lua
@@ -25,7 +25,7 @@ newEntity{
 	display = "X", color=colors.UMBER,
 
 	blood_color = colors.UMBER,
-	combat = { dam=resolvers.mbonus(46, 15), atk=15, apr=15, dammod={str=0.8} },
+	combat = { dam=resolvers.levelup(resolvers.mbonus(46, 15), 1, 0.8), atk=15, apr=15, dammod={str=0.8} },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	resolvers.drops{chance=100, nb=1, {type="money"} },
@@ -61,7 +61,7 @@ newEntity{ base = "BASE_NPC_XORN",
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 12, combat_def = 0,
 	move_project = {[DamageType.DIG]=1},
-	resolvers.talents{ [Talents.T_MIND_DISRUPTION]=2, },
+	resolvers.talents{ [Talents.T_MIND_DISRUPTION]={base=2, every=5, max=6}, },
 }
 
 newEntity{ base = "BASE_NPC_XORN",
@@ -72,7 +72,7 @@ newEntity{ base = "BASE_NPC_XORN",
 	max_life = resolvers.rngavg(130,140),
 	combat_armor = 15, combat_def = 10,
 	combat = { damtype=DamageType.ACID },
-	resolvers.talents{ [Talents.T_CONSTRICT]=4, },
+	resolvers.talents{ [Talents.T_CONSTRICT]={base=4, every=7, max=8}, },
 }
 
 newEntity{ base = "BASE_NPC_XORN",
@@ -83,7 +83,7 @@ newEntity{ base = "BASE_NPC_XORN",
 	max_life = resolvers.rngavg(130,140),
 	combat_armor = 15, combat_def = 10,
 	combat = { damtype=DamageType.ACID },
-	resolvers.talents{ [Talents.T_CONSTRICT]=4, [Talents.T_RUSH]=2, },
+	resolvers.talents{ [Talents.T_CONSTRICT]={base=4, every=7, max=8}, [Talents.T_RUSH]=2, },
 }
 
 newEntity{ base = "BASE_NPC_XORN",
@@ -176,14 +176,14 @@ newEntity{ base = "BASE_NPC_XORN", define_as = "FULL_HARKOR_ZUN",
 	ai_tactic = resolvers.tactic"melee",
 
 	resolvers.talents{
-		[Talents.T_CONSTRICT]=4,
+		[Talents.T_CONSTRICT]={base=4, every=7, max=8},
 		[Talents.T_RUSH]=4,
-		[Talents.T_STONE_SKIN]=4,
-		[Talents.T_STRIKE]=4,
-		[Talents.T_EARTHQUAKE]=5,
-		[Talents.T_EARTHEN_MISSILES]=5,
-		[Talents.T_CRYSTALLINE_FOCUS]=5,
-		[Talents.T_STONE_SKIN]=5,
+		[Talents.T_STONE_SKIN]={base=4, every=7, max=8},
+		[Talents.T_STRIKE]={base=4, every=7, max=8},
+		[Talents.T_EARTHQUAKE]={base=5, every=7, max=9},
+		[Talents.T_EARTHEN_MISSILES]={base=4, every=7, max=8},
+		[Talents.T_CRYSTALLINE_FOCUS]={base=4, every=7, max=8},
+		[Talents.T_STONE_SKIN]={base=4, every=7, max=8},
 	},
 	resolvers.sustains_at_birth(),
 
diff --git a/game/modules/tome/data/general/npcs/yaech.lua b/game/modules/tome/data/general/npcs/yaech.lua
index e926b2c395..65b21322ec 100644
--- a/game/modules/tome/data/general/npcs/yaech.lua
+++ b/game/modules/tome/data/general/npcs/yaech.lua
@@ -69,8 +69,8 @@ newEntity{ base = "BASE_NPC_YAECH",
 		{type="weapon", subtype="trident", autoreq=true, special_rarity="trident_rarity"},
 	},
 	resolvers.talents{
-		[Talents.T_MINDHOOK]=1,
-		[Talents.T_PERFECT_CONTROL]=2,
+		[Talents.T_MINDHOOK]={base=1, every=7, max=5},
+		[Talents.T_PERFECT_CONTROL]={base=2, every=7, max=5},
 	},
 }
 
@@ -84,10 +84,10 @@ newEntity{ base = "BASE_NPC_YAECH",
 		{type="weapon", subtype="trident", autoreq=true, special_rarity="trident_rarity"},
 	},
 	resolvers.talents{
-		[Talents.T_KINETIC_AURA]=1,
-		[Talents.T_CHARGED_AURA]=1,
-		[Talents.T_KINETIC_SHIELD]=2,
-		[Talents.T_EXOTIC_WEAPONS_MASTERY]=1,
+		[Talents.T_KINETIC_AURA]={base=1, every=7, max=5},
+		[Talents.T_CHARGED_AURA]={base=1, every=7, max=5},
+		[Talents.T_KINETIC_SHIELD]={base=2, every=7, max=5},
+		[Talents.T_EXOTIC_WEAPONS_MASTERY]={base=1, every=7, max=10},
 	},
 }
 
@@ -101,8 +101,8 @@ newEntity{ base = "BASE_NPC_YAECH",
 		{type="weapon", subtype="trident", autoreq=true, special_rarity="trident_rarity"},
 	},
 	resolvers.talents{
-		[Talents.T_REACH]=3,
-		[Talents.T_PYROKINESIS]=2,
-		[Talents.T_MINDLASH]=1,
+		[Talents.T_REACH]={base=3, every=7, max=5},
+		[Talents.T_PYROKINESIS]={base=2, every=7, max=5},
+		[Talents.T_MINDLASH]={base=1, every=7, max=5},
 	},
 }
diff --git a/game/modules/tome/data/general/npcs/ziguranth.lua b/game/modules/tome/data/general/npcs/ziguranth.lua
index 150ca0801d..d2f072ccd2 100644
--- a/game/modules/tome/data/general/npcs/ziguranth.lua
+++ b/game/modules/tome/data/general/npcs/ziguranth.lua
@@ -65,12 +65,12 @@ newEntity{ base = "BASE_NPC_ZIGURANTH",
 	},
 	combat_armor = 10, combat_def = 6,
 	resolvers.talents{
-		[Talents.T_RESOLVE]=4,
-		[Talents.T_AURA_OF_SILENCE]=4,
-		[Talents.T_WEAPON_COMBAT]=4,
-		[Talents.T_WEAPONS_MASTERY]=4,
-		[Talents.T_SHIELD_PUMMEL]=4,
-		[Talents.T_RUSH]=4,
+		[Talents.T_RESOLVE]={base=4, every=5, max=8},
+		[Talents.T_AURA_OF_SILENCE]={base=4, every=5, max=8},
+		[Talents.T_WEAPON_COMBAT]={base=4, every=5, max=8},
+		[Talents.T_WEAPONS_MASTERY]={base=4, every=5, max=8},
+		[Talents.T_SHIELD_PUMMEL]={base=4, every=5, max=8},
+		[Talents.T_RUSH]={base=4, every=5, max=8},
 	},
 }
 
@@ -93,15 +93,15 @@ newEntity{ base = "BASE_NPC_ZIGURANTH",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
 
 	resolvers.talents{
-		[Talents.T_RESOLVE]=4,
-		[Talents.T_MANA_CLASH]=3,
-		[Talents.T_RESILIENCE]=4,
-		[Talents.T_RITCH_FLAMESPITTER]=4,
-		[Talents.T_HYDRA]=4,
-		[Talents.T_WAR_HOUND]=4,
-		[Talents.T_MINOTAUR]=4,
-		[Talents.T_FIRE_DRAKE]=4,
-		[Talents.T_SPIDER]=4,
+		[Talents.T_RESOLVE]={base=4, every=5, max=8},
+		[Talents.T_MANA_CLASH]={base=3, every=5, max=7},
+		[Talents.T_RESILIENCE]={base=4, every=5, max=8},
+		[Talents.T_RITCH_FLAMESPITTER]={base=4, every=5, max=8},
+		[Talents.T_HYDRA]={base=4, every=5, max=8},
+		[Talents.T_WAR_HOUND]={base=4, every=5, max=8},
+		[Talents.T_MINOTAUR]={base=4, every=5, max=8},
+		[Talents.T_FIRE_DRAKE]={base=4, every=5, max=8},
+		[Talents.T_SPIDER]={base=4, every=5, max=8},
 	},
 }
 
@@ -124,13 +124,13 @@ newEntity{ base = "BASE_NPC_ZIGURANTH",
 	ai = "tactical",
 
 	resolvers.talents{
-		[Talents.T_RESOLVE]=4,
-		[Talents.T_ANTIMAGIC_SHIELD]=3,
-		[Talents.T_FIRE_BREATH]=4,
-		[Talents.T_ICE_BREATH]=4,
-		[Talents.T_LIGHTNING_BREATH]=4,
-		[Talents.T_ICY_SKIN]=4,
-		[Talents.T_LIGHTNING_SPEED]=4,
-		[Talents.T_TORNADO]=4,
+		[Talents.T_RESOLVE]={base=4, every=5, max=8},
+		[Talents.T_ANTIMAGIC_SHIELD]={base=3, every=5, max=8},
+		[Talents.T_FIRE_BREATH]={base=4, every=5, max=8},
+		[Talents.T_ICE_BREATH]={base=4, every=5, max=8},
+		[Talents.T_LIGHTNING_BREATH]={base=4, every=5, max=8},
+		[Talents.T_ICY_SKIN]={base=4, every=5, max=8},
+		[Talents.T_LIGHTNING_SPEED]={base=4, every=5, max=8},
+		[Talents.T_TORNADO]={base=4, every=5, max=8},
 	},
 }
diff --git a/game/modules/tome/resolvers.lua b/game/modules/tome/resolvers.lua
index 7aa1284ccb..49d83b6f51 100644
--- a/game/modules/tome/resolvers.lua
+++ b/game/modules/tome/resolvers.lua
@@ -223,7 +223,7 @@ function resolvers.calc.chatfeature(t, e)
 end
 
 --- Random bonus based on level (sets the mbonus max level, we use 60 instead of 50 to get some forced randomness at high level)
-resolvers.mbonus_max_level = 60
+resolvers.mbonus_max_level = 90
 
 --- Random bonus based on level and material quality
 resolvers.current_level = 1
-- 
GitLab