Skip to content
Snippets Groups Projects
Commit 7bd17209 authored by dg's avatar dg
Browse files

particllleesss

git-svn-id: http://svn.net-core.org/repos/t-engine4@214 51575b47-30f0-44d4-a5cc-537603b46e54
parent 4a28d0cc
No related branches found
No related tags found
No related merge requests found
......@@ -210,6 +210,7 @@ function _M:removeTemporaryValue(prop, id, noupdate)
elseif type(oldval) == "table" then
for k, e in pairs(oldval) do
self[prop][k] = self[prop][k] - e
print("delTmpValTable", prop, k, e)
end
-- elseif type(oldval) == "boolean" then
else
......
......@@ -547,12 +547,13 @@ function _M:particleEmitter(x, y, radius, def, fct, max)
if _M.particles_def[def] then
def, fct, max = _M.particles_def[def][1], _M.particles_def[def][2], _M.particles_def[def][3]
else
local odef = def
print("[PARTICLE] Loading from /data/gfx/particles/"..def..".lua")
local f = loadfile("/data/gfx/particles/"..def..".lua")
setfenv(f, {})
def, fct, max = f()
max = max or 1000
_M.particles_def[def] = { def, fct, max }
_M.particles_def[odef] = { def, fct, max }
end
end
......
......@@ -63,7 +63,8 @@ end
-- @param y target coords
-- @param damtype a damage type ID from the DamageType class
-- @param dam damage to be done
function _M:project(t, x, y, damtype, dam)
-- @param particles particles effect configuration, or nil
function _M:project(t, x, y, damtype, dam, particles)
if dam < 0 then return end
local typ = Target:getType(t)
......@@ -112,9 +113,15 @@ function _M:project(t, x, y, damtype, dam)
if px == self.x and py == self.y then
if t.friendlyfire then
DamageType:get(damtype).projector(self, px, py, damtype, dam)
if particles then
game.level.map:particleEmitter(px, py, 1, particles.type)
end
end
else
DamageType:get(damtype).projector(self, px, py, damtype, dam)
if particles then
game.level.map:particleEmitter(px, py, 1, particles.type)
end
end
end
end
......
......@@ -67,7 +67,7 @@ function _M:getDesc()
end
if self.encumber then
desc[#desc+1] = ("#67AD00#%0.2f Encumberance.", self.encumber)
desc[#desc+1] = ("#67AD00#%0.2f Encumberance."):format(self.encumber)
end
if self.combat then
......
......@@ -7,7 +7,7 @@ return {
size = { 3, 6 }, sizev = {0, 0}, sizea = {0, 0},
r = {0, 0}, rv = {0, 0}, ra = {0, 0},
g = {120, 170}, gv = {0, 0}, ga = {0, 0},
g = {170, 210}, gv = {0, 0}, ga = {-10, -50},
b = {200, 255}, bv = {0, 0}, ba = {10, 50},
a = {255, 255}, av = {0, 0}, aa = {0, 0},
......
return {
base = 1000,
angle = { 0, 360 }, anglev = { 2000, 4000 }, anglea = { 200, 600 },
life = { 5, 10 },
size = { 3, 6 }, sizev = {0, 0}, sizea = {0, 0},
r = {180, 220}, rv = {0, 0}, ra = {0, 0},
g = {240, 255}, gv = {0, 0}, ga = {0, 0},
b = {220, 240}, bv = {0, 0}, ba = {0, 0},
a = {255, 255}, av = {0, 0}, aa = {0, 0},
}, function(self)
self.nb = (self.nb or 0) + 1
if self.nb < 4 then
self.ps:emit(100)
end
end
return {
base = 1000,
angle = { 0, 360 }, anglev = { 2000, 4000 }, anglea = { 20, 60 },
life = { 5, 10 },
size = { 1, 3 }, sizev = {0, 0}, sizea = {0, 0},
r = {180, 220}, rv = {0, 10}, ra = {0, 0},
g = {0, 0}, gv = {0, 0}, ga = {0, 0},
b = {200, 255}, bv = {0, 10}, ba = {0, 0},
a = {255, 255}, av = {0, 0}, aa = {0, 0},
}, function(self)
self.nb = (self.nb or 0) + 1
if self.nb < 6 then
self.ps:emit(100)
end
end
......@@ -12,7 +12,7 @@ newTalent{
local tg = {type="beam", range=self:getTalentRange(t)}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:project(tg, x, y, DamageType.LIGHTNING, rng.avg(1, self:spellCrit(20 + self:combatSpellpower(0.8) * self:getTalentLevel(t)), 3))
self:project(tg, x, y, DamageType.LIGHTNING, rng.avg(1, self:spellCrit(20 + self:combatSpellpower(0.8) * self:getTalentLevel(t)), 3), {type="lightning"})
return true
end,
require = { stat = { mag=10 }, },
......
......@@ -13,7 +13,7 @@ newTalent{
if self:getTalentLevel(t) >= 3 then tg.type = "beam" end
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:project(tg, x, y, DamageType.ARCANE, self:spellCrit(20 + self:combatSpellpower(0.5) * self:getTalentLevel(t)))
self:project(tg, x, y, DamageType.ARCANE, self:spellCrit(20 + self:combatSpellpower(0.5) * self:getTalentLevel(t)), {type="manathrust"})
return true
end,
require = { stat = { mag=10 }, },
......
......@@ -12,8 +12,7 @@ newTalent{
local tg = {type="bolt", range=self:getTalentRange(t)}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:project(tg, x, y, DamageType.FIREBURN, self:spellCrit(25 + self:combatSpellpower(0.8) * self:getTalentLevel(t)))
game.level.map:particleEmitter(x, y, 1, "flame")
self:project(tg, x, y, DamageType.FIREBURN, self:spellCrit(25 + self:combatSpellpower(0.8) * self:getTalentLevel(t)), {type="flame"})
return true
end,
require = { stat = { mag=10 }, },
......@@ -58,7 +57,7 @@ newTalent{
local tg = {type="ball", range=self:getTalentRange(t), radius=1 + self:getTalentLevel(t)}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:project(tg, x, y, DamageType.FIRE, self:spellCrit(28 + self:combatSpellpower(0.4) * self:getTalentLevel(t)))
self:project(tg, x, y, DamageType.FIRE, self:spellCrit(28 + self:combatSpellpower(0.4) * self:getTalentLevel(t)), {type="flame"})
return true
end,
require = { stat = { mag=20 } },
......
......@@ -27,9 +27,8 @@ newTalent{
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:project(tg, x, y, DamageType.COLD, self:spellCrit(12 + self:combatSpellpower(0.25) * self:getTalentLevel(t)))
self:project(tg, x, y, DamageType.COLD, self:spellCrit(12 + self:combatSpellpower(0.25) * self:getTalentLevel(t)), {type="freeze"})
self:project(tg, x, y, DamageType.FREEZE, 3 + math.floor(self:getTalentLevel(t) / 3))
game.level.map:particleEmitter(x, y, 1, "freeze")
return true
end,
require = { stat = { mag=14 }, },
......
......@@ -26,7 +26,7 @@ static void getfield(lua_State *L, const char *key, int *min, int *max)
*max = (int)lua_tonumber(L, -1);
lua_pop(L, 1);
printf("%s :: %d %d\n", key, (int)*min, (int)*max);
// printf("%s :: %d %d\n", key, (int)*min, (int)*max);
lua_pop(L, 1);
}
......@@ -47,7 +47,7 @@ static int particles_new(lua_State *L)
ps->particles = calloc(nb, sizeof(particle_type));
printf("Making particle emitter with %d particles\n", ps->nb);
// printf("Making particle emitter with %d particles\n", ps->nb);
// Grab all parameters
lua_rawgeti(L, LUA_REGISTRYINDEX, p_ref);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment