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

torque powers

git-svn-id: http://svn.net-core.org/repos/t-engine4@5065 51575b47-30f0-44d4-a5cc-537603b46e54
parent 53cdcb82
No related branches found
No related tags found
No related merge requests found
......@@ -3603,6 +3603,11 @@ function _M:on_set_temporary_effect(eff_id, e, p)
if e.status == "detrimental" and self:attr("negative_status_effect_immune") then
p.dur = 0
end
if e.status == "detrimental" and e.type == "mental" and self:attr("mental_negative_status_effect_immune") then
p.dur = 0
self:attr("mental_negative_status_effect_immune", -1)
if not self:attr("mental_negative_status_effect_immune") then self:removeEffect(self.EFF_CLEAR_MIND) end
end
if self:attr("status_effect_immune") then
p.dur = 0
end
......
......@@ -19,7 +19,7 @@
--[[
Torques
psionic shield
*psionic shield
psychoportation
clear mind
adrenaline rush
......@@ -40,3 +40,55 @@ newEntity{
return {id=true, used=true}
end),
}
newEntity{
name = " of kinetic psionic shield", addon=true, instant_resolve=true,
level_range = {1, 50},
rarity = 7,
charm_power_def = {add=3, max=100, floor=true},
resolvers.charm("setup a psionic shield, reducing all physical and acid damage by %d for 6 turns.", 20, function(self, who)
who:setEffect(who.EFF_PSIONIC_SHIELD, 6, {kind="kinetic", power=self:getCharmPower()})
game.logSeen(who, "%s uses %s!", who.name:capitalize(), self:getName{no_count=true})
return {id=true, used=true}
end),
}
newEntity{
name = " of thermal psionic shield", addon=true, instant_resolve=true,
level_range = {1, 50},
rarity = 7,
charm_power_def = {add=3, max=100, floor=true},
resolvers.charm("setup a psionic shield, reducing all fire and cold damage by %d for 6 turns.", 20, function(self, who)
who:setEffect(who.EFF_PSIONIC_SHIELD, 6, {kind="thermal", power=self:getCharmPower()})
game.logSeen(who, "%s uses %s!", who.name:capitalize(), self:getName{no_count=true})
return {id=true, used=true}
end),
}
newEntity{
name = " of charged psionic shield", addon=true, instant_resolve=true,
level_range = {10, 50},
rarity = 8,
charm_power_def = {add=3, max=100, floor=true},
resolvers.charm("setup a psionic shield, reducing all lightning and blight damage by %d for 6 turns.", 20, function(self, who)
who:setEffect(who.EFF_PSIONIC_SHIELD, 6, {kind="charged", power=self:getCharmPower()})
game.logSeen(who, "%s uses %s!", who.name:capitalize(), self:getName{no_count=true})
return {id=true, used=true}
end),
}
newEntity{
name = " of clear mind", addon=true, instant_resolve=true,
level_range = {15, 50},
rarity = 12,
charm_power_def = {add=0, max=5, floor=true},
resolvers.charm("absorbs and nullifies at most %d detrimental mental status effects in the next 6 turns.", 20, function(self, who)
who:setEffect(who.EFF_CLEAR_MIND, 6, {power=self:getCharmPower()})
game.logSeen(who, "%s uses %s!", who.name:capitalize(), self:getName{no_count=true})
return {id=true, used=true}
end),
}
......@@ -764,7 +764,7 @@ newEffect{
eff.source:incHate(eff.hateGain)
end
DamageType:get(DamageType.MIND).projector(eff.source, self.x, self.y, DamageType.MIND, { dam=eff.damage, crossTierChance=25 })
if self.dead then
-- only spread on activate if the target is dead
if eff.jumpCount > 0 then
......@@ -776,7 +776,7 @@ newEffect{
end
game:playSoundNear(self, "talents/fire")
eff.firstTurn = true
end,
deactivate = function(self, eff)
......@@ -791,7 +791,7 @@ newEffect{
elseif eff.jumpDuration > 0 then
-- limit the total duration of all spawned effects
eff.jumpDuration = eff.jumpDuration - 1
if eff.jumpCount > 0 then
-- guaranteed jump
eff.jumpCount = eff.jumpCount - 1
......@@ -974,7 +974,7 @@ newEffect{
end,
deactivate = function(self, eff)
updateFearParticles(self)
local tInstillFear = self:getTalentFromId(self.T_INSTILL_FEAR)
tInstillFear.endEffect(self, tInstillFear)
end,
......@@ -1036,7 +1036,7 @@ newEffect{
deactivate = function(self, eff)
self:removeTemporaryValue("resists", eff.damageId)
updateFearParticles(self)
local tInstillFear = self:getTalentFromId(self.T_INSTILL_FEAR)
tInstillFear.endEffect(self, tInstillFear)
end,
......@@ -1059,7 +1059,7 @@ newEffect{
deactivate = function(self, eff)
eff.terrifiedId = self:removeTemporaryValue("terrified", eff.terrifiedId)
updateFearParticles(self)
local tInstillFear = self:getTalentFromId(self.T_INSTILL_FEAR)
tInstillFear.endEffect(self, tInstillFear)
end,
......@@ -1086,7 +1086,7 @@ newEffect{
self:removeTemporaryValue("combat_mentalresist", eff.mentalId)
self:removeTemporaryValue("combat_spellresist", eff.spellId)
updateFearParticles(self)
local tInstillFear = self:getTalentFromId(self.T_INSTILL_FEAR)
tInstillFear.endEffect(self, tInstillFear)
end,
......@@ -1116,7 +1116,7 @@ newEffect{
end,
deactivate = function(self, eff)
updateFearParticles(self)
local tInstillFear = self:getTalentFromId(self.T_INSTILL_FEAR)
tInstillFear.endEffect(self, tInstillFear)
end,
......@@ -1142,7 +1142,7 @@ newEffect{
end,
deactivate = function(self, eff)
updateFearParticles(self)
local tInstillFear = self:getTalentFromId(self.T_INSTILL_FEAR)
tInstillFear.endEffect(self, tInstillFear)
end,
......@@ -1230,7 +1230,7 @@ newEffect{
end,
deactivate = function(self, eff)
self:removeParticles(eff.particlesId)
local tInstillFear = self:getTalentFromId(self.T_INSTILL_FEAR)
tInstillFear.endEffect(self, tInstillFear)
end,
......@@ -2251,3 +2251,47 @@ newEffect{
if self.ai then self.ai=eff.ai end
end,
}
newEffect{
name = "PSIONIC_SHIELD", image = "talents/kinetic_shield.png",
desc = "Psionic Shield",
display_desc = function(self, eff) return eff.kind:capitalize().." Psionic Shield" end,
long_desc = function(self, eff) return ("Reduces all incoming %s damage by %d."):format(eff.what, eff.power) end,
type = "mental",
subtype = { psionic=true, shield=true },
status = "beneficial",
parameters = { power=10, kind="kinetic" },
activate = function(self, eff)
if eff.kind == "kinetic" then
eff.sid = self:addTemporaryValue("flat_damage_armor", {[DamageType.PHYSICAL] = eff.power, [DamageType.ACID] = eff.power})
eff.what = "physical and acid"
elseif eff.kind == "thermal" then
eff.sid = self:addTemporaryValue("flat_damage_armor", {[DamageType.FIRE] = eff.power, [DamageType.COLD] = eff.power})
eff.what = "fire and cold"
elseif eff.kind == "charged" then
eff.sid = self:addTemporaryValue("flat_damage_armor", {[DamageType.LIGHTNING] = eff.power, [DamageType.BLIGHT] = eff.power})
eff.what = "lightning and blight"
end
end,
deactivate = function(self, eff)
if eff.sid then
self:removeTemporaryValue("flat_damage_armor", eff.sid)
end
end,
}
newEffect{
name = "CLEAR_MIND", image = "talents/aura_discipline.png",
desc = "Clear Mind",
long_desc = function(self, eff) return ("Nullifies the next %d detrimental mental effects."):format(self.mental_negative_status_effect_immune) end,
type = "mental",
subtype = { psionic=true, },
status = "beneficial",
parameters = { power=2 },
activate = function(self, eff)
self.mental_negative_status_effect_immune = eff.power
end,
deactivate = function(self, eff)
self.mental_negative_status_effect_immune = nil
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