diff --git a/game/engines/default/engine/GameEnergyBased.lua b/game/engines/default/engine/GameEnergyBased.lua
index e29eda7535aa492c17f8649b0b50ec026e23a869..2956d7e7c1d12b229219a7e8b820dcae283b7237 100644
--- a/game/engines/default/engine/GameEnergyBased.lua
+++ b/game/engines/default/engine/GameEnergyBased.lua
@@ -66,7 +66,7 @@ function _M:tick()
 			if e and e.act and e.energy then
 --				print("<ENERGY", e.name, e.uid, "::", e.energy.value, self.paused, "::", e.player)
 				if e.energy.value < self.energy_to_act then
-					e.energy.value = (e.energy.value or 0) + self.energy_per_tick * (e.energy.mod or 1)
+					e.energy.value = (e.energy.value or 0) + self.energy_per_tick * (e.energy.mod or 1) * (e.global_speed or 1)
 				end
 				if e.energy.value >= self.energy_to_act then
 					e.energy.used = false
@@ -82,7 +82,7 @@ function _M:tick()
 		e = arr[i]
 		if e and e.act and e.energy then
 			if e.energy.value < self.energy_to_act then
-				e.energy.value = (e.energy.value or 0) + self.energy_per_tick * (e.energy.mod or 1)
+				e.energy.value = (e.energy.value or 0) + self.energy_per_tick * (e.energy.mod or 1) * (e.global_speed or 1)
 			end
 			if e.energy.value >= self.energy_to_act then
 				e.energy.used = false
diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 01ae2c2ad2c9f3c3d830495f2fb2fa677ac64e53..01e0644ea1a3859c2d465025087add44796a7024 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -74,9 +74,11 @@ function _M:init(t, no_default)
 	self.combat_atk = 0
 	self.combat_apr = 0
 	self.combat_dam = 0
+	self.global_speed = 1
+	self.movement_speed = 1
 	self.combat_physcrit = 0
-	self.combat_physspeed = 0
-	self.combat_spellspeed = 0
+	self.combat_physspeed = 1
+	self.combat_spellspeed = 1
 	self.combat_spellcrit = 0
 	self.combat_spellpower = 0
 	self.combat_mindpower = 0
diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index a1de528c0521d25e97389b074e1d99c0f295a537..7b101bb0b86b1314620d6da61704cf93437044b3 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -440,6 +440,8 @@ function _M:getTextualDesc()
 	if w.invisible then desc:add(("Invisibility: %d"):format(w.invisible), true) end
 
 	if w.movement_speed then desc:add(("Movement speed: %d%%"):format(w.movement_speed * 100), true) end
+	if w.combat_physspeed then desc:add(("Combat speed: %d%%"):format(w.combat_physspeed * 100), true) end
+	if w.combat_spellspeed then desc:add(("Casting speed: %d%%"):format(w.combat_spellspeed * 100), true) end
 
 	if w.healing_factor then desc:add(("Increases all healing by %d%%"):format(w.healing_factor * 100), true) end
 
diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua
index 5aaf124eba35e77b488d3e5d45a026feb5587e00..59dd2338e9b856d9ae9ca71ff3a83b6a0ab21b30 100644
--- a/game/modules/tome/class/interface/Combat.lua
+++ b/game/modules/tome/class/interface/Combat.lua
@@ -552,7 +552,7 @@ end
 --- Gets the weapon speed
 function _M:combatSpeed(weapon)
 	weapon = weapon or self.combat or {}
-	return self.combat_physspeed + (weapon.physspeed or 1)
+	return (weapon.physspeed or 1) / self.combat_physspeed
 end
 
 --- Gets the crit rate
@@ -679,7 +679,7 @@ end
 
 --- Gets spellspeed
 function _M:combatSpellSpeed()
-	return self.combat_spellspeed + 1
+	return 1 / self.combat_spellspeed
 end
 
 --- Computes physical crit for a damage
@@ -832,10 +832,7 @@ end
 
 --- Computes movement speed
 function _M:combatMovementSpeed()
-	local v = util.bound(1 + (self.movement_speed or 0), 0.2, 10)
-	if v >= 1 then return v
-	else return math.pow(0.4, 1 - v)
-	end
+	return (self.base_movement_speed or 1) / self.movement_speed
 end
 
 --- Check if the actor has a gem bomb in quiver
diff --git a/game/modules/tome/data/birth/races/undead.lua b/game/modules/tome/data/birth/races/undead.lua
index dc809e8d261cebb796f2f19d6b39cbd826a1b2cf..5f0ed99a24cc88b24295b4296304a61b28fb533f 100644
--- a/game/modules/tome/data/birth/races/undead.lua
+++ b/game/modules/tome/data/birth/races/undead.lua
@@ -104,7 +104,7 @@ newBirthDescriptor
 		cut_immune = 1,
 		stun_immune = 0.5,
 		fear_immune = 1,
-		energy = {mod=0.8},
+		global_speed = 0.8,
 	},
 	experience = 1.4,
 }
