From b76bc4b494ecf039634a3217dcf976281057f6f2 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Fri, 7 Jan 2011 16:57:56 +0000
Subject: [PATCH] Changed the maximun range/sight for players & NPCs from 20 to
 10, thus reducing the offscreen rays of deaths, increasing tactical value and
 allowing for bigger tiles

git-svn-id: http://svn.net-core.org/repos/t-engine4@2309 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/class/Actor.lua             |  2 +-
 game/modules/tome/class/NPC.lua               |  4 +-
 game/modules/tome/class/Player.lua            |  2 +-
 game/modules/tome/class/interface/Archery.lua |  4 +-
 .../tome/data/general/objects/bows.lua        | 10 ++--
 .../tome/data/general/objects/slings.lua      | 10 ++--
 .../chronomancy/advanced-timetravel.lua       |  4 +-
 .../data/talents/chronomancy/chronomancy.lua  |  4 +-
 .../tome/data/talents/chronomancy/energy.lua  |  4 +-
 .../tome/data/talents/chronomancy/entropy.lua |  6 +--
 .../tome/data/talents/chronomancy/gravity.lua |  6 +--
 .../tome/data/talents/chronomancy/inertia.lua |  8 +--
 .../tome/data/talents/chronomancy/matter.lua  |  8 +--
 .../tome/data/talents/chronomancy/paradox.lua |  4 +-
 .../talents/chronomancy/temporal-combat.lua   |  4 +-
 .../data/talents/chronomancy/threading.lua    |  4 +-
 .../tome/data/talents/chronomancy/weaving.lua |  2 +-
 .../tome/data/talents/corruptions/blight.lua  |  4 +-
 .../tome/data/talents/corruptions/blood.lua   |  4 +-
 .../tome/data/talents/corruptions/bone.lua    |  4 +-
 .../tome/data/talents/corruptions/curses.lua  |  8 +--
 .../tome/data/talents/corruptions/hexes.lua   |  8 +--
 .../tome/data/talents/corruptions/plague.lua  |  8 +--
 .../data/talents/corruptions/sanguisuge.lua   |  8 +--
 .../data/talents/corruptions/shadowflame.lua  |  4 +-
 .../tome/data/talents/corruptions/vim.lua     |  4 +-
 .../data/talents/cunning/shadow-magic.lua     |  2 +-
 .../tome/data/talents/cunning/traps.lua       | 10 ++--
 .../tome/data/talents/cursed/dark-figure.lua  |  4 +-
 .../data/talents/cursed/dark-sustenance.lua   | 10 ++--
 .../tome/data/talents/cursed/darkness.lua     | 14 ++---
 .../tome/data/talents/cursed/endless-hunt.lua |  4 +-
 .../data/talents/cursed/force-of-will.lua     | 54 +++++++++----------
 .../tome/data/talents/cursed/punishments.lua  |  2 +-
 .../tome/data/talents/cursed/shadows.lua      |  6 +--
 .../tome/data/talents/divine/chants.lua       |  8 +--
 .../tome/data/talents/divine/combat.lua       |  4 +-
 .../tome/data/talents/divine/eclipse.lua      |  6 +--
 .../tome/data/talents/divine/guardian.lua     |  2 +-
 .../tome/data/talents/divine/hymns.lua        |  8 +--
 .../tome/data/talents/divine/star-fury.lua    |  6 +--
 game/modules/tome/data/talents/divine/sun.lua |  4 +-
 .../tome/data/talents/divine/twilight.lua     |  4 +-
 .../tome/data/talents/gifts/antimagic.lua     |  6 +--
 game/modules/tome/data/talents/gifts/call.lua |  4 +-
 .../tome/data/talents/gifts/cold-drake.lua    |  4 +-
 .../tome/data/talents/gifts/fire-drake.lua    |  2 +-
 .../tome/data/talents/gifts/sand-drake.lua    |  4 +-
 .../modules/tome/data/talents/gifts/slime.lua |  4 +-
 .../tome/data/talents/gifts/storm-drake.lua   |  4 +-
 .../talents/gifts/summon-augmentation.lua     |  6 +--
 .../data/talents/gifts/summon-distance.lua    | 10 ++--
 .../tome/data/talents/gifts/summon-melee.lua  |  8 +--
 .../data/talents/gifts/summon-utility.lua     | 12 ++---
 game/modules/tome/data/talents/misc/npcs.lua  | 36 ++++++-------
 .../tome/data/talents/psionic/absorption.lua  | 28 +++++-----
 game/modules/tome/data/talents/spells/air.lua |  6 +--
 .../tome/data/talents/spells/arcane.lua       |  2 +-
 .../tome/data/talents/spells/conveyance.lua   |  2 +-
 .../tome/data/talents/spells/divination.lua   |  2 +-
 .../tome/data/talents/spells/earth.lua        |  6 +--
 .../tome/data/talents/spells/enhancement.lua  |  2 +-
 .../tome/data/talents/spells/explosives.lua   |  4 +-
 .../tome/data/talents/spells/fire-alchemy.lua |  6 +--
 .../modules/tome/data/talents/spells/fire.lua |  6 +--
 .../tome/data/talents/spells/golem.lua        |  8 +--
 game/modules/tome/data/talents/spells/ice.lua |  4 +-
 .../modules/tome/data/talents/spells/meta.lua |  2 +-
 .../tome/data/talents/spells/staff-combat.lua |  3 +-
 .../data/talents/spells/stone-alchemy.lua     |  3 --
 .../tome/data/talents/spells/stone.lua        |  4 +-
 .../tome/data/talents/spells/storm.lua        |  4 +-
 .../tome/data/talents/spells/temporal.lua     |  6 +--
 .../tome/data/talents/spells/water.lua        |  4 +-
 .../tome/data/talents/spells/wildfire.lua     |  4 +-
 .../tome/data/talents/techniques/archery.lua  | 12 ++---
 .../tome/data/talents/techniques/bow.lua      |  8 +--
 .../talents/techniques/combat-techniques.lua  |  2 +-
 .../data/talents/techniques/field-control.lua |  4 +-
 .../talents/techniques/magical-combat.lua     |  8 +--
 .../tome/data/talents/techniques/sling.lua    |  6 +--
 .../tome/data/talents/undeads/ghoul.lua       |  2 +-
 82 files changed, 266 insertions(+), 268 deletions(-)

diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 1280488f21..5257a871c8 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -92,7 +92,7 @@ function _M:init(t, no_default)
 
 	t.healing_factor = t.healing_factor or 1
 
-	t.sight = t.sight or 20
+	t.sight = t.sight or 10
 
 	t.resource_pool_refs = t.resource_pool_refs or {}
 
diff --git a/game/modules/tome/class/NPC.lua b/game/modules/tome/class/NPC.lua
index 7ad5b254d8..7a92b48ff1 100644
--- a/game/modules/tome/class/NPC.lua
+++ b/game/modules/tome/class/NPC.lua
@@ -62,9 +62,9 @@ function _M:doFOV()
 --	end
 	-- If the actor has no special vision we can use the default cache
 	if not self.special_vision then
-		self:computeFOV(self.sight or 20, "block_sight", nil, nil, nil, true)
+		self:computeFOV(self.sight or 10, "block_sight", nil, nil, nil, true)
 	else
-		self:computeFOV(self.sight or 20, "block_sight")
+		self:computeFOV(self.sight or 10, "block_sight")
 	end
 end
 
diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index f67576409a..85a112bd48 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -276,7 +276,7 @@ function _M:playerFOV()
 		if game.zone.wilderness_see_radius then
 			self:computeFOV(game.zone.wilderness_see_radius, "block_sight", function(x, y, dx, dy, sqdist) game.level.map:applyLite(x, y, wild_fovdist[sqdist]) end, true, true, true)
 		else
