diff --git a/game/modules/tome/data/gfx/particles/generic_sploom.lua b/game/modules/tome/data/gfx/particles/generic_sploom.lua new file mode 100644 index 0000000000000000000000000000000000000000..492e470161a7c8e9d689b6bdc105cdb4c40e4bbf --- /dev/null +++ b/game/modules/tome/data/gfx/particles/generic_sploom.lua @@ -0,0 +1,66 @@ +-- ToME - Tales of Maj'Eyal +-- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 basenb = basenb or 200 +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(0, sradius) + local rf = r / sradius + local density = math.cos(rf * math.pi / 2) + local ndensity = math.sin(rf * math.pi / 2) + local x = r * math.cos(a) + local y = r * math.sin(a) + + local rate = 2 + + return { + trail = 3, + life = 65 / math.abs(rate), + size = 10, sizev = 0, sizea = 0, + + x = x, xv = 0, xa = 0, + y = y, yv = 0, ya = 0, + dir = a, dirv = 0, dira = 0, + vel = -1.5 * ndensity * rate * radius, velv = 0.325 * density * rate * rate * radius, vela = -0.0175 * density * rate * rate * rate * radius, + + r = rng.range(rm, rM)/255, rv = -0.01, ra = 0, + g = rng.range(gm, gM)/255, gv = -0.01, ga = 0, + b = rng.range(bm, bM)/255, bv = -0.01, ba = 0, + a = rng.range(am, aM)/255 * density , av = 4/255 * density * rate, aa = -0.14/255 * density * rate * rate, + } +end, }, +function(self) + if nb < 5 then + self.ps:emit(radius*basenb) + nb = nb + 1 + self.ps:emit(radius*basenb) + nb = nb + 1 + self.ps:emit(radius*basenb) + nb = nb + 1 + self.ps:emit(radius*basenb) + nb = nb + 1 + self.ps:emit(radius*basenb) + nb = nb + 1 + end +end, +5*radius*basenb, "particle_torus" diff --git a/game/modules/tome/data/timed_effects/magical.lua b/game/modules/tome/data/timed_effects/magical.lua index 36487bd293b505012aa71d43492c578a2ec39b16..5530eab70585267688e8fddc461280ecaef77925 100644 --- a/game/modules/tome/data/timed_effects/magical.lua +++ b/game/modules/tome/data/timed_effects/magical.lua @@ -1910,11 +1910,7 @@ newEffect{ if not spot or not spot.x then return end self:project({type="ball", x=spot.x, y=spot.y, radius=2, selffire=self:spellFriendlyFire()}, spot.x, spot.y, DamageType.ARCANE, eff.dam) - if core.shader.active(4) then - game.level.map:particleEmitter(spot.x, spot.y, 2, "shader_ring", {radius=4, life=12}, {type="sparks", zoom=1, time_factor=400, hide_center=0, color1={0.6, 0.3, 0.8, 1}, color2={0.8, 0, 0.8, 1}}) - else - game.level.map:particleEmitter(spot.x, spot.y, 2, "generic_ball", {rm=150, rM=180, gm=20, gM=60, bm=180, bM=200, am=80, aM=150, radius=2}) - end + game.level.map:particleEmitter(spot.x, spot.y, 2, "generic_sploom", {rm=150, rM=180, gm=20, gM=60, bm=180, bM=200, am=80, aM=150, radius=2, basenb=120}) game:playSoundNear(self, "talents/arcane") end,