From 9fad70629303abca56e91b281f1273a6871f02c6 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Thu, 27 May 2010 00:06:50 +0000
Subject: [PATCH] even more particle effects: corrosive vapour & inferno

git-svn-id: http://svn.net-core.org/repos/t-engine4@701 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/engine/Map.lua                           |  54 ++++---
 game/engine/Particles.lua                     |   4 +
 .../tome/data/birth/classes/divine.lua        |  14 +-
 .../tome/data/gfx/particles/inferno.lua       |  46 ++++++
 .../tome/data/gfx/particles/sunburst.lua      | 132 ++++++++++++++++++
 .../tome/data/gfx/particles/vapour.lua        |  47 +++++++
 game/modules/tome/data/talents/divine/sun.lua |  10 +-
 .../modules/tome/data/talents/spells/fire.lua |   5 +-
 .../tome/data/talents/spells/water.lua        |   2 +-
 ideas/classes.ods                             | Bin 15549 -> 13201 bytes
 10 files changed, 289 insertions(+), 25 deletions(-)
 create mode 100644 game/modules/tome/data/gfx/particles/inferno.lua
 create mode 100644 game/modules/tome/data/gfx/particles/sunburst.lua
 create mode 100644 game/modules/tome/data/gfx/particles/vapour.lua

diff --git a/game/engine/Map.lua b/game/engine/Map.lua
index 7c97e9d375..e8d43a1a5d 100644
--- a/game/engine/Map.lua
+++ b/game/engine/Map.lua
@@ -657,15 +657,39 @@ end
 -- @param damtype the DamageType to apply
 -- @param radius the radius of the effect
 -- @param dir the numpad direction of the effect, 5 for a ball effect
--- @param overlay a simple display entity to draw upon the map
+-- @param overlay either a simple display entity to draw upon the map or a Particle class
 -- @param update_fct optional function that will be called each time the effect is updated with the effect itself as parameter. Use it to change radius, move around ....
 function _M:addEffect(src, x, y, duration, damtype, dam, radius, dir, angle, overlay, update_fct, friendlyfire)
 	if friendlyfire == nil then friendlyfire = true end
-	print(friendlyfire)
-	table.insert(self.effects, {
-		src=src, x=x, y=y, duration=duration, damtype=damtype, dam=dam, radius=radius, dir=dir, angle=angle, overlay=overlay,
+
+	local grids
+
+	-- Handle balls
+	if dir == 5 then
+		grids = core.fov.circle_grids(x, y, radius, true)
+	-- Handle beams
+	else
+		grids = core.fov.beam_grids(x, y, radius, dir, angle, true)
+	end
+
+	local e = {
+		src=src, x=x, y=y, duration=duration, damtype=damtype, dam=dam, radius=radius, dir=dir, angle=angle,
+		overlay=overlay.__CLASSNAME and overlay,
+		grids = grids,
 		update_fct=update_fct, friendlyfire=friendlyfire
-	})
+	}
+
+	if not overlay.__CLASSNAME then
+		e.particles = {}
+		for lx, ys in pairs(grids) do
+			for ly, _ in pairs(ys) do
+				e.particles[#e.particles+1] = self:particleEmitter(lx, ly, 1, overlay.type, overlay.args)
+			end
+		end
+	end
+
+	table.insert(self.effects, e)
+
 	self.changed = true
 end
 
@@ -673,20 +697,11 @@ end
 function _M:displayEffects()
 	for i, e in ipairs(self.effects) do
 		-- Dont bother with obviously out of screen stuff
-		if e.x + e.radius >= self.mx and e.x - e.radius < self.mx + self.viewport.mwidth and e.y + e.radius >= self.my and e.y - e.radius < self.my + self.viewport.mheight then
-			local grids
+		if e.overlay and e.x + e.radius >= self.mx and e.x - e.radius < self.mx + self.viewport.mwidth and e.y + e.radius >= self.my and e.y - e.radius < self.my + self.viewport.mheight then
 			local s = self.tilesSurface:get(e.overlay.display, e.overlay.color_r, e.overlay.color_g, e.overlay.color_b, e.overlay.color_br, e.overlay.color_bg, e.overlay.color_bb, e.overlay.image, e.overlay.alpha)
 
-			-- Handle balls
-			if e.dir == 5 then
-				grids = core.fov.circle_grids(e.x, e.y, e.radius, true)
-			-- Handle beams
-			else
-				grids = core.fov.beam_grids(e.x, e.y, e.radius, e.dir, e.angle, true)
-			end
-
 			-- Now display each grids
-			for lx, ys in pairs(grids) do
+			for lx, ys in pairs(e.grids) do
 				for ly, _ in pairs(ys) do
 					if self.seens(lx, ly) then
 						s:toScreen(self.display_x + (lx - self.mx) * self.tile_w, self.display_y + (ly - self.my) * self.tile_h)
@@ -728,7 +743,12 @@ function _M:processEffects()
 		end
 	end
 
-	for i = #todel, 1, -1 do table.remove(self.effects, todel[i]) end
+	for i = #todel, 1, -1 do
+		if self.effects[todel[i]].particles then
+			for j, ps in ipairs(self.effects[todel[i]].particles) do self:removeParticleEmitter(ps) end
+		end
+		table.remove(self.effects, todel[i])
+	end
 end
 
 
diff --git a/game/engine/Particles.lua b/game/engine/Particles.lua
index 733a75c2ba..3aa4718a6a 100644
--- a/game/engine/Particles.lua
+++ b/game/engine/Particles.lua
@@ -43,6 +43,10 @@ function _M:save()
 	})
 end
 
