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

Rearranged the Mental Discipline tree

Buffed Highly Trained Mind
Made Mindslayer auras less costly to sustain
Use on_pre_use for disallowing Mindslayer shields and auras
Shields now apply their reduction to incoming damage before resists
Mindhook cooldown reduced, and reduces further with talent level
Telos's Staff Crystal has wielder properties that match its imbue properties


git-svn-id: http://svn.net-core.org/repos/t-engine4@2829 51575b47-30f0-44d4-a5cc-537603b46e54
parent bd253c70
No related branches found
No related tags found
No related merge requests found
......@@ -57,26 +57,6 @@ setDefaultProjector(function(src, x, y, type, dam, tmp, no_martyr)
end
end
-- Reduce damage with resistance
if target.resists then
local pen = 0
if src.resists_pen then pen = (src.resists_pen.all or 0) + (src.resists_pen[type] or 0) end
local res = math.min((target.resists.all or 0) + (target.resists[type] or 0), (target.resists_cap.all or 0) + (target.resists_cap[type] or 0))
res = res * (100 - pen) / 100
print("[PROJECTOR] res", res, (100 - res) / 100, " on dam", dam)
if res >= 100 then dam = 0
elseif res <= -100 then dam = dam * 2
else dam = dam * ((100 - res) / 100)
end
end
print("[PROJECTOR] after resists dam", dam)
-- Static reduce damage
if target.isTalentActive and target:isTalentActive(target.T_ANTIMAGIC_SHIELD) then
local t = target:getTalentFromId(target.T_ANTIMAGIC_SHIELD)
dam = t.on_damage(target, t, type, dam)
end
-- Static reduce damage for psionic kinetic shield
if target.isTalentActive and target:isTalentActive(target.T_KINETIC_SHIELD) then
local t = target:getTalentFromId(target.T_KINETIC_SHIELD)
......@@ -107,6 +87,26 @@ setDefaultProjector(function(src, x, y, type, dam, tmp, no_martyr)
local t = target:getTalentFromId(target.T_CHARGED_SHIELD)
dam = t.css_on_damage(target, t, type, dam)
end
-- Reduce damage with resistance
if target.resists then
local pen = 0
if src.resists_pen then pen = (src.resists_pen.all or 0) + (src.resists_pen[type] or 0) end
local res = math.min((target.resists.all or 0) + (target.resists[type] or 0), (target.resists_cap.all or 0) + (target.resists_cap[type] or 0))
res = res * (100 - pen) / 100
print("[PROJECTOR] res", res, (100 - res) / 100, " on dam", dam)
if res >= 100 then dam = 0
elseif res <= -100 then dam = dam * 2
else dam = dam * ((100 - res) / 100)
end
end
print("[PROJECTOR] after resists dam", dam)
-- Static reduce damage
if target.isTalentActive and target:isTalentActive(target.T_ANTIMAGIC_SHIELD) then
local t = target:getTalentFromId(target.T_ANTIMAGIC_SHIELD)
dam = t.on_damage(target, t, type, dam)
end
print("[PROJECTOR] final dam", dam)
......
......@@ -842,3 +842,25 @@ newEntity{ base = "BASE_WAND", define_as = "ROD_OF_ANNULMENT",
end
},
}
newEntity{ base = "BASE_WARAXE",
power_source = {arcane=true},
define_as = "SKULLCLEAVER", rarity=false,
unided_name = "crimson waraxe",
name = "Skullcleaver", unique=true,
desc = [[A small but sharp axe, with a handle made of polished bone. The blade has chopped through the skulls of many, and has been stained a deep crimson.]],
require = { stat = { str=18 }, },
level_range = {5, 12},
rarity = 220,
cost = 50,
combat = {
dam = 16,
apr = 3,
physcrit = 12,
dammod = {str=1},
talent_on_hit = { [Talents.T_GREATER_WEAPON_FOCUS] = {level=2, chance=10} },
},
wielder = {
inc_damage = { [DamageType.BLIGHT] = 8 },
},
}
......@@ -1279,6 +1279,10 @@ newEntity{ base = "BASE_GEM",
fear_immune = 0.7,
resists={[DamageType.MIND] = 35,},
},
wielder = {
inc_stats = { [Stats.STAT_STR] = 5, [Stats.STAT_DEX] = 5, [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 5, [Stats.STAT_CUN] = 5, [Stats.STAT_CON] = 5, },
lite = 2,
},
imbue_powers = {
inc_stats = { [Stats.STAT_STR] = 5, [Stats.STAT_DEX] = 5, [Stats.STAT_MAG] = 5, [Stats.STAT_WIL] = 5, [Stats.STAT_CUN] = 5, [Stats.STAT_CON] = 5, },
lite = 2,
......
......@@ -48,7 +48,13 @@ newTalent{
range = 10,
no_energy = true,
tactical = { DEFEND = 2 },
on_pre_use = function(self, t, silent)
if self:isTalentActive(self.T_THERMAL_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) then
if not silent then game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.") end
return false
end
return true
end,
--called when damage gets absorbed by kinetic shield
ks_on_damage = function(self, t, damtype, dam)
local mast = 30 - (2*self:getTalentLevel(self.T_SHIELD_DISCIPLINE) or 0) - 0.4*getGemLevel(self)
......@@ -71,10 +77,10 @@ newTalent{
activate = function(self, t)
if self:isTalentActive(self.T_THERMAL_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) then
game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.")
return false
end
--if self:isTalentActive(self.T_THERMAL_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) then
-- game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.")
-- return false
--end
game:playSoundNear(self, "talents/heal")
local s_str = getShieldStrength(self, t)
return {
......@@ -145,6 +151,13 @@ newTalent{
range = 10,
no_energy = true,
tactical = { DEFEND = 2 },
on_pre_use = function(self, t, silent)
if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) then
if not silent then game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.") end
return false
end
return true
end,
--called when damage gets absorbed by thermal shield
ts_on_damage = function(self, t, damtype, dam)
......@@ -167,10 +180,10 @@ newTalent{
activate = function(self, t)
if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) then
game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.")
return false
end
--if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_CHARGED_SHIELD) then
-- game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.")
-- return false
--end
game:playSoundNear(self, "talents/heal")
local s_str = getShieldStrength(self, t)
return {
......@@ -239,7 +252,13 @@ newTalent{
range = 10,
no_energy = true,
tactical = { DEFEND = 2 },
on_pre_use = function(self, t, silent)
if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_THERMAL_SHIELD) then
if not silent then game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.") end
return false
end
return true
end,
--called when damage gets absorbed by charged shield
cs_on_damage = function(self, t, damtype, dam)
local mast = 30 - (2*self:getTalentLevel(self.T_SHIELD_DISCIPLINE) or 0) - 0.4*getGemLevel(self)
......@@ -261,10 +280,10 @@ newTalent{
activate = function(self, t)
if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_THERMAL_SHIELD) then
game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.")
return false
end
--if self:isTalentActive(self.T_KINETIC_SHIELD) and self:isTalentActive(self.T_THERMAL_SHIELD) then
-- game.logSeen(self, "You may only sustain two shields at once. Shield activation cancelled.")
-- return false
--end
game:playSoundNear(self, "talents/heal")
local s_str = getShieldStrength(self, t)
return {
......
......@@ -21,7 +21,9 @@ newTalent{
name = "Mindhook",
type = {"psionic/augmented-mobility", 1},
require = psi_wil_high1,
cooldown = 40,
cooldown = function(self, t)
return math.ceil(20 - self:getTalentLevel(t)*2)
end,
psi = 20,
points = 5,
tactical = { CLOSEIN = 2 },
......@@ -55,7 +57,7 @@ newTalent{
info = function(self, t)
local range = self:getTalentRange(t)
return ([[Briefly extend your telekinetic reach to grab an enemy and haul them towards you.
Works on enemies up to %d squares away.]]):
Works on enemies up to %d squares away. The cooldown decreases and the range increases with additional talent points spent.]]):
format(range)
end,
}
......
......@@ -18,36 +18,45 @@
-- darkgod@te4.org
newTalent{
name = "Highly Trained Mind",
name = "Aura Discipline",
type = {"psionic/mental-discipline", 1},
mode = "passive",
require = psi_wil_req1,
points = 5,
on_learn = function(self, t)
self.inc_stats[self.STAT_WIL] = self.inc_stats[self.STAT_WIL] + 1
self:onStatChange(self.STAT_WIL, 1)
self.inc_stats[self.STAT_CUN] = self.inc_stats[self.STAT_CUN] + 1
self:onStatChange(self.STAT_CUN, 1)
end,
on_unlearn = function(self, t)
self.inc_stats[self.STAT_WIL] = self.inc_stats[self.STAT_WIL] - 1
self:onStatChange(self.STAT_WIL, -1)
self.inc_stats[self.STAT_CUN] = self.inc_stats[self.STAT_CUN] - 1
self:onStatChange(self.STAT_CUN, -1)
end,
mode = "passive",
info = function(self, t)
return ([[A life of the mind has had predictably good effects on your Willpower and Cunning.
Increases Willpower and Cunning by %d.]]):format(self:getTalentLevelRaw(t))
local cooldown = self:getTalentLevelRaw(t)
local mast = (self:getTalentLevel(t) or 0)
return ([[Your expertise in the art of energy projection grows.
Aura cooldowns are all reduced by %d turns. Aura damage drains energy more slowly (+%0.2f damage required to lose a point of energy).]]):format(cooldown, mast)
end,
}
newTalent{
name = "Iron Will",
name = "Shield Discipline",
type = {"psionic/mental-discipline", 2},
require = psi_wil_req2,
points = 5,
mode = "passive",
info = function(self, t)
local cooldown = 2*self:getTalentLevelRaw(t)
local mast = 2*self:getTalentLevel(t)
return ([[Your expertise in the art of energy absorption grows. Shield cooldowns are all reduced by %d turns, and the amount of damage absorption required to gain a point of energy is reduced by %0.2f.]]):
format(cooldown, mast)
end,
}
newTalent{
name = "Iron Will",
type = {"psionic/mental-discipline", 3},
require = psi_wil_req3,
points = 5,
mode = "passive",
on_learn = function(self, t)
self.combat_mentalresist = self.combat_mentalresist + 6
self.stun_immune = (self.stun_immune or 0) + .1
......@@ -64,31 +73,25 @@ newTalent{
}
newTalent{
name = "Shield Discipline",
type = {"psionic/mental-discipline", 3},
require = psi_wil_req3,
points = 5,
mode = "passive",
info = function(self, t)
local cooldown = 2*self:getTalentLevelRaw(t)
local mast = 2*self:getTalentLevel(t)
return ([[Your expertise in the art of energy absorption grows. Shield cooldowns are all reduced by %d turns, and the amount of damage absorption required to gain a point of energy is reduced by %0.2f.]]):
format(cooldown, mast)
end,
}
newTalent{
name = "Aura Discipline",
name = "Highly Trained Mind",
type = {"psionic/mental-discipline", 4},
mode = "passive",
require = psi_wil_req4,
points = 5,
mode = "passive",
on_learn = function(self, t)
self.inc_stats[self.STAT_WIL] = self.inc_stats[self.STAT_WIL] + 2
self:onStatChange(self.STAT_WIL, 2)
self.inc_stats[self.STAT_CUN] = self.inc_stats[self.STAT_CUN] + 2
self:onStatChange(self.STAT_CUN, 2)
end,
on_unlearn = function(self, t)
self.inc_stats[self.STAT_WIL] = self.inc_stats[self.STAT_WIL] - 2
self:onStatChange(self.STAT_WIL, -2)
self.inc_stats[self.STAT_CUN] = self.inc_stats[self.STAT_CUN] - 2
self:onStatChange(self.STAT_CUN, -2)
end,
info = function(self, t)
local cooldown = self:getTalentLevelRaw(t)
local mast = (self:getTalentLevel(t) or 0)
return ([[Your expertise in the art of energy projection grows.
Aura cooldowns are all reduced by %d turns. Aura damage drains energy more slowly (+%0.2f damage required to lose a point of energy).]]):format(cooldown, mast)
return ([[A life of the mind has had predictably good effects on your Willpower and Cunning.
Increases Willpower and Cunning by %d.]]):format(2*self:getTalentLevelRaw(t))
end,
}
......@@ -16,82 +16,17 @@
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
local function combatTalentDamage(self, t, min, max)
return self:combatTalentSpellDamage(t, min, max, self.level + self:getWil())
end
-- damage: initial physical damage and used for fractional knockback damage
-- knockback: distance to knockback
-- knockbackDamage: when knockback strikes something, both parties take damage - percent of damage * remaining knockback
-- power: used to determine the initial radius of particles
local function forceHit(self, target, sourceX, sourceY, damage, knockback, knockbackDamage, power)
-- apply initial damage
if not target then return end
if damage > 0 then
self:project(target, target.x, target.y, DamageType.PHYSICAL, damage)
game.level.map:particleEmitter(target.x, target.y, 1, "force_hit", {power=power, dx=target.x - sourceX, dy=target.y - sourceY})
local function aura_strength(self, t)
local add = 0
if self:knowTalent(self.T_FOCUSED_CHANNELING) then
add = getGemLevel(self)*(1 + 0.1*(self:getTalentLevel(self.T_FOCUSED_CHANNELING) or 0))
end
--return 5 + (1+ self:getWil(5))*self:getTalentLevel(t) + add
return self:combatTalentIntervalDamage(t, "wil", 10, 50) + add
end
-- knockback?
if not target.dead and knockback and knockback > 0 and target:canBe("knockback") and (target.never_move or 0) < 1 then
-- give direct hit a direction?
if sourceX == target.x and sourceY == target.y then
local newDirection = rng.range(1, 8)
sourceX = sourceX + dir_to_coord[newDirection][1]
sourceY = sourceY + dir_to_coord[newDirection][2]
end
local lineFunction = line.new(sourceX, sourceY, target.x, target.y, true)
local finalX, finalY = target.x, target.y
local knockbackCount = 0
local blocked = false
while knockback > 0 do
blocked = true
local x, y = lineFunction(true)
if not game.level.map:isBound(x, y) or game.level.map:checkAllEntities(x, y, "block_move", target) then
-- blocked
local nextTarget = game.level.map(x, y, Map.ACTOR)
if nextTarget then
if knockbackCount > 0 then
game.logPlayer(self, "%s was blasted %d spaces into %s!", target.name:capitalize(), knockbackCount, nextTarget.name)
else
game.logPlayer(self, "%s was blasted into %s!", target.name:capitalize(), nextTarget.name)
end
elseif knockbackCount > 0 then
game.logPlayer(self, "%s was smashed back %d spaces!", target.name:capitalize(), knockbackCount)
else
game.logPlayer(self, "%s was smashed!", target.name:capitalize())
end
-- take partial damage
local blockDamage = damage * knockback * knockbackDamage / 100
self:project(target, target.x, target.y, DamageType.PHYSICAL, blockDamage)
if nextTarget then
-- start a new force hit with the knockback damage and current knockback
forceHit(self, nextTarget, sourceX, sourceY, blockDamage, knockback, knockbackDamage, power / 2)
end
knockback = 0
else
-- allow move
finalX, finalY = x, y
knockback = knockback - 1
knockbackCount = knockbackCount + 1
end
end
if not blocked and knockbackCount > 0 then
game.logPlayer(self, "%s was blasted back %d spaces!", target.name:capitalize())
end
if not target.dead and (finalX ~= target.x or finalY ~= target.y) then
target:move(finalX, finalY, true)
end
end
local function aura_mastery(self, t)
return 10 + (self:getTalentLevel(self.T_AURA_DISCIPLINE) or 0) + getGemLevel(self)
end
local function aura_range(self, t)
......@@ -142,6 +77,13 @@ newTalent{
return 15 - (self:getTalentLevelRaw(self.T_AURA_DISCIPLINE) or 0)
end,
tactical = { ATTACKAREA = 2 },
on_pre_use = function(self, t, silent)
if self:isTalentActive(self.T_THERMAL_AURA) and self:isTalentActive(self.T_CHARGED_AURA) then
if not silent then game.logSeen(self, "You may only sustain two auras at once. Aura activation cancelled.") end
return false
end
return true
end,
range = aura_range,
radius = aura_radius,
target = aura_target,
......@@ -180,33 +122,28 @@ newTalent{
return t.sustain_psi - 2*getGemLevel(self)
end,
getAuraStrength = function(self, t)
local add = 0
if self:knowTalent(self.T_FOCUSED_CHANNELING) then
add = getGemLevel(self)*(1 + 0.1*(self:getTalentLevel(self.T_FOCUSED_CHANNELING) or 0))
end
--return 5 + (1+ self:getWil(5))*self:getTalentLevel(t) + add
return self:combatTalentIntervalDamage(t, "wil", 6, 50) + add
return aura_strength(self, t)
end,
getKnockback = function(self, t)
return 3 + math.floor(self:getTalentLevel(t))
end,
do_kineticaura = function(self, t)
local mast = 5 + (self:getTalentLevel(self.T_AURA_DISCIPLINE) or 0) + getGemLevel(self)
local mast = aura_mastery(self, t)
local dam = t.getAuraStrength(self, t)
local tg = t.getNormalTarget(self, t)
self:project(tg, self.x, self.y, function(tx, ty)
DamageType:get(DamageType.PHYSICAL).projector(self, tx, ty, DamageType.PHYSICAL, dam)
local act = game.level.map(tx, ty, engine.Map.ACTOR)
if act then
self:incPsi(-dam/mast)
end
DamageType:get(DamageType.PHYSICAL).projector(self, tx, ty, DamageType.PHYSICAL, dam)
end)
end,
activate = function(self, t)
if self:isTalentActive(self.T_THERMAL_AURA) and self:isTalentActive(self.T_CHARGED_AURA) then
game.logSeen(self, "You may only sustain two auras at once. Aura activation cancelled.")
return false
end
--if self:isTalentActive(self.T_THERMAL_AURA) and self:isTalentActive(self.T_CHARGED_AURA) then
-- game.logSeen(self, "You may only sustain two auras at once. Aura activation cancelled.")
-- return false
--end
return true
end,
deactivate = function(self, t, p)
......@@ -234,7 +171,7 @@ newTalent{
info = function(self, t)
local dam = t.getAuraStrength(self, t)
local spikedam = 50 + 0.4 * dam * dam
local mast = 5 + (self:getTalentLevel(self.T_AURA_DISCIPLINE) or 0) + getGemLevel(self)
local mast = aura_mastery(self, t)
local spikecost = t.getSpikeCost(self, t)
return ([[Fills the air around you with reactive currents of force that do %d physical damage to all who approach. All damage done by the aura will drain one point of energy per %0.2f points of damage dealt.
When deactivated, if you have at least %d energy, a massive spike of kinetic energy is released as a beam, smashing targets for %d physical damage and sending them flying. Telekinetically wielding a gem instead of a weapon will result in improved spike efficiency.
......@@ -256,6 +193,13 @@ newTalent{
return 15 - (self:getTalentLevelRaw(self.T_AURA_DISCIPLINE) or 0)
end,
tactical = { ATTACKAREA = 2 },
on_pre_use = function(self, t, silent)
if self:isTalentActive(self.T_KINETIC_AURA) and self:isTalentActive(self.T_CHARGED_AURA) then
if not silent then game.logSeen(self, "You may only sustain two auras at once. Aura activation cancelled.") end
return false
end
return true
end,
range = aura_range,
radius = aura_radius,
target = aura_target,
......@@ -290,33 +234,28 @@ newTalent{
end
end,
getAuraStrength = function(self, t)
local add = 0
if self:knowTalent(self.T_FOCUSED_CHANNELING) then
add = getGemLevel(self)*(1 + 0.1*(self:getTalentLevel(self.T_FOCUSED_CHANNELING) or 0))
end
--return 5 + (1+ self:getWil(5))*self:getTalentLevel(t) + add
return self:combatTalentIntervalDamage(t, "wil", 6, 50) + add
return aura_strength(self, t)
end,
getSpikeCost = function(self, t)
return t.sustain_psi - 2*getGemLevel(self)
end,
do_thermalaura = function(self, t)
local mast = 5 + (self:getTalentLevel(self.T_AURA_DISCIPLINE) or 0) + getGemLevel(self)
local mast = aura_mastery(self, t)
local dam = t.getAuraStrength(self, t)
local tg = t.getNormalTarget(self, t)
self:project(tg, self.x, self.y, function(tx, ty)
DamageType:get(DamageType.FIRE).projector(self, tx, ty, DamageType.FIRE, dam)
local act = game.level.map(tx, ty, engine.Map.ACTOR)
if act then
self:incPsi(-dam/mast)
end
DamageType:get(DamageType.FIRE).projector(self, tx, ty, DamageType.FIRE, dam)
end)
end,
activate = function(self, t)
if self:isTalentActive(self.T_KINETIC_AURA) and self:isTalentActive(self.T_CHARGED_AURA) then
game.logSeen(self, "You may only sustain two auras at once. Aura activation cancelled.")
return false
end
--if self:isTalentActive(self.T_KINETIC_AURA) and self:isTalentActive(self.T_CHARGED_AURA) then
-- game.logSeen(self, "You may only sustain two auras at once. Aura activation cancelled.")
-- return false
--end
return true
end,
deactivate = function(self, t, p)
......@@ -345,7 +284,7 @@ newTalent{
local dam = t.getAuraStrength(self, t)
local rad = self:getTalentRange(t)
local spikedam = 50 + 0.4 * dam * dam
local mast = 5 + (self:getTalentLevel(self.T_AURA_DISCIPLINE) or 0) + getGemLevel(self)
local mast = aura_mastery(self, t)
local spikecost = t.getSpikeCost(self, t)
return ([[Fills the air around you with reactive currents of furnace-like heat that do %d fire damage to all who approach. All damage done by the aura will drain one point of energy per %0.2f points of damage dealt.
When deactivated, if you have at least %d energy, a massive spike of thermal energy is released as a conical blast (radius %d) of superheated air. Anybody caught in it will suffer %d fire damage. Telekinetically wielding a gem instead of a weapon will result in improved spike efficiency.
......@@ -367,6 +306,13 @@ newTalent{
return 15 - (self:getTalentLevelRaw(self.T_AURA_DISCIPLINE) or 0)
end,
tactical = { ATTACKAREA = 2 },
on_pre_use = function(self, t, silent)
if self:isTalentActive(self.T_KINETIC_AURA) and self:isTalentActive(self.T_THERMAL_AURA) then
if not silent then game.logSeen(self, "You may only sustain two auras at once. Aura activation cancelled.") end
return false
end
return true
end,
range = aura_range,
radius = aura_radius,
target = aura_target,
......@@ -405,33 +351,28 @@ newTalent{
return t.sustain_psi - 2*getGemLevel(self)
end,
getAuraStrength = function(self, t)
local add = 0
if self:knowTalent(self.T_FOCUSED_CHANNELING) then
add = getGemLevel(self)*(1 + 0.1*(self:getTalentLevel(self.T_FOCUSED_CHANNELING) or 0))
end
--return 5 + (1+ self:getWil(5))*self:getTalentLevel(t) + add
return self:combatTalentIntervalDamage(t, "wil", 6, 50) + add
return aura_strength(self, t)
end,
getNumSpikeTargets = function(self, t)
return 1 + math.floor(0.5*self:getTalentLevel(t)) + getGemLevel(self)
end,
do_chargedaura = function(self, t)
local mast = 5 + (self:getTalentLevel(self.T_AURA_DISCIPLINE) or 0) + getGemLevel(self)
local mast = aura_mastery(self, t)
local dam = t.getAuraStrength(self, t)
local tg = t.getNormalTarget(self, t)
self:project(tg, self.x, self.y, function(tx, ty)
DamageType:get(DamageType.LIGHTNING).projector(self, tx, ty, DamageType.LIGHTNING, dam)
local act = game.level.map(tx, ty, engine.Map.ACTOR)
if act then
self:incPsi(-dam/mast)
end
DamageType:get(DamageType.LIGHTNING).projector(self, tx, ty, DamageType.LIGHTNING, dam)
end)
end,
activate = function(self, t)
if self:isTalentActive(self.T_THERMAL_AURA) and self:isTalentActive(self.T_KINETIC_AURA) then
game.logSeen(self, "You may only sustain two auras at once. Aura activation cancelled.")
return false
end
--if self:isTalentActive(self.T_THERMAL_AURA) and self:isTalentActive(self.T_KINETIC_AURA) then
-- game.logSeen(self, "You may only sustain two auras at once. Aura activation cancelled.")
-- return false
--end
game:playSoundNear(self, "talents/thunderstorm")
return true
end,
......@@ -500,7 +441,7 @@ newTalent{
info = function(self, t)
local dam = t.getAuraStrength(self, t)
local spikedam = 50 + 0.4 * dam * dam
local mast = 5 + (self:getTalentLevel(self.T_AURA_DISCIPLINE) or 0) + getGemLevel(self)
local mast = aura_mastery(self, t)
local spikecost = t.getSpikeCost(self, t)
local nb = t.getNumSpikeTargets(self, t)
return ([[Fills the air around you with crackling energy, doing %d lightning damage to all who stand nearby. All damage done by the aura will drain one point of energy per %0.2f points of damage dealt.
......
......@@ -44,7 +44,7 @@ newEntity{ define_as = "BROTOQ",
body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
equipment = resolvers.equip{
{type="weapon", subtype="longsword", autoreq=true},
{type="weapon", subtype="waraxe", defined="SKULLCLEAVER", random_art_replace={chance=75}, autoreq=true},
{type="weapon", subtype="longsword", autoreq=true},
{type="armor", subtype="light", autoreq=true},
},
......
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