-			self:computeFOV(self.sight or 20, "block_sight", function(x, y, dx, dy, sqdist)
+			self:computeFOV(self.sight or 10, "block_sight", function(x, y, dx, dy, sqdist)
 				game.level.map:apply(x, y, fovdist[sqdist])
 			end, true, false, true)
 			if self.lite <= 0 then game.level.map:applyLite(self.x, self.y)
diff --git a/game/modules/tome/class/interface/Archery.lua b/game/modules/tome/class/interface/Archery.lua
index 8cad7fba9f..a46ad8d3ea 100644
--- a/game/modules/tome/class/interface/Archery.lua
+++ b/game/modules/tome/class/interface/Archery.lua
@@ -43,7 +43,7 @@ function _M:archeryAcquireTargets(tg, params)
 
 	local tg = tg or {type="bolt"}
 
-	if not tg.range then tg.range=weapon.range or 10 end
+	if not tg.range then tg.range=weapon.range or 6 end
 	tg.display = tg.display or {display='/'}
 	tg.speed = (tg.speed or 20) * (ammo.travel_speed or 100) / 100
 	local x, y = self:getTarget(tg)
@@ -197,7 +197,7 @@ function _M:archeryShoot(targets, talent, tg, params)
 	local tg = tg or {type="bolt"}
 	tg.talent = tg.talent or talent
 
-	if not tg.range then tg.range=weapon.range or 10 end
+	if not tg.range then tg.range=weapon.range or 6 end
 	tg.display = tg.display or {display='/'}
 	tg.speed = (tg.speed or 20) * (ammo.travel_speed or 100) / 100
 	tg.archery = params or {}
diff --git a/game/modules/tome/data/general/objects/bows.lua b/game/modules/tome/data/general/objects/bows.lua
index 0fe0e26d0a..c36c96b6f5 100644
--- a/game/modules/tome/data/general/objects/bows.lua
+++ b/game/modules/tome/data/general/objects/bows.lua
@@ -40,7 +40,7 @@ newEntity{ base = "BASE_LONGBOW",
 	cost = 5,
 	material_level = 1,
 	combat = {
-		range = 8,
+		range = 6,
 		physspeed = 0.8,
 	},
 	basic_ammo = {
@@ -58,7 +58,7 @@ newEntity{ base = "BASE_LONGBOW",
 	cost = 10,
 	material_level = 2,
 	combat = {
-		range = 10,
+		range = 7,
 		physspeed = 0.8,
 	},
 	basic_ammo = {
@@ -76,7 +76,7 @@ newEntity{ base = "BASE_LONGBOW",
 	cost = 15,
 	material_level = 3,
 	combat = {
-		range = 12,
+		range = 8,
 		physspeed = 0.8,
 	},
 	basic_ammo = {
@@ -94,7 +94,7 @@ newEntity{ base = "BASE_LONGBOW",
 	cost = 25,
 	material_level = 4,
 	combat = {
-		range = 15,
+		range = 9,
 		physspeed = 0.8,
 	},
 	basic_ammo = {
@@ -112,7 +112,7 @@ newEntity{ base = "BASE_LONGBOW",
 	cost = 35,
 	material_level = 5,
 	combat = {
-		range = 18,
+		range = 10,
 		physspeed = 0.8,
 	},
 	basic_ammo = {
diff --git a/game/modules/tome/data/general/objects/slings.lua b/game/modules/tome/data/general/objects/slings.lua
index 4010b17263..0e1dfa9536 100644
--- a/game/modules/tome/data/general/objects/slings.lua
+++ b/game/modules/tome/data/general/objects/slings.lua
@@ -39,7 +39,7 @@ newEntity{ base = "BASE_SLING",
 	cost = 5,
 	material_level = 1,
 	combat = {
-		range = 8,
+		range = 6,
 		physspeed = 0.8,
 	},
 	basic_ammo = {
@@ -57,7 +57,7 @@ newEntity{ base = "BASE_SLING",
 	cost = 10,
 	material_level = 2,
 	combat = {
-		range = 10,
+		range = 7,
 		physspeed = 0.8,
 	},
 	basic_ammo = {
@@ -75,7 +75,7 @@ newEntity{ base = "BASE_SLING",
 	cost = 15,
 	material_level = 3,
 	combat = {
-		range = 12,
+		range = 8,
 		physspeed = 0.8,
 	},
 	basic_ammo = {
@@ -93,7 +93,7 @@ newEntity{ base = "BASE_SLING",
 	cost = 25,
 	material_level = 4,
 	combat = {
-		range = 15,
+		range = 9,
 		physspeed = 0.8,
 	},
 	basic_ammo = {
@@ -111,7 +111,7 @@ newEntity{ base = "BASE_SLING",
 	cost = 35,
 	material_level = 5,
 	combat = {
-		range = 18,
+		range = 10,
 		physspeed = 0.8,
 	},
 	basic_ammo = {
diff --git a/game/modules/tome/data/talents/chronomancy/advanced-timetravel.lua b/game/modules/tome/data/talents/chronomancy/advanced-timetravel.lua
index bc90d1fa5c..b46c7f71e3 100644
--- a/game/modules/tome/data/talents/chronomancy/advanced-timetravel.lua
+++ b/game/modules/tome/data/talents/chronomancy/advanced-timetravel.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="beam", range=self:getTalentRange(t), talent=t}
@@ -58,7 +58,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/chronomancy/chronomancy.lua b/game/modules/tome/data/talents/chronomancy/chronomancy.lua
index 43d3cb168e..16b5b70224 100644
--- a/game/modules/tome/data/talents/chronomancy/chronomancy.lua
+++ b/game/modules/tome/data/talents/chronomancy/chronomancy.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="beam", range=self:getTalentRange(t), talent=t}
@@ -58,7 +58,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/chronomancy/energy.lua b/game/modules/tome/data/talents/chronomancy/energy.lua
index 025aca60c4..0161257044 100644
--- a/game/modules/tome/data/talents/chronomancy/energy.lua
+++ b/game/modules/tome/data/talents/chronomancy/energy.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="beam", range=self:getTalentRange(t), talent=t}
@@ -58,7 +58,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/chronomancy/entropy.lua b/game/modules/tome/data/talents/chronomancy/entropy.lua
index cd17e73357..ed2a76ac13 100644
--- a/game/modules/tome/data/talents/chronomancy/entropy.lua
+++ b/game/modules/tome/data/talents/chronomancy/entropy.lua
@@ -31,7 +31,7 @@ newTalent{
 	},
 	reflectable = true,
 	proj_speed = 4,
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -59,7 +59,7 @@ newTalent{
 	tactical = {
 		DEFENSE = 10,
 	},
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		game:playSoundNear(self, "talents/spell_generic")
 		self:setEffect(self.EFF_ENTROPIC_SHIELD, 10, {power=self:combatTalentSpellDamage(t, 10, 50)*getParadoxModifier(self, pm)})
@@ -84,7 +84,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/chronomancy/gravity.lua b/game/modules/tome/data/talents/chronomancy/gravity.lua
index df8ee2c872..5ba5ebfb1a 100644
--- a/game/modules/tome/data/talents/chronomancy/gravity.lua
+++ b/game/modules/tome/data/talents/chronomancy/gravity.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
@@ -58,7 +58,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
@@ -123,7 +123,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
diff --git a/game/modules/tome/data/talents/chronomancy/inertia.lua b/game/modules/tome/data/talents/chronomancy/inertia.lua
index 6c40df637f..e9ed35dbe0 100644
--- a/game/modules/tome/data/talents/chronomancy/inertia.lua
+++ b/game/modules/tome/data/talents/chronomancy/inertia.lua
@@ -27,7 +27,7 @@ newTalent{
 	tactical = {
 		DEFENSE = 10,
 	},
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		game:playSoundNear(self, "talents/spell_generic")
 		self:setEffect(self.EFF_DAMPENING_FIELD, 10, {power=self:combatTalentSpellDamage(t, 5, 40) * getParadoxModifier(self, pm)})
@@ -47,7 +47,7 @@ newTalent{
 	points = 5,
 	paradox = 5,
 	cooldown = 10,
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -78,7 +78,7 @@ newTalent{
 	points = 5,
 	cooldown = 10,
 	paradox = 5,
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -99,7 +99,7 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		return ([[***BROKEN DO NOT CAST*** Reduces the targets global speed by %d%%.  The target will slowly recover all of its speed over %d turns.  
+		return ([[***BROKEN DO NOT CAST*** Reduces the targets global speed by %d%%.  The target will slowly recover all of its speed over %d turns.
 		The chance will increase with Magic stat.]]):format(100, 3 + self:getTalentLevel(t))
 	end,
 }
diff --git a/game/modules/tome/data/talents/chronomancy/matter.lua b/game/modules/tome/data/talents/chronomancy/matter.lua
index 10ea7e3829..3a32ae29ca 100644
--- a/game/modules/tome/data/talents/chronomancy/matter.lua
+++ b/game/modules/tome/data/talents/chronomancy/matter.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
@@ -55,7 +55,7 @@ newTalent{
 	points = 5,
 	random_ego = "utility",
 	paradox = 10,
-	range = function(self, t) return self:getTalentLevel(t)*2 end,
+	range = function(self, t) return self:getTalentLevel(t)+1 end,
 	cooldown = function(self, t) return 20 - (self:getTalentLevel(t) *2) end,
 	reflectable = true,
 	requires_target = true,
@@ -89,7 +89,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
@@ -128,7 +128,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 15,
+	range = 7,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
diff --git a/game/modules/tome/data/talents/chronomancy/paradox.lua b/game/modules/tome/data/talents/chronomancy/paradox.lua
index 953e8ea3c9..643a181a0f 100644
--- a/game/modules/tome/data/talents/chronomancy/paradox.lua
+++ b/game/modules/tome/data/talents/chronomancy/paradox.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="beam", range=self:getTalentRange(t), talent=t}
@@ -58,7 +58,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/chronomancy/temporal-combat.lua b/game/modules/tome/data/talents/chronomancy/temporal-combat.lua
index 5f27001b6a..ba1a011f9d 100644
--- a/game/modules/tome/data/talents/chronomancy/temporal-combat.lua
+++ b/game/modules/tome/data/talents/chronomancy/temporal-combat.lua
@@ -44,7 +44,7 @@ newTalent{
 	}
 
 
-   newTalent{
+newTalent{
 	name = "Kinetic Folding",
 	type = {"chronomancy/temporal-combat", 2},
 	require = temporal_req2,
@@ -56,7 +56,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 10,
+	range = 6,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
 		local x, y = self:getTarget(tg)
diff --git a/game/modules/tome/data/talents/chronomancy/threading.lua b/game/modules/tome/data/talents/chronomancy/threading.lua
index da50999e8d..4cd4f42095 100644
--- a/game/modules/tome/data/talents/chronomancy/threading.lua
+++ b/game/modules/tome/data/talents/chronomancy/threading.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="beam", range=self:getTalentRange(t), talent=t}
@@ -58,7 +58,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/chronomancy/weaving.lua b/game/modules/tome/data/talents/chronomancy/weaving.lua
index 0a189ebb0a..ca880a9f7b 100644
--- a/game/modules/tome/data/talents/chronomancy/weaving.lua
+++ b/game/modules/tome/data/talents/chronomancy/weaving.lua
@@ -169,7 +169,7 @@ newTalent{
 	tactical = {
 		DEFENSE = 10,
 	},
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		local dur = util.bound(5 + math.floor(self:getTalentLevel(t)), 5, 15)*getParadoxModifier(self, pm)
 		self:setEffect(self.EFF_DAMAGE_SMEARING, dur, {power=10})
diff --git a/game/modules/tome/data/talents/corruptions/blight.lua b/game/modules/tome/data/talents/corruptions/blight.lua
index 3cdfe02719..54daad21f2 100644
--- a/game/modules/tome/data/talents/corruptions/blight.lua
+++ b/game/modules/tome/data/talents/corruptions/blight.lua
@@ -50,7 +50,7 @@ newTalent{
 	points = 5,
 	cooldown = 10,
 	vim = 30,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="ball", radius=3, range=self:getTalentRange(t), talent=t}
@@ -108,7 +108,7 @@ newTalent{
 	points = 5,
 	cooldown = 10,
 	vim = 12,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/corruptions/blood.lua b/game/modules/tome/data/talents/corruptions/blood.lua
index 1e825fd19c..23ef7ef48a 100644
--- a/game/modules/tome/data/talents/corruptions/blood.lua
+++ b/game/modules/tome/data/talents/corruptions/blood.lua
@@ -56,7 +56,7 @@ newTalent{
 	points = 5,
 	cooldown = 5,
 	vim = 20,
-	range = 20,
+	range = 10,
 	proj_speed = 20,
 	requires_target = true,
 	action = function(self, t)
@@ -80,7 +80,7 @@ newTalent{
 	points = 5,
 	cooldown = 12,
 	vim = 30,
-	range = function(self, t) return 3 + self:getTalentLevelRaw(t) end,
+	range = function(self, t) return 2 + self:getTalentLevelRaw(t) end,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="ball", range=0, radius=self:getTalentRange(t), friendlyfire=false, talent=t}
diff --git a/game/modules/tome/data/talents/corruptions/bone.lua b/game/modules/tome/data/talents/corruptions/bone.lua
index 91f75e4aca..050a459bfc 100644
--- a/game/modules/tome/data/talents/corruptions/bone.lua
+++ b/game/modules/tome/data/talents/corruptions/bone.lua
@@ -24,7 +24,7 @@ newTalent{
 	points = 5,
 	vim = 13,
 	cooldown = 4,
-	range = 20,
+	range = 10,
 	random_ego = "attack",
 	direct_hit = true,
 	requires_target = true,
@@ -50,7 +50,7 @@ newTalent{
 	points = 5,
 	vim = 28,
 	cooldown = 15,
-	range = 15,
+	range = 7,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t)}
diff --git a/game/modules/tome/data/talents/corruptions/curses.lua b/game/modules/tome/data/talents/corruptions/curses.lua
index bf836332b7..26c03d08c6 100644
--- a/game/modules/tome/data/talents/corruptions/curses.lua
+++ b/game/modules/tome/data/talents/corruptions/curses.lua
@@ -24,7 +24,7 @@ newTalent{
 	points = 5,
 	cooldown = 20,
 	vim = 20,
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -54,7 +54,7 @@ newTalent{
 	points = 5,
 	cooldown = 20,
 	vim = 20,
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -84,7 +84,7 @@ newTalent{
 	points = 5,
 	cooldown = 20,
 	vim = 20,
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -114,7 +114,7 @@ newTalent{
 	points = 5,
 	cooldown = 20,
 	vim = 20,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	direct_hit = true,
 	action = function(self, t)
diff --git a/game/modules/tome/data/talents/corruptions/hexes.lua b/game/modules/tome/data/talents/corruptions/hexes.lua
index e5f18343ff..6a59f265a3 100644
--- a/game/modules/tome/data/talents/corruptions/hexes.lua
+++ b/game/modules/tome/data/talents/corruptions/hexes.lua
@@ -24,7 +24,7 @@ newTalent{
 	points = 5,
 	cooldown = 20,
 	vim = 30,
-	range = 30,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -54,7 +54,7 @@ newTalent{
 	points = 5,
 	cooldown = 20,
 	vim = 30,
-	range = 30,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -84,7 +84,7 @@ newTalent{
 	points = 5,
 	cooldown = 20,
 	vim = 30,
-	range = 30,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -114,7 +114,7 @@ newTalent{
 	points = 5,
 	cooldown = 20,
 	vim = 30,
-	range = 30,
+	range = 10,
 	no_npc_use = true,
 	direct_hit = true,
 	requires_target = true,
diff --git a/game/modules/tome/data/talents/corruptions/plague.lua b/game/modules/tome/data/talents/corruptions/plague.lua
index 0628aac1e4..30184491aa 100644
--- a/game/modules/tome/data/talents/corruptions/plague.lua
+++ b/game/modules/tome/data/talents/corruptions/plague.lua
@@ -26,7 +26,7 @@ newTalent{
 	cooldown = 3,
 	random_ego = "attack",
 	requires_target = true,
-	range = function(self, t) return 5 + math.floor(self:getTalentLevel(t) * 1.3) end,
+	range = function(self, t) return 4 + math.floor(self:getTalentLevel(t)) end,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t)}
 		local x, y = self:getTarget(tg)
@@ -64,7 +64,7 @@ newTalent{
 	points = 5,
 	vim = 18,
 	cooldown = 9,
-	range = 15,
+	range = 7,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t)}
@@ -123,7 +123,7 @@ newTalent{
 	points = 5,
 	vim = 35,
 	cooldown = 15,
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -176,7 +176,7 @@ newTalent{
 	points = 5,
 	vim = 20,
 	cooldown = 13,
-	range = 10,
+	range = 6,
 	requires_target = true,
 	do_spread = function(self, t, carrier)
 		-- List all diseases
diff --git a/game/modules/tome/data/talents/corruptions/sanguisuge.lua b/game/modules/tome/data/talents/corruptions/sanguisuge.lua
index 05ac775b21..a78ca3e4e9 100644
--- a/game/modules/tome/data/talents/corruptions/sanguisuge.lua
+++ b/game/modules/tome/data/talents/corruptions/sanguisuge.lua
@@ -24,7 +24,7 @@ newTalent{
 	points = 5,
 	vim = 0,
 	cooldown = 30,
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		if self.max_life * 0.2 >= self.life then
 			game.logPlayer(self, "Doing this would kill you.")
@@ -67,7 +67,7 @@ newTalent{
 	reflectable = true,
 	proj_speed = 15,
 	requires_target = true,
-	range = function(self, t) return 3 * self:getTalentLevelRaw(t) end,
+	range = function(self, t) return 4 + self:getTalentLevelRaw(t) end,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_slime"}}
 		local x, y = self:getTarget(tg)
@@ -91,7 +91,7 @@ newTalent{
 	points = 5,
 	sustain_vim = 30,
 	cooldown = 30,
-	range = 20,
+	range = 10,
 	activate = function(self, t)
 		game:playSoundNear(self, "talents/spell_generic2")
 		local ret = {
@@ -119,7 +119,7 @@ newTalent{
 	points = 5,
 	vim = 40,
 	cooldown = 20,
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		self:setEffect(self.EFF_LIFE_TAP, 7, {power=math.ceil(6 + self:getTalentLevel(t) * 2)})
 		game:playSoundNear(self, "talents/spell_generic2")
diff --git a/game/modules/tome/data/talents/corruptions/shadowflame.lua b/game/modules/tome/data/talents/corruptions/shadowflame.lua
index 804253d101..3ab402d926 100644
--- a/game/modules/tome/data/talents/corruptions/shadowflame.lua
+++ b/game/modules/tome/data/talents/corruptions/shadowflame.lua
@@ -44,7 +44,7 @@ newTalent{
 	cooldown = 10,
 	vim = 20,
 	requires_target = true,
-	range = 15,
+	range = 6,
 	proj_speed = 4,
 	direct_hit = true,
 	requires_target = true,
@@ -120,7 +120,7 @@ newTalent{
 	cooldown = 60,
 	no_sustain_autoreset = true,
 	no_npc_use = true,
-	range = 10,
+	range = 5,
 	activate = function(self, t)
 		if game.zone.is_demon_plane then
 			game.logPlayer(self, "This spell can not be used from within the demon place.")
diff --git a/game/modules/tome/data/talents/corruptions/vim.lua b/game/modules/tome/data/talents/corruptions/vim.lua
index 6e2557b2e6..6f62ec6420 100644
--- a/game/modules/tome/data/talents/corruptions/vim.lua
+++ b/game/modules/tome/data/talents/corruptions/vim.lua
@@ -23,7 +23,7 @@ newTalent{
 	points = 5,
 	cooldown = 4,
 	vim = 10,
-	range = 20,
+	range = 10,
 	proj_speed = 10,
 	requires_target = true,
 	action = function(self, t)
@@ -94,7 +94,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 5,
 	},
-	range = 15,
+	range = 7,
 	action = function(self, t)
 		local tg = {type="ball", radius=3, range=self:getTalentRange(t), talent=t}
 		local x, y = self:getTarget(tg)
diff --git a/game/modules/tome/data/talents/cunning/shadow-magic.lua b/game/modules/tome/data/talents/cunning/shadow-magic.lua
index e84023130d..9b81f3723c 100644
--- a/game/modules/tome/data/talents/cunning/shadow-magic.lua
+++ b/game/modules/tome/data/talents/cunning/shadow-magic.lua
@@ -63,7 +63,7 @@ newTalent{
 	cooldown = 5,
 	sustain_stamina = 40,
 	require = cuns_req3,
-	range = 20,
+	range = 10,
 	getManaRegen = function(self, t) return self:getTalentLevel(t) / 14 end,
 	activate = function(self, t)
 		return {
diff --git a/game/modules/tome/data/talents/cunning/traps.lua b/game/modules/tome/data/talents/cunning/traps.lua
index 991080dcef..2f687aaa1b 100644
--- a/game/modules/tome/data/talents/cunning/traps.lua
+++ b/game/modules/tome/data/talents/cunning/traps.lua
@@ -19,7 +19,7 @@
 
 local Map = require "engine.Map"
 
-local trap_range = function(self, t) return 0 + math.floor(self:getTalentLevel(self.T_TRAP_LAUNCHER) * 2.2) end
+local trap_range = function(self, t) return 0 + math.floor(self:getTalentLevel(self.T_TRAP_LAUNCHER) * 1.2) end
 
 ----------------------------------------------------------------
 -- Trapping
@@ -80,7 +80,7 @@ newTalent{
 	stamina = 15,
 	no_break_stealth = true,
 	require = cuns_req2,
-	range = function(self, t) return math.ceil(self:getTalentLevel(t) * 1.5 + 5) end,
+	range = function(self, t) return math.ceil(self:getTalentLevel(t) + 5) end,
 	action = function(self, t)
 		local tg = {type="bolt", nowarning=true, range=self:getTalentRange(t), nolock=true, talent=t}
 		local tx, ty, target = self:getTarget(tg)
@@ -146,19 +146,19 @@ newTalent{
 	reflectable = true,
 	proj_speed = 10,
 	requires_target = true,
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
-		self:projectile(tg, x, y, DamageType.STICKY_SMOKE, math.ceil(self:getTalentLevel(t) * 2.5), {type="slime"})
+		self:projectile(tg, x, y, DamageType.STICKY_SMOKE, math.ceil(self:getTalentLevel(t) * 1.2), {type="slime"})
 		game:playSoundNear(self, "talents/slime")
 		return true
 	end,
 	info = function(self, t)
 		return ([[Throws a vial of sticky smoke that explodes on your foe, reducing its vision range by %d for 5 turns.
 		This can be used while stealthed.]]):
-		format(math.ceil(self:getTalentLevel(t) * 2.5))
+		format(math.ceil(self:getTalentLevel(t) * 1.2))
 	end,
 }
 
diff --git a/game/modules/tome/data/talents/cursed/dark-figure.lua b/game/modules/tome/data/talents/cursed/dark-figure.lua
index fec4ba9627..5c507061bf 100644
--- a/game/modules/tome/data/talents/cursed/dark-figure.lua
+++ b/game/modules/tome/data/talents/cursed/dark-figure.lua
@@ -30,7 +30,7 @@ newTalent{
 	hate = 0.1,
 	getRadius = function(self, t) return 3 + math.floor((self:getTalentLevelRaw(t) - 1) / 2) end,
 	getDuration = function(self, t) return 5 + math.floor(self:getTalentLevel(t) * 2) end,
-	range = 10,
+	range = 6,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
 		local x, y, target = self:getTarget(tg)
@@ -127,7 +127,7 @@ newTalent{
 	end,
 	on_unlearn = function(self, t)
 	end,
-	range = function(self, t) return 18 - math.floor(self:getTalentLevel(t) * 1.4) end,
+	range = function(self, t) return 9 - math.floor(self:getTalentLevel(t) * 0.7) end,
 	info = function(self, t)
 		local range = t.range(self, t)
 		return ([[You hide your terrible nature behind a pitiful figure. Those that see you from a distance of %d will ignore you.]]):format(range)
diff --git a/game/modules/tome/data/talents/cursed/dark-sustenance.lua b/game/modules/tome/data/talents/cursed/dark-sustenance.lua
index bc5da6f44c..b5d7f3ebdc 100644
--- a/game/modules/tome/data/talents/cursed/dark-sustenance.lua
+++ b/game/modules/tome/data/talents/cursed/dark-sustenance.lua
@@ -24,7 +24,7 @@ newTalent{
 	points = 5,
 	random_ego = "attack",
 	cooldown = 6,
-	range = 15,
+	range = 7,
 	requires_target = true,
 	getHateGain = function(self, t)
 		return math.sqrt(self:getTalentLevel(t)) * 0.2 + self:getWil(0.15)
@@ -43,24 +43,24 @@ newTalent{
 		if self:hasEffect(self.EFF_FEED_HATE) then
 			self:removeEffect(self.EFF_FEED_HATE)
 		end
-		
+
 		local hateGain = t.getHateGain(self, t)
 		local constitutionGain = 0
 		local lifeRegenGain = 0
 		local damageGain = 0
 		local resistGain = 0
-		
+
 		local tFeedHealth = self:getTalentFromId(self.T_FEED_HEALTH)
 		if tFeedHealth and self:getTalentLevelRaw(tFeedHealth) > 0 then
 			constitutionGain = tFeedHealth.getConstitutionGain(self, tFeedHealth, target)
 			lifeRegenGain = tFeedHealth.getLifeRegenGain(self, tFeedHealth)
 		end
-		
+
 		local tFeedPower = self:getTalentFromId(self.T_FEED_POWER)
 		if tFeedPower and self:getTalentLevelRaw(tFeedPower) > 0 then
 			damageGain = tFeedPower.getDamageGain(self, tFeedPower, target)
 		end
-		
+
 		local tFeedStrengths = self:getTalentFromId(self.T_FEED_STRENGTHS)
 		if tFeedStrengths and self:getTalentLevelRaw(tFeedStrengths) > 0 then
 			resistGain = tFeedStrengths.getResistGain(self, tFeedStrengths, target)
diff --git a/game/modules/tome/data/talents/cursed/darkness.lua b/game/modules/tome/data/talents/cursed/darkness.lua
index acb4ac363a..1d5a0da5fb 100644
--- a/game/modules/tome/data/talents/cursed/darkness.lua
+++ b/game/modules/tome/data/talents/cursed/darkness.lua
@@ -47,7 +47,7 @@ local function createDarkTendrils(summoner, x, y, target, damage, duration, pinD
 			local hitTarget = false
 
 			local tCreepingDarkness = self.summoner:getTalentFromId(summoner.T_CREEPING_DARKNESS)
-			
+
 			if self.finalizing then
 				if self.duration <= 0 or self.target.dead or self.x ~= self.target.x or self.y ~= self.target.y then
 					game.logSeen(self, "The dark tendrils dissipate.")
@@ -148,7 +148,7 @@ newTalent{
 	hate = 1.5,
 	range = 5,
 	requires_target = true,
-	
+
 	-- implementation of creeping darkness..used in various locations, but stored here
 	canCreep = function(x, y, ignoreCreepingDark)
 		-- not on map
@@ -220,9 +220,9 @@ newTalent{
 					--game.level.map:redisplay()
 				else
 					self.duration = self.duration - 1
-					
+
 					local tCreepingDarkness = self.summoner:getTalentFromId(self.summoner.T_CREEPING_DARKNESS)
-					
+
 					if self.canCreep and self.creep > 0 and rng.percent(self.creepChance) then
 						if not tCreepingDarkness.doCreep(tCreepingDarkness, self, true) then
 							-- doCreep failed..pass creep on to a neighbor and stop creeping
@@ -269,7 +269,7 @@ newTalent{
 			end
 		end
 	end,
-	
+
 	getRadius = function(self, t)
 		return 3
 	end,
@@ -359,7 +359,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 6,
+	range = 5,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
@@ -410,7 +410,7 @@ newTalent{
 	random_ego = "attack",
 	cooldown = 10,
 	hate =  1.2,
-	range = 10,
+	range = 6,
 	getPinDuration = function(self, t)
 		return 1 + math.floor(self:getTalentLevel(t) / 2)
 	end,
diff --git a/game/modules/tome/data/talents/cursed/endless-hunt.lua b/game/modules/tome/data/talents/cursed/endless-hunt.lua
index f5b9993648..dd9e0e89d7 100644
--- a/game/modules/tome/data/talents/cursed/endless-hunt.lua
+++ b/game/modules/tome/data/talents/cursed/endless-hunt.lua
@@ -96,7 +96,7 @@ newTalent{
 	random_ego = "attack",
 	cooldown = 10,
 	hate = 0.3,
-	range = 10,
+	range = 6,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t)}
@@ -135,7 +135,7 @@ newTalent{
 	random_ego = "attack",
 	cooldown = 25,
 	hate = 0.1,
-	range = 10,
+	range = 6,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/cursed/force-of-will.lua b/game/modules/tome/data/talents/cursed/force-of-will.lua
index e68d1e4ff3..553a4b22b3 100644
--- a/game/modules/tome/data/talents/cursed/force-of-will.lua
+++ b/game/modules/tome/data/talents/cursed/force-of-will.lua
@@ -32,7 +32,7 @@ local function forceHit(self, target, sourceX, sourceY, damage, knockback, knock
 		self:project(target, target.x, target.y, DamageType.PHYSICAL, damage)
 		game.level.map:particleEmitter(target.x, target.y, 1, "force_hit", {power=power, dx=target.x - sourceX, dy=target.y - sourceY})
 	end
-	
+
 	-- knockback?
 	if not target.dead and knockback and knockback > 0 and target:canBe("knockback") and (target.never_move or 0) < 1 then
 		-- give direct hit a direction?
@@ -41,7 +41,7 @@ local function forceHit(self, target, sourceX, sourceY, damage, knockback, knock
 			sourceX = sourceX + dir_to_coord[newDirection][1]
 			sourceY = sourceY + dir_to_coord[newDirection][2]
 		end
-	
+
 		local lineFunction = line.new(sourceX, sourceY, target.x, target.y, true)
 		local finalX, finalY = target.x, target.y
 		local knockbackCount = 0
@@ -49,7 +49,7 @@ local function forceHit(self, target, sourceX, sourceY, damage, knockback, knock
 		while knockback > 0 do
 			blocked = true
 			local x, y = lineFunction(true)
-			
+
 			if not game.level.map:isBound(x, y) or game.level.map:checkAllEntities(x, y, "block_move", target) then
 				-- blocked
 				local nextTarget = game.level.map(x, y, Map.ACTOR)
@@ -64,17 +64,17 @@ local function forceHit(self, target, sourceX, sourceY, damage, knockback, knock
 				else
 					game.logPlayer(self, "%s was smashed!", target.name:capitalize())
 				end
-				
+
 				-- take partial damage
 				local blockDamage = damage * knockback * knockbackDamage / 100
 				self:project(target, target.x, target.y, DamageType.PHYSICAL, blockDamage)
-				
+
 				if nextTarget then
 					-- start a new force hit with the knockback damage and current knockback
-					
+
 					forceHit(self, nextTarget, sourceX, sourceY, blockDamage, knockback, knockbackDamage, power / 2)
 				end
-				
+
 				knockback = 0
 			else
 				-- allow move
@@ -83,11 +83,11 @@ local function forceHit(self, target, sourceX, sourceY, damage, knockback, knock
 				knockbackCount = knockbackCount + 1
 			end
 		end
-		
+
 		if not blocked and knockbackCount > 0 then
 			game.logPlayer(self, "%s was blasted back %d spaces!", target.name:capitalize())
 		end
-		
+
 		if not target.dead and (finalX ~= target.x or finalY ~= target.y) then
 			target:move(finalX, finalY, true)
 		end
@@ -103,7 +103,7 @@ newTalent{
 	cooldown = 4,
 	hate = 0.5,
 	range = function(self, t)
-		return 6
+		return 4
 	end,
 	getDamage = function(self, t)
 		return combatTalentDamage(self, t, 20, 160)
@@ -113,13 +113,13 @@ newTalent{
 	end,
 	action = function(self, t)
 		local range = self:getTalentRange(t)
-		
+
 		local tg = {type="hit", range=self:getTalentRange(t)}
 		local x, y, target = self:getTarget(tg)
 		if not x or not y or not target then return nil end
-		
+
 		local distance = math.max(1, math.floor(core.fov.distance(self.x, self.y, x, y)))
-		
+
 		local power = (1 - ((distance - 1) / range))
 		local damage = t.getDamage(self, t) * power
 		local knockback = t.getKnockback(self, t)
@@ -168,9 +168,9 @@ newTalent{
 		local maxDamage = t.getMaxDamage(self, t)
 		if p.value < maxDamage and self.hate >= 0.05 then
 			self:incHate(-0.05)
-			
+
 			p.value = math.min(p.value + maxDamage / 50, maxDamage)
-			
+
 			t.updateParticles(self, t, p)
 		end
 	end,
@@ -182,7 +182,7 @@ newTalent{
 				damage = damage - deflectDamage
 				p.value = math.max(0, p.value - deflectDamage)
 				t.updateParticles(self, t, p)
-				
+
 				game.logPlayer(self, "You have deflected %d incoming damage!", deflectDamage)
 			end
 		end
@@ -212,7 +212,7 @@ newTalent{
 	cooldown = 10,
 	hate = 1.5,
 	range = function(self, t)
-		return 6
+		return 4
 	end,
 	getRadius = function(self, t)
 		return math.floor(2 + self:getTalentLevel(t) / 3)
@@ -228,11 +228,11 @@ newTalent{
 		local radius = t.getRadius(self, t)
 		local damage = t.getDamage(self, t)
 		local knockback = t.getKnockback(self, t)
-		
+
 		local tg = {type="ball", nolock=true, pass_terrain=false, friendly_fire=false, nowarning=true, range=range, radius=radius, talent=t}
 		local blastX, blastY = self:getTarget(tg)
 		if not blastX or not blastY then return nil end
-		
+
 		local grids = self:project(tg, blastX, blastY,
 			function(x, y, target, self)
 				-- your will ignores friendly targets (except for knockback hits)
@@ -249,7 +249,7 @@ newTalent{
 		local _ _, x, y = self:canProject(tg, blastX, blastY)
 		game.level.map:particleEmitter(x, y, tg.radius, "force_blast", {radius=tg.radius})
 		game:playSoundNear(self, "talents/fireflash")
-		
+
 		return true
 	end,
 	info = function(self, t)
@@ -273,7 +273,7 @@ newTalent{
 	},
 	direct_hit = true,
 	range = function(self, t)
-		return math.floor(4 + self:getTalentLevel(t) / 2)
+		return math.floor(4 + self:getTalentLevel(t) / 2.3)
 	end,
 	getDuration = function(self, t)
 		return 5 + math.floor(self:getTalentLevel(t))
@@ -287,14 +287,14 @@ newTalent{
 	getSecondHitChance = function(self, t)
 		local level = self:getTalentLevel(t)
 		if level < 4 then return 0 end
-		
+
 		return 5 + (level - 4) * 10
 	end,
 	action = function(self, t)
 		game.logSeen(self, "An unseen force begin to swirl around %s!", self.name)
 		local duration = t.getDuration(self, t)
 		local particles = self:addParticles(Particles.new("force_area", 1, { radius = self:getTalentRange(t) }))
-		
+
 		self.unseenForce = { duration = duration, particles = particles }
 		return true
 	end,
@@ -309,21 +309,21 @@ newTalent{
 				end
 			end
 		end
-		
+
 		if #targets > 0 then
 			local damage = t.getDamage(self, t)
 			local knockback = t.getKnockback(self, t)
-		
+
 			local hitCount = 1
 			if rng.percent(t.getSecondHitChance(self, t)) then hitCount = hitCount + 1 end
-		
+
 			-- Randomly take targets
 			for i = 1, hitCount do
 				local target, index = rng.table(targets)
 				forceHit(self, target, target.x, target.y, damage, knockback, 15, 0.6)
 			end
 		end
-		
+
 		self.unseenForce.duration = self.unseenForce.duration - 1
 		if self.unseenForce.duration <= 0 then
 			self:removeParticles(self.unseenForce.particles)
diff --git a/game/modules/tome/data/talents/cursed/punishments.lua b/game/modules/tome/data/talents/cursed/punishments.lua
index 459347e11a..560d62dfd2 100644
--- a/game/modules/tome/data/talents/cursed/punishments.lua
+++ b/game/modules/tome/data/talents/cursed/punishments.lua
@@ -197,7 +197,7 @@ newTalent{
 	random_ego = "attack",
 	cooldown = 6,
 	hate =  0.5,
-	range = 12,
+	range = 7,
 	getDuration = function(self, t)
 		return 8 + math.floor(self:getTalentLevel(t) * 1.4)
 	end,
diff --git a/game/modules/tome/data/talents/cursed/shadows.lua b/game/modules/tome/data/talents/cursed/shadows.lua
index f5f31a8d37..f2a6793b33 100644
--- a/game/modules/tome/data/talents/cursed/shadows.lua
+++ b/game/modules/tome/data/talents/cursed/shadows.lua
@@ -22,7 +22,7 @@ newTalent{
 	name = "Phase Door",
 	type = {"spell/other",1},
 	points = 5,
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		local x, y, range
 		if self.ai_state.shadow_wall then
@@ -49,7 +49,7 @@ newTalent{
 	type = {"spell/other", 1},
 	points = 5,
 	random_ego = "attack",
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t)}
@@ -294,7 +294,7 @@ newTalent{
 	random_ego = "attack",
 	cooldown = 10,
 	hate = 1,
-	range = 10,
+	range = 6,
 	requires_target = true,
 	getDuration = function(self, t)
 		return self:getTalentLevel(t)
diff --git a/game/modules/tome/data/talents/divine/chants.lua b/game/modules/tome/data/talents/divine/chants.lua
index fe23a2ef00..da42dfa90e 100644
--- a/game/modules/tome/data/talents/divine/chants.lua
+++ b/game/modules/tome/data/talents/divine/chants.lua
@@ -39,7 +39,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getResists = function(self, t) return self:combatTalentSpellDamage(t, 5, 70) end,
 	getDamageOnMeleeHit = function(self, t) return self:combatTalentSpellDamage(t, 5, 25) end,
 	activate = function(self, t)
@@ -85,7 +85,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getPhysicalResistance = function(self, t) return self:combatTalentSpellDamage(t, 5, 23) end,
 	getDamageOnMeleeHit = function(self, t) return self:combatTalentSpellDamage(t, 5, 25) end,
 	activate = function(self, t)
@@ -128,7 +128,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getResists = function(self, t) return self:combatTalentSpellDamage(t, 5, 20) end,
 	getDamageOnMeleeHit = function(self, t) return self:combatTalentSpellDamage(t, 5, 25) end,
 	activate = function(self, t)
@@ -177,7 +177,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getLightDamageIncrease = function(self, t) return self:combatTalentSpellDamage(t, 10, 50) end,
 	getDamageOnMeleeHit = function(self, t) return self:combatTalentSpellDamage(t, 5, 25) end,
 	activate = function(self, t)
diff --git a/game/modules/tome/data/talents/divine/combat.lua b/game/modules/tome/data/talents/divine/combat.lua
index 400c5d3803..52b02e0fe7 100644
--- a/game/modules/tome/data/talents/divine/combat.lua
+++ b/game/modules/tome/data/talents/divine/combat.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getDamage = function(self, t) return 7 + self:combatSpellpower(0.092) * self:getTalentLevel(t) end,
 	activate = function(self, t)
 		game:playSoundNear(self, "talents/spell_generic2")
@@ -96,7 +96,7 @@ newTalent{
 		ATTACK = 10,
 	},
 	requires_target = true,
-	range = function(self, t) return 2 + self:getStr(12) end,
+	range = function(self, t) return 2 + self:getStr(8) end,
 	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1.1, 1.9) end,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/divine/eclipse.lua b/game/modules/tome/data/talents/divine/eclipse.lua
index 88caac49a3..9efd6272cb 100644
--- a/game/modules/tome/data/talents/divine/eclipse.lua
+++ b/game/modules/tome/data/talents/divine/eclipse.lua
@@ -76,7 +76,7 @@ newTalent{
 	require = divi_req3,
 	points = 5,
 	proj_speed = 3,
-	range = 10,
+	range = 6,
 	sustain_negative = 10,
 	sustain_positive = 10,
 	getTargetCount = function(self, t) return math.floor(self:getTalentLevel(t)) end,
@@ -91,7 +91,7 @@ newTalent{
 				tgts[#tgts+1] = a
 			end
 		end end
-		
+
 		-- Randomly take targets
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_fire"}}
 		for i = 1, t.getTargetCount(self, t) do
@@ -107,7 +107,7 @@ newTalent{
 			else
 				local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_dark"}}
 				self:projectile(tg, a.x, a.y, DamageType.DARKNESS, t.getDarknessDamage(self, t), {type="shadow"})
-				self:incNegative(-2)				
+				self:incNegative(-2)
 			end
 		end
 	end,
diff --git a/game/modules/tome/data/talents/divine/guardian.lua b/game/modules/tome/data/talents/divine/guardian.lua
index 67ab876180..3f89e29103 100644
--- a/game/modules/tome/data/talents/divine/guardian.lua
+++ b/game/modules/tome/data/talents/divine/guardian.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getHeal = function(self, t) return self:combatTalentSpellDamage(t, 5, 25) end,
 	activate = function(self, t)
 		local shield = self:hasShield()
diff --git a/game/modules/tome/data/talents/divine/hymns.lua b/game/modules/tome/data/talents/divine/hymns.lua
index e7c84034d7..b742b885c7 100644
--- a/game/modules/tome/data/talents/divine/hymns.lua
+++ b/game/modules/tome/data/talents/divine/hymns.lua
@@ -39,7 +39,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getDamageOnMeleeHit = function(self, t) return self:combatTalentSpellDamage(t, 10, 50) end,
 	getDarknessDamageIncrease = function(self, t) return self:combatTalentSpellDamage(t, 5, 25) end,
 	activate = function(self, t)
@@ -82,7 +82,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getDamageOnMeleeHit = function(self, t) return self:combatTalentSpellDamage(t, 5, 25) end,
 	getInfraVisionPower = function(self, t) return math.floor(5 + self:getTalentLevel(t)) end,
 	activate = function(self, t)
@@ -125,7 +125,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getDamageOnMeleeHit = function(self, t) return self:combatTalentSpellDamage(t, 10, 50) end,
 	getImmunities = function(self, t) return 0.2 + self:getTalentLevel(t) / 10 end,
 	activate = function(self, t)
@@ -173,7 +173,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 7, 80) end,
 	getTargetCount = function(self, t) return math.floor(self:getTalentLevel(t)) end,
 	getNegativeDrain = function(self, t) return -self:getTalentLevelRaw(t) end,
diff --git a/game/modules/tome/data/talents/divine/star-fury.lua b/game/modules/tome/data/talents/divine/star-fury.lua
index 94c29f4c76..abb9eae8e3 100644
--- a/game/modules/tome/data/talents/divine/star-fury.lua
+++ b/game/modules/tome/data/talents/divine/star-fury.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
@@ -62,7 +62,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 6,
+	range = 5,
 	direct_hit = true,
 	requires_target = true,
 	getDamageOnSpot = function(self, t) return self:combatTalentSpellDamage(t, 4, 50) end,
@@ -145,7 +145,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	requires_target = true,
 	getRadius = function(self, t) return 1 + math.floor(self:getTalentLevelRaw(t) / 3) end,
diff --git a/game/modules/tome/data/talents/divine/sun.lua b/game/modules/tome/data/talents/divine/sun.lua
index 0b552c6a3a..fe2d9d73d3 100644
--- a/game/modules/tome/data/talents/divine/sun.lua
+++ b/game/modules/tome/data/talents/divine/sun.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 10,
+	range = 7,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
@@ -111,7 +111,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 10,
+	range = 70,
 	direct_hit = true,
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 10, 200) end,
diff --git a/game/modules/tome/data/talents/divine/twilight.lua b/game/modules/tome/data/talents/divine/twilight.lua
index 045b44aa27..72b783ac98 100644
--- a/game/modules/tome/data/talents/divine/twilight.lua
+++ b/game/modules/tome/data/talents/divine/twilight.lua
@@ -29,7 +29,7 @@ newTalent{
 	tactical = {
 		BUFF = 10,
 	},
-	range = 20,
+	range = 10,
 	getNegativeGain = function(self, t) return 20 + self:getTalentLevel(t) * self:getCun(40) end,
 	action = function(self, t)
 		if self:isTalentActive(self.T_DARKEST_LIGHT) then
@@ -192,7 +192,7 @@ newTalent{
 		ATTACK = 10,
 	},
 	requires_target = true,
-	range = 10,
+	range = 5,
 	no_npc_use = true,
 	getDuration = function(self, t) return math.ceil(self:getTalentLevel(t)+self:getCun(10)) + 3 end,
 	action = function(self, t)
diff --git a/game/modules/tome/data/talents/gifts/antimagic.lua b/game/modules/tome/data/talents/gifts/antimagic.lua
index 073e9751b3..2fe6c893a6 100644
--- a/game/modules/tome/data/talents/gifts/antimagic.lua
+++ b/game/modules/tome/data/talents/gifts/antimagic.lua
@@ -55,7 +55,7 @@ newTalent{
 	points = 5,
 	equilibrium = 20,
 	cooldown = 10,
-	range = function(self, t) return 4 + self:getTalentLevel(t) * 2 end,
+	range = function(self, t) return 4 + self:getTalentLevel(t) * 1.5 end,
 	action = function(self, t)
 		local tg = {type="ball", range=0, radius=self:getTalentRange(t), friendlyfire=true, talent=t}
 		self:project(tg, self.x, self.y, DamageType.SILENCE, 3 + math.floor(self:getTalentLevel(t) / 2))
@@ -76,7 +76,7 @@ newTalent{
 	points = 5,
 	sustain_equilibrium = 30,
 	cooldown = 20,
-	range = 25,
+	range = 10,
 	on_damage = function(self, t, damtype, dam)
 		if not DamageType:get(damtype).antimagic_resolve then return dam end
 
@@ -119,7 +119,7 @@ newTalent{
 	points = 5,
 	equilibrium = 10,
 	cooldown = 10,
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
 		local x, y = self:getTarget(tg)
diff --git a/game/modules/tome/data/talents/gifts/call.lua b/game/modules/tome/data/talents/gifts/call.lua
index 259a85142c..d2317a5d98 100644
--- a/game/modules/tome/data/talents/gifts/call.lua
+++ b/game/modules/tome/data/talents/gifts/call.lua
@@ -24,7 +24,7 @@ newTalent{
 	points = 5,
 	message = "@Source@ meditates on nature.",
 	cooldown = 150,
-	range = 20,
+	range = 10,
 	no_npc_use = true,
 	action = function(self, t)
 		local seen = false
@@ -144,7 +144,7 @@ newTalent{
 	points = 5,
 	equilibrium = 20,
 	cooldown = 50,
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		local nb = math.ceil(self:getTalentLevel(t) + 2)
 		local tids = {}
diff --git a/game/modules/tome/data/talents/gifts/cold-drake.lua b/game/modules/tome/data/talents/gifts/cold-drake.lua
index 0d7a0046c9..a96dbac211 100644
--- a/game/modules/tome/data/talents/gifts/cold-drake.lua
+++ b/game/modules/tome/data/talents/gifts/cold-drake.lua
@@ -53,7 +53,7 @@ newTalent{
 	points = 5,
 	cooldown = 10,
 	sustain_equilibrium = 30,
-	range = 20,
+	range = 10,
 	tactical = {
 		DEFEND = 10,
 	},
@@ -81,7 +81,7 @@ newTalent{
 	random_ego = "defensive",
 	equilibrium = 10,
 	cooldown = 30,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), nolock=true, talent=t}
diff --git a/game/modules/tome/data/talents/gifts/fire-drake.lua b/game/modules/tome/data/talents/gifts/fire-drake.lua
index 32ab9a02dc..66fdc09376 100644
--- a/game/modules/tome/data/talents/gifts/fire-drake.lua
+++ b/game/modules/tome/data/talents/gifts/fire-drake.lua
@@ -79,7 +79,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
diff --git a/game/modules/tome/data/talents/gifts/sand-drake.lua b/game/modules/tome/data/talents/gifts/sand-drake.lua
index d0be7f2aca..15e54938f0 100644
--- a/game/modules/tome/data/talents/gifts/sand-drake.lua
+++ b/game/modules/tome/data/talents/gifts/sand-drake.lua
@@ -68,7 +68,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 20,
+	range = 10,
 	no_npc_use = true,
 	action = function(self, t)
 		local tg = {type="ball", range=0, friendlyfire=false, radius=2 + self:getTalentLevel(t) / 2, talent=t, no_restrict=true}
@@ -89,7 +89,7 @@ newTalent{
 	points = 5,
 	equilibrium = 50,
 	cooldown = 30,
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		self:setEffect(self.EFF_BURROW, 5 + self:getTalentLevel(t) * 3, {})
 		return true
diff --git a/game/modules/tome/data/talents/gifts/slime.lua b/game/modules/tome/data/talents/gifts/slime.lua
index 3e508be1a2..68036270dc 100644
--- a/game/modules/tome/data/talents/gifts/slime.lua
+++ b/game/modules/tome/data/talents/gifts/slime.lua
@@ -87,7 +87,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	proj_speed = 8,
 	action = function(self, t)
@@ -116,7 +116,7 @@ newTalent{
 		MOVEMENT = 10,
 	},
 	requires_target = true,
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		local x, y = self:getTarget{type="ball", range=20 + self:getTalentLevel(t), radius=math.min(0, 5 - self:getTalentLevel(t))}
 		if not x then return nil end
diff --git a/game/modules/tome/data/talents/gifts/storm-drake.lua b/game/modules/tome/data/talents/gifts/storm-drake.lua
index 5191565c8b..137c89b33d 100644
--- a/game/modules/tome/data/talents/gifts/storm-drake.lua
+++ b/game/modules/tome/data/talents/gifts/storm-drake.lua
@@ -26,7 +26,7 @@ newTalent{
 	points = 5,
 	equilibrium = 10,
 	cooldown = 26,
-	range = 20,
+	range = 10,
 	tactical = {
 		ATTACK = 10,
 	},
@@ -86,7 +86,7 @@ newTalent{
 	equilibrium = 14,
 	cooldown = 15,
 	proj_speed = 2, -- This is purely indicative
-	range = function(self, t) return 6 + math.ceil(self:getTalentLevel(t) * 2) end,
+	range = function(self, t) return 4 + math.floor(self:getTalentLevel(t)) end,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), nolock=true, talent=t}
diff --git a/game/modules/tome/data/talents/gifts/summon-augmentation.lua b/game/modules/tome/data/talents/gifts/summon-augmentation.lua
index 55ce42804c..107f6aa7c6 100644
--- a/game/modules/tome/data/talents/gifts/summon-augmentation.lua
+++ b/game/modules/tome/data/talents/gifts/summon-augmentation.lua
@@ -24,7 +24,7 @@ newTalent{
 	points = 5,
 	equilibrium = 5,
 	cooldown = 15,
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), talent=t, first_target="friend"}
 		local tx, ty, target = self:getTarget(tg)
@@ -45,7 +45,7 @@ newTalent{
 	points = 5,
 	equilibrium = 5,
 	cooldown = 25,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), talent=t, first_target="friend"}
@@ -94,7 +94,7 @@ newTalent{
 	points = 5,
 	equilibrium = 5,
 	cooldown = 25,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/gifts/summon-distance.lua b/game/modules/tome/data/talents/gifts/summon-distance.lua
index 86a24b5c15..dce24e7487 100644
--- a/game/modules/tome/data/talents/gifts/summon-distance.lua
+++ b/game/modules/tome/data/talents/gifts/summon-distance.lua
@@ -22,7 +22,7 @@ newTalent{ short_name = "RITCH_FLAMESPITTER_BOLT",
 	type = {"wild-gift/other",1},
 	points = 5,
 	equilibrium = 2,
-	range = 20,
+	range = 10,
 	reflectable = true,
 	requires_target = true,
 	action = function(self, t)
@@ -137,7 +137,7 @@ newTalent{
 	message = "@Source@ summons a Ritch Flamespitter!",
 	equilibrium = 2,
 	cooldown = 10,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
@@ -210,7 +210,7 @@ newTalent{
 	message = "@Source@ summons a 3-headed hydra!",
 	equilibrium = 5,
 	cooldown = 10,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
@@ -283,7 +283,7 @@ newTalent{
 	message = "@Source@ summons a Warper!",
 	equilibrium = 8,
 	cooldown = 10,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
@@ -358,7 +358,7 @@ newTalent{
 	message = "@Source@ summons a Fire Drake!",
 	equilibrium = 15,
 	cooldown = 10,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
diff --git a/game/modules/tome/data/talents/gifts/summon-melee.lua b/game/modules/tome/data/talents/gifts/summon-melee.lua
index e7e97b9a31..fd17005b79 100644
--- a/game/modules/tome/data/talents/gifts/summon-melee.lua
+++ b/game/modules/tome/data/talents/gifts/summon-melee.lua
@@ -26,7 +26,7 @@ newTalent{
 	message = "@Source@ summons a War Hound!",
 	equilibrium = 3,
 	cooldown = 15,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
@@ -96,7 +96,7 @@ newTalent{
 	message = "@Source@ summons a Jelly!",
 	equilibrium = 5,
 	cooldown = 10,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
@@ -167,7 +167,7 @@ newTalent{
 	message = "@Source@ summons a Minotaur!",
 	equilibrium = 10,
 	cooldown = 15,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
@@ -243,7 +243,7 @@ newTalent{
 	message = "@Source@ summons an Stone Golem!",
 	equilibrium = 15,
 	cooldown = 20,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
diff --git a/game/modules/tome/data/talents/gifts/summon-utility.lua b/game/modules/tome/data/talents/gifts/summon-utility.lua
index 3d68e9ec0b..283c4b4b8b 100644
--- a/game/modules/tome/data/talents/gifts/summon-utility.lua
+++ b/game/modules/tome/data/talents/gifts/summon-utility.lua
@@ -75,7 +75,7 @@ newTalent{ short_name="SPIDER_WEB",
 	points = 5,
 	equilibrium = 5,
 	cooldown = 3,
-	range=10,
+	range=7,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
@@ -100,7 +100,7 @@ newTalent{ short_name="HEAL_OTHER",
 	points = 5,
 	equilibrium = 5,
 	cooldown = 4,
-	range=14,
+	range=7,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
@@ -125,7 +125,7 @@ newTalent{ short_name="REGENERATE_OTHER",
 	points = 5,
 	equilibrium = 5,
 	cooldown = 10,
-	range=14,
+	range=7,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
@@ -153,7 +153,7 @@ newTalent{
 	message = "@Source@ summons a Turtle!",
 	equilibrium = 2,
 	cooldown = 10,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
@@ -224,7 +224,7 @@ newTalent{
 	message = "@Source@ summons a Spider!",
 	equilibrium = 5,
 	cooldown = 10,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
@@ -294,7 +294,7 @@ newTalent{
 	points = 5,
 	equilibrium = 15,
 	cooldown = 18,
-	range = function(self, t) return 4 + self:getTalentLevel(t) * 3 end,
+	range = function(self, t) return 4 + self:getTalentLevel(t) end,
 	requires_target = true,
 	action = function(self, t)
 		local dur = math.floor(5 + self:getTalentLevel(t))
diff --git a/game/modules/tome/data/talents/misc/npcs.lua b/game/modules/tome/data/talents/misc/npcs.lua
index dc23f50738..66991b8fdf 100644
--- a/game/modules/tome/data/talents/misc/npcs.lua
+++ b/game/modules/tome/data/talents/misc/npcs.lua
@@ -33,7 +33,7 @@ newTalent{
 	name = "Multiply",
 	type = {"other/other", 1},
 	cooldown = 3,
-	range = 20,
+	range = 10,
 	action = function(self, t)
 		if not self.can_multiply or self.can_multiply <= 0 then print("no more multiply")  return nil end
 
@@ -301,7 +301,7 @@ newTalent{
 	name = "Summon",
 	type = {"wild-gift/other", 1},
 	cooldown = 1,
-	range = 20,
+	range = 10,
 	equilibrium = 18,
 	direct_hit = true,
 	action = function(self, t)
@@ -446,7 +446,7 @@ newTalent{
 	points = 5,
 	cooldown = 10,
 	mana = 16,
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -470,7 +470,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	requires_target = true,
 	action = function(self, t)
@@ -496,7 +496,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
@@ -581,7 +581,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="bolt", range=self:getTalentRange(t)}
@@ -605,7 +605,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -632,7 +632,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		local dur = 2 + self:getTalentLevel(t)
@@ -673,11 +673,11 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
-		local tg = {type="ball", range=0, radius=2 + self:getTalentLevelRaw(t), talent=t}
+		local tg = {type="ball", range=0, radius=2 + self:getTalentLevelRaw(t) / 1.5, talent=t}
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
 		self:project(tg, x, y, function(px, py)
@@ -705,7 +705,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -732,7 +732,7 @@ newTalent{
 		ATTACK = 10,
 	},
 	message = "@Source@ howls",
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	action = function(self, t)
 		local rad = self:getTalentLevel(t) + 5
@@ -766,7 +766,7 @@ newTalent{
 		ATTACK = 10,
 	},
 	message = "@Source@ shrieks.",
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	action = function(self, t)
 		local rad = self:getTalentLevel(t) + 5
@@ -833,7 +833,7 @@ newTalent{
 	points = 5,
 	cooldown = 2,
 	equilibrium = 5,
-	range = 15,
+	range = 7,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -856,7 +856,7 @@ newTalent{
 	points = 5,
 	cooldown = 10,
 	equilibrium = 5,
-	range = 15,
+	range = 7,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -878,7 +878,7 @@ newTalent{
 	points = 5,
 	cooldown = 2,
 	equilibrium = 5,
-	range = 15,
+	range = 7,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -901,7 +901,7 @@ newTalent{
 	points = 5,
 	cooldown = 13,
 	vim = 27,
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
@@ -934,7 +934,7 @@ newTalent{
 	name = "Invoke Tentacle",
 	type = {"wild-gift/other", 1},
 	cooldown = 1,
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
diff --git a/game/modules/tome/data/talents/psionic/absorption.lua b/game/modules/tome/data/talents/psionic/absorption.lua
index 6ac728ce11..ba3257726b 100644
--- a/game/modules/tome/data/talents/psionic/absorption.lua
+++ b/game/modules/tome/data/talents/psionic/absorption.lua
@@ -21,7 +21,7 @@ local function getGemLevel(self)
 		local gem_level = 0
 		if not self:getInven("PSIONIC_FOCUS")[1] then return gem_level end
 		local tk_item = self:getInven("PSIONIC_FOCUS")[1]
-		if tk_item.type == "gem" then 
+		if tk_item.type == "gem" then
 			gem_level = tk_item.material_level
 		else
 			gem_level = 0
@@ -50,8 +50,8 @@ newTalent{
 	points = 5,
 	sustain_psi = 30,
 	cooldown = 20,
-	range = 25,
-	
+	range = 10,
+
 	--called when damage gets absorbed by kinetic shield
 	ks_on_damage = function(self, t, damtype, dam)
 		local mast = 20 - (2*self:getTalentLevel(self.T_ABSORPTION_MASTERY) or 0) - 0.4*getGemLevel(self)
@@ -60,7 +60,7 @@ newTalent{
 		local guaranteed_dam = total_dam - absorbable_dam
 		dam = absorbable_dam
 		if damtype ~= DamageType.PHYSICAL and damtype ~= DamageType.ACID then return total_dam end
-		
+
 		if dam <= self.kinetic_shield then
 			self:incPsi(2 + dam/mast)
 			dam = 0
@@ -68,7 +68,7 @@ newTalent{
 			self:incPsi(2 + self.kinetic_shield/mast)
 			dam = dam - self.kinetic_shield
 		end
-		
+
 		return dam + guaranteed_dam
 	end,
 
@@ -106,7 +106,7 @@ newTalent{
 				dam = dam - self.kinspike_shield_absorb
 				self.kinspike_shield_absorb = 0
 			end
-	
+
 			if self.kinspike_shield_absorb <= 0 then
 				game.logPlayer(self, "Your spiked kinetic shield crumbles under the damage!")
 				self:removeEffect(self.EFF_KINSPIKE_SHIELD)
@@ -139,8 +139,8 @@ newTalent{
 	points = 5,
 	sustain_psi = 30,
 	cooldown = 20,
-	range = 25,
-	
+	range = 10,
+
 	--called when damage gets absorbed by thermal shield
 	ts_on_damage = function(self, t, damtype, dam)
 		local mast = 20 - (2*self:getTalentLevel(self.T_ABSORPTION_MASTERY) or 0) - 0.4*getGemLevel(self)
@@ -149,7 +149,7 @@ newTalent{
 		local guaranteed_dam = total_dam - absorbable_dam
 		dam = absorbable_dam
 		if damtype ~= DamageType.FIRE and damtype ~= DamageType.COLD then return total_dam end
-		
+
 		if dam <= self.thermal_shield then
 			self:incPsi(2 + dam/mast)
 			dam = 0
@@ -194,7 +194,7 @@ newTalent{
 				dam = dam - self.thermspike_shield_absorb
 				self.thermspike_shield_absorb = 0
 			end
-	
+
 			if self.thermspike_shield_absorb <= 0 then
 				game.logPlayer(self, "Your spiked thermal shield crumbles under the damage!")
 				self:removeEffect(self.EFF_THERMSPIKE_SHIELD)
@@ -225,8 +225,8 @@ newTalent{
 	points = 5,
 	sustain_psi = 30,
 	cooldown = 20,
-	range = 25,
-	
+	range = 10,
+
 	--called when damage gets absorbed by charged shield
 	cs_on_damage = function(self, t, damtype, dam)
 		local mast = 20 - (2*self:getTalentLevel(self.T_ABSORPTION_MASTERY) or 0) - 0.4*getGemLevel(self)
@@ -235,7 +235,7 @@ newTalent{
 		local guaranteed_dam = total_dam - absorbable_dam
 		dam = absorbable_dam
 		if damtype ~= DamageType.LIGHTNING and damtype ~= DamageType.BLIGHT then return total_dam end
-		
+
 		if dam <= self.charged_shield then
 			self:incPsi(2 + dam/mast)
 			dam = 0
@@ -279,7 +279,7 @@ newTalent{
 				dam = dam - self.chargespike_shield_absorb
 				self.chargespike_shield_absorb = 0
 			end
-	
+
 			if self.chargespike_shield_absorb <= 0 then
 				game.logPlayer(self, "Your spiked charged shield crumbles under the damage!")
 				self:removeEffect(self.EFF_CHARGESPIKE_SHIELD)
diff --git a/game/modules/tome/data/talents/spells/air.lua b/game/modules/tome/data/talents/spells/air.lua
index 125735eefb..30d542df4d 100644
--- a/game/modules/tome/data/talents/spells/air.lua
+++ b/game/modules/tome/data/talents/spells/air.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
@@ -48,7 +48,7 @@ newTalent{
 		local damage = t.getDamage(self, t)
 		return ([[Conjures up mana into a powerful beam of lightning doing %0.2f to %0.2f damage
 		The damage will increase with the Magic stat]]):
-		format(damDesc(self, DamageType.LIGHTNING, damage / 3), 
+		format(damDesc(self, DamageType.LIGHTNING, damage / 3),
 		damDesc(self, DamageType.LIGHTNING, damage))
 	end,
 }
@@ -64,7 +64,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
diff --git a/game/modules/tome/data/talents/spells/arcane.lua b/game/modules/tome/data/talents/spells/arcane.lua
index abc771ed54..aac2f87e02 100644
--- a/game/modules/tome/data/talents/spells/arcane.lua
+++ b/game/modules/tome/data/talents/spells/arcane.lua
@@ -57,7 +57,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = function(self, t) if self:getTalentLevel(t) >= 3 then return true else return false end end,
 	reflectable = true,
 	requires_target = true,
diff --git a/game/modules/tome/data/talents/spells/conveyance.lua b/game/modules/tome/data/talents/spells/conveyance.lua
index bc507261eb..5ae719ba22 100644
--- a/game/modules/tome/data/talents/spells/conveyance.lua
+++ b/game/modules/tome/data/talents/spells/conveyance.lua
@@ -182,7 +182,7 @@ newTalent{
 	tactical = {
 		DEFENSE = 10,
 	},
-	range = 10,
+	range = 8,
 	requires_target = true,
 	getTransferChange = function(self, t) return 20 + self:getTalentLevel(t) * 5 end,
 	getMaxAbsorb = function(self, t) return 50 + self:combatTalentSpellDamage(t, 20, 350) end,
diff --git a/game/modules/tome/data/talents/spells/divination.lua b/game/modules/tome/data/talents/spells/divination.lua
index af4268ca3f..3ad120ca31 100644
--- a/game/modules/tome/data/talents/spells/divination.lua
+++ b/game/modules/tome/data/talents/spells/divination.lua
@@ -66,7 +66,7 @@ newTalent{
 	no_npc_use = true,
 	requires_target = true,
 	getDuration = function(self, t) return math.floor(10 + self:getTalentLevel(t) * 3) end,
-	getRadius = function(self, t) return math.floor(4 + self:getTalentLevel(t) * 3) end,
+	getRadius = function(self, t) return math.floor(4 + self:getTalentLevel(t)) end,
 	action = function(self, t)
 		local tg = {type="hit", nolock=true, pass_terrain=true, nowarning=true, range=100, requires_knowledge=false}
 		x, y = self:getTarget(tg)
diff --git a/game/modules/tome/data/talents/spells/earth.lua b/game/modules/tome/data/talents/spells/earth.lua
index 3d4d30a9a6..a65290baa0 100644
--- a/game/modules/tome/data/talents/spells/earth.lua
+++ b/game/modules/tome/data/talents/spells/earth.lua
@@ -58,7 +58,7 @@ newTalent{
 	points = 5,
 	random_ego = "utility",
 	mana = 40,
-	range = 20,
+	range = 10,
 	reflectable = true,
 	requires_target = true,
 	getRange = function(self, t) return self:getTalentLevelRaw(t) end,
@@ -90,7 +90,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	proj_speed = 6,
 	requires_target = true,
@@ -117,7 +117,7 @@ newTalent{
 	points = 5,
 	cooldown = 50,
 	mana = 70,
-	range = 20,
+	range = 7,
 	reflectable = true,
 	requires_target = function(self, t) return self:getTalentLevel(t) >= 4 end,
 	getDuration = function(self, t) return 2 + self:combatTalentSpellDamage(t, 5, 12) end,
diff --git a/game/modules/tome/data/talents/spells/enhancement.lua b/game/modules/tome/data/talents/spells/enhancement.lua
index fa0b8a2353..44b0316d04 100644
--- a/game/modules/tome/data/talents/spells/enhancement.lua
+++ b/game/modules/tome/data/talents/spells/enhancement.lua
@@ -59,7 +59,7 @@ newTalent{
 	cooldown = 25,
 	mana = 45,
 	require = spells_req2,
-	range = 20,
+	range = 10,
 	getPhysicalReduction = function(self, t) return self:combatTalentSpellDamage(t, 10, 60) end,
 	action = function(self, t)
 		game:playSoundNear(self, "talents/spell_generic")
diff --git a/game/modules/tome/data/talents/spells/explosives.lua b/game/modules/tome/data/talents/spells/explosives.lua
index 611a178dd5..473e340866 100644
--- a/game/modules/tome/data/talents/spells/explosives.lua
+++ b/game/modules/tome/data/talents/spells/explosives.lua
@@ -25,7 +25,7 @@ newTalent{
 	mana = 5,
 	cooldown = 4,
 	range = function(self, t)
-		return math.ceil(5 + self:getDex(12))
+		return math.ceil(5 + self:getDex(6))
 	end,
 	direct_hit = true,
 	requires_target = true,
@@ -170,7 +170,7 @@ newTalent{
 	mana = 40,
 	cooldown = 10,
 	range = function(self, t)
-		return math.ceil(5 + self:getDex(12))
+		return math.ceil(5 + self:getDex(6))
 	end,
 	direct_hit = true,
 	requires_target = true,
diff --git a/game/modules/tome/data/talents/spells/fire-alchemy.lua b/game/modules/tome/data/talents/spells/fire-alchemy.lua
index d1696a25cb..d0413860d1 100644
--- a/game/modules/tome/data/talents/spells/fire-alchemy.lua
+++ b/game/modules/tome/data/talents/spells/fire-alchemy.lua
@@ -28,6 +28,7 @@ newTalent{
 	random_ego = "attack",
 	refectable = true,
 	proj_speed = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 25, 220) end,
@@ -53,7 +54,7 @@ newTalent{
 	points = 5,
 	mana = 80,
 	cooldown = 34,
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	requires_target = true,
 	getDuration = function(self, t) return 2 + self:combatSpellpower(0.03) * self:getTalentLevel(t) end,
@@ -142,9 +143,8 @@ newTalent{
 	cooldown = 40,
 	sustain_mana = 250,
 	points = 5,
-	range = 1,
 	proj_speed = 2.4,
-	range = 12,
+	range = 8,
 	getFireDamageOnHit = function(self, t) return self:combatTalentSpellDamage(t, 5, 25) end,
 	getResistance = function(self, t) return self:combatTalentSpellDamage(t, 5, 45) end,
 	getFireDamageInSight = function(self, t) return self:combatTalentSpellDamage(t, 15, 70) end,
diff --git a/game/modules/tome/data/talents/spells/fire.lua b/game/modules/tome/data/talents/spells/fire.lua
index d9baa1a283..1eacaa5e32 100644
--- a/game/modules/tome/data/talents/spells/fire.lua
+++ b/game/modules/tome/data/talents/spells/fire.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	proj_speed = 20,
 	requires_target = true,
@@ -101,7 +101,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 15,
+	range = 7,
 	proj_speed = 4,
 	direct_hit = true,
 	requires_target = true,
@@ -137,7 +137,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 40,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 15, 80) end,
diff --git a/game/modules/tome/data/talents/spells/golem.lua b/game/modules/tome/data/talents/spells/golem.lua
index dfa4eb9eee..0c22b73599 100644
--- a/game/modules/tome/data/talents/spells/golem.lua
+++ b/game/modules/tome/data/talents/spells/golem.lua
@@ -27,7 +27,7 @@ newTalent{
 	require = techs_req1,
 	points = 5,
 	cooldown = 10,
-	range = 10,
+	range = 5,
 	stamina = 5,
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.8, 1.6) end,
@@ -114,7 +114,7 @@ newTalent{
 	require = techs_req3,
 	points = 5,
 	cooldown = 10,
-	range = 10,
+	range = 5,
 	stamina = 5,
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.8, 1.6) end,
@@ -174,7 +174,7 @@ newTalent{
 	require = techs_req4,
 	points = 5,
 	cooldown = 15,
-	range = 10,
+	range = 5,
 	stamina = 5,
 	requires_target = true,
 	getGolemDamage = function(self, t)
@@ -239,7 +239,7 @@ newTalent{
 	require = spells_req1,
 	points = 5,
 	cooldown = 3,
-	range = 10,
+	range = 7,
 	mana = 10,
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 25, 200) end,
diff --git a/game/modules/tome/data/talents/spells/ice.lua b/game/modules/tome/data/talents/spells/ice.lua
index 6ac6a2116b..ef6426a5be 100644
--- a/game/modules/tome/data/talents/spells/ice.lua
+++ b/game/modules/tome/data/talents/spells/ice.lua
@@ -27,7 +27,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 20,
+	range = 10,
 	proj_speed = 3,
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 18, 200) end,
@@ -92,7 +92,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 20,
+	range = 10,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 10, 180) end,
 	getTargetCount = function(self, t) return math.ceil(self:getTalentLevel(t) + 2) end,
 	action = function(self, t)
diff --git a/game/modules/tome/data/talents/spells/meta.lua b/game/modules/tome/data/talents/spells/meta.lua
index 2f6abb2123..7989c70a79 100644
--- a/game/modules/tome/data/talents/spells/meta.lua
+++ b/game/modules/tome/data/talents/spells/meta.lua
@@ -27,7 +27,7 @@ newTalent{
 	cooldown = 7,
 	direct_hit = true,
 	requires_target = function(self, t) return self:getTalentLevel(t) >= 3 end,
-	range = 20,
+	range = 10,
 	getRemoveCount = function(self, t) return math.floor(self:getTalentLevel(t)) end,
 	action = function(self, t)
 		local target = self
diff --git a/game/modules/tome/data/talents/spells/staff-combat.lua b/game/modules/tome/data/talents/spells/staff-combat.lua
index 6028150be0..04d1477e3b 100644
--- a/game/modules/tome/data/talents/spells/staff-combat.lua
+++ b/game/modules/tome/data/talents/spells/staff-combat.lua
@@ -26,7 +26,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 10,
+	range = 6,
 	reflectable = true,
 	proj_speed = 20,
 	requires_target = true,
@@ -140,6 +140,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
+	range = 1,
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1, 1.5) end,
 	getDazeDuration = function(self, t) return 4 + self:getTalentLevel(t) end,
diff --git a/game/modules/tome/data/talents/spells/stone-alchemy.lua b/game/modules/tome/data/talents/spells/stone-alchemy.lua
index 5fb749ea22..3132dc9cd1 100644
--- a/game/modules/tome/data/talents/spells/stone-alchemy.lua
+++ b/game/modules/tome/data/talents/spells/stone-alchemy.lua
@@ -22,9 +22,6 @@ newTalent{
 	type = {"spell/stone-alchemy-base", 1},
 	require = spells_req1,
 	points = 1,
-	range = function(self, t)
-		return math.ceil(5 + self:getDex(12))
-	end,
 	mana = 30,
 	no_npc_use = true,
 	make_gem = function(self, t, base_define)
diff --git a/game/modules/tome/data/talents/spells/stone.lua b/game/modules/tome/data/talents/spells/stone.lua
index 0d9db6daaf..e3b25ec0f1 100644
--- a/game/modules/tome/data/talents/spells/stone.lua
+++ b/game/modules/tome/data/talents/spells/stone.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	reflectable = true,
 	proj_speed = 20,
@@ -137,7 +137,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 40,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 15, 70) end,
diff --git a/game/modules/tome/data/talents/spells/storm.lua b/game/modules/tome/data/talents/spells/storm.lua
index f9d62b4776..ecd221902a 100644
--- a/game/modules/tome/data/talents/spells/storm.lua
+++ b/game/modules/tome/data/talents/spells/storm.lua
@@ -67,7 +67,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	reflectable = true,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 25, 200) end,
 	action = function(self, t)
@@ -98,7 +98,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 25, 150) end,
 	getChance = function(self, t) return 30 + self:getTalentLevel(t) * 5 end,
diff --git a/game/modules/tome/data/talents/spells/temporal.lua b/game/modules/tome/data/talents/spells/temporal.lua
index ba7345a96c..d54e9ae37b 100644
--- a/game/modules/tome/data/talents/spells/temporal.lua
+++ b/game/modules/tome/data/talents/spells/temporal.lua
@@ -30,7 +30,7 @@ newTalent{
 	},
 	reflectable = true,
 	proj_speed = 2,
-	range = 10,
+	range = 6,
 	direct_hit = true,
 	requires_target = true,
 	getSlow = function(self, t) return self:getTalentLevel(t) * 0.08 end,
@@ -59,7 +59,7 @@ newTalent{
 	tactical = {
 		DEFENSE = 10,
 	},
-	range = 20,
+	range = 10,
 	getMaxAbsorb = function(self, t) return 50 + self:combatTalentSpellDamage(t, 50, 350) end,
 	getDuration = function(self, t) return util.bound(5 + math.floor(self:getTalentLevel(t)), 5, 15) end,
 	action = function(self, t)
@@ -88,7 +88,7 @@ newTalent{
 	tactical = {
 		DEFENSE = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
diff --git a/game/modules/tome/data/talents/spells/water.lua b/game/modules/tome/data/talents/spells/water.lua
index 2330d612ab..f4530cf9bc 100644
--- a/game/modules/tome/data/talents/spells/water.lua
+++ b/game/modules/tome/data/talents/spells/water.lua
@@ -28,7 +28,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 15,
+	range = 8,
 	direct_hit = true,
 	requires_target = true,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 4, 50) end,
@@ -70,7 +70,7 @@ newTalent{
 	tactical = {
 		ATTACK = 10,
 	},
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	reflectable = true,
 	requires_target = true,
diff --git a/game/modules/tome/data/talents/spells/wildfire.lua b/game/modules/tome/data/talents/spells/wildfire.lua
index 60db51c39d..dac852e6e9 100644
--- a/game/modules/tome/data/talents/spells/wildfire.lua
+++ b/game/modules/tome/data/talents/spells/wildfire.lua
@@ -55,7 +55,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 40,
 	},
-	range = 20,
+	range = 10,
 	getDamage = function(self, t) return self:combatTalentSpellDamage(t, 10, 240) end,
 	getTargetCount = function(self, t) return math.ceil(self:getTalentLevel(t) + 2) end,
 	action = function(self, t)
@@ -92,7 +92,7 @@ newTalent{
 	tactical = {
 		ATTACKAREA = 10,
 	},
-	range = 14,
+	range = 7,
 	requires_target = true,
 	getMultiplier = function(self, t) return self:combatTalentWeaponDamage(t, 0.5, 1.5) end,
 	action = function(self, t)
diff --git a/game/modules/tome/data/talents/techniques/archery.lua b/game/modules/tome/data/talents/techniques/archery.lua
index 2509940171..e2498484b9 100644
--- a/game/modules/tome/data/talents/techniques/archery.lua
+++ b/game/modules/tome/data/talents/techniques/archery.lua
@@ -24,7 +24,7 @@ newTalent{
 	no_energy = "fake",
 	hide = true,
 	points = 1,
-	range = 20,
+	range = 10,
 	message = "@Source@ shoots!",
 	requires_target = true,
 	action = function(self, t)
@@ -47,7 +47,7 @@ newTalent{
 	cooldown = 3,
 	stamina = 8,
 	require = techs_dex_req1,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		local targets = self:archeryAcquireTargets()
@@ -146,7 +146,7 @@ newTalent{
 	cooldown = 14,
 	stamina = 35,
 	require = techs_dex_req4,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		local targets = self:archeryAcquireTargets()
@@ -206,7 +206,7 @@ newTalent{
 	cooldown = 10,
 	stamina = 15,
 	require = techs_dex_req2,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	archery_onhit = function(self, t, target, x, y)
 		if target:checkHit(self:combatAttackDex(), target:combatPhysicalResist(), 0, 95, 10) then
@@ -235,7 +235,7 @@ newTalent{
 	cooldown = 10,
 	stamina = 15,
 	require = techs_dex_req3,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	archery_onhit = function(self, t, target, x, y)
 		if target:checkHit(self:combatAttackDex(), target:combatPhysicalResist(), 0, 95, 10) and target:canBe("pin") then
@@ -267,7 +267,7 @@ newTalent{
 	cooldown = 14,
 	stamina = 15,
 	require = techs_dex_req4,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	archery_onhit = function(self, t, target, x, y)
 		if target:checkHit(self:combatAttackDex(), target:combatPhysicalResist(), 0, 95, 10) then
diff --git a/game/modules/tome/data/talents/techniques/bow.lua b/game/modules/tome/data/talents/techniques/bow.lua
index c59e6ab6ac..f88a68e8bc 100644
--- a/game/modules/tome/data/talents/techniques/bow.lua
+++ b/game/modules/tome/data/talents/techniques/bow.lua
@@ -25,7 +25,7 @@ newTalent{
 	mode = "passive",
 	info = function(self, t)
 		return ([[Increases damage done with bows by %d%%.]]):format(100 * (math.sqrt(self:getTalentLevel(t) / 10)))
-	end, 
+	end,
 }
 
 newTalent{
@@ -36,7 +36,7 @@ newTalent{
 	cooldown = 8,
 	stamina = 15,
 	require = techs_dex_req2,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:hasArcheryWeapon("bow") then game.logPlayer(self, "You must wield a bow!") return nil end
@@ -59,7 +59,7 @@ newTalent{
 	cooldown = 8,
 	stamina = 15,
 	require = techs_dex_req3,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:hasArcheryWeapon("bow") then game.logPlayer(self, "You must wield a bow!") return nil end
@@ -83,7 +83,7 @@ newTalent{
 	cooldown = 12,
 	stamina = 35,
 	require = techs_dex_req4,
-	range = 20,
+	range = 10,
 	direct_hit = true,
 	requires_target = true,
 	action = function(self, t)
diff --git a/game/modules/tome/data/talents/techniques/combat-techniques.lua b/game/modules/tome/data/talents/techniques/combat-techniques.lua
index 33f7ed8628..c215ceeb7b 100644
--- a/game/modules/tome/data/talents/techniques/combat-techniques.lua
+++ b/game/modules/tome/data/talents/techniques/combat-techniques.lua
@@ -61,7 +61,7 @@ newTalent{
 		ATTACK = 4,
 	},
 	requires_target = true,
-	range = function(self, t) return math.floor(5 + self:getTalentLevel(t)) end,
+	range = function(self, t) return math.floor(5 + self:getTalentLevelRaw(t)) end,
 	action = function(self, t)
 		if self:attr("never_move") then game.logPlayer(self, "You can not do that currently.") return end
 
diff --git a/game/modules/tome/data/talents/techniques/field-control.lua b/game/modules/tome/data/talents/techniques/field-control.lua
index 124bca79d7..0530ee883a 100644
--- a/game/modules/tome/data/talents/techniques/field-control.lua
+++ b/game/modules/tome/data/talents/techniques/field-control.lua
@@ -49,7 +49,7 @@ newTalent{
 	random_ego = "utility",
 	cooldown = 20,
 	action = function(self, t)
-		local rad = 10 + self:getCun(10) * self:getTalentLevel(t)
+		local rad = 5 + self:getCun(10) * self:getTalentLevel(t)
 		self:setEffect(self.EFF_SENSE, 3 + self:getTalentLevel(t), {
 			range = rad,
 			actor = 1,
@@ -104,7 +104,7 @@ newTalent{
 	mode = "sustained",
 	points = 5,
 	cooldown = 30,
-	range = 20,
+	range = 10,
 	sustain_stamina = 120,
 	activate = function(self, t)
 		return {
diff --git a/game/modules/tome/data/talents/techniques/magical-combat.lua b/game/modules/tome/data/talents/techniques/magical-combat.lua
index 959104b165..fcb0424896 100644
--- a/game/modules/tome/data/talents/techniques/magical-combat.lua
+++ b/game/modules/tome/data/talents/techniques/magical-combat.lua
@@ -33,10 +33,10 @@ newTalent{
 			if self:knowTalent(self.T_LIGHTNING) then spells[#spells+1] = self.T_LIGHTNING end
 			local tid = rng.table(spells)
 			if tid then
-				-- Extending beam target, assumes a maximum range of 20
+				-- Extending beam target, assumes a maximum range of 10
 				local current_angle = math.atan2((target.y - self.y), (target.x - self.x)) + math.pi
-				target_x = self.x - math.floor(0.5 + (20 * math.cos(current_angle)))
-				target_y = self.y - math.floor(0.5 + (20 * math.sin(current_angle)))
+				target_x = self.x - math.floor(0.5 + (10 * math.cos(current_angle)))
+				target_y = self.y - math.floor(0.5 + (10 * math.sin(current_angle)))
 				local l = line.new(self.x, self.y, target_x, target_y)
 				local lx, ly = l()
 				target_x, target_y = lx, ly
@@ -97,7 +97,7 @@ newTalent{
 	cooldown = 5,
 	sustain_stamina = 40,
 	require = techs_req3,
-	range = 20,
+	range = 10,
 	activate = function(self, t)
 		local power = self:getTalentLevel(t) / 14
 		return {
diff --git a/game/modules/tome/data/talents/techniques/sling.lua b/game/modules/tome/data/talents/techniques/sling.lua
index 1e9b2860f9..94f1b5626b 100644
--- a/game/modules/tome/data/talents/techniques/sling.lua
+++ b/game/modules/tome/data/talents/techniques/sling.lua
@@ -36,7 +36,7 @@ newTalent{
 	cooldown = 8,
 	stamina = 15,
 	require = techs_dex_req2,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	archery_onhit = function(self, t, target, x, y)
 		if target:checkHit(self:combatAttackDex(), target:combatPhysicalResist(), 0, 95, 10) and target:canBe("blind") then
@@ -69,7 +69,7 @@ newTalent{
 	cooldown = 8,
 	stamina = 15,
 	require = techs_dex_req3,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	archery_onhit = function(self, t, target, x, y)
 		if target:checkHit(self:combatAttackDex(), target:combatPhysicalResist(), 0, 95, 15) and target:canBe("knockback") then
@@ -101,7 +101,7 @@ newTalent{
 	cooldown = 12,
 	stamina = 35,
 	require = techs_dex_req4,
-	range = 20,
+	range = 10,
 	requires_target = true,
 	action = function(self, t)
 		if not self:hasArcheryWeapon("sling") then game.logPlayer(self, "You must wield a sling!") return nil end
diff --git a/game/modules/tome/data/talents/undeads/ghoul.lua b/game/modules/tome/data/talents/undeads/ghoul.lua
index 6921c53a0b..5a0143dd51 100644
--- a/game/modules/tome/data/talents/undeads/ghoul.lua
+++ b/game/modules/tome/data/talents/undeads/ghoul.lua
@@ -50,7 +50,7 @@ newTalent{
 		ATTACK = 10,
 	},
 	direct_hit = true,
-	range = function(self, t) return math.floor(5 + self:getTalentLevel(t) * 1.2) end,
+	range = function(self, t) return math.floor(4 + self:getTalentLevel(t) * 1.2) end,
 	requires_target = true,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t)}
-- 
GitLab