diff --git a/game/modules/tome/data/talents/chronomancy/blade-threading.lua b/game/modules/tome/data/talents/chronomancy/blade-threading.lua
index 87b1c5ee5dbc73b85fae7d2f9eb7559a69d6b1a5..e216a330634db5252a7b936ecd64ebb77e9f52cd 100644
--- a/game/modules/tome/data/talents/chronomancy/blade-threading.lua
+++ b/game/modules/tome/data/talents/chronomancy/blade-threading.lua
@@ -29,7 +29,7 @@ newTalent{
 	require = chrono_req1,
 	points = 5,
 	cooldown = 6,
-	paradox = function (self, t) return getParadoxCost(self, t, 10) end,
+	paradox = function (self, t) return getParadoxCost(self, t, 8) end,
 	tactical = { ATTACK = {weapon = 2}, DISABLE = 3 },
 	requires_target = true,
 	speed = "weapon",
@@ -81,16 +81,16 @@ newTalent{
 	require = chrono_req2,
 	points = 5,
 	cooldown = 8,
-	paradox = function (self, t) return getParadoxCost(self, t, 15) end,
+	paradox = function (self, t) return getParadoxCost(self, t, 12) end,
 	tactical = { ATTACKAREA = {weapon = 2}, DISABLE = 3 },
 	requires_target = true,
 	speed = "weapon",
-	range = function(self, t) return 3 + math.floor(self:combatTalentLimit(t, 7, 1, 4)) end,
+	range = function(self, t) return 3 + math.floor(self:combatTalentLimit(t, 7, 0, 3)) end,
 	is_melee = true,
 	target = function(self, t)
 		return {type="beam", range=self:getTalentRange(t), talent=t, selffire=false }
 	end,
-	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1, 1.5) end,
+	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.8, 1.3) end,
 	getDuration = function(self, t) return getExtensionModifier(self, t, math.floor(self:combatTalentScale(t, 3, 7))) end,
 	getPower = function(self, t) return self:combatTalentSpellDamage(t, 50, 150, getParadoxSpellpower(self, t)) end,
 	on_pre_use = function(self, t, silent) if not doWardenPreUse(self, "dual") then if not silent then game.logPlayer(self, "You require two weapons to use this talent.") end return false end return true end,
@@ -155,7 +155,7 @@ newTalent{
 	require = chrono_req3,
 	points = 5,
 	cooldown = 8,
-	paradox = function (self, t) return getParadoxCost(self, t, 15) end,
+	paradox = function (self, t) return getParadoxCost(self, t, 12) end,
 	tactical = { ATTACKAREA = {weapon = 2}, ATTACK = {weapon = 2},  },
 	requires_target = true,
 	is_teleport = true,
@@ -163,7 +163,7 @@ newTalent{
 	range = 1,
 	is_melee = true,
 	target = function(self, t) return {type="hit", range=self:getTalentRange(t), talent=t} end,
-	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.6, 1.2) end,
+	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 0.4, 1) end,
 	getTeleports = function(self, t) return self:getTalentLevel(t) >= 5 and 2 or 1 end,
 	on_pre_use = function(self, t, silent) if not doWardenPreUse(self, "dual") then if not silent then game.logPlayer(self, "You require two weapons to use this talent.") end return false end return true end,
 	action = function(self, t)
