diff --git a/game/modules/tome/data/talents/misc/npcs.lua b/game/modules/tome/data/talents/misc/npcs.lua
index bbc876d1990d30f24a9c22e44ea48d028a882823..a85df737201776c9f4becf1ccb711a8199817f9d 100644
--- a/game/modules/tome/data/talents/misc/npcs.lua
+++ b/game/modules/tome/data/talents/misc/npcs.lua
@@ -541,7 +541,7 @@ newTalent{
 	tactical = { DISABLE = { confusion = 3 } },
 	target = function(self, t) return {type="hit", range=self:getTalentRange(t), talent=t} end,
 	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end,
-	getConfusion = function(self, t) return math.floor(self:combatTalentScale(t, 15, 50)) end,
+	getConfusion = function(self, t) return self:combatTalentLimit(t, 50, 15, 45) end, -- Confusion hard cap is 50%
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
diff --git a/game/modules/tome/data/talents/techniques/2hweapon.lua b/game/modules/tome/data/talents/techniques/2hweapon.lua
index b3404cf62b848da3bb992c01c4aeeb6eec92d2cd..155181ca24813059088793d7effeabfb0f1ea5eb 100644
--- a/game/modules/tome/data/talents/techniques/2hweapon.lua
+++ b/game/modules/tome/data/talents/techniques/2hweapon.lua
@@ -119,6 +119,7 @@ newTalent{
 	range = 0,
 	radius = function(self, t) return math.floor(self:combatTalentScale(t, 4, 8)) end,
 	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 4, 8)) end,
+	getConfusion = function(self, t) return self:combatTalentLimit(t, 50, 15, 45) end,
 	requires_target = true,
 	target = function(self, t)
 		return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false}
@@ -136,7 +137,7 @@ newTalent{
 		if not x or not y then return nil end
 		self:project(tg, x, y, DamageType.CONFUSION, {
 			dur=t.getDuration(self, t),
-			dam=50+self:getTalentLevelRaw(t)*10,
+			dam=t.getConfusion(self, t),
 			power_check=function() return self:combatPhysicalpower() end,
 			resist_check=self.combatPhysicalResist,
 		})
@@ -144,8 +145,8 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		return ([[Shout your warcry in a frontal cone of radius %d. Any targets caught inside will be confused for %d turns.]]):
-		format(self:getTalentRadius(t), t.getDuration(self, t))
+		return ([[Shout your warcry in a frontal cone of radius %d. Any targets caught inside will be confused (power %d%%) for %d turns.]]):
+		format(self:getTalentRadius(t),t.getConfusion(self, t), t.getDuration(self, t))
 	end,
 }