diff --git a/game/engines/default/engine/interface/ActorTalents.lua b/game/engines/default/engine/interface/ActorTalents.lua
index 3417a07877ada9108c09c2fec732ac0f173935d0..9cc9101b75f6a630fd3a9117f4013bfb5ec08db1 100644
--- a/game/engines/default/engine/interface/ActorTalents.lua
+++ b/game/engines/default/engine/interface/ActorTalents.lua
@@ -128,7 +128,7 @@ function _M:useTalent(id, who, force_level, ignore_cd, force_target)
 			local old_level
 			local old_target
 			if force_level then old_level = who.talents[id]; who.talents[id] = force_level end
-			if force_target then old_target = rawget(who, "getTarget"); who.getTarget = function(a) a.getTarget = nil; return force_target.x, force_target.y, not force_target.__no_self and force_target end end
+			if force_target then old_target = rawget(who, "getTarget"); who.getTarget = function(a) return force_target.x, force_target.y, not force_target.__no_self and force_target end end
 			local ret = ab.action(who, ab)
 			if force_target then who.getTarget = old_target end
 			if force_level then who.talents[id] = old_level end
diff --git a/game/modules/tome/data/birth/classes/warrior.lua b/game/modules/tome/data/birth/classes/warrior.lua
index ff4deb99188b7eb910a06b2360ce37f61e95371e..29c8a9d909cdcbb0df3911089f9a2db2aa4548d4 100644
--- a/game/modules/tome/data/birth/classes/warrior.lua
+++ b/game/modules/tome/data/birth/classes/warrior.lua
@@ -156,6 +156,9 @@ newBirthDescriptor{
 		["cunning/survival"]={true, -0.1},
 		["cunning/dirty"]={false, -0.1},
 	},
+	unlockable_talents_types = {
+		["spell/stone"]={false, 0.1, "mage_geomancer"},
+	},
 	talents = {
 		[ActorTalents.T_FLAME] = 1,
 		[ActorTalents.T_ARCANE_COMBAT] = 1,
@@ -164,7 +167,7 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 100,
-		talent_cd_reduction={[ActorTalents.T_FLAME]=-3, [ActorTalents.T_LIGHTNING]=-3, },
+		talent_cd_reduction={[ActorTalents.T_FLAME]=-3, [ActorTalents.T_LIGHTNING]=-3, [ActorTalents.T_EARTHEN_MISSILES]=-3, },
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="greatsword", name="iron greatsword", autoreq=true, ego_chance=-1000, ego_chance=-1000},
 			{type="armor", subtype="light", name="rough leather armour", autoreq=true, ego_chance=-1000, ego_chance=-1000},
diff --git a/game/modules/tome/data/general/npcs/xorn.lua b/game/modules/tome/data/general/npcs/xorn.lua
index 3fca84198c696c63b20053f0cf261b8f90150aa1..43886324734b501ed1f9e6d8fd174e6ffb05e73b 100644
--- a/game/modules/tome/data/general/npcs/xorn.lua
+++ b/game/modules/tome/data/general/npcs/xorn.lua
@@ -200,10 +200,10 @@ newEntity{ base = "BASE_NPC_XORN", define_as = "FULL_HARKOR_ZUN",
 			game:setAllowedBuild("mage_geomancer", true)
 			world:gainAchievement("GEOMANCER", game.player)
 			local p = game.party:findMember{main=true}
-			if p.descriptor.subclass == "Archmage"  then
+			if p.descriptor.subclass == "Archmage" or p.descriptor.subclass == "Arcane Blade" then
 				if p:knowTalentType("spell/stone") == nil then
 					p:learnTalentType("spell/stone", false)
-					p:setTalentTypeMastery("spell/stone", 1.3)
+					p:setTalentTypeMastery("spell/stone", p.descriptor.subclass == "Archmage" and 1.3 or 1.1)
 				end
 			end
 		end
diff --git a/game/modules/tome/data/talents/techniques/magical-combat.lua b/game/modules/tome/data/talents/techniques/magical-combat.lua
index 96a8a3f4892290b0869ceda4dce6c36e273d9127..d5d14c720fe622b7bdf05e0b1073fde54d63180a 100644
--- a/game/modules/tome/data/talents/techniques/magical-combat.lua
+++ b/game/modules/tome/data/talents/techniques/magical-combat.lua
@@ -34,6 +34,7 @@ newTalent{
 			local mana = self:getMana() - 1
 			if self:knowTalent(self.T_FLAME) and mana > self:getTalentFromId(self.T_FLAME).mana * fatigue then spells[#spells+1] = self.T_FLAME end
 			if self:knowTalent(self.T_LIGHTNING) and mana > self:getTalentFromId(self.T_LIGHTNING).mana * fatigue then spells[#spells+1] = self.T_LIGHTNING end
+			if self:knowTalent(self.T_EARTHEN_MISSILES) and mana > self:getTalentFromId(self.T_EARTHEN_MISSILES).mana * fatigue then spells[#spells+1] = self.T_EARTHEN_MISSILES end
 			local tid = rng.table(spells)
 			if tid then
 				-- Extending beam target, assumes a maximum range of 10
@@ -73,7 +74,7 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		return ([[Allows one to use a melee weapon to focus spells, granting %d%% chance per melee attack to deliver a Flame, or Lightning spell as a free action on the target.
+		return ([[Allows one to use a melee weapon to focus spells, granting %d%% chance per melee attack to deliver a Flame, Lightning or Earthen Missiles spell as a free action on the target.
 		Delivering the spell this way will not trigger a spell cooldown, but only works if the spell is not cooling-down.
 		The chance increases with dexterity.]]):
 		format(20 + self:getTalentLevel(t) * (1 + self:getDex(9, true)))
diff --git a/game/modules/tome/data/texts/unlock-mage_geomancer.lua b/game/modules/tome/data/texts/unlock-mage_geomancer.lua
index b28060977fc9cbeaa21ac1a84cd33e6045e2d5fb..afacf184ce34cea850e367e5a0108f7a24245df5 100644
--- a/game/modules/tome/data/texts/unlock-mage_geomancer.lua
+++ b/game/modules/tome/data/texts/unlock-mage_geomancer.lua
@@ -22,7 +22,7 @@ return "New Talent Category: #LIGHT_GREEN#Stone",
 While most mages are content using the Earth school, a few of them took their research deeper and created Stone magic.
 At its core lies the Crystalline Focus, which can create attacks so sharp they can cut through physical immunity.
 
-You have mastered stone magic and can now create new Archmage characters that can learn the #LIGHT_GREEN#Stone talents#WHITE#.
+You have mastered stone magic and can now create new Archmage and Arcane Blade characters that can learn the #LIGHT_GREEN#Stone talents#WHITE#.
 
 Talents:
 - #YELLOW#Earthen Missiles: #WHITE#Fires multiple missiles of stone indepentenly to targets