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