Skip to content
Snippets Groups Projects
Commit 68af39e6 authored by dg's avatar dg
Browse files

plop

git-svn-id: http://svn.net-core.org/repos/t-engine4@1919 51575b47-30f0-44d4-a5cc-537603b46e54
parent 4c99e91f
No related branches found
No related tags found
No related merge requests found
......@@ -19,22 +19,42 @@
base_size = 32
return {
base = 1000,
return { generator = function()
local ad = rng.float(0, 360)
local dir = math.rad(ad)
angle = { 0, 360 }, anglev = { 2000, 5000 }, anglea = { 20, 60 },
if rng.chance(2) then
return {
x = math.cos(dir) * 2, y = math.sin(dir) * 2,
dir = dir, vel = rng.float(2, 5),
life = { 20, 30 },
size = { 3, 7 }, sizev = {0, 0}, sizea = {0, 0},
life = rng.range(20, 30),
size = rng.range(3, 7), sizev = 0, sizea = 0,
r = {200, 255}, rv = {0, 0}, ra = {0, 0},
g = {120, 170}, gv = {0, 0}, ga = {0, 0},
b = {0, 100}, bv = {0, 0}, ba = {0, 0},
a = {255, 255}, av = {0, 0}, aa = {0, 0},
r = rng.range(200, 255)/255, rv = 0, ra = 0,
g = rng.range(120, 170)/255, gv = 0, ga = 0,
b = rng.range(0, 100)/255, bv = 0, ba = 0,
a = 1, av = 0, aa = 0,
}
else
return {
x = math.cos(dir) * 5, y = math.sin(dir) * 5,
dir = dir, vel = rng.float(2, 5),
}, function(self)
life = rng.range(20, 30),
size = rng.range(3, 7), sizev = 0, sizea = 0,
r = rng.range(0, 40)/255, rv = 0, ra = 0,
g = rng.range(0, 40)/255, gv = 0.005, ga = 0.0005,
b = rng.range(0, 40)/255, bv = 0, ba = 0,
a = 1, av = 0, aa = 0.005,
}
end
end, },
function(self)
self.nb = (self.nb or 0) + 1
if self.nb < 6 then
self.ps:emit(100)
end
end
end,
600
......@@ -27,7 +27,7 @@ newTalentType{ no_silence=true, is_spell=true, type="corruption/scourge", name =
newTalentType{ no_silence=true, is_spell=true, type="corruption/reaving-combat", name = "reaving combat", description = "Enhanced melee combat through the dark arts." }
newTalentType{ no_silence=true, is_spell=true, type="corruption/blood", name = "blood", description = "Harness the power of blood, both your own and your foes." }
newTalentType{ no_silence=true, is_spell=true, type="corruption/blight", name = "blight", description = "Bring corruption and decay to all who oppose you." }
newTalentType{ no_silence=true, is_spell=true, type="corruption/soul", name = "soul", description = "Touch the very soul of your victims." }
newTalentType{ no_silence=true, is_spell=true, type="corruption/vim", name = "vim", description = "Touch the very essence of your victims." }
newTalentType{ no_silence=true, is_spell=true, type="corruption/shadowflame", name = "Shadowflame", description = "Harness the power of the demonic shadowflame." }
-- Generic requires for corruptions based on talent level
......@@ -82,3 +82,4 @@ load("/data/talents/corruptions/hexes.lua")
load("/data/talents/corruptions/blood.lua")
load("/data/talents/corruptions/blight.lua")
load("/data/talents/corruptions/shadowflame.lua")
load("/data/talents/corruptions/vim.lua")
-- ToME - Tales of Maj'Eyal
-- 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
newTalent{
name = "Soul Rot",
type = {"corruption/vim", 1},
points = 5,
cooldown = 4,
vim = 10,
range = 20,
proj_speed = 10,
requires_target = true,
action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_slime"}}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:projectile(tg, x, y, DamageType.BLIGHT, self:spellCrit(self:combatTalentSpellDamage(t, 20, 250), self:getTalentLevel(t) * 5), {type="slime"})
game:playSoundNear(self, "talents/slime")
return true
end,
info = function(self, t)
return ([[Projects a bolt of pure blight, doing %0.2f blight damage.
This spell has an improved critical strike chance of +%0.2f%%.
The damage will increase with Magic stat.]]):format(self:combatTalentSpellDamage(t, 20, 250), self:getTalentLevel(t) * 5)
end,
}
newTalent{
name = "Vimtouch",
type = {"corruption/vim", 2},
require = corrs_req2,
points = 5,
cooldown = 10,
vim = 30,
range = 20,
requires_target = true,
action = function(self, t)
local tg = {type="ball", radius=3, range=self:getTalentRange(t), talent=t}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
local dam = self:spellCrit(self:combatTalentSpellDamage(t, 28, 120))
local nb = self:getTalentLevelRaw(t)
self:project(tg, x, y, function(px, py)
local target = game.level.map(px, py, Map.ACTOR)
if not target then return end
DamageType:get(DamageType.BLIGHT).projector(self, px, py, DamageType.BLIGHT, dam)
local effs = {}
-- Go through all spell effects
for eff_id, p in pairs(target.tmp) do
local e = target.tempeffect_def[eff_id]
if e.type == "magical" or e.type == "physical" then
effs[#effs+1] = {"effect", eff_id}
end
end
-- Go through all sustained spells
for tid, act in pairs(target.sustain_talents) do
if act then
effs[#effs+1] = {"talent", tid}
end
end
for i = 1, nb do
if #effs == 0 then break end
local eff = rng.tableRemove(effs)
if eff[1] == "effect" then
target:removeEffect(eff[2])
else
target:forceUseTalent(eff[2], {ignore_energy=true})
end
end
end, nil, {type="slime"})
game:playSoundNear(self, "talents/slime")
return true
end,
info = function(self, t)
return ([[Project a corrupted blast of power that deals %0.2f blight damage and removes %d magical or physical effects from any creatures caught in the area.
The damage will increase with Magic stat.]]):format(damDesc(self, DamageType.BLIGHT, self:combatTalentSpellDamage(t, 10, 120)), self:getTalentLevelRaw(t))
end,
}
newTalent{
name = "Soul Drain",
type = {"corruption/vim", 3},
require = corrs_req3,
points = 5,
cooldown = 10,
vim = 12,
range = 20,
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:project(tg, x, y, function(px, py)
local target = game.level.map(px, py, Map.ACTOR)
if not target then return end
target:setEffect(target.EFF_CORROSIVE_WORM, 10, {src=self, dam=self:combatTalentSpellDamage(t, 10, 60), explosion=self:spellCrit(self:combatTalentSpellDamage(t, 10, 230))})
end)
game:playSoundNear(self, "talents/slime")
return true
end,
info = function(self, t)
return ([[Infect your target with a corrosive worm that deals %0.2f acid damage per turn.
If the target dies while the worm is inside it will explode doing %0.2f acid damage in a radius of 4.
The damage will increase with Magic stat.]]):
format(damDesc(self, DamageType.ACID, self:combatTalentSpellDamage(t, 10, 60)), damDesc(self, DamageType.ACID, self:combatTalentSpellDamage(t, 10, 230)))
end,
}
newTalent{
name = "??????",
type = {"corruption/vim", 4},
require = corrs_req4,
points = 5,
vim = 36,
cooldown = 30,
tactical = {
ATTACKAREA = 20,
},
action = function(self, t)
local duration = 5 + self:getTalentLevel(t)
local radius = 4
local dam = self:combatTalentSpellDamage(t, 12, 130)
-- Add a lasting map effect
game.level.map:addEffect(self,
self.x, self.y, duration,
DamageType.POISON, dam,
radius,
5, nil,
engine.Entity.new{alpha=100, display='', color_br=20, color_bg=220, color_bb=70},
function(e)
e.x = e.src.x
e.y = e.src.y
return true
end,
false
)
game:playSoundNear(self, "talents/slime")
return true
end,
info = function(self, t)
return ([[A furious poison storm rages around the caster, poisoning all creatures inside for doing %0.2f nature damage in 6 turns in a radius of 4 for %d turns.
Poisoning is cumulative, the longer they stay in they higher the poison they take.
The damage and duration will increase with the Magic stat]]):format(damDesc(self, DamageType.NATURE, self:combatTalentSpellDamage(t, 12, 130)), 5 + self:getTalentLevel(t))
end,
}
......@@ -893,29 +893,6 @@ newTalent{
end,
}
newTalent{
name = "Soul Rot",
type = {"corruption/other", 1},
points = 5,
cooldown = 3,
vim = 10,
range = 20,
proj_speed = 10,
requires_target = true,
action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_slime"}}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:projectile(tg, x, y, DamageType.BLIGHT, self:spellCrit(self:combatTalentSpellDamage(t, 20, 250)), {type="slime"})
game:playSoundNear(self, "talents/slime")
return true
end,
info = function(self, t)
return ([[Projects a bolt of pure blight, doing %0.2f blight damage.
The damage will increase with Magic stat.]]):format(self:combatTalentSpellDamage(t, 20, 250))
end,
}
newTalent{
name = "Blightzone",
type = {"corruption/other", 1},
......
No preview for this file type
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