From 022ee3c558b6a2a4c4a3995e9bdd0a473da9a061 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Thu, 11 Nov 2010 23:34:13 +0000
Subject: [PATCH] Fix dreadmaster disperse magic

git-svn-id: http://svn.net-core.org/repos/t-engine4@1871 51575b47-30f0-44d4-a5cc-537603b46e54
---
 .../engine/interface/GameTargeting.lua        |  2 +-
 game/modules/tome/data/general/npcs/ghost.lua | 12 ++--
 .../tome/data/gfx/particles/ball_light.lua    | 59 +++++++++++++++++++
 3 files changed, 66 insertions(+), 7 deletions(-)
 create mode 100644 game/modules/tome/data/gfx/particles/ball_light.lua

diff --git a/game/engines/default/engine/interface/GameTargeting.lua b/game/engines/default/engine/interface/GameTargeting.lua
index d81faef06a..0cbf440d06 100644
--- a/game/engines/default/engine/interface/GameTargeting.lua
+++ b/game/engines/default/engine/interface/GameTargeting.lua
@@ -206,7 +206,7 @@ end
 -- @param typ the targeting parameters
 function _M:targetGetForPlayer(typ)
 	if self.target.forced then return unpack(self.target.forced) end
-	if coroutine.running() then
+	if coroutine.running() and typ then
 		local msg
 		if type(typ) == "string" then msg, typ = typ, nil
 		elseif type(typ) == "table" then
diff --git a/game/modules/tome/data/general/npcs/ghost.lua b/game/modules/tome/data/general/npcs/ghost.lua
index e8cabd7d62..4cbf0d08ab 100644
--- a/game/modules/tome/data/general/npcs/ghost.lua
+++ b/game/modules/tome/data/general/npcs/ghost.lua
@@ -85,13 +85,13 @@ newEntity{ base = "BASE_NPC_GHOST",
 
 	summon = {{type="undead", subtype="ghost", name="dead", number=3, hasxp=false}, },
 	resolvers.talents{
---		[Talents.T_SUMMON]=1,
---		[Talents.T_PHASE_DOOR]=2,
---		[Talents.T_BLUR_SIGHT]=4,
+		[Talents.T_SUMMON]=1,
+		[Talents.T_PHASE_DOOR]=2,
+		[Talents.T_BLUR_SIGHT]=4,
 		[Talents.T_DISPERSE_MAGIC]=3,
---		[Talents.T_SILENCE]=2,
---		[Talents.T_MIND_DISRUPTION]=3,
---		[Talents.T_BURNING_HEX]=5,
+		[Talents.T_SILENCE]=2,
+		[Talents.T_MIND_DISRUPTION]=3,
+		[Talents.T_BURNING_HEX]=5,
 	},
 }
 
diff --git a/game/modules/tome/data/gfx/particles/ball_light.lua b/game/modules/tome/data/gfx/particles/ball_light.lua
new file mode 100644
index 0000000000..46b57d6abe
--- /dev/null
+++ b/game/modules/tome/data/gfx/particles/ball_light.lua
@@ -0,0 +1,59 @@
+-- ToME - Tales of Maj'Eyal
+-- Copyright (C) 2009, 2010 Nicolas Casalini
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-- Nicolas Casalini "DarkGod"
+-- darkgod@te4.org
+
+local nb = 12
+local dir
+local radius = radius or 6
+
+return { generator = function()
+	local sradius = (radius + 0.5) * (engine.Map.tile_w + engine.Map.tile_h) / 2
+	local ad = rng.float(0, 360)
+	local a = math.rad(ad)
+	local r = 0
+	local x = r * math.cos(a)
+	local y = r * math.sin(a)
+	local static = rng.percent(40)
+	local vel = sradius * ((24 - nb * 1.4) / 24) / 12
+
+	return {
+		trail = 1,
+		life = 12,
+		size = 12 - (12 - nb) * 0.7, sizev = 0, sizea = 0,
+
+		x = x, xv = 0, xa = 0,
+		y = y, yv = 0, ya = 0,
+		dir = a, dirv = 0, dira = 0,
+		vel = rng.float(vel * 0.6, vel * 1.2), velv = 0, vela = 0,
+
+		r = rng.range(220, 255)/255,  rv = 0, ra = 0,
+		g = rng.range(200, 230)/255,  gv = 0, ga = 0,
+		b = 0,                        bv = 0, ba = 0,
+		a = rng.range(25, 220)/255,   av = 0, aa = 0,
+	}
+end, },
+function(self)
+	if nb > 0 then
+		local i = math.min(nb, 6)
+		i = (i * i) * radius
+		self.ps:emit(i)
+		nb = nb - 1
+	end
+end,
+30*radius*7*12,
+"particle_cloud"
-- 
GitLab