+function _M:cloned()
+	self:loaded()
+end
+
 function _M:loaded()
 	local def, fct, max, gl
 	if type(self.def) == "string" then
diff --git a/game/modules/tome/data/birth/classes/divine.lua b/game/modules/tome/data/birth/classes/divine.lua
index d0b1207c45..a7179e62fd 100644
--- a/game/modules/tome/data/birth/classes/divine.lua
+++ b/game/modules/tome/data/birth/classes/divine.lua
@@ -46,13 +46,21 @@ newBirthDescriptor{
 	},
 	stats = { mag=2, str=2, dex=2, },
 	talents_types = {
-		["divine/sun"]={true, 0.3},
+		["technique/shield-offense"]={true, 0.1},
+		["technique/combat-techniques-active"]={false, 0.1},
+		["technique/combat-techniques-passive"]={true, 0.1},
+		["technique/combat-training"]={true, 0.1},
+		["cunning/survival"]={false, 0.1},
+		["divine/sun"]={true, 0},
 		["divine/chants"]={true, 0.3},
-		["divine/glyphs"]={true, 0.3},
 		["divine/combat"]={true, 0.3},
-		["divine/light"]={true, 0.3},
+		["divine/light"]={false, 0},
 	},
 	talents = {
+		[ActorTalents.T_CHANT_OF_FORTITUDE] = 1,
+		[ActorTalents.T_WEAPON_COMBAT] = 1,
+		[ActorTalents.T_HEAVY_ARMOUR_TRAINING] = 1,
+		[ActorTalents.T_MASSIVE_ARMOUR_TRAINING] = 1,
 	},
 	copy = {
 		max_life = 110,
diff --git a/game/modules/tome/data/gfx/particles/inferno.lua b/game/modules/tome/data/gfx/particles/inferno.lua
new file mode 100644
index 0000000000..a3849727c2
--- /dev/null
+++ b/game/modules/tome/data/gfx/particles/inferno.lua
@@ -0,0 +1,46 @@
+-- ToME - Tales of Middle-Earth
+-- 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
+
+return { generator = function()
+	local ad = rng.range(0, 360)
+	local a = math.rad(ad)
+	local dir = math.rad(ad + 90)
+	local r = rng.range(1, 20)
+	local dirv = math.rad(1)
+
+	return {
+		trail = 1,
+		life = 10,
+		size = 4, sizev = -0.1, sizea = 0,
+
+		x = r * math.cos(a), xv = -0.1, xa = 0,
+		y = r * math.sin(a), yv = -0.1, ya = 0,
+		dir = dir, dirv = dirv, dira = dir / 20,
+		vel = 1, velv = 0, vela = 0.1,
+
+		r = rng.range(200, 255)/255,   rv = 0, ra = 0,
+		g = rng.range(120, 170)/255,   gv = 0.005, ga = 0.0005,
+		b = rng.range(0, 10)/255,      bv = 0, ba = 0,
+		a = rng.range(25, 220)/255,    av = 0, aa = 0.005,
+	}
+end, },
+function(self)
+	self.ps:emit(4)
+end,
+40
diff --git a/game/modules/tome/data/gfx/particles/sunburst.lua b/game/modules/tome/data/gfx/particles/sunburst.lua
new file mode 100644
index 0000000000..081f87e2e9
--- /dev/null
+++ b/game/modules/tome/data/gfx/particles/sunburst.lua
@@ -0,0 +1,132 @@
+-- ToME - Tales of Middle-Earth
+-- 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
+
+-- Make up the grids list
+local gs = {}
+max_alpha = max_alpha or 220
+
+-- Compute the clipping circle
+local sradius = (radius + 0.5) * (engine.Map.tile_w + engine.Map.tile_h) / 2
+for i = -radius, radius do for j = -radius, radius  do
+	local lastx, lasty = 0, 0
+	local l = line.new(0, 0, i, j)
+	local lx, ly = l()
+	while lx do
+		if grids[lx+tx] and grids[lx+tx][ly+ty] then
+			lastx, lasty = lx, ly
+		else
+			gs[lx] = gs[lx] or {}
+			gs[lx][ly] = {x=lastx, y=lasty, radius=math.sqrt(lastx^2 + lasty^2)}
+--			print("block", lx, ly, "=>", math.sqrt(lastx^2 + lasty^2))
+		end
+		lx, ly = l()
+	end
+end end
+
+local nb = 0
+return { generator = function()
+	local radius = radius
+	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 = rng.float(sradius - 12, sradius)
+	local x = r * math.cos(a)
+	local y = r * math.sin(a)
+	local bx = math.floor(x / engine.Map.tile_w)
+	local by = math.floor(y / engine.Map.tile_h)
+	if gs[bx] and gs[bx][by] and rng.chance(2) then
+--		print("block at angle", ad, radius, ":=>", gs[bx][by].radius)
+		radius = gs[bx][by].radius
+		sradius = (radius + 0.5) * (engine.Map.tile_w + engine.Map.tile_h) / 2
+		local r = rng.float(sradius - 5, sradius)
+		x = r * math.cos(a)
+		y = r * math.sin(a)
+	end
+	local static = rng.percent(40)
+
+	return {
+		trail = 1,
+		life = 24,
+		size = 3, sizev = static and 0.05 or 0.15, sizea = 0,
+
+		x = x, xv = 0, xa = 0,
+		y = y, yv = 0, ya = 0,
+		dir = static and a + math.rad(90 + rng.range(10, 20)) or a, dirv = 0, dira = 0,
+		vel = static and 2 or 0.5 * (-1-nb) * radius / 2.7, velv = 0, vela = static and 0.01 or rng.float(-0.3, -0.2) * 0.3,
+
+		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, max_alpha)/255,    av = static and -0.034 or 0, aa = 0.005,
+	}
+end, },
+function(self)
+	if nb < 5 then
+		self.ps:emit(radius*266)
+		nb = nb + 1
+		self.ps:emit(radius*266)
+		nb = nb + 1
+		self.ps:emit(radius*266)
+		nb = nb + 1
+		self.ps:emit(radius*266)
+		nb = nb + 1
+		self.ps:emit(radius*266)
+		nb = nb + 1
+	end
+end,
+5*radius*266
+
+--[[
+local nb = 0
+return { generator = function()
+	local ad = rng.range(0, 360)
+	local a = math.rad(ad)
+	local r = rng.range(2, sradius)
+	local boundx = r * math.cos(a)
+	local boundy = r * math.sin(a)
+	local x = math.floor(boundx / engine.Map.tile_w) + tx
+	local y = math.floor(boundy / engine.Map.tile_h) + ty
+	if not grids[x] or not grids[x][y] then return end
+
+	return {
+		trail = 1,
+		life = 12,
+		size = 3, sizev = 0.3, sizea = 0,
+
+		x = boundx, xv = 0, xa = 0,
+		y = boundy, yv = 0, ya = 0,
+--		x = r * math.cos(a), xv = -0.1, xa = 0,
+--		y = r * math.sin(a), yv = -0.1, ya = 0,
+		dir = a + 5 * math.rad(rng.range(10, 20)), dirv = math.rad(rng.range(10, 20)), dira = -math.rad(2),
+		vel = 1, velv = 0, vela = 0.1,
+
+		r = rng.range(200, 255)/255,   rv = 0, ra = 0,
+		g = rng.range(120, 170)/255,   gv = 0, ga = 0,
+		b = rng.range(0, 10)/255,      bv = 0, ba = 0,
+		a = rng.range(25, 220)/255,    av = 0, aa = 0,
+	}
+end, },
+function(self)
+	if nb < 2 then
+		self.ps:emit(800)
+		nb = nb + 1
+	end
+end,
+5000
+]]
\ No newline at end of file
diff --git a/game/modules/tome/data/gfx/particles/vapour.lua b/game/modules/tome/data/gfx/particles/vapour.lua
new file mode 100644
index 0000000000..47b2845fb8
--- /dev/null
+++ b/game/modules/tome/data/gfx/particles/vapour.lua
@@ -0,0 +1,47 @@
+-- ToME - Tales of Middle-Earth
+-- 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
+
+return { generator = function()
+	local ad = rng.range(0, 360)
+	local a = math.rad(ad)
+	local dir = math.rad(ad + 90)
+	local r = rng.range(1, 20)
+	local dirv = math.rad(1)
+
+	return {
+		trail = 1,
+		life = 10,
+		size = 1, sizev = 0.4, sizea = 0,
+
+		x = r * math.cos(a), xv = -0.1, xa = 0,
+		y = r * math.sin(a), yv = -0.1, ya = 0,
+		dir = math.rad(rng.range(0, 360)), dirv = 0, dira = 0,
+		vel = 0.1, velv = 0, vela = 0,
+
+		r = rng.range(0, 20)/255,   rv = 0, ra = 0,
+		g = rng.range(220, 255)/255,   gv = 0.005, ga = 0.0005,
+		b = rng.range(100, 170)/255,      bv = 0, ba = 0,
+		a = rng.range(25, 220)/255,    av = 0, aa = 0.005,
+	}
+end, },
+function(self)
+	self.ps:emit(4)
+end,
+40,
+"particle_torus"
diff --git a/game/modules/tome/data/talents/divine/sun.lua b/game/modules/tome/data/talents/divine/sun.lua
index c295c19726..58cfe8fe4a 100644
--- a/game/modules/tome/data/talents/divine/sun.lua
+++ b/game/modules/tome/data/talents/divine/sun.lua
@@ -65,13 +65,14 @@ newTalent{
 	},
 	range = 6,
 	action = function(self, t)
