diff --git a/game/engines/default/engine/Projectile.lua b/game/engines/default/engine/Projectile.lua index fef0038d15dc433d21cebf074cd6bce9aebc8953..7314acdae18eed6e37aeee0614da5b7567717c9c 100644 --- a/game/engines/default/engine/Projectile.lua +++ b/game/engines/default/engine/Projectile.lua @@ -87,6 +87,12 @@ function _M:move(x, y, force) self:addParticles(Particles.new(self.travel_particle, 1, nil)) self.travel_particle = nil end + if self.trail_particle then + local ps = Particles.new(self.trail_particle, 1, nil) + ps.x = x + ps.y = y + game.level.map:addParticleEmitter(ps) + end -- Update particle emitters attached to that actor local del = {} @@ -178,6 +184,7 @@ function _M:makeProject(src, display, def, do_move, do_act, do_stop) name = name, display = display.display or ' ', color = display.color or colors.WHITE, image = display.image or nil, travel_particle = display.particle, + trail_particle = display.trail, src = src, src_x = src.x, src_y = src.y, project = {def=def}, diff --git a/game/modules/tome/data/gfx/particles/firetrail.lua b/game/modules/tome/data/gfx/particles/firetrail.lua new file mode 100644 index 0000000000000000000000000000000000000000..627a958d8e21293a804a180164c2c015ea1b1c6b --- /dev/null +++ b/game/modules/tome/data/gfx/particles/firetrail.lua @@ -0,0 +1,56 @@ +-- 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 + +local nb = 0 + +return { generator = function() + local radius = 0 + 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(0.1, sradius / 2) + 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) + local static = rng.percent(40) + + return { + trail = 1, + life = 3 + 9 * (sradius - r) / sradius, + size = 3, sizev = 0, sizea = 0, + + x = x, xv = 0, xa = 0, + y = y, yv = 0, ya = 0, + dir = 0, dirv = 0, dira = 0, + vel = 0, velv = 0, vela = 0, + + 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 = static and -0.034 or 0, aa = 0.005, + } +end, }, +function(self) + if nb < 1 then + self.ps:emit(40) + end + nb = nb + 1 +end, +40 diff --git a/game/modules/tome/data/talents/spells/fire.lua b/game/modules/tome/data/talents/spells/fire.lua index d424d2d6c1e596a2d49c6df0e31e6978a10be298..d480b39f3b1ee666bbfdfee7cc52e0847f348bb5 100644 --- a/game/modules/tome/data/talents/spells/fire.lua +++ b/game/modules/tome/data/talents/spells/fire.lua @@ -32,7 +32,7 @@ newTalent{ reflectable = true, proj_speed = 20, action = function(self, t) - local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_fire"}} + local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_fire", trail="firetrail"}} local x, y = self:getTarget(tg) if not x or not y then return nil end self:projectile(tg, x, y, DamageType.FIREBURN, self:spellCrit(self:combatTalentSpellDamage(t, 25, 290)), {type="flame"})