diff --git a/game/modules/tome/data/birth/classes/rogue.lua b/game/modules/tome/data/birth/classes/rogue.lua
index fe623f4ec1526f45f08d36d579dca62219b8a6bf..eb624a1375708288d33979695a0410c946c7074e 100644
--- a/game/modules/tome/data/birth/classes/rogue.lua
+++ b/game/modules/tome/data/birth/classes/rogue.lua
@@ -151,6 +151,7 @@ newBirthDescriptor{
 		["technique/battle-tactics"]={false, 0.2},
 		["technique/mobility"]={true, 0.3},
 		["technique/thuggery"]={true, 0.3},
+		["technique/conditioning"]={true, 0.3},
 		["cunning/dirty"]={true, 0.3},
 		["cunning/tactical"]={false, 0.2},
 		["cunning/survival"]={true, 0.3},
diff --git a/game/modules/tome/data/birth/classes/warrior.lua b/game/modules/tome/data/birth/classes/warrior.lua
index 4f46f1f03541a2ba7bafc3236bbb86aa430172f5..84d9168738d0cf49c4a77c12531bd7633e09099d 100644
--- a/game/modules/tome/data/birth/classes/warrior.lua
+++ b/game/modules/tome/data/birth/classes/warrior.lua
@@ -60,6 +60,7 @@ newBirthDescriptor{
 		["technique/combat-techniques-active"]={true, 0.3},
 		["technique/combat-techniques-passive"]={true, 0.3},
 		["technique/combat-training"]={true, 0.3},
+		["technique/conditioning"]={true, 0.3},
 		["technique/superiority"]={false, 0.3},
 		["technique/warcries"]={false, 0.3},
 		["technique/field-control"]={false, 0},
@@ -104,6 +105,7 @@ newBirthDescriptor{
 		["technique/combat-techniques-active"]={true, 0.3},
 		["technique/combat-techniques-passive"]={true, 0.3},
 		["technique/combat-training"]={true, 0.3},
+		["technique/conditioning"]={true, 0.3},
 		["technique/superiority"]={false, 0.3},
 		["technique/warcries"]={false, 0.3},
 		["technique/battle-tactics"]={false, 0.3},
diff --git a/game/modules/tome/data/chats/escort-quest.lua b/game/modules/tome/data/chats/escort-quest.lua
index 2a9fe0d0ff9a8d448a611642b7c8d0e5641bad08..bcaa431978bd74b81d2fa9293f3c343a061993e7 100644
--- a/game/modules/tome/data/chats/escort-quest.lua
+++ b/game/modules/tome/data/chats/escort-quest.lua
@@ -23,11 +23,11 @@ local Stats = require("engine.interface.ActorStats")
 local reward_types = {
 	warrior = {
 		types = {
-			["technique/combat-training"] = 0.7,
+			["technique/conditioning"] = 0.7,
 		},
 		talents = {
-			[Talents.T_WEAPON_COMBAT] = 1,
-			[Talents.T_WEAPONS_MASTERY] = 1,
+			[Talents.T_VITALITY] = 1,
+			[Talents.T_UNFLINCHING_RESOLVE] = 1,
 			[Talents.T_EXOTIC_WEAPONS_MASTERY] = 1,
 		},
 		stats = {
diff --git a/game/modules/tome/data/talents/techniques/bloodthirst.lua b/game/modules/tome/data/talents/techniques/bloodthirst.lua
index e5e3668a1bff569fbe98ec7642ed706c92f566bb..8e4ecc7991cccf7aad03f41e8879a1438540f0c3 100644
--- a/game/modules/tome/data/talents/techniques/bloodthirst.lua
+++ b/game/modules/tome/data/talents/techniques/bloodthirst.lua
@@ -24,12 +24,17 @@ newTalent{
 	require = techs_req_high1,
 	points = 5,
 	mode = "passive",
+	getRegen = function (self, t) return self:getTalentLevel(t) end,
+	getMax = function(self, t) return self:getTalentLevel(t)*5 end,
 	do_bloodbath = function(self, t)
-		self:setEffect(self.EFF_BLOODBATH, 5 + self:getTalentLevelRaw(t), {regen=math.floor(self:getTalentLevel(t) * 40), hp=math.floor(self:getTalentLevel(t) * 2)})
+		self:setEffect(self.EFF_BLOODBATH, 5 + self:getTalentLevelRaw(t), {regen=t.getRegen(self, t), max=t.getMax(self, t), hp=math.floor(self:getTalentLevel(t) * 2)})
 	end,
 	info = function(self, t)
-		return ([[Delight in spilling the blood of your foes. After scoring a critical hit your life and stamina regeneration is increased by %d%% and your maximum life is increased by %d%%.]]):
-		format(math.floor(self:getTalentLevel(t) * 40), math.floor(self:getTalentLevel(t) * 2))
+		local regen = t.getRegen(self, t)
+		local max_regen = t.getMax(self, t)
+		return ([[Delight in spilling the blood of your foes.  After scoring a critical hit your maximum hit points will be increased by %d%%, your life regeneration by %0.2f per turn, and your stamina regeneration by %0.2f per turn.
+		The life and stamina regeneration will stack up to five times for a maximum of %0.2f and %0.2f each turn, respectfully.]]):
+		format(math.floor(self:getTalentLevel(t) * 2), regen, regen/5, max_regen, max_regen/5)
 	end,
 }
 
diff --git a/game/modules/tome/data/timed_effects/mental.lua b/game/modules/tome/data/timed_effects/mental.lua
index 7f83b06ab10d5ae0566362ea5906d9451880e736..3a6976223ee93ed94f964904c75487e6bfe703b7 100644
--- a/game/modules/tome/data/timed_effects/mental.lua
+++ b/game/modules/tome/data/timed_effects/mental.lua
@@ -1303,11 +1303,11 @@ newEffect{
 newEffect{
 	name = "BLOODBATH", image = "talents/bloodbath.png",
 	desc = "Bloodbath",
-	long_desc = function(self, eff) return ("The thrill of combat improves the target's maximum life by %d, life regeneration by %d%% and stamina regeneration by %d%%."):format(eff.hp, eff.regen, eff.regen) end,
+	long_desc = function(self, eff) return ("The thrill of combat improves the target's maximum life by %d%%, life regeneration by %0.2f, and stamina regeneration by %0.2f."):format(eff.hp, eff.cur_regen or eff.regen, eff.cur_regen/5 or eff.regen/5) end,
 	type = "mental",
 	subtype = { frenzy=true, heal=true },
 	status = "beneficial",
-	parameters = { hp=10, regen=10 },
+	parameters = { hp=10, regen=10, max=50 },
 	on_gain = function(self, err) return nil, "+Bloodbath" end,
 	on_lose = function(self, err) return nil, "-Bloodbath" end,
 	on_merge = function(self, old_eff, new_eff)
@@ -1318,16 +1318,18 @@ newEffect{
 		-- Take the new values, dont heal, otherwise you get a free heal each crit .. which is totaly broken
 		local v = new_eff.hp * self.max_life / 100
 		new_eff.life_id = self:addTemporaryValue("max_life", v)
-		new_eff.life_regen_id = self:addTemporaryValue("life_regen", new_eff.regen * math.max(0, self.life_regen) / 100)
-		new_eff.stamina_regen_id = self:addTemporaryValue("stamina_regen", new_eff.regen * math.max(0, self.stamina_regen) / 100)
+		new_eff.cur_regen = math.min(old_eff.cur_regen + new_eff.regen, new_eff.max)
+		new_eff.life_regen_id = self:addTemporaryValue("life_regen", new_eff.cur_regen)
+		new_eff.stamina_regen_id = self:addTemporaryValue("stamina_regen", new_eff.cur_regen/5)
 		return new_eff
 	end,
 	activate = function(self, eff)
 		local v = eff.hp * self.max_life / 100
 		eff.life_id = self:addTemporaryValue("max_life", v)
 		self:heal(v)
-		eff.life_regen_id = self:addTemporaryValue("life_regen", eff.regen * math.max(0, self.life_regen) / 100)
-		eff.stamina_regen_id = self:addTemporaryValue("stamina_regen", eff.regen * math.max(0, self.stamina_regen) / 100)
+		eff.cur_regen = eff.regen
+		eff.life_regen_id = self:addTemporaryValue("life_regen", eff.regen)
+		eff.stamina_regen_id = self:addTemporaryValue("stamina_regen", eff.regen /5)
 	end,
 	deactivate = function(self, eff)
 		self:removeTemporaryValue("max_life", eff.life_id)