From 0dbec2d897e42de8a5954a2c145a6fb9bb4191c7 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Sat, 4 Sep 2010 20:25:43 +0000 Subject: [PATCH] Added trails to some spells git-svn-id: http://svn.net-core.org/repos/t-engine4@1145 51575b47-30f0-44d4-a5cc-537603b46e54 --- .../tome/data/gfx/particles/arcanetrail.lua | 56 +++++++++++++++++++ .../tome/data/gfx/particles/bloodtrail.lua | 56 +++++++++++++++++++ .../tome/data/gfx/particles/earthtrail.lua | 56 +++++++++++++++++++ .../tome/data/gfx/particles/slimetrail.lua | 56 +++++++++++++++++++ .../tome/data/talents/spells/earth.lua | 4 +- .../modules/tome/data/talents/spells/fire.lua | 2 +- 6 files changed, 227 insertions(+), 3 deletions(-) create mode 100644 game/modules/tome/data/gfx/particles/arcanetrail.lua create mode 100644 game/modules/tome/data/gfx/particles/bloodtrail.lua create mode 100644 game/modules/tome/data/gfx/particles/earthtrail.lua create mode 100644 game/modules/tome/data/gfx/particles/slimetrail.lua diff --git a/game/modules/tome/data/gfx/particles/arcanetrail.lua b/game/modules/tome/data/gfx/particles/arcanetrail.lua new file mode 100644 index 0000000000..6d8e08bd94 --- /dev/null +++ b/game/modules/tome/data/gfx/particles/arcanetrail.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(180, 220)/255, rv = 0, ra = 0, + g = rng.range(0, 0)/255, gv = 0, ga = 0, + b = rng.range(200, 255)/255, bv = 0, ba = 0, + a = rng.range(80, 220)/255, av = 0, aa = 0, + } +end, }, +function(self) + if nb < 1 then + self.ps:emit(40) + end + nb = nb + 1 +end, +40 diff --git a/game/modules/tome/data/gfx/particles/bloodtrail.lua b/game/modules/tome/data/gfx/particles/bloodtrail.lua new file mode 100644 index 0000000000..a795458c5d --- /dev/null +++ b/game/modules/tome/data/gfx/particles/bloodtrail.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(180, 220)/255, rv = 0, ra = 0, + g = 0, gv = 0, ga = 0, + b = 0, bv = 0, ba = 0, + a = rng.range(80, 220)/255, av = 0, aa = 0, + } +end, }, +function(self) + if nb < 1 then + self.ps:emit(40) + end + nb = nb + 1 +end, +40 diff --git a/game/modules/tome/data/gfx/particles/earthtrail.lua b/game/modules/tome/data/gfx/particles/earthtrail.lua new file mode 100644 index 0000000000..39029610f3 --- /dev/null +++ b/game/modules/tome/data/gfx/particles/earthtrail.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, 230)/255, rv = 0, ra = 0, + g = rng.range(130, 160)/255, gv = 0.005, ga = 0.0005, + b = rng.range(50, 70)/255, bv = 0, ba = 0, + a = rng.range(255, 255)/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/gfx/particles/slimetrail.lua b/game/modules/tome/data/gfx/particles/slimetrail.lua new file mode 100644 index 0000000000..4b6a17255b --- /dev/null +++ b/game/modules/tome/data/gfx/particles/slimetrail.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 = 0, rv = 0, ra = 0, + g = rng.range(80, 200)/255, gv = 0, ga = 0, + b = 0, bv = 0, ba = 0, + a = rng.range(80, 220)/255, av = 0, aa = 0, + } +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/earth.lua b/game/modules/tome/data/talents/spells/earth.lua index 6b275e5ff8..a8dac3cb87 100644 --- a/game/modules/tome/data/talents/spells/earth.lua +++ b/game/modules/tome/data/talents/spells/earth.lua @@ -59,7 +59,7 @@ newTalent{ range = 20, reflectable = true, action = function(self, t) - local tg = {type="bolt", range=self:getTalentRange(t), nolock=true, talent=t} + local tg = {type="bolt", range=self:getTalentRange(t), nolock=true, talent=t, display={particle="bolt_earth", trail="earthtrail"}} local x, y = self:getTarget(tg) if not x or not y then return nil end for i = 1, self:getTalentLevelRaw(t) do @@ -88,7 +88,7 @@ newTalent{ reflectable = true, proj_speed = 6, action = function(self, t) - local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_earth"}} + local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_earth", trail="earthtrail"}} local x, y = self:getTarget(tg) if not x or not y then return nil end self:projectile(tg, x, y, DamageType.SPELLKNOCKBACK, self:spellCrit(self:combatTalentSpellDamage(t, 8, 170))) diff --git a/game/modules/tome/data/talents/spells/fire.lua b/game/modules/tome/data/talents/spells/fire.lua index d480b39f3b..fa4480cb8d 100644 --- a/game/modules/tome/data/talents/spells/fire.lua +++ b/game/modules/tome/data/talents/spells/fire.lua @@ -85,7 +85,7 @@ newTalent{ range = 15, proj_speed = 4, action = function(self, t) - local tg = {type="ball", range=self:getTalentRange(t), radius=1 + self:getTalentLevelRaw(t), friendlyfire=self:spellFriendlyFire(), talent=t, display={particle="bolt_fire"}} + local tg = {type="ball", range=self:getTalentRange(t), radius=1 + self:getTalentLevelRaw(t), friendlyfire=self:spellFriendlyFire(), 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, 28, 280)), function(self, tg, x, y, grids) -- GitLab