@@ -265,7 +265,7 @@ newTalent{
 	require = chrono_req4,
 	points = 5,
 	cooldown = 12,
-	paradox = function (self, t) return getParadoxCost(self, t, 10) end,
+	paradox = function (self, t) return getParadoxCost(self, t, 18) end,
 	tactical = { ATTACK = {weapon = 2}, ATTACKAREA = { TEMPORAL = 2 }},
 	requires_target = true,
 	speed = "weapon",
@@ -273,7 +273,7 @@ newTalent{
 	radius = function(self, t) return math.floor(self:combatTalentScale(t, 4.5, 6.5)) end,
 	is_melee = true,
 	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1, 1.5) end,
-	getShear = function(self, t) return self:combatTalentSpellDamage(t, 20, 150, getParadoxSpellpower(self, t)) end,
+	getShear = function(self, t) return self:combatTalentSpellDamage(t, 20, 200, getParadoxSpellpower(self, t)) end,
 	target = function(self, t)
 		return {type="cone", range=0, radius=self:getTalentRadius(t), talent=t, selffire=false }
 	end,
diff --git a/game/modules/tome/data/talents/chronomancy/bow-threading.lua b/game/modules/tome/data/talents/chronomancy/bow-threading.lua
index 8ca9cbcda0acdc504f8b79b43f4dd54013474880..5d541a46c209dc6c6cf1f899959a3e931e8eb7b7 100644
--- a/game/modules/tome/data/talents/chronomancy/bow-threading.lua
+++ b/game/modules/tome/data/talents/chronomancy/bow-threading.lua
@@ -73,7 +73,7 @@ newTalent{
 	require = chrono_req2,
 	points = 5,
 	cooldown = 6,
-	paradox = function (self, t) return getParadoxCost(self, t, 10) end,
+	paradox = function (self, t) return getParadoxCost(self, t, 12) end,
 	tactical = { ATTACK = {weapon = 4} },
 	requires_target = true,
 	range = archery_range,
@@ -160,7 +160,7 @@ newTalent{
 	require = chrono_req3,
 	points = 5,
 	cooldown = 10,
-	paradox = function (self, t) return getParadoxCost(self, t, 15) end,
+	paradox = function (self, t) return getParadoxCost(self, t, 18) end,
 	tactical = { ATTACKAREA = {PHYSICAL = 2}, DISABLE = 2 },
 	requires_target = true,
 	range = archery_range,
@@ -259,7 +259,7 @@ newTalent{
 	require = chrono_req4,
 	points = 5,
 	cooldown = 12,
-	paradox = function (self, t) return getParadoxCost(self, t, 10) end,
+	paradox = function (self, t) return getParadoxCost(self, t, 24) end,
 	tactical = { ATTACK = {weapon = 4} },
 	requires_target = true,
 	range = archery_range,
diff --git a/game/modules/tome/data/talents/chronomancy/temporal-combat.lua b/game/modules/tome/data/talents/chronomancy/temporal-combat.lua
index 750beadab94df41e849a113e8031070ba4e32f3f..bc0e27ac738887893118159557ed1778d1dbfdb1 100644
--- a/game/modules/tome/data/talents/chronomancy/temporal-combat.lua
+++ b/game/modules/tome/data/talents/chronomancy/temporal-combat.lua
@@ -211,7 +211,7 @@ newTalent{
 	type = {"chronomancy/temporal-combat", 2},
 	require = chrono_req2,
 	points = 5,
-	paradox = function (self, t) return getParadoxCost(self, t, 20) end,
+	paradox = function (self, t) return getParadoxCost(self, t, 24) end,
 	cooldown = 24,
 	fixed_cooldown = true,
 	tactical = { HEAL = 1 },
@@ -281,15 +281,15 @@ newTalent{
 	require = chrono_req4,
 	points = 5,
 	cooldown = 8,
-	paradox = function (self, t) return getParadoxCost(self, t, 15) end,
+	paradox = function (self, t) return getParadoxCost(self, t, 12) end,
 	tactical = { ATTACK = {weapon = 2}, DISABLE = 3 },
 	requires_target = true,
 	range = function(self, t)
-		if self:hasArcheryWeapon("bow") then return util.getval(archery_range, self, t) end
+		if self:hasArcheryWeapon() then return util.getval(archery_range, self, t) end
 		return 1
 	end,
-	is_melee = function(self, t) return not self:hasArcheryWeapon("bow") end,
-	speed = function(self, t) return self:hasArcheryWeapon("bow") and "archery" or "weapon" end,
+	is_melee = function(self, t) return not self:hasArcheryWeapon() end,
+	speed = function(self, t) return self:hasArcheryWeapon() and "archery" or "weapon" end,
 	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1, 1.5) end,
 	getDuration = function(self, t) return getExtensionModifier(self, t, math.floor(self:combatTalentScale(t, 3, 7))) end,
 	on_pre_use = function(self, t, silent) if self:attr("disarmed") then if not silent then game.logPlayer(self, "You require a weapon to use this talent.") end return false end return true end,
@@ -297,14 +297,13 @@ newTalent{
 		target:setEffect(target.EFF_BREACH, t.getDuration(self, t), {})
 	end,
 	action = function(self, t)
-		local mainhand, offhand = self:hasDualWeapon()
 
-		if self:hasArcheryWeapon("bow") then
+		if self:hasArcheryWeapon() then
 			-- Ranged attack
 			local targets = self:archeryAcquireTargets({type="bolt"}, {one_shot=true, no_energy = true})
 			if not targets then return end
 			self:archeryShoot(targets, t, {type="bolt"}, {mult=t.getDamage(self, t)})
-		elseif mainhand then
+		else
 			-- Melee attack
 			local tg = {type="hit", range=self:getTalentRange(t), talent=t}
 			local x, y, target = self:getTarget(tg)
@@ -324,7 +323,7 @@ newTalent{
 	info = function(self, t)
 		local duration = t.getDuration(self, t)
 		local damage = t.getDamage(self, t) * 100
-		return ([[Attack the target with either your bow or melee weapons for %d%% damage.
+		return ([[Attack the target with either your ranged or melee weapons for %d%% damage.
 		If the attack hits you'll breach the target's immunities, reducing armor hardiness, stun, pin, blindness, and confusion immunity by 50%% for %d turns.
 		Breach chance scales with your Spellpower.]])
 		:format(damage, duration)
diff --git a/game/modules/tome/data/talents/chronomancy/threaded-combat.lua b/game/modules/tome/data/talents/chronomancy/threaded-combat.lua
index 9006a23debe38c92932a911b3f381b3bc6a10865..26b0c42f54d1d6344c41a50b73f626e71aefbb1d 100644
--- a/game/modules/tome/data/talents/chronomancy/threaded-combat.lua
+++ b/game/modules/tome/data/talents/chronomancy/threaded-combat.lua
@@ -109,7 +109,7 @@ newTalent{
 	require = chrono_req_high2,
 	mode = "passive",
 	points = 5,
-	getPercent = function(self, t) return self:combatTalentScale(t, 20, 50)/100 end,
+	getPercent = function(self, t) return self:combatTalentScale(t, 10, 50)/100 end,
 	info = function(self, t)
 		local percent = t.getPercent(self, t) * 100
 		return ([[Your Bow Threading and Blade Threading attacks now deal %d%% more weapon damage if you did not have the appropriate weapon equipped when you initiated the attack.]])
@@ -124,7 +124,7 @@ newTalent{
 	points = 5,
 	cooldown = 8,
 	fixed_cooldown = true,
-	paradox = function (self, t) return getParadoxCost(self, t, 15) end,
+	paradox = function (self, t) return getParadoxCost(self, t, 18) end,
 	tactical = { ATTACKAREA = { weapon = 3 } , DISABLE = 3 },
 	requires_target = true,
 	range = function(self, t)
@@ -204,7 +204,7 @@ newTalent{
 	require = chrono_req_high4,
 	mode = "passive",
 	points = 5,
-	getDamagePenalty = function(self, t) return 60 - self:combatTalentLimit(t, 30, 0, 20) end,
+	getDamagePenalty = function(self, t) return 80 - self:combatTalentLimit(t, 80, 0, 60) end,
 	doBladeWarden = function(self, t, target)
 		-- Sanity check
 		if not self.turn_procs.blade_warden then