-		local tg = {type="ball", range=0, friendlyfire=true, radius=5 + self:getTalentLevel(t), talent=t}
+		local tg = {type="ball", range=0, friendlyfire=true, radius=2 + self:getTalentLevel(t) / 2, talent=t}
 		tg.friendlyfire = false
-		self:project(tg, self.x, self.y, DamageType.BLIND, 3 + self:getTalentLevel(t))
+		local grids = self:project(tg, self.x, self.y, DamageType.BLIND, 3 + self:getTalentLevel(t))
 		self:project(tg, self.x, self.y, DamageType.LITE, 1)
 		if self:getTalentLevel(t) then
 			self:project(tg, self.x, self.y, DamageType.LIGHT, 4 + self:combatSpellpower(0.1) * self:getTalentLevel(t))
 		end
+		game.level.map:particleEmitter(self.x, self.y, tg.radius, "sunburst", {radius=tg.radius, grids=grids, tx=self.x, ty=self.y, max_alpha=80})
 		game:playSoundNear(self, "talents/flame")
 		return true
 	end,
@@ -125,7 +126,10 @@ newTalent{
 	range = 3,
 	action = function(self, t)
 		local tg = {type="ball", range=0, radius=3, friendlyfire=false, talent=t}
-		self:project(tg, self.x, self.y, DamageType.LIGHT, self:spellCrit(10 + self:combatSpellpower(0.17) * self:getTalentLevel(t)), {type="light"})
+		local grids = self:project(tg, self.x, self.y, DamageType.LIGHT, self:spellCrit(10 + self:combatSpellpower(0.17) * self:getTalentLevel(t)))
+
+		game.level.map:particleEmitter(self.x, self.y, tg.radius, "sunburst", {radius=tg.radius, grids=grids, tx=self.x, ty=self.y})
+
 		game:playSoundNear(self, "talents/fireflash")
 		return true
 	end,
diff --git a/game/modules/tome/data/talents/spells/fire.lua b/game/modules/tome/data/talents/spells/fire.lua
index 1c11ae7180..d93a083bd2 100644
--- a/game/modules/tome/data/talents/spells/fire.lua
+++ b/game/modules/tome/data/talents/spells/fire.lua
@@ -122,9 +122,12 @@ newTalent{
 			DamageType.FIRE, dam,
 			radius,
 			5, nil,
-			engine.Entity.new{alpha=100, display='', color_br=180, color_bg=30, color_bb=60},
+			{type="inferno"},
 			nil, self:spellFriendlyFire()
 		)
+
+--		self:project(tg, x, y, function(dx, dy) end, nil, {type="inferno"})
+--		game.level.map:particleEmitter(x, y, 1, "inferno", {})
 		game:playSoundNear(self, "talents/fire")
 		return true
 	end,
diff --git a/game/modules/tome/data/talents/spells/water.lua b/game/modules/tome/data/talents/spells/water.lua
index 7312a4e12f..125717ca77 100644
--- a/game/modules/tome/data/talents/spells/water.lua
+++ b/game/modules/tome/data/talents/spells/water.lua
@@ -42,7 +42,7 @@ newTalent{
 			DamageType.ACID, dam,
 			radius,
 			5, nil,
-			engine.Entity.new{alpha=100, display='', color_br=30, color_bg=180, color_bb=60},
+			{type="vapour"},
 			nil, self:spellFriendlyFire()
 		)
 		game:playSoundNear(self, "talents/cloud")
diff --git a/ideas/classes.ods b/ideas/classes.ods
index 09c1305dbe86e0e419238de71cc9a0ed2041ca73..147eca71caf4ed2bd55dee5954236e055a3d9c63 100644
GIT binary patch
delta 10777
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

delta 13133
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

-- 
GitLab