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

tactical info added to wild gifts and psionics

git-svn-id: http://svn.net-core.org/repos/t-engine4@2430 51575b47-30f0-44d4-a5cc-537603b46e54
parent bb74d9b1
No related branches found
No related tags found
No related merge requests found
Showing
with 115 additions and 130 deletions
......@@ -121,6 +121,11 @@ newAI("use_tactical", function(self)
want.defend = 1 + need_heal / 2 + nb_foes * 0.5
end
-- Need buffs
if avail.buff and want.attack and want.attack > 0 then
want.buff = math.max(0.01, want.attack - 1)
end
if avail.disable then want.disable = 2 end
if avail.attack then want.attack = 1 end
if avail.attackarea then want.attackarea = (want.attack or 0) + nb_foes * 0.6 end
......
......@@ -55,6 +55,7 @@ newTalent{
points = 5,
equilibrium = 20,
cooldown = 10,
tactical = { DISABLE = 4 },
range = function(self, t) return 4 + self:getTalentLevel(t) * 1.5 end,
action = function(self, t)
local tg = {type="ball", range=0, radius=self:getTalentRange(t), friendlyfire=true, talent=t}
......@@ -77,6 +78,7 @@ newTalent{
sustain_equilibrium = 30,
cooldown = 20,
range = 10,
tactical = { DEFEND = 2 },
on_damage = function(self, t, damtype, dam)
if not DamageType:get(damtype).antimagic_resolve then return dam end
......@@ -120,6 +122,7 @@ newTalent{
equilibrium = 10,
cooldown = 10,
range = 10,
tactical = { ATTACK = 3 },
action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
local x, y = self:getTarget(tg)
......
......@@ -145,6 +145,7 @@ newTalent{
equilibrium = 20,
cooldown = 50,
range = 10,
tactical = { BUFF = 2 },
action = function(self, t)
local nb = math.ceil(self:getTalentLevel(t) + 2)
local tids = {}
......
......@@ -28,9 +28,7 @@ newTalent{
equilibrium = 3,
cooldown = 7,
range = 1,
tactical = {
ATTACK = 10,
},
tactical = { ATTACK = 2 },
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
......@@ -54,9 +52,7 @@ newTalent{
cooldown = 10,
sustain_equilibrium = 30,
range = 10,
tactical = {
DEFEND = 10,
},
tactical = { ATTACK = 2, DEFEND = 2 },
activate = function(self, t)
return {
onhit = self:addTemporaryValue("on_melee_hit", {[DamageType.COLD]=5 * self:getTalentLevel(t)}),
......@@ -82,6 +78,7 @@ newTalent{
equilibrium = 10,
cooldown = 30,
range = 10,
tactical = { DISABLE = 2 },
requires_target = true,
action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t), nolock=true, talent=t}
......@@ -131,9 +128,7 @@ newTalent{
equilibrium = 12,
cooldown = 12,
message = "@Source@ breathes ice!",
tactical = {
ATTACKAREA = 10,
},
tactical = { ATTACKAREA = 2, DISABLE = 1 },
range = function(self, t) return 4 + self:getTalentLevelRaw(t) end,
direct_hit = true,
requires_target = true,
......
......@@ -27,9 +27,7 @@ newTalent{
equilibrium = 3,
cooldown = 20,
range = 5,
tactical = {
DEFEND = 10,
},
tactical = { DEFEND = 1, DISABLE = 3 },
action = function(self, t)
local tg = {type="ball", range=0, radius=2 + self:getTalentLevelRaw(t), friendlyfire=false, talent=t}
self:project(tg, self.x, self.y, DamageType.CONFUSION, {dur=3, dam=40 + 6 * self:getTalentLevel(t)}, {type="flame"})
......@@ -50,9 +48,7 @@ newTalent{
cooldown = 10,
range = 5,
direct_hit = true,
tactical = {
DEFEND = 10,
},
tactical = { DEFEND = 1, DISABLE = 2, ESCAPE = 1 },
requires_target = true,
action = function(self, t)
local tg = {type="cone", range=0, radius=4 + self:getTalentLevelRaw(t), friendlyfire=false, talent=t}
......@@ -76,9 +72,7 @@ newTalent{
random_ego = "attack",
equilibrium = 10,
cooldown = 35,
tactical = {
ATTACKAREA = 10,
},
tactical = { ATTACKAREA = 2 },
range = 10,
direct_hit = true,
requires_target = true,
......@@ -117,9 +111,7 @@ newTalent{
equilibrium = 12,
cooldown = 12,
message = "@Source@ breathes fire!",
tactical = {
ATTACKAREA = 10,
},
tactical = { ATTACKAREA = 2 },
range = function(self, t) return 4 + self:getTalentLevelRaw(t) end,
direct_hit = true,
requires_target = true,
......
......@@ -26,9 +26,7 @@ newTalent{
cooldown = 10,
range = 1,
message = "@Source@ tries to swallow @target@!",
tactical = {
ATTACK = 10,
},
tactical = { ATTACK = 0.5 },
requires_target = true,
no_npc_use = true,
action = function(self, t)
......@@ -69,9 +67,7 @@ newTalent{
message = "@Source@ shakes the ground!",
equilibrium = 4,
cooldown = 30,
tactical = {
ATTACKAREA = 10,
},
tactical = { ATTACKAREA = 2, DISABLE = 2 },
range = 10,
no_npc_use = true,
action = function(self, t)
......@@ -94,6 +90,7 @@ newTalent{
equilibrium = 50,
cooldown = 30,
range = 10,
tactical = { CLOSEIN = 0.5, ESCAPE = 0.5 },
action = function(self, t)
self:setEffect(self.EFF_BURROW, 5 + self:getTalentLevel(t) * 3, {})
return true
......@@ -112,9 +109,7 @@ newTalent{
equilibrium = 12,
cooldown = 12,
message = "@Source@ breathes sand!",
tactical = {
ATTACKAREA = 10,
},
tactical = { ATTACKAREA = 2, DISABLE = 2 },
range = function(self, t) return 4 + self:getTalentLevelRaw(t) end,
direct_hit = true,
requires_target = true,
......
......@@ -27,9 +27,7 @@ newTalent{
equilibrium = 2,
cooldown = 10,
range = 1,
tactical = {
ATTACK = 10,
},
tactical = { ATTACK = 2 },
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
......@@ -57,9 +55,7 @@ newTalent{
sustain_equilibrium = 25,
cooldown = 10,
range = 1,
tactical = {
DEFEND = 10,
},
tactical = { DEFEND = 1 },
activate = function(self, t)
game:playSoundNear(self, "talents/slime")
local power = 10 + 5 * self:getTalentLevel(t)
......@@ -84,9 +80,7 @@ newTalent{
random_ego = "attack",
equilibrium = 4,
cooldown = 30,
tactical = {
ATTACK = 10,
},
tactical = { ATTACK = 2 },
range = 10,
direct_hit = true,
proj_speed = 8,
......@@ -112,9 +106,7 @@ newTalent{
random_ego = "utility",
equilibrium = 5,
cooldown = 20,
tactical = {
MOVEMENT = 10,
},
tactical = { CLOSEIN = 2 },
requires_target = true,
range = 10,
action = function(self, t)
......
......@@ -27,9 +27,7 @@ newTalent{
equilibrium = 10,
cooldown = 26,
range = 10,
tactical = {
ATTACK = 10,
},
tactical = { CLOSEIN = 2, ESCAPE = 2 },
requires_target = true,
action = function(self, t)
self:setEffect(self.EFF_LIGHTNING_SPEED, math.ceil(6 + self:getTalentLevel(t) * 1.2), {power=400 + self:getTalentLevel(t) * 70})
......@@ -50,9 +48,7 @@ newTalent{
equilibrium = 20,
cooldown = 20,
range = 1,
tactical = {
DEFEND = 10,
},
tactical = { ATTACKAREA = 5 },
requires_target = true,
action = function(self, t)
local tg = {type="ball", radius=1, friendlyfire=false, talent=t}
......@@ -86,6 +82,7 @@ newTalent{
equilibrium = 14,
cooldown = 15,
proj_speed = 2, -- This is purely indicative
tactical = { ATTACK = 2, DISABLE = 2 },
range = function(self, t) return 4 + math.floor(self:getTalentLevel(t)) end,
requires_target = true,
action = function(self, t)
......@@ -159,9 +156,7 @@ newTalent{
equilibrium = 12,
cooldown = 12,
message = "@Source@ breathes lightning!",
tactical = {
ATTACKAREA = 10,
},
tactical = { ATTACKAREA = 2 },
range = function(self, t) return 4 + self:getTalentLevelRaw(t) end,
direct_hit = true,
requires_target = true,
......
......@@ -25,6 +25,7 @@ newTalent{
equilibrium = 5,
cooldown = 15,
range = 10,
np_npc_use = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t, first_target="friend"}
local tx, ty, target = self:getTarget(tg)
......@@ -47,6 +48,7 @@ newTalent{
cooldown = 25,
range = 10,
requires_target = true,
np_npc_use = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t, first_target="friend"}
local tx, ty, target = self:getTarget(tg)
......@@ -96,6 +98,7 @@ newTalent{
cooldown = 25,
range = 10,
requires_target = true,
np_npc_use = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t}
local tx, ty, target = self:getTarget(tg)
......
......@@ -25,6 +25,7 @@ newTalent{ short_name = "RITCH_FLAMESPITTER_BOLT",
range = 10,
reflectable = true,
requires_target = true,
tactical = { ATTACK = 2 },
action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
local x, y = self:getTarget(tg)
......@@ -47,9 +48,7 @@ newTalent{
equilibrium = 10,
cooldown = 8,
message = "@Source@ breathes acid!",
tactical = {
ATTACKAREA = 10,
},
tactical = { ATTACKAREA = 2 },
range = 5,
requires_target = true,
action = function(self, t)
......@@ -75,9 +74,7 @@ newTalent{
equilibrium = 10,
cooldown = 8,
message = "@Source@ breathes lightning!",
tactical = {
ATTACKAREA = 10,
},
tactical = { ATTACKAREA = 2 },
range = 5,
requires_target = true,
action = function(self, t)
......@@ -108,9 +105,7 @@ newTalent{
equilibrium = 10,
cooldown = 8,
message = "@Source@ breathes poison!",
tactical = {
ATTACKAREA = 10,
},
tactical = { ATTACKAREA = 2 },
range = 5,
requires_target = true,
action = function(self, t)
......@@ -139,6 +134,7 @@ newTalent{
cooldown = 10,
range = 10,
requires_target = true,
tactical = { ATTACK = 2 },
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
if checkMaxSummon(self) then return end
......@@ -212,6 +208,7 @@ newTalent{
cooldown = 10,
range = 10,
requires_target = true,
tactical = { ATTACK = 2 },
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
if checkMaxSummon(self) then return end
......@@ -285,6 +282,7 @@ newTalent{
cooldown = 10,
range = 10,
requires_target = true,
tactical = { ATTACK = 1, DISABLE = 2 },
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
if checkMaxSummon(self) then return end
......@@ -360,6 +358,7 @@ newTalent{
cooldown = 10,
range = 10,
requires_target = true,
tactical = { ATTACK = 2, DISABLE = 2 },
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
if checkMaxSummon(self) then return end
......
......@@ -28,6 +28,7 @@ newTalent{
cooldown = 15,
range = 10,
requires_target = true,
tactical = { ATTACK = 2 },
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
if checkMaxSummon(self) then return end
......@@ -98,6 +99,7 @@ newTalent{
cooldown = 10,
range = 10,
requires_target = true,
tactical = { ATTACK = 1 },
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
if checkMaxSummon(self) then return end
......@@ -169,6 +171,7 @@ newTalent{
cooldown = 15,
range = 10,
requires_target = true,
tactical = { ATTACK = 2, DISABLE = 2 },
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
if checkMaxSummon(self) then return end
......@@ -244,6 +247,7 @@ newTalent{
equilibrium = 15,
cooldown = 20,
range = 10,
tactical = { ATTACK = 3, DISABLE = 1 },
requires_target = true,
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
......
......@@ -17,25 +17,13 @@
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
newTalent{
name = "Summon End",
type = {"wild-gift/other",1},
points = 1,
action = function(self, t)
self:die()
return true
end,
info = function(self, t)
return ([[Cancels the control of your summon, returning your will into your body and destroying the summon.]])
end,
}
newTalent{
name = "Taunt",
type = {"technique/other",1},
points = 1,
cooldown = 5,
requires_target = false,
tactical = { PROTECT = 2 },
range = function(self, t) return 3 + self:getTalentLevelRaw(t) end,
action = function(self, t)
local tg = {type="ball", range=0, radius=self:getTalentRange(t), friendlyfire=false, talent=t}
......@@ -58,6 +46,7 @@ newTalent{
type = {"technique/other",1},
points = 5,
cooldown = 10,
tactical = { DEFEND = 2 },
action = function(self, t)
local dur = math.ceil(4 + self:getTalentLevel(t) * 0.7)
local power = 34 + self:getTalentLevel(t) * 7
......@@ -76,6 +65,7 @@ newTalent{ short_name="SPIDER_WEB",
equilibrium = 5,
cooldown = 3,
range=7,
tactical = { DISABLE = 2 },
requires_target = true,
action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
......@@ -94,56 +84,6 @@ newTalent{ short_name="SPIDER_WEB",
end,
}
newTalent{ short_name="HEAL_OTHER",
name = "Heal Other",
type = {"wild-gift/other",1},
points = 5,
equilibrium = 5,
cooldown = 4,
range=7,
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(tx, ty)
local target = game.level.map(tx, ty, Map.ACTOR)
if target then
target:heal(15 + self:getMag(40) * self:getTalentLevel(t))
end
end)
return true
end,
info = function(self, t)
return ([[Heal your target for %d life.]]):format(15 + self:getMag(40) * self:getTalentLevel(t))
end,
}
newTalent{ short_name="REGENERATE_OTHER",
name = "Regenerate Other",
type = {"wild-gift/other",1},
points = 5,
equilibrium = 5,
cooldown = 10,
range=7,
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(tx, ty)
local target = game.level.map(tx, ty, Map.ACTOR)
if target then
target:setEffect(target.EFF_REGENERATION, 10, {power=(15 + self:getMag(40) * self:getTalentLevel(t)) / 10})
end
end)
return true
end,
info = function(self, t)
return ([[Regenerate your target for %d life over 10 turns.]]):format(15 + self:getMag(40) * self:getTalentLevel(t))
end,
}
newTalent{
name = "Turtle",
type = {"wild-gift/summon-utility", 1},
......@@ -155,6 +95,7 @@ newTalent{
cooldown = 10,
range = 10,
requires_target = true,
tactical = { DEFEND = 2, PROTECT = 2 },
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
if checkMaxSummon(self) then return end
......@@ -225,6 +166,7 @@ newTalent{
equilibrium = 5,
cooldown = 10,
range = 10,
tactical = { ATTACK = 1, DISABLE = 2 },
requires_target = true,
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
......@@ -296,6 +238,7 @@ newTalent{
cooldown = 18,
range = function(self, t) return 4 + self:getTalentLevel(t) end,
requires_target = true,
tactical = { DISABLE = 0.2 },
action = function(self, t)
local dur = math.floor(5 + self:getTalentLevel(t))
local tg = {type="ball", range=0, radius=self:getTalentRange(t), friendlyfire=true, talent=t}
......
......@@ -178,6 +178,7 @@ newTalent{
type = {"base/race", 1},
no_energy = true,
cooldown = 50,
tactical = { HEAL = 2 },
action = function(self, t)
self:setEffect(self.EFF_REGENERATION, 10, {power=5 + self:getWil() * 0.5})
return true
......@@ -195,6 +196,7 @@ newTalent{
type = {"base/race", 1},
no_energy = true,
cooldown = 50,
tactical = { DEFEND = 1 },
action = function(self, t)
local power = 0.1 + self:getDex() / 210
self:setEffect(self.EFF_SPEED, 8, {power=1 - 1 / (1 + power)})
......@@ -213,6 +215,7 @@ newTalent{
type = {"base/race", 1},
no_energy = true,
cooldown = 50,
tactical = { DEFEND = 2 },
action = function(self, t)
self:setEffect(self.EFF_DWARVEN_RESILIENCE, 8, {
armor=5 + self:getCon() / 5,
......@@ -234,6 +237,7 @@ newTalent{
type = {"base/race", 1},
no_energy = true,
cooldown = 50,
tactical = { ATTACK = 2 },
action = function(self, t)
self:setEffect(self.EFF_HALFLING_LUCK, 5, {
physical=10 + self:getCun() / 2,
......@@ -254,6 +258,7 @@ newTalent{
type = {"base/race", 1},
no_energy = true,
cooldown = 50,
tactical = { ATTACK = 1, DEFEND = 1 },
action = function(self, t)
self:setEffect(self.EFF_ETERNAL_WRATH, 5, {power=7 + self:getWil(10)})
return true
......@@ -271,6 +276,7 @@ newTalent{
type = {"base/race", 1},
no_energy = true,
cooldown = 50,
tactical = { ATTACK = 2 },
action = function(self, t)
self:setEffect(self.EFF_ORC_FURY, 5, {power=10 + self:getWil(20)})
return true
......
......@@ -34,6 +34,7 @@ newTalent{
type = {"other/other", 1},
cooldown = 3,
range = 10,
tactical = { ATTACK = 3 },
action = function(self, t)
if not self.can_multiply or self.can_multiply <= 0 then print("no more multiply") return nil end
......@@ -70,6 +71,7 @@ newTalent{
cooldown = 5,
range = 1,
requires_target = true,
tactical = { ATTACK = 2 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
......@@ -92,6 +94,7 @@ newTalent{
message = "@Source@ crawls acid onto @target@.",
cooldown = 2,
range = 1,
tactical = { ATTACK = 2 },
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
......@@ -115,6 +118,7 @@ newTalent{
message = "@Source@ releases blinding spores at @target@.",
cooldown = 2,
range = 1,
tactical = { ATTACK = 2 },
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
......@@ -139,6 +143,7 @@ newTalent{
message = "@Source@ releases poisonous spores at @target@.",
cooldown = 2,
range = 1,
tactical = { ATTACK = 2 },
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
......@@ -161,6 +166,7 @@ newTalent{
cooldown = 6,
stamina = 8,
require = { stat = { str=12 }, },
tactical = { ATTACK = 1, DISABLE = 2 },
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
......@@ -193,6 +199,7 @@ newTalent{
stamina = 8,
require = { stat = { str=12 }, },
requires_target = true,
tactical = { ATTACK = 1, DISABLE = 2 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
......@@ -222,6 +229,7 @@ newTalent{
stamina = 8,
require = { stat = { str=12 }, },
requires_target = true,
tactical = { ATTACK = 2 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
......@@ -253,6 +261,7 @@ newTalent{
stamina = 8,
require = { stat = { str=12 }, },
requires_target = true,
tactical = { ATTACK = 1, DISABLE = 2 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
......@@ -284,6 +293,7 @@ newTalent{
message = "@Source@ bites poison into @target@.",
cooldown = 5,
range = 1,
tactical = { ATTACK = 2 },
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
......@@ -304,6 +314,7 @@ newTalent{
range = 10,
equilibrium = 18,
direct_hit = true,
tactical = { ATTACK = 2 },
action = function(self, t)
if not self:canBe("summon") then game.logPlayer(self, "You can not summon, you are suppressed!") return end
......@@ -357,6 +368,7 @@ newTalent{
cooldown = 8,
message = "@Source@ diseases @target@.",
requires_target = true,
tactical = { ATTACK = 2, DISABLE = 1 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
......@@ -386,6 +398,7 @@ newTalent{
points = 5,
cooldown = 8,
message = "@Source@ diseases @target@.",
tactical = { ATTACK = 2, DISABLE = 1 },
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
......@@ -417,6 +430,7 @@ newTalent{
cooldown = 8,
message = "@Source@ diseases @target@.",
requires_target = true,
tactical = { ATTACK = 2, DISABLE = 1 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
......@@ -449,6 +463,7 @@ newTalent{
range = 10,
direct_hit = true,
requires_target = true,
tactical = { DISABLE = 3 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t}
local x, y = self:getTarget(tg)
......@@ -472,6 +487,7 @@ newTalent{
},
range = 10,
reflectable = true,
tactical = { ATACK = 1 },
requires_target = true,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t}
......@@ -500,6 +516,7 @@ newTalent{
direct_hit = true,
reflectable = true,
requires_target = true,
tactical = { DISABLE = 2, ATTACK = 1 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t}
local x, y = self:getTarget(tg)
......@@ -522,6 +539,7 @@ newTalent{
stamina = 8,
require = { stat = { str=12 }, },
requires_target = true,
tactical = { DISABLE = 2, ATTACK = 1 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t)}
local x, y, target = self:getTarget(tg)
......@@ -559,6 +577,7 @@ newTalent{
range = 4,
direct_hit = true,
requires_target = true,
tactical = { DISABLE = 2 },
action = function(self, t)
local tg = {type="cone", range=0, radius=4 + self:getTalentLevelRaw(t), friendlyfire=false, talent=t}
local x, y = self:getTarget(tg)
......@@ -583,6 +602,7 @@ newTalent{
},
range = 10,
requires_target = true,
tactical = { ATTACK = 2 },
action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t)}
local x, y = self:getTarget(tg)
......@@ -608,6 +628,7 @@ newTalent{
range = 10,
direct_hit = true,
requires_target = true,
tactical = { ATTACK = 2 },
action = function(self, t)
local tg = {type="ball", range=self:getTalentRange(t), radius=2}
local x, y = self:getTarget(tg)
......@@ -634,6 +655,7 @@ newTalent{
},
range = 10,
requires_target = true,
tactical = { DISABLE = 2 },
action = function(self, t)
local dur = 2 + self:getTalentLevel(t)
local trap = mod.class.Trap.new{
......@@ -675,6 +697,7 @@ newTalent{
},
range = 10,
direct_hit = true,
tactical = { DISABLE = 3 },
requires_target = true,
action = function(self, t)
local tg = {type="ball", range=0, radius=2 + self:getTalentLevelRaw(t) / 1.5, talent=t}
......@@ -707,6 +730,7 @@ newTalent{
},
range = 10,
direct_hit = true,
tactical = { DISABLE = 3, ATTACK = 2, ESCAPE = 2 },
requires_target = true,
action = function(self, t)
local tg = {type="ball", range=self:getTalentRange(t), radius=1, talent=t}
......@@ -733,6 +757,7 @@ newTalent{
},
message = "@Source@ howls",
range = 10,
tactical = { ATTACK = 3 },
direct_hit = true,
action = function(self, t)
local rad = self:getTalentLevel(t) + 5
......@@ -768,6 +793,7 @@ newTalent{
message = "@Source@ shrieks.",
range = 10,
direct_hit = true,
tactical = { ATTACK = 3 },
action = function(self, t)
local rad = self:getTalentLevel(t) + 5
for i = self.x - rad, self.x + rad do for j = self.y - rad, self.y + rad do if game.level.map:isBound(i, j) then
......@@ -798,6 +824,7 @@ newTalent{
cooldown = 6,
stamina = 12,
requires_target = true,
tactical = { ATTACK = 1, DISABLE = 2 },
action = function(self, t)
local weapon = self:hasTwoHandedWeapon()
if not weapon then
......@@ -836,6 +863,7 @@ newTalent{
range = 7,
direct_hit = true,
requires_target = true,
tactical = { ATTACK = 3 },
action = function(self, t)
local tg = {type="beam", range=self:getTalentRange(t), talent=t}
local x, y = self:getTarget(tg)
......@@ -859,6 +887,7 @@ newTalent{
range = 7,
direct_hit = true,
requires_target = true,
tactical = { DISABLE = 3 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t}
local x, y = self:getTarget(tg)
......@@ -881,6 +910,7 @@ newTalent{
range = 7,
direct_hit = true,
requires_target = true,
tactical = { ATTACK = 3 },
action = function(self, t)
local tg = {type="beam", range=self:getTalentRange(t), talent=t}
local x, y = self:getTarget(tg)
......@@ -904,6 +934,7 @@ newTalent{
range = 10,
direct_hit = true,
requires_target = true,
tactical = { ATTACK = 2 },
action = function(self, t)
local duration = self:getTalentLevel(t) + 2
local radius = 4
......@@ -936,6 +967,7 @@ newTalent{
cooldown = 1,
range = 10,
direct_hit = true,
tactical = { ATTACK = 3 },
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t}
local tx, ty = self:getTarget(tg)
......@@ -978,6 +1010,7 @@ newTalent{
cooldown = 1,
range = 1,
requires_target = true,
tactical = { ATTACK = 1 },
action = function(self, t)
local tg = {type="bolt", range=1}
local x, y, target = self:getTarget(tg)
......@@ -1003,6 +1036,7 @@ newTalent{
range = 20,
proj_speed = 2,
requires_target = true,
tactical = { ATTACK = 2 },
action = function(self, t)
local tg = {type = "bolt", range = 20, talent = t}
local x, y = self:getTarget(tg)
......
......@@ -54,6 +54,7 @@ newTalent{
return 20 - 2*(self:getTalentLevelRaw(self.T_ABSORPTION_MASTERY) or 0)
end,
range = 10,
tactical = { DEFEND = 2 },
--called when damage gets absorbed by kinetic shield
ks_on_damage = function(self, t, damtype, dam)
......@@ -145,6 +146,7 @@ newTalent{
return 20 - 2*(self:getTalentLevelRaw(self.T_ABSORPTION_MASTERY) or 0)
end,
range = 10,
tactical = { DEFEND = 2 },
--called when damage gets absorbed by thermal shield
ts_on_damage = function(self, t, damtype, dam)
......@@ -233,6 +235,7 @@ newTalent{
return 20 - 2*(self:getTalentLevelRaw(self.T_ABSORPTION_MASTERY) or 0)
end,
range = 10,
tactical = { DEFEND = 2 },
--called when damage gets absorbed by charged shield
cs_on_damage = function(self, t, damtype, dam)
......
......@@ -21,7 +21,7 @@ local function getGemLevel(self)
local gem_level = 0
if not self:getInven("PSIONIC_FOCUS")[1] then return gem_level end
local tk_item = self:getInven("PSIONIC_FOCUS")[1]
if tk_item.type == "gem" then
if tk_item.type == "gem" then
gem_level = tk_item.material_level
else
gem_level = 0
......@@ -36,6 +36,7 @@ newTalent{
cooldown = 40,
psi = 20,
points = 5,
tactical = { CLOSEIN = 2 },
range = function(self, t)
local r = 2+self:getTalentLevelRaw(t)
local gem_level = getGemLevel(self)
......@@ -98,6 +99,7 @@ newTalent{
cooldown = 15,
psi = 10,
points = 5,
tactical = { CLOSEIN = 2 },
range = function(self, t)
local r = 2 + self:getTalentLevelRaw(t)
local gem_level = getGemLevel(self)
......@@ -136,9 +138,7 @@ newTalent{
random_ego = "attack",
psi = 60,
cooldown = 10,
tactical = {
ATTACK = 10,
},
tactical = { CLOSEIN = 2, ATTACK = 1 },
range = function(self, t)
local r = 2 + self:getTalentLevel(t)
local gem_level = getGemLevel(self)
......@@ -149,8 +149,14 @@ newTalent{
--range = function(self, t) return 3+self:getTalentLevel(t)+self:getWil(4) end,
direct_hit = true,
requires_target = true,
on_pre_use = function(self, t, vocal)
if not self:hasEffect(self.EFF_KINSPIKE_SHIELD) then
if vocal then game.logSeen(self, "You must have a spiked kinetic shield active. Cancelling charge.") end
return false
end
return true
end,
action = function(self, t)
if not self:hasEffect(self.EFF_KINSPIKE_SHIELD) then game.logSeen(self, "You must have a spiked kinetic shield active. Cancelling charge.") return end
if self:getTalentLevelRaw(t) < 5 then
local tg = {type="beam", range=self:getTalentRange(t), friendlyfire=false, talent=t}
local x, y = self:getTarget(tg)
......@@ -191,7 +197,7 @@ newTalent{
lx, ly = l()
end
self:move(tx, ty, true)
return true
return true
end
end,
info = function(self, t)
......
......@@ -24,6 +24,7 @@ newTalent{
cooldown = 100,
psi = 15,
points = 5,
tactical = { BUFF = 2 },
action = function(self, t)
self:setEffect(self.EFF_CONTROL, 5 + self:getTalentLevelRaw(t), {power=15 + math.ceil(self:getTalentLevel(t)*(1 + self:getCun(8)))})
return true
......@@ -44,6 +45,7 @@ newTalent{
cooldown = 1,
psi = 100,
points = 5,
no_npc_use = true,
action = function(self, t)
self:showInventory("Reshape which weapon?", self:getInven("INVEN"), function(o) return o.type == "weapon" and not o.fully_reshaped end, function(o, item)
--o.wielder = o.wielder or {}
......@@ -79,6 +81,7 @@ newTalent{
cooldown = 1,
psi = 100,
points = 5,
no_npc_use = true,
action = function(self, t)
self:showInventory("Reshape which piece of armor?", self:getInven("INVEN"), function(o) return o.type == "armor" and not o.fully_reshaped end, function(o, item)
if (o.old_fat or 0) < math.ceil(0.5*self:getTalentLevel(t)*(1 + self:getWil(4))) then
......@@ -120,6 +123,7 @@ newTalent{
cooldown = 50,
psi = 0,
points = 5,
no_npc_use = true,
action = function(self, t)
self:showInventory("Use which gem?", self:getInven("INVEN"), function(gem) return gem.type == "gem" and gem.material_level and gem.material_level == 5 end, function(gem, gem_item)
self:removeObject(self:getInven("INVEN"), gem_item)
......
......@@ -26,7 +26,7 @@ local function getGemLevel(self)
local gem_level = 0
if not self:getInven("PSIONIC_FOCUS")[1] then return gem_level end
local tk_item = self:getInven("PSIONIC_FOCUS")[1]
if tk_item.type == "gem" then
if tk_item.type == "gem" then
gem_level = tk_item.material_level
else
gem_level = 0
......@@ -47,6 +47,7 @@ newTalent{
return c - gem_level
end,
psi = 15,
tactical = { ATTACK = 2 },
range = function(self, t)
local r = 5
local gem_level = getGemLevel(self)
......@@ -90,6 +91,7 @@ newTalent{
return c - gem_level
end,
psi = 20,
tactical = { ATTACK = 2 },
range = function(self, t)
local r = 5
local gem_level = getGemLevel(self)
......
......@@ -73,6 +73,7 @@ newTalent{
psi = 15,
points = 5,
no_energy = true,
tactical = { BUFF = 3 },
action = function(self, t)
if self.talents_cd[self.T_KINETIC_SHIELD] == nil and self.talents_cd[self.T_THERMAL_SHIELD] == nil and self.talents_cd[self.T_CHARGED_SHIELD] == nil then
return
......@@ -100,6 +101,7 @@ newTalent{
psi = 15,
points = 5,
no_energy = true,
tactical = { BUFF = 2 },
action = function(self, t)
if self.talents_cd[self.T_KINETIC_AURA] == nil and self.talents_cd[self.T_THERMAL_AURA] == nil and self.talents_cd[self.T_CHARGED_AURA] == nil then
return
......
......@@ -58,6 +58,7 @@ newTalent{
sustain_psi = 0,
range = 1,
direct_hit = true,
tactical = { BUFF = 3 },
do_tkautoattack = function(self, t)
local targnum = 1
if self:hasEffect(self.EFF_PSIFRENZY) then targnum = 1 + math.ceil(0.2*self:getTalentLevel(self.T_FRENZIED_PSIFIGHTING)) 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