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

yay

git-svn-id: http://svn.net-core.org/repos/t-engine4@5714 51575b47-30f0-44d4-a5cc-537603b46e54
parent 6da3d71d
No related branches found
No related tags found
No related merge requests found
......@@ -2366,3 +2366,33 @@ newDamageType{
end
end,
}
-- Bouncy slime!
newDamageType{
name = "bouncing slime", type = "BOUNCE_SLIME",
projector = function(src, x, y, type, dam, tmp)
local target = game.level.map(x, y, Map.ACTOR)
if target then
local realdam = DamageType:get(DamageType.SLIME).projector(src, x, y, DamageType.SLIME, dam.dam)
if dam.nb > 0 then
dam.done = dam.done or {}
dam.done[target.uid] = true
dam.nb = dam.nb - 1
local list = {}
src:project({type="ball", selffire=false, x=x, y=y, radius=6, range=0}, x, y, function(bx, by)
local actor = game.level.map(bx, by, Map.ACTOR)
if actor and not dam.done[actor.uid] and src:reactionToward(actor) < 0 then
print("[BounceSlime] found possible actor", actor.name, bx, by, "distance", core.fov.distance(x, y, bx, by))
list[#list+1] = actor
end
end)
if #list > 0 then
local st = rng.table(list)
src:projectile({type="bolt", range=6, x=x, y=y, display={particle="bolt_slime"}}, st.x, st.y, DamageType.BOUNCE_SLIME, dam, {type="slime"})
end
end
return realdam
end
end,
}
......@@ -26,7 +26,7 @@ newTalentType{ allow_random=true, is_nature=true, type="wild-gift/summon-distanc
newTalentType{ allow_random=true, is_nature=true, type="wild-gift/summon-utility", name = "summoning (utility)", description = "The art of calling creatures to your aid." }
newTalentType{ allow_random=true, is_nature=true, type="wild-gift/summon-augmentation", name = "summoning (augmentation)", description = "The art of calling creatures to your aid." }
newTalentType{ allow_random=true, is_nature=true, type="wild-gift/summon-advanced", name = "summoning (advanced)", min_lev = 10, description = "The art of calling creatures to your aid." }
newTalentType{ allow_random=true, is_nature=true, type="wild-gift/slime", name = "slime aspect", generic = true, description = "Through dedicated consumption of slime mold juice, you have gained an affinity with slime molds." }
newTalentType{ allow_random=true, is_nature=true, type="wild-gift/slime", name = "slime aspect", description = "Through dedicated consumption of slime mold juice, you have gained an affinity with slime molds." }
newTalentType{ allow_random=true, is_nature=true, type="wild-gift/fungus", name = "fungus", generic = true, description = "By covering yourself in fungus you better your healing." }
newTalentType{ allow_random=true, is_nature=true, type="wild-gift/sand-drake", name = "sand drake aspect", description = "Take on the defining aspects of a Sand Drake." }
newTalentType{ allow_random=true, is_nature=true, type="wild-gift/fire-drake", name = "fire drake aspect", description = "Take on the defining aspects of a Fire Drake." }
......
......@@ -67,7 +67,7 @@ newTalent{
newTalent{
name = "Acid Splash",
type = {"wild-gift/mucus", 2},
require = gifts_req4,
require = gifts_req2,
points = 5,
equilibrium = 10,
cooldown = 10,
......@@ -83,7 +83,7 @@ newTalent{
if not x or not y then return nil end
local grids, px, py = self:project(tg, x, y, DamageType.ACID, self:mindCrit(t.getDamage(self, t)))
self:callTalent(self.T_MUCUS, nil, px, py, tg.radius)
if self:knowTalent(self.T_MUCUS) then self:callTalent(self.T_MUCUS, nil, px, py, tg.radius) end
game.level.map:particleEmitter(px, py, tg.radius, "acidflash", {radius=tg.radius, tx=px, ty=py})
local tgts = {}
......@@ -154,7 +154,7 @@ newTalent{ short_name = "MUCUS_OOZE_SPIT",
newTalent{
name = "Living Mucus",
type = {"wild-gift/mucus", 3},
require = gifts_req2,
require = gifts_req3,
points = 5,
mode = "passive",
getMax = function(self, t) return math.floor(self:getCun() / 10) end,
......@@ -242,7 +242,7 @@ newTalent{
newTalent{
name = "Oozewalk",
type = {"wild-gift/mucus", 4},
require = gifts_req3,
require = gifts_req4,
points = 5,
cooldown = 7,
equilibrium = 10,
......
......@@ -24,24 +24,26 @@ newTalent{
points = 5,
random_ego = "attack",
equilibrium = 4,
cooldown = 30,
cooldown = 5,
tactical = { ATTACK = { NATURE = 2} },
range = 10,
direct_hit = true,
proj_speed = 8,
requires_target = true,
action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t), display={particle="bolt_arcane"}}
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.SLIME, self:mindCrit(self:combatTalentStatDamage(t, "dex", 30, 290)), {type="slime"})
self:projectile(tg, x, y, DamageType.BOUNCE_SLIME, {nb=math.ceil(self:getTalentLevel(t)), dam=self:mindCrit(self:combatTalentMindDamage(t, 30, 290))}, {type="slime"})
game:playSoundNear(self, "talents/slime")
return true
end,
info = function(self, t)
return ([[Spit slime at your target doing %0.2f nature damage and slowing it down by 30%% for 3 turns.
The damage will increase with the Dexterity stat]]):format(damDesc(self, DamageType.NATURE, self:combatTalentStatDamage(t, "dex", 30, 290)))
The bolt can bounce to a nearby foe %d times.
The damage will increase with Mindpower]]):format(damDesc(self, DamageType.NATURE, self:combatTalentMindDamage(t, 30, 290)), math.ceil(self:getTalentLevel(t)))
end,
}
newTalent{
name = "Poisonous Spores",
type = {"wild-gift/slime", 2},
......@@ -51,22 +53,30 @@ newTalent{
message = "@Source@ releases poisonous spores at @target@.",
equilibrium = 2,
cooldown = 10,
range = 1,
tactical = { ATTACK = { NATURE = 1, poison = 1 } },
range = 10,
tactical = { ATTACK = { NATURE = 3 } },
radius = 1,
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
if not x or not y or not target then return nil end
if core.fov.distance(self.x, self.y, x, y) > 1 then return nil end
self.combat_apr = self.combat_apr + 1000
self:attackTarget(target, DamageType.POISON, 1.5 + self:getTalentLevel(t) / 4, true)
self.combat_apr = self.combat_apr - 1000
local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), friendlyfire=false}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
local dam = self:combatTalentMindDamage(t, 40, 900)
self:project(tg, x, y, function(px, py)
local target = game.level.map(px, py, Map.ACTOR)
if target and self:reactionToward(target) < 0 and target:canBe("poison") then
local poison = rng.table{target.EFF_SPYDRIC_POISON, target.EFF_INSIDIOUS_POISON, target.EFF_CRIPPLING_POISON, target.EFF_NUMBING_POISON}
target:setEffect(poison, 10, {src=self, power=dam/10, reduce=10+self:getTalentLevel(t)*2, fail=math.ceil(5+self:getTalentLevel(t)), heal_factor=20+self:getTalentLevel(t)*4})
end
end, 0, {type="slime"})
game:playSoundNear(self, "talents/slime")
return true
end,
info = function(self, t)
return ([[Releases poisonous spores at the target bypassing his armor and doing %d%% weapon damage.]]):format(damDesc(self, DamageType.POISON, 100 * (1.5 + self:getTalentLevel(t) / 4)))
return ([[Releases poisonous spores at an area of radius 1, infecting the foes inside with a random poison doing %0.2f nature damage over 10 turns.]]):format(damDesc(self, DamageType.NATURE, self:combatTalentMindDamage(t, 40, 900)))
end,
}
......
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