From a96d77e10793839dde73b70c3c425e155f9e26c9 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Mon, 28 Nov 2011 09:29:10 +0000
Subject: [PATCH] Gem Portal cooldown is now reduced by talent level. Also it
 wont enter cooldown if not moved

git-svn-id: http://svn.net-core.org/repos/t-engine4@4690 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/data/talents/spells/stone-alchemy.lua | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/game/modules/tome/data/talents/spells/stone-alchemy.lua b/game/modules/tome/data/talents/spells/stone-alchemy.lua
index 16c1d66376..09914d27b1 100644
--- a/game/modules/tome/data/talents/spells/stone-alchemy.lua
+++ b/game/modules/tome/data/talents/spells/stone-alchemy.lua
@@ -143,7 +143,7 @@ newTalent{
 	name = "Gem Portal",
 	type = {"spell/stone-alchemy",3},
 	require = spells_req3,
-	cooldown = 20,
+	cooldown = function(self, t) return math.max(5, 20 - (self:getTalentLevelRaw(t) * 2)) end,
 	mana = 20,
 	points = 5,
 	range = 1,
@@ -161,8 +161,13 @@ newTalent{
 		if not x or not y then return nil end
 		local _ _, x, y = self:canProject(tg, x, y)
 
-		for i = 1, 5 do self:removeObject(self:getInven("QUIVER"), 1) end
+		local l = line.new(self.x, self.y, x, y)
+		local nextx, nexty = l()
+		if not nextx or not game.level.map:checkEntity(nextx, nexty, Map.TERRAIN, "block_move", self) then return end
+
 		self:probabilityTravel(x, y, t.getRange(self, t))
+
+		for i = 1, 5 do self:removeObject(self:getInven("QUIVER"), 1) end
 		game:playSoundNear(self, "talents/arcane")
 		return true
 	end,
-- 
GitLab