diff --git a/game/modules/tome/data/general/npcs/aquatic_critter.lua b/game/modules/tome/data/general/npcs/aquatic_critter.lua
index f9ba2b65408cb3b8a1f39882eabc6ea7ce89b258..c04fed8ebbdc99eab9c195d32bb8424ba0eb4820 100644
--- a/game/modules/tome/data/general/npcs/aquatic_critter.lua
+++ b/game/modules/tome/data/general/npcs/aquatic_critter.lua
@@ -29,7 +29,6 @@ newEntity{
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
 	stats = { str=12, dex=10, mag=3, con=13 },
-	energy = { mod=1 },
 	combat_armor = 1, combat_def = 1,
 	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,
@@ -58,7 +57,7 @@ newEntity{ base = "BASE_NPC_AQUATIC_CRITTER",
 	resolvers.talents{ [Talents.T_CHAIN_LIGHTNING]=3, [Talents.T_LIGHTNING]=3 },
 	on_die = function(self, who)
 		local part = "ELECTRIC_EEL_TAIL"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
@@ -95,7 +94,7 @@ newEntity{ base = "BASE_NPC_AQUATIC_CRITTER",
 	resolvers.talents{ [Talents.T_GRAB]=3, },
 	on_die = function(self, who)
 		local part = "SQUID_INK"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
@@ -110,7 +109,7 @@ newEntity{ base = "BASE_NPC_AQUATIC_CRITTER",
 	resolvers.talents{ [Talents.T_GRAB]=3, [Talents.T_BLINDING_INK]=3, },
 	on_die = function(self, who)
 		local part = "SQUID_INK"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/aquatic_demon.lua b/game/modules/tome/data/general/npcs/aquatic_demon.lua
index 17128a795cc75d14148b22ac1146a585309c42c4..e20176dc6314d01ed7d789c5645930bfb9ea6a2f 100644
--- a/game/modules/tome/data/general/npcs/aquatic_demon.lua
+++ b/game/modules/tome/data/general/npcs/aquatic_demon.lua
@@ -30,7 +30,6 @@ newEntity{
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
 	stats = { str=12, dex=10, mag=3, con=13 },
-	energy = { mod=1 },
 	combat_armor = 1, combat_def = 1,
 	combat = { dam=resolvers.levelup(resolvers.mbonus(46, 20), 1, 1), atk=15, apr=7, dammod={str=0.7} },
 	max_life = resolvers.rngavg(100,120),
diff --git a/game/modules/tome/data/general/npcs/bear.lua b/game/modules/tome/data/general/npcs/bear.lua
index 3a82db712da0e7d1d6fc775ec586b1ad3b1ee773..dc6e8dbc57e1c238e357e095c39b15dca356b265 100644
--- a/game/modules/tome/data/general/npcs/bear.lua
+++ b/game/modules/tome/data/general/npcs/bear.lua
@@ -31,7 +31,7 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=5, },
-	energy = { mod=0.9 },
+	global_speed = 0.9,
 	stats = { str=18, dex=13, mag=5, con=15 },
 	infravision = 20,
 	rank = 2,
@@ -45,7 +45,7 @@ newEntity{
 	resists = { [DamageType.FIRE] = 20, [DamageType.COLD] = 20, [DamageType.POISON] = 20 },
 	on_die = function(self, who)
 		local part = "BEAR_PAW"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/bird.lua b/game/modules/tome/data/general/npcs/bird.lua
index 858248d1ecb2bde0aa3daeb10c3dca5820725b74..2a315d0dc35dcc5415c771827154347db21ffc42 100644
--- a/game/modules/tome/data/general/npcs/bird.lua
+++ b/game/modules/tome/data/general/npcs/bird.lua
@@ -30,7 +30,7 @@ newEntity{
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
 
 	stats = { str=12, dex=20, mag=3, con=13 },
-	energy = { mod=1.2 },
+	global_speed = 1.2,
 	combat_armor = 1, combat_def = 5,
 	combat = { dam=5, atk=15, apr=7, dammod={str=0.6} },
 	infravision = 20,
diff --git a/game/modules/tome/data/general/npcs/bone-giant.lua b/game/modules/tome/data/general/npcs/bone-giant.lua
index 85908f21dc1ebf6cbe242782d650604215a5918b..95264ba3172bd0755b430609181eed7585b1a0f5 100644
--- a/game/modules/tome/data/general/npcs/bone-giant.lua
+++ b/game/modules/tome/data/general/npcs/bone-giant.lua
@@ -37,7 +37,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=1 },
 	stats = { str=20, dex=52, mag=16, con=16 },
 
 	resists = { [DamageType.PHYSICAL] = 20, [DamageType.BLIGHT] = 20, [DamageType.COLD] = 50, },
@@ -53,7 +52,7 @@ newEntity{
 	undead = 1,
 	on_die = function(self, who)
 		local part = "BONE_GOLEM_DUST"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/canine.lua b/game/modules/tome/data/general/npcs/canine.lua
index 09180d15ddde082991adcf4a09ff876c3ec4b530..488a6c2732c5b2f9bbed05d12c009e930f306d18 100644
--- a/game/modules/tome/data/general/npcs/canine.lua
+++ b/game/modules/tome/data/general/npcs/canine.lua
@@ -34,7 +34,7 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=1.1 },
+	global_speed = 1.2,
 	stats = { str=10, dex=17, mag=3, con=7 },
 	combat = { dammod={str=0.6} },
 	combat_armor = 1, combat_def = 1,
@@ -96,7 +96,7 @@ newEntity{ base = "BASE_NPC_CANINE",
 	resolvers.talents{ [Talents.T_HOWL]=3, },
 	on_die = function(self, who)
 		local part = "WARG_CLAW"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/cold-drake.lua b/game/modules/tome/data/general/npcs/cold-drake.lua
index 03ecc5d2cde6014aa92a08fad34f8dff3df0761d..4cae85ce0414bfcbf3d9dc6f8523f3392770fc4d 100644
--- a/game/modules/tome/data/general/npcs/cold-drake.lua
+++ b/game/modules/tome/data/general/npcs/cold-drake.lua
@@ -34,7 +34,6 @@ newEntity{
 
 	autolevel = "drake",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=1 },
 	stats = { str=20, dex=20, mag=30, con=16 },
 
 	resists = { [DamageType.COLD] = 100, },
@@ -106,7 +105,7 @@ newEntity{ base = "BASE_NPC_COLD_DRAKE",
 	},
 	on_die = function(self, who)
 		local part = "ICE_WYRM_TOOTH"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/construct.lua b/game/modules/tome/data/general/npcs/construct.lua
index f40ca5ee8981e8024a1e42fd20e0326a5e406822..4a8c95b405f7f4393bc6ef1491e8d060bb1ee6ea 100644
--- a/game/modules/tome/data/general/npcs/construct.lua
+++ b/game/modules/tome/data/general/npcs/construct.lua
@@ -46,7 +46,6 @@ newEntity{
 
 	autolevel = "warriormage",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=1 },
 	stats = { str=20, mag=16, con=22 },
 	resolvers.talents{
 		[Talents.T_STAMINA_POOL]=1, [Talents.T_MANA_POOL]=1,
diff --git a/game/modules/tome/data/general/npcs/crystal.lua b/game/modules/tome/data/general/npcs/crystal.lua
index cf9cc981ab22e7e827c6fd1d5ec4a7e9463c2136..0597706023b7c49fa7ca9b669e4ac592df72d8b6 100644
--- a/game/modules/tome/data/general/npcs/crystal.lua
+++ b/game/modules/tome/data/general/npcs/crystal.lua
@@ -14,7 +14,7 @@ newEntity{
 
 	max_life = resolvers.rngavg(12,34),
 	stats = { str=1, dex=5, mag=20, con=1 },
-	energy = { mod=0.5 },
+	global_speed = 0.7,
 	infravision = 20,
 	combat_def = 1,
 	never_move = 1,
@@ -53,7 +53,7 @@ newEntity{ name = "wisp",
 	life_rating = 1, rank = 1, size_category = 1,
 	autolevel = "caster",
 	ai = "dumb_talented_simple", ai_state = { ai_move = "move_astar", talent_in = 1 },
-	energy = { mod = 1 },
+	global_speed = 1,
 	stats = { str = 9, dex = 20, mag = 20 },
 	resolvers.talents{
 		[Talents.T_EXPLODE] = 3,
diff --git a/game/modules/tome/data/general/npcs/elven-caster.lua b/game/modules/tome/data/general/npcs/elven-caster.lua
index ea885895cb2305d793468768577c5439307151d6..d8873c3c18941cf305ad5037345f362a932693d6 100644
--- a/game/modules/tome/data/general/npcs/elven-caster.lua
+++ b/game/modules/tome/data/general/npcs/elven-caster.lua
@@ -47,7 +47,6 @@ newEntity{
 
 	autolevel = "caster",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
-	energy = { mod=1 },
 	stats = { str=20, dex=8, mag=6, con=16 },
 }
 
diff --git a/game/modules/tome/data/general/npcs/elven-warrior.lua b/game/modules/tome/data/general/npcs/elven-warrior.lua
index 8b34ded8e7aeeccc5f8f9dcb2e371d65ebc6b494..0ab8bbefb5e893e2c49410c470495122ac331217 100644
--- a/game/modules/tome/data/general/npcs/elven-warrior.lua
+++ b/game/modules/tome/data/general/npcs/elven-warrior.lua
@@ -46,7 +46,6 @@ newEntity{
 
 	autolevel = "warrior",
 	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 },
 }
 
diff --git a/game/modules/tome/data/general/npcs/faeros.lua b/game/modules/tome/data/general/npcs/faeros.lua
index 1f7c54dc5d5cbb63981267ee020e2c1d0b97c217..f8809cfa3aa22277ed6ea4a7f3b9651920094494 100644
--- a/game/modules/tome/data/general/npcs/faeros.lua
+++ b/game/modules/tome/data/general/npcs/faeros.lua
@@ -37,7 +37,6 @@ newEntity{
 
 	autolevel = "dexmage",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=1 },
 	stats = { str=10, dex=8, mag=6, con=16 },
 
 	resists = { [DamageType.PHYSICAL] = 10, [DamageType.FIRE] = 100, [DamageType.COLD] = -30, },
@@ -47,7 +46,7 @@ newEntity{
 	disease_immune = 1,
 	on_die = function(self, who)
 		local part = "FAEROS_ASH"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/fire-drake.lua b/game/modules/tome/data/general/npcs/fire-drake.lua
index 80fe529b3a991f6d025130dcdf0ebdf8ebc400c7..f51649411e3f3936d54c6f6933bed4d6a6de1414 100644
--- a/game/modules/tome/data/general/npcs/fire-drake.lua
+++ b/game/modules/tome/data/general/npcs/fire-drake.lua
@@ -34,7 +34,6 @@ newEntity{
 
 	autolevel = "drake",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=1 },
 	stats = { str=20, dex=20, mag=30, con=16 },
 
 	resists = { [DamageType.FIRE] = 100, },
@@ -110,7 +109,7 @@ newEntity{ base = "BASE_NPC_FIRE_DRAKE",
 	},
 	on_die = function(self, who)
 		local part = "FIRE_WYRM_SALIVA"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/ghost.lua b/game/modules/tome/data/general/npcs/ghost.lua
index 150bef39a9d8aacc8e1229f2428152008153ce2c..93abcad5f3369b024c0b5a9cdcefb91745abc29b 100644
--- a/game/modules/tome/data/general/npcs/ghost.lua
+++ b/game/modules/tome/data/general/npcs/ghost.lua
@@ -30,7 +30,6 @@ newEntity{
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	autolevel = "warriormage",
 	ai = "dumb_talented_simple", ai_state = { ai_target="target_player_radius", sense_radius=40, talent_in=2, },
-	energy = { mod=1 },
 	stats = { str=14, dex=18, mag=20, con=12 },
 	rank = 2,
 	size_category = 3,
diff --git a/game/modules/tome/data/general/npcs/ghoul.lua b/game/modules/tome/data/general/npcs/ghoul.lua
index 09739301925571fdf153ed446f6722221ea8541c..2e988905e66e685a8515f8c82a761f8a1c828a6b 100644
--- a/game/modules/tome/data/general/npcs/ghoul.lua
+++ b/game/modules/tome/data/general/npcs/ghoul.lua
@@ -30,7 +30,6 @@ newEntity{
 	drops = resolvers.drops{chance=70, nb=1, {type="money"}, {} },
 	autolevel = "ghoul",
 	ai = "dumb_talented_simple", ai_state = { talent_in=2, ai_move="move_ghoul", },
-	energy = { mod=1 },
 	stats = { str=14, dex=12, mag=10, con=12 },
 	rank = 2,
 	size_category = 3,
@@ -46,7 +45,7 @@ newEntity{
 	undead = 1,
 	on_die = function(self, who)
 		local part = "GHOUL_FLESH"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/gwelgoroth.lua b/game/modules/tome/data/general/npcs/gwelgoroth.lua
index c9bc1fa2036b38a10e3e212c09088cdf2457f70c..45e2689f637ed7e277a8fc2c1f7e464d75afad5e 100644
--- a/game/modules/tome/data/general/npcs/gwelgoroth.lua
+++ b/game/modules/tome/data/general/npcs/gwelgoroth.lua
@@ -36,7 +36,6 @@ newEntity{
 
 	autolevel = "dexmage",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=1 },
 	stats = { str=10, dex=8, mag=6, con=16 },
 
 	resists = { [DamageType.PHYSICAL] = 10, [DamageType.LIGHTNING] = 100, [DamageType.FIRE] = -30, },
diff --git a/game/modules/tome/data/general/npcs/horror-corrupted.lua b/game/modules/tome/data/general/npcs/horror-corrupted.lua
index 357e48d75b192d71c8ccf9539b9cf919990ac908..cc9c17b73366a83d9e32463f7b9abdfe7fc3ea77 100644
--- a/game/modules/tome/data/general/npcs/horror-corrupted.lua
+++ b/game/modules/tome/data/general/npcs/horror-corrupted.lua
@@ -32,7 +32,6 @@ newEntity{
 	combat = { atk=2, dammod={str=0.6} },
 --	max_life = resolvers.rngavg(30, 50),
 	stats = { str=16, con=16 },
-	energy = { mod=1 },
 	infravision = 20,
 	rank = 2,
 	size_category = 3,
@@ -160,8 +159,6 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	desc = "A giant hairless bat with the face of a dwarven man twisted into a constant scream.  Pestulant sores cover it's malformed body and your heart weakens as it nears.",
 	level_range = {1, nil}, exp_worth = 1,
 
-	energy = { mod=0.7 },
-
 	combat = { atk=10, dammod={dex=0.6} },
 	combat_armor = 0, combat_def = 6,
 	max_life = resolvers.rngavg(10, 20),
@@ -172,7 +169,7 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	autolevel = "rogue",
 	ai = "tactical", ai_state = { talent_in=2, ai_move="move_astar", },
 	ai_tactic = resolvers.tactic "ranged",
-	energy = { mod=1.2 },
+	global_speed = 1.2,
 
 	resists = { [DamageType.BLIGHT] = 50, [DamageType.DARKNESS] = 20,  [DamageType.LIGHT] = - 20 },
 
@@ -199,7 +196,7 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	size_category = 3,
 	autolevel = "warrior",
 
-	energy = { mod=0.8 },
+	global_speed = 0.8,
 
 	resists = { [DamageType.ACID] = 50, [DamageType.DARKNESS] = 20,  [DamageType.LIGHT] = - 20 },
 
@@ -229,7 +226,7 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	autolevel = "caster",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
 
-	energy = { mod=0.8 },
+	global_speed = 0.8,
 
 	resists = { [DamageType.DARKNESS] = 50,  [DamageType.LIGHT] = - 20 },
 
diff --git a/game/modules/tome/data/general/npcs/horror.lua b/game/modules/tome/data/general/npcs/horror.lua
index 9c52456b2e00f527f98842e29db16a3c3c4e5644..145a0726993e6da0eaef044b3409ed647355d83e 100644
--- a/game/modules/tome/data/general/npcs/horror.lua
+++ b/game/modules/tome/data/general/npcs/horror.lua
@@ -31,7 +31,6 @@ newEntity{
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
 
 	stats = { str=22, dex=20, wil=15, con=15 },
-	energy = { mod=1 },
 	combat_armor = 0, combat_def = 0,
 	combat = { dam=5, atk=15, apr=7, dammod={str=0.6} },
 	infravision = 20,
@@ -118,7 +117,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	resolvers.sustains_at_birth(),
 	on_die = function(self, who)
 		local part = "BLOATED_HORROR_HEART"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
@@ -397,7 +396,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	},
 	on_die = function(self, who)
 		local part = "LUMINOUS_HORROR_DUST"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
@@ -492,7 +491,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	size_category = 4,
 	autolevel = "warrior",
 	max_life = resolvers.rngavg(120, 150),
-	energy = { mod=0.7 },
+	global_speed = 0.7,
 	combat_armor = 1, combat_def = 0,
 	combat = { dam=resolvers.levelup(resolvers.rngavg(25,150), 1, 1.2), atk=resolvers.rngavg(25,130), apr=1, dammod={str=1.1} },
 
@@ -542,7 +541,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	rarity = 6,
 	size_category = 3,
 	max_life = resolvers.rngavg(50,70),
-	energy = { mod=1.2 },
+	global_speed = 1.2,
 	autolevel = "rogue",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
 	combat_armor = 10, combat_def = 10,
@@ -610,7 +609,7 @@ You can discern a huge round mouth covered in razor-sharp teeth.]],
 	rank = 3.5,
 	no_breath = 1,
 	size_category = 4,
-	movement_speed = 1.2,
+	movement_speed = 0.8,
 
 	stun_immune = 1,
 	knockback_immune = 1,
diff --git a/game/modules/tome/data/general/npcs/jelly.lua b/game/modules/tome/data/general/npcs/jelly.lua
index 64bcbd9f8e1c0a9384697b3a57582b0436d0611e..934b652b96c4a9528ff73b1e7d7ffd81f8111ece 100644
--- a/game/modules/tome/data/general/npcs/jelly.lua
+++ b/game/modules/tome/data/general/npcs/jelly.lua
@@ -30,7 +30,6 @@ newEntity{
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { talent_in=1, },
 	stats = { str=10, dex=15, mag=3, con=10 },
-	energy = { mod=1 },
 	combat_armor = 1, combat_def = 1,
 	never_move = 1,
 	rank = 2,
diff --git a/game/modules/tome/data/general/npcs/lich.lua b/game/modules/tome/data/general/npcs/lich.lua
index a7ed46fc88f8f87fdc2c0cd1579c21f8140b8a88..8ccf704cbf2423f847da4550b88496ea817bcf45 100644
--- a/game/modules/tome/data/general/npcs/lich.lua
+++ b/game/modules/tome/data/general/npcs/lich.lua
@@ -42,7 +42,6 @@ newEntity{
 	autolevel = "caster",
 	ai = "tactical", ai_state = { talent_in=1, },
 	ai_tactic = resolvers.tactic"ranged",
-	energy = { mod=1 },
 	stats = { str=8, dex=15, mag=20, wil=18, con=10, cun=18 },
 
 	resists = { [DamageType.NATURE] = 90, [DamageType.FIRE] = 20, [DamageType.MIND] = 100, [DamageType.LIGHT] = -60, [DamageType.DARKNESS] = 95, [DamageType.BLIGHT] = 90 },
diff --git a/game/modules/tome/data/general/npcs/major-demon.lua b/game/modules/tome/data/general/npcs/major-demon.lua
index 9ae8eaebb38497af03ccd94a2a30d36b96b6fa55..8c03cd515416fc289d0916692cce713859b2bca2 100644
--- a/game/modules/tome/data/general/npcs/major-demon.lua
+++ b/game/modules/tome/data/general/npcs/major-demon.lua
@@ -30,7 +30,6 @@ newEntity{
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
 	stats = { str=22, dex=10, mag=20, con=13 },
-	energy = { mod=1 },
 	combat_armor = 1, combat_def = 1,
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 },
 	combat = { dam=resolvers.mbonus(46, 20), atk=15, apr=7, dammod={str=0.7} },
@@ -45,7 +44,7 @@ newEntity{
 	resolvers.inscriptions(1, "rune"),
 	on_die = function(self, who)
 		local part = "GREATER_DEMON_BILE"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
@@ -101,7 +100,7 @@ Oh, and it is twice as big, too.]],
 	level_range = {35, nil}, exp_worth = 1,
 	rarity = 4,
 	rank = 3,
-	energy = {mod=1.4},
+	global_speed = 1.4,
 	size_category = 5,
 	autolevel = "warriormage",
 	life_rating = 20,
@@ -132,7 +131,7 @@ newEntity{ base = "BASE_NPC_MAJOR_DEMON",
 	level_range = {35, nil}, exp_worth = 1,
 	rarity = 4,
 	rank = 3,
-	energy = {mod=1.2},
+	global_speed = 1.2,
 	size_category = 3,
 	autolevel = "caster",
 	life_rating = 6,
@@ -164,7 +163,7 @@ It moves swiftly toward you, casting terrible spells and swinging its weapons at
 	level_range = {39, nil}, exp_worth = 1,
 	rarity = 6,
 	rank = 3,
-	energy = {mod=1.3},
+	global_speed = 1.3,
 	size_category = 4,
 	autolevel = "warriormage",
 	life_rating = 25,
diff --git a/game/modules/tome/data/general/npcs/minor-demon.lua b/game/modules/tome/data/general/npcs/minor-demon.lua
index 2f6d867e3c82041d524d34429ef07cf1f63d3cf3..80d9ad72fdd3c9686d7f71112d56fd01739d676f 100644
--- a/game/modules/tome/data/general/npcs/minor-demon.lua
+++ b/game/modules/tome/data/general/npcs/minor-demon.lua
@@ -30,7 +30,6 @@ newEntity{
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
 	stats = { str=12, dex=10, mag=3, con=13 },
-	energy = { mod=1 },
 	life_rating = 7,
 	combat_armor = 1, combat_def = 1,
 	combat = { dam=resolvers.mbonus(46, 20), atk=15, apr=7, dammod={str=0.7} },
@@ -86,7 +85,7 @@ newEntity{ base = "BASE_NPC_DEMON",
 	},
 	on_die = function(self, who)
 		local part = "WRETCHLING_EYE"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/minotaur.lua b/game/modules/tome/data/general/npcs/minotaur.lua
index c62c8ec7dbc3d986acbb45956d2c469487a0c3d2..20ba76d310930c2c4f551a53934c11c9cb4b079f 100644
--- a/game/modules/tome/data/general/npcs/minotaur.lua
+++ b/game/modules/tome/data/general/npcs/minotaur.lua
@@ -45,13 +45,13 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=5, },
-	energy = { mod=1.2 },
+	global_speed = 1.2,
 	stats = { str=15, dex=12, mag=6, cun=12, con=15 },
 
 	resolvers.tmasteries{ ["technique/2hweapon-offense"]=0.3, ["technique/2hweapon-cripple"]=0.3, ["technique/combat-training"]=0.3, },
 	on_die = function(self, who)
 		local part = "MINOTAUR_NOSE"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/molds.lua b/game/modules/tome/data/general/npcs/molds.lua
index fcdd979075cfe8771dadc9fb3dc061690a40716a..a39a1efb5774522461b7e7f2a36b327f3a27b4ed 100644
--- a/game/modules/tome/data/general/npcs/molds.lua
+++ b/game/modules/tome/data/general/npcs/molds.lua
@@ -29,7 +29,7 @@ newEntity{
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { talent_in=1, },
 	stats = { str=10, dex=15, mag=3, con=3 },
-	energy = { mod=0.5 },
+	global_speed = 0.6,
 	infravision = 20,
 	combat_armor = 1, combat_def = 1,
 	never_move = 1,
diff --git a/game/modules/tome/data/general/npcs/multihued-drake.lua b/game/modules/tome/data/general/npcs/multihued-drake.lua
index 96072d8726ee5b0657a568a947c51456958da9af..845ce7041cc85305b71f2223f616157b0e78d9ec 100644
--- a/game/modules/tome/data/general/npcs/multihued-drake.lua
+++ b/game/modules/tome/data/general/npcs/multihued-drake.lua
@@ -35,7 +35,6 @@ newEntity{
 
 	autolevel = "drake",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
-	energy = { mod=1 },
 	stats = { str=20, dex=20, mag=30, con=16 },
 
 	knockback_immune = 1,
@@ -132,7 +131,7 @@ newEntity{ base = "BASE_NPC_MULTIHUED_DRAKE",
 	},
 	on_die = function(self, who)
 		local part = "MULTIHUED_WYRM_SCALE"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/mummy.lua b/game/modules/tome/data/general/npcs/mummy.lua
index b1c123784738bca2544b87547c7093dd6e090b2c..4b4221e1e38fadedebda70644d4961a61a523a4f 100644
--- a/game/modules/tome/data/general/npcs/mummy.lua
+++ b/game/modules/tome/data/general/npcs/mummy.lua
@@ -30,7 +30,7 @@ newEntity{
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=0.8 },
+	global_speed = 0.8,
 	stats = { str=14, dex=12, mag=10, con=12 },
 	infravision = 20,
 	rank = 2,
@@ -48,7 +48,7 @@ newEntity{
 	undead = 1,
 	on_die = function(self, who)
 		local part = "MUMMY_BONE"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/naga.lua b/game/modules/tome/data/general/npcs/naga.lua
index 347dd396fbe9b2334400081e3c6748bb7c4b9d98..5e1bd6b003566e0be32c3a0a1460bee7d59ae75a 100644
--- a/game/modules/tome/data/general/npcs/naga.lua
+++ b/game/modules/tome/data/general/npcs/naga.lua
@@ -44,11 +44,11 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
-	energy = { mod=1.2 },
+	global_speed = 1.2,
 	stats = { str=15, dex=15, mag=15, con=10 },
 	on_die = function(self, who)
 		local part = "NAGA_TONGUE"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/ooze.lua b/game/modules/tome/data/general/npcs/ooze.lua
index 83df04a465ec6962cb96f2cbf3765c7ee70d152e..c11b4f652a096053ae3364df698a380321465456 100644
--- a/game/modules/tome/data/general/npcs/ooze.lua
+++ b/game/modules/tome/data/general/npcs/ooze.lua
@@ -30,7 +30,7 @@ newEntity{
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
 	stats = { str=10, dex=15, mag=3, con=10 },
-	energy = { mod=0.7 },
+	global_speed = 0.7,
 	combat_armor = 1, combat_def = 1,
 	rank = 1,
 	size_category = 3,
diff --git a/game/modules/tome/data/general/npcs/orc-gorbat.lua b/game/modules/tome/data/general/npcs/orc-gorbat.lua
index cddcbf768e5837e9272b91d702f48d0d5e79905b..805440c3bb33cb066198d25a69558ddeb124dab7 100644
--- a/game/modules/tome/data/general/npcs/orc-gorbat.lua
+++ b/game/modules/tome/data/general/npcs/orc-gorbat.lua
@@ -46,11 +46,10 @@ newEntity{
 
 	autolevel = "warrior",
 	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 },
 	on_die = function(self, who)
 		local part = "ORC_HEART"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/orc-grushnak.lua b/game/modules/tome/data/general/npcs/orc-grushnak.lua
index f31cf46b86e6dbfe8263426e3fe3134454613449..3b342a45513029fae55ff6820d5ee5a8ab0d405a 100644
--- a/game/modules/tome/data/general/npcs/orc-grushnak.lua
+++ b/game/modules/tome/data/general/npcs/orc-grushnak.lua
@@ -45,11 +45,10 @@ newEntity{
 
 	autolevel = "warrior",
 	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 },
 	on_die = function(self, who)
 		local part = "ORC_HEART"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
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 cb3c2dc241c78bff24143bdddf7cd1bdb4dc786c..7c484cdef117423d9008bb921b35c55e4aa9fb48 100644
--- a/game/modules/tome/data/general/npcs/orc-rak-shor.lua
+++ b/game/modules/tome/data/general/npcs/orc-rak-shor.lua
@@ -44,11 +44,10 @@ newEntity{
 
 	autolevel = "caster",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
-	energy = { mod=1 },
 	stats = { str=20, dex=8, mag=6, con=16 },
 	on_die = function(self, who)
 		local part = "ORC_HEART"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/orc-vor.lua b/game/modules/tome/data/general/npcs/orc-vor.lua
index 496677b8c524435ce173bcd46b0afe75e5f99fea..2cfb87e28cd9f6cdec6eb639843d85207348f3aa 100644
--- a/game/modules/tome/data/general/npcs/orc-vor.lua
+++ b/game/modules/tome/data/general/npcs/orc-vor.lua
@@ -46,11 +46,10 @@ newEntity{
 
 	autolevel = "caster",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
-	energy = { mod=1 },
 	stats = { str=10, dex=8, mag=20, con=16 },
 	on_die = function(self, who)
 		local part = "ORC_HEART"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/orc.lua b/game/modules/tome/data/general/npcs/orc.lua
index 7ca14cf8133e4d053f509c3c334f7daf3a5ebfe1..e5316c374a7149fb49e1eedaf64c7f92d8cb9ad6 100644
--- a/game/modules/tome/data/general/npcs/orc.lua
+++ b/game/modules/tome/data/general/npcs/orc.lua
@@ -41,12 +41,11 @@ newEntity{
 
 	autolevel = "warrior",
 	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}, },
 	on_die = function(self, who)
 		local part = "ORC_HEART"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/plant.lua b/game/modules/tome/data/general/npcs/plant.lua
index 371817c48179792442407745d4965e36c7426967..d592bf24f36b159b88caa79102303e8f5c56d781 100644
--- a/game/modules/tome/data/general/npcs/plant.lua
+++ b/game/modules/tome/data/general/npcs/plant.lua
@@ -31,7 +31,6 @@ newEntity{
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { talent_in=3, },
 	stats = { str=10, dex=10, mag=3, con=10 },
-	energy = { mod=1 },
 	infravision = 20,
 	combat_armor = 1, combat_def = 1,
 	rank = 1,
@@ -97,7 +96,7 @@ newEntity{ base = "BASE_NPC_PLANT",
 	resolvers.talents{ [Talents.T_SUMMON]=1 },
 	on_die = function(self, who)
 		local part = "HONEY_TREE_ROOT"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/ritch.lua b/game/modules/tome/data/general/npcs/ritch.lua
index cad9be7aaaff650326e42f912dfe94a1302dd26b..b4dde66522855dd5135c7e9688d3a9ab5a43b33e 100644
--- a/game/modules/tome/data/general/npcs/ritch.lua
+++ b/game/modules/tome/data/general/npcs/ritch.lua
@@ -37,7 +37,7 @@ Vicious predators, they inject corrupting diseases into their foes, and their sh
 
 	autolevel = "slinger",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
-	energy = { mod=1.2 },
+	global_speed = 1.2,
 	stats = { str=15, dex=15, mag=8, con=10 },
 
 	poison_immune = 0.5,
@@ -45,7 +45,7 @@ Vicious predators, they inject corrupting diseases into their foes, and their sh
 	resists = { [DamageType.BLIGHT] = 20, [DamageType.FIRE] = 100 },
 	on_die = function(self, who)
 		local part = "RITCH_STINGER"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/rodent.lua b/game/modules/tome/data/general/npcs/rodent.lua
index b45d8eb66753c0519afde2cf200acea0e06caeb4..f4a00a4b6e6cbd584dd870e643e7d08098fa0137 100644
--- a/game/modules/tome/data/general/npcs/rodent.lua
+++ b/game/modules/tome/data/general/npcs/rodent.lua
@@ -29,7 +29,6 @@ newEntity{ --rodent base
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
-	energy = { mod=1 },
 	stats = { str=8, dex=15, mag=3, con=5 },
 	combat_armor = 1, combat_def = 1,
 	rank = 1,
diff --git a/game/modules/tome/data/general/npcs/skeleton.lua b/game/modules/tome/data/general/npcs/skeleton.lua
index 10a66b7db4b279833d4179c9e99e7bd139e6f454..04cdaae0c9ca6b29b976e348df4963fddf59e0b9 100644
--- a/game/modules/tome/data/general/npcs/skeleton.lua
+++ b/game/modules/tome/data/general/npcs/skeleton.lua
@@ -36,7 +36,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
-	energy = { mod=1 },
 	stats = { str=14, dex=12, mag=10, con=12 },
 
 	resolvers.racial(),
@@ -87,7 +86,7 @@ newEntity{ base = "BASE_NPC_SKELETON",
 	ai = "dumb_talented_simple", ai_state = { talent_in=3, },
 	on_die = function(self, who)
 		local part = "SKELETON_MAGE_SKULL"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/snake.lua b/game/modules/tome/data/general/npcs/snake.lua
index cdc43f787b4d0459af5448552d4a173bb4b98b8a..5379221d3a75d7e80ce080db176aee605e8d9c2d 100644
--- a/game/modules/tome/data/general/npcs/snake.lua
+++ b/game/modules/tome/data/general/npcs/snake.lua
@@ -33,7 +33,7 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { talent_in=3, ai_move="move_snake" },
-	energy = { mod=1.3 },
+	global_speed = 1.3,
 	stats = { str=14, dex=23, mag=5, con=5 },
 	combat_armor = 1, combat_def = 1,
 }
@@ -106,7 +106,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	resolvers.talents{ [Talents.T_BITE_POISON]=3 },
 	on_die = function(self, who)
 		local part = "BLACK_MAMBA_HEAD"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
@@ -121,7 +121,7 @@ newEntity{ base = "BASE_NPC_SNAKE",
 	max_life = resolvers.rngavg(100,120),
 	combat_armor = 14, combat_def = 5,
 	combat = { dam=resolvers.levelup(12, 1, 0.7), atk=10, apr=10 },
-	energy = { mod=0.8 },
+	global_speed = 1,
 
 	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 9eba23ea8cd510ca56bcf280a98dde01b7f75373..5c177bac71669e09baef5097acac7ede6c6b688b 100644
--- a/game/modules/tome/data/general/npcs/snow-giant.lua
+++ b/game/modules/tome/data/general/npcs/snow-giant.lua
@@ -37,7 +37,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=1 },
 	stats = { str=20, dex=8, mag=6, con=16 },
 
 	resolvers.inscriptions(1, "infusion"),
@@ -49,7 +48,7 @@ newEntity{
 	poison_immune = 1,
 	on_die = function(self, who)
 		local part = "SNOW_GIANT_KIDNEY"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/spider.lua b/game/modules/tome/data/general/npcs/spider.lua
index e680e5797e54cc940742165de60a7fd7e2767e8b..a271c81a4ba10682a5d7c1701182ebbc5fe6fe8d 100644
--- a/game/modules/tome/data/general/npcs/spider.lua
+++ b/game/modules/tome/data/general/npcs/spider.lua
@@ -35,7 +35,7 @@ newEntity{
 
 	autolevel = "spider",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
-	energy = { mod=1.2 },
+	global_speed = 1.2,
 	stats = { str=15, dex=15, mag=8, con=10 },
 
 	resolvers.inscriptions(2, "infusion"),
@@ -63,7 +63,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	},
 	on_die = function(self, who)
 		local part = "SPIDER_SPINNERET"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
@@ -183,7 +183,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	},
 	on_die = function(self, who)
 		local part = "FAERLHING_FANG"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/storm-drake.lua b/game/modules/tome/data/general/npcs/storm-drake.lua
index d77dab8f9e16010adaa56d87a2ff94c28fc47a57..aa5a201beab8f537485ef93d170372438e7160c0 100644
--- a/game/modules/tome/data/general/npcs/storm-drake.lua
+++ b/game/modules/tome/data/general/npcs/storm-drake.lua
@@ -34,7 +34,6 @@ newEntity{
 
 	autolevel = "drake",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=1 },
 	stats = { str=20, dex=20, mag=30, con=16 },
 
 	resists = { [DamageType.LIGHTNING] = 100, },
@@ -110,7 +109,7 @@ newEntity{ base = "BASE_NPC_STORM_DRAKE",
 	},
 	on_die = function(self, who)
 		local part = "STORM_WYRM_CLAW"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/sunwall-town.lua b/game/modules/tome/data/general/npcs/sunwall-town.lua
index c88a9f98cfb0e65acdb6047e929130c346be149b..3c5d828ac48c5e19d37026b3222a5bcd7f5257b8 100644
--- a/game/modules/tome/data/general/npcs/sunwall-town.lua
+++ b/game/modules/tome/data/general/npcs/sunwall-town.lua
@@ -39,7 +39,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
-	energy = { mod=1 },
 	stats = { str=12, dex=8, mag=6, con=10 },
 }
 
diff --git a/game/modules/tome/data/general/npcs/swarm.lua b/game/modules/tome/data/general/npcs/swarm.lua
index 5dd91b3ff93fa1e1a84dea63f96f9b5ffe7f9ebe..6efcd9491eca0754c4a923eed6bf19d1d18655a0 100644
--- a/game/modules/tome/data/general/npcs/swarm.lua
+++ b/game/modules/tome/data/general/npcs/swarm.lua
@@ -31,7 +31,7 @@ newEntity{
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
 	stats = { str=1, dex=20, mag=3, con=1 },
-	energy = { mod=2 },
+	global_speed = 2,
 	infravision = 20,
 	combat_armor = 1, combat_def = 10,
 	rank = 1,
@@ -81,7 +81,7 @@ newEntity{ base = "BASE_NPC_INSECT",
 	resolvers.talents{ [Talents.T_BITE_POISON]={base=3, every=10, max=8} },
 	on_die = function(self, who)
 		local part = "HUMMERHORN_WING"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/telugoroth.lua b/game/modules/tome/data/general/npcs/telugoroth.lua
index 96ab6645209fae9522bf1958b4b52b3baa20f3fd..450fe49f98a29bf16a63ee6b1d96147e7914e96f 100644
--- a/game/modules/tome/data/general/npcs/telugoroth.lua
+++ b/game/modules/tome/data/general/npcs/telugoroth.lua
@@ -36,7 +36,7 @@ newEntity{
 
 	autolevel = "dexmage",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
-	energy = { mod=1.5 },
+	global_speed = 1.5,
 	stats = { str=8, dex=12, mag=12, wil=12, con=10 },
 
 	resists = { [DamageType.PHYSICAL] = 10, [DamageType.TEMPORAL] = 100, },
diff --git a/game/modules/tome/data/general/npcs/thieve.lua b/game/modules/tome/data/general/npcs/thieve.lua
index 89d57246168516684d94fa980d80e95f4b0e1138..6f6c8a4250fbea8a657bbb24dc63a75966e25e44 100644
--- a/game/modules/tome/data/general/npcs/thieve.lua
+++ b/game/modules/tome/data/general/npcs/thieve.lua
@@ -49,7 +49,6 @@ newEntity{
 
 	autolevel = "rogue",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=5, },
-	energy = { mod=1 },
 	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 },
diff --git a/game/modules/tome/data/general/npcs/troll.lua b/game/modules/tome/data/general/npcs/troll.lua
index 857306189ddd17d9bb00ccc992e6306f423da0cc..3f2f541632b26622ce1d42e8e53ec3e93b286112 100644
--- a/game/modules/tome/data/general/npcs/troll.lua
+++ b/game/modules/tome/data/general/npcs/troll.lua
@@ -39,7 +39,6 @@ newEntity{
 
 	autolevel = "warrior",
 	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 },
 
 	open_door = true,
@@ -50,7 +49,7 @@ newEntity{
 	fear_immune = 1,
 	on_die = function(self, who)
 		local part = "TROLL_INTESTINE"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/vampire.lua b/game/modules/tome/data/general/npcs/vampire.lua
index 6b43b6f3b8e9c3f920fce99fa3bf0ecb9ae5011d..96431c5d93aa4fc862c6d3e60baaab56d931f192 100644
--- a/game/modules/tome/data/general/npcs/vampire.lua
+++ b/game/modules/tome/data/general/npcs/vampire.lua
@@ -49,7 +49,6 @@ newEntity{
 
 	autolevel = "warriormage",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=9, },
-	energy = { mod=1 },
 	stats = { str=12, dex=12, mag=12, con=12 },
 	infravision = 20,
 	life_regen = 3,
@@ -120,7 +119,7 @@ It can summon the very shades of its victims from beyond the grave to come ensla
 	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}, },
 	on_die = function(self, who)
 		local part = "ELDER_VAMPIRE_BLOOD"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
@@ -143,7 +142,7 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
 	},
 	on_die = function(self, who)
 		local part = "VAMPIRE_LORD_FANG"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/vermin.lua b/game/modules/tome/data/general/npcs/vermin.lua
index 8fbcce22d9ad7dde5e6c9368e18d7221160d5a42..ba05299ca7001f97377ffb864ff535ea8107d056 100644
--- a/game/modules/tome/data/general/npcs/vermin.lua
+++ b/game/modules/tome/data/general/npcs/vermin.lua
@@ -28,7 +28,7 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
-	energy = { mod=0.9 },
+	global_speed = 0.9,
 	stats = { str=10, dex=15, mag=3, con=3 },
 	combat_armor = 1, combat_def = 1,
 	infravision = 20,
@@ -58,7 +58,7 @@ newEntity{ base = "BASE_NPC_WORM",
 	resolvers.talents{ [Talents.T_CRAWL_ACID]=2, [Talents.T_MULTIPLY]=1 },
 	on_die = function(self, who)
 		local part = "GREEN_WORM"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/wight.lua b/game/modules/tome/data/general/npcs/wight.lua
index cbfa2dc7706da50df629b7ed11124bdd9edddb8e..eda71ccc0a72426f242e4805db6b6dedbfbe7fba 100644
--- a/game/modules/tome/data/general/npcs/wight.lua
+++ b/game/modules/tome/data/general/npcs/wight.lua
@@ -40,7 +40,6 @@ newEntity{
 
 	autolevel = "caster",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
-	energy = { mod=1 },
 	stats = { str=11, dex=11, mag=15, con=12 },
 	infravision = 20,
 	rank = 2,
@@ -60,7 +59,7 @@ newEntity{
 --	sleep_immune = 1,
 	on_die = function(self, who)
 		local part = "WIGHT_ECTOPLASM"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/xorn.lua b/game/modules/tome/data/general/npcs/xorn.lua
index 3436ea3d4ed3ca370fdb12f21caa947bc9514134..8f7820e8c219b68939d1653c5dcccfc0ba342af9 100644
--- a/game/modules/tome/data/general/npcs/xorn.lua
+++ b/game/modules/tome/data/general/npcs/xorn.lua
@@ -42,7 +42,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_target="target_player_radius", sense_radius=6, talent_in=3, },
-	energy = { mod=1 },
 	stats = { str=20, dex=8, mag=6, con=16 },
 
 	resists = { [DamageType.PHYSICAL] = 20, [DamageType.FIRE] = 50, },
@@ -53,7 +52,7 @@ newEntity{
 	stone_immune = 1,
 	on_die = function(self, who)
 		local part = "XORN_FRAGMENT"
-		if game.player:hasQuest("brotherhood-of-alchemists") then 
+		if game.player:hasQuest("brotherhood-of-alchemists") then
 			game.player:hasQuest("brotherhood-of-alchemists"):need_part(who, part, self)
 		end
 	end,
diff --git a/game/modules/tome/data/general/npcs/ziguranth.lua b/game/modules/tome/data/general/npcs/ziguranth.lua
index 3b4c3d3cfb24484058a394ff8b5136fab7288b6d..a1e8642a39e2b100c6c1172cd4740e092ba936a4 100644
--- a/game/modules/tome/data/general/npcs/ziguranth.lua
+++ b/game/modules/tome/data/general/npcs/ziguranth.lua
@@ -47,7 +47,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
-	energy = { mod=1 },
 	stats = { str=20, dex=15, mag=1, con=16, wil=19 },
 }
 
diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua
index 82c05768af2654811196b4d0e3fd3b3cd8b72b12..3273026f7c54e1d5d36de71343c576420385bce0 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts.lua
@@ -548,7 +548,6 @@ newEntity{ base = "BASE_AMULET",
 
 			autolevel = "warriormage",
 			ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=3, },
-			energy = { mod=1 },
 			stats = { str=12, dex=12, mag=12, con=12 },
 			life_regen = 3,
 			size_category = 3,
diff --git a/game/modules/tome/data/general/objects/egos/amulets.lua b/game/modules/tome/data/general/objects/egos/amulets.lua
index 54482e723b00b86d08491dcd7e9ef22adb378680..6d4238c6b0a13ea98f5d8e62e2394d40c20492d5 100644
--- a/game/modules/tome/data/general/objects/egos/amulets.lua
+++ b/game/modules/tome/data/general/objects/egos/amulets.lua
@@ -294,7 +294,7 @@ newEntity{
 	wielder = {
 		combat_dam = resolvers.mbonus_material(5, 5, function(e, v) return v * 3 end),
 		inc_damage = { [DamageType.PHYSICAL] = resolvers.mbonus_material(5, 5, function(e, v) return v * 0.8 end) },
-		combat_physspeed = -0.1,
+		combat_physspeed = 0.1,
 	},
 }
 
diff --git a/game/modules/tome/data/general/objects/egos/boots.lua b/game/modules/tome/data/general/objects/egos/boots.lua
index c4f45c5bcc91685afbcd055739f5a6a96a264478..a99563ac59a5bcff0ccb92b8b4c27d418ba66f98 100644
--- a/game/modules/tome/data/general/objects/egos/boots.lua
+++ b/game/modules/tome/data/general/objects/egos/boots.lua
@@ -63,7 +63,7 @@ newEntity{
 	rarity = 20,
 	cost = 60,
 	wielder = {
-		movement_speed = -0.2,
+		movement_speed = 0.2,
 	},
 }
 
@@ -197,7 +197,7 @@ newEntity{
 	wielder = {
 		fatigue = resolvers.mbonus_material(6, 4, function(e, v) return v * 1, -v end),
 		max_life=resolvers.mbonus_material(30, 30, function(e, v) return v * 0.1 end),
-		movement_speed = -0.1,
+		movement_speed = 0.1,
 	},
 }
 
diff --git a/game/modules/tome/data/general/objects/egos/light-armor.lua b/game/modules/tome/data/general/objects/egos/light-armor.lua
index 7ae68a49379766d9e9ebdb39da0aaf6ecffacf65..618d2d8857d986e024cb044f4516b9d931109998 100644
--- a/game/modules/tome/data/general/objects/egos/light-armor.lua
+++ b/game/modules/tome/data/general/objects/egos/light-armor.lua
@@ -43,7 +43,7 @@ newEntity{
 	cost = 35,
 	wielder = {
 		combat_def_ranged = resolvers.mbonus_material(8, 2, function(e, v) return v * 1 end),
-		movement_speed = -0.1,
+		movement_speed = 0.1,
 		inc_stats = { [Stats.STAT_DEX] = resolvers.mbonus_material(3, 2, function(e, v) return v * 3 end), },
 	},
 }
diff --git a/game/modules/tome/data/general/objects/egos/staves.lua b/game/modules/tome/data/general/objects/egos/staves.lua
index 4033d654a0edc98092c41793bbd1e504db4203a3..de55714f6504f7e40559d28503c7ff536d0dcd53 100644
--- a/game/modules/tome/data/general/objects/egos/staves.lua
+++ b/game/modules/tome/data/general/objects/egos/staves.lua
@@ -315,7 +315,7 @@ newEntity{
 	cost = 35,
 	wielder = {
 		combat_spellpower = resolvers.mbonus_material(7, 3, function(e, v) return v * 0.6 end),
-		movement_speed = -0.1,
+		movement_speed = 0.1,
 		inc_damage = {
 			[DamageType.TEMPORAL] = resolvers.mbonus_material(20, 5, function(e, v) return v * 0.25 end),
 		},
diff --git a/game/modules/tome/data/maps/quests/lost-merchant.lua b/game/modules/tome/data/maps/quests/lost-merchant.lua
index d7e9a4902901f7873e548b8b926016dbf53bfa4f..a083219f06cb2ced189108399dfad7cd536d6bec 100644
--- a/game/modules/tome/data/maps/quests/lost-merchant.lua
+++ b/game/modules/tome/data/maps/quests/lost-merchant.lua
@@ -46,7 +46,6 @@ defineTile('P', "FLOOR", nil, mod.class.NPC.new{
 
 	autolevel = "rogue",
 	ai = "dumb_talented_simple", ai_state = { talent_in=5, },
-	energy = { mod=1 },
 	stats = { str=8, dex=15, mag=6, cun=15, con=7 },
 
 	resolvers.tmasteries{ ["technique/other"]=0.3, ["cunning/stealth"]=1.3, ["cunning/dirty"]=0.3, ["technique/dualweapon-training"]=0.3 },
diff --git a/game/modules/tome/data/talents/chronomancy/anomalies.lua b/game/modules/tome/data/talents/chronomancy/anomalies.lua
index 835f455b54a1fa9579c80a926dc8627213a7e2ac..4f8b7f6dcbbd3bc9cf7df455adb09e50c295c08e 100644
--- a/game/modules/tome/data/talents/chronomancy/anomalies.lua
+++ b/game/modules/tome/data/talents/chronomancy/anomalies.lua
@@ -319,7 +319,7 @@ newTalent{
 				combat = { dam=resolvers.mbonus(40, 15), atk=15, apr=15, dammod={mag=0.8}, damtype=DamageType.TEMPORAL },
 				body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 				autolevel = "none",
-				energy = { mod=1.5 },
+				global_speed = 1.5,
 				stats = { str=8, dex=12, mag=12, wil= 12, con=10 },
 				ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=2, },
 				level_range = {self.level, self.level},
@@ -446,7 +446,7 @@ newTalent{
 			if #tgts <= 0 then break end
 			local a, id = rng.table(tgts)
 			table.remove(tgts, id)
-	
+
 		local px, py = self.x, self.y
 		local gx, gy = a.x, a.y
 
@@ -456,7 +456,7 @@ newTalent{
 		a:move(px, py, true)
 		game.level.map:particleEmitter(px, py, 1, "teleport")
 		game.level.map:particleEmitter(gx, gy, 1, "teleport")
-		
+
 		end
 		return true
 	end,
@@ -502,11 +502,11 @@ newTalent{
 					game.logSeen(target, "%s is drawn in by the gravity spike!", target.name:capitalize())
 				end
 			end)
-			
+
 			self:project (tg, a.x, a.y, DamageType.PHYSICAL, self:spellCrit(t.getDamage(self, t)))
 			game.level.map:particleEmitter(a.x, a.y, tg.radius, "gravity_spike", {radius=tg.radius, grids=grids, tx=a.x, ty=a.y})
 			game:playSoundNear(self, "talents/earth")
-			
+
 		end
 		return true
 	end,
@@ -597,7 +597,7 @@ newTalent{
 			table.remove(tgts, id)
 			-- Randomly pick a race
 			local race = rng.range(1, 4)
-			
+
 			-- Find space
 			for i = 1, 4 do
 				local x, y = util.findFreeGrid(a.x, a.y, 5, true, {[Map.ACTOR]=true})
@@ -605,12 +605,12 @@ newTalent{
 					game.logPlayer(self, "Not enough space to summon!")
 					return
 				end
-						
+
 				local NPC = require "mod.class.NPC"
 				local m = NPC.new{
-					type = "humanoid", display = "p", 
+					type = "humanoid", display = "p",
 					color=colors.WHITE,
-				
+
 					combat = { dam=resolvers.rngavg(1,2), atk=2, apr=0, dammod={str=0.4} },
 
 					body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 },
@@ -623,21 +623,20 @@ newTalent{
 					open_door = true,
 
 					autolevel = "warrior",
-					energy = { mod=1 },
 					stats = { str=12, dex=8, mag=6, con=10 },
 					ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=2, },
 					level_range = {1, 3},
-						
+
 					max_life = resolvers.rngavg(30,40),
 					combat_armor = 2, combat_def = 0,
-		
+
 				--	summoner = self,
 					summoner_gain_exp=false,
 					summon_time = t.getSummonTime(self, t),
 				}
-							
+
 				m.level = 1
-		
+
 				if race == 1 then
 					m.name = "human farmer"
 					m.subtype = "human"
@@ -704,16 +703,16 @@ newTalent{
 			if #tgts <= 0 then break end
 			local a, id = rng.table(tgts)
 			table.remove(tgts, id)
-	
+
 			local x, y = util.findFreeGrid(self.x, self.y, 5, true, {[Map.ACTOR]=true})
 			if not x then
 				game.logPlayer(self, "Not enough space to summon!")
 				return
 			end
-	
+
 			a:move(x, y, true)
 			game.level.map:particleEmitter(x, y, 1, "teleport")
-				
+
 		end
 		return true
 	end,
diff --git a/game/modules/tome/data/talents/chronomancy/speed-control.lua b/game/modules/tome/data/talents/chronomancy/speed-control.lua
index 30172b1c4a23c566fb2fa51578ce09ced1b0024c..0e2feb7642715e9faaa74a50561be9f3d7a77cda 100644
--- a/game/modules/tome/data/talents/chronomancy/speed-control.lua
+++ b/game/modules/tome/data/talents/chronomancy/speed-control.lua
@@ -26,12 +26,12 @@ newTalent{
 	sustain_paradox = 75,
 	cooldown = 10,
 	tactical = { BUFF = 1, CLOSEIN = 1, ESCAPE = 1 },
-	no_energy = true, 
-	getPower = function(self, t) return 1 - 1 / (1 + ((10 + self:combatTalentSpellDamage(t, 10, 30))/ 100)) end,
+	no_energy = true,
+	getPower = function(self, t) return self:combatTalentSpellDamage(t, 10, 40) / 100 end,
 	activate = function(self, t)
 		local power = t.getPower(self, t)
 		return {
-		move = self:addTemporaryValue("movement_speed", -power)
+		move = self:addTemporaryValue("movement_speed", power)
 		}
 	end,
 	deactivate = function(self, t, p)
@@ -71,7 +71,7 @@ newTalent{
 		local _ _, _, _, x, y = self:canProject(tg, x, y)
 		x, y = checkBackfire(self, x, y)
 		local grids = self:project(tg, x, y, DamageType.STOP, t.getDuration(self, t))
-		
+
 		game.level.map:particleEmitter(x, y, tg.radius, "temporal_flash", {radius=tg.radius, tx=x, ty=y})
 		game:playSoundNear(self, "talents/tidalwave")
 		return true
diff --git a/game/modules/tome/data/talents/corruptions/shadowflame.lua b/game/modules/tome/data/talents/corruptions/shadowflame.lua
index f44a4d6efe06fb35b5dc552f4166445ad88cd374..4559076e039d437c4b3959d0be9f79139c9bfb19 100644
--- a/game/modules/tome/data/talents/corruptions/shadowflame.lua
+++ b/game/modules/tome/data/talents/corruptions/shadowflame.lua
@@ -90,10 +90,10 @@ newTalent{
 		game:playSoundNear(self, "talents/flame")
 		self.__old_type = {self.type, self.subtype}
 		self.type, self.subtype = "demon", "major"
-		local power = 1 - 1 / (1 + self:getTalentLevel(t) * 0.03)
+		local power = self:getTalentLevel(t) * 0.03
 		return {
 			demon = self:addTemporaryValue("demon", 1),
-			speed = self:addTemporaryValue("energy", {mod=power}),
+			speed = self:addTemporaryValue("global_speed", power),
 			res = self:addTemporaryValue("resists", {[DamageType.FIRE]=self:combatTalentSpellDamage(t, 20, 30), [DamageType.DARKNESS]=self:combatTalentSpellDamage(t, 20, 35)}),
 			particle = self:addParticles(Particles.new("shadowfire", 1)),
 		}
@@ -102,7 +102,7 @@ newTalent{
 		self.type, self.subtype = unpack(self.__old_type)
 		self.__old_type = nil
 		self:removeTemporaryValue("resists", p.res)
-		self:removeTemporaryValue("energy", p.speed)
+		self:removeTemporaryValue("global_speed", p.speed)
 		self:removeTemporaryValue("demon", p.demon)
 		self:removeParticles(p.particle)
 		return true
diff --git a/game/modules/tome/data/talents/cursed/shadows.lua b/game/modules/tome/data/talents/cursed/shadows.lua
index ef356636ff372020bf12fd74fed7743010a75175..a52b3ffb1877164936b5a5f27f79ae87353088d6 100644
--- a/game/modules/tome/data/talents/cursed/shadows.lua
+++ b/game/modules/tome/data/talents/cursed/shadows.lua
@@ -177,7 +177,6 @@ local function createShadow(self, level, duration, target)
 		exp_worth=0,
 
 		max_life = resolvers.rngavg(15,20), life_rating = 4,
-		energy = { mod=1 },
 		stats = {
 			str=10 + math.floor(level * 0.2),
 			dex=15 + math.floor(level * 0.8),
diff --git a/game/modules/tome/data/talents/divine/glyphs.lua b/game/modules/tome/data/talents/divine/glyphs.lua
index c13dd562de1cfd3153120daa91f6016d37ff389a..591098092bf7f42508f96c42dcbd4395bbd34abf 100644
--- a/game/modules/tome/data/talents/divine/glyphs.lua
+++ b/game/modules/tome/data/talents/divine/glyphs.lua
@@ -246,7 +246,7 @@ newTalent{
 		local trap = game.level.map(tx, ty, Map.TRAP)
 		if trap then return end
 
-		local dam = -1 + 1 / (1 + (t.getSlow(self, t)))
+		local dam = t.getSlow(self, t)
 		local trap = Trap.new{
 			name = "glyph of fatigue",
 			type = "elemental", id_by_type=true, unided_name = "trap",
@@ -257,7 +257,7 @@ newTalent{
 				return false
 			end,
 			triggered = function(self, x, y, who)
-				who:setEffect(who.EFF_SLOW, 5, {power=-self.dam})
+				who:setEffect(who.EFF_SLOW, 5, {power=self.dam})
 				return true
 			end,
 			temporary = t.getDuration(self, t),
diff --git a/game/modules/tome/data/talents/gifts/summon-melee.lua b/game/modules/tome/data/talents/gifts/summon-melee.lua
index d77a4035cc7aaa35a820ca9d3b8ee63300db8b12..02ec8cc0631799c6f4377b1bdce1a19ff5880ab7 100644
--- a/game/modules/tome/data/talents/gifts/summon-melee.lua
+++ b/game/modules/tome/data/talents/gifts/summon-melee.lua
@@ -59,7 +59,7 @@ newTalent{
 			stats = {str=0, dex=0, con=0, cun=0, wil=0, mag=0},
 			inc_stats = { str=10 + self:getWil() * self:getTalentLevel(t) / 5, dex=10 + self:getTalentLevel(t) * 2, mag=5, con=15 + self:getTalentLevelRaw(self.T_RESILIENCE)*2 },
 			level_range = {self.level, self.level}, exp_worth = 0,
-			energy = { mod=1.2 },
+			global_speed = 1.2,
 
 			max_life = resolvers.rngavg(25,50),
 			life_rating = 6,
@@ -220,7 +220,7 @@ newTalent{
 
 			autolevel = "none",
 			ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=2, },
-			energy = { mod=1.2 },
+			global_speed=1.2,
 			stats = {str=0, dex=0, con=0, cun=0, wil=0, mag=0},
 			inc_stats = { str=25 + self:getWil() * self:getTalentLevel(t) / 5, dex=18, con=10 + self:getTalentLevel(t) * 2 + self:getTalentLevelRaw(self.T_RESILIENCE)*2, },
 
diff --git a/game/modules/tome/data/talents/misc/races.lua b/game/modules/tome/data/talents/misc/races.lua
index b43c848913e07c2d454560cf53e06e96c92d169a..08be9d6cbcd8f7a7242970cf4b286bc7480dd510 100644
--- a/game/modules/tome/data/talents/misc/races.lua
+++ b/game/modules/tome/data/talents/misc/races.lua
@@ -146,7 +146,7 @@ newTalent{
 	tactical = { DEFEND = 1 },
 	action = function(self, t)
 		local power = 0.1 + self:getDex() / 210
-		self:setEffect(self.EFF_SPEED, 8, {power=1 - 1 / (1 + power)})
+		self:setEffect(self.EFF_SPEED, 8, {power=power})
 		return true
 	end,
 	info = function(self, t)
@@ -688,10 +688,10 @@ newTalent{
 	points = 5,
 	mode = "passive",
 	on_learn = function(self, t)
-		self.energy.mod = self.energy.mod + 0.03
+		self.global_speed = self.global_speed + 0.03
 	end,
 	on_unlearn = function(self, t)
-		self.energy.mod = self.energy.mod - 0.03
+		self.global_speed = self.global_speed - 0.03
 	end,
 	info = function(self, t)
 		return ([[Yeeks live fast, think fast, and sacrifice fast for the Way.
diff --git a/game/modules/tome/data/talents/spells/golemancy.lua b/game/modules/tome/data/talents/spells/golemancy.lua
index 5d85ff38891c7f63de88de74bfcfba08af42ea23..202e0b2ea3f40b2d4adab56ea8a2af2d5eabcc1a 100644
--- a/game/modules/tome/data/talents/spells/golemancy.lua
+++ b/game/modules/tome/data/talents/spells/golemancy.lua
@@ -68,7 +68,6 @@ local function makeGolem()
 		ai = "tactical",
 		ai_state = { talent_in=1, ai_move="move_astar", ally_compassion=10 },
 		ai_tactic = resolvers.tactic"tank",
-		energy = { mod=1 },
 		stats = { str=14, dex=12, mag=12, con=12 },
 
 		-- No natural exp gain
diff --git a/game/modules/tome/data/talents/spells/nature.lua b/game/modules/tome/data/talents/spells/nature.lua
index 4be47b75b459b2b14106a33e5dc1be0a11e54a77..bde3c06f5e0cd9cfbffe54d647e443de5a8fc160 100644
--- a/game/modules/tome/data/talents/spells/nature.lua
+++ b/game/modules/tome/data/talents/spells/nature.lua
@@ -135,7 +135,6 @@ newTalent{
 			desc = [[A bear summoned by the powers of nature to help you.]],
 			autolevel = "warrior",
 			ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=3, },
-			energy = { mod=1 },
 			stats = { str=18, dex=13, mag=5, con=15 },
 			resolvers.tmasteries{ ["technique/other"]=0.25 },
 
diff --git a/game/modules/tome/data/talents/spells/temporal.lua b/game/modules/tome/data/talents/spells/temporal.lua
index b11c6f9210717a1a249f0e63f53d09ac02e81d2a..b4b187ef0e6c320f640a23b8de590b6801897d4d 100644
--- a/game/modules/tome/data/talents/spells/temporal.lua
+++ b/game/modules/tome/data/talents/spells/temporal.lua
@@ -112,16 +112,16 @@ newTalent{
 	sustain_mana = 250,
 	cooldown = 30,
 	tactical = { BUFF = 2 },
-	getHaste = function(self, t) return self:getTalentLevel(t) * 0.07 end,
+	getHaste = function(self, t) return self:getTalentLevel(t) * 0.9 end,
 	activate = function(self, t)
 		game:playSoundNear(self, "talents/spell_generic")
-		local power = 1 - 1 / (1 + t.getHaste(self, t))
+		local power = t.getHaste(self, t)
 		return {
-			speed = self:addTemporaryValue("energy", {mod=power}),
+			speed = self:addTemporaryValue("global_speed", power),
 		}
 	end,
 	deactivate = function(self, t, p)
-		self:removeTemporaryValue("energy", p.speed)
+		self:removeTemporaryValue("global_speed", p.speed)
 		return true
 	end,
 	info = function(self, t)
diff --git a/game/modules/tome/data/talents/techniques/archery.lua b/game/modules/tome/data/talents/techniques/archery.lua
index e4e150879831d9b94d50dc868cc97657ca30d1c3..4ddf04058858df32ae16843817f89083ea1d5603 100644
--- a/game/modules/tome/data/talents/techniques/archery.lua
+++ b/game/modules/tome/data/talents/techniques/archery.lua
@@ -71,8 +71,9 @@ newTalent{
 	mode = "sustained",
 	points = 5,
 	require = techs_dex_req2,
-	cooldown = 30,
+	cooldown = 8,
 	sustain_stamina = 20,
+	no_energy = true,
 	tactical = { BUFF = 2 },
 	on_pre_use = function(self, t, silent) if not self:hasArcheryWeapon() then if not silent then game.logPlayer(self, "You require a bow or sling for this talent.") end return false end return true end,
 	activate = function(self, t)
@@ -82,9 +83,11 @@ newTalent{
 			return nil
 		end
 
+		if self:isTalentActive(self.T_RAPID_SHOT) then self:forceUseTalent(self.T_RAPID_SHOT, {ignore_energy=true}) end
+
 		return {
 			move = self:addTemporaryValue("never_move", 1),
-			speed = self:addTemporaryValue("combat_physspeed", self:combatSpeed(weapon.combat) - 1 / (1 + self:getTalentLevel(t) * 0.1)),
+			speed = self:addTemporaryValue("combat_physspeed", -self:getTalentLevel(t) * 0.05),
 			crit = self:addTemporaryValue("combat_physcrit", 7 + self:getTalentLevel(t) * self:getDex(10)),
 			atk = self:addTemporaryValue("combat_dam", 4 + self:getTalentLevel(t) * self:getDex(10)),
 			dam = self:addTemporaryValue("combat_atk", 4 + self:getTalentLevel(t) * self:getDex(10)),
@@ -105,7 +108,7 @@ newTalent{
 		The effects will increase with your Dexterity stat.]]):
 		format(4 + self:getTalentLevel(t) * self:getDex(10), 4 + self:getTalentLevel(t) * self:getDex(10),
 		3 + self:getTalentLevel(t) * self:getDex(10), 7 + self:getTalentLevel(t) * self:getDex(10),
-		self:getTalentLevelRaw(t) * 10)
+		self:getTalentLevelRaw(t) * 5)
 	end,
 }
 
@@ -115,8 +118,9 @@ newTalent{
 	mode = "sustained",
 	points = 5,
 	require = techs_dex_req3,
-	cooldown = 30,
+	cooldown = 8,
 	sustain_stamina = 20,
+	no_energy = true,
 	tactical = { BUFF = 2 },
 	on_pre_use = function(self, t, silent) if not self:hasArcheryWeapon() then if not silent then game.logPlayer(self, "You require a bow or sling for this talent.") end return false end return true end,
 	activate = function(self, t)
@@ -126,8 +130,10 @@ newTalent{
 			return nil
 		end
 
+		if self:isTalentActive(self.T_AIM) then self:forceUseTalent(self.T_AIM, {ignore_energy=true}) end
+
 		return {
-			speed = self:addTemporaryValue("combat_physspeed", -self:combatSpeed(weapon.combat) + 1 / (1 + self:getTalentLevel(t) * 0.09)),
+			speed = self:addTemporaryValue("combat_physspeed", self:getTalentLevel(t) * 0.1),
 			atk = self:addTemporaryValue("combat_dam", -8 - self:getTalentLevelRaw(t) * 2.4),
 			dam = self:addTemporaryValue("combat_atk", -8 - self:getTalentLevelRaw(t) * 2.4),
 			crit = self:addTemporaryValue("combat_physcrit", -8 - self:getTalentLevelRaw(t) * 2.4),
@@ -142,7 +148,7 @@ newTalent{
 	end,
 	info = function(self, t)
 		return ([[You switch to a fluid and fast battle stance, increasing your firing speed by %d%% at the cost of your accuracy(%d), damage(%d), and critical chance(%d).]]):
-		format(self:getTalentLevel(t) * 9, -8 - self:getTalentLevelRaw(t) * 2.4, -8 - self:getTalentLevelRaw(t) * 2.4, -8 - self:getTalentLevelRaw(t) * 2.4)
+		format(self:getTalentLevel(t) * 10, -8 - self:getTalentLevelRaw(t) * 2.4, -8 - self:getTalentLevelRaw(t) * 2.4, -8 - self:getTalentLevelRaw(t) * 2.4)
 	end,
 }
 
diff --git a/game/modules/tome/data/talents/techniques/combat-techniques.lua b/game/modules/tome/data/talents/techniques/combat-techniques.lua
index a43a64dfc3c681843d9876bb35b587c409b17ed6..905bbcbd7f55fdd3aa2b91df0aecf5558e150b02 100644
--- a/game/modules/tome/data/talents/techniques/combat-techniques.lua
+++ b/game/modules/tome/data/talents/techniques/combat-techniques.lua
@@ -31,7 +31,7 @@ newTalent{
 	tactical = { BUFF = 1 },
 	activate = function(self, t)
 		return {
-			speed = self:addTemporaryValue("combat_physspeed", self:combatSpeed() + 1 / (1 + 0.08 * 1.3)),
+			speed = self:addTemporaryValue("combat_physspeed", -0.10),
 			atk = self:addTemporaryValue("combat_atk", 4 + (self:getTalentLevel(t) * self:getDex()) / 15),
 			crit = self:addTemporaryValue("combat_physcrit", 4 + (self:getTalentLevel(t) * self:getDex()) / 25),
 		}
@@ -45,7 +45,7 @@ newTalent{
 	info = function(self, t)
 		return ([[You focus your strikes, reducing your attack speed by %d%% and increasing your accuracy by %d and critical chance by %d%%.
 		The effects will increase with your Dexterity stat.]]):
-		format((1.3 * 8), 4 + (self:getTalentLevel(t) * self:getDex()) / 15, 4 + (self:getTalentLevel(t) * self:getDex()) / 25)
+		format(10, 4 + (self:getTalentLevel(t) * self:getDex()) / 15, 4 + (self:getTalentLevel(t) * self:getDex()) / 25)
 	end,
 }
 
@@ -137,11 +137,11 @@ newTalent{
 	require = techs_strdex_req4,
 	tactical = { BUFF = 2, CLOSEIN = 2, ESCAPE = 2 },
 	action = function(self, t)
-		self:setEffect(self.EFF_SPEED, 5, {power=1 - (1 / (1 + self:getTalentLevel(t) * 0.06))})
+		self:setEffect(self.EFF_SPEED, 5, {power=self:getTalentLevel(t) * 0.09})
 		return true
 	end,
 	info = function(self, t)
-		return ([[Through rigorous training you have learned to focus your actions for a short while, increasing your speed by %d%% for 5 turns.]]):format(self:getTalentLevel(t) * 6)
+		return ([[Through rigorous training you have learned to focus your actions for a short while, increasing your speed by %d%% for 5 turns.]]):format(self:getTalentLevel(t) * 9)
 	end,
 }
 
diff --git a/game/modules/tome/data/talents/techniques/dualweapon.lua b/game/modules/tome/data/talents/techniques/dualweapon.lua
index 3d792ba614f84fb3928eef3c769d8509fd07fb4e..4f2e78f082f2cb5a507126b27756a554901d4a1f 100644
--- a/game/modules/tome/data/talents/techniques/dualweapon.lua
+++ b/game/modules/tome/data/talents/techniques/dualweapon.lua
@@ -88,7 +88,7 @@ newTalent{
 		end
 
 		return {
-			combat_physspeed = self:addTemporaryValue("combat_physspeed", -self:combatSpeed(weapon.combat) + 1 / (1 + self:getTalentLevel(t) * 0.09)),
+			combat_physspeed = self:addTemporaryValue("combat_physspeed", self:getTalentLevel(t) * 0.14),
 			stamina_regen = self:addTemporaryValue("stamina_regen", -6),
 		}
 	end,
@@ -100,7 +100,7 @@ newTalent{
 	info = function(self, t)
 		local weapon, offweapon = self:hasDualWeapon()
 		weapon = weapon or {}
-		return ([[Increases attack speed by %d%%, but drains stamina quickly(-6 stamina/turn).]]):format(self:combatSpeed(weapon.combat) * (self:getTalentLevel(t) * 9))
+		return ([[Increases attack speed by %d%%, but drains stamina quickly(-6 stamina/turn).]]):format(self:getTalentLevel(t) * 14)
 	end,
 }
 
diff --git a/game/modules/tome/data/talents/techniques/unarmed-discipline.lua b/game/modules/tome/data/talents/techniques/unarmed-discipline.lua
index db933f0ab4af8041f307674e8c47f2f15da9aa90..7dfe7c09d7a25ff4b5cfc406f5fd0228c52d1373 100644
--- a/game/modules/tome/data/talents/techniques/unarmed-discipline.lua
+++ b/game/modules/tome/data/talents/techniques/unarmed-discipline.lua
@@ -40,10 +40,10 @@ newTalent{
 		local x, y, target = self:getTarget(tg)
 		if not x or not y or not target then return nil end
 		if math.floor(core.fov.distance(self.x, self.y, x, y)) > 1 then return nil end
-		
+
 		local hit = target:checkHit(self:combatAttack(), target:combatDefense(), 0, 95, 5 - self:getTalentLevel(t) / 2)
 	--	local hit = self:attackTarget(target, nil, nil, true)
-		
+
 		-- Try to knockback !
 		if hit then
 			local can = function(target)
@@ -54,20 +54,20 @@ newTalent{
 					self:project(target, target.x, target.y, DamageType.PHYSICAL, t.getDamage(self, t))
 					game.logSeen(target, "%s resists the knockback!", target.name:capitalize())
 				end
-					
+
 			end
-			
+
 			if can(target) then target:knockback(self.x, self.y, t.getPush(self, t), can) end
-				
+
 			-- move the attacker back
 			self:knockback(target.x, target.y, 1)
 			self:breakGrapples()
 			self:buildCombo()
-			
+
 		else
 			game.logSeen(target, "%s misses %s.", self.name:capitalize(), target.name:capitalize())
 		end
-		
+
 		return true
 	end,
 	info = function(self, t)
@@ -89,16 +89,16 @@ newTalent{
 	getDamage = function(self, t) return getTriStat(self, t, 10, 100) * (1 + getGrapplingStyle(self, dam)) end,
 	getDamageTwo = function(self, t) return getTriStat(self, t, 10, 100) * (1.5 + getGrapplingStyle(self, dam)) end,
 	do_throw = function(self, target, t)
-			
+
 		local hit = self:checkHit(self:combatAttack(), target:combatPhysicalResist(), 0, 95, 5 - self:getTalentLevel(t) / 2)
-		
+
 		-- if grappled stun
 		if hit and target:canBe("knockback") and target:isGrappled(self) then
 			self:project(target, target.x, target.y, DamageType.PHYSICAL, self:physicalCrit(t.getDamageTwo(self, t), nil, target))
 			game.logSeen(target, "%s has been slammed into the ground!", target.name:capitalize())
 			-- see if the throw stuns the enemy
 			if hit and target:canBe("stun")then
-				target:setEffect(target.EFF_STUNNED, 2, {})		
+				target:setEffect(target.EFF_STUNNED, 2, {})
 			end
 		-- if not grappled daze
 		elseif hit and target:canBe("knockback") then
@@ -106,10 +106,10 @@ newTalent{
 			game.logSeen(target, "%s has been thrown to the ground!", target.name:capitalize())
 			-- see if the throw dazes the enemy
 			if hit and target:canBe("stun")then
-				target:setEffect(target.EFF_DAZED, 2, {})		
+				target:setEffect(target.EFF_DAZED, 2, {})
 			end
 		end
-		
+
 	end,
 	info = function(self, t)
 		local damage = t.getDamage(self, t)
@@ -130,15 +130,15 @@ newTalent{
 	sustain_stamina = 30,
 	tactical = { BUFF = 1, STAMINA = 2 },
 	getSpeed = function(self, t) return 0.1 end,
-	getStamina = function(self, t) return self:getTalentLevel(t) * 1.5 end,
+	getStamina = function(self, t) return self:getTalentLevel(t) * 0.015 end,
 	activate = function(self, t)
 		return {
-			speed = self:addTemporaryValue("energy", {mod = -t.getSpeed(self, t)}),
+			speed = self:addTemporaryValue("global_speed", -t.getSpeed(self, t)),
 			stamina = self:addTemporaryValue("stamina_regen", t.getStamina(self, t)),
 		}
 	end,
 	deactivate = function(self, t, p)
-		self:removeTemporaryValue("energy", p.speed)
+		self:removeTemporaryValue("global_speed", p.speed)
 		self:removeTemporaryValue("stamina_regen", p.stamina)
 		return true
 	end,
@@ -170,13 +170,13 @@ newTalent{
 		local tg = self:getTalentTarget(t)
 		local x, y, target = self:getTarget(tg)
 		if not x or not y then return nil end
-		
+
 		self:breakGrapples()
-		
+
 		self:project(tg, x, y, DamageType.PHYSKNOCKBACK, {dam=self:physicalCrit(t.getDamage(self, t), nil, target), dist=4})
-		
+
 		self:buildCombo()
-		
+
 		return true
 	end,
 	info = function(self, t)
diff --git a/game/modules/tome/data/timed_effects.lua b/game/modules/tome/data/timed_effects.lua
index 698b0e932f4d8129902dcbf2ce9ef5e2f1c5f35d..0d089f1f37b3917fc706e5768e1025dff711497a 100644
--- a/game/modules/tome/data/timed_effects.lua
+++ b/game/modules/tome/data/timed_effects.lua
@@ -599,10 +599,10 @@ newEffect{
 	on_gain = function(self, err) return "#Target# speeds up.", "+Fast" end,
 	on_lose = function(self, err) return "#Target# slows down.", "-Fast" end,
 	activate = function(self, eff)
-		eff.tmpid = self:addTemporaryValue("energy", {mod=eff.power})
+		eff.tmpid = self:addTemporaryValue("global_speed", eff.power)
 	end,
 	deactivate = function(self, eff)
-		self:removeTemporaryValue("energy", eff.tmpid)
+		self:removeTemporaryValue("global_speed", eff.tmpid)
 	end,
 }
 
@@ -616,11 +616,11 @@ newEffect{
 	on_gain = function(self, err) return "#Target# slows down.", "+Slow" end,
 	on_lose = function(self, err) return "#Target# speeds up.", "-Slow" end,
 	activate = function(self, eff)
-		eff.tmpid = self:addTemporaryValue("energy", {mod=-eff.power})
+		eff.tmpid = self:addTemporaryValue("global_speed", -eff.power)
 		eff.dur = self:updateEffectDuration(eff.dur, "slow")
 	end,
 	deactivate = function(self, eff)
-		self:removeTemporaryValue("energy", eff.tmpid)
+		self:removeTemporaryValue("global_speed", eff.tmpid)
 	end,
 }
 
@@ -1783,11 +1783,11 @@ newEffect{
 	on_lose = function(self, err) return "#Target# overcomes the gloom.", "-Slow" end,
 	activate = function(self, eff)
 		eff.particle = self:addParticles(Particles.new("gloom_slow", 1))
-		eff.tmpid = self:addTemporaryValue("energy", {mod=-eff.power})
+		eff.tmpid = self:addTemporaryValue("global_speed", -eff.power)
 		eff.dur = self:updateEffectDuration(eff.dur, "slow")
 	end,
 	deactivate = function(self, eff)
-		self:removeTemporaryValue("energy", eff.tmpid)
+		self:removeTemporaryValue("global_speed", eff.tmpid)
 		self:removeParticles(eff.particle)
 	end,
 }
@@ -1934,7 +1934,7 @@ newEffect{
 		if eff.hateLoss or 0 > 0 then eff.hateLossId = self:addTemporaryValue("hate_regen", -eff.hateLoss) end
 		if eff.critical or 0 > 0 then eff.criticalId = self:addTemporaryValue("combat_physcrit", eff.critical) end
 		if eff.damage or 0 > 0 then eff.damageId = self:addTemporaryValue("inc_damage", {[DamageType.PHYSICAL]=eff.damage}) end
-		if eff.speed or 0 > 0 then eff.speedId = self:addTemporaryValue("energy", {mod=eff.speed * 0.01}) end
+		if eff.speed or 0 > 0 then eff.speedId = self:addTemporaryValue("global_speed", eff.speed * 0.01) end
 		if eff.attack or 0 > 0 then eff.attackId = self:addTemporaryValue("combat_atk", self:combatAttack() * eff.attack * 0.01) end
 		if eff.evasion or 0 > 0 then eff.evasionId = self:addTemporaryValue("evasion", eff.evasion) end
 
@@ -1944,7 +1944,7 @@ newEffect{
 		if eff.hateLossId then self:removeTemporaryValue("hate_regen", eff.hateLossId) end
 		if eff.criticalId then self:removeTemporaryValue("combat_physcrit", eff.criticalId) end
 		if eff.damageId then self:removeTemporaryValue("inc_damage", eff.damageId) end
-		if eff.speedId then self:removeTemporaryValue("energy", eff.speedId) end
+		if eff.speedId then self:removeTemporaryValue("global_speed", eff.speedId) end
 		if eff.attackId then self:removeTemporaryValue("combat_atk", eff.attackId) end
 		if eff.evasionId then self:removeTemporaryValue("evasion", eff.evasionId) end
 
@@ -2008,10 +2008,10 @@ newEffect{
 	on_gain = function(self, err) return nil, "+Invigorated" end,
 	on_lose = function(self, err) return nil, "-Invigorated" end,
 	activate = function(self, eff)
-		eff.tmpid = self:addTemporaryValue("energy", {mod=eff.speed * 0.01})
+		eff.tmpid = self:addTemporaryValue("global_speed", eff.speed * 0.01)
 	end,
 	deactivate = function(self, eff)
-		self:removeTemporaryValue("energy", eff.tmpid)
+		self:removeTemporaryValue("global_speed", eff.tmpid)
 	end,
 	on_merge = function(self, old_eff, new_eff)
 		old_eff.dur = math.min(old_eff.dur + new_eff.dur, 15)
@@ -2294,13 +2294,13 @@ newEffect{
 	on_lose = function(self, err) return "#Target# slows down.", "-Wild Speed" end,
 	activate = function(self, eff)
 		eff.tmpid = self:addTemporaryValue("wild_speed", 1)
-		eff.moveid = self:addTemporaryValue("energy", {mod=self.energy.mod*eff.power/100})
+		eff.moveid = self:addTemporaryValue("global_speed", eff.power/100)
 		if self.ai_state then eff.aiid = self:addTemporaryValue("ai_state", {no_talents=1}) end -- Make AI not use talents while using it
 	end,
 	deactivate = function(self, eff)
 		self:removeTemporaryValue("wild_speed", eff.tmpid)
 		if eff.aiid then self:removeTemporaryValue("ai_state", eff.aiid) end
-		self:removeTemporaryValue("energy", eff.moveid)
+		self:removeTemporaryValue("global_speed", eff.moveid)
 	end,
 }
 
@@ -2315,13 +2315,13 @@ newEffect{
 	on_lose = function(self, err) return "#Target# slows down.", "-Step Up" end,
 	activate = function(self, eff)
 		eff.tmpid = self:addTemporaryValue("step_up", 1)
-		eff.moveid = self:addTemporaryValue("energy", {mod=self.energy.mod*eff.power/100})
+		eff.moveid = self:addTemporaryValue("global_speed", eff.power/100)
 		if self.ai_state then eff.aiid = self:addTemporaryValue("ai_state", {no_talents=1}) end -- Make AI not use talents while using it
 	end,
 	deactivate = function(self, eff)
 		self:removeTemporaryValue("step_up", eff.tmpid)
 		if eff.aiid then self:removeTemporaryValue("ai_state", eff.aiid) end
-		self:removeTemporaryValue("energy", eff.moveid)
+		self:removeTemporaryValue("global_speed", eff.moveid)
 	end,
 }
 
@@ -2336,7 +2336,7 @@ newEffect{
 	on_lose = function(self, err) return "#Target# is back to normal.", "-Lightning Speed" end,
 	activate = function(self, eff)
 		eff.tmpid = self:addTemporaryValue("lightning_speed", 1)
-		eff.moveid = self:addTemporaryValue("energy", {mod=self.energy.mod*eff.power/100})
+		eff.moveid = self:addTemporaryValue("global_speed", eff.power/100)
 		eff.resistsid = self:addTemporaryValue("resists", {
 			[DamageType.PHYSICAL]=30,
 			[DamageType.LIGHTNING]=100,
@@ -2349,7 +2349,7 @@ newEffect{
 		self:removeTemporaryValue("lightning_speed", eff.tmpid)
 		self:removeTemporaryValue("resists", eff.resistsid)
 		if eff.aiid then self:removeTemporaryValue("ai_state", eff.aiid) end
-		self:removeTemporaryValue("energy", eff.moveid)
+		self:removeTemporaryValue("global_speed", eff.moveid)
 	end,
 }
 
@@ -2811,7 +2811,7 @@ newEffect{
 newEffect{
 	name = "MADNESS_SLOW",
 	desc = "Slowed by madness",
-	long_desc = function(self, eff) return ("Madness reduces the target's global speed by %d%%."):format((1 / (1 - eff.power) - 1) * 100) end,
+	long_desc = function(self, eff) return ("Madness reduces the target's global speed by %d%%."):format(eff.power * 100) end,
 	type = "mental",
 	status = "detrimental",
 	parameters = { power=0.1 },
@@ -2819,11 +2819,11 @@ newEffect{
 	on_lose = function(self, err) return "#Target# overcomes the madness.", "-Slow" end,
 	activate = function(self, eff)
 		eff.particle = self:addParticles(Particles.new("gloom_slow", 1))
-		eff.tmpid = self:addTemporaryValue("energy", {mod=-eff.power})
+		eff.tmpid = self:addTemporaryValue("global_speed", -eff.power)
 		eff.dur = self:updateEffectDuration(eff.dur, "slow")
 	end,
 	deactivate = function(self, eff)
-		self:removeTemporaryValue("energy", eff.tmpid)
+		self:removeTemporaryValue("global_speed", eff.tmpid)
 		self:removeParticles(eff.particle)
 	end,
 }
@@ -2954,19 +2954,17 @@ newEffect{
 newEffect{
 	name = "QUICKNESS",
 	desc = "Quick",
-	long_desc = function(self, eff) return ("Increases run speed by %d%%."):format((1 / (1 - eff.power) - 1) * 100) end,
+	long_desc = function(self, eff) return ("Increases run speed by %d%%."):format(eff.power * 100) end,
 	type = "mental",
 	status = "beneficial",
 	parameters = { power=0.1 },
 	on_gain = function(self, err) return "#Target# speeds up.", "+Quick" end,
 	on_lose = function(self, err) return "#Target# slows down.", "-Quick" end,
 	activate = function(self, eff)
-		--eff.tmpid = self:addTemporaryValue("movement_speed", {mod=-eff.power})
-		self.movement_speed = (self.movement_speed or 0) - eff.power
+		eff.tmpid = self:addTemporaryValue("movement_speed", {mod=eff.power})
 	end,
 	deactivate = function(self, eff)
-		--self:removeTemporaryValue("movement_speed", eff.tmpid)
-		self.movement_speed = self.movement_speed + eff.power
+		self:removeTemporaryValue("movement_speed", eff.tmpid)
 	end,
 }
 newEffect{
@@ -3166,10 +3164,10 @@ newEffect{
 	status = "beneficial",
 	parameters = { power=10 },
 	activate = function(self, eff)
-		eff.tmpid = self:addTemporaryValue("energy", {mod=1})
+		eff.tmpid = self:addTemporaryValue("global_speed", 1)
 	end,
 	deactivate = function(self, eff)
-		self:removeTemporaryValue("energy", eff.tmpid)
+		self:removeTemporaryValue("global_speed", eff.tmpid)
 		self:setEffect(self.EFF_TEMPORAL_STUN, eff.power, {})
 	end,
 }
@@ -3675,13 +3673,13 @@ newEffect{
 	activate = function(self, eff)
 		eff.atkid = self:addTemporaryValue("combat_atk", -eff.atk)
 		eff.damid = self:addTemporaryValue("combat_dam", -eff.dam)
-		eff.tmpid = self:addTemporaryValue("energy", {mod=-0.3})
+		eff.tmpid = self:addTemporaryValue("global_speed", -0.3)
 		eff.dur = self:updateEffectDuration(eff.dur, "slow")
 	end,
 	deactivate = function(self, eff)
 		self:removeTemporaryValue("combat_atk", eff.atkid)
 		self:removeTemporaryValue("combat_dam", eff.damid)
-		self:removeTemporaryValue("energy", eff.tmpid)
+		self:removeTemporaryValue("global_speed", eff.tmpid)
 	end,
 }
 
@@ -3792,10 +3790,10 @@ newEffect{
 	on_gain = function(self, err) return "#Target# speeds up.", "+Reflexive Dodging" end,
 	on_lose = function(self, err) return "#Target# slows down.", "-Reflexive Dodging" end,
 	activate = function(self, eff)
-		eff.tmpid = self:addTemporaryValue("energy", {mod=eff.power})
+		eff.tmpid = self:addTemporaryValue("global_speed", eff.power)
 	end,
 	deactivate = function(self, eff)
-		self:removeTemporaryValue("energy", eff.tmpid)
+		self:removeTemporaryValue("global_speed", eff.tmpid)
 	end,
 }
 
@@ -3835,7 +3833,7 @@ newEffect{
 	on_gain = function(self, err) return "#Target# speeds up.", "+Sprint" end,
 	on_lose = function(self, err) return "#Target# slows down.", "-Sprint" end,
 	activate = function(self, eff)
-		eff.tmpid = self:addTemporaryValue("movement_speed", -eff.power)
+		eff.tmpid = self:addTemporaryValue("movement_speed", eff.power)
 	end,
 	deactivate = function(self, eff)
 		self:removeTemporaryValue("movement_speed", eff.tmpid)
diff --git a/game/modules/tome/data/zones/arena-unlock/npcs.lua b/game/modules/tome/data/zones/arena-unlock/npcs.lua
index 2495798faf8b639e8959ef51f038aa738329fbcb..54ad3f95fc7100c24edeb00cc620b76286ffc9fb 100644
--- a/game/modules/tome/data/zones/arena-unlock/npcs.lua
+++ b/game/modules/tome/data/zones/arena-unlock/npcs.lua
@@ -37,7 +37,6 @@ newEntity{ name = "gladiator",
 	stun_immune = 0.4,
 	autolevel = "warrior",
 	ai = "tactical", ai_state = { ai_move = "move_dmap", talent_in = 1 },
-	energy = { mod = 1 },
 
 	stats = { str=15, dex=15, mag=1, con=15 },
 	desc = [[A menacing man in heavy armor, wielding a mace. He looks battle-hardened.]],
@@ -85,7 +84,6 @@ newEntity{ name = "slinger",
 	open_door = true,
 	autolevel = "slinger",
 	ai = "tactical", ai_state = { ai_move = "move_dmap", talent_in = 1 },
-	energy = { mod = 1 },
 
 	stats = { str=10, dex=15, cun=15, con=8 },
 	desc = [[A halfling slinger. He seems adept at combat.]],
@@ -138,7 +136,6 @@ newEntity{ name = "arcane blade",
 	open_door = true,
 	autolevel = "warrior",
 	ai = "tactical", ai_state = { ai_move = "move_dmap", talent_in = 1 },
-	energy = { mod = 1 },
 
 	stats = { str=20, dex=20, mag=8, con=16 },
 	desc = [[A human Arcane Blade. His body shows multiple scars from battle.]],
diff --git a/game/modules/tome/data/zones/arena/npcs.lua b/game/modules/tome/data/zones/arena/npcs.lua
index 1a080a9cf9201d925eef83f6351782b94c5e1bd0..3dad93dc842332f371a61a09f6b02fc03a43836d 100644
--- a/game/modules/tome/data/zones/arena/npcs.lua
+++ b/game/modules/tome/data/zones/arena/npcs.lua
@@ -47,7 +47,6 @@ newEntity{ define_as = "BASE_NPC_ARENA1",
 	confusion_immune = 0.1,
 	fear_immune = 0.1,
 	ai = "tactical", ai_state = { ai_move = "move_dmap", talent_in = 1 },
-	energy = { mod = 1 },
 	stats = { str = 10, dex = 10, mag = 10, con = 10 },
 	resolvers.talents{ [Talents.T_HEAVY_ARMOUR_TRAINING] = 2, },
 	resolvers.equip{
diff --git a/game/modules/tome/data/zones/blighted-ruins/npcs.lua b/game/modules/tome/data/zones/blighted-ruins/npcs.lua
index 6696ef9966894903745cecc4599dbaf2fd586b4b..796e559521e8e02eb5e0b3f5443072802f7468f5 100644
--- a/game/modules/tome/data/zones/blighted-ruins/npcs.lua
+++ b/game/modules/tome/data/zones/blighted-ruins/npcs.lua
@@ -48,7 +48,6 @@ newEntity{
 
 	autolevel = "caster",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
-	energy = { mod=1 },
 	stats = { str=10, dex=8, mag=16, con=6 },
 
 	max_life = resolvers.rngavg(70,80), life_rating = 7,
diff --git a/game/modules/tome/data/zones/charred-scar/npcs.lua b/game/modules/tome/data/zones/charred-scar/npcs.lua
index 64f33b90efdeb81470af4844d191f3e3073447d5..cbff4a4bf8bb14ae235022907c4b45ad4a399c13 100644
--- a/game/modules/tome/data/zones/charred-scar/npcs.lua
+++ b/game/modules/tome/data/zones/charred-scar/npcs.lua
@@ -43,7 +43,6 @@ newEntity{
 
 	autolevel = "warriormage",
 	ai = "dumb_talented_simple", ai_state = { talent_in=3, },
-	energy = { mod=1 },
 	stats = { str=12, dex=8, mag=6, con=10 },
 }
 
@@ -128,7 +127,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_target="charred_scar_target", talent_in=2, },
-	energy = { mod=1 },
 	stats = { str=20, dex=8, mag=6, con=16 },
 	resolvers.inscriptions(2, {}),
 }
diff --git a/game/modules/tome/data/zones/deep-bellow/npcs.lua b/game/modules/tome/data/zones/deep-bellow/npcs.lua
index 2e5671ef0dba108905bde3351aa8a3df82fbddb5..45ae10c002ec4019aa7e795155b03663271b5709 100644
--- a/game/modules/tome/data/zones/deep-bellow/npcs.lua
+++ b/game/modules/tome/data/zones/deep-bellow/npcs.lua
@@ -86,7 +86,7 @@ newEntity{ base="BASE_NPC_CORRUPTED_HORROR", define_as = "SLIMY_CRAWLER",
 It seems to come from the digestive system of the mouth.]],
 	level_range = {4, nil}, exp_worth = 0,
 	max_life = 80, life_rating = 10, fixed_rating = true,
-	movement_speed = 0.2,
+	movement_speed = 3,
 	size_category = 1,
 
 	combat = { dam=resolvers.mbonus(25, 15), damtype=DamageType.SLIME, dammod={str=1} },
diff --git a/game/modules/tome/data/zones/flooded-cave/npcs.lua b/game/modules/tome/data/zones/flooded-cave/npcs.lua
index 371f64dfbfe80030a03c7973054b638acac79ab4..f07250e9c67d8a388fd93e9faaaca847f7016094 100644
--- a/game/modules/tome/data/zones/flooded-cave/npcs.lua
+++ b/game/modules/tome/data/zones/flooded-cave/npcs.lua
@@ -29,7 +29,7 @@ newEntity{ define_as = "UKLLMSWWIK",
 	faction="water-lair",
 	display = "D", color=colors.VIOLET,
 	desc = [[It looks like a cross between a shark and a dragon, only nastier.]],
-	energy = {mod = 1.4},
+	global_speed = 1.4,
 	level_range = {30, nil}, exp_worth = 4,
 	max_life = 250, life_rating = 27, fixed_rating = true,
 	max_stamina = 85,
diff --git a/game/modules/tome/data/zones/orc-breeding-pit/npcs.lua b/game/modules/tome/data/zones/orc-breeding-pit/npcs.lua
index 7b519f912af04ee6e9f7cdd5c06f1b82bc235449..89b8a196f2434d4cd6c0ce8e78ced620c42fffc0 100644
--- a/game/modules/tome/data/zones/orc-breeding-pit/npcs.lua
+++ b/game/modules/tome/data/zones/orc-breeding-pit/npcs.lua
@@ -28,7 +28,7 @@ newEntity{ base = "BASE_NPC_ORC",
 	rarity = 3,
 	max_life = resolvers.rngavg(30,50), life_rating = 4,
 	rank = 2,
-	movement_speed = 1.3,
+	movement_speed = 0.7,
 	melee_project = {[DamageType.SLIME] = resolvers.rngrange(10, 20)},
 	on_melee_hit = {[DamageType.SLIME] = resolvers.rngrange(10, 20)},
 	combat = { dam=resolvers.levelup(resolvers.rngavg(15,50), 1, 0.5), atk=resolvers.rngavg(15,50), dammod={str=1} },
@@ -40,7 +40,7 @@ newEntity{ base = "BASE_NPC_ORC",
 	level_range = {25, nil}, exp_worth = 0,
 	rarity = 3,
 	max_life = resolvers.rngavg(30,50), life_rating = 9, life_regen = 7,
-	movement_speed = 0.7,
+	movement_speed = 1.3,
 	melee_project = {[DamageType.SLIME] = resolvers.rngrange(10, 20)},
 	on_melee_hit = {[DamageType.SLIME] = resolvers.rngrange(10, 20)},
 	combat = { dam=resolvers.levelup(resolvers.rngavg(15,50), 1, 0.5), atk=resolvers.rngavg(15,50), dammod={str=1} },
diff --git a/game/modules/tome/data/zones/reknor/npcs.lua b/game/modules/tome/data/zones/reknor/npcs.lua
index 1aad7d21fb1396a75a15b439172f116d0487f461..74d2c3ff588a131903078ab90bc6db3aa93856e3 100644
--- a/game/modules/tome/data/zones/reknor/npcs.lua
+++ b/game/modules/tome/data/zones/reknor/npcs.lua
@@ -116,7 +116,7 @@ newEntity{ define_as = "HARNO",
 	name = "Harno, Herald of Last Hope",
 	display = "@", color=colors.LIGHT_BLUE,
 	desc = [[This is one of the heralds of Last Hope. He seems to be looking for you.]],
-	energy = {mod=2},
+	global_speed = 2,
 	level_range = {40, 40}, exp_worth = 0,
 	max_life = 150, life_rating = 12,
 	rank = 3,
diff --git a/game/modules/tome/data/zones/ring-of-blood/npcs.lua b/game/modules/tome/data/zones/ring-of-blood/npcs.lua
index e45fa872fa593ae5181789c22e29e58786caeda1..2d10eedbf40e21266a3fb781b2258ed076b6d9f6 100644
--- a/game/modules/tome/data/zones/ring-of-blood/npcs.lua
+++ b/game/modules/tome/data/zones/ring-of-blood/npcs.lua
@@ -158,7 +158,6 @@ newEntity{
 
 	autolevel = "warrior",
 	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 },
 }
 
diff --git a/game/modules/tome/data/zones/sandworm-lair/npcs.lua b/game/modules/tome/data/zones/sandworm-lair/npcs.lua
index beaf441ad2cf451e10029f529bc030fb1b6b474a..dab659f36f44040d81080f30abb8f6e83e2e6911 100644
--- a/game/modules/tome/data/zones/sandworm-lair/npcs.lua
+++ b/game/modules/tome/data/zones/sandworm-lair/npcs.lua
@@ -38,7 +38,6 @@ newEntity{ define_as = "SANDWORM_TUNNELER",
 	level_range = {12, 50}, exp_worth = 0,
 	max_life = 10000,
 	faction = "sandworm-burrowers",
-	energy = {mod=1},
 	never_anger = true,
 
 	invulnerable = 1,
diff --git a/game/modules/tome/data/zones/tannen-tower/npcs.lua b/game/modules/tome/data/zones/tannen-tower/npcs.lua
index 1ec194d82e30152daf279f3d78b7ad5b1039a996..b63a4b35abc29a0a2f96399826f88167ac5515bc 100644
--- a/game/modules/tome/data/zones/tannen-tower/npcs.lua
+++ b/game/modules/tome/data/zones/tannen-tower/npcs.lua
@@ -43,7 +43,6 @@ newEntity{ define_as = "TANNEN",
 	size_category = 2,
 	infravision = 20,
 	stats = { str=10, dex=12, cun=14, mag=25, con=16 },
-	movement_speed = 1.4,
 
 	instakill_immune = 1,
 	blind_immune = 1,
@@ -139,7 +138,6 @@ It is so huge that it blocks sight beyond it.]],
 	ai_tactic = resolvers.tactic"melee",
 	resolvers.inscriptions(6, "rune"),
 
-	energy = { mod=1 },
 	stats = { str=14, dex=12, mag=10, wil=67, con=12 },
 
 	open_door = true,
diff --git a/game/modules/tome/data/zones/temple-of-creation/npcs.lua b/game/modules/tome/data/zones/temple-of-creation/npcs.lua
index 7a7706f729f9ba9e307a0a9ffa0b48ab40f9fbe3..8eaf4ccce52222d34382025fedd09872626fef08 100644
--- a/game/modules/tome/data/zones/temple-of-creation/npcs.lua
+++ b/game/modules/tome/data/zones/temple-of-creation/npcs.lua
@@ -30,7 +30,7 @@ newEntity{ define_as = "SLASUL",
 	faction="temple-of-creation",
 	display = "@", color=colors.VIOLET,
 	desc = [[This powerful naga is at home in the Temple of Creation, and unlike his followers he uses a mace and a shield.]],
-	energy = {mod = 1.7},
+	global_speed = 1.7,
 	level_range = {30, nil}, exp_worth = 4,
 	max_life = 350, life_rating = 19, fixed_rating = true,
 	max_stamina = 85,
diff --git a/game/modules/tome/data/zones/town-angolwen/npcs.lua b/game/modules/tome/data/zones/town-angolwen/npcs.lua
index f5331c21c95f561507aa076022e45d1714efafba..6e5752f190b03a9fc803b2ed258fbddc17dd88b5 100644
--- a/game/modules/tome/data/zones/town-angolwen/npcs.lua
+++ b/game/modules/tome/data/zones/town-angolwen/npcs.lua
@@ -105,7 +105,6 @@ newEntity{
 
 	autolevel = "caster",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
-	energy = { mod=1 },
 	stats = { str=8, dex=8, mag=16, wil=18, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/town-derth/npcs.lua b/game/modules/tome/data/zones/town-derth/npcs.lua
index c509357e942445be4b8bbb9e3f65ef7f591289cf..f10e177d5f48d4d6e4110202cf63c4a97d1a8624 100644
--- a/game/modules/tome/data/zones/town-derth/npcs.lua
+++ b/game/modules/tome/data/zones/town-derth/npcs.lua
@@ -44,7 +44,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
-	energy = { mod=1 },
 	stats = { str=12, dex=8, mag=6, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/town-elvala/npcs.lua b/game/modules/tome/data/zones/town-elvala/npcs.lua
index 52695d6ee1a6db0fe22dca8f526a81b546fb6b79..f6e892ce91849c112718f4470e10b3e442f718aa 100644
--- a/game/modules/tome/data/zones/town-elvala/npcs.lua
+++ b/game/modules/tome/data/zones/town-elvala/npcs.lua
@@ -44,7 +44,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
-	energy = { mod=1 },
 	stats = { str=12, dex=8, mag=6, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/town-iron-council/npcs.lua b/game/modules/tome/data/zones/town-iron-council/npcs.lua
index 8c04a82f97c36da170d281a8aad345f57ea66ad8..1192b271ba836a7b7093276a42b4dfef18903029 100644
--- a/game/modules/tome/data/zones/town-iron-council/npcs.lua
+++ b/game/modules/tome/data/zones/town-iron-council/npcs.lua
@@ -45,7 +45,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
-	energy = { mod=1 },
 	stats = { str=12, dex=8, mag=6, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/town-last-hope/npcs.lua b/game/modules/tome/data/zones/town-last-hope/npcs.lua
index 5a75a3db6950d98d15adb40e4349c27b729c2c59..514062e7e2f2de2be7ea40880a51975be2c17f31 100644
--- a/game/modules/tome/data/zones/town-last-hope/npcs.lua
+++ b/game/modules/tome/data/zones/town-last-hope/npcs.lua
@@ -44,7 +44,6 @@ newEntity{
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
-	energy = { mod=1 },
 	stats = { str=12, dex=8, mag=6, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},